{
  "openapi": "3.0.4",
  "info": {
    "title": "Dime.Scheduler",
    "description": "The resource and project planning solution for the ERP, CRM, or LoB system of your choice. For more information, check out the docs on docs.dimescheduler.com.\n\n## Error codes\n\nError responses carry a JSON envelope with `Error` and `Description` fields, extended with a machine-readable `Code` and a `Link` to the documentation page for that code. The table below lists every registered error code with its canonical HTTP status.\n\n| Code | Category | HTTP | Message | Resolution |\n| --- | --- | --- | --- | --- |\n| [APP001](https://docs.dimescheduler.com/errors/app001) | Application | 422 | Changing the task type is not possible for a task with existing appointments. | Remove the task's appointments before changing its type. |\n| [APP002](https://docs.dimescheduler.com/errors/app002) | Application | 422 | Resource {0} is a group and cannot be booked through the import. | Book an individual resource instead. |\n| [APP003](https://docs.dimescheduler.com/errors/app003) | Application | 422 | Resource {0} is not a group: its group behavior is not set. | Target a resource that is configured as a group. |\n| [APP004](https://docs.dimescheduler.com/errors/app004) | Application | 422 | Resource {0} cannot be a member of itself. | Choose a different member resource. |\n| [APP005](https://docs.dimescheduler.com/errors/app005) | Application | 422 | A crew can only contain individual resources or other crews; resource {0} is a pool or a department. | Add only individual resources or crews to a crew. |\n| [APP006](https://docs.dimescheduler.com/errors/app006) | Application | 409 | Could not acquire the membership lock for {0}. | Retry the operation. |\n| [APP007](https://docs.dimescheduler.com/errors/app007) | Application | 422 | Adding resource {0} would create a circular membership. | Review the group memberships and remove the cycle. |\n| [APP008](https://docs.dimescheduler.com/errors/app008) | Application | 422 | GPS tracking is not enabled for resource {0} and GPS tracking resource {1}. | Enable GPS tracking on the resource and try again. |\n| [APP009](https://docs.dimescheduler.com/errors/app009) | Application | 409 | The record {0} cannot be deleted because it is associated with existing appointments. | Remove the appointments first, or retry the command with CheckAppointments set to 0. |\n| [APP010](https://docs.dimescheduler.com/errors/app010) | Application | 422 | Sending multiple values for select fields is not supported. | Send a single value for the select field. |\n| [APP011](https://docs.dimescheduler.com/errors/app011) | Application | 422 | UseFixPlanningQty must be true to be able to set the PlanningQty field. | Enable the fixed planning quantity on the appointment before setting the planning quantity. |\n| [APP012](https://docs.dimescheduler.com/errors/app012) | Application | 422 | A task cannot depend on itself (job {0}, task {1}). | Choose a different predecessor or successor task. |\n| [APP013](https://docs.dimescheduler.com/errors/app013) | Application | 422 | A time entry cannot move from status {0} to status {1}. | Follow the time entry lifecycle: Draft to Submitting, Submitting to Submitted or Failed, Failed back to Draft or Submitting. |\n| [APP014](https://docs.dimescheduler.com/errors/app014) | Application | 422 | The time entries of resource {0} on {1} would add up to more than 24 hours. | Reduce the claimed time so the resource's entries for that day stay within 24 hours. |\n| [APP015](https://docs.dimescheduler.com/errors/app015) | Application | 409 | Time session {0} has been folded into a time entry and cannot be changed through the import. | Unlink the session from its time entry in Dime.Scheduler first, or delete the time entry. |\n| [APP016](https://docs.dimescheduler.com/errors/app016) | Application | 422 | Task {0} starts before job {1} starts. | Move the task start forward, or move the job start back, so the task falls inside the job. |\n| [DATA001](https://docs.dimescheduler.com/errors/data001) | Data | 404 | The requested item was not found. | Verify the identifier and try again. |\n| [DATA002](https://docs.dimescheduler.com/errors/data002) | Data | 404 | The job {0} was not found. | Verify the job number and try again. |\n| [DATA003](https://docs.dimescheduler.com/errors/data003) | Data | 404 | The task {0} was not found. | Verify the task number and try again. |\n| [DATA004](https://docs.dimescheduler.com/errors/data004) | Data | 404 | The resource {0} was not found. | Verify the resource number and try again. |\n| [DATA005](https://docs.dimescheduler.com/errors/data005) | Data | 404 | The appointment {0} was not found. | Verify the appointment identifier and try again. |\n| [DATA006](https://docs.dimescheduler.com/errors/data006) | Data | 404 | The calendar {0} was not found. | Verify the calendar code and try again. |\n| [DATA007](https://docs.dimescheduler.com/errors/data007) | Data | 404 | The filter group {0} was not found. | Verify the filter group name and try again. |\n| [DATA008](https://docs.dimescheduler.com/errors/data008) | Data | 404 | The filter value {0} was not found for filter group {1}. | Verify the filter value and try again. |\n| [DATA009](https://docs.dimescheduler.com/errors/data009) | Data | 404 | No assignment was found for resource {0} on task {1} in job {2}. | Verify the resource, task, and job identifiers and try again. |\n| [DATA010](https://docs.dimescheduler.com/errors/data010) | Data | 409 | The statement conflicted with a foreign key constraint. | Import the referenced record first, or remove the reference. |\n| [DATA011](https://docs.dimescheduler.com/errors/data011) | Data | 404 | The appointment does not belong to a recurring series. | Verify the appointment identifier refers to a recurring appointment. |\n| [DATA012](https://docs.dimescheduler.com/errors/data012) | Data | 404 | The container {0} was not found. | Verify the container name or identifier and try again. |\n| [DATA013](https://docs.dimescheduler.com/errors/data013) | Data | 404 | The appointment field {0} was not found. | Verify the field code and try again. |\n| [DATA014](https://docs.dimescheduler.com/errors/data014) | Data | 409 | Several allocations exist for resource {0} on task {1} in job {2}. | Send the ExternalId of the allocation to address. |\n| [DATA015](https://docs.dimescheduler.com/errors/data015) | Data | 404 | Allocation {0} was not found. | Reload the board and try again. |\n| [EXT001](https://docs.dimescheduler.com/errors/ext001) | External | 504 | A downstream service did not respond in time. | Try again later, and contact support if the problem persists. |\n| [PERM001](https://docs.dimescheduler.com/errors/perm001) | Permission | 403 | The API key is not valid for this environment. | Verify the API key and try again. |\n| [REQ000](https://docs.dimescheduler.com/errors/req000) | Request | 400 | The request is invalid: {0} | Correct the request and try again. |\n| [REQ001](https://docs.dimescheduler.com/errors/req001) | Request | 400 | The number of parameter names does not match the number of parameter values. | Send exactly one value for each parameter name. |\n| [REQ002](https://docs.dimescheduler.com/errors/req002) | Request | 400 | A required parameter is missing: {0}. | Add the missing parameter to the request and try again. |\n| [REQ003](https://docs.dimescheduler.com/errors/req003) | Request | 400 | The action {0} does not exist. | Check the action name against the list of available actions. |\n| [REQ004](https://docs.dimescheduler.com/errors/req004) | Request | 400 | The parameter {0} does not exist for action {1}. | Remove the parameter or correct its name. |\n| [REQ005](https://docs.dimescheduler.com/errors/req005) | Request | 400 | The parameter {0} has an invalid value. | Correct the parameter value and try again. |\n| [REQ006](https://docs.dimescheduler.com/errors/req006) | Request | 400 | The date values are out of order: {0}. | Adjust the dates so each start precedes its corresponding end. |\n| [REQ007](https://docs.dimescheduler.com/errors/req007) | Request | 400 | The task end date cannot be scheduled without a start date or a required duration. | Send a start date alongside the end date, or send a required duration so the start can be derived. |\n| [SRV001](https://docs.dimescheduler.com/errors/srv001) | Server | 500 | An unexpected error occurred while processing the request. | Try again later, and contact support if the problem persists. |\n| [USR001](https://docs.dimescheduler.com/errors/usr001) | User | 401 | The credentials are invalid. | Verify the credentials and try again. |\n| [USR002](https://docs.dimescheduler.com/errors/usr002) | User | 401 | The tenant {0} is unknown. | Verify the tenant identifier and try again. |\n| [USR003](https://docs.dimescheduler.com/errors/usr003) | User | 403 | The service account is registered in more than one tenant. | Use a dedicated service account for each tenant. |\n",
    "termsOfService": "https://www.dimescheduler.com/terms",
    "contact": {
      "name": "Hendrik Bulens",
      "email": "hello@dimescheduler.com"
    },
    "license": {
      "name": "Copyright (C) Dime Software - All Rights Reserved"
    },
    "version": "v1"
  },
  "paths": {
    "/actionUri": {
      "get": {
        "tags": [
          "Action URI"
        ],
        "summary": "Retrieve a list of action URIs",
        "operationId": "getActionUrlDtoList",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Core.ActionUrlDto"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Action URI"
        ],
        "summary": "Create a new action URI",
        "operationId": "createActionUri",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/Entities.ActionUri"
                  },
                  {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/Entities.ActionUri"
                    }
                  }
                ],
                "items": {
                  "$ref": "#/components/schemas/Entities.ActionUri"
                },
                "description": "Accepts either a single object or an array of objects."
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DimeSchedulerApiResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Action URI"
        ],
        "summary": "Update an existing action URI",
        "operationId": "updateActionUri",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/Entities.ActionUri"
                  },
                  {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/Entities.ActionUri"
                    }
                  }
                ],
                "items": {
                  "$ref": "#/components/schemas/Entities.ActionUri"
                },
                "description": "Accepts either a single object or an array of objects."
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DimeSchedulerApiResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Action URI"
        ],
        "summary": "Delete an action URI",
        "operationId": "deleteActionUri",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/Entities.ActionUri"
                  },
                  {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/Entities.ActionUri"
                    }
                  }
                ],
                "items": {
                  "$ref": "#/components/schemas/Entities.ActionUri"
                },
                "description": "Accepts either a single object or an array of objects."
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DimeSchedulerApiResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          }
        }
      }
    },
    "/appointment": {
      "get": {
        "tags": [
          "Appointment"
        ],
        "summary": "Retrieve the appointments of the given resources within the specified date range.",
        "operationId": "getAppointmentDtoList",
        "parameters": [
          {
            "name": "startDate",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "endDate",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "resources",
            "in": "query",
            "required": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Core.AppointmentDto"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Appointment"
        ],
        "summary": "Create a new appointment",
        "operationId": "createAppointment",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/Entities.Appointment"
                  },
                  {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/Entities.Appointment"
                    }
                  }
                ],
                "items": {
                  "$ref": "#/components/schemas/Entities.Appointment"
                },
                "description": "Accepts either a single object or an array of objects."
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DimeSchedulerApiResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Appointment"
        ],
        "summary": "Update an existing appointment",
        "operationId": "updateAppointment",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/Entities.Appointment"
                  },
                  {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/Entities.Appointment"
                    }
                  }
                ],
                "items": {
                  "$ref": "#/components/schemas/Entities.Appointment"
                },
                "description": "Accepts either a single object or an array of objects."
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DimeSchedulerApiResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Appointment"
        ],
        "summary": "Delete an appointment",
        "operationId": "deleteAppointment",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/Entities.Appointment"
                  },
                  {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/Entities.Appointment"
                    }
                  }
                ],
                "items": {
                  "$ref": "#/components/schemas/Entities.Appointment"
                },
                "description": "Accepts either a single object or an array of objects."
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DimeSchedulerApiResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          }
        }
      }
    },
    "/appointment/{id}": {
      "get": {
        "tags": [
          "Appointment"
        ],
        "summary": "Retrieve a single appointment by id, AppointmentNo, or GUID",
        "description": "Resolves the appointment by the supplied id. Accepts the numeric appointment id, the encoded AppointmentNo, or the appointment GUID; the type is detected from the value.",
        "operationId": "getAppointment",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.AppointmentDto"
                }
              }
            }
          },
          "404": {
            "description": "Not Found"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/appointmentCategory": {
      "post": {
        "tags": [
          "Appointment Attribute"
        ],
        "summary": "Update the category of an appointment",
        "operationId": "updateAppointmentCategory",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/Entities.AppointmentCategory"
                  },
                  {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/Entities.AppointmentCategory"
                    }
                  }
                ],
                "items": {
                  "$ref": "#/components/schemas/Entities.AppointmentCategory"
                },
                "description": "Accepts either a single object or an array of objects."
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DimeSchedulerApiResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          }
        }
      }
    },
    "/appointmentcontent": {
      "post": {
        "tags": [
          "Appointment Attribute"
        ],
        "summary": "Update the content of an appointment",
        "operationId": "updateAppointmentContent",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/Entities.AppointmentContent"
                  },
                  {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/Entities.AppointmentContent"
                    }
                  }
                ],
                "items": {
                  "$ref": "#/components/schemas/Entities.AppointmentContent"
                },
                "description": "Accepts either a single object or an array of objects."
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DimeSchedulerApiResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          }
        }
      }
    },
    "/appointmentImportance": {
      "post": {
        "tags": [
          "Appointment Attribute"
        ],
        "summary": "Update the importance level of an appointment",
        "operationId": "updateAppointmentImportance",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/Entities.AppointmentImportance"
                  },
                  {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/Entities.AppointmentImportance"
                    }
                  }
                ],
                "items": {
                  "$ref": "#/components/schemas/Entities.AppointmentImportance"
                },
                "description": "Accepts either a single object or an array of objects."
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DimeSchedulerApiResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          }
        }
      }
    },
    "/appointmentLocked": {
      "post": {
        "tags": [
          "Appointment Attribute"
        ],
        "summary": "Update the locked status of an appointment",
        "operationId": "updateAppointmentLocked",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/Entities.AppointmentLocked"
                  },
                  {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/Entities.AppointmentLocked"
                    }
                  }
                ],
                "items": {
                  "$ref": "#/components/schemas/Entities.AppointmentLocked"
                },
                "description": "Accepts either a single object or an array of objects."
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DimeSchedulerApiResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          }
        }
      }
    },
    "/appointmentPlanningQuantity": {
      "post": {
        "tags": [
          "Appointment Attribute"
        ],
        "summary": "Update the planning quantity of an appointment",
        "operationId": "updateAppointmentPlanningQuantity",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/Entities.AppointmentPlanningQuantity"
                  },
                  {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/Entities.AppointmentPlanningQuantity"
                    }
                  }
                ],
                "items": {
                  "$ref": "#/components/schemas/Entities.AppointmentPlanningQuantity"
                },
                "description": "Accepts either a single object or an array of objects."
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DimeSchedulerApiResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          }
        }
      }
    },
    "/appointmentContainer": {
      "post": {
        "tags": [
          "Appointment Container"
        ],
        "summary": "Create a new appointment container",
        "operationId": "createAppointmentContainer",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/Entities.AppointmentContainer"
                  },
                  {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/Entities.AppointmentContainer"
                    }
                  }
                ],
                "items": {
                  "$ref": "#/components/schemas/Entities.AppointmentContainer"
                },
                "description": "Accepts either a single object or an array of objects."
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DimeSchedulerApiResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Appointment Container"
        ],
        "summary": "Update an existing appointment container",
        "operationId": "updateAppointmentContainer",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/Entities.AppointmentContainer"
                  },
                  {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/Entities.AppointmentContainer"
                    }
                  }
                ],
                "items": {
                  "$ref": "#/components/schemas/Entities.AppointmentContainer"
                },
                "description": "Accepts either a single object or an array of objects."
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DimeSchedulerApiResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Appointment Container"
        ],
        "summary": "Delete an appointment container",
        "operationId": "deleteAppointmentContainer",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/Entities.AppointmentContainer"
                  },
                  {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/Entities.AppointmentContainer"
                    }
                  }
                ],
                "items": {
                  "$ref": "#/components/schemas/Entities.AppointmentContainer"
                },
                "description": "Accepts either a single object or an array of objects."
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DimeSchedulerApiResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          }
        }
      }
    },
    "/appointmentDependency": {
      "get": {
        "tags": [
          "Appointment Dependencies"
        ],
        "summary": "Retrieve all appointment dependencies",
        "operationId": "getAppointmentDependencyDtoList",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Core.AppointmentDependencyDto"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Appointment Dependencies"
        ],
        "summary": "Create a new appointment dependency",
        "operationId": "createAppointmentDependencyRequest",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Dime.Scheduler.Api.Models.AppointmentDependencyRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      },
      "put": {
        "tags": [
          "Appointment Dependencies"
        ],
        "summary": "Update an existing appointment dependency",
        "operationId": "updateAppointmentDependencyRequest",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Dime.Scheduler.Api.Models.AppointmentDependencyRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      },
      "delete": {
        "tags": [
          "Appointment Dependencies"
        ],
        "summary": "Delete an appointment dependency",
        "operationId": "deleteAppointmentDependencyRequest",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Dime.Scheduler.Api.Models.AppointmentDependencyRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/appointmentField": {
      "get": {
        "tags": [
          "Appointment Field"
        ],
        "summary": "Retrieve a list of appointment fields",
        "operationId": "getAppointmentFieldDtoList",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Core.AppointmentFieldDto"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/appointmentFieldValue": {
      "post": {
        "tags": [
          "Appointment Field Value"
        ],
        "summary": "Create a new appointment field value",
        "operationId": "createAppointmentFieldValue",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/Entities.AppointmentFieldValue"
                  },
                  {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/Entities.AppointmentFieldValue"
                    }
                  }
                ],
                "items": {
                  "$ref": "#/components/schemas/Entities.AppointmentFieldValue"
                },
                "description": "Accepts either a single object or an array of objects."
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DimeSchedulerApiResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Appointment Field Value"
        ],
        "summary": "Update an existing appointment field value",
        "operationId": "updateAppointmentFieldValue",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/Entities.AppointmentFieldValue"
                  },
                  {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/Entities.AppointmentFieldValue"
                    }
                  }
                ],
                "items": {
                  "$ref": "#/components/schemas/Entities.AppointmentFieldValue"
                },
                "description": "Accepts either a single object or an array of objects."
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DimeSchedulerApiResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          }
        }
      }
    },
    "/appointmentTimeMarker": {
      "post": {
        "tags": [
          "Appointment Time Marker"
        ],
        "summary": "Create a new appointment time marker",
        "operationId": "createAppointmentTimeMarker",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/Entities.AppointmentTimeMarker"
                  },
                  {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/Entities.AppointmentTimeMarker"
                    }
                  }
                ],
                "items": {
                  "$ref": "#/components/schemas/Entities.AppointmentTimeMarker"
                },
                "description": "Accepts either a single object or an array of objects."
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DimeSchedulerApiResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Appointment Time Marker"
        ],
        "summary": "Update an existing appointment time marker",
        "operationId": "updateAppointmentTimeMarker",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/Entities.AppointmentTimeMarker"
                  },
                  {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/Entities.AppointmentTimeMarker"
                    }
                  }
                ],
                "items": {
                  "$ref": "#/components/schemas/Entities.AppointmentTimeMarker"
                },
                "description": "Accepts either a single object or an array of objects."
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DimeSchedulerApiResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Appointment Time Marker"
        ],
        "summary": "Delete an appointment time marker",
        "operationId": "deleteAppointmentTimeMarker",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/Entities.AppointmentTimeMarker"
                  },
                  {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/Entities.AppointmentTimeMarker"
                    }
                  }
                ],
                "items": {
                  "$ref": "#/components/schemas/Entities.AppointmentTimeMarker"
                },
                "description": "Accepts either a single object or an array of objects."
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DimeSchedulerApiResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          }
        }
      }
    },
    "/appointmentUri": {
      "post": {
        "tags": [
          "Appointment URI"
        ],
        "summary": "Create a new appointment URI",
        "operationId": "createAppointmentUri",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/Entities.AppointmentUri"
                  },
                  {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/Entities.AppointmentUri"
                    }
                  }
                ],
                "items": {
                  "$ref": "#/components/schemas/Entities.AppointmentUri"
                },
                "description": "Accepts either a single object or an array of objects."
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DimeSchedulerApiResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Appointment URI"
        ],
        "summary": "Update an existing appointment URI",
        "operationId": "updateAppointmentUri",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/Entities.AppointmentUri"
                  },
                  {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/Entities.AppointmentUri"
                    }
                  }
                ],
                "items": {
                  "$ref": "#/components/schemas/Entities.AppointmentUri"
                },
                "description": "Accepts either a single object or an array of objects."
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DimeSchedulerApiResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Appointment URI"
        ],
        "summary": "Delete an appointment URI",
        "operationId": "deleteAppointmentUri",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/Entities.AppointmentUri"
                  },
                  {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/Entities.AppointmentUri"
                    }
                  }
                ],
                "items": {
                  "$ref": "#/components/schemas/Entities.AppointmentUri"
                },
                "description": "Accepts either a single object or an array of objects."
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DimeSchedulerApiResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          }
        }
      }
    },
    "/assignment": {
      "post": {
        "tags": [
          "Assignment"
        ],
        "summary": "Create a new assignment",
        "operationId": "createAssignment",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/Entities.Assignment"
                  },
                  {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/Entities.Assignment"
                    }
                  }
                ],
                "items": {
                  "$ref": "#/components/schemas/Entities.Assignment"
                },
                "description": "Accepts either a single object or an array of objects."
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DimeSchedulerApiResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Assignment"
        ],
        "summary": "Update an existing assignment",
        "operationId": "updateAssignment",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/Entities.Assignment"
                  },
                  {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/Entities.Assignment"
                    }
                  }
                ],
                "items": {
                  "$ref": "#/components/schemas/Entities.Assignment"
                },
                "description": "Accepts either a single object or an array of objects."
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DimeSchedulerApiResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Assignment"
        ],
        "summary": "Delete an assignment",
        "operationId": "deleteAssignment",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/Entities.Assignment"
                  },
                  {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/Entities.Assignment"
                    }
                  }
                ],
                "items": {
                  "$ref": "#/components/schemas/Entities.Assignment"
                },
                "description": "Accepts either a single object or an array of objects."
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DimeSchedulerApiResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          }
        }
      }
    },
    "/calendar": {
      "get": {
        "tags": [
          "Calendar"
        ],
        "summary": "Retrieve a list of calendars",
        "operationId": "getCalendarDtoList",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Core.CalendarDto"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/caption": {
      "post": {
        "tags": [
          "Caption"
        ],
        "summary": "Create a new caption",
        "operationId": "createCaption",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/Entities.Caption"
                  },
                  {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/Entities.Caption"
                    }
                  }
                ],
                "items": {
                  "$ref": "#/components/schemas/Entities.Caption"
                },
                "description": "Accepts either a single object or an array of objects."
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DimeSchedulerApiResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Caption"
        ],
        "summary": "Update an existing caption",
        "operationId": "updateCaption",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/Entities.Caption"
                  },
                  {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/Entities.Caption"
                    }
                  }
                ],
                "items": {
                  "$ref": "#/components/schemas/Entities.Caption"
                },
                "description": "Accepts either a single object or an array of objects."
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DimeSchedulerApiResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Caption"
        ],
        "summary": "Delete a caption",
        "operationId": "deleteCaption",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/Entities.Caption"
                  },
                  {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/Entities.Caption"
                    }
                  }
                ],
                "items": {
                  "$ref": "#/components/schemas/Entities.Caption"
                },
                "description": "Accepts either a single object or an array of objects."
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DimeSchedulerApiResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          }
        }
      }
    },
    "/category": {
      "get": {
        "tags": [
          "Category"
        ],
        "summary": "Retrieve a list of categories",
        "operationId": "getCategoryList",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Core.CategoryDto"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Category"
        ],
        "summary": "Create a new category",
        "operationId": "createCategory",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/Entities.Category"
                  },
                  {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/Entities.Category"
                    }
                  }
                ],
                "items": {
                  "$ref": "#/components/schemas/Entities.Category"
                },
                "description": "Accepts either a single object or an array of objects."
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DimeSchedulerApiResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Category"
        ],
        "summary": "Update an existing category",
        "operationId": "updateCategory",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/Entities.Category"
                  },
                  {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/Entities.Category"
                    }
                  }
                ],
                "items": {
                  "$ref": "#/components/schemas/Entities.Category"
                },
                "description": "Accepts either a single object or an array of objects."
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DimeSchedulerApiResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Category"
        ],
        "summary": "Delete a category",
        "operationId": "deleteCategory",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/Entities.Category"
                  },
                  {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/Entities.Category"
                    }
                  }
                ],
                "items": {
                  "$ref": "#/components/schemas/Entities.Category"
                },
                "description": "Accepts either a single object or an array of objects."
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DimeSchedulerApiResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          }
        }
      }
    },
    "/connector": {
      "post": {
        "tags": [
          "Connector"
        ],
        "summary": "Create a new connector",
        "operationId": "createNewConnectorRequest",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Dime.Scheduler.NewConnectorRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ContentResult"
                }
              }
            }
          },
          "201": {
            "description": "Created"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Connector"
        ],
        "summary": "Update an existing connector (not implemented)",
        "operationId": "updateNewConnectorRequest",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Connector"
        ],
        "summary": "Delete a connector (not implemented)",
        "operationId": "deleteNewConnectorRequest",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/container": {
      "get": {
        "tags": [
          "Container"
        ],
        "summary": "Retrieve a list of containers",
        "operationId": "getContainerDtoList",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Core.ContainerDto"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Container"
        ],
        "summary": "Create a new container",
        "operationId": "createContainer",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/Entities.Container"
                  },
                  {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/Entities.Container"
                    }
                  }
                ],
                "items": {
                  "$ref": "#/components/schemas/Entities.Container"
                },
                "description": "Accepts either a single object or an array of objects."
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DimeSchedulerApiResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Container"
        ],
        "summary": "Update an existing container",
        "operationId": "updateContainer",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/Entities.Container"
                  },
                  {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/Entities.Container"
                    }
                  }
                ],
                "items": {
                  "$ref": "#/components/schemas/Entities.Container"
                },
                "description": "Accepts either a single object or an array of objects."
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DimeSchedulerApiResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Container"
        ],
        "summary": "Delete a container",
        "operationId": "deleteContainer",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/Entities.Container"
                  },
                  {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/Entities.Container"
                    }
                  }
                ],
                "items": {
                  "$ref": "#/components/schemas/Entities.Container"
                },
                "description": "Accepts either a single object or an array of objects."
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DimeSchedulerApiResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          }
        }
      }
    },
    "/filterGroup": {
      "get": {
        "tags": [
          "Filter Group"
        ],
        "summary": "Retrieve a list of filter groups",
        "operationId": "getFilterGroupDtoList",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Core.FilterGroupDto"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Filter Group"
        ],
        "summary": "Create a new filter group",
        "operationId": "createFilterGroup",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/Entities.FilterGroup"
                  },
                  {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/Entities.FilterGroup"
                    }
                  }
                ],
                "items": {
                  "$ref": "#/components/schemas/Entities.FilterGroup"
                },
                "description": "Accepts either a single object or an array of objects."
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DimeSchedulerApiResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Filter Group"
        ],
        "summary": "Update an existing filter group",
        "operationId": "updateFilterGroup",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/Entities.FilterGroup"
                  },
                  {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/Entities.FilterGroup"
                    }
                  }
                ],
                "items": {
                  "$ref": "#/components/schemas/Entities.FilterGroup"
                },
                "description": "Accepts either a single object or an array of objects."
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DimeSchedulerApiResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Filter Group"
        ],
        "summary": "Delete a filter group",
        "operationId": "deleteFilterGroup",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/Entities.FilterGroup"
                  },
                  {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/Entities.FilterGroup"
                    }
                  }
                ],
                "items": {
                  "$ref": "#/components/schemas/Entities.FilterGroup"
                },
                "description": "Accepts either a single object or an array of objects."
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DimeSchedulerApiResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          }
        }
      }
    },
    "/filterValue": {
      "get": {
        "tags": [
          "Filter Value"
        ],
        "summary": "Retrieve a list of filter values",
        "operationId": "getFilterValueDtoList",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Core.FilterValueDto"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Filter Value"
        ],
        "summary": "Create a new filter value",
        "operationId": "createFilterValue",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/Entities.FilterValue"
                  },
                  {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/Entities.FilterValue"
                    }
                  }
                ],
                "items": {
                  "$ref": "#/components/schemas/Entities.FilterValue"
                },
                "description": "Accepts either a single object or an array of objects."
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DimeSchedulerApiResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Filter Value"
        ],
        "summary": "Update an existing filter value",
        "operationId": "updateFilterValue",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/Entities.FilterValue"
                  },
                  {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/Entities.FilterValue"
                    }
                  }
                ],
                "items": {
                  "$ref": "#/components/schemas/Entities.FilterValue"
                },
                "description": "Accepts either a single object or an array of objects."
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DimeSchedulerApiResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Filter Value"
        ],
        "summary": "Delete a filter value",
        "operationId": "deleteFilterValue",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/Entities.FilterValue"
                  },
                  {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/Entities.FilterValue"
                    }
                  }
                ],
                "items": {
                  "$ref": "#/components/schemas/Entities.FilterValue"
                },
                "description": "Accepts either a single object or an array of objects."
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DimeSchedulerApiResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          }
        }
      }
    },
    "/geocode": {
      "post": {
        "tags": [
          "Geocode"
        ],
        "summary": "Geocode an address",
        "description": "Converts a structured address (street, street number, zip code, city, state, country) to geographic coordinates",
        "operationId": "geocodeAddress",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Dime.Scheduler.Api.Models.Address"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        },
        "x-badges": [
          {
            "name": "Basic Map",
            "position": "before",
            "color": "#d4af37"
          }
        ]
      },
      "get": {
        "tags": [
          "Geocode"
        ],
        "summary": "Geocode an address text",
        "description": "Converts an address string to geographic coordinates",
        "operationId": "geocodeText",
        "parameters": [
          {
            "name": "address",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "country",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        },
        "x-badges": [
          {
            "name": "Basic Map",
            "position": "before",
            "color": "#d4af37"
          }
        ]
      }
    },
    "/import": {
      "post": {
        "tags": [
          "Import"
        ],
        "summary": "Imports data using stored procedures",
        "operationId": "createStoredProcedureData",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Models.StoredProcedureData"
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ContentResult"
                }
              }
            }
          }
        }
      }
    },
    "/import/setup": {
      "post": {
        "tags": [
          "Import"
        ],
        "summary": "Import profiles and layouts",
        "description": "Queues a setup payload for background import processing. The import is idempotent - profiles and layouts are created or updated based on their unique codes.",
        "operationId": "importSetup",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Core.SetupImportPayloadDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "description": "Accepted"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          }
        }
      }
    },
    "/job": {
      "get": {
        "tags": [
          "Job"
        ],
        "summary": "Retrieve a list of jobs",
        "operationId": "getJobDtoList",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Core.JobDto"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Job"
        ],
        "summary": "Create a new job",
        "operationId": "createJob",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/Entities.Job"
                  },
                  {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/Entities.Job"
                    }
                  }
                ],
                "items": {
                  "$ref": "#/components/schemas/Entities.Job"
                },
                "description": "Accepts either a single object or an array of objects."
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DimeSchedulerApiResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Job"
        ],
        "summary": "Update an existing job",
        "operationId": "updateJob",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/Entities.Job"
                  },
                  {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/Entities.Job"
                    }
                  }
                ],
                "items": {
                  "$ref": "#/components/schemas/Entities.Job"
                },
                "description": "Accepts either a single object or an array of objects."
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DimeSchedulerApiResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Job"
        ],
        "summary": "Delete a job",
        "operationId": "deleteJob",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/Entities.Job"
                  },
                  {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/Entities.Job"
                    }
                  }
                ],
                "items": {
                  "$ref": "#/components/schemas/Entities.Job"
                },
                "description": "Accepts either a single object or an array of objects."
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DimeSchedulerApiResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          }
        }
      }
    },
    "/job/{jobNo}": {
      "get": {
        "tags": [
          "Job"
        ],
        "summary": "Retrieve a single job by its job number",
        "description": "Resolves the job by the supplied JobNo. Returns 404 Not Found when no job with that number exists.",
        "operationId": "getJob",
        "parameters": [
          {
            "name": "jobNo",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.JobDto"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          }
        }
      }
    },
    "/message": {
      "post": {
        "tags": [
          "Message"
        ],
        "operationId": "createMessage",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Entities.Message"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          }
        }
      }
    },
    "/notification": {
      "get": {
        "tags": [
          "Notification"
        ],
        "summary": "Retrieve a paginated list of notifications with optional sorting, grouping, and filtering",
        "operationId": "getNotificationDtoList",
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "group",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "filter",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Dime.Repositories.IPageOfNotificationDto"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Notification"
        ],
        "summary": "Create a new notification",
        "operationId": "createNotification",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/Entities.Notification"
                  },
                  {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/Entities.Notification"
                    }
                  }
                ],
                "items": {
                  "$ref": "#/components/schemas/Entities.Notification"
                },
                "description": "Accepts either a single object or an array of objects."
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DimeSchedulerApiResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Notification"
        ],
        "summary": "Update an existing notification",
        "operationId": "updateNotification",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/Entities.Notification"
                  },
                  {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/Entities.Notification"
                    }
                  }
                ],
                "items": {
                  "$ref": "#/components/schemas/Entities.Notification"
                },
                "description": "Accepts either a single object or an array of objects."
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DimeSchedulerApiResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Notification"
        ],
        "summary": "Delete a notification",
        "operationId": "deleteNotification",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/Entities.Notification"
                  },
                  {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/Entities.Notification"
                    }
                  }
                ],
                "items": {
                  "$ref": "#/components/schemas/Entities.Notification"
                },
                "description": "Accepts either a single object or an array of objects."
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DimeSchedulerApiResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          }
        }
      }
    },
    "/optimization/fieldService": {
      "post": {
        "tags": [
          "Optimization"
        ],
        "summary": "Optimize the planning with the field service solver",
        "description": "Optimizes field service routes for the specified resources and date range using Vehicle Routing Problem (VRP) optimization.",
        "operationId": "optimizeFieldService",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Dime.Scheduler.Api.Models.FieldServiceOptimizationRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        },
        "x-badges": [
          {
            "name": "Field Service Solver",
            "position": "before",
            "color": "#d4af37"
          },
          {
            "name": "Preview",
            "position": "before",
            "color": "#FFA500"
          }
        ]
      }
    },
    "/optimization/professionalServices": {
      "post": {
        "tags": [
          "Optimization"
        ],
        "summary": "Optimize the planning with the professional services solver",
        "description": "Optimizes professional services schedules for the specified resources and date range using task assignment optimization.",
        "operationId": "optimizeProfessionalServices",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Dime.Scheduler.Api.Models.ProfessionalServicesOptimizationRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        },
        "x-scalar-ignore": true,
        "x-badges": [
          {
            "name": "Professional Services Solver",
            "position": "before",
            "color": "#d4af37"
          },
          {
            "name": "Preview",
            "position": "before",
            "color": "#FFA500"
          }
        ]
      }
    },
    "/optimization/dailyRoute": {
      "post": {
        "tags": [
          "Optimization"
        ],
        "summary": "Optimize the planning with the traveling salesman solver",
        "description": "Optimizes the daily route for a specific resource on a given date using Traveling Salesman Problem (TSP) optimization.",
        "operationId": "optimizeDailyRoute",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Dime.Scheduler.Api.Models.OptimizeDailyRouteRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        },
        "x-badges": [
          {
            "name": "Advanced Map",
            "position": "before",
            "color": "#d4af37"
          },
          {
            "name": "Preview",
            "position": "before",
            "color": "#FFA500"
          }
        ]
      }
    },
    "/pin": {
      "get": {
        "tags": [
          "Pin"
        ],
        "summary": "Retrieve a list of pins",
        "operationId": "getPinDtoList",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Core.PinDto"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Pin"
        ],
        "summary": "Create a new pin",
        "operationId": "createPin",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/Entities.Pin"
                  },
                  {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/Entities.Pin"
                    }
                  }
                ],
                "items": {
                  "$ref": "#/components/schemas/Entities.Pin"
                },
                "description": "Accepts either a single object or an array of objects."
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DimeSchedulerApiResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Pin"
        ],
        "summary": "Update an existing pin",
        "operationId": "updatePin",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/Entities.Pin"
                  },
                  {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/Entities.Pin"
                    }
                  }
                ],
                "items": {
                  "$ref": "#/components/schemas/Entities.Pin"
                },
                "description": "Accepts either a single object or an array of objects."
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DimeSchedulerApiResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Pin"
        ],
        "summary": "Delete a pin",
        "operationId": "deletePin",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/Entities.Pin"
                  },
                  {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/Entities.Pin"
                    }
                  }
                ],
                "items": {
                  "$ref": "#/components/schemas/Entities.Pin"
                },
                "description": "Accepts either a single object or an array of objects."
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DimeSchedulerApiResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          }
        }
      }
    },
    "/projectMember": {
      "post": {
        "tags": [
          "Project Member"
        ],
        "summary": "Create a new project member",
        "operationId": "createProjectMember",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/Entities.ProjectMember"
                  },
                  {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/Entities.ProjectMember"
                    }
                  }
                ],
                "items": {
                  "$ref": "#/components/schemas/Entities.ProjectMember"
                },
                "description": "Accepts either a single object or an array of objects."
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DimeSchedulerApiResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Project Member"
        ],
        "summary": "Update an existing project member",
        "operationId": "updateProjectMember",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/Entities.ProjectMember"
                  },
                  {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/Entities.ProjectMember"
                    }
                  }
                ],
                "items": {
                  "$ref": "#/components/schemas/Entities.ProjectMember"
                },
                "description": "Accepts either a single object or an array of objects."
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DimeSchedulerApiResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Project Member"
        ],
        "summary": "Delete a project member",
        "operationId": "deleteProjectMember",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/Entities.ProjectMember"
                  },
                  {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/Entities.ProjectMember"
                    }
                  }
                ],
                "items": {
                  "$ref": "#/components/schemas/Entities.ProjectMember"
                },
                "description": "Accepts either a single object or an array of objects."
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DimeSchedulerApiResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          }
        }
      }
    },
    "/recommendation": {
      "post": {
        "tags": [
          "Recommendation"
        ],
        "summary": "Get recommended resources with available slots for a given date range with optional skill filters and location-based scoring",
        "description": "Returns resources with their available time slots based on appointments, calendars, optional resource filter criteria, and proximity to a specified location.",
        "operationId": "getRecommendation",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Core.RecommendationRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        },
        "x-badges": [
          {
            "name": "Advanced Map",
            "position": "before",
            "color": "#d4af37"
          },
          {
            "name": "Preview",
            "position": "before",
            "color": "#FFA500"
          }
        ]
      }
    },
    "/recommendation/scorers": {
      "get": {
        "tags": [
          "Recommendation"
        ],
        "summary": "List the scorer keys that can be weighted in a recommendation request",
        "description": "Returns the catalogue of available scorers, each with its key, description, and the request fields it requires. Use the keys in the scoring.weights map of POST /recommendation.",
        "operationId": "getRecommendationScorers",
        "responses": {
          "200": {
            "description": "OK"
          }
        },
        "x-badges": [
          {
            "name": "Preview",
            "position": "before",
            "color": "#FFA500"
          }
        ]
      }
    },
    "/appointmentRecurring": {
      "post": {
        "tags": [
          "Recurring Appointment"
        ],
        "summary": "Create a new recurring appointment with the specified recurrence pattern. The appointment is created first, then the recurring job is scheduled to generate occurrences.",
        "operationId": "createRecurringAppointmentRequest",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Dime.Scheduler.Api.Models.RecurringAppointmentRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Dime.Scheduler.Api.Models.RecurringAppointmentResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          }
        },
        "x-badges": [
          {
            "name": "Preview",
            "position": "before",
            "color": "#FFA500"
          }
        ]
      },
      "delete": {
        "tags": [
          "Recurring Appointment"
        ],
        "summary": "Delete a recurring appointment sequence. All occurrences in the sequence will be deleted. The AppointmentId can be the master appointment ID or any occurrence ID in the recurring sequence.",
        "operationId": "deleteDeleteRecurringAppointmentRequest",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Dime.Scheduler.Api.Models.DeleteRecurringAppointmentRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          }
        },
        "x-badges": [
          {
            "name": "Preview",
            "position": "before",
            "color": "#FFA500"
          }
        ]
      }
    },
    "/resource": {
      "get": {
        "tags": [
          "Resource"
        ],
        "summary": "Retrieve a list of resources",
        "operationId": "getResourceDtoList",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Core.ResourceDto"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Resource"
        ],
        "summary": "Create a new resource",
        "operationId": "createResource",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/Entities.Resource"
                  },
                  {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/Entities.Resource"
                    }
                  }
                ],
                "items": {
                  "$ref": "#/components/schemas/Entities.Resource"
                },
                "description": "Accepts either a single object or an array of objects."
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DimeSchedulerApiResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Resource"
        ],
        "summary": "Update an existing resource",
        "operationId": "updateResource",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/Entities.Resource"
                  },
                  {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/Entities.Resource"
                    }
                  }
                ],
                "items": {
                  "$ref": "#/components/schemas/Entities.Resource"
                },
                "description": "Accepts either a single object or an array of objects."
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DimeSchedulerApiResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Resource"
        ],
        "summary": "Delete a resource",
        "operationId": "deleteResource",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/Entities.Resource"
                  },
                  {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/Entities.Resource"
                    }
                  }
                ],
                "items": {
                  "$ref": "#/components/schemas/Entities.Resource"
                },
                "description": "Accepts either a single object or an array of objects."
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DimeSchedulerApiResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          }
        }
      }
    },
    "/resourceCalendar": {
      "post": {
        "tags": [
          "Resource Calendar"
        ],
        "summary": "Create a new resource calendar",
        "operationId": "createResourceCalendar",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/Entities.ResourceCalendar"
                  },
                  {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/Entities.ResourceCalendar"
                    }
                  }
                ],
                "items": {
                  "$ref": "#/components/schemas/Entities.ResourceCalendar"
                },
                "description": "Accepts either a single object or an array of objects."
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DimeSchedulerApiResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Resource Calendar"
        ],
        "summary": "Update an existing resource calendar",
        "operationId": "updateResourceCalendar",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/Entities.ResourceCalendar"
                  },
                  {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/Entities.ResourceCalendar"
                    }
                  }
                ],
                "items": {
                  "$ref": "#/components/schemas/Entities.ResourceCalendar"
                },
                "description": "Accepts either a single object or an array of objects."
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DimeSchedulerApiResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Resource Calendar"
        ],
        "summary": "Delete a resource calendar",
        "operationId": "deleteResourceCalendar",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/Entities.ResourceCalendar"
                  },
                  {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/Entities.ResourceCalendar"
                    }
                  }
                ],
                "items": {
                  "$ref": "#/components/schemas/Entities.ResourceCalendar"
                },
                "description": "Accepts either a single object or an array of objects."
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DimeSchedulerApiResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          }
        }
      }
    },
    "/resourceCapacity": {
      "get": {
        "tags": [
          "Resource Capacity"
        ],
        "summary": "Retrieve a list of resource capacities within the specified date range",
        "operationId": "getResourceCapacityDtoList",
        "parameters": [
          {
            "name": "start",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "end",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Core.ResourceCapacityDto"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Resource Capacity"
        ],
        "summary": "Create a new resource capacity",
        "operationId": "createResourceCapacity",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/Entities.ResourceCapacity"
                  },
                  {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/Entities.ResourceCapacity"
                    }
                  }
                ],
                "items": {
                  "$ref": "#/components/schemas/Entities.ResourceCapacity"
                },
                "description": "Accepts either a single object or an array of objects."
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DimeSchedulerApiResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Resource Capacity"
        ],
        "summary": "Update an existing resource capacity",
        "operationId": "updateResourceCapacity",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/Entities.ResourceCapacity"
                  },
                  {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/Entities.ResourceCapacity"
                    }
                  }
                ],
                "items": {
                  "$ref": "#/components/schemas/Entities.ResourceCapacity"
                },
                "description": "Accepts either a single object or an array of objects."
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DimeSchedulerApiResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Resource Capacity"
        ],
        "summary": "Delete a resource capacity",
        "operationId": "deleteResourceCapacity",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/Entities.ResourceCapacity"
                  },
                  {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/Entities.ResourceCapacity"
                    }
                  }
                ],
                "items": {
                  "$ref": "#/components/schemas/Entities.ResourceCapacity"
                },
                "description": "Accepts either a single object or an array of objects."
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DimeSchedulerApiResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          }
        }
      }
    },
    "/resourceCertificate": {
      "post": {
        "tags": [
          "Resource Certificate"
        ],
        "summary": "Create a new resource certificate",
        "operationId": "createResourceCertificate",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/Entities.ResourceCertificate"
                  },
                  {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/Entities.ResourceCertificate"
                    }
                  }
                ],
                "items": {
                  "$ref": "#/components/schemas/Entities.ResourceCertificate"
                },
                "description": "Accepts either a single object or an array of objects."
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DimeSchedulerApiResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Resource Certificate"
        ],
        "summary": "Update an existing resource certificate",
        "operationId": "updateResourceCertificate",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/Entities.ResourceCertificate"
                  },
                  {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/Entities.ResourceCertificate"
                    }
                  }
                ],
                "items": {
                  "$ref": "#/components/schemas/Entities.ResourceCertificate"
                },
                "description": "Accepts either a single object or an array of objects."
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DimeSchedulerApiResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Resource Certificate"
        ],
        "summary": "Delete a resource certificate",
        "operationId": "deleteResourceCertificate",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/Entities.ResourceCertificate"
                  },
                  {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/Entities.ResourceCertificate"
                    }
                  }
                ],
                "items": {
                  "$ref": "#/components/schemas/Entities.ResourceCertificate"
                },
                "description": "Accepts either a single object or an array of objects."
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DimeSchedulerApiResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          }
        }
      }
    },
    "/resourceFilterValue": {
      "post": {
        "tags": [
          "Resource Filter Value"
        ],
        "summary": "Create a new resource filter value",
        "operationId": "createResourceFilterValue",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/Entities.ResourceFilterValue"
                  },
                  {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/Entities.ResourceFilterValue"
                    }
                  }
                ],
                "items": {
                  "$ref": "#/components/schemas/Entities.ResourceFilterValue"
                },
                "description": "Accepts either a single object or an array of objects."
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DimeSchedulerApiResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Resource Filter Value"
        ],
        "summary": "Update an existing resource filter value",
        "operationId": "updateResourceFilterValue",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/Entities.ResourceFilterValue"
                  },
                  {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/Entities.ResourceFilterValue"
                    }
                  }
                ],
                "items": {
                  "$ref": "#/components/schemas/Entities.ResourceFilterValue"
                },
                "description": "Accepts either a single object or an array of objects."
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DimeSchedulerApiResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Resource Filter Value"
        ],
        "summary": "Delete a resource filter value",
        "operationId": "deleteResourceFilterValue",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/Entities.ResourceFilterValue"
                  },
                  {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/Entities.ResourceFilterValue"
                    }
                  }
                ],
                "items": {
                  "$ref": "#/components/schemas/Entities.ResourceFilterValue"
                },
                "description": "Accepts either a single object or an array of objects."
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DimeSchedulerApiResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          }
        }
      }
    },
    "/resourceGpsTracking": {
      "post": {
        "tags": [
          "Resource GPS Tracking"
        ],
        "summary": "Create a new resource GPS tracking record",
        "operationId": "createResourceGpsTracking",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/Entities.ResourceGpsTracking"
                  },
                  {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/Entities.ResourceGpsTracking"
                    }
                  }
                ],
                "items": {
                  "$ref": "#/components/schemas/Entities.ResourceGpsTracking"
                },
                "description": "Accepts either a single object or an array of objects."
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DimeSchedulerApiResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Resource GPS Tracking"
        ],
        "summary": "Update an existing resource GPS tracking record",
        "operationId": "updateResourceGpsTracking",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/Entities.ResourceGpsTracking"
                  },
                  {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/Entities.ResourceGpsTracking"
                    }
                  }
                ],
                "items": {
                  "$ref": "#/components/schemas/Entities.ResourceGpsTracking"
                },
                "description": "Accepts either a single object or an array of objects."
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DimeSchedulerApiResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Resource GPS Tracking"
        ],
        "summary": "Delete a resource GPS tracking record",
        "operationId": "deleteResourceGpsTracking",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/Entities.ResourceGpsTracking"
                  },
                  {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/Entities.ResourceGpsTracking"
                    }
                  }
                ],
                "items": {
                  "$ref": "#/components/schemas/Entities.ResourceGpsTracking"
                },
                "description": "Accepts either a single object or an array of objects."
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DimeSchedulerApiResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          }
        }
      }
    },
    "/resourcetype": {
      "get": {
        "tags": [
          "Resource Type"
        ],
        "summary": "Retrieve a list of resource types",
        "operationId": "getResourceTypeDtoList",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Core.ResourceTypeDto"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/resourceUri": {
      "post": {
        "tags": [
          "Resource URI"
        ],
        "summary": "Create a new resource URI",
        "operationId": "createResourceUri",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/Entities.ResourceUri"
                  },
                  {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/Entities.ResourceUri"
                    }
                  }
                ],
                "items": {
                  "$ref": "#/components/schemas/Entities.ResourceUri"
                },
                "description": "Accepts either a single object or an array of objects."
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DimeSchedulerApiResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Resource URI"
        ],
        "summary": "Update an existing resource URI",
        "operationId": "updateResourceUri",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/Entities.ResourceUri"
                  },
                  {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/Entities.ResourceUri"
                    }
                  }
                ],
                "items": {
                  "$ref": "#/components/schemas/Entities.ResourceUri"
                },
                "description": "Accepts either a single object or an array of objects."
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DimeSchedulerApiResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Resource URI"
        ],
        "summary": "Delete a resource URI",
        "operationId": "deleteResourceUri",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/Entities.ResourceUri"
                  },
                  {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/Entities.ResourceUri"
                    }
                  }
                ],
                "items": {
                  "$ref": "#/components/schemas/Entities.ResourceUri"
                },
                "description": "Accepts either a single object or an array of objects."
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DimeSchedulerApiResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          }
        }
      }
    },
    "/tag": {
      "get": {
        "tags": [
          "Tag"
        ],
        "summary": "Retrieve a list of tags",
        "operationId": "getTagDtoList",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Core.TagDto"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Tag"
        ],
        "summary": "Create a new tag",
        "operationId": "createTag",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/Entities.Tag"
                  },
                  {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/Entities.Tag"
                    }
                  }
                ],
                "items": {
                  "$ref": "#/components/schemas/Entities.Tag"
                },
                "description": "Accepts either a single object or an array of objects."
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DimeSchedulerApiResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Tag"
        ],
        "summary": "Update an existing tag",
        "operationId": "updateTag",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/Entities.Tag"
                  },
                  {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/Entities.Tag"
                    }
                  }
                ],
                "items": {
                  "$ref": "#/components/schemas/Entities.Tag"
                },
                "description": "Accepts either a single object or an array of objects."
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DimeSchedulerApiResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Tag"
        ],
        "summary": "Delete a tag",
        "operationId": "deleteTag",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/Entities.Tag"
                  },
                  {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/Entities.Tag"
                    }
                  }
                ],
                "items": {
                  "$ref": "#/components/schemas/Entities.Tag"
                },
                "description": "Accepts either a single object or an array of objects."
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DimeSchedulerApiResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          }
        }
      }
    },
    "/task": {
      "get": {
        "tags": [
          "Task"
        ],
        "summary": "Retrieve a list of tasks. By default only open tasks are returned. Pass isOpen=false to also include closed and fully planned tasks; that list is served in pages, so page (1-based) and pageSize (1-1000) are required with it and optional otherwise. A page that comes back shorter than pageSize is the last one.",
        "operationId": "getTaskDtoList",
        "parameters": [
          {
            "name": "isOpen",
            "in": "query",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "page",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Core.TaskDto"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Task"
        ],
        "summary": "Create a new task",
        "operationId": "createTask",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/Entities.Task"
                  },
                  {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/Entities.Task"
                    }
                  }
                ],
                "items": {
                  "$ref": "#/components/schemas/Entities.Task"
                },
                "description": "Accepts either a single object or an array of objects."
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DimeSchedulerApiResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Task"
        ],
        "summary": "Update an existing task",
        "operationId": "updateTask",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/Entities.Task"
                  },
                  {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/Entities.Task"
                    }
                  }
                ],
                "items": {
                  "$ref": "#/components/schemas/Entities.Task"
                },
                "description": "Accepts either a single object or an array of objects."
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DimeSchedulerApiResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Task"
        ],
        "summary": "Delete a task",
        "operationId": "deleteTask",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/Entities.Task"
                  },
                  {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/Entities.Task"
                    }
                  }
                ],
                "items": {
                  "$ref": "#/components/schemas/Entities.Task"
                },
                "description": "Accepts either a single object or an array of objects."
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DimeSchedulerApiResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          }
        }
      }
    },
    "/taskAssignment": {
      "post": {
        "tags": [
          "Task Assignment"
        ],
        "summary": "Assign a resource to a project task, or update the allocated units and the allocation's period, quantity and description. Send ExternalId to address one of several allocations of the same resource on the task. Generates the appointments for the assignment, exactly like the synchronization in the Gantt chart",
        "operationId": "createTaskAssignmentRequest",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Dime.Scheduler.Api.Models.TaskAssignmentRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      },
      "delete": {
        "tags": [
          "Task Assignment"
        ],
        "summary": "Remove a resource assignment from a project task and delete the linked appointments",
        "operationId": "deleteTaskAssignmentRequest",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Dime.Scheduler.Api.Models.TaskAssignmentRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/taskBudgetEntry": {
      "post": {
        "tags": [
          "Task Budget Entry"
        ],
        "summary": "Create a new task budget entry",
        "operationId": "createTaskBudgetEntry",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/Entities.TaskBudgetEntry"
                  },
                  {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/Entities.TaskBudgetEntry"
                    }
                  }
                ],
                "items": {
                  "$ref": "#/components/schemas/Entities.TaskBudgetEntry"
                },
                "description": "Accepts either a single object or an array of objects."
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DimeSchedulerApiResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Task Budget Entry"
        ],
        "summary": "Delete a task budget entry",
        "operationId": "deleteTaskBudgetEntry",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/Entities.TaskBudgetEntry"
                  },
                  {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/Entities.TaskBudgetEntry"
                    }
                  }
                ],
                "items": {
                  "$ref": "#/components/schemas/Entities.TaskBudgetEntry"
                },
                "description": "Accepts either a single object or an array of objects."
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DimeSchedulerApiResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          }
        }
      }
    },
    "/taskContainer": {
      "post": {
        "tags": [
          "Task Container"
        ],
        "summary": "Create a new task container",
        "operationId": "createTaskContainer",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/Entities.TaskContainer"
                  },
                  {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/Entities.TaskContainer"
                    }
                  }
                ],
                "items": {
                  "$ref": "#/components/schemas/Entities.TaskContainer"
                },
                "description": "Accepts either a single object or an array of objects."
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DimeSchedulerApiResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Task Container"
        ],
        "summary": "Update an existing task container",
        "operationId": "updateTaskContainer",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/Entities.TaskContainer"
                  },
                  {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/Entities.TaskContainer"
                    }
                  }
                ],
                "items": {
                  "$ref": "#/components/schemas/Entities.TaskContainer"
                },
                "description": "Accepts either a single object or an array of objects."
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DimeSchedulerApiResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Task Container"
        ],
        "summary": "Delete a task container",
        "operationId": "deleteTaskContainer",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/Entities.TaskContainer"
                  },
                  {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/Entities.TaskContainer"
                    }
                  }
                ],
                "items": {
                  "$ref": "#/components/schemas/Entities.TaskContainer"
                },
                "description": "Accepts either a single object or an array of objects."
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DimeSchedulerApiResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          }
        }
      }
    },
    "/taskDependency": {
      "post": {
        "tags": [
          "Task Dependency"
        ],
        "summary": "Create a new task dependency",
        "operationId": "createTaskDependency",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/Entities.TaskDependency"
                  },
                  {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/Entities.TaskDependency"
                    }
                  }
                ],
                "items": {
                  "$ref": "#/components/schemas/Entities.TaskDependency"
                },
                "description": "Accepts either a single object or an array of objects."
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DimeSchedulerApiResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Task Dependency"
        ],
        "summary": "Update an existing task dependency",
        "operationId": "updateTaskDependency",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/Entities.TaskDependency"
                  },
                  {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/Entities.TaskDependency"
                    }
                  }
                ],
                "items": {
                  "$ref": "#/components/schemas/Entities.TaskDependency"
                },
                "description": "Accepts either a single object or an array of objects."
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DimeSchedulerApiResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Task Dependency"
        ],
        "summary": "Delete a task dependency",
        "operationId": "deleteTaskDependency",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/Entities.TaskDependency"
                  },
                  {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/Entities.TaskDependency"
                    }
                  }
                ],
                "items": {
                  "$ref": "#/components/schemas/Entities.TaskDependency"
                },
                "description": "Accepts either a single object or an array of objects."
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DimeSchedulerApiResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          }
        }
      }
    },
    "/taskFilterValue": {
      "post": {
        "tags": [
          "Task Filter Value"
        ],
        "summary": "Create a new task filter value",
        "operationId": "createTaskFilterValue",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/Entities.TaskFilterValue"
                  },
                  {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/Entities.TaskFilterValue"
                    }
                  }
                ],
                "items": {
                  "$ref": "#/components/schemas/Entities.TaskFilterValue"
                },
                "description": "Accepts either a single object or an array of objects."
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DimeSchedulerApiResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Task Filter Value"
        ],
        "summary": "Update an existing task filter value",
        "operationId": "updateTaskFilterValue",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/Entities.TaskFilterValue"
                  },
                  {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/Entities.TaskFilterValue"
                    }
                  }
                ],
                "items": {
                  "$ref": "#/components/schemas/Entities.TaskFilterValue"
                },
                "description": "Accepts either a single object or an array of objects."
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DimeSchedulerApiResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Task Filter Value"
        ],
        "summary": "Delete a task filter value",
        "operationId": "deleteTaskFilterValue",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/Entities.TaskFilterValue"
                  },
                  {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/Entities.TaskFilterValue"
                    }
                  }
                ],
                "items": {
                  "$ref": "#/components/schemas/Entities.TaskFilterValue"
                },
                "description": "Accepts either a single object or an array of objects."
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DimeSchedulerApiResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          }
        }
      }
    },
    "/taskLocked": {
      "post": {
        "tags": [
          "Task Lock"
        ],
        "summary": "Update the locked status of a task",
        "operationId": "updateTaskLocked",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/Entities.TaskLocked"
                  },
                  {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/Entities.TaskLocked"
                    }
                  }
                ],
                "items": {
                  "$ref": "#/components/schemas/Entities.TaskLocked"
                },
                "description": "Accepts either a single object or an array of objects."
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DimeSchedulerApiResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          }
        }
      }
    },
    "/taskUri": {
      "post": {
        "tags": [
          "Task URI"
        ],
        "summary": "Create a new task URI",
        "operationId": "createTaskUri",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/Entities.TaskUri"
                  },
                  {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/Entities.TaskUri"
                    }
                  }
                ],
                "items": {
                  "$ref": "#/components/schemas/Entities.TaskUri"
                },
                "description": "Accepts either a single object or an array of objects."
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DimeSchedulerApiResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Task URI"
        ],
        "summary": "Update an existing task URI",
        "operationId": "updateTaskUri",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/Entities.TaskUri"
                  },
                  {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/Entities.TaskUri"
                    }
                  }
                ],
                "items": {
                  "$ref": "#/components/schemas/Entities.TaskUri"
                },
                "description": "Accepts either a single object or an array of objects."
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DimeSchedulerApiResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Task URI"
        ],
        "summary": "Delete a task URI",
        "operationId": "deleteTaskUri",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/Entities.TaskUri"
                  },
                  {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/Entities.TaskUri"
                    }
                  }
                ],
                "items": {
                  "$ref": "#/components/schemas/Entities.TaskUri"
                },
                "description": "Accepts either a single object or an array of objects."
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DimeSchedulerApiResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          }
        }
      }
    },
    "/timeEntry": {
      "get": {
        "tags": [
          "Time Entry"
        ],
        "summary": "Retrieve every resource's time entries within the specified date window (start inclusive, end exclusive, at most a quarter)",
        "operationId": "getTimeSheetEntryDtoList",
        "parameters": [
          {
            "name": "start",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "format": "date"
            }
          },
          {
            "name": "end",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "format": "date"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Core.TimeSheetEntryDto"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Time Entry"
        ],
        "summary": "Create a new time entry",
        "operationId": "createTimeEntry",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/Entities.TimeEntry"
                  },
                  {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/Entities.TimeEntry"
                    }
                  }
                ],
                "items": {
                  "$ref": "#/components/schemas/Entities.TimeEntry"
                },
                "description": "Accepts either a single object or an array of objects."
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DimeSchedulerApiResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Time Entry"
        ],
        "summary": "Update an existing time entry",
        "operationId": "updateTimeEntry",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/Entities.TimeEntry"
                  },
                  {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/Entities.TimeEntry"
                    }
                  }
                ],
                "items": {
                  "$ref": "#/components/schemas/Entities.TimeEntry"
                },
                "description": "Accepts either a single object or an array of objects."
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DimeSchedulerApiResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Time Entry"
        ],
        "summary": "Delete a time entry",
        "operationId": "deleteTimeEntry",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/Entities.TimeEntry"
                  },
                  {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/Entities.TimeEntry"
                    }
                  }
                ],
                "items": {
                  "$ref": "#/components/schemas/Entities.TimeEntry"
                },
                "description": "Accepts either a single object or an array of objects."
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DimeSchedulerApiResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          }
        }
      }
    },
    "/timeMarker": {
      "get": {
        "tags": [
          "Time Marker"
        ],
        "summary": "Retrieve a list of time markers",
        "operationId": "getTimeMarkerDtoList",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Core.TimeMarkerDto"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Time Marker"
        ],
        "summary": "Create a new time marker",
        "operationId": "createTimeMarker",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/Entities.TimeMarker"
                  },
                  {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/Entities.TimeMarker"
                    }
                  }
                ],
                "items": {
                  "$ref": "#/components/schemas/Entities.TimeMarker"
                },
                "description": "Accepts either a single object or an array of objects."
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DimeSchedulerApiResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Time Marker"
        ],
        "summary": "Update an existing time marker",
        "operationId": "updateTimeMarker",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/Entities.TimeMarker"
                  },
                  {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/Entities.TimeMarker"
                    }
                  }
                ],
                "items": {
                  "$ref": "#/components/schemas/Entities.TimeMarker"
                },
                "description": "Accepts either a single object or an array of objects."
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DimeSchedulerApiResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Time Marker"
        ],
        "summary": "Delete a time marker",
        "operationId": "deleteTimeMarker",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/Entities.TimeMarker"
                  },
                  {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/Entities.TimeMarker"
                    }
                  }
                ],
                "items": {
                  "$ref": "#/components/schemas/Entities.TimeMarker"
                },
                "description": "Accepts either a single object or an array of objects."
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DimeSchedulerApiResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          }
        }
      }
    },
    "/timeSession": {
      "get": {
        "tags": [
          "Time Session"
        ],
        "summary": "Retrieve every resource's time sessions that started within the specified date window (start inclusive, end exclusive, at most a quarter)",
        "operationId": "getTimeSessionOverviewDtoList",
        "parameters": [
          {
            "name": "start",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "format": "date"
            }
          },
          {
            "name": "end",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "format": "date"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Core.TimeSessionOverviewDto"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Time Session"
        ],
        "summary": "Create a new time session",
        "operationId": "createTimeSession",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/Entities.TimeSession"
                  },
                  {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/Entities.TimeSession"
                    }
                  }
                ],
                "items": {
                  "$ref": "#/components/schemas/Entities.TimeSession"
                },
                "description": "Accepts either a single object or an array of objects."
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DimeSchedulerApiResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Time Session"
        ],
        "summary": "Update an existing time session",
        "operationId": "updateTimeSession",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/Entities.TimeSession"
                  },
                  {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/Entities.TimeSession"
                    }
                  }
                ],
                "items": {
                  "$ref": "#/components/schemas/Entities.TimeSession"
                },
                "description": "Accepts either a single object or an array of objects."
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DimeSchedulerApiResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Time Session"
        ],
        "summary": "Delete a time session",
        "operationId": "deleteTimeSession",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/Entities.TimeSession"
                  },
                  {
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/Entities.TimeSession"
                    }
                  }
                ],
                "items": {
                  "$ref": "#/components/schemas/Entities.TimeSession"
                },
                "description": "Accepts either a single object or an array of objects."
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DimeSchedulerApiResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Core.WebApiException"
                }
              }
            }
          }
        }
      }
    },
    "/tokens": {
      "post": {
        "tags": [
          "Token"
        ],
        "operationId": "getToken",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Dime.Scheduler.Web.Models.LoginViewModel"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/user": {
      "post": {
        "tags": [
          "User"
        ],
        "summary": "Create a new user",
        "operationId": "createApiUser",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Dime.Scheduler.ApiUser"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Core.UserAdministrationDto"
                  }
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "Core.ActionUrlDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "text": {
            "type": "string",
            "description": "The text to display",
            "nullable": true
          },
          "url": {
            "type": "string",
            "description": "The URI",
            "nullable": true
          },
          "urlType": {
            "type": "integer",
            "description": "The type of action URI",
            "format": "int32"
          },
          "requestType": {
            "type": "integer",
            "description": "The type of request",
            "format": "int32"
          },
          "sourceApp": {
            "type": "string",
            "description": "The source app",
            "nullable": true
          },
          "sourceType": {
            "type": "string",
            "description": "The source type",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Core.AppointmentContainerDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64"
          },
          "clientId": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "containerId": {
            "type": "integer",
            "format": "int64"
          },
          "appointmentId": {
            "type": "integer",
            "format": "int64"
          },
          "index": {
            "type": "integer",
            "format": "int32"
          },
          "appointment": {
            "$ref": "#/components/schemas/Core.AppointmentDto"
          }
        },
        "additionalProperties": false
      },
      "Core.AppointmentDependencyDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "from": {
            "type": "integer",
            "format": "int64"
          },
          "fromAppointment": {
            "$ref": "#/components/schemas/Core.AppointmentDto"
          },
          "to": {
            "type": "integer",
            "format": "int64"
          },
          "toAppointment": {
            "$ref": "#/components/schemas/Core.AppointmentDto"
          },
          "type": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "cls": {
            "type": "string",
            "nullable": true
          },
          "lag": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "lagUnit": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Core.AppointmentDto": {
        "type": "object",
        "properties": {
          "rowVersion": {
            "type": "string",
            "format": "byte",
            "nullable": true
          },
          "locked": {
            "type": "boolean"
          },
          "id": {
            "type": "integer",
            "format": "int64"
          },
          "appointmentNo": {
            "type": "string",
            "nullable": true
          },
          "externalId": {
            "type": "integer",
            "format": "int64"
          },
          "startDate": {
            "type": "string",
            "format": "date-time"
          },
          "endDate": {
            "type": "string",
            "format": "date-time"
          },
          "subject": {
            "type": "string",
            "nullable": true
          },
          "body": {
            "type": "string",
            "nullable": true
          },
          "draggable": {
            "type": "boolean"
          },
          "resizable": {
            "type": "boolean"
          },
          "enabled": {
            "type": "boolean"
          },
          "isAllDayEvent": {
            "type": "boolean"
          },
          "planningQty": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "planningUOM": {
            "type": "string",
            "nullable": true
          },
          "appointmentGuid": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "importance": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "tags": {
            "type": "string",
            "nullable": true
          },
          "nonWorkingTime": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "useFixPlanningQty": {
            "type": "boolean"
          },
          "jobNo": {
            "type": "string",
            "nullable": true
          },
          "sourceApp": {
            "type": "string",
            "nullable": true
          },
          "sourceType": {
            "type": "string",
            "nullable": true
          },
          "backofficeID": {
            "type": "string",
            "nullable": true
          },
          "backofficeParentID": {
            "type": "string",
            "nullable": true
          },
          "sentFromBackoffice": {
            "type": "boolean"
          },
          "sentFromExchange": {
            "type": "boolean"
          },
          "roundToUOM": {
            "type": "boolean"
          },
          "planningUOMConversion": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "isLinkedAppointment": {
            "type": "boolean"
          },
          "preamble": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "progress": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "postamble": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "confirmationStatus": {
            "$ref": "#/components/schemas/Models.ConfirmationStatus"
          },
          "notificationLevel": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32",
              "nullable": true
            },
            "nullable": true,
            "readOnly": true
          },
          "severity": {
            "$ref": "#/components/schemas/Models.Severity"
          },
          "createdDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "createdUser": {
            "type": "string",
            "nullable": true
          },
          "lastModifiedDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "lastModifiedUser": {
            "type": "string",
            "nullable": true
          },
          "ignoreCalendars": {
            "type": "boolean"
          },
          "recurrenceRule": {
            "type": "string",
            "nullable": true
          },
          "recurrenceId": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "isRecurrenceException": {
            "type": "boolean"
          },
          "recurrenceStartDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "resources": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Core.AssignmentDto"
            },
            "nullable": true
          },
          "task": {
            "$ref": "#/components/schemas/Core.TaskDto"
          },
          "category": {
            "$ref": "#/components/schemas/Core.CategoryDto"
          },
          "timeMarker": {
            "$ref": "#/components/schemas/Core.TimeMarkerDto"
          },
          "contextualActions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Core.AppointmentUrlDto"
            },
            "nullable": true
          },
          "fieldValues": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Core.AppointmentFieldValueDto"
            },
            "nullable": true
          },
          "job": {
            "$ref": "#/components/schemas/Models.IIndicatedEntity"
          },
          "taskFilterValues": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Models.TaskFilterValue"
            },
            "nullable": true,
            "readOnly": true
          },
          "timeMarkerId": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "readOnly": true
          },
          "categoryId": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "Core.AppointmentFieldDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "displayName": {
            "type": "string",
            "nullable": true
          },
          "code": {
            "type": "string",
            "nullable": true
          },
          "type": {
            "type": "integer",
            "format": "int32"
          },
          "dataIndex": {
            "type": "string",
            "nullable": true
          },
          "required": {
            "type": "boolean"
          },
          "default": {
            "type": "string",
            "nullable": true
          },
          "options": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Core.AppointmentFieldOptionDto"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Core.AppointmentFieldOptionDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "code": {
            "type": "string",
            "nullable": true
          },
          "fieldId": {
            "type": "integer",
            "format": "int32"
          },
          "default": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "Core.AppointmentFieldValueDto": {
        "type": "object",
        "properties": {
          "appointmentId": {
            "type": "integer",
            "format": "int64"
          },
          "value": {
            "type": "string",
            "nullable": true
          },
          "modified": {
            "type": "boolean"
          },
          "isDateTime": {
            "type": "boolean"
          },
          "appointmentFieldId": {
            "type": "integer",
            "format": "int32"
          },
          "appointmentField": {
            "$ref": "#/components/schemas/Core.AppointmentFieldDto"
          }
        },
        "additionalProperties": false
      },
      "Core.AppointmentMap": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64"
          },
          "guid": {
            "type": "string",
            "format": "uuid"
          }
        },
        "additionalProperties": false
      },
      "Core.AppointmentUrlDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64"
          },
          "appointmentId": {
            "type": "integer",
            "format": "int64"
          },
          "url": {
            "type": "string",
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Core.AssignmentDto": {
        "type": "object",
        "properties": {
          "rowVersion": {
            "type": "string",
            "format": "byte",
            "nullable": true
          },
          "locked": {
            "type": "boolean"
          },
          "id": {
            "type": "integer",
            "format": "int64"
          },
          "eventId": {
            "type": "integer",
            "format": "int64"
          },
          "previousEventId": {
            "type": "integer",
            "format": "int64"
          },
          "resourceId": {
            "type": "integer",
            "format": "int32"
          },
          "enabled": {
            "type": "boolean"
          },
          "removed": {
            "type": "boolean"
          },
          "derivedFromResourceId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "taskAssignmentId": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Core.CalendarDayDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "type": {
            "type": "string",
            "nullable": true
          },
          "date": {
            "type": "string",
            "nullable": true
          },
          "baseDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "weekday": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "overrideStartDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "formattedOverrideStartDate": {
            "type": "string",
            "nullable": true
          },
          "overrideEndDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "formattedOverrideEndDate": {
            "type": "string",
            "nullable": true
          },
          "color": {
            "type": "string",
            "nullable": true
          },
          "isWorkingDay": {
            "type": "boolean"
          },
          "calendarId": {
            "type": "integer",
            "format": "int32"
          },
          "mainDay": {
            "$ref": "#/components/schemas/Core.CalendarDayDto"
          },
          "availability": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Core.CalendarDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "code": {
            "type": "string",
            "nullable": true
          },
          "default": {
            "type": "boolean"
          },
          "hoursPerDay": {
            "type": "integer",
            "format": "int32"
          },
          "daysPerWeek": {
            "type": "integer",
            "format": "int32"
          },
          "daysPerMonth": {
            "type": "integer",
            "format": "int32"
          },
          "weekendFirstDay": {
            "type": "integer",
            "format": "int32"
          },
          "weekendSecondDay": {
            "type": "integer",
            "format": "int32"
          },
          "weekendsAreWorkdays": {
            "type": "boolean"
          },
          "leaf": {
            "type": "boolean"
          },
          "expanded": {
            "type": "boolean"
          },
          "defaultAvailability": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "days": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Core.CalendarDayDto"
            },
            "nullable": true
          },
          "children": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Core.CalendarDto"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Core.CategoryDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "color": {
            "type": "string",
            "nullable": true
          },
          "outlookCategory": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Core.ContainerDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64"
          },
          "clientId": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "color": {
            "type": "string",
            "nullable": true
          },
          "handleIsLocked": {
            "type": "boolean"
          },
          "handleDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "shift": {
            "type": "integer",
            "format": "int32"
          },
          "appointmentContainers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Core.AppointmentContainerDto"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Core.ContainerTaskDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64"
          },
          "taskType": {
            "type": "integer",
            "format": "int32"
          },
          "shortDescription": {
            "type": "string",
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "taskNo": {
            "type": "string",
            "nullable": true
          },
          "type": {
            "type": "string",
            "nullable": true
          },
          "serviceNo": {
            "type": "string",
            "nullable": true
          },
          "serviceGroup": {
            "type": "string",
            "nullable": true
          },
          "serviceClass": {
            "type": "string",
            "nullable": true
          },
          "serviceSerialNo": {
            "type": "string",
            "nullable": true
          },
          "serviceName": {
            "type": "string",
            "nullable": true
          },
          "irisFault": {
            "type": "string",
            "nullable": true
          },
          "irisSymptom": {
            "type": "string",
            "nullable": true
          },
          "irisArea": {
            "type": "string",
            "nullable": true
          },
          "irisReason": {
            "type": "string",
            "nullable": true
          },
          "irisResolution": {
            "type": "string",
            "nullable": true
          },
          "skill1": {
            "type": "string",
            "nullable": true
          },
          "skill2": {
            "type": "string",
            "nullable": true
          },
          "skill3": {
            "type": "string",
            "nullable": true
          },
          "contractNo": {
            "type": "string",
            "nullable": true
          },
          "contractType": {
            "type": "string",
            "nullable": true
          },
          "contractDescription": {
            "type": "string",
            "nullable": true
          },
          "contractStartDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "contractEndDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "partsWarrantyStartDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "partsWarrantyEndDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "laborWarrantyStartDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "laborWarrantyEndDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "importance": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "status": {
            "type": "string",
            "nullable": true
          },
          "expectedResponseDateTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "actualResponseDateTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "requestedStartDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "requestedEndDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "requestedStartTime": {
            "type": "string",
            "format": "date-span",
            "nullable": true
          },
          "requestedEndTime": {
            "type": "string",
            "format": "date-span",
            "nullable": true
          },
          "confirmedStartDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "confirmedEndDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "actualStartDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "actualEndDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "locationDescription": {
            "type": "string",
            "nullable": true
          },
          "duration": {
            "type": "number",
            "format": "double"
          },
          "durationUnit": {
            "$ref": "#/components/schemas/Models.DurationUnit"
          },
          "timestamp": {
            "type": "string",
            "format": "byte",
            "nullable": true
          },
          "subject": {
            "type": "string",
            "nullable": true
          },
          "body": {
            "type": "string",
            "nullable": true
          },
          "infiniteTask": {
            "type": "boolean"
          },
          "taskOpenAsOf": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "taskOpenTill": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "requiredTotalDuration": {
            "type": "string",
            "format": "date-span",
            "nullable": true
          },
          "requiredNoResources": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "appointmentEarliestAllowed": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "appointmentLatestAllowed": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "freeText1": {
            "type": "string",
            "nullable": true
          },
          "freeText2": {
            "type": "string",
            "nullable": true
          },
          "freeText3": {
            "type": "string",
            "nullable": true
          },
          "freeText4": {
            "type": "string",
            "nullable": true
          },
          "freeText5": {
            "type": "string",
            "nullable": true
          },
          "freeText6": {
            "type": "string",
            "nullable": true
          },
          "freeText7": {
            "type": "string",
            "nullable": true
          },
          "freeText8": {
            "type": "string",
            "nullable": true
          },
          "freeText9": {
            "type": "string",
            "nullable": true
          },
          "freeText10": {
            "type": "string",
            "nullable": true
          },
          "freeText11": {
            "type": "string",
            "nullable": true
          },
          "freeText12": {
            "type": "string",
            "nullable": true
          },
          "freeText13": {
            "type": "string",
            "nullable": true
          },
          "freeText14": {
            "type": "string",
            "nullable": true
          },
          "freeText15": {
            "type": "string",
            "nullable": true
          },
          "freeText16": {
            "type": "string",
            "nullable": true
          },
          "freeText17": {
            "type": "string",
            "nullable": true
          },
          "freeText18": {
            "type": "string",
            "nullable": true
          },
          "freeText19": {
            "type": "string",
            "nullable": true
          },
          "freeText20": {
            "type": "string",
            "nullable": true
          },
          "freeDecimal1": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "freeDecimal2": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "freeDecimal3": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "freeDecimal4": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "freeDecimal5": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "freeDate1": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "freeDate2": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "freeDate3": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "freeDate4": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "freeDate5": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "freeBit1": {
            "type": "boolean"
          },
          "freeBit2": {
            "type": "boolean"
          },
          "freeBit3": {
            "type": "boolean"
          },
          "freeBit4": {
            "type": "boolean"
          },
          "freeBit5": {
            "type": "boolean"
          },
          "preventSynch": {
            "type": "boolean"
          },
          "durationInSeconds": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "certificateNo": {
            "type": "string",
            "nullable": true
          },
          "requiredTotalDurationInSeconds": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "actualTotalDurationInSeconds": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "percentDone": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "actualNoResources": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "remainingDurationInSeconds": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "remainingNoResources": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "displayRequiredDuration": {
            "type": "string",
            "nullable": true
          },
          "displayActualDuration": {
            "type": "string",
            "nullable": true
          },
          "displayRemainingDuration": {
            "type": "string",
            "nullable": true
          },
          "doNotCountAppointmentResource": {
            "type": "boolean"
          },
          "isOpenTask": {
            "type": "boolean"
          },
          "isComplete": {
            "type": "boolean"
          },
          "planningUOM": {
            "type": "string",
            "nullable": true
          },
          "planningUOMConversion": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "planningQty": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "useFixPlanningQty": {
            "type": "boolean"
          },
          "roundToUOM": {
            "type": "boolean"
          },
          "enabled": {
            "type": "boolean"
          },
          "queryBuilderFilter": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "bulkPlanningQty": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "ignoreCalendars": {
            "type": "boolean"
          },
          "jobId": {
            "type": "integer",
            "format": "int64"
          },
          "job": {
            "$ref": "#/components/schemas/Core.JobDto"
          },
          "timeMarkerId": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "readOnly": true
          },
          "timeMarker": {
            "$ref": "#/components/schemas/Core.TimeMarkerDto"
          },
          "categoryId": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "readOnly": true
          },
          "category": {
            "$ref": "#/components/schemas/Core.CategoryDto"
          },
          "pinId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "pin": {
            "$ref": "#/components/schemas/Core.PinDto"
          },
          "tags": {
            "type": "string",
            "nullable": true
          },
          "appointmentTemplateId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "filterValues": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Core.TaskFilterValueDto"
            },
            "nullable": true
          },
          "taskUrls": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Core.TaskUrlDto"
            },
            "nullable": true
          },
          "containerId": {
            "type": "integer",
            "format": "int64"
          },
          "index": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "Core.FilterGroupDto": {
        "type": "object",
        "properties": {
          "groupId": {
            "type": "integer",
            "format": "int32"
          },
          "label": {
            "type": "string",
            "nullable": true
          },
          "values": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Core.FilterValueDto"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Core.FilterValueDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "value": {
            "type": "string",
            "nullable": true
          },
          "filterGroup": {
            "type": "string",
            "nullable": true
          },
          "filterGroupId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Core.JobDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64"
          },
          "sourceApp": {
            "type": "string",
            "nullable": true
          },
          "sourceType": {
            "type": "string",
            "nullable": true
          },
          "jobNo": {
            "type": "string",
            "nullable": true
          },
          "shortDescription": {
            "type": "string",
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "type": {
            "type": "string",
            "nullable": true
          },
          "customerNo": {
            "type": "string",
            "nullable": true
          },
          "customerName": {
            "type": "string",
            "nullable": true
          },
          "customerAddress": {
            "type": "string",
            "nullable": true
          },
          "customerAddressGeoLong": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "customerAddressGeoLat": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "customerPhone": {
            "type": "string",
            "nullable": true
          },
          "customerMobilePhone": {
            "type": "string",
            "nullable": true
          },
          "customerEmail": {
            "type": "string",
            "nullable": true
          },
          "contactNo": {
            "type": "string",
            "nullable": true
          },
          "contactName": {
            "type": "string",
            "nullable": true
          },
          "contactAddress": {
            "type": "string",
            "nullable": true
          },
          "contactAddressGeoLong": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "contactAddressGeoLat": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "contactPhone": {
            "type": "string",
            "nullable": true
          },
          "contactEmail": {
            "type": "string",
            "nullable": true
          },
          "siteNo": {
            "type": "string",
            "nullable": true
          },
          "siteName": {
            "type": "string",
            "nullable": true
          },
          "siteAddress": {
            "type": "string",
            "nullable": true
          },
          "siteAddressGeoLong": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "siteAddressGeoLat": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "sitePhone": {
            "type": "string",
            "nullable": true
          },
          "siteEmail": {
            "type": "string",
            "nullable": true
          },
          "siteStreetNo": {
            "type": "string",
            "nullable": true
          },
          "siteStreet": {
            "type": "string",
            "nullable": true
          },
          "sitePostcode": {
            "type": "string",
            "nullable": true
          },
          "siteRegion": {
            "type": "string",
            "nullable": true
          },
          "siteCity": {
            "type": "string",
            "nullable": true
          },
          "siteCounty": {
            "type": "string",
            "nullable": true
          },
          "siteState": {
            "type": "string",
            "nullable": true
          },
          "siteCountry": {
            "type": "string",
            "nullable": true
          },
          "siteFromNo": {
            "type": "string",
            "nullable": true
          },
          "siteFromName": {
            "type": "string",
            "nullable": true
          },
          "siteFromAddress": {
            "type": "string",
            "nullable": true
          },
          "siteFromAddressGeoLong": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "siteFromAddressGeoLat": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "siteFromPhone": {
            "type": "string",
            "nullable": true
          },
          "siteFromEmail": {
            "type": "string",
            "nullable": true
          },
          "siteFromStreetNo": {
            "type": "string",
            "nullable": true
          },
          "siteFromStreet": {
            "type": "string",
            "nullable": true
          },
          "siteFromRegion": {
            "type": "string",
            "nullable": true
          },
          "siteFromPostcode": {
            "type": "string",
            "nullable": true
          },
          "siteFromCity": {
            "type": "string",
            "nullable": true
          },
          "siteFromCounty": {
            "type": "string",
            "nullable": true
          },
          "siteFromState": {
            "type": "string",
            "nullable": true
          },
          "siteFromCountry": {
            "type": "string",
            "nullable": true
          },
          "billNo": {
            "type": "string",
            "nullable": true
          },
          "billName": {
            "type": "string",
            "nullable": true
          },
          "billAddress": {
            "type": "string",
            "nullable": true
          },
          "billAddressGeoLong": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "billAddressGeoLat": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "billPhone": {
            "type": "string",
            "nullable": true
          },
          "billEmail": {
            "type": "string",
            "nullable": true
          },
          "billRegion": {
            "type": "string",
            "nullable": true
          },
          "importance": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "creationDateTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "creator": {
            "type": "string",
            "nullable": true
          },
          "customerReference": {
            "type": "string",
            "nullable": true
          },
          "language": {
            "type": "string",
            "nullable": true
          },
          "responsible": {
            "type": "string",
            "nullable": true
          },
          "siteFormattedAddress": {
            "type": "string",
            "nullable": true
          },
          "enableManualSelection": {
            "type": "boolean"
          },
          "freeText1": {
            "type": "string",
            "nullable": true
          },
          "freeText2": {
            "type": "string",
            "nullable": true
          },
          "freeText3": {
            "type": "string",
            "nullable": true
          },
          "freeText4": {
            "type": "string",
            "nullable": true
          },
          "freeText5": {
            "type": "string",
            "nullable": true
          },
          "freeText6": {
            "type": "string",
            "nullable": true
          },
          "freeText7": {
            "type": "string",
            "nullable": true
          },
          "freeText8": {
            "type": "string",
            "nullable": true
          },
          "freeText9": {
            "type": "string",
            "nullable": true
          },
          "freeText10": {
            "type": "string",
            "nullable": true
          },
          "freeText11": {
            "type": "string",
            "nullable": true
          },
          "freeText12": {
            "type": "string",
            "nullable": true
          },
          "freeText13": {
            "type": "string",
            "nullable": true
          },
          "freeText14": {
            "type": "string",
            "nullable": true
          },
          "freeText15": {
            "type": "string",
            "nullable": true
          },
          "freeText16": {
            "type": "string",
            "nullable": true
          },
          "freeText17": {
            "type": "string",
            "nullable": true
          },
          "freeText18": {
            "type": "string",
            "nullable": true
          },
          "freeText19": {
            "type": "string",
            "nullable": true
          },
          "freeText20": {
            "type": "string",
            "nullable": true
          },
          "freeDecimal1": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "freeDecimal2": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "freeDecimal3": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "freeDecimal4": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "freeDecimal5": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "freeDate1": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "freeDate2": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "freeDate3": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "freeDate4": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "freeDate5": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "freeBit1": {
            "type": "boolean"
          },
          "freeBit2": {
            "type": "boolean"
          },
          "freeBit3": {
            "type": "boolean"
          },
          "freeBit4": {
            "type": "boolean"
          },
          "freeBit5": {
            "type": "boolean"
          },
          "timeMarkerId": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "readOnly": true
          },
          "timeMarker": {
            "$ref": "#/components/schemas/Core.TimeMarkerDto"
          },
          "categoryId": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "readOnly": true
          },
          "category": {
            "$ref": "#/components/schemas/Core.CategoryDto"
          },
          "pinId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "pin": {
            "$ref": "#/components/schemas/Core.PinDto"
          },
          "xCoordinate": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "yCoordinate": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "availableInGantt": {
            "type": "boolean"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "readOnly": {
            "type": "boolean"
          },
          "allowDependencies": {
            "type": "boolean"
          },
          "note": {
            "type": "string",
            "nullable": true
          },
          "startDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "endDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Core.LocationInput": {
        "type": "object",
        "properties": {
          "coordinates": {
            "$ref": "#/components/schemas/TurtleRoute.GeoCoordinate"
          },
          "address": {
            "type": "string",
            "description": "Address string to be geocoded to coordinates",
            "nullable": true
          },
          "country": {
            "type": "string",
            "description": "Country code for geocoding (e.g., US, CA, GB)",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Core.NotificationDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64"
          },
          "appointmentId": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "mboc_Id": {
            "type": "string",
            "nullable": true
          },
          "type": {
            "type": "string",
            "nullable": true
          },
          "level": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "code": {
            "type": "string",
            "nullable": true
          },
          "text": {
            "type": "string",
            "nullable": true
          },
          "date": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "jobId": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "taskId": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Core.PinDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "color": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Core.ReassignMode": {
        "enum": [
          0,
          1
        ],
        "type": "integer",
        "format": "int32",
        "x-enumNames": [
          "KeepDateTime",
          "KeepResource"
        ],
        "x-enum-varnames": [
          "KeepDateTime",
          "KeepResource"
        ]
      },
      "Core.RecommendationOptions": {
        "type": "object",
        "properties": {
          "granularity": {
            "type": "string",
            "description": "Optional time slot granularity in ISO 8601 format (e.g., PT15M, PT30M, PT1H). Creates fixed blocks when provided. When not provided, raw available slots are returned without chunking.",
            "nullable": true
          },
          "locationMode": {
            "type": "string",
            "description": "Location mode for distance calculation: 'home' or 'actual' (current GPS location)",
            "nullable": true
          },
          "maxResults": {
            "type": "integer",
            "description": "Maximum number of slots returned (sorted by score). Defaults to 25 when omitted.",
            "format": "int32",
            "nullable": true
          },
          "maxDistanceKm": {
            "type": "number",
            "description": "Maximum distance in kilometers for resource filtering",
            "format": "double",
            "nullable": true
          },
          "timeZone": {
            "type": "string",
            "description": "IANA timezone identifier for date/time interpretation (e.g., Europe/Brussels, America/New_York)",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Core.RecommendationRequest": {
        "required": [
          "endDate",
          "startDate"
        ],
        "type": "object",
        "properties": {
          "startDate": {
            "type": "string",
            "description": "Start date and time for the availability search window",
            "format": "date-time"
          },
          "endDate": {
            "type": "string",
            "description": "End date and time for the availability search window",
            "format": "date-time"
          },
          "resourceNos": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Optional list of ResourceNos to restrict the search to; bypasses requirement/type filters when set",
            "nullable": true
          },
          "requirements": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Optional list of requirement names (filter values) that resources must match",
            "nullable": true
          },
          "resourceTypes": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Optional list of resource type names that resources must match",
            "nullable": true
          },
          "excludedResourceNos": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Optional list of ResourceNos to exclude from the candidate pool, applied after other selection rules",
            "nullable": true
          },
          "duration": {
            "type": "string",
            "description": "Required duration for the task in ISO 8601 format (e.g., PT2H, PT30M)",
            "nullable": true
          },
          "location": {
            "$ref": "#/components/schemas/Core.LocationInput"
          },
          "options": {
            "$ref": "#/components/schemas/Core.RecommendationOptions"
          },
          "scoring": {
            "$ref": "#/components/schemas/Core.ScoringRequest"
          }
        },
        "additionalProperties": false
      },
      "Core.ResourceCapacityDto": {
        "type": "object",
        "properties": {
          "date": {
            "type": "string",
            "format": "date"
          },
          "quantity": {
            "type": "number",
            "format": "double"
          },
          "resourceId": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "Core.ResourceDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "sourceApp": {
            "type": "string",
            "nullable": true
          },
          "sourceType": {
            "type": "string",
            "nullable": true
          },
          "displayName": {
            "type": "string",
            "nullable": true
          },
          "department": {
            "type": "string",
            "nullable": true
          },
          "resourceNo": {
            "type": "string",
            "nullable": true
          },
          "email": {
            "type": "string",
            "nullable": true
          },
          "phone": {
            "type": "string",
            "nullable": true
          },
          "mobilePhone": {
            "type": "string",
            "nullable": true
          },
          "replacementResource": {
            "type": "boolean"
          },
          "fieldServiceEmail": {
            "type": "string",
            "nullable": true
          },
          "personalEmail": {
            "type": "string",
            "nullable": true
          },
          "gpsTrackingResourceNo": {
            "type": "string",
            "nullable": true
          },
          "homeAddress": {
            "type": "string",
            "nullable": true
          },
          "homeAddressGeoLong": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "homeAddressGeoLat": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "homePhone": {
            "type": "string",
            "nullable": true
          },
          "homeEmail": {
            "type": "string",
            "nullable": true
          },
          "homeStreet": {
            "type": "string",
            "nullable": true
          },
          "homeStreetNo": {
            "type": "string",
            "nullable": true
          },
          "homeRegion": {
            "type": "string",
            "nullable": true
          },
          "homePostcode": {
            "type": "string",
            "nullable": true
          },
          "homeCity": {
            "type": "string",
            "nullable": true
          },
          "homeCounty": {
            "type": "string",
            "nullable": true
          },
          "homeState": {
            "type": "string",
            "nullable": true
          },
          "homeCountry": {
            "type": "string",
            "nullable": true
          },
          "teamCode": {
            "type": "string",
            "nullable": true
          },
          "teamName": {
            "type": "string",
            "nullable": true
          },
          "teamType": {
            "type": "string",
            "nullable": true
          },
          "teamSort": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "teamMemberType": {
            "type": "string",
            "nullable": true
          },
          "teamMemberSort": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "groupBehavior": {
            "$ref": "#/components/schemas/Models.GroupBehavior"
          },
          "capacityMode": {
            "$ref": "#/components/schemas/Models.CapacityMode"
          },
          "freeText1": {
            "type": "string",
            "nullable": true
          },
          "freeText2": {
            "type": "string",
            "nullable": true
          },
          "freeText3": {
            "type": "string",
            "nullable": true
          },
          "freeText4": {
            "type": "string",
            "nullable": true
          },
          "freeText5": {
            "type": "string",
            "nullable": true
          },
          "freeText6": {
            "type": "string",
            "nullable": true
          },
          "freeText7": {
            "type": "string",
            "nullable": true
          },
          "freeText8": {
            "type": "string",
            "nullable": true
          },
          "freeText9": {
            "type": "string",
            "nullable": true
          },
          "freeText10": {
            "type": "string",
            "nullable": true
          },
          "freeText11": {
            "type": "string",
            "nullable": true
          },
          "freeText12": {
            "type": "string",
            "nullable": true
          },
          "freeText13": {
            "type": "string",
            "nullable": true
          },
          "freeText14": {
            "type": "string",
            "nullable": true
          },
          "freeText15": {
            "type": "string",
            "nullable": true
          },
          "freeText16": {
            "type": "string",
            "nullable": true
          },
          "freeText17": {
            "type": "string",
            "nullable": true
          },
          "freeText18": {
            "type": "string",
            "nullable": true
          },
          "freeText19": {
            "type": "string",
            "nullable": true
          },
          "freeText20": {
            "type": "string",
            "nullable": true
          },
          "freeDecimal1": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "freeDecimal2": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "freeDecimal3": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "freeDecimal4": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "freeDecimal5": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "freeDecimal6": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "freeDecimal7": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "freeDecimal8": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "freeDecimal9": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "freeDecimal10": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "freeDate1": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "freeDate2": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "freeDate3": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "freeDate4": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "freeDate5": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "freeBit1": {
            "type": "boolean"
          },
          "freeBit2": {
            "type": "boolean"
          },
          "freeBit3": {
            "type": "boolean"
          },
          "freeBit4": {
            "type": "boolean"
          },
          "freeBit5": {
            "type": "boolean"
          },
          "doNotShow": {
            "type": "boolean"
          },
          "inServiceFrom": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "inServiceTill": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "exchangeIntegrationEnabled": {
            "type": "boolean"
          },
          "gpsTrackingEnabled": {
            "type": "boolean"
          },
          "bulkPlanning": {
            "type": "boolean"
          },
          "bulkCapacity": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "exchangeIntegrationEnabledByUser": {
            "type": "boolean"
          },
          "showAs": {
            "type": "string",
            "nullable": true
          },
          "sensitivity": {
            "type": "string",
            "nullable": true
          },
          "excludeFromBudgetCalculation": {
            "type": "boolean"
          },
          "rowVersion": {
            "type": "string",
            "format": "byte",
            "nullable": true
          },
          "synchronize": {
            "type": "boolean",
            "nullable": true
          },
          "locked": {
            "type": "boolean"
          },
          "isAssignmentForEvent": {
            "type": "boolean"
          },
          "hasAssignments": {
            "type": "boolean"
          },
          "resourceTypeId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "resourceType": {
            "$ref": "#/components/schemas/Core.ResourceTypeDto"
          },
          "pinId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "pin": {
            "$ref": "#/components/schemas/Core.PinDto"
          },
          "resourceFilterValues": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Core.ResourceFilterValueDto"
            },
            "nullable": true
          },
          "resourceUrls": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Core.ResourceUrlDto"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Core.ResourceFilterValueDto": {
        "type": "object",
        "properties": {
          "filterGroupId": {
            "type": "integer",
            "format": "int32"
          },
          "filterValueId": {
            "type": "integer",
            "format": "int32"
          },
          "filterValue": {
            "$ref": "#/components/schemas/Core.FilterValueDto"
          },
          "resourceId": {
            "type": "integer",
            "format": "int32"
          },
          "resource": {
            "$ref": "#/components/schemas/Core.ResourceDto"
          }
        },
        "additionalProperties": false
      },
      "Core.ResourceTypeDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "displayName": {
            "type": "string",
            "nullable": true
          },
          "allowMultipleSelection": {
            "type": "boolean"
          },
          "selectionWithCertificate": {
            "type": "boolean"
          },
          "hideClearFunction": {
            "type": "boolean"
          },
          "enableResourceSelection": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "Core.ResourceUrlDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64"
          },
          "url": {
            "type": "string",
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "resourceId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Core.ScoringRequest": {
        "type": "object",
        "properties": {
          "weights": {
            "type": "object",
            "additionalProperties": {
              "type": "number",
              "format": "double"
            },
            "description": "Map of scorer key to weight. Unknown keys are rejected; weights are normalised server-side.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Core.SetupConfigurationImportDto": {
        "type": "object",
        "properties": {
          "key": {
            "type": "string",
            "nullable": true
          },
          "value": {
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Core.SetupImportPayloadDto": {
        "type": "object",
        "properties": {
          "profiles": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Core.SetupProfileImportDto"
            },
            "nullable": true
          },
          "layouts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Core.SetupLayoutImportDto"
            },
            "nullable": true
          },
          "profileLayouts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Core.SetupProfileLayoutImportDto"
            },
            "nullable": true
          },
          "users": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Core.SetupUserImportDto"
            },
            "nullable": true
          },
          "configuration": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Core.SetupConfigurationImportDto"
            },
            "nullable": true
          },
          "owner": {
            "type": "string",
            "nullable": true
          },
          "notificationEmail": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Core.SetupLayoutImportDto": {
        "type": "object",
        "properties": {
          "context": {
            "type": "string",
            "nullable": true
          },
          "grid": {
            "type": "string",
            "nullable": true
          },
          "value": {
            "type": "string",
            "nullable": true
          },
          "default": {
            "type": "boolean"
          },
          "public": {
            "type": "boolean"
          },
          "userGroup": {
            "type": "string",
            "nullable": true
          },
          "isOwner": {
            "type": "boolean"
          },
          "isNew": {
            "type": "boolean"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "code": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Core.SetupProfileImportDto": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "nullable": true
          },
          "code": {
            "type": "string",
            "nullable": true
          },
          "layout": {
            "type": "string",
            "nullable": true
          },
          "color": {
            "type": "string",
            "nullable": true
          },
          "theme": {
            "type": "string",
            "nullable": true
          },
          "public": {
            "type": "boolean"
          },
          "userGroup": {
            "type": "string",
            "nullable": true
          },
          "snapMode": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "snapValue": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "rangeMode": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "rangeValue": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "startMode": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "startValue": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "startTime": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "endTime": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "unitOfDistance": {
            "type": "string",
            "nullable": true
          },
          "autoRouteCalculation": {
            "type": "boolean",
            "nullable": true
          },
          "showSequenceIndicators": {
            "type": "boolean",
            "nullable": true
          },
          "routeProfile": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Core.SetupProfileLayoutImportDto": {
        "type": "object",
        "properties": {
          "profileCode": {
            "type": "string",
            "nullable": true
          },
          "layoutCode": {
            "type": "string",
            "nullable": true
          },
          "layoutContext": {
            "type": "string",
            "nullable": true
          },
          "default": {
            "type": "boolean"
          },
          "public": {
            "type": "boolean"
          },
          "name": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Core.SetupUserImportDto": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "nullable": true
          },
          "email": {
            "type": "string",
            "nullable": true
          },
          "isMSEntraID": {
            "type": "boolean"
          },
          "language": {
            "type": "string",
            "nullable": true
          },
          "timeZone": {
            "type": "string",
            "nullable": true
          },
          "profiles": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Core.SetupUserProfileImportDto"
            },
            "nullable": true
          },
          "roles": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "timeMarkers": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "categories": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "filterValues": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Core.SetupUserProfileImportDto": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "nullable": true
          },
          "default": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "Core.TagDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "code": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "iconSet": {
            "type": "string",
            "nullable": true
          },
          "iconName": {
            "type": "string",
            "nullable": true
          },
          "color": {
            "type": "string",
            "nullable": true
          },
          "hiddenToUser": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "Core.TaskDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64"
          },
          "taskType": {
            "type": "integer",
            "format": "int32"
          },
          "shortDescription": {
            "type": "string",
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "taskNo": {
            "type": "string",
            "nullable": true
          },
          "type": {
            "type": "string",
            "nullable": true
          },
          "serviceNo": {
            "type": "string",
            "nullable": true
          },
          "serviceGroup": {
            "type": "string",
            "nullable": true
          },
          "serviceClass": {
            "type": "string",
            "nullable": true
          },
          "serviceSerialNo": {
            "type": "string",
            "nullable": true
          },
          "serviceName": {
            "type": "string",
            "nullable": true
          },
          "irisFault": {
            "type": "string",
            "nullable": true
          },
          "irisSymptom": {
            "type": "string",
            "nullable": true
          },
          "irisArea": {
            "type": "string",
            "nullable": true
          },
          "irisReason": {
            "type": "string",
            "nullable": true
          },
          "irisResolution": {
            "type": "string",
            "nullable": true
          },
          "skill1": {
            "type": "string",
            "nullable": true
          },
          "skill2": {
            "type": "string",
            "nullable": true
          },
          "skill3": {
            "type": "string",
            "nullable": true
          },
          "contractNo": {
            "type": "string",
            "nullable": true
          },
          "contractType": {
            "type": "string",
            "nullable": true
          },
          "contractDescription": {
            "type": "string",
            "nullable": true
          },
          "contractStartDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "contractEndDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "partsWarrantyStartDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "partsWarrantyEndDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "laborWarrantyStartDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "laborWarrantyEndDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "importance": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "status": {
            "type": "string",
            "nullable": true
          },
          "expectedResponseDateTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "actualResponseDateTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "requestedStartDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "requestedEndDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "requestedStartTime": {
            "type": "string",
            "format": "date-span",
            "nullable": true
          },
          "requestedEndTime": {
            "type": "string",
            "format": "date-span",
            "nullable": true
          },
          "confirmedStartDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "confirmedEndDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "actualStartDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "actualEndDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "locationDescription": {
            "type": "string",
            "nullable": true
          },
          "duration": {
            "type": "number",
            "format": "double"
          },
          "durationUnit": {
            "$ref": "#/components/schemas/Models.DurationUnit"
          },
          "timestamp": {
            "type": "string",
            "format": "byte",
            "nullable": true
          },
          "subject": {
            "type": "string",
            "nullable": true
          },
          "body": {
            "type": "string",
            "nullable": true
          },
          "infiniteTask": {
            "type": "boolean"
          },
          "taskOpenAsOf": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "taskOpenTill": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "requiredTotalDuration": {
            "type": "string",
            "format": "date-span",
            "nullable": true
          },
          "requiredNoResources": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "appointmentEarliestAllowed": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "appointmentLatestAllowed": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "freeText1": {
            "type": "string",
            "nullable": true
          },
          "freeText2": {
            "type": "string",
            "nullable": true
          },
          "freeText3": {
            "type": "string",
            "nullable": true
          },
          "freeText4": {
            "type": "string",
            "nullable": true
          },
          "freeText5": {
            "type": "string",
            "nullable": true
          },
          "freeText6": {
            "type": "string",
            "nullable": true
          },
          "freeText7": {
            "type": "string",
            "nullable": true
          },
          "freeText8": {
            "type": "string",
            "nullable": true
          },
          "freeText9": {
            "type": "string",
            "nullable": true
          },
          "freeText10": {
            "type": "string",
            "nullable": true
          },
          "freeText11": {
            "type": "string",
            "nullable": true
          },
          "freeText12": {
            "type": "string",
            "nullable": true
          },
          "freeText13": {
            "type": "string",
            "nullable": true
          },
          "freeText14": {
            "type": "string",
            "nullable": true
          },
          "freeText15": {
            "type": "string",
            "nullable": true
          },
          "freeText16": {
            "type": "string",
            "nullable": true
          },
          "freeText17": {
            "type": "string",
            "nullable": true
          },
          "freeText18": {
            "type": "string",
            "nullable": true
          },
          "freeText19": {
            "type": "string",
            "nullable": true
          },
          "freeText20": {
            "type": "string",
            "nullable": true
          },
          "freeDecimal1": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "freeDecimal2": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "freeDecimal3": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "freeDecimal4": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "freeDecimal5": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "freeDate1": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "freeDate2": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "freeDate3": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "freeDate4": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "freeDate5": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "freeBit1": {
            "type": "boolean"
          },
          "freeBit2": {
            "type": "boolean"
          },
          "freeBit3": {
            "type": "boolean"
          },
          "freeBit4": {
            "type": "boolean"
          },
          "freeBit5": {
            "type": "boolean"
          },
          "preventSynch": {
            "type": "boolean"
          },
          "durationInSeconds": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "certificateNo": {
            "type": "string",
            "nullable": true
          },
          "requiredTotalDurationInSeconds": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "actualTotalDurationInSeconds": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "percentDone": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "actualNoResources": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "remainingDurationInSeconds": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "remainingNoResources": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "displayRequiredDuration": {
            "type": "string",
            "nullable": true
          },
          "displayActualDuration": {
            "type": "string",
            "nullable": true
          },
          "displayRemainingDuration": {
            "type": "string",
            "nullable": true
          },
          "doNotCountAppointmentResource": {
            "type": "boolean"
          },
          "isOpenTask": {
            "type": "boolean"
          },
          "isComplete": {
            "type": "boolean"
          },
          "planningUOM": {
            "type": "string",
            "nullable": true
          },
          "planningUOMConversion": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "planningQty": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "useFixPlanningQty": {
            "type": "boolean"
          },
          "roundToUOM": {
            "type": "boolean"
          },
          "enabled": {
            "type": "boolean"
          },
          "queryBuilderFilter": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "bulkPlanningQty": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "ignoreCalendars": {
            "type": "boolean"
          },
          "jobId": {
            "type": "integer",
            "format": "int64"
          },
          "job": {
            "$ref": "#/components/schemas/Core.JobDto"
          },
          "timeMarkerId": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "readOnly": true
          },
          "timeMarker": {
            "$ref": "#/components/schemas/Core.TimeMarkerDto"
          },
          "categoryId": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "readOnly": true
          },
          "category": {
            "$ref": "#/components/schemas/Core.CategoryDto"
          },
          "pinId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "pin": {
            "$ref": "#/components/schemas/Core.PinDto"
          },
          "tags": {
            "type": "string",
            "nullable": true
          },
          "appointmentTemplateId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "filterValues": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Core.TaskFilterValueDto"
            },
            "nullable": true
          },
          "taskUrls": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Core.TaskUrlDto"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Core.TaskFilterValueDto": {
        "type": "object",
        "properties": {
          "filterGroupId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "filterValueId": {
            "type": "integer",
            "format": "int32"
          },
          "taskId": {
            "type": "integer",
            "format": "int64"
          }
        },
        "additionalProperties": false
      },
      "Core.TaskUrlDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64"
          },
          "taskId": {
            "type": "integer",
            "format": "int64"
          },
          "url": {
            "type": "string",
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Core.TimeMarkerDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "color": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Core.TimeSessionOverviewDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64"
          },
          "resourceId": {
            "type": "integer",
            "format": "int32"
          },
          "resourceName": {
            "type": "string",
            "nullable": true
          },
          "resourceNo": {
            "type": "string",
            "nullable": true
          },
          "taskId": {
            "type": "integer",
            "format": "int64"
          },
          "startedAt": {
            "type": "string",
            "format": "date-time"
          },
          "stoppedAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "durationInSeconds": {
            "type": "integer",
            "format": "int64",
            "nullable": true,
            "readOnly": true
          },
          "isRunning": {
            "type": "boolean",
            "readOnly": true
          },
          "date": {
            "type": "string",
            "format": "date",
            "readOnly": true
          },
          "type": {
            "$ref": "#/components/schemas/Models.TimeSessionType"
          },
          "note": {
            "type": "string",
            "nullable": true
          },
          "timeEntryId": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "externalId": {
            "type": "string",
            "nullable": true
          },
          "jobNo": {
            "type": "string",
            "nullable": true
          },
          "taskNo": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Core.TimeSheetEntryDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64"
          },
          "resourceId": {
            "type": "integer",
            "format": "int32"
          },
          "resourceName": {
            "type": "string",
            "nullable": true
          },
          "resourceNo": {
            "type": "string",
            "nullable": true
          },
          "taskId": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "date": {
            "type": "string",
            "format": "date"
          },
          "durationInSeconds": {
            "type": "integer",
            "format": "int64"
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "isBillable": {
            "type": "boolean"
          },
          "status": {
            "$ref": "#/components/schemas/Models.TimeEntryStatus"
          },
          "submittedAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "isAwaitingOutcome": {
            "type": "boolean"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "sourceType": {
            "type": "string",
            "nullable": true
          },
          "jobNo": {
            "type": "string",
            "nullable": true
          },
          "taskNo": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Core.UserAdministrationDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "type": {
            "type": "integer",
            "format": "int32"
          },
          "email": {
            "type": "string",
            "nullable": true
          },
          "password": {
            "type": "string",
            "nullable": true
          },
          "userGroupId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "language": {
            "type": "string",
            "nullable": true
          },
          "timeZone": {
            "type": "string",
            "nullable": true
          },
          "loginId": {
            "type": "string",
            "nullable": true
          },
          "canSafelyDelete": {
            "type": "boolean",
            "readOnly": true
          },
          "hasNoSharedProfiles": {
            "type": "boolean"
          },
          "hasNoSharedLayouts": {
            "type": "boolean"
          },
          "hasNoSharedFilters": {
            "type": "boolean"
          },
          "isReseller": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "Core.ViewModelState": {
        "enum": [
          0,
          1,
          2
        ],
        "type": "integer",
        "format": "int32",
        "x-enumNames": [
          "Success",
          "Warning",
          "Error"
        ],
        "x-enum-varnames": [
          "Success",
          "Warning",
          "Error"
        ]
      },
      "Core.WebApiException": {
        "type": "object",
        "properties": {
          "Error": {
            "type": "string",
            "nullable": true
          },
          "Description": {
            "type": "string",
            "nullable": true
          },
          "Code": {
            "type": "string",
            "nullable": true
          },
          "Link": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Dime.Repositories.IPageOfNotificationDto": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Core.NotificationDto"
            },
            "nullable": true
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "total": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "Dime.Scheduler.Api.Models.Address": {
        "type": "object",
        "properties": {
          "street": {
            "type": "string",
            "nullable": true
          },
          "streetNo": {
            "type": "string",
            "nullable": true
          },
          "zipCode": {
            "type": "string",
            "nullable": true
          },
          "city": {
            "type": "string",
            "nullable": true
          },
          "state": {
            "type": "string",
            "nullable": true
          },
          "country": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Dime.Scheduler.Api.Models.AppointmentDependencyRequest": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "The dependency ID. Required for update and delete operations.",
            "format": "int32",
            "nullable": true
          },
          "fromAppointmentGuid": {
            "type": "string",
            "description": "The GUID of the preceding (from) appointment.",
            "format": "uuid",
            "nullable": true
          },
          "fromAppointmentNo": {
            "type": "string",
            "description": "The encoded number of the preceding (from) appointment.",
            "nullable": true
          },
          "toAppointmentGuid": {
            "type": "string",
            "description": "The GUID of the succeeding (to) appointment.",
            "format": "uuid",
            "nullable": true
          },
          "toAppointmentNo": {
            "type": "string",
            "description": "The encoded number of the succeeding (to) appointment.",
            "nullable": true
          },
          "type": {
            "type": "integer",
            "description": "The dependency type.",
            "format": "int32",
            "nullable": true
          },
          "lag": {
            "type": "integer",
            "description": "The time lag between the dependent appointments.",
            "format": "int32",
            "nullable": true
          },
          "lagUnit": {
            "type": "string",
            "description": "The unit of the lag (e.g., hours, days).",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Dime.Scheduler.Api.Models.DeleteRecurringAppointmentRequest": {
        "type": "object",
        "properties": {
          "appointmentId": {
            "type": "integer",
            "description": "The appointment ID. Can be the master appointment ID or any occurrence ID in the recurring sequence.",
            "format": "int64",
            "nullable": true
          },
          "appointmentNo": {
            "type": "string",
            "description": "The appointment number (encoded ID). Can be the master appointment number or any occurrence number in the recurring sequence.",
            "nullable": true
          },
          "appointmentGuid": {
            "type": "string",
            "description": "The appointment GUID. Can be the master appointment GUID or any occurrence GUID in the recurring sequence.",
            "format": "uuid",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Dime.Scheduler.Api.Models.FieldServiceOptimizationRequest": {
        "required": [
          "endDate",
          "resources",
          "startDate"
        ],
        "type": "object",
        "properties": {
          "startDate": {
            "type": "string",
            "format": "date-time"
          },
          "endDate": {
            "type": "string",
            "format": "date-time"
          },
          "resources": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Dime.Scheduler.Api.Models.PlanningItemRequest"
            },
            "nullable": true
          },
          "options": {
            "$ref": "#/components/schemas/Dime.Scheduler.Api.Models.OptimizationOptions"
          },
          "reassignment": {
            "$ref": "#/components/schemas/Dime.Scheduler.Api.Models.ReassignmentRequest"
          },
          "incrementalMode": {
            "type": "boolean"
          },
          "notificationEmail": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Dime.Scheduler.Api.Models.OptimizationOptions": {
        "type": "object",
        "properties": {
          "timeZone": {
            "type": "string",
            "nullable": true
          },
          "termination": {
            "type": "string",
            "nullable": true
          },
          "saveAndPublish": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "Dime.Scheduler.Api.Models.OptimizeDailyRouteRequest": {
        "required": [
          "date",
          "resource"
        ],
        "type": "object",
        "properties": {
          "date": {
            "type": "string",
            "format": "date-time"
          },
          "resource": {
            "minLength": 1,
            "type": "string"
          },
          "options": {
            "$ref": "#/components/schemas/Dime.Scheduler.Api.Models.OptimizationOptions"
          }
        },
        "additionalProperties": false
      },
      "Dime.Scheduler.Api.Models.PlanningItemRequest": {
        "required": [
          "type"
        ],
        "type": "object",
        "properties": {
          "type": {
            "minLength": 1,
            "type": "string"
          },
          "taskNo": {
            "type": "string",
            "nullable": true
          },
          "jobNo": {
            "type": "string",
            "nullable": true
          },
          "appointmentGuid": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Dime.Scheduler.Api.Models.ProfessionalServicesOptimizationRequest": {
        "required": [
          "endDate",
          "resources",
          "startDate"
        ],
        "type": "object",
        "properties": {
          "startDate": {
            "type": "string",
            "format": "date-time"
          },
          "endDate": {
            "type": "string",
            "format": "date-time"
          },
          "resources": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Dime.Scheduler.Api.Models.PlanningItemRequest"
            },
            "nullable": true
          },
          "options": {
            "$ref": "#/components/schemas/Dime.Scheduler.Api.Models.OptimizationOptions"
          },
          "notificationEmail": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Dime.Scheduler.Api.Models.ReassignmentRequest": {
        "type": "object",
        "properties": {
          "mode": {
            "$ref": "#/components/schemas/Core.ReassignMode"
          },
          "originalResourceId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "originalDateStart": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "originalDateEnd": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Dime.Scheduler.Api.Models.RecurringAppointmentRequest": {
        "required": [
          "endDate",
          "recurrenceRule",
          "resource",
          "startDate"
        ],
        "type": "object",
        "properties": {
          "startDate": {
            "type": "string",
            "description": "The start date and time of the appointment",
            "format": "date-time"
          },
          "endDate": {
            "type": "string",
            "description": "The end date and time of the appointment",
            "format": "date-time"
          },
          "resource": {
            "minLength": 1,
            "type": "string",
            "description": "The resource number (ResourceNo) to assign to the appointment"
          },
          "taskNo": {
            "type": "string",
            "description": "The task number (TaskNo) to link to the appointment. Optional.",
            "nullable": true
          },
          "jobNo": {
            "type": "string",
            "description": "The job number (JobNo) associated with the task. Required if TaskNo is provided.",
            "nullable": true
          },
          "categoryName": {
            "type": "string",
            "description": "The name of the category to assign to the appointment. Optional.",
            "nullable": true
          },
          "timeMarkerName": {
            "type": "string",
            "description": "The name of the time marker to assign to the appointment. Optional.",
            "nullable": true
          },
          "tags": {
            "type": "string",
            "description": "The tags to assign to the appointment, as a semicolon-separated list of tag codes (e.g. \"Tag1;Tag2\"). Optional.",
            "nullable": true
          },
          "recurrenceRule": {
            "minLength": 1,
            "type": "string",
            "description": "The recurrence pattern in iCal format (e.g., \"FREQ=DAILY;INTERVAL=1;COUNT=10\" or \"FREQ=WEEKLY;BYDAY=MO,WE,FR;COUNT=12\")"
          },
          "subject": {
            "type": "string",
            "description": "The subject/title of the appointment. Optional.",
            "nullable": true
          },
          "body": {
            "type": "string",
            "description": "The body/description of the appointment. Optional.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Dime.Scheduler.Api.Models.RecurringAppointmentResponse": {
        "type": "object",
        "properties": {
          "appointmentGuid": {
            "type": "string",
            "description": "The appointment GUID",
            "format": "uuid",
            "nullable": true
          },
          "appointmentNo": {
            "type": "string",
            "description": "The appointment number (encoded ID)",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Dime.Scheduler.Api.Models.TaskAssignmentRequest": {
        "type": "object",
        "properties": {
          "jobNo": {
            "type": "string",
            "description": "The number of the job that contains the task.",
            "nullable": true
          },
          "taskNo": {
            "type": "string",
            "description": "The number of the task within the job.",
            "nullable": true
          },
          "resourceNo": {
            "type": "string",
            "description": "The identifier of the resource to assign to the task.",
            "nullable": true
          },
          "units": {
            "type": "number",
            "description": "The number of units to allocate to the resource. Not used for delete operations.",
            "format": "double"
          },
          "externalId": {
            "type": "string",
            "description": "The external identity of this allocation, e.g. the record's SystemId in Business Central. Generated automatically when omitted on create. Required to address one of several allocations of the same resource on the same task.",
            "format": "uuid",
            "nullable": true
          },
          "startDate": {
            "type": "string",
            "description": "First day of the allocation's period. Omitted keeps the stored value; both dates omitted on create means the task's window.",
            "format": "date-time",
            "nullable": true
          },
          "endDate": {
            "type": "string",
            "description": "Last day of the allocation's period.",
            "format": "date-time",
            "nullable": true
          },
          "quantity": {
            "type": "number",
            "description": "The amount of work allocated, in the quantity unit.",
            "format": "double",
            "nullable": true
          },
          "quantityUnit": {
            "$ref": "#/components/schemas/Models.AllocationUnit"
          },
          "description": {
            "type": "string",
            "description": "A label for the allocation.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Dime.Scheduler.ApiUser": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "nullable": true
          },
          "email": {
            "type": "string",
            "nullable": true
          },
          "password": {
            "type": "string",
            "nullable": true
          },
          "isMSEntraID": {
            "type": "boolean"
          },
          "language": {
            "type": "string",
            "nullable": true
          },
          "timeZone": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Dime.Scheduler.NewConnectorRequest": {
        "type": "object",
        "properties": {
          "sourceApp": {
            "type": "string",
            "nullable": true
          },
          "enabled": {
            "type": "boolean"
          },
          "uri": {
            "type": "string",
            "nullable": true
          },
          "login": {
            "type": "string",
            "nullable": true
          },
          "password": {
            "type": "string",
            "nullable": true
          },
          "crudTypes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Models.Crud"
            },
            "nullable": true
          },
          "type": {
            "$ref": "#/components/schemas/Models.ConnectorType"
          },
          "authenticationType": {
            "$ref": "#/components/schemas/Models.ConnectorAuthType"
          },
          "apiType": {
            "$ref": "#/components/schemas/Models.ConnectorApiType"
          }
        },
        "additionalProperties": false
      },
      "Dime.Scheduler.NotificationType": {
        "enum": [
          0,
          1,
          2
        ],
        "type": "integer",
        "format": "int32",
        "x-enumNames": [
          "Info",
          "Warning",
          "Error"
        ],
        "x-enum-varnames": [
          "Info",
          "Warning",
          "Error"
        ]
      },
      "Dime.Scheduler.Severity": {
        "enum": [
          0,
          1,
          2,
          3,
          4,
          5
        ],
        "type": "integer",
        "format": "int32",
        "x-enumNames": [
          "Verbose",
          "Debug",
          "Info",
          "Warning",
          "Error",
          "Fatal"
        ],
        "x-enum-varnames": [
          "Verbose",
          "Debug",
          "Info",
          "Warning",
          "Error",
          "Fatal"
        ]
      },
      "Dime.Scheduler.UriType": {
        "enum": [
          0,
          1,
          2,
          3
        ],
        "type": "integer",
        "format": "int32",
        "x-enumNames": [
          "PlanningBoard",
          "Appointment",
          "Task",
          "Map"
        ],
        "x-enum-varnames": [
          "PlanningBoard",
          "Appointment",
          "Task",
          "Map"
        ]
      },
      "Dime.Scheduler.Web.Models.LoginViewModel": {
        "required": [
          "password",
          "userName"
        ],
        "type": "object",
        "properties": {
          "state": {
            "$ref": "#/components/schemas/Core.ViewModelState"
          },
          "messages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "userName": {
            "minLength": 1,
            "type": "string"
          },
          "password": {
            "minLength": 1,
            "type": "string",
            "format": "password"
          },
          "tenantId": {
            "type": "string",
            "nullable": true
          },
          "toggleForgotPassword": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "DimeSchedulerApiResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "status": {
            "$ref": "#/components/schemas/System.Net.HttpStatusCode"
          },
          "phrase": {
            "type": "string",
            "nullable": true
          },
          "appointments": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Core.AppointmentMap"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Entities.ActionUri": {
        "required": [
          "uri"
        ],
        "type": "object",
        "properties": {
          "sourceApp": {
            "maxLength": 30,
            "type": "string",
            "description": "Originating system identifier (paired with SourceType).",
            "nullable": true
          },
          "sourceType": {
            "maxLength": 10,
            "type": "string",
            "description": "Originating system record type (paired with SourceApp).",
            "nullable": true
          },
          "uriType": {
            "$ref": "#/components/schemas/Dime.Scheduler.UriType"
          },
          "uri": {
            "minLength": 1,
            "type": "string",
            "description": "The URI."
          },
          "description": {
            "maxLength": 255,
            "type": "string",
            "description": "The description of the URI.",
            "nullable": true
          },
          "default": {
            "type": "boolean",
            "description": "When true, marks this URI as the default link for the record."
          },
          "requestType": {
            "$ref": "#/components/schemas/Entities.HttpRequestType"
          }
        },
        "additionalProperties": false
      },
      "Entities.Appointment": {
        "required": [
          "appointmentId",
          "end",
          "jobNo",
          "resourceNo",
          "sourceApp",
          "sourceType",
          "start",
          "taskNo"
        ],
        "type": "object",
        "properties": {
          "appointmentNo": {
            "type": "string",
            "description": "External identifier of the appointment.",
            "nullable": true
          },
          "appointmentId": {
            "type": "integer",
            "description": "Internal appointment id. Prefer AppointmentNo for cross-system references.",
            "format": "int64"
          },
          "appointmentGuid": {
            "type": "string",
            "description": "Globally unique identifier of the appointment.",
            "format": "uuid",
            "nullable": true
          },
          "sourceApp": {
            "maxLength": 30,
            "minLength": 1,
            "type": "string",
            "description": "Originating system identifier (paired with SourceType)."
          },
          "sourceType": {
            "maxLength": 10,
            "minLength": 1,
            "type": "string",
            "description": "Originating system record type (paired with SourceApp)."
          },
          "jobNo": {
            "maxLength": 50,
            "minLength": 1,
            "type": "string",
            "description": "Identifier of the parent job."
          },
          "taskNo": {
            "maxLength": 50,
            "minLength": 1,
            "type": "string",
            "description": "Identifier of the task being scheduled."
          },
          "resourceNo": {
            "maxLength": 50,
            "minLength": 1,
            "type": "string",
            "description": "Identifier of the resource the appointment is assigned to."
          },
          "subject": {
            "type": "string",
            "description": "Short headline for the appointment.",
            "nullable": true
          },
          "body": {
            "type": "string",
            "description": "Multi-line body text for the appointment.",
            "nullable": true
          },
          "start": {
            "type": "string",
            "description": "Inclusive start date and time of the appointment.",
            "format": "date-time"
          },
          "end": {
            "type": "string",
            "description": "Exclusive end date and time of the appointment.",
            "format": "date-time"
          },
          "isAllDay": {
            "type": "boolean",
            "description": "When true, the appointment spans entire days.",
            "nullable": true
          },
          "timeMarker": {
            "type": "string",
            "description": "Code of the time marker applied to the appointment.",
            "nullable": true
          },
          "category": {
            "type": "string",
            "description": "Category code used to group and color the appointment.",
            "nullable": true
          },
          "tags": {
            "maxLength": 1000,
            "type": "string",
            "description": "Delimited list of tag codes applied to the appointment (e.g. \"URGENT;NIGHTSHIFT\").",
            "nullable": true
          },
          "importance": {
            "$ref": "#/components/schemas/Entities.Importance"
          },
          "locked": {
            "type": "boolean",
            "description": "When true, the appointment is locked against edits.",
            "nullable": true
          },
          "replaceResource": {
            "type": "boolean",
            "description": "When true, replaces the assigned resource instead of adding another assignment.",
            "nullable": true
          },
          "backOfficeId": {
            "maxLength": 100,
            "type": "string",
            "description": "Identifier assigned to the appointment by the back-office system.",
            "nullable": true
          },
          "backOfficeParentId": {
            "maxLength": 100,
            "type": "string",
            "description": "Identifier of the parent record in the back-office system.",
            "nullable": true
          },
          "unitOfMeasure": {
            "maxLength": 20,
            "type": "string",
            "description": "Code of the unit of measure used to express the planning quantity.",
            "nullable": true
          },
          "unitOfMeasureConversion": {
            "type": "number",
            "description": "Conversion factor that translates one UnitOfMeasure into the base unit.",
            "format": "double",
            "nullable": true
          },
          "planningQuantity": {
            "type": "number",
            "description": "Planned quantity expressed in UnitOfMeasure.",
            "format": "double",
            "nullable": true
          },
          "useFixedPlanningQuantity": {
            "type": "boolean",
            "description": "When true, the planning quantity is locked and ignores duration changes.",
            "nullable": true
          },
          "roundToUnitOfMeasure": {
            "type": "boolean",
            "description": "When true, planned quantities are rounded up to the nearest whole unit.",
            "nullable": true
          },
          "nonWorkingTime": {
            "maximum": 1.7976931348623157E+308,
            "minimum": 0,
            "type": "number",
            "description": "Non-working time within the appointment window, expressed in seconds. Subtracted from the duration when the planning quantity is calculated.",
            "format": "double",
            "nullable": true
          },
          "preamble": {
            "maximum": 2147483647,
            "minimum": 0,
            "type": "integer",
            "description": "Travel or preparation time before the appointment starts, expressed in seconds.",
            "format": "int32",
            "nullable": true
          },
          "postamble": {
            "maximum": 2147483647,
            "minimum": 0,
            "type": "integer",
            "description": "Travel or wrap-up time after the appointment ends, expressed in seconds.",
            "format": "int32",
            "nullable": true
          },
          "sentFromBackOffice": {
            "type": "boolean",
            "description": "When true, the request originated in the back office.",
            "nullable": true
          },
          "isManualAppointment": {
            "type": "boolean",
            "description": "When true, the appointment is manually planned.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Entities.AppointmentCategory": {
        "required": [
          "category"
        ],
        "type": "object",
        "properties": {
          "sourceApp": {
            "maxLength": 30,
            "type": "string",
            "description": "Originating system identifier (paired with SourceType).",
            "nullable": true
          },
          "sourceType": {
            "maxLength": 10,
            "type": "string",
            "description": "Originating system record type (paired with SourceApp).",
            "nullable": true
          },
          "appointmentNo": {
            "type": "string",
            "description": "External identifier of the appointment.",
            "nullable": true
          },
          "appointmentId": {
            "type": "integer",
            "description": "Internal appointment id. Prefer AppointmentNo for cross-system references.",
            "format": "int64",
            "nullable": true
          },
          "category": {
            "maxLength": 100,
            "minLength": 1,
            "type": "string",
            "description": "Category code applied to the appointment."
          },
          "appointmentGuid": {
            "type": "string",
            "description": "Globally unique identifier of the appointment.",
            "format": "uuid",
            "nullable": true
          },
          "sentFromBackOffice": {
            "type": "boolean",
            "description": "When true, the request originated in the back office."
          }
        },
        "additionalProperties": false
      },
      "Entities.AppointmentContainer": {
        "required": [
          "appointment",
          "container"
        ],
        "type": "object",
        "properties": {
          "container": {
            "maxLength": 100,
            "minLength": 1,
            "type": "string",
            "description": "Name of the container the appointment is placed in."
          },
          "appointmentNo": {
            "type": "string",
            "description": "External identifier of the appointment.",
            "nullable": true
          },
          "appointment": {
            "type": "string",
            "description": "Globally unique identifier of the appointment.",
            "format": "uuid"
          }
        },
        "additionalProperties": false
      },
      "Entities.AppointmentContent": {
        "type": "object",
        "properties": {
          "sourceApp": {
            "maxLength": 30,
            "type": "string",
            "description": "Originating system identifier (paired with SourceType).",
            "nullable": true
          },
          "sourceType": {
            "maxLength": 10,
            "type": "string",
            "description": "Originating system record type (paired with SourceApp).",
            "nullable": true
          },
          "appointmentNo": {
            "type": "string",
            "description": "External identifier of the appointment.",
            "nullable": true
          },
          "appointmentId": {
            "type": "integer",
            "description": "Internal appointment id. Prefer AppointmentNo for cross-system references.",
            "format": "int64",
            "nullable": true
          },
          "appointmentGuid": {
            "type": "string",
            "description": "Globally unique identifier of the appointment.",
            "format": "uuid",
            "nullable": true
          },
          "sentFromBackOffice": {
            "type": "boolean",
            "description": "When true, the request originated in the back office."
          },
          "subject": {
            "type": "string",
            "description": "Short headline for the appointment.",
            "nullable": true
          },
          "body": {
            "type": "string",
            "description": "Multi-line body text for the appointment.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Entities.AppointmentFieldValue": {
        "required": [
          "fieldCode",
          "fieldValue"
        ],
        "type": "object",
        "properties": {
          "sourceApp": {
            "maxLength": 30,
            "type": "string",
            "description": "Originating system identifier (paired with SourceType).",
            "nullable": true
          },
          "sourceType": {
            "maxLength": 10,
            "type": "string",
            "description": "Originating system record type (paired with SourceApp).",
            "nullable": true
          },
          "appointmentNo": {
            "type": "string",
            "description": "External identifier of the appointment.",
            "nullable": true
          },
          "appointmentGuid": {
            "type": "string",
            "description": "Globally unique identifier of the appointment.",
            "format": "uuid",
            "nullable": true
          },
          "appointmentId": {
            "type": "integer",
            "description": "Internal appointment id. Prefer AppointmentNo for cross-system references.",
            "format": "int64",
            "nullable": true
          },
          "fieldCode": {
            "maxLength": 100,
            "minLength": 1,
            "type": "string",
            "description": "Code of the custom field."
          },
          "fieldValue": {
            "minLength": 1,
            "type": "string",
            "description": "Value to assign to the custom field."
          },
          "sentFromBackOffice": {
            "type": "boolean",
            "description": "When true, the request originated in the back office."
          }
        },
        "additionalProperties": false
      },
      "Entities.AppointmentImportance": {
        "type": "object",
        "properties": {
          "sourceApp": {
            "maxLength": 30,
            "type": "string",
            "description": "Originating system identifier (paired with SourceType).",
            "nullable": true
          },
          "sourceType": {
            "maxLength": 10,
            "type": "string",
            "description": "Originating system record type (paired with SourceApp).",
            "nullable": true
          },
          "appointmentNo": {
            "type": "string",
            "description": "External identifier of the appointment.",
            "nullable": true
          },
          "appointmentId": {
            "type": "integer",
            "description": "Internal appointment id. Prefer AppointmentNo for cross-system references.",
            "format": "int64",
            "nullable": true
          },
          "importance": {
            "$ref": "#/components/schemas/Entities.Importance"
          },
          "appointmentGuid": {
            "type": "string",
            "description": "Globally unique identifier of the appointment.",
            "format": "uuid",
            "nullable": true
          },
          "sentFromBackOffice": {
            "type": "boolean",
            "description": "When true, the request originated in the back office."
          }
        },
        "additionalProperties": false
      },
      "Entities.AppointmentLocked": {
        "type": "object",
        "properties": {
          "sourceApp": {
            "maxLength": 30,
            "type": "string",
            "description": "Originating system identifier (paired with SourceType).",
            "nullable": true
          },
          "sourceType": {
            "maxLength": 10,
            "type": "string",
            "description": "Originating system record type (paired with SourceApp).",
            "nullable": true
          },
          "appointmentNo": {
            "type": "string",
            "description": "External identifier of the appointment.",
            "nullable": true
          },
          "appointmentId": {
            "type": "integer",
            "description": "Internal appointment id. Prefer AppointmentNo for cross-system references.",
            "format": "int64",
            "nullable": true
          },
          "locked": {
            "type": "boolean",
            "description": "When true, the appointment is locked against edits."
          },
          "appointmentGuid": {
            "type": "string",
            "description": "Globally unique identifier of the appointment.",
            "format": "uuid",
            "nullable": true
          },
          "sentFromBackOffice": {
            "type": "boolean",
            "description": "When true, the request originated in the back office."
          }
        },
        "additionalProperties": false
      },
      "Entities.AppointmentPlanningQuantity": {
        "type": "object",
        "properties": {
          "sourceApp": {
            "maxLength": 30,
            "type": "string",
            "description": "Originating system identifier (paired with SourceType).",
            "nullable": true
          },
          "sourceType": {
            "maxLength": 10,
            "type": "string",
            "description": "Originating system record type (paired with SourceApp).",
            "nullable": true
          },
          "appointmentNo": {
            "type": "string",
            "description": "External identifier of the appointment.",
            "nullable": true
          },
          "appointmentId": {
            "type": "integer",
            "description": "Internal appointment id. Prefer AppointmentNo for cross-system references.",
            "format": "int64",
            "nullable": true
          },
          "quantity": {
            "type": "number",
            "description": "Planned quantity expressed in the appointment's UnitOfMeasure.",
            "format": "double"
          },
          "appointmentGuid": {
            "type": "string",
            "description": "Globally unique identifier of the appointment.",
            "format": "uuid",
            "nullable": true
          },
          "sentFromBackOffice": {
            "type": "boolean",
            "description": "When true, the request originated in the back office."
          }
        },
        "additionalProperties": false
      },
      "Entities.AppointmentTimeMarker": {
        "required": [
          "timeMarker"
        ],
        "type": "object",
        "properties": {
          "sourceApp": {
            "maxLength": 30,
            "type": "string",
            "description": "Originating system identifier (paired with SourceType).",
            "nullable": true
          },
          "sourceType": {
            "maxLength": 10,
            "type": "string",
            "description": "Originating system record type (paired with SourceApp).",
            "nullable": true
          },
          "appointmentNo": {
            "type": "string",
            "description": "External identifier of the appointment.",
            "nullable": true
          },
          "appointmentId": {
            "type": "integer",
            "description": "Internal appointment id. Prefer AppointmentNo for cross-system references.",
            "format": "int64",
            "nullable": true
          },
          "timeMarker": {
            "maxLength": 100,
            "minLength": 1,
            "type": "string",
            "description": "Code of the time marker applied to the appointment."
          },
          "appointmentGuid": {
            "type": "string",
            "description": "Globally unique identifier of the appointment.",
            "format": "uuid",
            "nullable": true
          },
          "sentFromBackOffice": {
            "type": "boolean",
            "description": "When true, the request originated in the back office."
          }
        },
        "additionalProperties": false
      },
      "Entities.AppointmentUri": {
        "required": [
          "description",
          "uri"
        ],
        "type": "object",
        "properties": {
          "sourceApp": {
            "maxLength": 30,
            "type": "string",
            "description": "Originating system identifier (paired with SourceType).",
            "nullable": true
          },
          "sourceType": {
            "maxLength": 10,
            "type": "string",
            "description": "Originating system record type (paired with SourceApp).",
            "nullable": true
          },
          "appointmentNo": {
            "type": "string",
            "description": "External identifier of the appointment.",
            "nullable": true
          },
          "appointmentId": {
            "type": "integer",
            "description": "Internal appointment id. Prefer AppointmentNo for cross-system references.",
            "format": "int64"
          },
          "appointmentGuid": {
            "type": "string",
            "description": "Globally unique identifier of the appointment.",
            "format": "uuid",
            "nullable": true
          },
          "uri": {
            "maxLength": 1000,
            "minLength": 1,
            "type": "string",
            "description": "Hyperlink that points back to the source record."
          },
          "description": {
            "maxLength": 255,
            "minLength": 1,
            "type": "string",
            "description": "Display label for the URI."
          }
        },
        "additionalProperties": false
      },
      "Entities.Assignment": {
        "required": [
          "appointmentId",
          "resourceNo",
          "sourceApp",
          "sourceType"
        ],
        "type": "object",
        "properties": {
          "sourceApp": {
            "maxLength": 30,
            "minLength": 1,
            "type": "string",
            "description": "Originating system identifier (paired with SourceType)."
          },
          "sourceType": {
            "maxLength": 10,
            "minLength": 1,
            "type": "string",
            "description": "Originating system record type (paired with SourceApp)."
          },
          "appointmentNo": {
            "type": "string",
            "description": "External identifier of the appointment.",
            "nullable": true
          },
          "appointmentId": {
            "type": "integer",
            "description": "Internal appointment id. Prefer AppointmentNo for cross-system references.",
            "format": "int64"
          },
          "appointmentGuid": {
            "type": "string",
            "description": "Globally unique identifier of the appointment.",
            "format": "uuid",
            "nullable": true
          },
          "resourceNo": {
            "maxLength": 50,
            "minLength": 1,
            "type": "string",
            "description": "Identifier of the resource being assigned."
          },
          "sentFromBackOffice": {
            "type": "boolean",
            "description": "When true, the request originated in the back office."
          }
        },
        "additionalProperties": false
      },
      "Entities.BudgetEntrySource": {
        "enum": [
          0,
          1,
          2,
          3,
          4
        ],
        "type": "integer",
        "format": "int32",
        "x-enumNames": [
          "Planning",
          "Timesheet",
          "Manual",
          "Budget",
          "External"
        ],
        "x-enum-varnames": [
          "Planning",
          "Timesheet",
          "Manual",
          "Budget",
          "External"
        ]
      },
      "Entities.Caption": {
        "type": "object",
        "properties": {
          "context": {
            "type": "integer",
            "description": "Identifier of the application context the caption applies to.",
            "format": "int32"
          },
          "sourceTable": {
            "maxLength": 255,
            "type": "string",
            "description": "Back-office table that owns the field.",
            "nullable": true
          },
          "fieldName": {
            "maxLength": 255,
            "type": "string",
            "description": "Field whose label is being overridden.",
            "nullable": true
          },
          "language": {
            "maxLength": 10,
            "type": "string",
            "description": "Two-letter language code that scopes the caption.",
            "nullable": true
          },
          "text": {
            "maxLength": 100,
            "type": "string",
            "description": "Localized caption text shown in place of the default label.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Entities.Category": {
        "required": [
          "color",
          "displayName",
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 100,
            "minLength": 1,
            "type": "string",
            "description": "Stable code that identifies the category."
          },
          "displayName": {
            "maxLength": 100,
            "minLength": 1,
            "type": "string",
            "description": "Friendly label shown on the planning board."
          },
          "color": {
            "maxLength": 7,
            "minLength": 1,
            "type": "string",
            "description": "Hex color string used to render the category."
          }
        },
        "additionalProperties": false
      },
      "Entities.Container": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 100,
            "minLength": 1,
            "type": "string",
            "description": "Display name of the container."
          },
          "handleDate": {
            "type": "string",
            "description": "Date by which records in the container should be handled.",
            "format": "date-time",
            "nullable": true
          },
          "handleLocked": {
            "type": "boolean",
            "description": "When true, the handle date is locked against recalculation."
          }
        },
        "additionalProperties": false
      },
      "Entities.FilterGroup": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "Numeric identifier of the filter group.",
            "format": "int32"
          },
          "name": {
            "maxLength": 50,
            "minLength": 1,
            "type": "string",
            "description": "Display name of the filter group."
          },
          "columnNo": {
            "type": "integer",
            "description": "Column position the filter group occupies on the planning board.",
            "format": "int32"
          },
          "dataFilter": {
            "type": "boolean",
            "description": "When true, the group is treated as a data filter rather than a display filter."
          }
        },
        "additionalProperties": false
      },
      "Entities.FilterValue": {
        "required": [
          "group",
          "value"
        ],
        "type": "object",
        "properties": {
          "group": {
            "maxLength": 50,
            "minLength": 1,
            "type": "string",
            "description": "Name of the parent filter group."
          },
          "value": {
            "maxLength": 100,
            "minLength": 1,
            "type": "string",
            "description": "Filter value text used when tagging records."
          }
        },
        "additionalProperties": false
      },
      "Entities.HttpRequestType": {
        "enum": [
          1,
          2
        ],
        "type": "integer",
        "format": "int32",
        "x-enumNames": [
          "Get",
          "Post"
        ],
        "x-enum-varnames": [
          "Get",
          "Post"
        ]
      },
      "Entities.Importance": {
        "enum": [
          0,
          1,
          2
        ],
        "type": "integer",
        "format": "int32",
        "x-enumNames": [
          "Medium",
          "High",
          "Low"
        ],
        "x-enum-varnames": [
          "Medium",
          "High",
          "Low"
        ]
      },
      "Entities.Job": {
        "required": [
          "jobNo",
          "shortDescription",
          "sourceApp",
          "sourceType"
        ],
        "type": "object",
        "properties": {
          "sourceApp": {
            "maxLength": 30,
            "minLength": 1,
            "type": "string",
            "description": "Originating system identifier (paired with SourceType)."
          },
          "sourceType": {
            "maxLength": 10,
            "minLength": 1,
            "type": "string",
            "description": "Originating system record type (paired with SourceApp)."
          },
          "jobNo": {
            "maxLength": 50,
            "minLength": 1,
            "type": "string",
            "description": "Identifier of the job."
          },
          "shortDescription": {
            "maxLength": 50,
            "minLength": 1,
            "type": "string",
            "description": "Brief, single-line description of the job."
          },
          "description": {
            "type": "string",
            "description": "Long-form description of the job.",
            "nullable": true
          },
          "type": {
            "maxLength": 50,
            "type": "string",
            "description": "Free-form type code that further classifies the job.",
            "nullable": true
          },
          "name": {
            "maxLength": 255,
            "type": "string",
            "description": "Display name of the job.",
            "nullable": true
          },
          "category": {
            "maxLength": 100,
            "type": "string",
            "description": "Category code used to group and color the job.",
            "nullable": true
          },
          "timeMarker": {
            "maxLength": 100,
            "type": "string",
            "description": "Code of the time marker applied to the job.",
            "nullable": true
          },
          "pin": {
            "maxLength": 100,
            "type": "string",
            "description": "Code of the pin (status flag) applied to the job.",
            "nullable": true
          },
          "customerNo": {
            "maxLength": 20,
            "type": "string",
            "description": "Identifier of the customer this job is performed for.",
            "nullable": true
          },
          "customerName": {
            "maxLength": 50,
            "type": "string",
            "description": "Display name of the customer.",
            "nullable": true
          },
          "customerAddress": {
            "type": "string",
            "description": "Full street address of the customer.",
            "nullable": true
          },
          "customerAddressGeoLong": {
            "type": "number",
            "description": "Longitude (WGS84) of the customer's address.",
            "format": "double",
            "nullable": true
          },
          "customerAddressGeoLat": {
            "type": "number",
            "description": "Latitude (WGS84) of the customer's address.",
            "format": "double",
            "nullable": true
          },
          "customerPhone": {
            "maxLength": 50,
            "type": "string",
            "description": "Primary phone number of the customer.",
            "nullable": true
          },
          "customerMobilePhone": {
            "maxLength": 50,
            "type": "string",
            "description": "Mobile phone number of the customer.",
            "nullable": true
          },
          "customerEmail": {
            "maxLength": 50,
            "type": "string",
            "description": "Primary email address of the customer.",
            "nullable": true
          },
          "contactNo": {
            "maxLength": 20,
            "type": "string",
            "description": "Identifier of the primary contact at the customer.",
            "nullable": true
          },
          "contactName": {
            "maxLength": 50,
            "type": "string",
            "description": "Display name of the contact.",
            "nullable": true
          },
          "contactAddress": {
            "type": "string",
            "description": "Full street address of the contact.",
            "nullable": true
          },
          "contactAddressGeoLong": {
            "type": "number",
            "description": "Longitude (WGS84) of the contact's address.",
            "format": "double",
            "nullable": true
          },
          "contactAddressGeoLat": {
            "type": "number",
            "description": "Latitude (WGS84) of the contact's address.",
            "format": "double",
            "nullable": true
          },
          "contactPhone": {
            "maxLength": 50,
            "type": "string",
            "description": "Primary phone number of the contact.",
            "nullable": true
          },
          "contactEmail": {
            "maxLength": 50,
            "type": "string",
            "description": "Primary email address of the contact.",
            "nullable": true
          },
          "siteNo": {
            "maxLength": 20,
            "type": "string",
            "description": "Identifier of the site where the job is performed.",
            "nullable": true
          },
          "siteName": {
            "maxLength": 50,
            "type": "string",
            "description": "Display name of the site.",
            "nullable": true
          },
          "siteAddress": {
            "type": "string",
            "description": "Full street address of the site.",
            "nullable": true
          },
          "siteAddressGeoLong": {
            "type": "number",
            "description": "Longitude (WGS84) of the site's address.",
            "format": "double",
            "nullable": true
          },
          "siteAddressGeoLat": {
            "type": "number",
            "description": "Latitude (WGS84) of the site's address.",
            "format": "double",
            "nullable": true
          },
          "sitePhone": {
            "maxLength": 50,
            "type": "string",
            "description": "Primary phone number of the site.",
            "nullable": true
          },
          "siteEmail": {
            "maxLength": 50,
            "type": "string",
            "description": "Primary email address of the site.",
            "nullable": true
          },
          "siteRegion": {
            "maxLength": 10,
            "type": "string",
            "description": "Regional code of the site.",
            "nullable": true
          },
          "siteStreet": {
            "maxLength": 255,
            "type": "string",
            "description": "Street name component of the site's address.",
            "nullable": true
          },
          "siteStreetNo": {
            "maxLength": 20,
            "type": "string",
            "description": "House or building number of the site's address.",
            "nullable": true
          },
          "sitePostcode": {
            "maxLength": 20,
            "type": "string",
            "description": "Postal code of the site's address.",
            "nullable": true
          },
          "siteCity": {
            "maxLength": 50,
            "type": "string",
            "description": "City of the site's address.",
            "nullable": true
          },
          "siteCounty": {
            "maxLength": 50,
            "type": "string",
            "description": "County of the site's address.",
            "nullable": true
          },
          "siteState": {
            "maxLength": 50,
            "type": "string",
            "description": "State or province of the site's address.",
            "nullable": true
          },
          "siteCountry": {
            "maxLength": 50,
            "type": "string",
            "description": "Country of the site's address.",
            "nullable": true
          },
          "siteFromNo": {
            "maxLength": 20,
            "type": "string",
            "description": "Identifier of the origin site the resource departs from.",
            "nullable": true
          },
          "siteFromName": {
            "maxLength": 50,
            "type": "string",
            "description": "Display name of the origin site.",
            "nullable": true
          },
          "siteFromAddress": {
            "type": "string",
            "description": "Full street address of the origin site.",
            "nullable": true
          },
          "siteFromAddressGeoLong": {
            "type": "number",
            "description": "Longitude (WGS84) of the origin site.",
            "format": "double",
            "nullable": true
          },
          "siteFromAddressGeoLat": {
            "type": "number",
            "description": "Latitude (WGS84) of the origin site.",
            "format": "double",
            "nullable": true
          },
          "siteFromPhone": {
            "maxLength": 50,
            "type": "string",
            "description": "Primary phone number of the origin site.",
            "nullable": true
          },
          "siteFromEmail": {
            "maxLength": 50,
            "type": "string",
            "description": "Primary email address of the origin site.",
            "nullable": true
          },
          "siteFromRegion": {
            "maxLength": 10,
            "type": "string",
            "description": "Regional code of the origin site.",
            "nullable": true
          },
          "siteFromStreet": {
            "maxLength": 255,
            "type": "string",
            "description": "Street name of the origin site's address.",
            "nullable": true
          },
          "siteFromStreetNo": {
            "maxLength": 20,
            "type": "string",
            "description": "House number of the origin site's address.",
            "nullable": true
          },
          "siteFromPostcode": {
            "maxLength": 20,
            "type": "string",
            "description": "Postal code of the origin site's address.",
            "nullable": true
          },
          "siteFromCity": {
            "maxLength": 50,
            "type": "string",
            "description": "City of the origin site's address.",
            "nullable": true
          },
          "siteFromCounty": {
            "maxLength": 50,
            "type": "string",
            "description": "County of the origin site's address.",
            "nullable": true
          },
          "siteFromState": {
            "maxLength": 50,
            "type": "string",
            "description": "State or province of the origin site's address.",
            "nullable": true
          },
          "siteFromCountry": {
            "maxLength": 50,
            "type": "string",
            "description": "Country of the origin site's address.",
            "nullable": true
          },
          "billNo": {
            "maxLength": 20,
            "type": "string",
            "description": "Identifier of the customer this job is billed to.",
            "nullable": true
          },
          "billName": {
            "maxLength": 50,
            "type": "string",
            "description": "Display name of the bill-to party.",
            "nullable": true
          },
          "billAddress": {
            "type": "string",
            "description": "Full street address of the bill-to party.",
            "nullable": true
          },
          "billAddressGeoLong": {
            "type": "number",
            "description": "Longitude (WGS84) of the bill-to address.",
            "format": "double",
            "nullable": true
          },
          "billAddressGeoLat": {
            "type": "number",
            "description": "Latitude (WGS84) of the bill-to address.",
            "format": "double",
            "nullable": true
          },
          "billPhone": {
            "maxLength": 50,
            "type": "string",
            "description": "Phone number of the bill-to party.",
            "nullable": true
          },
          "billEmail": {
            "maxLength": 50,
            "type": "string",
            "description": "Email address of the bill-to party.",
            "nullable": true
          },
          "billRegion": {
            "maxLength": 10,
            "type": "string",
            "description": "Regional code of the bill-to address.",
            "nullable": true
          },
          "importance": {
            "$ref": "#/components/schemas/Entities.Importance"
          },
          "creationDateTime": {
            "type": "string",
            "description": "Date and time the job was first created.",
            "format": "date-time",
            "nullable": true
          },
          "customerReference": {
            "maxLength": 50,
            "type": "string",
            "description": "Customer-supplied reference for the job.",
            "nullable": true
          },
          "language": {
            "maxLength": 10,
            "type": "string",
            "description": "Two-letter language code that drives generated text and notifications.",
            "nullable": true
          },
          "responsible": {
            "maxLength": 50,
            "type": "string",
            "description": "Identifier of the user or role responsible for the job.",
            "nullable": true
          },
          "creator": {
            "maxLength": 50,
            "type": "string",
            "description": "Identifier of the user who created the job.",
            "nullable": true
          },
          "freeText1": {
            "maxLength": 100,
            "type": "string",
            "description": "A text property which can be used at your discretion.",
            "nullable": true
          },
          "freeText2": {
            "maxLength": 100,
            "type": "string",
            "description": "A text property which can be used at your discretion.",
            "nullable": true
          },
          "freeText3": {
            "maxLength": 100,
            "type": "string",
            "description": "A text property which can be used at your discretion.",
            "nullable": true
          },
          "freeText4": {
            "maxLength": 100,
            "type": "string",
            "description": "A text property which can be used at your discretion.",
            "nullable": true
          },
          "freeText5": {
            "maxLength": 100,
            "type": "string",
            "description": "A text property which can be used at your discretion.",
            "nullable": true
          },
          "freeText6": {
            "maxLength": 100,
            "type": "string",
            "description": "A text property which can be used at your discretion.",
            "nullable": true
          },
          "freeText7": {
            "maxLength": 100,
            "type": "string",
            "description": "A text property which can be used at your discretion.",
            "nullable": true
          },
          "freeText8": {
            "maxLength": 100,
            "type": "string",
            "description": "A text property which can be used at your discretion.",
            "nullable": true
          },
          "freeText9": {
            "maxLength": 100,
            "type": "string",
            "description": "A text property which can be used at your discretion.",
            "nullable": true
          },
          "freeText10": {
            "maxLength": 100,
            "type": "string",
            "description": "A text property which can be used at your discretion.",
            "nullable": true
          },
          "freeText11": {
            "maxLength": 100,
            "type": "string",
            "description": "A text property which can be used at your discretion.",
            "nullable": true
          },
          "freeText12": {
            "maxLength": 100,
            "type": "string",
            "description": "A text property which can be used at your discretion.",
            "nullable": true
          },
          "freeText13": {
            "maxLength": 100,
            "type": "string",
            "description": "A text property which can be used at your discretion.",
            "nullable": true
          },
          "freeText14": {
            "maxLength": 100,
            "type": "string",
            "description": "A text property which can be used at your discretion.",
            "nullable": true
          },
          "freeText15": {
            "maxLength": 100,
            "type": "string",
            "description": "A text property which can be used at your discretion.",
            "nullable": true
          },
          "freeText16": {
            "maxLength": 100,
            "type": "string",
            "description": "A text property which can be used at your discretion.",
            "nullable": true
          },
          "freeText17": {
            "maxLength": 100,
            "type": "string",
            "description": "A text property which can be used at your discretion.",
            "nullable": true
          },
          "freeText18": {
            "maxLength": 100,
            "type": "string",
            "description": "A text property which can be used at your discretion.",
            "nullable": true
          },
          "freeText19": {
            "maxLength": 100,
            "type": "string",
            "description": "A text property which can be used at your discretion.",
            "nullable": true
          },
          "freeText20": {
            "maxLength": 100,
            "type": "string",
            "description": "A text property which can be used at your discretion.",
            "nullable": true
          },
          "freeDecimal1": {
            "type": "number",
            "description": "A decimal property which can be used at your discretion.",
            "format": "double"
          },
          "freeDecimal2": {
            "type": "number",
            "description": "A decimal property which can be used at your discretion.",
            "format": "double"
          },
          "freeDecimal3": {
            "type": "number",
            "description": "A decimal property which can be used at your discretion.",
            "format": "double"
          },
          "freeDecimal4": {
            "type": "number",
            "description": "A decimal property which can be used at your discretion.",
            "format": "double"
          },
          "freeDecimal5": {
            "type": "number",
            "description": "A decimal property which can be used at your discretion.",
            "format": "double"
          },
          "freeDate1": {
            "type": "string",
            "description": "A date property which can be used at your discretion.",
            "format": "date-time",
            "nullable": true
          },
          "freeDate2": {
            "type": "string",
            "description": "A date property which can be used at your discretion.",
            "format": "date-time",
            "nullable": true
          },
          "freeDate3": {
            "type": "string",
            "description": "A date property which can be used at your discretion.",
            "format": "date-time",
            "nullable": true
          },
          "freeDate4": {
            "type": "string",
            "description": "A date property which can be used at your discretion.",
            "format": "date-time",
            "nullable": true
          },
          "freeDate5": {
            "type": "string",
            "description": "A date property which can be used at your discretion.",
            "format": "date-time",
            "nullable": true
          },
          "freeBit1": {
            "type": "boolean",
            "description": "A boolean property which can be used at your discretion."
          },
          "freeBit2": {
            "type": "boolean",
            "description": "A boolean property which can be used at your discretion."
          },
          "freeBit3": {
            "type": "boolean",
            "description": "A boolean property which can be used at your discretion."
          },
          "freeBit4": {
            "type": "boolean",
            "description": "A boolean property which can be used at your discretion."
          },
          "freeBit5": {
            "type": "boolean",
            "description": "A boolean property which can be used at your discretion."
          },
          "enableManualSelection": {
            "type": "boolean",
            "description": "When true, the job can be selected manually in the planning board."
          },
          "availableInGantt": {
            "type": "boolean",
            "description": "When true, the job is shown in the Gantt view."
          },
          "startDate": {
            "type": "string",
            "description": "Inclusive start date of the job's planning window.",
            "format": "date-time",
            "nullable": true
          },
          "endDate": {
            "type": "string",
            "description": "Inclusive end date of the job's planning window.",
            "format": "date-time",
            "nullable": true
          },
          "allowDependencies": {
            "type": "boolean",
            "description": "When true, tasks under this job may declare predecessor/successor dependencies."
          },
          "note": {
            "type": "string",
            "description": "Free-form note attached to the job.",
            "nullable": true
          },
          "overRuleGanttPlanning": {
            "type": "boolean",
            "description": "When true, manually placed appointments override Gantt scheduler constraints."
          },
          "checkAppointments": {
            "type": "boolean",
            "description": "When true on delete, refuses deletion if appointments are still attached."
          },
          "sentFromBackOffice": {
            "type": "boolean",
            "description": "When true, the request originated in the back office."
          },
          "readOnly": {
            "type": "boolean",
            "description": "When true, the job cannot be edited from the planner UI."
          }
        },
        "additionalProperties": false
      },
      "Entities.Message": {
        "type": "object",
        "properties": {
          "text": {
            "type": "string",
            "description": "Human-readable text of the message.",
            "nullable": true
          },
          "user": {
            "type": "string",
            "description": "Name of the user the message is addressed to.",
            "nullable": true
          },
          "severity": {
            "$ref": "#/components/schemas/Dime.Scheduler.Severity"
          }
        },
        "additionalProperties": false
      },
      "Entities.Notification": {
        "type": "object",
        "properties": {
          "sourceApp": {
            "maxLength": 30,
            "type": "string",
            "description": "Originating system identifier (paired with SourceType).",
            "nullable": true
          },
          "sourceType": {
            "maxLength": 10,
            "type": "string",
            "description": "Originating system record type (paired with SourceApp).",
            "nullable": true
          },
          "appointmentId": {
            "type": "integer",
            "description": "Internal appointment id. Prefer AppointmentNo for cross-system references.",
            "format": "int64",
            "nullable": true
          },
          "appointmentNo": {
            "type": "string",
            "description": "External identifier of the appointment.",
            "nullable": true
          },
          "connectorId": {
            "maxLength": 50,
            "type": "string",
            "description": "Identifier of the connector instance that produced this notification.",
            "nullable": true
          },
          "type": {
            "$ref": "#/components/schemas/Dime.Scheduler.NotificationType"
          },
          "code": {
            "maxLength": 20,
            "type": "string",
            "description": "Short code that identifies the notification.",
            "nullable": true
          },
          "text": {
            "type": "string",
            "description": "Human-readable message body of the notification.",
            "nullable": true
          },
          "date": {
            "type": "string",
            "description": "Date and time the notification was raised.",
            "format": "date-time",
            "nullable": true
          },
          "jobNo": {
            "maxLength": 50,
            "type": "string",
            "description": "Identifier of the job this notification relates to.",
            "nullable": true
          },
          "taskNo": {
            "maxLength": 50,
            "type": "string",
            "description": "Identifier of the task this notification relates to.",
            "nullable": true
          },
          "appointmentGuid": {
            "type": "string",
            "description": "Globally unique identifier of the appointment.",
            "format": "uuid",
            "nullable": true
          },
          "sentFromBackOffice": {
            "type": "boolean",
            "description": "When true, the request originated in the back office."
          }
        },
        "additionalProperties": false
      },
      "Entities.Pin": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 100,
            "minLength": 1,
            "type": "string",
            "description": "Stable code that identifies the pin."
          },
          "color": {
            "maxLength": 7,
            "type": "string",
            "description": "Hex color string used to render the pin.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Entities.ProjectMember": {
        "required": [
          "jobNo",
          "resourceNo"
        ],
        "type": "object",
        "properties": {
          "sourceApp": {
            "type": "string",
            "description": "Originating system identifier (paired with SourceType).",
            "nullable": true
          },
          "sourceType": {
            "type": "string",
            "description": "Originating system record type (paired with SourceApp).",
            "nullable": true
          },
          "jobNo": {
            "minLength": 1,
            "type": "string",
            "description": "Identifier of the project the resource is staffed on."
          },
          "resourceNo": {
            "minLength": 1,
            "type": "string",
            "description": "Identifier of the member resource."
          },
          "startDate": {
            "type": "string",
            "description": "Date the resource joins the project team. Empty means no explicit start; an existing membership keeps its value when omitted.",
            "format": "date-time",
            "nullable": true
          },
          "endDate": {
            "type": "string",
            "description": "Date the resource leaves the project team. Empty means open-ended; an existing membership keeps its value when omitted.",
            "format": "date-time",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Entities.Resource": {
        "required": [
          "resourceNo"
        ],
        "type": "object",
        "properties": {
          "resourceNo": {
            "maxLength": 50,
            "minLength": 1,
            "type": "string",
            "description": "Identifier of the resource."
          },
          "sourceApp": {
            "maxLength": 30,
            "type": "string",
            "description": "Originating system identifier (paired with SourceType).",
            "nullable": true
          },
          "sourceType": {
            "maxLength": 10,
            "type": "string",
            "description": "Originating system record type (paired with SourceApp).",
            "nullable": true
          },
          "resourceType": {
            "maxLength": 100,
            "type": "string",
            "description": "Code of the resource type.",
            "nullable": true
          },
          "resourceTypeId": {
            "type": "integer",
            "description": "Numeric identifier of the resource type.",
            "format": "int32",
            "nullable": true
          },
          "resourceName": {
            "maxLength": 100,
            "type": "string",
            "description": "Full name of the resource.",
            "nullable": true
          },
          "displayName": {
            "maxLength": 100,
            "type": "string",
            "description": "Friendly name shown on the planning board.",
            "nullable": true
          },
          "department": {
            "maxLength": 50,
            "type": "string",
            "description": "Code of the department the resource belongs to.",
            "nullable": true
          },
          "email": {
            "maxLength": 100,
            "type": "string",
            "description": "Primary email address of the resource.",
            "nullable": true
          },
          "phone": {
            "maxLength": 50,
            "type": "string",
            "description": "Primary phone number of the resource.",
            "nullable": true
          },
          "mobilePhone": {
            "maxLength": 50,
            "type": "string",
            "description": "Mobile phone number of the resource.",
            "nullable": true
          },
          "replacementResource": {
            "type": "boolean",
            "description": "When true, this resource may stand in for others during re-planning."
          },
          "fieldServiceEmail": {
            "maxLength": 100,
            "type": "string",
            "description": "Email address used for field-service routing.",
            "nullable": true
          },
          "personalEmail": {
            "maxLength": 100,
            "type": "string",
            "description": "Personal (non-business) email address of the resource.",
            "nullable": true
          },
          "gpsTrackingResourceNo": {
            "maxLength": 50,
            "type": "string",
            "description": "Identifier used by the GPS tracking provider for this resource.",
            "nullable": true
          },
          "homeAddress": {
            "type": "string",
            "description": "Full home address of the resource.",
            "nullable": true
          },
          "homeAddressGeoLong": {
            "type": "number",
            "description": "Longitude (WGS84) of the resource's home address.",
            "format": "double",
            "nullable": true
          },
          "homeAddressGeoLat": {
            "type": "number",
            "description": "Latitude (WGS84) of the resource's home address.",
            "format": "double",
            "nullable": true
          },
          "homePhone": {
            "maxLength": 50,
            "type": "string",
            "description": "Home phone number of the resource.",
            "nullable": true
          },
          "homeEmail": {
            "maxLength": 50,
            "type": "string",
            "description": "Home email address of the resource.",
            "nullable": true
          },
          "homeStreet": {
            "maxLength": 255,
            "type": "string",
            "description": "Street name of the resource's home address.",
            "nullable": true
          },
          "homeStreetNo": {
            "maxLength": 20,
            "type": "string",
            "description": "House number of the resource's home address.",
            "nullable": true
          },
          "homePostcode": {
            "maxLength": 20,
            "type": "string",
            "description": "Postal code of the resource's home address.",
            "nullable": true
          },
          "homeCity": {
            "maxLength": 50,
            "type": "string",
            "description": "City of the resource's home address.",
            "nullable": true
          },
          "homeCounty": {
            "maxLength": 50,
            "type": "string",
            "description": "County of the resource's home address.",
            "nullable": true
          },
          "homeState": {
            "maxLength": 50,
            "type": "string",
            "description": "State or province of the resource's home address.",
            "nullable": true
          },
          "homeCountry": {
            "maxLength": 50,
            "type": "string",
            "description": "Country of the resource's home address.",
            "nullable": true
          },
          "homeRegion": {
            "maxLength": 10,
            "type": "string",
            "description": "Regional code of the resource's home address.",
            "nullable": true
          },
          "teamCode": {
            "maxLength": 20,
            "type": "string",
            "description": "Code of the team this resource belongs to.",
            "nullable": true
          },
          "teamName": {
            "maxLength": 100,
            "type": "string",
            "description": "Display name of the resource's team.",
            "nullable": true
          },
          "teamType": {
            "maxLength": 20,
            "type": "string",
            "description": "Team kind (for example, CREW or SHIFT).",
            "nullable": true
          },
          "teamSort": {
            "type": "integer",
            "description": "Sort order of the team on the planning board.",
            "format": "int32"
          },
          "teamMemberType": {
            "maxLength": 20,
            "type": "string",
            "description": "Role the resource plays inside its team (LEAD, MEMBER, etc.).",
            "nullable": true
          },
          "teamMemberSort": {
            "type": "integer",
            "description": "Sort order of the resource within its team.",
            "format": "int32"
          },
          "doNotShow": {
            "type": "boolean",
            "description": "When true, the resource is hidden from the planning board."
          },
          "inServiceFrom": {
            "type": "string",
            "description": "Date and time the resource becomes bookable.",
            "format": "date-time",
            "nullable": true
          },
          "inServiceTill": {
            "type": "string",
            "description": "Date and time the resource is retired.",
            "format": "date-time",
            "nullable": true
          },
          "exchangeIntegrationEnabled": {
            "type": "boolean",
            "description": "When true, the resource's calendar is synchronized with Exchange."
          },
          "url1": {
            "maxLength": 1000,
            "type": "string",
            "description": "Hyperlink that points back to the source record.",
            "nullable": true
          },
          "urlDescription1": {
            "maxLength": 255,
            "type": "string",
            "description": "Display label for the matching URL field.",
            "nullable": true
          },
          "url2": {
            "maxLength": 1000,
            "type": "string",
            "description": "Hyperlink that points back to the source record.",
            "nullable": true
          },
          "urlDescription2": {
            "maxLength": 255,
            "type": "string",
            "description": "Display label for the matching URL field.",
            "nullable": true
          },
          "url3": {
            "maxLength": 1000,
            "type": "string",
            "description": "Hyperlink that points back to the source record.",
            "nullable": true
          },
          "urlDescription3": {
            "maxLength": 255,
            "type": "string",
            "description": "Display label for the matching URL field.",
            "nullable": true
          },
          "bulkPlanning": {
            "type": "boolean",
            "description": "When true, the resource can be booked beyond its 1.0 capacity."
          },
          "bulkCapacity": {
            "type": "number",
            "description": "Effective capacity multiplier when bulk planning is enabled.",
            "format": "double"
          },
          "resourceGpsTrackingEnabled": {
            "type": "boolean",
            "description": "When true, the resource's location is updated from the GPS tracking provider."
          },
          "pin": {
            "maxLength": 100,
            "type": "string",
            "description": "Code of the pin (status flag) applied to the resource.",
            "nullable": true
          },
          "freeText1": {
            "maxLength": 100,
            "type": "string",
            "description": "A text property which can be used at your discretion.",
            "nullable": true
          },
          "freeText2": {
            "maxLength": 100,
            "type": "string",
            "description": "A text property which can be used at your discretion.",
            "nullable": true
          },
          "freeText3": {
            "maxLength": 100,
            "type": "string",
            "description": "A text property which can be used at your discretion.",
            "nullable": true
          },
          "freeText4": {
            "maxLength": 100,
            "type": "string",
            "description": "A text property which can be used at your discretion.",
            "nullable": true
          },
          "freeText5": {
            "maxLength": 100,
            "type": "string",
            "description": "A text property which can be used at your discretion.",
            "nullable": true
          },
          "freeText6": {
            "maxLength": 100,
            "type": "string",
            "description": "A text property which can be used at your discretion.",
            "nullable": true
          },
          "freeText7": {
            "maxLength": 100,
            "type": "string",
            "description": "A text property which can be used at your discretion.",
            "nullable": true
          },
          "freeText8": {
            "maxLength": 100,
            "type": "string",
            "description": "A text property which can be used at your discretion.",
            "nullable": true
          },
          "freeText9": {
            "maxLength": 100,
            "type": "string",
            "description": "A text property which can be used at your discretion.",
            "nullable": true
          },
          "freeText10": {
            "maxLength": 100,
            "type": "string",
            "description": "A text property which can be used at your discretion.",
            "nullable": true
          },
          "freeText11": {
            "maxLength": 100,
            "type": "string",
            "description": "A text property which can be used at your discretion.",
            "nullable": true
          },
          "freeText12": {
            "maxLength": 100,
            "type": "string",
            "description": "A text property which can be used at your discretion.",
            "nullable": true
          },
          "freeText13": {
            "maxLength": 100,
            "type": "string",
            "description": "A text property which can be used at your discretion.",
            "nullable": true
          },
          "freeText14": {
            "maxLength": 100,
            "type": "string",
            "description": "A text property which can be used at your discretion.",
            "nullable": true
          },
          "freeText15": {
            "maxLength": 100,
            "type": "string",
            "description": "A text property which can be used at your discretion.",
            "nullable": true
          },
          "freeText16": {
            "maxLength": 100,
            "type": "string",
            "description": "A text property which can be used at your discretion.",
            "nullable": true
          },
          "freeText17": {
            "maxLength": 100,
            "type": "string",
            "description": "A text property which can be used at your discretion.",
            "nullable": true
          },
          "freeText18": {
            "maxLength": 100,
            "type": "string",
            "description": "A text property which can be used at your discretion.",
            "nullable": true
          },
          "freeText19": {
            "maxLength": 100,
            "type": "string",
            "description": "A text property which can be used at your discretion.",
            "nullable": true
          },
          "freeText20": {
            "maxLength": 100,
            "type": "string",
            "description": "A text property which can be used at your discretion.",
            "nullable": true
          },
          "freeDecimal1": {
            "type": "number",
            "description": "A decimal property which can be used at your discretion.",
            "format": "double"
          },
          "freeDecimal2": {
            "type": "number",
            "description": "A decimal property which can be used at your discretion.",
            "format": "double"
          },
          "freeDecimal3": {
            "type": "number",
            "description": "A decimal property which can be used at your discretion.",
            "format": "double"
          },
          "freeDecimal4": {
            "type": "number",
            "description": "A decimal property which can be used at your discretion.",
            "format": "double"
          },
          "freeDecimal5": {
            "type": "number",
            "description": "A decimal property which can be used at your discretion.",
            "format": "double"
          },
          "freeDate1": {
            "type": "string",
            "description": "A date property which can be used at your discretion.",
            "format": "date-time",
            "nullable": true
          },
          "freeDate2": {
            "type": "string",
            "description": "A date property which can be used at your discretion.",
            "format": "date-time",
            "nullable": true
          },
          "freeDate3": {
            "type": "string",
            "description": "A date property which can be used at your discretion.",
            "format": "date-time",
            "nullable": true
          },
          "freeDate4": {
            "type": "string",
            "description": "A date property which can be used at your discretion.",
            "format": "date-time",
            "nullable": true
          },
          "freeDate5": {
            "type": "string",
            "description": "A date property which can be used at your discretion.",
            "format": "date-time",
            "nullable": true
          },
          "freeBit1": {
            "type": "boolean",
            "description": "A boolean property which can be used at your discretion."
          },
          "freeBit2": {
            "type": "boolean",
            "description": "A boolean property which can be used at your discretion."
          },
          "freeBit3": {
            "type": "boolean",
            "description": "A boolean property which can be used at your discretion."
          },
          "freeBit4": {
            "type": "boolean",
            "description": "A boolean property which can be used at your discretion."
          },
          "freeBit5": {
            "type": "boolean",
            "description": "A boolean property which can be used at your discretion."
          },
          "checkAppointments": {
            "type": "boolean",
            "description": "When true on delete, refuses deletion while the resource is still assigned to appointments. When false, the assignments are removed and only the appointments left with no resource at all are deleted; appointments shared with other resources are kept."
          },
          "sentFromBackOffice": {
            "type": "boolean",
            "description": "When true, the request originated in the back office."
          }
        },
        "additionalProperties": false
      },
      "Entities.ResourceCalendar": {
        "required": [
          "calendarCode",
          "code",
          "endDate",
          "resourceNo",
          "startDate"
        ],
        "type": "object",
        "properties": {
          "code": {
            "maxLength": 50,
            "minLength": 1,
            "type": "string",
            "description": "Code of the resource-calendar mapping."
          },
          "resourceNo": {
            "maxLength": 50,
            "minLength": 1,
            "type": "string",
            "description": "Identifier of the resource."
          },
          "calendarCode": {
            "maxLength": 255,
            "minLength": 1,
            "type": "string",
            "description": "Code of the working-time calendar applied to the resource."
          },
          "startDate": {
            "type": "string",
            "description": "Inclusive start date of the calendar assignment.",
            "format": "date-time"
          },
          "endDate": {
            "type": "string",
            "description": "Inclusive end date of the calendar assignment.",
            "format": "date-time"
          }
        },
        "additionalProperties": false
      },
      "Entities.ResourceCapacity": {
        "required": [
          "resourceNo"
        ],
        "type": "object",
        "properties": {
          "resourceNo": {
            "maxLength": 50,
            "minLength": 1,
            "type": "string",
            "description": "Identifier of the resource."
          },
          "date": {
            "type": "string",
            "description": "Date the capacity record applies to.",
            "format": "date-time"
          },
          "capacityInSeconds": {
            "type": "integer",
            "description": "Available capacity for the day, in seconds.",
            "format": "int64",
            "nullable": true
          },
          "quantity": {
            "type": "number",
            "description": "Available capacity for the day, in UnitOfMeasure.",
            "format": "double",
            "nullable": true
          },
          "unitOfMeasure": {
            "maxLength": 20,
            "type": "string",
            "description": "Code of the unit of measure for the capacity quantity.",
            "nullable": true
          },
          "unitOfMeasureConversion": {
            "type": "number",
            "description": "Conversion factor for the capacity unit of measure.",
            "format": "double",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Entities.ResourceCertificate": {
        "type": "object",
        "properties": {
          "resourceNo": {
            "type": "string",
            "description": "Identifier of the resource that holds the certificate.",
            "nullable": true
          },
          "no": {
            "type": "string",
            "description": "Identifier of the certificate.",
            "nullable": true
          },
          "score": {
            "type": "string",
            "description": "Score the resource achieved on the certificate.",
            "nullable": true
          },
          "lastScoreDate": {
            "type": "string",
            "description": "Date the resource last took the certificate.",
            "format": "date-time"
          },
          "validUntil": {
            "type": "string",
            "description": "Date the certificate expires.",
            "format": "date-time"
          }
        },
        "additionalProperties": false
      },
      "Entities.ResourceFilterValue": {
        "required": [
          "filterGroup",
          "filterValue",
          "resourceNo"
        ],
        "type": "object",
        "properties": {
          "sourceApp": {
            "type": "string",
            "description": "Originating system identifier (paired with SourceType).",
            "nullable": true
          },
          "sourceType": {
            "type": "string",
            "description": "Originating system record type (paired with SourceApp).",
            "nullable": true
          },
          "resourceNo": {
            "minLength": 1,
            "type": "string",
            "description": "Identifier of the resource being tagged."
          },
          "filterGroup": {
            "minLength": 1,
            "type": "string",
            "description": "Name of the parent filter group."
          },
          "filterValue": {
            "minLength": 1,
            "type": "string",
            "description": "Filter value applied to the resource."
          },
          "transferToTemp": {
            "type": "boolean",
            "description": "When true, the value is staged in a temporary table before being applied."
          }
        },
        "additionalProperties": false
      },
      "Entities.ResourceGpsTracking": {
        "required": [
          "latitude",
          "longitude",
          "resourceNo"
        ],
        "type": "object",
        "properties": {
          "resourceNo": {
            "maxLength": 50,
            "minLength": 1,
            "type": "string",
            "description": "Identifier of the resource being tracked."
          },
          "gpsTrackingResourceNo": {
            "maxLength": 50,
            "type": "string",
            "description": "Identifier used by the GPS tracking provider for this resource.",
            "nullable": true
          },
          "latitude": {
            "type": "number",
            "description": "Latitude (WGS84) reported by the tracker.",
            "format": "double"
          },
          "longitude": {
            "type": "number",
            "description": "Longitude (WGS84) reported by the tracker.",
            "format": "double"
          },
          "speed": {
            "type": "integer",
            "description": "Speed reported by the tracker.",
            "format": "int32",
            "nullable": true
          },
          "date": {
            "type": "string",
            "description": "Date and time the position sample was captured.",
            "format": "date-time",
            "nullable": true
          },
          "rowId": {
            "maxLength": 100,
            "type": "string",
            "description": "Provider-supplied identifier of the position sample.",
            "nullable": true
          },
          "power": {
            "maxLength": 50,
            "type": "string",
            "description": "Power state reported by the tracker.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Entities.ResourceUri": {
        "required": [
          "resourceNo"
        ],
        "type": "object",
        "properties": {
          "resourceNo": {
            "maxLength": 50,
            "minLength": 1,
            "type": "string",
            "description": "Identifier of the resource."
          },
          "uri": {
            "maxLength": 1000,
            "type": "string",
            "description": "Hyperlink that points back to the source record.",
            "nullable": true
          },
          "description": {
            "maxLength": 255,
            "type": "string",
            "description": "Display label for the URI.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Entities.SchedulingMode": {
        "enum": [
          0,
          1,
          2,
          3
        ],
        "type": "integer",
        "format": "int32",
        "x-enumNames": [
          "Normal",
          "FixedDuration",
          "EffortDriven",
          "DynamicAssignment"
        ],
        "x-enum-varnames": [
          "Normal",
          "FixedDuration",
          "EffortDriven",
          "DynamicAssignment"
        ]
      },
      "Entities.Tag": {
        "required": [
          "code"
        ],
        "type": "object",
        "properties": {
          "code": {
            "maxLength": 50,
            "minLength": 1,
            "type": "string",
            "description": "Stable code that identifies the tag. Tasks and appointments reference this code in their delimited tag lists."
          },
          "name": {
            "maxLength": 100,
            "type": "string",
            "description": "Display name of the tag. Defaults to the code when empty.",
            "nullable": true
          },
          "iconSet": {
            "maxLength": 50,
            "type": "string",
            "description": "Icon set the icon belongs to (e.g. fontawesome).",
            "nullable": true
          },
          "iconName": {
            "maxLength": 100,
            "type": "string",
            "description": "Name of the icon within the icon set.",
            "nullable": true
          },
          "color": {
            "maxLength": 7,
            "type": "string",
            "description": "Hex color string used to render the tag.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Entities.Task": {
        "required": [
          "jobNo",
          "shortDescription",
          "sourceApp",
          "sourceType",
          "taskNo"
        ],
        "type": "object",
        "properties": {
          "sourceApp": {
            "maxLength": 30,
            "minLength": 1,
            "type": "string",
            "description": "Originating system identifier (paired with SourceType)."
          },
          "sourceType": {
            "maxLength": 10,
            "minLength": 1,
            "type": "string",
            "description": "Originating system record type (paired with SourceApp)."
          },
          "jobNo": {
            "maxLength": 50,
            "minLength": 1,
            "type": "string",
            "description": "Identifier of the parent job."
          },
          "taskNo": {
            "maxLength": 50,
            "minLength": 1,
            "type": "string",
            "description": "Identifier of the task within its job."
          },
          "taskType": {
            "$ref": "#/components/schemas/Entities.TaskType"
          },
          "shortDescription": {
            "maxLength": 50,
            "minLength": 1,
            "type": "string",
            "description": "Brief, single-line description of the task."
          },
          "description": {
            "maxLength": 50,
            "type": "string",
            "description": "Long-form description of the task.",
            "nullable": true
          },
          "name": {
            "maxLength": 255,
            "type": "string",
            "description": "Display name of the task.",
            "nullable": true
          },
          "type": {
            "maxLength": 20,
            "type": "string",
            "description": "Free-form type code that further classifies the task.",
            "nullable": true
          },
          "category": {
            "maxLength": 100,
            "type": "string",
            "description": "Category code used to group and color the task.",
            "nullable": true
          },
          "timeMarker": {
            "maxLength": 100,
            "type": "string",
            "description": "Code of the time marker applied to the task.",
            "nullable": true
          },
          "pin": {
            "maxLength": 100,
            "type": "string",
            "description": "Code of the pin (status flag) applied to the task.",
            "nullable": true
          },
          "tags": {
            "maxLength": 1000,
            "type": "string",
            "description": "Delimited list of tag codes applied to the task (e.g. \"URGENT;NIGHTSHIFT\").",
            "nullable": true
          },
          "serviceNo": {
            "maxLength": 50,
            "type": "string",
            "description": "Identifier of the serviceable item the task is performed on.",
            "nullable": true
          },
          "serviceGroup": {
            "maxLength": 20,
            "type": "string",
            "description": "Code of the service group the asset belongs to.",
            "nullable": true
          },
          "serviceClass": {
            "maxLength": 20,
            "type": "string",
            "description": "Code of the service class the asset belongs to.",
            "nullable": true
          },
          "serviceSerialNo": {
            "maxLength": 50,
            "type": "string",
            "description": "Serial number of the asset.",
            "nullable": true
          },
          "serviceName": {
            "maxLength": 50,
            "type": "string",
            "description": "Display name of the asset.",
            "nullable": true
          },
          "irisFault": {
            "maxLength": 10,
            "type": "string",
            "description": "IRIS fault code (the observed problem).",
            "nullable": true
          },
          "irisSymptom": {
            "maxLength": 10,
            "type": "string",
            "description": "IRIS symptom code (how the fault manifested).",
            "nullable": true
          },
          "irisArea": {
            "maxLength": 10,
            "type": "string",
            "description": "IRIS area code (where on the asset the fault occurred).",
            "nullable": true
          },
          "irisReason": {
            "maxLength": 10,
            "type": "string",
            "description": "IRIS reason code (root cause).",
            "nullable": true
          },
          "irisResolution": {
            "maxLength": 10,
            "type": "string",
            "description": "IRIS resolution code (how it was fixed).",
            "nullable": true
          },
          "skill1": {
            "maxLength": 10,
            "type": "string",
            "description": "First skill code required to perform the task.",
            "nullable": true
          },
          "skill2": {
            "maxLength": 10,
            "type": "string",
            "description": "Second skill code required to perform the task.",
            "nullable": true
          },
          "skill3": {
            "maxLength": 10,
            "type": "string",
            "description": "Third skill code required to perform the task.",
            "nullable": true
          },
          "contractNo": {
            "maxLength": 20,
            "type": "string",
            "description": "Identifier of the service contract that covers this task.",
            "nullable": true
          },
          "contractType": {
            "maxLength": 30,
            "type": "string",
            "description": "Contract kind (warranty, billable, prepaid).",
            "nullable": true
          },
          "contractDescription": {
            "type": "string",
            "description": "Long-form description of the contract.",
            "nullable": true
          },
          "contractStartDate": {
            "type": "string",
            "description": "Inclusive start date of the contract's coverage.",
            "format": "date-time",
            "nullable": true
          },
          "contractEndDate": {
            "type": "string",
            "description": "Inclusive end date of the contract's coverage.",
            "format": "date-time",
            "nullable": true
          },
          "partsWarrantyStartDate": {
            "type": "string",
            "description": "Inclusive start date of the parts-warranty window.",
            "format": "date-time",
            "nullable": true
          },
          "partsWarrantyEndDate": {
            "type": "string",
            "description": "Inclusive end date of the parts-warranty window.",
            "format": "date-time",
            "nullable": true
          },
          "laborWarrantyStartDate": {
            "type": "string",
            "description": "Inclusive start date of the labor-warranty window.",
            "format": "date-time",
            "nullable": true
          },
          "laborWarrantyEndDate": {
            "type": "string",
            "description": "Inclusive end date of the labor-warranty window.",
            "format": "date-time",
            "nullable": true
          },
          "importance": {
            "$ref": "#/components/schemas/Entities.Importance"
          },
          "status": {
            "maxLength": 20,
            "type": "string",
            "description": "Current status code of the task.",
            "nullable": true
          },
          "expectedResponseDateTime": {
            "type": "string",
            "description": "Date and time the task is expected to be picked up (SLA target).",
            "format": "date-time",
            "nullable": true
          },
          "actualResponseDateTime": {
            "type": "string",
            "description": "Date and time a resource actually picked up the task.",
            "format": "date-time",
            "nullable": true
          },
          "requestedStartDate": {
            "type": "string",
            "description": "Date the customer asked the work to start on.",
            "format": "date-time",
            "nullable": true
          },
          "requestedEndDate": {
            "type": "string",
            "description": "Date the customer asked the work to be finished by.",
            "format": "date-time",
            "nullable": true
          },
          "requestedStartTime": {
            "type": "string",
            "description": "Time of day the customer asked the work to start at.",
            "format": "date-span",
            "nullable": true
          },
          "requestedEndTime": {
            "type": "string",
            "description": "Time of day the customer asked the work to be finished by.",
            "format": "date-span",
            "nullable": true
          },
          "confirmedStartDate": {
            "type": "string",
            "description": "Date agreed with the customer for the work to start.",
            "format": "date-time",
            "nullable": true
          },
          "confirmedEndDate": {
            "type": "string",
            "description": "Date agreed with the customer for the work to be finished.",
            "format": "date-time",
            "nullable": true
          },
          "actualStartDate": {
            "type": "string",
            "description": "Date the work actually started.",
            "format": "date-time",
            "nullable": true
          },
          "actualEndDate": {
            "type": "string",
            "description": "Date the work actually finished.",
            "format": "date-time",
            "nullable": true
          },
          "locationDescription": {
            "type": "string",
            "description": "Free-form description of where the work is performed.",
            "nullable": true
          },
          "duration": {
            "type": "string",
            "description": "Estimated work duration of the task.",
            "format": "date-span",
            "nullable": true
          },
          "durationInSeconds": {
            "type": "integer",
            "description": "Estimated work duration of the task, in seconds.",
            "format": "int64"
          },
          "subject": {
            "type": "string",
            "description": "Short headline shown as the title in calendar and detail views.",
            "nullable": true
          },
          "body": {
            "type": "string",
            "description": "Multi-line body text.",
            "nullable": true
          },
          "infiniteTask": {
            "type": "boolean",
            "description": "When true, the task has no fixed end and may be planned indefinitely."
          },
          "taskOpenAsOf": {
            "type": "string",
            "description": "Date and time from which the task accepts new appointments.",
            "format": "date-time",
            "nullable": true
          },
          "taskOpenTill": {
            "type": "string",
            "description": "Date and time after which the task no longer accepts new appointments.",
            "format": "date-time",
            "nullable": true
          },
          "requiredTotalDuration": {
            "type": "string",
            "description": "Total work duration the task expects.",
            "format": "date-span",
            "nullable": true
          },
          "requiredNoResources": {
            "type": "integer",
            "description": "Number of resources the task expects to have assigned.",
            "format": "int32"
          },
          "appointmentEarliestAllowed": {
            "type": "string",
            "description": "Earliest date and time at which an appointment for this task may start.",
            "format": "date-time",
            "nullable": true
          },
          "appointmentLatestAllowed": {
            "type": "string",
            "description": "Latest date and time at which an appointment for this task may end.",
            "format": "date-time",
            "nullable": true
          },
          "freeText1": {
            "maxLength": 100,
            "type": "string",
            "description": "A text property which can be used at your discretion.",
            "nullable": true
          },
          "freeText2": {
            "maxLength": 100,
            "type": "string",
            "description": "A text property which can be used at your discretion.",
            "nullable": true
          },
          "freeText3": {
            "maxLength": 100,
            "type": "string",
            "description": "A text property which can be used at your discretion.",
            "nullable": true
          },
          "freeText4": {
            "maxLength": 100,
            "type": "string",
            "description": "A text property which can be used at your discretion.",
            "nullable": true
          },
          "freeText5": {
            "maxLength": 100,
            "type": "string",
            "description": "A text property which can be used at your discretion.",
            "nullable": true
          },
          "freeText6": {
            "maxLength": 100,
            "type": "string",
            "description": "A text property which can be used at your discretion.",
            "nullable": true
          },
          "freeText7": {
            "maxLength": 100,
            "type": "string",
            "description": "A text property which can be used at your discretion.",
            "nullable": true
          },
          "freeText8": {
            "maxLength": 100,
            "type": "string",
            "description": "A text property which can be used at your discretion.",
            "nullable": true
          },
          "freeText9": {
            "maxLength": 100,
            "type": "string",
            "description": "A text property which can be used at your discretion.",
            "nullable": true
          },
          "freeText10": {
            "maxLength": 100,
            "type": "string",
            "description": "A text property which can be used at your discretion.",
            "nullable": true
          },
          "freeText11": {
            "maxLength": 100,
            "type": "string",
            "description": "A text property which can be used at your discretion.",
            "nullable": true
          },
          "freeText12": {
            "maxLength": 100,
            "type": "string",
            "description": "A text property which can be used at your discretion.",
            "nullable": true
          },
          "freeText13": {
            "maxLength": 100,
            "type": "string",
            "description": "A text property which can be used at your discretion.",
            "nullable": true
          },
          "freeText14": {
            "maxLength": 100,
            "type": "string",
            "description": "A text property which can be used at your discretion.",
            "nullable": true
          },
          "freeText15": {
            "maxLength": 100,
            "type": "string",
            "description": "A text property which can be used at your discretion.",
            "nullable": true
          },
          "freeText16": {
            "maxLength": 100,
            "type": "string",
            "description": "A text property which can be used at your discretion.",
            "nullable": true
          },
          "freeText17": {
            "maxLength": 100,
            "type": "string",
            "description": "A text property which can be used at your discretion.",
            "nullable": true
          },
          "freeText18": {
            "maxLength": 100,
            "type": "string",
            "description": "A text property which can be used at your discretion.",
            "nullable": true
          },
          "freeText19": {
            "maxLength": 100,
            "type": "string",
            "description": "A text property which can be used at your discretion.",
            "nullable": true
          },
          "freeText20": {
            "maxLength": 100,
            "type": "string",
            "description": "A text property which can be used at your discretion.",
            "nullable": true
          },
          "freeDecimal1": {
            "type": "number",
            "description": "A decimal property which can be used at your discretion.",
            "format": "double"
          },
          "freeDecimal2": {
            "type": "number",
            "description": "A decimal property which can be used at your discretion.",
            "format": "double"
          },
          "freeDecimal3": {
            "type": "number",
            "description": "A decimal property which can be used at your discretion.",
            "format": "double"
          },
          "freeDecimal4": {
            "type": "number",
            "description": "A decimal property which can be used at your discretion.",
            "format": "double"
          },
          "freeDecimal5": {
            "type": "number",
            "description": "A decimal property which can be used at your discretion.",
            "format": "double"
          },
          "freeDate1": {
            "type": "string",
            "description": "A date property which can be used at your discretion.",
            "format": "date-time",
            "nullable": true
          },
          "freeDate2": {
            "type": "string",
            "description": "A date property which can be used at your discretion.",
            "format": "date-time",
            "nullable": true
          },
          "freeDate3": {
            "type": "string",
            "description": "A date property which can be used at your discretion.",
            "format": "date-time",
            "nullable": true
          },
          "freeDate4": {
            "type": "string",
            "description": "A date property which can be used at your discretion.",
            "format": "date-time",
            "nullable": true
          },
          "freeDate5": {
            "type": "string",
            "description": "A date property which can be used at your discretion.",
            "format": "date-time",
            "nullable": true
          },
          "freeBit1": {
            "type": "boolean",
            "description": "A boolean property which can be used at your discretion."
          },
          "freeBit2": {
            "type": "boolean",
            "description": "A boolean property which can be used at your discretion."
          },
          "freeBit3": {
            "type": "boolean",
            "description": "A boolean property which can be used at your discretion."
          },
          "freeBit4": {
            "type": "boolean",
            "description": "A boolean property which can be used at your discretion."
          },
          "freeBit5": {
            "type": "boolean",
            "description": "A boolean property which can be used at your discretion."
          },
          "url1": {
            "maxLength": 1000,
            "type": "string",
            "description": "Hyperlink that points back to the source record.",
            "nullable": true
          },
          "urlDescription1": {
            "maxLength": 255,
            "type": "string",
            "description": "Display label for the matching URL field.",
            "nullable": true
          },
          "url2": {
            "maxLength": 1000,
            "type": "string",
            "description": "Hyperlink that points back to the source record.",
            "nullable": true
          },
          "urlDescription2": {
            "maxLength": 255,
            "type": "string",
            "description": "Display label for the matching URL field.",
            "nullable": true
          },
          "url3": {
            "maxLength": 1000,
            "type": "string",
            "description": "Hyperlink that points back to the source record.",
            "nullable": true
          },
          "urlDescription3": {
            "maxLength": 255,
            "type": "string",
            "description": "Display label for the matching URL field.",
            "nullable": true
          },
          "certificateNo": {
            "type": "string",
            "description": "Identifier of a certificate (skill or qualification) required for this task.",
            "nullable": true
          },
          "requiredTotalDurationInSeconds": {
            "type": "integer",
            "description": "Total work duration the task expects, in seconds. Shown as effort in the Gantt chart; also defines the bar's duration unless PerpetuationInSeconds is supplied, or the task is manually scheduled with both StartDate and EndDate. Leave it unset to keep the stored value; send 0 to clear the budget.",
            "format": "int64",
            "nullable": true
          },
          "perpetuationInSeconds": {
            "type": "integer",
            "description": "Duration of the task's bar in the Gantt chart, in seconds of working time on the task calendar, independent of the effort. Omit (0) to keep the stored value. Ignored for a manually scheduled task that has both StartDate and EndDate, whose bar spans its dates.",
            "format": "int64",
            "nullable": true
          },
          "doNotCountAppointmentResource": {
            "type": "boolean",
            "description": "When true, appointments on this task do not consume the resource's capacity."
          },
          "isComplete": {
            "type": "boolean",
            "description": "When true, the task is closed and excluded from open-work reports."
          },
          "planningUOM": {
            "maxLength": 20,
            "type": "string",
            "description": "Code of the unit of measure used to express the planning quantity.",
            "nullable": true
          },
          "planningUOMConversion": {
            "type": "number",
            "description": "Conversion factor that translates one PlanningUOM into the base unit.",
            "format": "double"
          },
          "planningQty": {
            "type": "number",
            "description": "Planned quantity expressed in PlanningUOM.",
            "format": "double"
          },
          "useFixPlanningQty": {
            "type": "boolean",
            "description": "When true, the planning quantity is locked and ignores duration changes."
          },
          "roundToUOM": {
            "type": "boolean",
            "description": "When true, planned quantities are rounded up to the nearest whole unit."
          },
          "appointmentTemplate": {
            "maxLength": 100,
            "type": "string",
            "description": "Code of the appointment template applied when creating appointments.",
            "nullable": true
          },
          "bulkPlanningQty": {
            "type": "number",
            "description": "Planning quantity used when the task is scheduled through bulk planning.",
            "format": "double"
          },
          "startDate": {
            "type": "string",
            "description": "Start date of the task bar in the Gantt chart. Sent with EndDate and ManuallyScheduled, the bar spans exactly those dates. Sent without ManuallyScheduled, the finish is scheduled from the required duration across the calendar and the end date is not used.",
            "format": "date-time",
            "nullable": true
          },
          "endDate": {
            "type": "string",
            "description": "End date of the task bar in the Gantt chart. Honored exactly when sent with StartDate and ManuallyScheduled. Sent without a start date, supply a required duration so the start can be derived, or the import is rejected.",
            "format": "date-time",
            "nullable": true
          },
          "percentDone": {
            "type": "integer",
            "description": "Percentage of the task that has been completed (0-100).",
            "format": "int32"
          },
          "schedulingMode": {
            "$ref": "#/components/schemas/Entities.SchedulingMode"
          },
          "baseLineStartDate": {
            "type": "string",
            "description": "Original planned start date stored as a baseline.",
            "format": "date-time",
            "nullable": true
          },
          "baseLineEndDate": {
            "type": "string",
            "description": "Original planned end date stored as a baseline.",
            "format": "date-time",
            "nullable": true
          },
          "baseLinePercentDone": {
            "type": "integer",
            "description": "Original planned completion percentage stored as a baseline.",
            "format": "int32"
          },
          "deadLine": {
            "type": "string",
            "description": "Hard deadline for the task; slipping past it raises a Gantt warning.",
            "format": "date-time",
            "nullable": true
          },
          "index": {
            "type": "integer",
            "description": "Position of the task in its parent's child list (zero-based).",
            "format": "int32"
          },
          "constraintType": {
            "type": "integer",
            "description": "Gantt constraint kind applied to the task.",
            "format": "int32"
          },
          "constraintDate": {
            "type": "string",
            "description": "Date associated with the Gantt constraint type.",
            "format": "date-time",
            "nullable": true
          },
          "parentTaskNo": {
            "maxLength": 50,
            "type": "string",
            "description": "Identifier of the parent task in a hierarchical breakdown.",
            "nullable": true
          },
          "calendarCode": {
            "maxLength": 255,
            "type": "string",
            "description": "Code of the calendar that defines working time for this task.",
            "nullable": true
          },
          "predecessorTaskNo": {
            "maxLength": 50,
            "type": "string",
            "description": "Identifier of the predecessor task this one depends on.",
            "nullable": true
          },
          "predecessorLag": {
            "type": "integer",
            "description": "Lag between predecessor finish and this task's start, in working days.",
            "format": "int32"
          },
          "manuallyScheduled": {
            "type": "boolean",
            "description": "When true, the task's dates are pinned and ignored by the auto-scheduler. Left unset, the task keeps the flag it already has, so a partial update does not have to resend it.",
            "nullable": true
          },
          "note": {
            "type": "string",
            "description": "Free-form note attached to the task.",
            "nullable": true
          },
          "overRuleGanttPlanning": {
            "type": "boolean",
            "description": "When true, manually placed appointments override Gantt scheduler constraints."
          },
          "ignoreCalendars": {
            "type": "boolean",
            "description": "When true, the task is scheduled around the clock and ignores calendar working time."
          },
          "containerName": {
            "maxLength": 255,
            "type": "string",
            "description": "Name of the visual container used to group the task on the planning board.",
            "nullable": true
          },
          "containerIndex": {
            "type": "integer",
            "description": "Position of the task inside its container (zero-based).",
            "format": "int32"
          },
          "checkAppointments": {
            "type": "boolean",
            "description": "When true on delete, refuses deletion if appointments are still attached."
          },
          "sentFromBackOffice": {
            "type": "boolean",
            "description": "When true, the request originated in the back office."
          },
          "createJob": {
            "type": "boolean",
            "description": "When true, ensures the parent job exists before the task is appended."
          }
        },
        "additionalProperties": false
      },
      "Entities.TaskBudgetEntry": {
        "required": [
          "deltaInSeconds",
          "externalId",
          "jobNo",
          "periodEnd",
          "periodStart",
          "sourceApp",
          "sourceType",
          "taskNo"
        ],
        "type": "object",
        "properties": {
          "sourceApp": {
            "maxLength": 30,
            "minLength": 1,
            "type": "string",
            "description": "Originating system identifier (paired with SourceType)."
          },
          "sourceType": {
            "maxLength": 10,
            "minLength": 1,
            "type": "string",
            "description": "Originating system record type (paired with SourceApp)."
          },
          "jobNo": {
            "maxLength": 50,
            "minLength": 1,
            "type": "string",
            "description": "Identifier of the parent job."
          },
          "taskNo": {
            "maxLength": 50,
            "minLength": 1,
            "type": "string",
            "description": "Identifier of the task."
          },
          "source": {
            "$ref": "#/components/schemas/Entities.BudgetEntrySource"
          },
          "deltaInSeconds": {
            "type": "integer",
            "description": "The signed number of seconds the budget moved by. Negative uses budget, positive adds to it. Never zero.",
            "format": "int64"
          },
          "periodStart": {
            "type": "string",
            "description": "The first day the entry covers. Only the date part is used.",
            "format": "date-time"
          },
          "periodEnd": {
            "type": "string",
            "description": "The last day the entry covers. Equal to PeriodStart for a single day, never earlier.",
            "format": "date-time"
          },
          "description": {
            "maxLength": 500,
            "type": "string",
            "description": "Free-text note on the entry.",
            "nullable": true
          },
          "externalId": {
            "type": "string",
            "description": "Caller-supplied identity of the entry. Makes a repeated import rewrite the same row, and names the entry to delete.",
            "format": "uuid"
          }
        },
        "additionalProperties": false
      },
      "Entities.TaskContainer": {
        "required": [
          "jobNo",
          "name",
          "sourceApp",
          "sourceType",
          "taskNo"
        ],
        "type": "object",
        "properties": {
          "sourceApp": {
            "maxLength": 30,
            "minLength": 1,
            "type": "string",
            "description": "Originating system identifier (paired with SourceType)."
          },
          "sourceType": {
            "maxLength": 10,
            "minLength": 1,
            "type": "string",
            "description": "Originating system record type (paired with SourceApp)."
          },
          "jobNo": {
            "maxLength": 50,
            "minLength": 1,
            "type": "string",
            "description": "Identifier of the parent job."
          },
          "taskNo": {
            "maxLength": 50,
            "minLength": 1,
            "type": "string",
            "description": "Identifier of the task."
          },
          "name": {
            "maxLength": 255,
            "minLength": 1,
            "type": "string",
            "description": "Name of the container the task belongs to."
          },
          "index": {
            "type": "integer",
            "description": "Position of the task inside its container (zero-based).",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "Entities.TaskDependency": {
        "required": [
          "fromJobNo",
          "fromTaskNo",
          "sourceApp",
          "sourceType",
          "toJobNo",
          "toTaskNo"
        ],
        "type": "object",
        "properties": {
          "sourceApp": {
            "maxLength": 30,
            "minLength": 1,
            "type": "string",
            "description": "Originating system identifier (paired with SourceType)."
          },
          "sourceType": {
            "maxLength": 10,
            "minLength": 1,
            "type": "string",
            "description": "Originating system record type (paired with SourceApp)."
          },
          "fromJobNo": {
            "maxLength": 50,
            "minLength": 1,
            "type": "string",
            "description": "Identifier of the job that holds the predecessor task."
          },
          "fromTaskNo": {
            "maxLength": 50,
            "minLength": 1,
            "type": "string",
            "description": "Identifier of the predecessor task."
          },
          "toJobNo": {
            "maxLength": 50,
            "minLength": 1,
            "type": "string",
            "description": "Identifier of the job that holds the successor task."
          },
          "toTaskNo": {
            "maxLength": 50,
            "minLength": 1,
            "type": "string",
            "description": "Identifier of the successor task."
          },
          "type": {
            "maximum": 3,
            "minimum": 0,
            "type": "integer",
            "description": "Dependency type: 0 (start-to-start), 1 (start-to-end), 2 (end-to-start) or 3 (end-to-end).",
            "format": "int32",
            "nullable": true
          },
          "lag": {
            "type": "integer",
            "description": "Lag between the predecessor's end and the successor's start, expressed in the lag unit.",
            "format": "int32",
            "nullable": true
          },
          "lagUnit": {
            "maxLength": 50,
            "type": "string",
            "description": "Unit of the lag value.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Entities.TaskFilterValue": {
        "required": [
          "filterGroup",
          "filterValue",
          "jobNo",
          "sourceApp",
          "sourceType",
          "taskNo"
        ],
        "type": "object",
        "properties": {
          "sourceApp": {
            "maxLength": 30,
            "minLength": 1,
            "type": "string",
            "description": "Originating system identifier (paired with SourceType)."
          },
          "sourceType": {
            "maxLength": 10,
            "minLength": 1,
            "type": "string",
            "description": "Originating system record type (paired with SourceApp)."
          },
          "jobNo": {
            "maxLength": 50,
            "minLength": 1,
            "type": "string",
            "description": "Identifier of the parent job."
          },
          "taskNo": {
            "maxLength": 50,
            "minLength": 1,
            "type": "string",
            "description": "Identifier of the task."
          },
          "filterGroup": {
            "maxLength": 50,
            "minLength": 1,
            "type": "string",
            "description": "Name of the parent filter group."
          },
          "filterValue": {
            "maxLength": 100,
            "minLength": 1,
            "type": "string",
            "description": "Filter value applied to the task."
          },
          "transferToTemp": {
            "type": "boolean",
            "description": "When true, the value is staged in a temporary table before being applied."
          }
        },
        "additionalProperties": false
      },
      "Entities.TaskLocked": {
        "required": [
          "jobNo",
          "sourceApp",
          "sourceType",
          "taskNo"
        ],
        "type": "object",
        "properties": {
          "sourceApp": {
            "maxLength": 30,
            "minLength": 1,
            "type": "string",
            "description": "Originating system identifier (paired with SourceType)."
          },
          "sourceType": {
            "maxLength": 10,
            "minLength": 1,
            "type": "string",
            "description": "Originating system record type (paired with SourceApp)."
          },
          "jobNo": {
            "maxLength": 50,
            "minLength": 1,
            "type": "string",
            "description": "Identifier of the parent job."
          },
          "taskNo": {
            "maxLength": 50,
            "minLength": 1,
            "type": "string",
            "description": "Identifier of the task."
          },
          "locked": {
            "type": "boolean",
            "description": "When true, the task is locked against edits in the planner UI."
          },
          "sentFromBackOffice": {
            "type": "boolean",
            "description": "When true, the request originated in the back office."
          }
        },
        "additionalProperties": false
      },
      "Entities.TaskType": {
        "enum": [
          0,
          1
        ],
        "type": "integer",
        "format": "int32",
        "x-enumNames": [
          "Planning",
          "Project"
        ],
        "x-enum-varnames": [
          "Planning",
          "Project"
        ]
      },
      "Entities.TaskUri": {
        "required": [
          "description",
          "jobNo",
          "sourceApp",
          "sourceType",
          "taskNo",
          "uri"
        ],
        "type": "object",
        "properties": {
          "sourceApp": {
            "maxLength": 30,
            "minLength": 1,
            "type": "string",
            "description": "Originating system identifier (paired with SourceType)."
          },
          "sourceType": {
            "maxLength": 10,
            "minLength": 1,
            "type": "string",
            "description": "Originating system record type (paired with SourceApp)."
          },
          "jobNo": {
            "maxLength": 50,
            "minLength": 1,
            "type": "string",
            "description": "Identifier of the parent job."
          },
          "taskNo": {
            "maxLength": 50,
            "minLength": 1,
            "type": "string",
            "description": "Identifier of the task."
          },
          "uri": {
            "maxLength": 1000,
            "minLength": 1,
            "type": "string",
            "description": "Hyperlink that points back to the source record."
          },
          "description": {
            "maxLength": 255,
            "minLength": 1,
            "type": "string",
            "description": "Display label for the URI."
          }
        },
        "additionalProperties": false
      },
      "Entities.TimeEntry": {
        "required": [
          "sourceApp",
          "sourceType"
        ],
        "type": "object",
        "properties": {
          "sourceApp": {
            "maxLength": 30,
            "minLength": 1,
            "type": "string",
            "description": "Originating system identifier (paired with SourceType)."
          },
          "sourceType": {
            "maxLength": 10,
            "minLength": 1,
            "type": "string",
            "description": "Originating system record type (paired with SourceApp)."
          },
          "timeEntryId": {
            "type": "integer",
            "description": "Identifier of the time entry in Dime.Scheduler. Names the entry to update or delete; leave empty to create one.",
            "format": "int64",
            "nullable": true
          },
          "backofficeID": {
            "maxLength": 100,
            "type": "string",
            "description": "Back office reference of the time sheet line. Identifies the entry when no TimeEntryId is given.",
            "nullable": true
          },
          "resourceNo": {
            "maxLength": 50,
            "type": "string",
            "description": "Identifier of the resource whose time it is. Required when creating an entry.",
            "nullable": true
          },
          "jobNo": {
            "maxLength": 50,
            "type": "string",
            "description": "Identifier of the job the time was spent on. Required when creating an entry.",
            "nullable": true
          },
          "taskNo": {
            "maxLength": 50,
            "type": "string",
            "description": "Identifier of the task the time was spent on. Required when creating an entry.",
            "nullable": true
          },
          "date": {
            "type": "string",
            "description": "The day the time was spent on. Only the date part is used. Required when creating an entry.",
            "format": "date-time",
            "nullable": true
          },
          "durationInSeconds": {
            "maximum": 9.223372036854776E+18,
            "minimum": 0,
            "type": "integer",
            "description": "The claimed time, in seconds. Required when creating an entry.",
            "format": "int64",
            "nullable": true
          },
          "description": {
            "type": "string",
            "description": "Free-text description of the work.",
            "nullable": true
          },
          "isBillable": {
            "type": "boolean",
            "description": "Whether the time is billable.",
            "nullable": true
          },
          "status": {
            "$ref": "#/components/schemas/Entities.TimeEntryStatus"
          },
          "message": {
            "maxLength": 500,
            "type": "string",
            "description": "Back office round-trip message, for example why a release failed.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Entities.TimeEntryStatus": {
        "enum": [
          0,
          1,
          2,
          3,
          4,
          5
        ],
        "type": "integer",
        "format": "int32",
        "x-enumNames": [
          "Draft",
          "Submitting",
          "Accepted",
          "Failed",
          "Approved",
          "Rejected"
        ],
        "x-enum-varnames": [
          "Draft",
          "Submitting",
          "Accepted",
          "Failed",
          "Approved",
          "Rejected"
        ]
      },
      "Entities.TimeMarker": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 100,
            "minLength": 1,
            "type": "string",
            "description": "Stable code that identifies the time marker."
          },
          "color": {
            "maxLength": 7,
            "type": "string",
            "description": "Hex color string used to render the time marker.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Entities.TimeSession": {
        "required": [
          "sourceApp",
          "sourceType"
        ],
        "type": "object",
        "properties": {
          "sourceApp": {
            "maxLength": 30,
            "minLength": 1,
            "type": "string",
            "description": "Originating system identifier (paired with SourceType)."
          },
          "sourceType": {
            "maxLength": 10,
            "minLength": 1,
            "type": "string",
            "description": "Originating system record type (paired with SourceApp)."
          },
          "timeSessionId": {
            "type": "integer",
            "description": "Identifier of the time session in Dime.Scheduler. Names the session to update or delete; leave empty to create one.",
            "format": "int64",
            "nullable": true
          },
          "externalId": {
            "maxLength": 100,
            "type": "string",
            "description": "The caller's own reference for the session. Identifies the session when no TimeSessionId is given; makes a create idempotent.",
            "nullable": true
          },
          "resourceNo": {
            "maxLength": 50,
            "type": "string",
            "description": "Identifier of the resource that was observed. Required when creating a session.",
            "nullable": true
          },
          "jobNo": {
            "maxLength": 50,
            "type": "string",
            "description": "Identifier of the job the session belongs to. Required when creating a session.",
            "nullable": true
          },
          "taskNo": {
            "maxLength": 50,
            "type": "string",
            "description": "Identifier of the task the session belongs to. Required when creating a session.",
            "nullable": true
          },
          "startedAt": {
            "type": "string",
            "description": "The moment the session started, in the resource's local wall clock. Required when creating a session.",
            "format": "date-time",
            "nullable": true
          },
          "stoppedAt": {
            "type": "string",
            "description": "The moment the session stopped, in the resource's local wall clock. Leave empty on create to start a running session.",
            "format": "date-time",
            "nullable": true
          },
          "type": {
            "$ref": "#/components/schemas/Entities.TimeSessionType"
          },
          "note": {
            "maxLength": 250,
            "type": "string",
            "description": "A short note on the observation.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Entities.TimeSessionType": {
        "enum": [
          0,
          1,
          2
        ],
        "type": "integer",
        "format": "int32",
        "x-enumNames": [
          "Work",
          "Travel",
          "Waiting"
        ],
        "x-enum-varnames": [
          "Work",
          "Travel",
          "Waiting"
        ]
      },
      "Microsoft.AspNetCore.Mvc.ContentResult": {
        "type": "object",
        "properties": {
          "content": {
            "type": "string",
            "nullable": true
          },
          "contentType": {
            "type": "string",
            "nullable": true
          },
          "statusCode": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Microsoft.AspNetCore.Mvc.ProblemDetails": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "nullable": true
          },
          "title": {
            "type": "string",
            "nullable": true
          },
          "status": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "detail": {
            "type": "string",
            "nullable": true
          },
          "instance": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": { }
      },
      "Models.AllocationUnit": {
        "enum": [
          1,
          2
        ],
        "type": "integer",
        "format": "int32",
        "x-enumNames": [
          "Hours",
          "Fte"
        ],
        "x-enum-varnames": [
          "Hours",
          "Fte"
        ]
      },
      "Models.Appointment": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64"
          },
          "appointmentNo": {
            "type": "string",
            "nullable": true
          },
          "externalId": {
            "type": "integer",
            "format": "int64"
          },
          "subject": {
            "type": "string",
            "nullable": true
          },
          "body": {
            "type": "string",
            "nullable": true
          },
          "startDate": {
            "type": "string",
            "format": "date-time"
          },
          "endDate": {
            "type": "string",
            "format": "date-time"
          },
          "isAllDayEvent": {
            "type": "boolean"
          },
          "timeZoneString": {
            "type": "string",
            "nullable": true
          },
          "importance": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "hiddenToUser": {
            "type": "boolean"
          },
          "appointmentChanged": {
            "type": "boolean"
          },
          "siteAddressGeoLong": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "siteAddressGeoLat": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "formattedSiteAddress": {
            "type": "string",
            "nullable": true
          },
          "preventSynch": {
            "type": "boolean"
          },
          "timestamp": {
            "type": "string",
            "format": "byte",
            "nullable": true
          },
          "dateLastMailSent": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "appointmentGuid": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "nonWorkingTime": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "locked": {
            "type": "boolean"
          },
          "confirmationStatus": {
            "$ref": "#/components/schemas/Models.ConfirmationStatus"
          },
          "updateTrigger": {
            "type": "boolean"
          },
          "planningUOM": {
            "type": "string",
            "nullable": true
          },
          "planningUOMConversion": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "planningQty": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "durationInSeconds": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "useFixPlanningQty": {
            "type": "boolean"
          },
          "roundToUOM": {
            "type": "boolean"
          },
          "lastModifiedDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "lastModifiedUser": {
            "type": "string",
            "nullable": true
          },
          "sentFromBackoffice": {
            "type": "boolean"
          },
          "sentFromExchange": {
            "type": "boolean"
          },
          "backofficeID": {
            "type": "string",
            "nullable": true
          },
          "backofficeParentID": {
            "type": "string",
            "nullable": true
          },
          "sourceApp": {
            "type": "string",
            "nullable": true
          },
          "sourceType": {
            "type": "string",
            "nullable": true
          },
          "jobNo": {
            "type": "string",
            "nullable": true
          },
          "taskNo": {
            "type": "string",
            "nullable": true
          },
          "recurrenceRule": {
            "type": "string",
            "nullable": true
          },
          "recurrenceStartDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "recurrenceId": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "isRecurrenceException": {
            "type": "boolean"
          },
          "recurrenceExceptionDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "capacityIndicator": {
            "type": "boolean"
          },
          "ignoreCalendars": {
            "type": "boolean"
          },
          "preamble": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "postamble": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "progress": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "notificationLevel": {
            "$ref": "#/components/schemas/Models.Severity"
          },
          "deletedOn": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "createdDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "createdUser": {
            "type": "string",
            "nullable": true
          },
          "taskId": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "task": {
            "$ref": "#/components/schemas/Models.Task"
          },
          "categoryId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "category": {
            "$ref": "#/components/schemas/Models.Category"
          },
          "timeMarkerId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "timeMarker": {
            "$ref": "#/components/schemas/Models.TimeMarker"
          },
          "tags": {
            "type": "string",
            "nullable": true
          },
          "notifications": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Models.Notification"
            },
            "nullable": true
          },
          "assignments": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Models.Assignment"
            },
            "nullable": true
          },
          "appointmentFieldValues": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Models.AppointmentFieldValue"
            },
            "nullable": true
          },
          "appointmentUrls": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Models.AppointmentUrl"
            },
            "nullable": true
          },
          "appointmentContainers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Models.AppointmentContainer"
            },
            "nullable": true
          },
          "transactions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Models.Transaction"
            },
            "nullable": true
          },
          "predecessors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Models.AppointmentDependency"
            },
            "nullable": true
          },
          "successors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Models.AppointmentDependency"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Models.AppointmentContainer": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64"
          },
          "index": {
            "type": "integer",
            "format": "int32"
          },
          "appointmentId": {
            "type": "integer",
            "format": "int64"
          },
          "appointment": {
            "$ref": "#/components/schemas/Models.Appointment"
          },
          "containerId": {
            "type": "integer",
            "format": "int64"
          },
          "container": {
            "$ref": "#/components/schemas/Models.Container"
          }
        },
        "additionalProperties": false
      },
      "Models.AppointmentDependency": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "type": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "cls": {
            "type": "string",
            "nullable": true
          },
          "lag": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "lagUnit": {
            "type": "string",
            "nullable": true
          },
          "fromId": {
            "type": "integer",
            "format": "int64"
          },
          "from": {
            "$ref": "#/components/schemas/Models.Appointment"
          },
          "toId": {
            "type": "integer",
            "format": "int64"
          },
          "to": {
            "$ref": "#/components/schemas/Models.Appointment"
          }
        },
        "additionalProperties": false
      },
      "Models.AppointmentField": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "code": {
            "type": "string",
            "nullable": true
          },
          "type": {
            "$ref": "#/components/schemas/Models.FieldType"
          },
          "default": {
            "type": "string",
            "nullable": true
          },
          "required": {
            "type": "boolean"
          },
          "options": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Models.AppointmentFieldOption"
            },
            "nullable": true
          },
          "fields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Models.AppointmentSectionField"
            },
            "nullable": true
          },
          "appointmentFieldValues": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Models.AppointmentFieldValue"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Models.AppointmentFieldOption": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "code": {
            "type": "string",
            "nullable": true
          },
          "default": {
            "type": "boolean"
          },
          "fieldId": {
            "type": "integer",
            "format": "int32"
          },
          "field": {
            "$ref": "#/components/schemas/Models.AppointmentField"
          }
        },
        "additionalProperties": false
      },
      "Models.AppointmentFieldValue": {
        "type": "object",
        "properties": {
          "appointmentId": {
            "type": "integer",
            "format": "int64"
          },
          "appointment": {
            "$ref": "#/components/schemas/Models.Appointment"
          },
          "appointmentFieldId": {
            "type": "integer",
            "format": "int32"
          },
          "appointmentField": {
            "$ref": "#/components/schemas/Models.AppointmentField"
          },
          "value": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Models.AppointmentSection": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "code": {
            "type": "string",
            "nullable": true
          },
          "fields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Models.AppointmentSectionField"
            },
            "nullable": true
          },
          "templates": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Models.AppointmentTemplateSection"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Models.AppointmentSectionField": {
        "type": "object",
        "properties": {
          "sectionId": {
            "type": "integer",
            "format": "int32"
          },
          "section": {
            "$ref": "#/components/schemas/Models.AppointmentSection"
          },
          "fieldId": {
            "type": "integer",
            "format": "int32"
          },
          "field": {
            "$ref": "#/components/schemas/Models.AppointmentField"
          },
          "sequence": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "Models.AppointmentTemplate": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "code": {
            "type": "string",
            "nullable": true
          },
          "default": {
            "type": "boolean"
          },
          "sections": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Models.AppointmentTemplateSection"
            },
            "nullable": true
          },
          "tasks": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Models.Task"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Models.AppointmentTemplateSection": {
        "type": "object",
        "properties": {
          "sectionId": {
            "type": "integer",
            "format": "int32"
          },
          "section": {
            "$ref": "#/components/schemas/Models.AppointmentSection"
          },
          "templateId": {
            "type": "integer",
            "format": "int32"
          },
          "template": {
            "$ref": "#/components/schemas/Models.AppointmentTemplate"
          },
          "sequence": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "Models.AppointmentUrl": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64"
          },
          "url": {
            "type": "string",
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "appointmentId": {
            "type": "integer",
            "format": "int64"
          },
          "appointment": {
            "$ref": "#/components/schemas/Models.Appointment"
          }
        },
        "additionalProperties": false
      },
      "Models.Assignment": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64"
          },
          "appointmentGuid": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "appointmentId": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "appointment": {
            "$ref": "#/components/schemas/Models.Appointment"
          },
          "resourceId": {
            "type": "integer",
            "format": "int32"
          },
          "resource": {
            "$ref": "#/components/schemas/Models.Resource"
          },
          "derivedFromResourceId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "taskAssignmentId": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "taskAssignment": {
            "$ref": "#/components/schemas/Models.TaskAssignment"
          }
        },
        "additionalProperties": false
      },
      "Models.BudgetEntrySource": {
        "enum": [
          0,
          1,
          2,
          3,
          4
        ],
        "type": "integer",
        "format": "int32",
        "x-enumNames": [
          "Planning",
          "Timesheet",
          "Manual",
          "Budget",
          "External"
        ],
        "x-enum-varnames": [
          "Planning",
          "Timesheet",
          "Manual",
          "Budget",
          "External"
        ]
      },
      "Models.Calendar": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "code": {
            "type": "string",
            "nullable": true
          },
          "default": {
            "type": "boolean"
          },
          "daysPerMonth": {
            "type": "integer",
            "format": "int32"
          },
          "daysPerWeek": {
            "type": "integer",
            "format": "int32"
          },
          "hoursPerDay": {
            "type": "integer",
            "format": "int32"
          },
          "weekendFirstDay": {
            "type": "integer",
            "format": "int32"
          },
          "weekendSecondDay": {
            "type": "integer",
            "format": "int32"
          },
          "weekendsAreWorkdays": {
            "type": "boolean"
          },
          "leaf": {
            "type": "boolean",
            "readOnly": true
          },
          "parentId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "parent": {
            "$ref": "#/components/schemas/Models.Calendar"
          },
          "calendarDays": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Models.CalendarDay"
            },
            "nullable": true
          },
          "businessHours": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Models.CalendarAvailability"
            },
            "nullable": true
          },
          "resources": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Models.Resource"
            },
            "nullable": true
          },
          "resourceCalendars": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Models.ResourceCalendar"
            },
            "nullable": true
          },
          "taskCalendars": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Models.TaskCalendar"
            },
            "nullable": true
          },
          "children": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Models.Calendar"
            },
            "nullable": true
          },
          "tasks": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Models.Task"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Models.CalendarAvailability": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "start": {
            "type": "string",
            "nullable": true
          },
          "end": {
            "type": "string",
            "nullable": true
          },
          "calendarId": {
            "type": "integer",
            "format": "int32"
          },
          "calendar": {
            "$ref": "#/components/schemas/Models.Calendar"
          }
        },
        "additionalProperties": false
      },
      "Models.CalendarDay": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "type": {
            "$ref": "#/components/schemas/Models.CalendarDayType"
          },
          "date": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "weekday": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "overrideStartDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "overrideEndDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "color": {
            "type": "string",
            "nullable": true
          },
          "isWorkingDay": {
            "type": "boolean"
          },
          "calendarId": {
            "type": "integer",
            "format": "int32"
          },
          "calendar": {
            "$ref": "#/components/schemas/Models.Calendar"
          },
          "parentId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "parent": {
            "$ref": "#/components/schemas/Models.CalendarDay"
          },
          "businessHours": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Models.CalendarDayAvailability"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Models.CalendarDayAvailability": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "start": {
            "type": "string",
            "nullable": true
          },
          "end": {
            "type": "string",
            "nullable": true
          },
          "calendarDayId": {
            "type": "integer",
            "format": "int32"
          },
          "calendarDay": {
            "$ref": "#/components/schemas/Models.CalendarDay"
          }
        },
        "additionalProperties": false
      },
      "Models.CalendarDayType": {
        "enum": [
          0,
          1,
          2
        ],
        "type": "integer",
        "format": "int32",
        "x-enumNames": [
          "Day",
          "Weekday",
          "WeekdayOverride"
        ],
        "x-enum-varnames": [
          "Day",
          "Weekday",
          "WeekdayOverride"
        ]
      },
      "Models.CapacityMode": {
        "enum": [
          1,
          2
        ],
        "type": "integer",
        "format": "int32",
        "x-enumNames": [
          "Derived",
          "Own"
        ],
        "x-enum-varnames": [
          "Derived",
          "Own"
        ]
      },
      "Models.Category": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "displayName": {
            "type": "string",
            "nullable": true
          },
          "hiddenToUser": {
            "type": "boolean"
          },
          "color": {
            "type": "string",
            "nullable": true
          },
          "outlookCategory": {
            "type": "string",
            "nullable": true
          },
          "tasks": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Models.Task"
            },
            "nullable": true
          },
          "appointments": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Models.Appointment"
            },
            "nullable": true
          },
          "users": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Models.UserCategory"
            },
            "nullable": true
          },
          "userGroups": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Models.UserGroupCategory"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Models.ConfirmationStatus": {
        "enum": [
          1,
          2
        ],
        "type": "integer",
        "format": "int32",
        "x-enumNames": [
          "Tentative",
          "Confirmed"
        ],
        "x-enum-varnames": [
          "Tentative",
          "Confirmed"
        ]
      },
      "Models.Connector": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "sourceApp": {
            "type": "string",
            "nullable": true
          },
          "sendAppointmentToWebService": {
            "type": "boolean"
          },
          "webServiceAddress": {
            "type": "string",
            "nullable": true
          },
          "login": {
            "type": "string",
            "nullable": true
          },
          "password": {
            "type": "string",
            "nullable": true
          },
          "crudTypes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Models.Crud"
            },
            "nullable": true
          },
          "type": {
            "$ref": "#/components/schemas/Models.ConnectorType"
          },
          "authType": {
            "$ref": "#/components/schemas/Models.ConnectorAuthType"
          },
          "apiType": {
            "$ref": "#/components/schemas/Models.ConnectorApiType"
          },
          "target": {
            "$ref": "#/components/schemas/Models.ConnectorTarget"
          },
          "clientSecretExpiryDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "deletedOn": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Models.ConnectorApiType": {
        "enum": [
          0,
          1
        ],
        "type": "integer",
        "format": "int32",
        "x-enumNames": [
          "SOAP",
          "REST"
        ],
        "x-enum-varnames": [
          "SOAP",
          "REST"
        ]
      },
      "Models.ConnectorAuthType": {
        "enum": [
          0,
          1,
          2,
          3,
          4,
          5,
          6
        ],
        "type": "integer",
        "format": "int32",
        "x-enumNames": [
          "None",
          "Basic",
          "Ntlm",
          "Windows",
          "OAUthMsEntraId",
          "OAuth2ClientCredentialsBodyAuth",
          "OAuth2ClientCredentialsBasicAuth"
        ],
        "x-enum-varnames": [
          "None",
          "Basic",
          "Ntlm",
          "Windows",
          "OAUthMsEntraId",
          "OAuth2ClientCredentialsBodyAuth",
          "OAuth2ClientCredentialsBasicAuth"
        ]
      },
      "Models.ConnectorTarget": {
        "enum": [
          0,
          1
        ],
        "type": "integer",
        "format": "int32",
        "x-enumNames": [
          "Appointment",
          "TimeSheet"
        ],
        "x-enum-varnames": [
          "Appointment",
          "TimeSheet"
        ]
      },
      "Models.ConnectorType": {
        "enum": [
          0,
          1,
          2,
          3
        ],
        "type": "integer",
        "format": "int32",
        "x-enumNames": [
          "None",
          "Bc",
          "Nav",
          "Webhook"
        ],
        "x-enum-varnames": [
          "None",
          "Bc",
          "Nav",
          "Webhook"
        ]
      },
      "Models.ConstraintType": {
        "enum": [
          0,
          1,
          2,
          3,
          4,
          5,
          6,
          7,
          8
        ],
        "type": "integer",
        "format": "int32",
        "x-enumNames": [
          "None",
          "FinishNoEarlierThan",
          "FinishNoLaterThan",
          "MustFinishOn",
          "MustStartOn",
          "StartNoEarlierThan",
          "StartNoLaterThan",
          "AsSoonAsPossible",
          "AsLateAsPossible"
        ],
        "x-enum-varnames": [
          "None",
          "FinishNoEarlierThan",
          "FinishNoLaterThan",
          "MustFinishOn",
          "MustStartOn",
          "StartNoEarlierThan",
          "StartNoLaterThan",
          "AsSoonAsPossible",
          "AsLateAsPossible"
        ]
      },
      "Models.Container": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "color": {
            "type": "string",
            "nullable": true
          },
          "handleIsLocked": {
            "type": "boolean"
          },
          "handleDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "taskContainers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Models.TaskContainer"
            },
            "nullable": true
          },
          "appointmentContainers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Models.AppointmentContainer"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Models.Crud": {
        "enum": [
          0,
          1,
          2,
          3
        ],
        "type": "integer",
        "format": "int32",
        "x-enumNames": [
          "Create",
          "Read",
          "Update",
          "Delete"
        ],
        "x-enum-varnames": [
          "Create",
          "Read",
          "Update",
          "Delete"
        ]
      },
      "Models.DurationUnit": {
        "enum": [
          0,
          1,
          2,
          3,
          4,
          5,
          6,
          7,
          8
        ],
        "type": "integer",
        "format": "int32",
        "x-enumNames": [
          "Day",
          "Milli",
          "Second",
          "Minute",
          "Hour",
          "Week",
          "Month",
          "Quarter",
          "Year"
        ],
        "x-enum-varnames": [
          "Day",
          "Milli",
          "Second",
          "Minute",
          "Hour",
          "Week",
          "Month",
          "Quarter",
          "Year"
        ]
      },
      "Models.FieldType": {
        "enum": [
          1,
          2,
          3,
          4,
          5,
          6
        ],
        "type": "integer",
        "format": "int32",
        "x-enumNames": [
          "Text",
          "Number",
          "Boolean",
          "Date",
          "DateTime",
          "Select"
        ],
        "x-enum-varnames": [
          "Text",
          "Number",
          "Boolean",
          "Date",
          "DateTime",
          "Select"
        ]
      },
      "Models.FilterGroup": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "columnNo": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "resourceFilter": {
            "type": "boolean"
          },
          "dataFilter": {
            "type": "boolean"
          },
          "filterValues": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Models.FilterValue"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Models.FilterValue": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "filterGroupId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "filterGroup": {
            "$ref": "#/components/schemas/Models.FilterGroup"
          },
          "resourceFilterValues": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Models.ResourceFilterValue"
            },
            "nullable": true
          },
          "taskFilterValues": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Models.TaskFilterValue"
            },
            "nullable": true
          },
          "users": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Models.UserFilterValue"
            },
            "nullable": true
          },
          "userGroups": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Models.UserGroupFilterValue"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Models.GroupBehavior": {
        "enum": [
          1,
          2,
          3
        ],
        "type": "integer",
        "format": "int32",
        "x-enumNames": [
          "Fanout",
          "Placeholder",
          "Grouping"
        ],
        "x-enum-varnames": [
          "Fanout",
          "Placeholder",
          "Grouping"
        ]
      },
      "Models.IIndicatedEntity": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64"
          },
          "timeMarkerId": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "readOnly": true
          },
          "categoryId": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "Models.Job": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64"
          },
          "sourceApp": {
            "type": "string",
            "nullable": true
          },
          "sourceType": {
            "type": "string",
            "nullable": true
          },
          "jobNo": {
            "type": "string",
            "nullable": true
          },
          "shortDescription": {
            "type": "string",
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "type": {
            "type": "string",
            "nullable": true
          },
          "customerNo": {
            "type": "string",
            "nullable": true
          },
          "customerName": {
            "type": "string",
            "nullable": true
          },
          "customerAddress": {
            "type": "string",
            "nullable": true
          },
          "customerAddressGeoLong": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "customerAddressGeoLat": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "customerPhone": {
            "type": "string",
            "nullable": true
          },
          "customerMobilePhone": {
            "type": "string",
            "nullable": true
          },
          "customerEmail": {
            "type": "string",
            "nullable": true
          },
          "contactNo": {
            "type": "string",
            "nullable": true
          },
          "contactName": {
            "type": "string",
            "nullable": true
          },
          "contactAddress": {
            "type": "string",
            "nullable": true
          },
          "contactAddressGeoLong": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "contactAddressGeoLat": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "contactPhone": {
            "type": "string",
            "nullable": true
          },
          "contactEmail": {
            "type": "string",
            "nullable": true
          },
          "siteNo": {
            "type": "string",
            "nullable": true
          },
          "siteName": {
            "type": "string",
            "nullable": true
          },
          "siteAddress": {
            "type": "string",
            "nullable": true
          },
          "siteAddressGeoLong": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "siteAddressGeoLat": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "sitePhone": {
            "type": "string",
            "nullable": true
          },
          "siteEmail": {
            "type": "string",
            "nullable": true
          },
          "siteStreetNo": {
            "type": "string",
            "nullable": true
          },
          "siteStreet": {
            "type": "string",
            "nullable": true
          },
          "sitePostcode": {
            "type": "string",
            "nullable": true
          },
          "siteRegion": {
            "type": "string",
            "nullable": true
          },
          "siteCity": {
            "type": "string",
            "nullable": true
          },
          "siteCounty": {
            "type": "string",
            "nullable": true
          },
          "siteState": {
            "type": "string",
            "nullable": true
          },
          "siteCountry": {
            "type": "string",
            "nullable": true
          },
          "siteFromNo": {
            "type": "string",
            "nullable": true
          },
          "siteFromName": {
            "type": "string",
            "nullable": true
          },
          "siteFromAddress": {
            "type": "string",
            "nullable": true
          },
          "siteFromAddressGeoLong": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "siteFromAddressGeoLat": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "siteFromPhone": {
            "type": "string",
            "nullable": true
          },
          "siteFromEmail": {
            "type": "string",
            "nullable": true
          },
          "siteFromStreetNo": {
            "type": "string",
            "nullable": true
          },
          "siteFromStreet": {
            "type": "string",
            "nullable": true
          },
          "siteFromRegion": {
            "type": "string",
            "nullable": true
          },
          "siteFromPostcode": {
            "type": "string",
            "nullable": true
          },
          "siteFromCity": {
            "type": "string",
            "nullable": true
          },
          "siteFromCounty": {
            "type": "string",
            "nullable": true
          },
          "siteFromState": {
            "type": "string",
            "nullable": true
          },
          "siteFromCountry": {
            "type": "string",
            "nullable": true
          },
          "billNo": {
            "type": "string",
            "nullable": true
          },
          "billName": {
            "type": "string",
            "nullable": true
          },
          "billAddress": {
            "type": "string",
            "nullable": true
          },
          "billAddressGeoLong": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "billAddressGeoLat": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "billPhone": {
            "type": "string",
            "nullable": true
          },
          "billEmail": {
            "type": "string",
            "nullable": true
          },
          "billRegion": {
            "type": "string",
            "nullable": true
          },
          "importance": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "creationDateTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "creator": {
            "type": "string",
            "nullable": true
          },
          "customerReference": {
            "type": "string",
            "nullable": true
          },
          "language": {
            "type": "string",
            "nullable": true
          },
          "responsible": {
            "type": "string",
            "nullable": true
          },
          "siteFormattedAddress": {
            "type": "string",
            "nullable": true
          },
          "enableManualSelection": {
            "type": "boolean"
          },
          "freeText1": {
            "type": "string",
            "nullable": true
          },
          "freeText2": {
            "type": "string",
            "nullable": true
          },
          "freeText3": {
            "type": "string",
            "nullable": true
          },
          "freeText4": {
            "type": "string",
            "nullable": true
          },
          "freeText5": {
            "type": "string",
            "nullable": true
          },
          "freeText6": {
            "type": "string",
            "nullable": true
          },
          "freeText7": {
            "type": "string",
            "nullable": true
          },
          "freeText8": {
            "type": "string",
            "nullable": true
          },
          "freeText9": {
            "type": "string",
            "nullable": true
          },
          "freeText10": {
            "type": "string",
            "nullable": true
          },
          "freeText11": {
            "type": "string",
            "nullable": true
          },
          "freeText12": {
            "type": "string",
            "nullable": true
          },
          "freeText13": {
            "type": "string",
            "nullable": true
          },
          "freeText14": {
            "type": "string",
            "nullable": true
          },
          "freeText15": {
            "type": "string",
            "nullable": true
          },
          "freeText16": {
            "type": "string",
            "nullable": true
          },
          "freeText17": {
            "type": "string",
            "nullable": true
          },
          "freeText18": {
            "type": "string",
            "nullable": true
          },
          "freeText19": {
            "type": "string",
            "nullable": true
          },
          "freeText20": {
            "type": "string",
            "nullable": true
          },
          "freeDecimal1": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "freeDecimal2": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "freeDecimal3": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "freeDecimal4": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "freeDecimal5": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "freeDate1": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "freeDate2": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "freeDate3": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "freeDate4": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "freeDate5": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "freeBit1": {
            "type": "boolean"
          },
          "freeBit2": {
            "type": "boolean"
          },
          "freeBit3": {
            "type": "boolean"
          },
          "freeBit4": {
            "type": "boolean"
          },
          "freeBit5": {
            "type": "boolean"
          },
          "availableInGantt": {
            "type": "boolean"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "readOnly": {
            "type": "boolean"
          },
          "allowDependencies": {
            "type": "boolean"
          },
          "note": {
            "type": "string",
            "nullable": true
          },
          "startDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "endDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "timeMarkerId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "timeMarker": {
            "$ref": "#/components/schemas/Models.TimeMarker"
          },
          "categoryId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "category": {
            "$ref": "#/components/schemas/Models.Category"
          },
          "pinId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "pin": {
            "$ref": "#/components/schemas/Models.Pin"
          },
          "calendarId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "calendar": {
            "$ref": "#/components/schemas/Models.Calendar"
          },
          "tasks": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Models.Task"
            },
            "nullable": true
          },
          "notifications": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Models.Notification"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Models.Notification": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64"
          },
          "mboc_Id": {
            "type": "string",
            "nullable": true
          },
          "type": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "code": {
            "type": "string",
            "nullable": true
          },
          "text": {
            "type": "string",
            "nullable": true
          },
          "date": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "jobId": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "job": {
            "$ref": "#/components/schemas/Models.Job"
          },
          "taskId": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "task": {
            "$ref": "#/components/schemas/Models.Task"
          },
          "appointmentId": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "appointment": {
            "$ref": "#/components/schemas/Models.Appointment"
          }
        },
        "additionalProperties": false
      },
      "Models.Pin": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "color": {
            "type": "string",
            "nullable": true
          },
          "tasks": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Models.Task"
            },
            "nullable": true
          },
          "jobs": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Models.Job"
            },
            "nullable": true
          },
          "resources": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Models.Resource"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Models.PluginType": {
        "enum": [
          1,
          2,
          3
        ],
        "type": "integer",
        "format": "int32",
        "x-enumNames": [
          "Dynamics",
          "Exchange",
          "Webhook"
        ],
        "x-enum-varnames": [
          "Dynamics",
          "Exchange",
          "Webhook"
        ]
      },
      "Models.Profile": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "code": {
            "type": "string",
            "nullable": true
          },
          "theme": {
            "type": "string",
            "nullable": true
          },
          "color": {
            "type": "string",
            "nullable": true
          },
          "menu": {
            "type": "string",
            "nullable": true
          },
          "layout": {
            "type": "string",
            "nullable": true
          },
          "defaultSchedulerSnapIntervalMode": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "defaultSchedulerSnapIntervalValue": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "defaultSchedulerStartMode": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "defaultSchedulerStartValue": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "defaultSchedulerRangeMode": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "defaultSchedulerRangeValue": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "public": {
            "type": "boolean"
          },
          "defaultSchedulerStartTime": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "defaultSchedulerEndTime": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "unitOfDistance": {
            "$ref": "#/components/schemas/Models.UnitOfDistance"
          },
          "autoRouteCalculation": {
            "type": "boolean",
            "nullable": true
          },
          "showSequenceIndicators": {
            "type": "boolean",
            "nullable": true
          },
          "routeProfile": {
            "type": "string",
            "nullable": true
          },
          "minAppointmentHeight": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "deprecated": true
          },
          "schedulerNotificationGridVisible": {
            "type": "boolean",
            "deprecated": true
          },
          "schedulerMondayVisible": {
            "type": "boolean",
            "deprecated": true
          },
          "schedulerTuesdayVisible": {
            "type": "boolean",
            "deprecated": true
          },
          "schedulerWednesdayVisible": {
            "type": "boolean",
            "deprecated": true
          },
          "schedulerThursdayVisible": {
            "type": "boolean",
            "deprecated": true
          },
          "schedulerFridayVisible": {
            "type": "boolean",
            "deprecated": true
          },
          "schedulerSaturdayVisible": {
            "type": "boolean",
            "deprecated": true
          },
          "schedulerSundayVisible": {
            "type": "boolean",
            "deprecated": true
          },
          "userGroupId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "userGroup": {
            "$ref": "#/components/schemas/Models.UserGroup"
          },
          "userId": {
            "type": "integer",
            "format": "int32"
          },
          "user": {
            "$ref": "#/components/schemas/Models.User"
          },
          "profileLayouts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Models.ProfileLayout"
            },
            "nullable": true
          },
          "profileFilters": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Models.ProfileFilter"
            },
            "nullable": true
          },
          "userProfiles": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Models.UserProfile"
            },
            "nullable": true
          },
          "userGroupProfiles": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Models.UserGroupProfile"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Models.ProfileFilter": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "default": {
            "type": "boolean"
          },
          "profileId": {
            "type": "integer",
            "format": "int32"
          },
          "profile": {
            "$ref": "#/components/schemas/Models.Profile"
          },
          "userDefinedFilterId": {
            "type": "integer",
            "format": "int32"
          },
          "userDefinedFilter": {
            "$ref": "#/components/schemas/Models.UserDefinedFilter"
          }
        },
        "additionalProperties": false
      },
      "Models.ProfileLayout": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "default": {
            "type": "boolean"
          },
          "profileId": {
            "type": "integer",
            "format": "int32"
          },
          "profile": {
            "$ref": "#/components/schemas/Models.Profile"
          },
          "userDefinedLayoutId": {
            "type": "integer",
            "format": "int32"
          },
          "userDefinedLayout": {
            "$ref": "#/components/schemas/Models.UserDefinedLayout"
          }
        },
        "additionalProperties": false
      },
      "Models.Resource": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "sourceApp": {
            "type": "string",
            "nullable": true
          },
          "sourceType": {
            "type": "string",
            "nullable": true
          },
          "displayName": {
            "type": "string",
            "nullable": true
          },
          "department": {
            "type": "string",
            "nullable": true
          },
          "resourceNo": {
            "type": "string",
            "nullable": true
          },
          "email": {
            "type": "string",
            "nullable": true
          },
          "phone": {
            "type": "string",
            "nullable": true
          },
          "mobilePhone": {
            "type": "string",
            "nullable": true
          },
          "replacementResource": {
            "type": "boolean"
          },
          "fieldServiceEmail": {
            "type": "string",
            "nullable": true
          },
          "personalEmail": {
            "type": "string",
            "nullable": true
          },
          "gpsTrackingResourceNo": {
            "type": "string",
            "nullable": true
          },
          "homeAddress": {
            "type": "string",
            "nullable": true
          },
          "homeAddressGeoLong": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "homeAddressGeoLat": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "homePhone": {
            "type": "string",
            "nullable": true
          },
          "homeEmail": {
            "type": "string",
            "nullable": true
          },
          "homeStreet": {
            "type": "string",
            "nullable": true
          },
          "homeStreetNo": {
            "type": "string",
            "nullable": true
          },
          "homeRegion": {
            "type": "string",
            "nullable": true
          },
          "homePostcode": {
            "type": "string",
            "nullable": true
          },
          "homeCity": {
            "type": "string",
            "nullable": true
          },
          "homeCounty": {
            "type": "string",
            "nullable": true
          },
          "homeState": {
            "type": "string",
            "nullable": true
          },
          "homeCountry": {
            "type": "string",
            "nullable": true
          },
          "teamCode": {
            "type": "string",
            "nullable": true
          },
          "teamName": {
            "type": "string",
            "nullable": true
          },
          "teamType": {
            "type": "string",
            "nullable": true
          },
          "teamSort": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "teamMemberType": {
            "type": "string",
            "nullable": true
          },
          "teamMemberSort": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "groupBehavior": {
            "$ref": "#/components/schemas/Models.GroupBehavior"
          },
          "capacityMode": {
            "$ref": "#/components/schemas/Models.CapacityMode"
          },
          "freeText1": {
            "type": "string",
            "nullable": true
          },
          "freeText2": {
            "type": "string",
            "nullable": true
          },
          "freeText3": {
            "type": "string",
            "nullable": true
          },
          "freeText4": {
            "type": "string",
            "nullable": true
          },
          "freeText5": {
            "type": "string",
            "nullable": true
          },
          "freeText6": {
            "type": "string",
            "nullable": true
          },
          "freeText7": {
            "type": "string",
            "nullable": true
          },
          "freeText8": {
            "type": "string",
            "nullable": true
          },
          "freeText9": {
            "type": "string",
            "nullable": true
          },
          "freeText10": {
            "type": "string",
            "nullable": true
          },
          "freeText11": {
            "type": "string",
            "nullable": true
          },
          "freeText12": {
            "type": "string",
            "nullable": true
          },
          "freeText13": {
            "type": "string",
            "nullable": true
          },
          "freeText14": {
            "type": "string",
            "nullable": true
          },
          "freeText15": {
            "type": "string",
            "nullable": true
          },
          "freeText16": {
            "type": "string",
            "nullable": true
          },
          "freeText17": {
            "type": "string",
            "nullable": true
          },
          "freeText18": {
            "type": "string",
            "nullable": true
          },
          "freeText19": {
            "type": "string",
            "nullable": true
          },
          "freeText20": {
            "type": "string",
            "nullable": true
          },
          "freeDecimal1": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "freeDecimal2": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "freeDecimal3": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "freeDecimal4": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "freeDecimal5": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "freeDecimal6": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "freeDecimal7": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "freeDecimal8": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "freeDecimal9": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "freeDecimal10": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "freeDate1": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "freeDate2": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "freeDate3": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "freeDate4": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "freeDate5": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "freeBit1": {
            "type": "boolean"
          },
          "freeBit2": {
            "type": "boolean"
          },
          "freeBit3": {
            "type": "boolean"
          },
          "freeBit4": {
            "type": "boolean"
          },
          "freeBit5": {
            "type": "boolean"
          },
          "doNotShow": {
            "type": "boolean"
          },
          "inServiceFrom": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "inServiceTill": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "exchangeIntegrationEnabled": {
            "type": "boolean"
          },
          "gpsTrackingEnabled": {
            "type": "boolean"
          },
          "bulkPlanning": {
            "type": "boolean"
          },
          "bulkCapacity": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "exchangeIntegrationEnabledByUser": {
            "type": "boolean"
          },
          "showAs": {
            "type": "string",
            "nullable": true
          },
          "sensitivity": {
            "type": "string",
            "nullable": true
          },
          "excludeFromBudgetCalculation": {
            "type": "boolean"
          },
          "isFiltered": {
            "type": "boolean"
          },
          "resourceTypeId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "resourceType": {
            "$ref": "#/components/schemas/Models.ResourceType"
          },
          "calendarId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "calendar": {
            "$ref": "#/components/schemas/Models.Calendar"
          },
          "pinId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "pin": {
            "$ref": "#/components/schemas/Models.Pin"
          },
          "resourceCapacities": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Models.ResourceCapacity"
            },
            "nullable": true
          },
          "resourceGpsTrackings": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Models.ResourceGpsTracking"
            },
            "nullable": true
          },
          "resourceUrls": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Models.ResourceUrl"
            },
            "nullable": true
          },
          "assignments": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Models.Assignment"
            },
            "nullable": true
          },
          "resourceFilterValues": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Models.ResourceFilterValue"
            },
            "nullable": true
          },
          "projectAssignments": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Models.TaskAssignment"
            },
            "nullable": true
          },
          "calendars": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Models.ResourceCalendar"
            },
            "nullable": true
          },
          "members": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Models.ResourceMember"
            },
            "nullable": true
          },
          "memberships": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Models.ResourceMember"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Models.ResourceCalendar": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "entityId": {
            "type": "integer",
            "format": "int32"
          },
          "entity": {
            "$ref": "#/components/schemas/Models.Resource"
          },
          "calendarId": {
            "type": "integer",
            "format": "int32"
          },
          "calendar": {
            "$ref": "#/components/schemas/Models.Calendar"
          },
          "startDate": {
            "type": "string",
            "format": "date"
          },
          "endDate": {
            "type": "string",
            "format": "date"
          }
        },
        "additionalProperties": false
      },
      "Models.ResourceCapacity": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64"
          },
          "date": {
            "type": "string",
            "format": "date"
          },
          "quantity": {
            "type": "number",
            "format": "double"
          },
          "resourceId": {
            "type": "integer",
            "format": "int32"
          },
          "resource": {
            "$ref": "#/components/schemas/Models.Resource"
          }
        },
        "additionalProperties": false
      },
      "Models.ResourceFilterValue": {
        "type": "object",
        "properties": {
          "filterValueId": {
            "type": "integer",
            "format": "int32"
          },
          "filterValue": {
            "$ref": "#/components/schemas/Models.FilterValue"
          },
          "resourceId": {
            "type": "integer",
            "format": "int32"
          },
          "resource": {
            "$ref": "#/components/schemas/Models.Resource"
          },
          "filterGroupId": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "Models.ResourceGpsTracking": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "externalId": {
            "type": "string",
            "nullable": true
          },
          "latitude": {
            "type": "number",
            "format": "double"
          },
          "longitude": {
            "type": "number",
            "format": "double"
          },
          "speed": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "date": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "rowId": {
            "type": "string",
            "nullable": true
          },
          "power": {
            "type": "string",
            "nullable": true
          },
          "hiddenToUser": {
            "type": "boolean"
          },
          "resourceId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "resource": {
            "$ref": "#/components/schemas/Models.Resource"
          }
        },
        "additionalProperties": false
      },
      "Models.ResourceMember": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "parentId": {
            "type": "integer",
            "format": "int32"
          },
          "parent": {
            "$ref": "#/components/schemas/Models.Resource"
          },
          "resourceId": {
            "type": "integer",
            "format": "int32"
          },
          "resource": {
            "$ref": "#/components/schemas/Models.Resource"
          },
          "validFrom": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "validTo": {
            "type": "string",
            "format": "date",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Models.ResourceType": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "displayName": {
            "type": "string",
            "nullable": true
          },
          "allowMultipleSelection": {
            "type": "boolean"
          },
          "selectionWithCertificate": {
            "type": "boolean"
          },
          "hideClearFunction": {
            "type": "boolean"
          },
          "enableResourceSelection": {
            "type": "boolean"
          },
          "resources": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Models.Resource"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Models.ResourceUrl": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64"
          },
          "url": {
            "type": "string",
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "resourceId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "resource": {
            "$ref": "#/components/schemas/Models.Resource"
          }
        },
        "additionalProperties": false
      },
      "Models.Role": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "roleUserActions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Models.RoleUserAction"
            },
            "nullable": true
          },
          "users": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Models.UserRole"
            },
            "nullable": true
          },
          "userGroups": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Models.UserGroupRole"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Models.RoleUserAction": {
        "type": "object",
        "properties": {
          "roleId": {
            "type": "integer",
            "format": "int32"
          },
          "role": {
            "$ref": "#/components/schemas/Models.Role"
          },
          "userActionId": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "Models.SchedulingMode": {
        "enum": [
          0,
          1,
          2,
          3
        ],
        "type": "integer",
        "format": "int32",
        "x-enumNames": [
          "Normal",
          "FixedDuration",
          "EffortDriven",
          "DynamicAssignment"
        ],
        "x-enum-varnames": [
          "Normal",
          "FixedDuration",
          "EffortDriven",
          "DynamicAssignment"
        ]
      },
      "Models.Severity": {
        "enum": [
          0,
          1,
          2,
          4,
          8,
          16
        ],
        "type": "integer",
        "format": "int32",
        "x-enumNames": [
          "Verbose",
          "Debug",
          "Info",
          "Warning",
          "Error",
          "Fatal"
        ],
        "x-enum-varnames": [
          "Verbose",
          "Debug",
          "Info",
          "Warning",
          "Error",
          "Fatal"
        ]
      },
      "Models.StoredProcedureData": {
        "type": "object",
        "properties": {
          "storedProcedureName": {
            "type": "string",
            "nullable": true
          },
          "parameterNames": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "parameterValues": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Models.Task": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "startDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "endDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "baselineStartDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "baselineEndDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "deadlineDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "baselinePercentDone": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "perpetuation": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "durationUnit": {
            "$ref": "#/components/schemas/Models.DurationUnit"
          },
          "schedulingMode": {
            "$ref": "#/components/schemas/Models.SchedulingMode"
          },
          "percentDone": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "index": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "expanded": {
            "type": "boolean"
          },
          "effort": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "effortUnit": {
            "$ref": "#/components/schemas/Models.DurationUnit"
          },
          "note": {
            "type": "string",
            "nullable": true
          },
          "constraintType": {
            "$ref": "#/components/schemas/Models.ConstraintType"
          },
          "constraintDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "manuallyScheduled": {
            "type": "boolean"
          },
          "draggable": {
            "type": "boolean"
          },
          "resizable": {
            "type": "boolean"
          },
          "rollup": {
            "type": "boolean"
          },
          "showInTimeline": {
            "type": "boolean"
          },
          "leaf": {
            "type": "boolean",
            "readOnly": true
          },
          "parentId": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "parent": {
            "$ref": "#/components/schemas/Models.Task"
          },
          "calendarId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "calendar": {
            "$ref": "#/components/schemas/Models.Calendar"
          },
          "segments": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Models.TaskSegment"
            },
            "nullable": true
          },
          "children": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Models.Task"
            },
            "nullable": true
          },
          "assignments": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Models.TaskAssignment"
            },
            "nullable": true
          },
          "predecessors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Models.TaskDependency"
            },
            "nullable": true
          },
          "successors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Models.TaskDependency"
            },
            "nullable": true
          },
          "taskType": {
            "$ref": "#/components/schemas/Models.TaskType"
          },
          "shortDescription": {
            "type": "string",
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "taskNo": {
            "type": "string",
            "nullable": true
          },
          "type": {
            "type": "string",
            "nullable": true
          },
          "serviceNo": {
            "type": "string",
            "nullable": true
          },
          "serviceGroup": {
            "type": "string",
            "nullable": true
          },
          "serviceClass": {
            "type": "string",
            "nullable": true
          },
          "serviceSerialNo": {
            "type": "string",
            "nullable": true
          },
          "serviceName": {
            "type": "string",
            "nullable": true
          },
          "irisFault": {
            "type": "string",
            "nullable": true
          },
          "irisSymptom": {
            "type": "string",
            "nullable": true
          },
          "irisArea": {
            "type": "string",
            "nullable": true
          },
          "irisReason": {
            "type": "string",
            "nullable": true
          },
          "irisResolution": {
            "type": "string",
            "nullable": true
          },
          "skill1": {
            "type": "string",
            "nullable": true
          },
          "skill2": {
            "type": "string",
            "nullable": true
          },
          "skill3": {
            "type": "string",
            "nullable": true
          },
          "contractNo": {
            "type": "string",
            "nullable": true
          },
          "contractType": {
            "type": "string",
            "nullable": true
          },
          "contractDescription": {
            "type": "string",
            "nullable": true
          },
          "contractStartDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "contractEndDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "partsWarrantyStartDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "partsWarrantyEndDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "laborWarrantyStartDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "laborWarrantyEndDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "importance": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "status": {
            "type": "string",
            "nullable": true
          },
          "expectedResponseDateTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "actualResponseDateTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "requestedStartDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "requestedEndDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "requestedStartTime": {
            "type": "string",
            "format": "date-span",
            "nullable": true
          },
          "requestedEndTime": {
            "type": "string",
            "format": "date-span",
            "nullable": true
          },
          "confirmedStartDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "confirmedEndDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "actualStartDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "actualEndDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "locationDescription": {
            "type": "string",
            "nullable": true
          },
          "duration": {
            "type": "string",
            "format": "date-span",
            "nullable": true
          },
          "timestamp": {
            "type": "string",
            "format": "byte",
            "nullable": true
          },
          "subject": {
            "type": "string",
            "nullable": true
          },
          "body": {
            "type": "string",
            "nullable": true
          },
          "infiniteTask": {
            "type": "boolean"
          },
          "taskOpenAsOf": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "taskOpenTill": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "requiredTotalDuration": {
            "type": "string",
            "format": "date-span",
            "nullable": true
          },
          "requiredNoResources": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "appointmentEarliestAllowed": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "appointmentLatestAllowed": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "freeText1": {
            "type": "string",
            "nullable": true
          },
          "freeText2": {
            "type": "string",
            "nullable": true
          },
          "freeText3": {
            "type": "string",
            "nullable": true
          },
          "freeText4": {
            "type": "string",
            "nullable": true
          },
          "freeText5": {
            "type": "string",
            "nullable": true
          },
          "freeText6": {
            "type": "string",
            "nullable": true
          },
          "freeText7": {
            "type": "string",
            "nullable": true
          },
          "freeText8": {
            "type": "string",
            "nullable": true
          },
          "freeText9": {
            "type": "string",
            "nullable": true
          },
          "freeText10": {
            "type": "string",
            "nullable": true
          },
          "freeText11": {
            "type": "string",
            "nullable": true
          },
          "freeText12": {
            "type": "string",
            "nullable": true
          },
          "freeText13": {
            "type": "string",
            "nullable": true
          },
          "freeText14": {
            "type": "string",
            "nullable": true
          },
          "freeText15": {
            "type": "string",
            "nullable": true
          },
          "freeText16": {
            "type": "string",
            "nullable": true
          },
          "freeText17": {
            "type": "string",
            "nullable": true
          },
          "freeText18": {
            "type": "string",
            "nullable": true
          },
          "freeText19": {
            "type": "string",
            "nullable": true
          },
          "freeText20": {
            "type": "string",
            "nullable": true
          },
          "freeDecimal1": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "freeDecimal2": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "freeDecimal3": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "freeDecimal4": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "freeDecimal5": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "freeDate1": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "freeDate2": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "freeDate3": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "freeDate4": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "freeDate5": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "freeBit1": {
            "type": "boolean"
          },
          "freeBit2": {
            "type": "boolean"
          },
          "freeBit3": {
            "type": "boolean"
          },
          "freeBit4": {
            "type": "boolean"
          },
          "freeBit5": {
            "type": "boolean"
          },
          "preventSynch": {
            "type": "boolean"
          },
          "durationInSeconds": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "certificateNo": {
            "type": "string",
            "nullable": true
          },
          "requiredTotalDurationInSeconds": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "actualTotalDurationInSeconds": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "actualNoResources": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "remainingDurationInSeconds": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "remainingNoResources": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "displayRequiredDuration": {
            "type": "string",
            "nullable": true
          },
          "displayActualDuration": {
            "type": "string",
            "nullable": true
          },
          "displayRemainingDuration": {
            "type": "string",
            "nullable": true
          },
          "doNotCountAppointmentResource": {
            "type": "boolean"
          },
          "isOpenTask": {
            "type": "boolean"
          },
          "isComplete": {
            "type": "boolean"
          },
          "planningUOM": {
            "type": "string",
            "nullable": true
          },
          "planningUOMConversion": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "planningQty": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "useFixPlanningQty": {
            "type": "boolean"
          },
          "roundToUOM": {
            "type": "boolean"
          },
          "bulkPlanningQty": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "ignoreCalendars": {
            "type": "boolean"
          },
          "jobId": {
            "type": "integer",
            "format": "int64"
          },
          "job": {
            "$ref": "#/components/schemas/Models.Job"
          },
          "categoryId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "category": {
            "$ref": "#/components/schemas/Models.Category"
          },
          "timeMarkerId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "timeMarker": {
            "$ref": "#/components/schemas/Models.TimeMarker"
          },
          "pinId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "pin": {
            "$ref": "#/components/schemas/Models.Pin"
          },
          "tags": {
            "type": "string",
            "nullable": true
          },
          "appointmentTemplateId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "appointmentTemplate": {
            "$ref": "#/components/schemas/Models.AppointmentTemplate"
          },
          "appointments": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Models.Appointment"
            },
            "nullable": true
          },
          "taskUrls": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Models.TaskUrl"
            },
            "nullable": true
          },
          "taskFilterValues": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Models.TaskFilterValue"
            },
            "nullable": true
          },
          "notifications": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Models.Notification"
            },
            "nullable": true
          },
          "calendars": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Models.TaskCalendar"
            },
            "nullable": true
          },
          "containers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Models.TaskContainer"
            },
            "nullable": true
          },
          "budgetEntries": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Models.TaskBudgetEntry"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Models.TaskAssignment": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64"
          },
          "units": {
            "type": "number",
            "format": "double"
          },
          "modified": {
            "type": "boolean"
          },
          "taskId": {
            "type": "integer",
            "format": "int64"
          },
          "task": {
            "$ref": "#/components/schemas/Models.Task"
          },
          "resourceId": {
            "type": "integer",
            "format": "int32"
          },
          "resource": {
            "$ref": "#/components/schemas/Models.Resource"
          },
          "startDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "endDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "quantity": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "quantityUnit": {
            "$ref": "#/components/schemas/Models.AllocationUnit"
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "externalId": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "jobId": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "requirementId": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "assignments": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Models.Assignment"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Models.TaskBudgetEntry": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64"
          },
          "taskId": {
            "type": "integer",
            "format": "int64"
          },
          "task": {
            "$ref": "#/components/schemas/Models.Task"
          },
          "source": {
            "$ref": "#/components/schemas/Models.BudgetEntrySource"
          },
          "deltaInSeconds": {
            "type": "integer",
            "format": "int64"
          },
          "periodStart": {
            "type": "string",
            "format": "date"
          },
          "periodEnd": {
            "type": "string",
            "format": "date"
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "externalId": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "createdDate": {
            "type": "string",
            "format": "date-time"
          },
          "createdUser": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Models.TaskCalendar": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "entityId": {
            "type": "integer",
            "format": "int64"
          },
          "entity": {
            "$ref": "#/components/schemas/Models.Task"
          },
          "calendarId": {
            "type": "integer",
            "format": "int32"
          },
          "calendar": {
            "$ref": "#/components/schemas/Models.Calendar"
          },
          "startDate": {
            "type": "string",
            "format": "date"
          },
          "endDate": {
            "type": "string",
            "format": "date"
          }
        },
        "additionalProperties": false
      },
      "Models.TaskContainer": {
        "type": "object",
        "properties": {
          "index": {
            "type": "integer",
            "format": "int32"
          },
          "taskId": {
            "type": "integer",
            "format": "int64"
          },
          "task": {
            "$ref": "#/components/schemas/Models.Task"
          },
          "containerId": {
            "type": "integer",
            "format": "int64"
          },
          "container": {
            "$ref": "#/components/schemas/Models.Container"
          }
        },
        "additionalProperties": false
      },
      "Models.TaskDependency": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "type": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "cls": {
            "type": "string",
            "nullable": true
          },
          "lag": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "lagUnit": {
            "type": "string",
            "nullable": true
          },
          "fromId": {
            "type": "integer",
            "format": "int64"
          },
          "from": {
            "$ref": "#/components/schemas/Models.Task"
          },
          "toId": {
            "type": "integer",
            "format": "int64"
          },
          "to": {
            "$ref": "#/components/schemas/Models.Task"
          }
        },
        "additionalProperties": false
      },
      "Models.TaskFilterValue": {
        "type": "object",
        "properties": {
          "filterGroupId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "filterValueId": {
            "type": "integer",
            "format": "int32"
          },
          "filterValue": {
            "$ref": "#/components/schemas/Models.FilterValue"
          },
          "taskId": {
            "type": "integer",
            "format": "int64"
          },
          "task": {
            "$ref": "#/components/schemas/Models.Task"
          }
        },
        "additionalProperties": false
      },
      "Models.TaskSegment": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "startDate": {
            "type": "string",
            "format": "date-time"
          },
          "endDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "duration": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "durationUnit": {
            "type": "string",
            "nullable": true
          },
          "cls": {
            "type": "string",
            "nullable": true
          },
          "taskId": {
            "type": "integer",
            "format": "int64"
          },
          "task": {
            "$ref": "#/components/schemas/Models.Task"
          }
        },
        "additionalProperties": false
      },
      "Models.TaskType": {
        "enum": [
          0,
          1
        ],
        "type": "integer",
        "format": "int32",
        "x-enumNames": [
          "Planning",
          "Project"
        ],
        "x-enum-varnames": [
          "Planning",
          "Project"
        ]
      },
      "Models.TaskUrl": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64"
          },
          "url": {
            "type": "string",
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "taskId": {
            "type": "integer",
            "format": "int64"
          },
          "task": {
            "$ref": "#/components/schemas/Models.Task"
          }
        },
        "additionalProperties": false
      },
      "Models.TimeEntryStatus": {
        "enum": [
          0,
          1,
          2,
          3,
          4,
          5
        ],
        "type": "integer",
        "format": "int32",
        "x-enumNames": [
          "Draft",
          "Submitting",
          "Accepted",
          "Failed",
          "Approved",
          "Rejected"
        ],
        "x-enum-varnames": [
          "Draft",
          "Submitting",
          "Accepted",
          "Failed",
          "Approved",
          "Rejected"
        ]
      },
      "Models.TimeMarker": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "color": {
            "type": "string",
            "nullable": true
          },
          "hiddenToUser": {
            "type": "boolean"
          },
          "tasks": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Models.Task"
            },
            "nullable": true
          },
          "appointments": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Models.Appointment"
            },
            "nullable": true
          },
          "users": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Models.UserTimeMarker"
            },
            "nullable": true
          },
          "userGroups": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Models.UserGroupTimeMarker"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Models.TimeSessionType": {
        "enum": [
          0,
          1,
          2
        ],
        "type": "integer",
        "format": "int32",
        "x-enumNames": [
          "Work",
          "Travel",
          "Waiting"
        ],
        "x-enum-varnames": [
          "Work",
          "Travel",
          "Waiting"
        ]
      },
      "Models.Transaction": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64"
          },
          "type": {
            "$ref": "#/components/schemas/Models.PluginType"
          },
          "action": {
            "$ref": "#/components/schemas/Models.Crud"
          },
          "status": {
            "$ref": "#/components/schemas/Models.TransactionStatus"
          },
          "source": {
            "$ref": "#/components/schemas/Models.TransactionSource"
          },
          "date": {
            "type": "string",
            "format": "date-time"
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "connectorId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "connector": {
            "$ref": "#/components/schemas/Models.Connector"
          },
          "modifiedBy": {
            "type": "string",
            "nullable": true
          },
          "appointmentId": {
            "type": "integer",
            "format": "int64"
          },
          "appointment": {
            "$ref": "#/components/schemas/Models.Appointment"
          }
        },
        "additionalProperties": false
      },
      "Models.TransactionSource": {
        "enum": [
          0,
          1,
          2
        ],
        "type": "integer",
        "format": "int32",
        "x-enumNames": [
          "Service",
          "WebSite",
          "Job"
        ],
        "x-enum-varnames": [
          "Service",
          "WebSite",
          "Job"
        ]
      },
      "Models.TransactionStatus": {
        "enum": [
          0,
          2,
          3,
          4,
          5,
          6,
          7,
          8
        ],
        "type": "integer",
        "format": "int32",
        "x-enumNames": [
          "Success",
          "BackOfficeNotAllowed",
          "EmptyBackOffice",
          "InvalidBackOfficeSettings",
          "InvalidBackOfficeType",
          "WrongUrl",
          "Skipped",
          "Failed"
        ],
        "x-enum-varnames": [
          "Success",
          "BackOfficeNotAllowed",
          "EmptyBackOffice",
          "InvalidBackOfficeSettings",
          "InvalidBackOfficeType",
          "WrongUrl",
          "Skipped",
          "Failed"
        ]
      },
      "Models.UnitOfDistance": {
        "enum": [
          1,
          2
        ],
        "type": "integer",
        "format": "int32",
        "x-enumNames": [
          "Km",
          "Mi"
        ],
        "x-enum-varnames": [
          "Km",
          "Mi"
        ]
      },
      "Models.User": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "authenticationType": {
            "type": "string",
            "nullable": true
          },
          "email": {
            "type": "string",
            "nullable": true
          },
          "language": {
            "type": "string",
            "nullable": true
          },
          "timeZone": {
            "type": "string",
            "nullable": true
          },
          "userGroups": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Models.UserGroupUser"
            },
            "nullable": true
          },
          "profiles": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Models.Profile"
            },
            "nullable": true
          },
          "userProfiles": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Models.UserProfile"
            },
            "nullable": true
          },
          "userCategories": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Models.UserCategory"
            },
            "nullable": true
          },
          "userTimeMarkers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Models.UserTimeMarker"
            },
            "nullable": true
          },
          "userFilterValues": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Models.UserFilterValue"
            },
            "nullable": true
          },
          "userRoles": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Models.UserRole"
            },
            "nullable": true
          },
          "layouts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Models.UserDefinedLayout"
            },
            "nullable": true
          },
          "filters": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Models.UserDefinedFilter"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Models.UserCategory": {
        "type": "object",
        "properties": {
          "categoryId": {
            "type": "integer",
            "format": "int32"
          },
          "category": {
            "$ref": "#/components/schemas/Models.Category"
          },
          "entityId": {
            "type": "integer",
            "format": "int32"
          },
          "entity": {
            "$ref": "#/components/schemas/Models.User"
          }
        },
        "additionalProperties": false
      },
      "Models.UserDefinedFilter": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "value": {
            "type": "string",
            "nullable": true
          },
          "public": {
            "type": "boolean"
          },
          "userGroupId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "userGroup": {
            "$ref": "#/components/schemas/Models.UserGroup"
          },
          "userId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "user": {
            "$ref": "#/components/schemas/Models.User"
          },
          "profileFilters": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Models.ProfileFilter"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Models.UserDefinedLayout": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "code": {
            "type": "string",
            "nullable": true
          },
          "layout": {
            "type": "string",
            "nullable": true
          },
          "layoutContext": {
            "type": "string",
            "nullable": true
          },
          "parameters": {
            "type": "string",
            "nullable": true
          },
          "public": {
            "type": "boolean"
          },
          "userGroupId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "userGroup": {
            "$ref": "#/components/schemas/Models.UserGroup"
          },
          "userId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "user": {
            "$ref": "#/components/schemas/Models.User"
          },
          "profileLayouts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Models.ProfileLayout"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Models.UserFilterValue": {
        "type": "object",
        "properties": {
          "filterValueId": {
            "type": "integer",
            "format": "int32"
          },
          "filterValue": {
            "$ref": "#/components/schemas/Models.FilterValue"
          },
          "entityId": {
            "type": "integer",
            "format": "int32"
          },
          "entity": {
            "$ref": "#/components/schemas/Models.User"
          }
        },
        "additionalProperties": false
      },
      "Models.UserGroup": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "users": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Models.UserGroupUser"
            },
            "nullable": true
          },
          "profiles": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Models.Profile"
            },
            "nullable": true
          },
          "userGroupProfiles": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Models.UserGroupProfile"
            },
            "nullable": true
          },
          "userDefinedLayouts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Models.UserDefinedLayout"
            },
            "nullable": true
          },
          "userDefinedFilters": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Models.UserDefinedFilter"
            },
            "nullable": true
          },
          "userGroupCategories": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Models.UserGroupCategory"
            },
            "nullable": true
          },
          "userGroupTimeMarkers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Models.UserGroupTimeMarker"
            },
            "nullable": true
          },
          "userGroupFilterValues": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Models.UserGroupFilterValue"
            },
            "nullable": true
          },
          "userGroupRoles": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Models.UserGroupRole"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Models.UserGroupCategory": {
        "type": "object",
        "properties": {
          "categoryId": {
            "type": "integer",
            "format": "int32"
          },
          "category": {
            "$ref": "#/components/schemas/Models.Category"
          },
          "entityId": {
            "type": "integer",
            "format": "int32"
          },
          "entity": {
            "$ref": "#/components/schemas/Models.UserGroup"
          }
        },
        "additionalProperties": false
      },
      "Models.UserGroupFilterValue": {
        "type": "object",
        "properties": {
          "filterValueId": {
            "type": "integer",
            "format": "int32"
          },
          "filterValue": {
            "$ref": "#/components/schemas/Models.FilterValue"
          },
          "entityId": {
            "type": "integer",
            "format": "int32"
          },
          "entity": {
            "$ref": "#/components/schemas/Models.UserGroup"
          }
        },
        "additionalProperties": false
      },
      "Models.UserGroupProfile": {
        "type": "object",
        "properties": {
          "profileId": {
            "type": "integer",
            "format": "int32"
          },
          "profile": {
            "$ref": "#/components/schemas/Models.Profile"
          },
          "entityId": {
            "type": "integer",
            "format": "int32"
          },
          "entity": {
            "$ref": "#/components/schemas/Models.UserGroup"
          },
          "default": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "Models.UserGroupRole": {
        "type": "object",
        "properties": {
          "roleId": {
            "type": "integer",
            "format": "int32"
          },
          "role": {
            "$ref": "#/components/schemas/Models.Role"
          },
          "entityId": {
            "type": "integer",
            "format": "int32"
          },
          "entity": {
            "$ref": "#/components/schemas/Models.UserGroup"
          }
        },
        "additionalProperties": false
      },
      "Models.UserGroupTimeMarker": {
        "type": "object",
        "properties": {
          "timeMarkerId": {
            "type": "integer",
            "format": "int32"
          },
          "timeMarker": {
            "$ref": "#/components/schemas/Models.TimeMarker"
          },
          "entityId": {
            "type": "integer",
            "format": "int32"
          },
          "entity": {
            "$ref": "#/components/schemas/Models.UserGroup"
          }
        },
        "additionalProperties": false
      },
      "Models.UserGroupUser": {
        "type": "object",
        "properties": {
          "userGroupId": {
            "type": "integer",
            "format": "int32"
          },
          "userGroup": {
            "$ref": "#/components/schemas/Models.UserGroup"
          },
          "userId": {
            "type": "integer",
            "format": "int32"
          },
          "user": {
            "$ref": "#/components/schemas/Models.User"
          }
        },
        "additionalProperties": false
      },
      "Models.UserProfile": {
        "type": "object",
        "properties": {
          "profileId": {
            "type": "integer",
            "format": "int32"
          },
          "profile": {
            "$ref": "#/components/schemas/Models.Profile"
          },
          "entityId": {
            "type": "integer",
            "format": "int32"
          },
          "entity": {
            "$ref": "#/components/schemas/Models.User"
          },
          "default": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "Models.UserRole": {
        "type": "object",
        "properties": {
          "roleId": {
            "type": "integer",
            "format": "int32"
          },
          "role": {
            "$ref": "#/components/schemas/Models.Role"
          },
          "entityId": {
            "type": "integer",
            "format": "int32"
          },
          "entity": {
            "$ref": "#/components/schemas/Models.User"
          }
        },
        "additionalProperties": false
      },
      "Models.UserTimeMarker": {
        "type": "object",
        "properties": {
          "timeMarkerId": {
            "type": "integer",
            "format": "int32"
          },
          "timeMarker": {
            "$ref": "#/components/schemas/Models.TimeMarker"
          },
          "entityId": {
            "type": "integer",
            "format": "int32"
          },
          "entity": {
            "$ref": "#/components/schemas/Models.User"
          }
        },
        "additionalProperties": false
      },
      "System.Net.HttpStatusCode": {
        "enum": [
          100,
          101,
          102,
          103,
          200,
          201,
          202,
          203,
          204,
          205,
          206,
          207,
          208,
          226,
          300,
          301,
          302,
          303,
          304,
          305,
          306,
          307,
          308,
          400,
          401,
          402,
          403,
          404,
          405,
          406,
          407,
          408,
          409,
          410,
          411,
          412,
          413,
          414,
          415,
          416,
          417,
          421,
          422,
          423,
          424,
          426,
          428,
          429,
          431,
          451,
          500,
          501,
          502,
          503,
          504,
          505,
          506,
          507,
          508,
          510,
          511
        ],
        "type": "integer",
        "format": "int32",
        "x-enumNames": [
          "Continue",
          "SwitchingProtocols",
          "Processing",
          "EarlyHints",
          "OK",
          "Created",
          "Accepted",
          "NonAuthoritativeInformation",
          "NoContent",
          "ResetContent",
          "PartialContent",
          "MultiStatus",
          "AlreadyReported",
          "IMUsed",
          "MultipleChoices",
          "Ambiguous",
          "MovedPermanently",
          "Moved",
          "Found",
          "Redirect",
          "SeeOther",
          "RedirectMethod",
          "NotModified",
          "UseProxy",
          "Unused",
          "TemporaryRedirect",
          "RedirectKeepVerb",
          "PermanentRedirect",
          "BadRequest",
          "Unauthorized",
          "PaymentRequired",
          "Forbidden",
          "NotFound",
          "MethodNotAllowed",
          "NotAcceptable",
          "ProxyAuthenticationRequired",
          "RequestTimeout",
          "Conflict",
          "Gone",
          "LengthRequired",
          "PreconditionFailed",
          "RequestEntityTooLarge",
          "RequestUriTooLong",
          "UnsupportedMediaType",
          "RequestedRangeNotSatisfiable",
          "ExpectationFailed",
          "MisdirectedRequest",
          "UnprocessableEntity",
          "UnprocessableContent",
          "Locked",
          "FailedDependency",
          "UpgradeRequired",
          "PreconditionRequired",
          "TooManyRequests",
          "RequestHeaderFieldsTooLarge",
          "UnavailableForLegalReasons",
          "InternalServerError",
          "NotImplemented",
          "BadGateway",
          "ServiceUnavailable",
          "GatewayTimeout",
          "HttpVersionNotSupported",
          "VariantAlsoNegotiates",
          "InsufficientStorage",
          "LoopDetected",
          "NotExtended",
          "NetworkAuthenticationRequired"
        ],
        "x-enum-varnames": [
          "Continue",
          "SwitchingProtocols",
          "Processing",
          "EarlyHints",
          "OK",
          "Created",
          "Accepted",
          "NonAuthoritativeInformation",
          "NoContent",
          "ResetContent",
          "PartialContent",
          "MultiStatus",
          "AlreadyReported",
          "IMUsed",
          "MultipleChoices",
          "Ambiguous",
          "MovedPermanently",
          "Moved",
          "Found",
          "Redirect",
          "SeeOther",
          "RedirectMethod",
          "NotModified",
          "UseProxy",
          "Unused",
          "TemporaryRedirect",
          "RedirectKeepVerb",
          "PermanentRedirect",
          "BadRequest",
          "Unauthorized",
          "PaymentRequired",
          "Forbidden",
          "NotFound",
          "MethodNotAllowed",
          "NotAcceptable",
          "ProxyAuthenticationRequired",
          "RequestTimeout",
          "Conflict",
          "Gone",
          "LengthRequired",
          "PreconditionFailed",
          "RequestEntityTooLarge",
          "RequestUriTooLong",
          "UnsupportedMediaType",
          "RequestedRangeNotSatisfiable",
          "ExpectationFailed",
          "MisdirectedRequest",
          "UnprocessableEntity",
          "UnprocessableContent",
          "Locked",
          "FailedDependency",
          "UpgradeRequired",
          "PreconditionRequired",
          "TooManyRequests",
          "RequestHeaderFieldsTooLarge",
          "UnavailableForLegalReasons",
          "InternalServerError",
          "NotImplemented",
          "BadGateway",
          "ServiceUnavailable",
          "GatewayTimeout",
          "HttpVersionNotSupported",
          "VariantAlsoNegotiates",
          "InsufficientStorage",
          "LoopDetected",
          "NotExtended",
          "NetworkAuthenticationRequired"
        ]
      },
      "TurtleRoute.GeoCoordinate": {
        "type": "object",
        "properties": {
          "latitude": {
            "type": "number",
            "format": "double"
          },
          "longitude": {
            "type": "number",
            "format": "double"
          }
        },
        "additionalProperties": false
      }
    },
    "securitySchemes": {
      "Bearer": {
        "type": "http",
        "description": "JWT Authorization header using the Bearer scheme. <br />\r\n                      Enter 'Bearer' [space], followed by the token in the text field below. <br />\r\n                      Example: 'Bearer 12345abcdef' <br />\r\n                      <strong>Authentication is required for all endpoints.</strong>",
        "scheme": "bearer",
        "bearerFormat": "JWT"
      },
      "X-API-KEY": {
        "type": "apiKey",
        "description": "API key authentication. Create a key in Dime.Scheduler and enter it in the text field below. <br />\r\n                      <strong>Authentication is required for all endpoints.</strong>",
        "name": "X-API-KEY",
        "in": "header"
      }
    }
  },
  "security": [
    { }
  ],
  "tags": [
    {
      "name": "Action URI"
    },
    {
      "name": "Appointment"
    },
    {
      "name": "Appointment Attribute"
    },
    {
      "name": "Appointment Container"
    },
    {
      "name": "Appointment Dependencies"
    },
    {
      "name": "Appointment Field"
    },
    {
      "name": "Appointment Field Value"
    },
    {
      "name": "Appointment Time Marker"
    },
    {
      "name": "Appointment URI"
    },
    {
      "name": "Assignment"
    },
    {
      "name": "Calendar"
    },
    {
      "name": "Caption"
    },
    {
      "name": "Category"
    },
    {
      "name": "Connector"
    },
    {
      "name": "Container"
    },
    {
      "name": "Filter Group"
    },
    {
      "name": "Filter Value"
    },
    {
      "name": "Geocode"
    },
    {
      "name": "Import"
    },
    {
      "name": "Job"
    },
    {
      "name": "Message"
    },
    {
      "name": "Notification"
    },
    {
      "name": "Optimization"
    },
    {
      "name": "Pin"
    },
    {
      "name": "Project Member"
    },
    {
      "name": "Recommendation"
    },
    {
      "name": "Recurring Appointment"
    },
    {
      "name": "Resource"
    },
    {
      "name": "Resource Calendar"
    },
    {
      "name": "Resource Capacity"
    },
    {
      "name": "Resource Certificate"
    },
    {
      "name": "Resource Filter Value"
    },
    {
      "name": "Resource GPS Tracking"
    },
    {
      "name": "Resource Type"
    },
    {
      "name": "Resource URI"
    },
    {
      "name": "Tag"
    },
    {
      "name": "Task"
    },
    {
      "name": "Task Assignment"
    },
    {
      "name": "Task Budget Entry"
    },
    {
      "name": "Task Container"
    },
    {
      "name": "Task Dependency"
    },
    {
      "name": "Task Filter Value"
    },
    {
      "name": "Task Lock"
    },
    {
      "name": "Task URI"
    },
    {
      "name": "Time Entry"
    },
    {
      "name": "Time Marker"
    },
    {
      "name": "Time Session"
    },
    {
      "name": "Token"
    },
    {
      "name": "User"
    }
  ]
}