{
  "openapi": "3.0.1",
  "info": {
    "title": "BigChange DX",
    "description": "Developer Experience API",
    "version": "1.0"
  },
  "servers": [
    {
      "url": "https://api.bigchange.com"
    }
  ],
  "paths": {
    "/v1/contactGroups": {
      "get": {
        "tags": [
          "ContactGroups"
        ],
        "summary": "Get a list of contact groups",
        "description": "Retrieve a paged collection of contact groups (required scope contacts:read)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "sortBy",
            "in": "query",
            "description": "The field to sort items in the page by",
            "schema": {
              "$ref": "#/components/schemas/ContactGroupSortOptions"
            }
          },
          {
            "name": "direction",
            "in": "query",
            "description": "The direction to apply the sort",
            "schema": {
              "$ref": "#/components/schemas/SortDirection"
            }
          },
          {
            "name": "name",
            "in": "query",
            "description": "Only return contact groups where `name` matches or starts with the value provided",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "id",
            "in": "query",
            "description": "Only return contact groups where `id` matches the value(s) provided (Max items: 50)",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int64"
              }
            }
          },
          {
            "name": "pageNumber",
            "in": "query",
            "description": "The page number being requested (minimum: 1, maximum: 2147483)",
            "schema": {
              "maximum": 2147483,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The page size being requested (minimum: 1, maximum: 1000)",
            "schema": {
              "maximum": 1000,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedResponseReadContactGroupModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "ContactGroups"
        ],
        "summary": "Create a contact group",
        "description": "Create a new contact group (required scope contacts:write)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "requestBody": {
          "description": "Create contact group model",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateContactGroupModel"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostResponseInt64"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v1/contactGroups/{contactGroupId}": {
      "get": {
        "tags": [
          "ContactGroups"
        ],
        "summary": "Get a contact group",
        "description": "Retrieve the details of a single contact group (required scope contacts:read)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "contactGroupId",
            "in": "path",
            "description": "The unique identifier of the contact group",
            "required": true,
            "schema": {
              "maximum": 9223372036854776000,
              "minimum": 1,
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReadContactGroupModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "ContactGroups"
        ],
        "summary": "Update a contact group",
        "description": "Update the details of a single contact group (required scope contacts:write)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "contactGroupId",
            "in": "path",
            "description": "Contact group id",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "requestBody": {
          "description": "Model used to update contact group. At least one optional value must be provided",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateContactGroupModel"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v1/contacts": {
      "get": {
        "tags": [
          "Contacts"
        ],
        "summary": "Get a list of contacts",
        "description": "Retrieve a paged collection of contacts (required scope contacts:read)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "sortBy",
            "in": "query",
            "description": "The field to sort items in the page by",
            "schema": {
              "$ref": "#/components/schemas/ContactSortOptions"
            }
          },
          {
            "name": "direction",
            "in": "query",
            "description": "The direction to apply the sort",
            "schema": {
              "$ref": "#/components/schemas/SortDirection"
            }
          },
          {
            "name": "status",
            "in": "query",
            "description": "Only return contacts where `status` matches the value provided",
            "schema": {
              "$ref": "#/components/schemas/AccountStatus"
            }
          },
          {
            "name": "name",
            "in": "query",
            "description": "Only return contacts where `name` matches or starts with the value provided",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "reference",
            "in": "query",
            "description": "Only return contacts where `reference` matches the value(s) provided (Max items: 50)",
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "id",
            "in": "query",
            "description": "Only return contacts where `id` matches the value(s) provided (Max items: 50)",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int64"
              }
            }
          },
          {
            "name": "parentId",
            "in": "query",
            "description": "Only return contacts where `parentId` matches the value(s) provided (Max items: 50)",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int64"
              }
            }
          },
          {
            "name": "groupId",
            "in": "query",
            "description": "Only return contacts where `groupId` matches the value(s) provided (Max items: 50)",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int64"
              }
            }
          },
          {
            "name": "pageNumber",
            "in": "query",
            "description": "The page number being requested (minimum: 1, maximum: 2147483)",
            "schema": {
              "maximum": 2147483,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The page size being requested (minimum: 1, maximum: 1000)",
            "schema": {
              "maximum": 1000,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedResponseReadContactModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Contacts"
        ],
        "summary": "Create a contact",
        "description": "Create a new contact (required scope contacts:write)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "requestBody": {
          "description": "Create contact model",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateContactModel"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostResponseInt64"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v1/contacts/{contactId}": {
      "get": {
        "tags": [
          "Contacts"
        ],
        "summary": "Get a contact",
        "description": "Retrieve the details of a single contact (required scope contacts:read)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "contactId",
            "in": "path",
            "description": "The unique identifier of the contact",
            "required": true,
            "schema": {
              "maximum": 9223372036854776000,
              "minimum": 1,
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReadContactModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Contacts"
        ],
        "summary": "Update a contact",
        "description": "Update the details of a single contact (required scope contacts:write)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "contactId",
            "in": "path",
            "description": "Contact id",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "requestBody": {
          "description": "Model used to update contact. At least one optional value must be provided",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateContactModel"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v1/contacts/{contactId}/accessHours": {
      "get": {
        "tags": [
          "Contacts"
        ],
        "summary": "Get a list of site access hours",
        "description": "Retrieve a collection of access hours (required scope contacts:read)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "contactId",
            "in": "path",
            "description": "The unique identifier of the contact",
            "required": true,
            "schema": {
              "maximum": 9223372036854776000,
              "minimum": 1,
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "pageNumber",
            "in": "query",
            "description": "The page number being requested (minimum: 1, maximum: 2147483)",
            "schema": {
              "maximum": 2147483,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The page size being requested (minimum: 1, maximum: 1000)",
            "schema": {
              "maximum": 1000,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedResponseReadAccessHourModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Contacts"
        ],
        "summary": "Update a site access hours",
        "description": "Update the details of access hours for a contact (required scope contacts:write)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "contactId",
            "in": "path",
            "description": "Id of the contact",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "requestBody": {
          "description": "Access hours model used to update",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/UpdateAccessHourModel"
                }
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v1/contacts/{contactId}/stop": {
      "put": {
        "tags": [
          "Contacts"
        ],
        "summary": "Puts a contact on stop",
        "description": "Puts business dealings with a contact on stop, usually because they have outstanding payments. (required scope contacts:write)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "contactId",
            "in": "path",
            "description": "Contact id",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "requestBody": {
          "description": "Model representing stop contact operation",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/StopContactModel"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v1/contacts/{contactId}/unstop": {
      "put": {
        "tags": [
          "Contacts"
        ],
        "summary": "Unstops a contact",
        "description": "Resumes business dealings with a contact (required scope contacts:write)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "contactId",
            "in": "path",
            "description": "Contact id",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "requestBody": {
          "description": "The unstop contact model",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UnstopContactModel"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v1/departmentCodes": {
      "get": {
        "tags": [
          "ReferenceData"
        ],
        "summary": "Get a list of department codes",
        "description": "Retrieves a paged collection of department codes (required scope stock:read)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "sortBy",
            "in": "query",
            "description": "The field to sort items in the page by",
            "schema": {
              "$ref": "#/components/schemas/DepartmentCodeSortOptions"
            }
          },
          {
            "name": "direction",
            "in": "query",
            "description": "The direction to apply the sort",
            "schema": {
              "$ref": "#/components/schemas/SortDirection"
            }
          },
          {
            "name": "id",
            "in": "query",
            "description": "Only return department codes where 'id' matches the value(s) provided (Max items: 50)",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int64"
              }
            }
          },
          {
            "name": "pageNumber",
            "in": "query",
            "description": "The page number being requested (minimum: 1, maximum: 2147483)",
            "schema": {
              "maximum": 2147483,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The page size being requested (minimum: 1, maximum: 1000)",
            "schema": {
              "maximum": 1000,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedResponseReadDepartmentCodeModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v1/departmentCodes/{departmentCodeId}": {
      "get": {
        "tags": [
          "ReferenceData"
        ],
        "summary": "Retrieves the details of a single department code",
        "description": "Retrieve the details of a single department code (required scope stock:read)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "departmentCodeId",
            "in": "path",
            "description": "The unique identifier of the department code",
            "required": true,
            "schema": {
              "maximum": 9223372036854776000,
              "minimum": 1,
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReadDepartmentCodeModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v1/finance/invoices": {
      "get": {
        "tags": [
          "Invoices"
        ],
        "summary": "Get a list of invoices",
        "description": "Retrieve a paged collection of invoices. At least one filter (invoiceId, jobId, jobGroupId, contactId, reference, or createdAtFrom/createdAtTo) is required. (required scope finance:read)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "sortBy",
            "in": "query",
            "description": "The field to sort items in the page by",
            "schema": {
              "$ref": "#/components/schemas/InvoiceSortOptions"
            }
          },
          {
            "name": "direction",
            "in": "query",
            "description": "The direction to apply the sort",
            "schema": {
              "$ref": "#/components/schemas/SortDirection"
            }
          },
          {
            "name": "id",
            "in": "query",
            "description": "Only return invoices where `id` matches the value(s) provided (Max items: 50)",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int64"
              }
            }
          },
          {
            "name": "jobId",
            "in": "query",
            "description": "Only return invoices where `jobId` matches the value(s) provided (Max items: 50)",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int64"
              }
            }
          },
          {
            "name": "jobGroupId",
            "in": "query",
            "description": "Only return invoices where `jobGroupId` matches the value(s) provided (Max items: 50)",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int64"
              }
            }
          },
          {
            "name": "contactId",
            "in": "query",
            "description": "Only return invoices where `contactId` matches the value(s) provided (Max items: 50)",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int64"
              }
            }
          },
          {
            "name": "reference",
            "in": "query",
            "description": "Only return invoices where `reference` matches the value(s) provided (Max items: 50)",
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "createdAtFrom",
            "in": "query",
            "description": "Only return invoices created at or after this date (inclusive)",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "createdAtTo",
            "in": "query",
            "description": "Only return invoices created at or before this date (inclusive)",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "pageNumber",
            "in": "query",
            "description": "The page number being requested (minimum: 1, maximum: 2147483)",
            "schema": {
              "maximum": 2147483,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The page size being requested (minimum: 1, maximum: 1000)",
            "schema": {
              "maximum": 1000,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedResponseReadInvoiceModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Invoices"
        ],
        "summary": "Create an invoice",
        "description": "Create a new invoice (required scope finance:write)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "requestBody": {
          "description": "The model used to create the invoice",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/CreateInvoiceModel"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateInvoiceModel"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CreateInvoiceModel"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostResponseInt64"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v1/finance/invoices/{invoiceId}": {
      "get": {
        "tags": [
          "Invoices"
        ],
        "summary": "Get an invoice",
        "description": "Retrieve the details of a single invoice (required scope finance:read)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "invoiceId",
            "in": "path",
            "description": "The unique identifier of the invoice",
            "required": true,
            "schema": {
              "maximum": 9223372036854776000,
              "minimum": 1,
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReadInvoiceModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Invoices"
        ],
        "summary": "Update an invoice",
        "description": "Update an invoice (required scope finance:write)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "invoiceId",
            "in": "path",
            "description": "The id of the invoice to update",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "requestBody": {
          "description": "The model used to update the invoice",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateInvoiceModel"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v1/finance/invoices/{invoiceId}/cancel": {
      "put": {
        "tags": [
          "Invoices"
        ],
        "summary": "Cancel an invoice",
        "description": "Mark an invoice as cancelled (required scope finance:write)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "invoiceId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v1/finance/invoices/{invoiceId}/createDocument": {
      "put": {
        "tags": [
          "Invoices"
        ],
        "summary": "Create an invoice document pdf",
        "description": "Creates a PDF document for an invoice (required scope finance:write)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "invoiceId",
            "in": "path",
            "description": "The invoice id",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v1/finance/invoices/{invoiceId}/lineItems": {
      "get": {
        "tags": [
          "Invoices"
        ],
        "summary": "Gets a list of invoice line items that belong to the specified invoice",
        "description": "Retrieve a paged list of line items for an invoice (required scope finance:read)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "invoiceId",
            "in": "path",
            "description": "The unique identifier of the invoice associated with the line items",
            "required": true,
            "schema": {
              "maximum": 9223372036854776000,
              "minimum": 1,
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "pageNumber",
            "in": "query",
            "description": "The page number being requested (minimum: 1, maximum: 2147483)",
            "schema": {
              "maximum": 2147483,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The page size being requested (minimum: 1, maximum: 1000)",
            "schema": {
              "maximum": 1000,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedResponseReadInvoiceLineItemModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Invoices"
        ],
        "summary": "Create an invoice line item",
        "description": "Create a new invoice line item (required scope finance:write)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "invoiceId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateInvoiceLineItemModel"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostResponseInt64"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v1/finance/invoices/{invoiceId}/lineItems/{lineItemId}": {
      "get": {
        "tags": [
          "Invoices"
        ],
        "summary": "Get an invoice line item",
        "description": "Retrieve the details of a single line item (required scope finance:read)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "invoiceId",
            "in": "path",
            "description": "The unique identifier of the invoice associated with the invoice line item",
            "required": true,
            "schema": {
              "maximum": 9223372036854776000,
              "minimum": 1,
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "lineItemId",
            "in": "path",
            "description": "The unique identifier of the invoice line item",
            "required": true,
            "schema": {
              "maximum": 9223372036854776000,
              "minimum": 1,
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReadInvoiceLineItemModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Invoices"
        ],
        "summary": "Update an invoice line item",
        "description": "Update the details of a single line item (required scope finance:write)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "invoiceId",
            "in": "path",
            "description": "The invoice id",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "lineItemId",
            "in": "path",
            "description": "The line item id",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "requestBody": {
          "description": "The model used to update the line item",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateInvoiceLineItemModel"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Invoices"
        ],
        "summary": "Delete an invoice line item",
        "description": "Delete a line item from an invoice (required scope finance:write)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "invoiceId",
            "in": "path",
            "description": "The invoice id",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "lineItemId",
            "in": "path",
            "description": "The line item id",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v1/finance/invoices/{invoiceId}/paid": {
      "put": {
        "tags": [
          "Invoices"
        ],
        "summary": "Mark an invoice as paid",
        "description": "Mark an invoice as paid (required scope finance:write)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "invoiceId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateInvoicePaidModel"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v1/finance/invoices/{invoiceId}/sent": {
      "put": {
        "tags": [
          "Invoices"
        ],
        "summary": "Mark an invoice as sent",
        "description": "Mark an invoice as sent (required scope finance:write)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "invoiceId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateInvoiceSentModel"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v1/finance/purchaseOrders": {
      "get": {
        "tags": [
          "PurchaseOrders"
        ],
        "summary": "Get a list of purchase orders",
        "description": "Retrieve a paged collection of purchase orders (required scope finance:read)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "sortBy",
            "in": "query",
            "description": "The field to sort items in the page by",
            "schema": {
              "$ref": "#/components/schemas/PurchaseOrderSortOptions"
            }
          },
          {
            "name": "direction",
            "in": "query",
            "description": "The direction to apply the sort",
            "schema": {
              "$ref": "#/components/schemas/SortDirection"
            }
          },
          {
            "name": "id",
            "in": "query",
            "description": "Only return purchase orders where `id` matches the value(s) provided (Max items: 50)",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int64"
              }
            }
          },
          {
            "name": "jobId",
            "in": "query",
            "description": "Only return purchase orders where `jobId` matches the value(s) provided (Max items: 50)",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int64"
              }
            }
          },
          {
            "name": "jobGroupId",
            "in": "query",
            "description": "Only return purchase orders where `jobGroupId` matches the value(s) provided (Max items: 50)",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int64"
              }
            }
          },
          {
            "name": "contactId",
            "in": "query",
            "description": "Only return purchase orders where `contactId` matches the value(s) provided (Max items: 50)",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int64"
              }
            }
          },
          {
            "name": "reference",
            "in": "query",
            "description": "Only return purchase orders where `reference` matches the value(s) provided (Max items: 50)",
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "createdAtFrom",
            "in": "query",
            "description": "Only return purchase orders created at or after this date (inclusive)",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "createdAtTo",
            "in": "query",
            "description": "Only return purchase orders created at or before this date (inclusive)",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "pageNumber",
            "in": "query",
            "description": "The page number being requested (minimum: 1, maximum: 2147483)",
            "schema": {
              "maximum": 2147483,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The page size being requested (minimum: 1, maximum: 1000)",
            "schema": {
              "maximum": 1000,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedResponseReadPurchaseOrderModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "PurchaseOrders"
        ],
        "summary": "Create an purchase order",
        "description": "Create a new purchase order (required scope finance:write)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "requestBody": {
          "description": "The model used to create the purchase order",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/CreatePurchaseOrderModel"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreatePurchaseOrderModel"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CreatePurchaseOrderModel"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostResponseInt64"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v1/finance/purchaseOrders/{purchaseOrderId}": {
      "get": {
        "tags": [
          "PurchaseOrders"
        ],
        "summary": "Get a purchase order",
        "description": "Retrieve the details of a single purchase order (required scope finance:read)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "purchaseOrderId",
            "in": "path",
            "description": "The unique identifer of the purchase order",
            "required": true,
            "schema": {
              "maximum": 9223372036854776000,
              "minimum": 1,
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReadPurchaseOrderModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "PurchaseOrders"
        ],
        "summary": "Update a purchase order",
        "description": "Update a purchase order (required scope finance:write)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "purchaseOrderId",
            "in": "path",
            "description": "The id of the purchase order to update",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "requestBody": {
          "description": "The model used to update the purchase order",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdatePurchaseOrderModel"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v1/finance/purchaseorders/{purchaseOrderId}/lineItems": {
      "get": {
        "tags": [
          "PurchaseOrders"
        ],
        "summary": "Gets a list of line items that belong to the specified purchase order",
        "description": "Retrieve a paged list of line items for a purchase order (required scope finance:read)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "purchaseOrderId",
            "in": "path",
            "description": "The unique identifier of the purchase order associated with the line items",
            "required": true,
            "schema": {
              "maximum": 9223372036854776000,
              "minimum": 1,
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "pageNumber",
            "in": "query",
            "description": "The page number being requested (minimum: 1, maximum: 2147483)",
            "schema": {
              "maximum": 2147483,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The page size being requested (minimum: 1, maximum: 1000)",
            "schema": {
              "maximum": 1000,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedResponseReadPurchaseOrderLineItemModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "PurchaseOrders"
        ],
        "summary": "Create a purchase order line item",
        "description": "Create a new purchase order line item (required scope finance:write)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "purchaseOrderId",
            "in": "path",
            "description": "The purchase order id",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "requestBody": {
          "description": "The model used to create the line item",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreatePurchaseOrderLineItemModel"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostResponseInt64"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v1/finance/purchaseorders/{purchaseOrderId}/lineItems/{lineItemId}": {
      "get": {
        "tags": [
          "PurchaseOrders"
        ],
        "summary": "Get a purchase order line item",
        "description": "Retrieve the details of a single purchase order line item (required scope finance:read)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "purchaseOrderId",
            "in": "path",
            "description": "The unique identifier of the purchase order associated with the line item",
            "required": true,
            "schema": {
              "maximum": 9223372036854776000,
              "minimum": 1,
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "lineItemId",
            "in": "path",
            "description": "The unique identifier of the purchase order line item",
            "required": true,
            "schema": {
              "maximum": 9223372036854776000,
              "minimum": 1,
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReadPurchaseOrderLineItemModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "PurchaseOrders"
        ],
        "summary": "Update a purchase order line item",
        "description": "Update the details of a single purchase order line item (required scope finance:write)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "purchaseOrderId",
            "in": "path",
            "description": "The purchase order id",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "lineItemId",
            "in": "path",
            "description": "The line item id",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "requestBody": {
          "description": "The model used to update the line item",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdatePurchaseOrderLineItemModel"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "PurchaseOrders"
        ],
        "summary": "Delete a purchase order line item",
        "description": "Delete a line item from a purchase order (required scope finance:write)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "purchaseOrderId",
            "in": "path",
            "description": "The purchase order id",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "lineItemId",
            "in": "path",
            "description": "The line item id",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v1/finance/purchaseOrders/series": {
      "get": {
        "tags": [
          "PurchaseOrders"
        ],
        "summary": "Get a list purchase order series",
        "description": "Retrieve a paged collection of purchase order series (required scope finance:read)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "sortBy",
            "in": "query",
            "description": "The field to sort items in the page by",
            "schema": {
              "$ref": "#/components/schemas/PurchaseOrderSeriesSortOptions"
            }
          },
          {
            "name": "direction",
            "in": "query",
            "description": "The direction to apply the sort",
            "schema": {
              "$ref": "#/components/schemas/SortDirection"
            }
          },
          {
            "name": "id",
            "in": "query",
            "description": "Only return purchase order series where `id` matches the value(s) provided (Max items: 50)",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int64"
              }
            }
          },
          {
            "name": "pageNumber",
            "in": "query",
            "description": "The page number being requested (minimum: 1, maximum: 2147483)",
            "schema": {
              "maximum": 2147483,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The page size being requested (minimum: 1, maximum: 1000)",
            "schema": {
              "maximum": 1000,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedResponseReadPurchaseOrderSeriesModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v1/finance/purchaseOrders/series/{purchaseOrderSeriesId}": {
      "get": {
        "tags": [
          "PurchaseOrders"
        ],
        "summary": "Get a purchase order series",
        "description": "Retrieve the details of a single purchase order series (required scope finance:read)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "purchaseOrderSeriesId",
            "in": "path",
            "description": "The unique identifer of the purchase order series",
            "required": true,
            "schema": {
              "maximum": 9223372036854776000,
              "minimum": 1,
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReadPurchaseOrderSeriesModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v1/finance/quotes": {
      "get": {
        "tags": [
          "Quotes"
        ],
        "summary": "Get a list of quotes",
        "description": "Retrieve a paged collection of quotes. At least one filter (quoteId, jobId, jobGroupId, contactId, reference, or createdAtFrom/createdAtTo) is required. (required scope finance:read)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "sortBy",
            "in": "query",
            "description": "The field to sort items in the page by",
            "schema": {
              "$ref": "#/components/schemas/QuoteSortOptions"
            }
          },
          {
            "name": "direction",
            "in": "query",
            "description": "The direction to apply the sort",
            "schema": {
              "$ref": "#/components/schemas/SortDirection"
            }
          },
          {
            "name": "id",
            "in": "query",
            "description": "Only return invoices where `id` matches the value(s) provided (Max items: 50)",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int64"
              }
            }
          },
          {
            "name": "jobId",
            "in": "query",
            "description": "Only return invoices where `jobId` matches the value(s) provided (Max items: 50)",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int64"
              }
            }
          },
          {
            "name": "jobGroupId",
            "in": "query",
            "description": "Only return invoices where `jobGroupId` matches the value(s) provided (Max items: 50)",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int64"
              }
            }
          },
          {
            "name": "contactId",
            "in": "query",
            "description": "Only return invoices where `contactId` matches the value(s) provided (Max items: 50)",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int64"
              }
            }
          },
          {
            "name": "reference",
            "in": "query",
            "description": "Only return invoices where `reference` matches the value(s) provided (Max items: 50)",
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "createdAtFrom",
            "in": "query",
            "description": "Only return invoices created at or after this date (inclusive)",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "createdAtTo",
            "in": "query",
            "description": "Only return invoices created at or before this date (inclusive)",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "pageNumber",
            "in": "query",
            "description": "The page number being requested (minimum: 1, maximum: 2147483)",
            "schema": {
              "maximum": 2147483,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The page size being requested (minimum: 1, maximum: 1000)",
            "schema": {
              "maximum": 1000,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedResponseReadQuoteModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Quotes"
        ],
        "summary": "Create a quote",
        "description": "Create a new quote (required scope finance:write)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "requestBody": {
          "description": "The model used to create the quote",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/CreateQuoteModel"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateQuoteModel"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CreateQuoteModel"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostResponseInt64"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v1/finance/quotes/{quoteId}": {
      "get": {
        "tags": [
          "Quotes"
        ],
        "summary": "Get a quote",
        "description": "Retrieve the details of a single quote (required scope finance:read)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "quoteId",
            "in": "path",
            "description": "The unique identifier of the quote",
            "required": true,
            "schema": {
              "maximum": 9223372036854776000,
              "minimum": 1,
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReadQuoteModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Quotes"
        ],
        "summary": "Update a quote",
        "description": "Update a quote (required scope finance:write)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "quoteId",
            "in": "path",
            "description": "The id of the quote to update",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "requestBody": {
          "description": "The model used to update the quote",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateQuoteModel"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v1/finance/quotes/{quoteId}/accepted": {
      "put": {
        "tags": [
          "Quotes"
        ],
        "summary": "Mark a quote as accepted",
        "description": "Mark a quote as accepted (required scope finance:write)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "quoteId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v1/finance/quotes/{quoteId}/lineItems": {
      "get": {
        "tags": [
          "Quotes"
        ],
        "summary": "Gets a list of quote line items that belong to the specified quote",
        "description": "Retrieve a paged list of line items for a quote (required scope finance:read)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "quoteId",
            "in": "path",
            "description": "The unique identifier of the quote associated with the line items",
            "required": true,
            "schema": {
              "maximum": 9223372036854776000,
              "minimum": 1,
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "pageNumber",
            "in": "query",
            "description": "The page number being requested (minimum: 1, maximum: 2147483)",
            "schema": {
              "maximum": 2147483,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The page size being requested (minimum: 1, maximum: 1000)",
            "schema": {
              "maximum": 1000,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedResponseReadQuoteLineItemModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Quotes"
        ],
        "summary": "Create a quote line item",
        "description": "Create a new quote line item (required scope finance:write)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "quoteId",
            "in": "path",
            "description": "The quote id",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "requestBody": {
          "description": "The model used to create the line item",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateQuoteLineItemModel"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostResponseInt64"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v1/finance/quotes/{quoteId}/lineItems/{lineItemId}": {
      "get": {
        "tags": [
          "Quotes"
        ],
        "summary": "Get a quote line item",
        "description": "Retrieve the details of a single quote line item (required scope finance:read)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "quoteId",
            "in": "path",
            "description": "The unique identifier of the quote associated with the quote line item",
            "required": true,
            "schema": {
              "maximum": 9223372036854776000,
              "minimum": 1,
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "lineItemId",
            "in": "path",
            "description": "The unique identifier of the quote line item",
            "required": true,
            "schema": {
              "maximum": 9223372036854776000,
              "minimum": 1,
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReadQuoteLineItemModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Quotes"
        ],
        "summary": "Update a quote line item",
        "description": "Update the details of a single quote line item (required scope finance:write)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "quoteId",
            "in": "path",
            "description": "The quote id",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "lineItemId",
            "in": "path",
            "description": "The line item id",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "requestBody": {
          "description": "The model used to update the line item",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateQuoteLineItemModel"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Quotes"
        ],
        "summary": "Delete a quote line item",
        "description": "Delete a line item from a quote (required scope finance:write)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "quoteId",
            "in": "path",
            "description": "The quote id",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "lineItemId",
            "in": "path",
            "description": "The line item id",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v1/finance/quotes/{quoteId}/rejected": {
      "put": {
        "tags": [
          "Quotes"
        ],
        "summary": "Mark a quote as rejected",
        "description": "Mark a quote as rejected (required scope finance:write)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "quoteId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v1/finance/quotes/{quoteId}/sent": {
      "put": {
        "tags": [
          "Quotes"
        ],
        "summary": "Mark a quote as sent",
        "description": "Mark a quote as sent (required scope finance:write)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "quoteId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateQuoteSentModel"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v1/finance/salesOpportunities": {
      "get": {
        "tags": [
          "SalesOpportunities"
        ],
        "summary": "Get a list of sales opportunities",
        "description": "Retrieve a paged collection of sales opportunities (required scope finance:read)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "sortBy",
            "in": "query",
            "description": "The field to sort items in the page by",
            "schema": {
              "$ref": "#/components/schemas/SalesOpportunitySortOptions"
            }
          },
          {
            "name": "direction",
            "in": "query",
            "description": "The direction to apply the sort",
            "schema": {
              "$ref": "#/components/schemas/SortDirection"
            }
          },
          {
            "name": "id",
            "in": "query",
            "description": "Only return sales opportunities where `id` matches the value(s) provided (Max items: 50)",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int64"
              }
            }
          },
          {
            "name": "status",
            "in": "query",
            "description": "Only return sales opportunities with the specified status",
            "schema": {
              "$ref": "#/components/schemas/SalesOpportunityStatus"
            }
          },
          {
            "name": "contactId",
            "in": "query",
            "description": "Only return sales opportunities where `contactId` matches the value provided",
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "ownerId",
            "in": "query",
            "description": "Only return sales opportunities where `ownerId` matches the value provided",
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "reference",
            "in": "query",
            "description": "Only return sales opportunities where `reference` starts with the value provided",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "createdAtFrom",
            "in": "query",
            "description": "Only return sales opportunities created at or after this date (inclusive)",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "createdAtTo",
            "in": "query",
            "description": "Only return sales opportunities created at or before this date (inclusive)",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "dueDateFrom",
            "in": "query",
            "description": "Only return sales opportunities with a due date at or after this date (inclusive)",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "dueDateTo",
            "in": "query",
            "description": "Only return sales opportunities with a due date at or before this date (inclusive)",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "pageNumber",
            "in": "query",
            "description": "The page number being requested (minimum: 1, maximum: 2147483)",
            "schema": {
              "maximum": 2147483,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The page size being requested (minimum: 1, maximum: 1000)",
            "schema": {
              "maximum": 1000,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedResponseReadSalesOpportunityModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "SalesOpportunities"
        ],
        "summary": "Create a sales opportunity",
        "description": "Create a new sales opportunity (required scope finance:write)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "requestBody": {
          "description": "The model used to create the sales opportunity",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/CreateSalesOpportunityModel"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateSalesOpportunityModel"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CreateSalesOpportunityModel"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostResponseInt64"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v1/finance/salesOpportunities/{salesOpportunityId}": {
      "get": {
        "tags": [
          "SalesOpportunities"
        ],
        "summary": "Get a sales opportunity",
        "description": "Retrieve the details of a single sales opportunity (required scope finance:read)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "salesOpportunityId",
            "in": "path",
            "description": "The unique identifier of the sales opportunity",
            "required": true,
            "schema": {
              "maximum": 9223372036854776000,
              "minimum": 1,
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReadSalesOpportunityModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "SalesOpportunities"
        ],
        "summary": "Update a sales opportunity",
        "description": "Update a sales opportunity (required scope finance:write)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "salesOpportunityId",
            "in": "path",
            "description": "The id of the sales opportunity to update",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "requestBody": {
          "description": "The model used to update the sales opportunity",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateSalesOpportunityModel"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v1/finance/salesOpportunities/{salesOpportunityId}/lineItems": {
      "get": {
        "tags": [
          "SalesOpportunities"
        ],
        "summary": "Gets a list of sales opportunity line items that belong to the specified sales opportunity",
        "description": "Retrieve a paged list of line items for a sales opportunity (required scope finance:read)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "salesOpportunityId",
            "in": "path",
            "description": "The unique identifier of the sales opportunity associated with the line items",
            "required": true,
            "schema": {
              "maximum": 9223372036854776000,
              "minimum": 1,
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "pageNumber",
            "in": "query",
            "description": "The page number being requested (minimum: 1, maximum: 2147483)",
            "schema": {
              "maximum": 2147483,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The page size being requested (minimum: 1, maximum: 1000)",
            "schema": {
              "maximum": 1000,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedResponseReadSalesOpportunityLineItemModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "SalesOpportunities"
        ],
        "summary": "Create a sales opportunity line item",
        "description": "Create a new sales opportunity line item (required scope finance:write)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "salesOpportunityId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateSalesOpportunityLineItemModel"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostResponseInt64"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v1/finance/salesOpportunities/{salesOpportunityId}/lineItems/{lineItemId}": {
      "get": {
        "tags": [
          "SalesOpportunities"
        ],
        "summary": "Get a sales opportunity line item",
        "description": "Retrieve the details of a single line item (required scope finance:read)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "salesOpportunityId",
            "in": "path",
            "description": "The unique identifier of the sales opportunity",
            "required": true,
            "schema": {
              "maximum": 9223372036854776000,
              "minimum": 1,
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "lineItemId",
            "in": "path",
            "description": "The unique identifier of the sales opportunity line item",
            "required": true,
            "schema": {
              "maximum": 9223372036854776000,
              "minimum": 1,
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReadSalesOpportunityLineItemModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "SalesOpportunities"
        ],
        "summary": "Delete a sales opportunity line item",
        "description": "Delete a line item from a sales opportunity (required scope finance:write)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "salesOpportunityId",
            "in": "path",
            "description": "The sales opportunity id",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "lineItemId",
            "in": "path",
            "description": "The line item id",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v1/finance/salesOpportunities/{salesOpportunityId}/lineItems/{salesOpportunityLineItemId}": {
      "patch": {
        "tags": [
          "SalesOpportunities"
        ],
        "summary": "Update a sales opportunity line item",
        "description": "Update a sales opportunity line item (required scope finance:write)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "salesOpportunityId",
            "in": "path",
            "description": "The unique idenfitier of the sales opportunity",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "salesOpportunityLineItemId",
            "in": "path",
            "description": "The unique idenfitier of the sales opportunity line item",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "requestBody": {
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateSalesOpportunityLineItemModel"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v1/finance/salesOpportunities/probabilities": {
      "get": {
        "tags": [
          "SalesOpportunities"
        ],
        "summary": "Get a list of sales opportunity probabilities",
        "description": "Retrieve a paged collection of sales opportunity probabilities (required scope finance:read)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "sortBy",
            "in": "query",
            "description": "The field to sort items in the page by",
            "schema": {
              "$ref": "#/components/schemas/SalesOpportunityProbabilitiesSortOptions"
            }
          },
          {
            "name": "direction",
            "in": "query",
            "description": "The direction to apply the sort",
            "schema": {
              "$ref": "#/components/schemas/SortDirection"
            }
          },
          {
            "name": "id",
            "in": "query",
            "description": "Only return sales opportunity probabilities where `id` matches the value(s) provided (Max items: 50)",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int64"
              }
            }
          },
          {
            "name": "pageNumber",
            "in": "query",
            "description": "The page number being requested (minimum: 1, maximum: 2147483)",
            "schema": {
              "maximum": 2147483,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The page size being requested (minimum: 1, maximum: 1000)",
            "schema": {
              "maximum": 1000,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedResponseReadSalesOpportunityProbabilityModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v1/finance/salesOpportunities/stages": {
      "get": {
        "tags": [
          "SalesOpportunities"
        ],
        "summary": "Get a list of sales opportunity stages",
        "description": "Retrieve a paged collection of sales opportunity stages (required scope finance:read)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "sortBy",
            "in": "query",
            "description": "The field to sort items in the page by",
            "schema": {
              "$ref": "#/components/schemas/SalesOpportunityStageSortOptions"
            }
          },
          {
            "name": "direction",
            "in": "query",
            "description": "The direction to apply the sort",
            "schema": {
              "$ref": "#/components/schemas/SortDirection"
            }
          },
          {
            "name": "id",
            "in": "query",
            "description": "Only return stages where `id` matches the value(s) provided (Max items: 50)",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int64"
              }
            }
          },
          {
            "name": "pageNumber",
            "in": "query",
            "description": "The page number being requested (minimum: 1, maximum: 2147483)",
            "schema": {
              "maximum": 2147483,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The page size being requested (minimum: 1, maximum: 1000)",
            "schema": {
              "maximum": 1000,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedResponseReadSalesOpportunityModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v1/flags": {
      "get": {
        "tags": [
          "ReferenceData"
        ],
        "summary": "Get a list of flags by entity type",
        "description": "Retrieves a collection of flags filtered by entity type (required scope flags:read)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "entityType",
            "in": "query",
            "description": "The entity type to filter flags by",
            "schema": {
              "$ref": "#/components/schemas/FlagEntityType"
            },
            "example": "ContactNote"
          },
          {
            "name": "sortBy",
            "in": "query",
            "description": "The field to sort items by",
            "schema": {
              "$ref": "#/components/schemas/FlagSortOptions"
            }
          },
          {
            "name": "direction",
            "in": "query",
            "description": "The direction to apply the sort",
            "schema": {
              "$ref": "#/components/schemas/SortDirection"
            }
          },
          {
            "name": "pageNumber",
            "in": "query",
            "description": "The page number being requested (minimum: 1, maximum: 2147483)",
            "schema": {
              "maximum": 2147483,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The page size being requested (minimum: 1, maximum: 1000)",
            "schema": {
              "maximum": 1000,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedResponseReadFlagModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v1/jobGroups": {
      "get": {
        "tags": [
          "JobGroups"
        ],
        "summary": "Get a list of job groups",
        "description": "Retrieve a paged collection of job groups (required scope jobs:read)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "sortBy",
            "in": "query",
            "description": "The field to sort items in the page by",
            "schema": {
              "$ref": "#/components/schemas/JobGroupSortOptions"
            }
          },
          {
            "name": "direction",
            "in": "query",
            "description": "The direction to apply the sort",
            "schema": {
              "$ref": "#/components/schemas/SortDirection"
            }
          },
          {
            "name": "id",
            "in": "query",
            "description": "Only return job groups where `Id` matches the value(s) provided (Max items: 50)",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int64"
              }
            }
          },
          {
            "name": "pageNumber",
            "in": "query",
            "description": "The page number being requested (minimum: 1, maximum: 2147483)",
            "schema": {
              "maximum": 2147483,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The page size being requested (minimum: 1, maximum: 1000)",
            "schema": {
              "maximum": 1000,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedResponseReadJobGroupModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "JobGroups"
        ],
        "summary": "Create a job group",
        "description": "Create a new job group (required scope jobs:write)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateJobGroupModel"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostResponseInt64"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v1/jobGroups/{groupId}/jobFlags": {
      "get": {
        "tags": [
          "JobGroups"
        ],
        "summary": "Gets currently active flags for all jobs in the specified group",
        "description": "Retrieve the current active job flag for each job in the group (required scope jobs:read)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "groupId",
            "in": "path",
            "description": "The unique identifier of the job group",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "pageNumber",
            "in": "query",
            "description": "The page number being requested. (minimum: 1, maximum: 2147483)",
            "schema": {
              "maximum": 2147483,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The page size being requested. (minimum: 1, maximum: 1000)",
            "schema": {
              "maximum": 1000,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedResponseReadJobFlagModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Jobs"
        ],
        "summary": "Applies a job flag to all jobs within the specified group",
        "description": "Apply a job flag to all jobs within the specified group (required scope jobs:write)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "groupId",
            "in": "path",
            "description": "The job group id",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "requestBody": {
          "description": "The flag details to apply",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateEntityFlagModel"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApplyJobGroupJobFlagResult"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v1/jobGroups/{groupId}/jobFlags/history": {
      "get": {
        "tags": [
          "JobGroups"
        ],
        "summary": "Gets the flag history across all jobs in the specified group",
        "description": "Retrieve the job flag history across all jobs in the group (required scope jobs:read)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "groupId",
            "in": "path",
            "description": "The unique identifier of the job group",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "pageNumber",
            "in": "query",
            "description": "The page number being requested. (minimum: 1, maximum: 2147483)",
            "schema": {
              "maximum": 2147483,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The page size being requested. (minimum: 1, maximum: 1000)",
            "schema": {
              "maximum": 1000,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedResponseJobFlagsForJobModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v1/jobGroups/{jobGroupId}": {
      "get": {
        "tags": [
          "JobGroups"
        ],
        "summary": "Get a job group",
        "description": "Retrieve the details of a single job group (required scope jobs:read)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "jobGroupId",
            "in": "path",
            "description": "The unique identifier of the job group",
            "required": true,
            "schema": {
              "maximum": 9223372036854776000,
              "minimum": 1,
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReadJobGroupModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "JobGroups"
        ],
        "summary": "Patch a job group",
        "description": "Patch a job group (required scope jobs:write)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "jobGroupId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateJobGroupModel"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v1/jobGroups/{jobGroupId}/complete": {
      "put": {
        "tags": [
          "JobGroups"
        ],
        "summary": "Marks the job group results as complete",
        "description": "Sets the status of a job group to complete only when all jobs within the group are complete and none have a recurrence (required scope jobs:write)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "jobGroupId",
            "in": "path",
            "description": "The job group identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v1/jobGroups/{jobGroupId}/completeFinancially": {
      "put": {
        "tags": [
          "JobGroups"
        ],
        "summary": "Marks the job group results as financially complete",
        "description": "Sets the status of the job group to financially complete when the current job group status is complete (required scope jobs:write)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "jobGroupId",
            "in": "path",
            "description": "The job group identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v1/jobGroups/{jobGroupId}/flags": {
      "get": {
        "tags": [
          "JobGroups"
        ],
        "summary": "Gets the currently active flag for the specified job group",
        "description": "Retrieve the current active flag for a job group (required scope jobs:read)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "jobGroupId",
            "in": "path",
            "description": "The job group id",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReadEntityFlagModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "JobGroups"
        ],
        "summary": "Create a new flag for a job group",
        "description": "Create a new flag for a job group (required scope jobs:write)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "jobGroupId",
            "in": "path",
            "description": "The job group id",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "requestBody": {
          "description": "The model containing flag information",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateEntityFlagModel"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostResponseInt64"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v1/jobGroups/{jobGroupId}/flags/{flagId}": {
      "delete": {
        "tags": [
          "JobGroups"
        ],
        "summary": "Deletes a flag from the specified job group",
        "description": "Delete a flag from a job group (required scope jobs:write)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "jobGroupId",
            "in": "path",
            "description": "The job group id",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "flagId",
            "in": "path",
            "description": "The flag history id to delete",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v1/jobGroups/{jobGroupId}/flags/history": {
      "get": {
        "tags": [
          "JobGroups"
        ],
        "summary": "Gets the flag history for the specified job group",
        "description": "Retrieve the flag history for a job group (required scope jobs:read)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "jobGroupId",
            "in": "path",
            "description": "The job group id",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "pageNumber",
            "in": "query",
            "description": "The page number being requested",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The page size being requested",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 100
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedResponseReadEntityFlagModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v1/jobGroups/{jobGroupId}/lineItems": {
      "get": {
        "tags": [
          "JobGroups"
        ],
        "summary": "Gets a list of job group line items that belong to the specified job group",
        "description": "Retrieve a paged list of line items for a job group (required scope jobs:read)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "jobGroupId",
            "in": "path",
            "description": "The unique identifier of the job group associated with the line item",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "sortBy",
            "in": "query",
            "description": "The field to sort items in the page by",
            "schema": {
              "$ref": "#/components/schemas/JobGroupLineItemSortOptions"
            }
          },
          {
            "name": "direction",
            "in": "query",
            "description": "The direction to apply the sort",
            "schema": {
              "$ref": "#/components/schemas/SortDirection"
            }
          },
          {
            "name": "pageNumber",
            "in": "query",
            "description": "The page number being requested (minimum: 1, maximum: 2147483)",
            "schema": {
              "maximum": 2147483,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The page size being requested (minimum: 1, maximum: 1000)",
            "schema": {
              "maximum": 1000,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedResponseReadJobGroupLineItemModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "JobGroups"
        ],
        "summary": "Create a job group line item",
        "description": "Create a new job group line item (required scope jobs:write)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "jobGroupId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateJobGroupLineItemModel"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostResponseInt64"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v1/jobGroups/{jobGroupId}/lineItems/{lineItemId}": {
      "get": {
        "tags": [
          "JobGroups"
        ],
        "summary": "Get a job group line item",
        "description": "Retrieve the details of a single line item (required scope jobs:read)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "jobGroupId",
            "in": "path",
            "description": "The unique identifier of the job group associated with the line item",
            "required": true,
            "schema": {
              "maximum": 9223372036854776000,
              "minimum": 1,
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "lineItemId",
            "in": "path",
            "description": "The unique identifier of the line item",
            "required": true,
            "schema": {
              "maximum": 9223372036854776000,
              "minimum": 1,
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReadJobGroupLineItemModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "JobGroups"
        ],
        "summary": "Update a job group line item",
        "description": "Update the details of a single job group line item (required scope jobs:write)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "jobGroupId",
            "in": "path",
            "description": "The job group id",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "lineItemId",
            "in": "path",
            "description": "The line item id",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "requestBody": {
          "description": "The model used to update the line item",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateJobGroupLineItemModel"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "JobGroups"
        ],
        "summary": "Delete a job group line item",
        "description": "Delete a line item from a job group (required scope jobs:write)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "jobGroupId",
            "in": "path",
            "description": "The job group id",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "lineItemId",
            "in": "path",
            "description": "The line item id",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v1/jobGroups/{jobGroupId}/status/history": {
      "get": {
        "tags": [
          "JobGroups"
        ],
        "summary": "Gets the status history of a job group",
        "description": "Retrieve the status history of a single job group (required scope jobs:read)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "jobGroupId",
            "in": "path",
            "description": "The unique identifier of the job group",
            "required": true,
            "schema": {
              "maximum": 9223372036854776000,
              "minimum": 1,
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "sortBy",
            "in": "query",
            "description": "The field to sort items in the page by",
            "schema": {
              "$ref": "#/components/schemas/JobGroupStatusSortOptions"
            }
          },
          {
            "name": "direction",
            "in": "query",
            "description": "The direction to apply the sort",
            "schema": {
              "$ref": "#/components/schemas/SortDirection"
            }
          },
          {
            "name": "pageNumber",
            "in": "query",
            "description": "The page number being requested (minimum: 1, maximum: 2147483)",
            "schema": {
              "maximum": 2147483,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The page size being requested (minimum: 1, maximum: 1000)",
            "schema": {
              "maximum": 1000,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedResponseReadJobGroupModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v1/jobs": {
      "get": {
        "tags": [
          "Jobs"
        ],
        "summary": "Get a list of jobs",
        "description": "Retrieve a paged collection of jobs (required scope jobs:read)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "sortBy",
            "in": "query",
            "description": "The field to sort items in the page by",
            "schema": {
              "$ref": "#/components/schemas/JobSortOptions"
            }
          },
          {
            "name": "direction",
            "in": "query",
            "description": "The direction to apply the sort",
            "schema": {
              "$ref": "#/components/schemas/SortDirection"
            }
          },
          {
            "name": "id",
            "in": "query",
            "description": "Only return jobs where `id` matches the value(s) provided (Max items: 50)",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int64"
              }
            }
          },
          {
            "name": "typeId",
            "in": "query",
            "description": "Only return jobs where `typeId` matches the value(s) provided (Max items: 50)",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int64"
              }
            }
          },
          {
            "name": "contactId",
            "in": "query",
            "description": "Only return jobs where `contactId` matches the value(s) provided (Max items: 50)",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int64"
              }
            }
          },
          {
            "name": "orderNumber",
            "in": "query",
            "description": "Only return jobs where `orderNumber` matches the value(s) provided (Max items: 50)",
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "pageNumber",
            "in": "query",
            "description": "The page number being requested. (minimum: 1, maximum: 2147483)",
            "schema": {
              "maximum": 2147483,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The page size being requested. (minimum: 1, maximum: 1000)",
            "schema": {
              "maximum": 1000,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "createdAtFrom",
            "in": "query",
            "description": "Only return jobs where `createdAt` is the same or newer than this UTC value",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "createdAtTo",
            "in": "query",
            "description": "Only return jobs where `createdAt` is the same or older than this UTC value",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "resourceId",
            "in": "query",
            "description": "Only return jobs where `resourceId` matches the value(s) provided (Max items: 50)",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int64"
              }
            }
          },
          {
            "name": "vehicleId",
            "in": "query",
            "description": "Only return jobs where `vehicleId` matches the value(s) provided (Max items: 50)",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int64"
              }
            }
          },
          {
            "name": "reference",
            "in": "query",
            "description": "Only return jobs where `reference` matches the value(s) provided (Max items: 50)",
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "plannedAtFrom",
            "in": "query",
            "description": "Only return jobs where `plannedStartAt` is newer than this value",
            "schema": {
              "type": "string",
              "format": "date-time",
              "deprecated": true
            }
          },
          {
            "name": "plannedAtTo",
            "in": "query",
            "description": "Only return jobs where `plannedStartAt` is older than this value",
            "schema": {
              "type": "string",
              "format": "date-time",
              "deprecated": true
            }
          },
          {
            "name": "startAtFrom",
            "in": "query",
            "description": "Only return jobs where `plannedStartAt` or `actualStartAt` is newer than this value",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "startAtTo",
            "in": "query",
            "description": "Only return jobs where `plannedStartAt` or `actualStartAt` is older than this value",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "statusModifiedAtFrom",
            "in": "query",
            "description": "Only return jobs where `statusModifiedAt` is newer than this value",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "statusModifiedAtTo",
            "in": "query",
            "description": "Only return jobs where `statusModifiedAt` is older than this value",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "status",
            "in": "query",
            "description": "Only return jobs where `status` matches the value(s) provided (Max items: 50)",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/components/schemas/JobStatus"
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedResponseReadJobModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Jobs"
        ],
        "summary": "Create a job",
        "description": "Create a new job. A job can be added to any job group, except a job group marked Financially Complete (required scope jobs:write)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateJobModel"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostResponseInt64"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v1/jobs/{jobId}": {
      "get": {
        "tags": [
          "Jobs"
        ],
        "summary": "Get a job",
        "description": "Retrieve the details of a single job (required scope jobs:read)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "jobId",
            "in": "path",
            "description": "The unique identifier of the job",
            "required": true,
            "schema": {
              "maximum": 9223372036854776000,
              "minimum": 1,
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReadJobModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Jobs"
        ],
        "summary": "Update a job",
        "description": "Updates the details of a specific job. To set the JobGroupId, any existing JobGroupId must have been removed by setting it to null in a previous update. A job can be added to any job group, except a job group marked Financially Complete (required scope jobs:write)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "jobId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateJobModel"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v1/jobs/{jobId}/cancel": {
      "put": {
        "tags": [
          "Jobs"
        ],
        "summary": "Cancel a job",
        "description": "Cancels a specific job. The job cannot be cancelled if it has already been started, suspended or completed (required scope jobs:write)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "jobId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CancelJobModel"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v1/jobs/{jobId}/constraints": {
      "get": {
        "tags": [
          "Jobs"
        ],
        "summary": "Get a job's constraints",
        "description": "Retrieve a paged collection of a job's constraints (required scope jobs:read)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "sortBy",
            "in": "query",
            "description": "The field to sort items in the page by",
            "schema": {
              "$ref": "#/components/schemas/JobConstraintSortOptions"
            }
          },
          {
            "name": "direction",
            "in": "query",
            "description": "The direction to apply the sort",
            "schema": {
              "$ref": "#/components/schemas/SortDirection"
            }
          },
          {
            "name": "pageNumber",
            "in": "query",
            "description": "The page number being requested. (minimum: 1, maximum: 2147483)",
            "schema": {
              "maximum": 2147483,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The page size being requested. (minimum: 1, maximum: 1000)",
            "schema": {
              "maximum": 1000,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "jobId",
            "in": "path",
            "description": "The unique identifier of the job",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedResponseReadJobStatusModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Jobs"
        ],
        "summary": "Create a job constraint",
        "description": "Create a new job constraint. (required scope jobs:write)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "jobId",
            "in": "path",
            "description": "The unique identifier of the job",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "requestBody": {
          "description": "Create Job Constraint Model",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateJobConstraintModel"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostResponseInt64"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v1/jobs/{jobId}/constraints/{constraintId}": {
      "delete": {
        "tags": [
          "Jobs"
        ],
        "summary": "Delete a job constraint",
        "description": "Delete a job constraint. (required scope jobs:write)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "jobId",
            "in": "path",
            "description": "The unique identifier of the job",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "constraintId",
            "in": "path",
            "description": "The unique identifier of the constraint",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v1/jobs/{jobId}/flags": {
      "get": {
        "tags": [
          "Jobs"
        ],
        "summary": "Gets currently active flag for the specified job",
        "description": "Retrieve the current active flag for a job (required scope jobs:read)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "jobId",
            "in": "path",
            "description": "The unique identifier of the job",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReadJobFlagModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Jobs"
        ],
        "summary": "Create a new flag for a job",
        "description": "Create a new flag for a job (required scope jobs:write)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "jobId",
            "in": "path",
            "description": "The job id",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "The model containing flag information",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateJobFlagModel"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostResponseInt64"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v1/jobs/{jobId}/flags/{jobFlagId}": {
      "delete": {
        "tags": [
          "Jobs"
        ],
        "summary": "Delete a flag from a job",
        "description": "Remove a flag from a job. (required scope jobs:write)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "jobId",
            "in": "path",
            "description": "The unique identifier of the job",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "jobFlagId",
            "in": "path",
            "description": "The unique identifier of the job flag record",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v1/jobs/{jobId}/flags/history": {
      "get": {
        "tags": [
          "Jobs"
        ],
        "summary": "Gets the flag history for the specified job",
        "description": "Retrieve the flag history for a job (required scope jobs:read)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "jobId",
            "in": "path",
            "description": "The unique identifier of the job",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "pageNumber",
            "in": "query",
            "description": "The page number being requested. (minimum: 1, maximum: 2147483)",
            "schema": {
              "maximum": 2147483,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The page size being requested. (minimum: 1, maximum: 1000)",
            "schema": {
              "maximum": 1000,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedResponseReadJobFlagModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v1/jobs/{jobId}/lineItems": {
      "get": {
        "tags": [
          "Jobs"
        ],
        "summary": "Gets a list of job line items that belong to the specified job",
        "description": "Retrieve a paged list of line items for a job (required scope jobs:read)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "jobId",
            "in": "path",
            "description": "The unique identifier of the job associated with the line item",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "sortBy",
            "in": "query",
            "description": "The field to sort items in the page by",
            "schema": {
              "$ref": "#/components/schemas/JobLineItemSortOptions"
            }
          },
          {
            "name": "direction",
            "in": "query",
            "description": "The direction to apply the sort",
            "schema": {
              "$ref": "#/components/schemas/SortDirection"
            }
          },
          {
            "name": "pageNumber",
            "in": "query",
            "description": "The page number being requested (minimum: 1, maximum: 2147483)",
            "schema": {
              "maximum": 2147483,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The page size being requested (minimum: 1, maximum: 1000)",
            "schema": {
              "maximum": 1000,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedResponseReadJobLineItemModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Jobs"
        ],
        "summary": "Create a job line item",
        "description": "Create a new job line item (required scope jobs:write)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "jobId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateJobLineItemModel"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostResponseInt64"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v1/jobs/{jobId}/lineItems/{lineItemId}": {
      "get": {
        "tags": [
          "Jobs"
        ],
        "summary": "Get a job line item",
        "description": "Retrieve the details of a single line item (required scope jobs:read)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "jobId",
            "in": "path",
            "description": "The unique identifier of the job associated with the line item",
            "required": true,
            "schema": {
              "maximum": 9223372036854776000,
              "minimum": 1,
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "lineItemId",
            "in": "path",
            "description": "The unique identifier of the line item",
            "required": true,
            "schema": {
              "maximum": 9223372036854776000,
              "minimum": 1,
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReadJobLineItemModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Jobs"
        ],
        "summary": "Update a job line item",
        "description": "Update the details of a single job line item (required scope jobs:write)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "jobId",
            "in": "path",
            "description": "The job id",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "lineItemId",
            "in": "path",
            "description": "The line item id",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "requestBody": {
          "description": "The model used to update the line item",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateJobLineItemModel"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Jobs"
        ],
        "summary": "Delete a job line item",
        "description": "Delete a line item from a job (required scope jobs:write)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "jobId",
            "in": "path",
            "description": "The job id",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "lineItemId",
            "in": "path",
            "description": "The line item id",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v1/jobs/{jobId}/result": {
      "put": {
        "tags": [
          "Jobs"
        ],
        "summary": "Sets a job's result",
        "description": "Sets a specific job's result. The job status must be started to use this endpoint (required scope jobs:write)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "jobId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateJobResultModel"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v1/jobs/{jobId}/schedule": {
      "put": {
        "tags": [
          "Jobs"
        ],
        "summary": "Schedule or unschedule a job",
        "description": "Updates the schedule of a specific job. The job status must be either new, scheduled or unscheduled to use this endpoint (required scope jobs:write)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "jobId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ScheduleJobModel"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v1/jobs/{jobId}/start": {
      "put": {
        "tags": [
          "Jobs"
        ],
        "summary": "Sets a job to started",
        "description": "Sets a specific job to started.  The job must be in a valid state to use this endpoint (required scope jobs:write)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "jobId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateJobStartModel"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v1/jobs/{jobId}/status/history": {
      "get": {
        "tags": [
          "Jobs"
        ],
        "summary": "Get a job's status history",
        "description": "Retrieve a paged collection of changes to job status (required scope jobs:read)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "jobId",
            "in": "path",
            "description": "The unique identifer of the job",
            "required": true,
            "schema": {
              "maximum": 9223372036854776000,
              "minimum": 1,
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "sortBy",
            "in": "query",
            "description": "The field to sort items in the page by",
            "schema": {
              "$ref": "#/components/schemas/JobStatusSortOptions"
            }
          },
          {
            "name": "direction",
            "in": "query",
            "description": "The direction to apply the sort",
            "schema": {
              "$ref": "#/components/schemas/SortDirection"
            }
          },
          {
            "name": "pageNumber",
            "in": "query",
            "description": "The page number being requested (minimum: 1, maximum: 2147483)",
            "schema": {
              "maximum": 2147483,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The page size being requested (minimum: 1, maximum: 1000)",
            "schema": {
              "maximum": 1000,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedResponseReadJobStatusModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v1/jobs/{jobId}/stock": {
      "get": {
        "tags": [
          "Jobs"
        ],
        "summary": "Get a list of job stocks",
        "description": "Retrieve a paged collection of job stocks (required scope jobs:read)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "jobId",
            "in": "path",
            "description": "The unique identifer of the job",
            "required": true,
            "schema": {
              "maximum": 9223372036854776000,
              "minimum": 1,
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "jobStockId",
            "in": "query",
            "description": "Only return job stocks where `JobStockId` matches the value(s) provided (Max items: 50)",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int64"
              }
            }
          },
          {
            "name": "stockDetailsId",
            "in": "query",
            "description": "Only return job stocks where 'StockDetailsId' matches the value(s) provided (Max items: 50)",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int64"
              }
            }
          },
          {
            "name": "stockItemId",
            "in": "query",
            "description": "Only return job stocks where 'StockItemId' matches the value(s) provided (Max items: 50)",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int64"
              }
            }
          },
          {
            "name": "action",
            "in": "query",
            "description": "Only return job stocks where 'Action' matches the value provided",
            "schema": {
              "$ref": "#/components/schemas/JobStockActionFilter"
            }
          },
          {
            "name": "isActual",
            "in": "query",
            "description": "Only return job stocks where 'IsActual' matches the value provided",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "pageNumber",
            "in": "query",
            "description": "The page number being requested (minimum: 1, maximum: 2147483)",
            "schema": {
              "maximum": 2147483,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The page size being requested (minimum: 1, maximum: 1000)",
            "schema": {
              "maximum": 1000,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedResponseReadJobModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Jobs"
        ],
        "summary": "Create a job stock",
        "description": "Create a new job stock. Job stock cannot be created for a job with cancelled status (required scope jobs:write)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "jobId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateJobStockModel"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostResponseInt64"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v1/jobs/{jobId}/stock/{jobStockId}": {
      "get": {
        "tags": [
          "Jobs"
        ],
        "summary": "Get a job stock",
        "description": "Retrieve the details of a single job stock (required scope jobs:read)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "jobId",
            "in": "path",
            "description": "The unique identifier of the job stock",
            "required": true,
            "schema": {
              "maximum": 9223372036854776000,
              "minimum": 1,
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "jobStockId",
            "in": "path",
            "description": "The unique identifier of the job stock",
            "required": true,
            "schema": {
              "maximum": 9223372036854776000,
              "minimum": 1,
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReadJobStockModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Jobs"
        ],
        "summary": "Delete a job stock",
        "description": "Permanently deletes a job stock (required scope jobs:write)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "jobId",
            "in": "path",
            "description": "The ID of the job",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "jobStockId",
            "in": "path",
            "description": "The ID of the job stock",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v1/jobs/{jobId}/worksheetQuestions/{questionId}/worksheetAnswer": {
      "put": {
        "tags": [
          "Jobs"
        ],
        "summary": "Sets a worksheet answer against a worksheet question for a given job",
        "description": "Sets worksheet answer against a worksheet question for a given job (required scope worksheets:write)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "jobId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "questionId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SetJobWorksheetAnswerModel"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "No Content"
          }
        }
      },
      "delete": {
        "tags": [
          "Jobs"
        ],
        "summary": "Delete a job worksheet answer",
        "description": "Deletes a worksheet answer for a given worksheet question for a given job (required scope worksheets:write)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "jobId",
            "in": "path",
            "description": "The identifier of the job",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "questionId",
            "in": "path",
            "description": "The identifier of the question",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/v1/jobs/{jobId}/worksheets": {
      "get": {
        "tags": [
          "Jobs"
        ],
        "summary": "Get a list of job worksheets",
        "description": "Retrieve a paged collection of worksheets for a given job (required scope jobs:read)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "jobId",
            "in": "path",
            "description": "The unique identifer of the job",
            "required": true,
            "schema": {
              "maximum": 9223372036854776000,
              "minimum": 1,
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "pageNumber",
            "in": "query",
            "description": "The page number being requested (minimum: 1, maximum: 2147483)",
            "schema": {
              "maximum": 2147483,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The page size being requested (minimum: 1, maximum: 1000)",
            "schema": {
              "maximum": 1000,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includeBranchedWorksheets",
            "in": "query",
            "description": "Whether to include branched worksheets in the response",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedResponseReadJobWorksheetModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Jobs"
        ],
        "summary": "Sets a collection of worksheets for a given job",
        "description": "Sets a collection of worksheets for a given job (required scope jobs:write)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "jobId",
            "in": "path",
            "description": "The unique job id to query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "requestBody": {
          "description": "The model to set worksheet information",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SetJobWorksheetsModel"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v1/jobs/{jobId}/worksheets/{worksheetId}": {
      "get": {
        "tags": [
          "Jobs"
        ],
        "summary": "Get a job worksheet",
        "description": "Retrieve the details of a single job worksheet (required scope jobs:read)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "jobId",
            "in": "path",
            "description": "The unique identifier of the job stock",
            "required": true,
            "schema": {
              "maximum": 9223372036854776000,
              "minimum": 1,
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "worksheetId",
            "in": "path",
            "description": "The unique identifier of the worksheet",
            "required": true,
            "schema": {
              "maximum": 9223372036854776000,
              "minimum": 1,
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReadJobWorksheetModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v1/jobTypes": {
      "get": {
        "tags": [
          "JobTypes"
        ],
        "summary": "Get a list of job types",
        "description": "Retrieve a paged collection of job types (required scope jobs:read)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "sortBy",
            "in": "query",
            "description": "The field to sort items in the page by",
            "schema": {
              "$ref": "#/components/schemas/JobTypeSortOptions"
            }
          },
          {
            "name": "direction",
            "in": "query",
            "description": "The direction to apply the sort",
            "schema": {
              "$ref": "#/components/schemas/SortDirection"
            }
          },
          {
            "name": "id",
            "in": "query",
            "description": "Only return job types where `id` matches the value(s) provided (Max items: 50)",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int64"
              }
            }
          },
          {
            "name": "isTasksEnabled",
            "in": "query",
            "description": "Only return job types where the 'isTaskEnabled' matches the provided value",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "pageNumber",
            "in": "query",
            "description": "The page number being requested (minimum: 1, maximum: 2147483)",
            "schema": {
              "maximum": 2147483,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The page size being requested (minimum: 1, maximum: 1000)",
            "schema": {
              "maximum": 1000,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedResponseReadJobTypeModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v1/jobTypes/{jobTypeId}": {
      "get": {
        "tags": [
          "JobTypes"
        ],
        "summary": "Get a job type",
        "description": "Retrieve the details of a single job type (required scope jobs:read)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "jobTypeId",
            "in": "path",
            "description": "The unique identifer of the job type",
            "required": true,
            "schema": {
              "maximum": 9223372036854776000,
              "minimum": 1,
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReadJobTypeModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v1/nominalCodes": {
      "get": {
        "tags": [
          "ReferenceData"
        ],
        "summary": "Get a list of nominal codes",
        "description": "Retrieves a paged collection of nominal codes (required scope stock:read)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "sortBy",
            "in": "query",
            "description": "The field to sort items in the page by",
            "schema": {
              "$ref": "#/components/schemas/NominalCodeSortOptions"
            }
          },
          {
            "name": "direction",
            "in": "query",
            "description": "The direction to apply the sort",
            "schema": {
              "$ref": "#/components/schemas/SortDirection"
            }
          },
          {
            "name": "id",
            "in": "query",
            "description": "Only return nominal codes where 'id' matches the value(s) provided (Max items: 50)",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int64"
              }
            }
          },
          {
            "name": "pageNumber",
            "in": "query",
            "description": "The page number being requested (minimum: 1, maximum: 2147483)",
            "schema": {
              "maximum": 2147483,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The page size being requested (minimum: 1, maximum: 1000)",
            "schema": {
              "maximum": 1000,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedResponseReadNominalCodeModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v1/nominalCodes/{nominalCodeId}": {
      "get": {
        "tags": [
          "ReferenceData"
        ],
        "summary": "Get a nominal code by its id",
        "description": "Get a nominal code by its id (required scope stock:read)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "nominalCodeId",
            "in": "path",
            "description": "The unique identifer of the nominal code",
            "required": true,
            "schema": {
              "maximum": 9223372036854776000,
              "minimum": 1,
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReadNominalCodeModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v1/notes": {
      "get": {
        "tags": [
          "Notes"
        ],
        "summary": "Get a list of notes",
        "description": "Retrieves a paged collection of notes (required scope notes:read)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "sortBy",
            "in": "query",
            "description": "The field to sort items in the page by",
            "schema": {
              "$ref": "#/components/schemas/NoteSortOptions"
            }
          },
          {
            "name": "direction",
            "in": "query",
            "description": "The direction to apply the sort",
            "schema": {
              "$ref": "#/components/schemas/SortDirection"
            }
          },
          {
            "name": "id",
            "in": "query",
            "description": "Only return notes where `id` matches the value(s) provided (Max items: 50)",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int64"
              }
            }
          },
          {
            "name": "entityType",
            "in": "query",
            "description": "Only return notes where `entityType` matches the value provided",
            "schema": {
              "$ref": "#/components/schemas/NoteEntityType"
            }
          },
          {
            "name": "entityId",
            "in": "query",
            "description": "Only return notes where `entityId` matches the value(s) provided. To use this filter, `entityType` must also be provided (Max items: 50)",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int64"
              }
            }
          },
          {
            "name": "typeId",
            "in": "query",
            "description": "Only return notes where `typeId` matches the value(s) provided (Max items: 50)",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int64"
              }
            }
          },
          {
            "name": "ownedByUserId",
            "in": "query",
            "description": "Only return notes where `ownedByUserId` matches the value(s) provided (Max items: 50)",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int64"
              }
            }
          },
          {
            "name": "reference",
            "in": "query",
            "description": "Only return notes where `reference` matches the value(s) provided (Max items: 50)",
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "status",
            "in": "query",
            "description": "Only return notes where `status` matches the value(s) provided (Max items: 50)",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/components/schemas/NoteStatus"
              }
            }
          },
          {
            "name": "contactId",
            "in": "query",
            "description": "Only return notes where `contactId` matches the value(s) provided (Max items: 50)",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int64"
              }
            }
          },
          {
            "name": "dueAtTo",
            "in": "query",
            "description": "Only return notes where `dueAt` occurs at or before the UTC timestamp provided",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "dueAtFrom",
            "in": "query",
            "description": "Only return notes where `dueAt` occurs at or after the UTC timestamp provided",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "createdAtFrom",
            "in": "query",
            "description": "Only return notes where `createdAt` is the same or newer than this UTC value",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "createdAtTo",
            "in": "query",
            "description": "Only return notes where `createdAt` is the same or older than this UTC value",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "pageNumber",
            "in": "query",
            "description": "The page number being requested (minimum: 1, maximum: 2147483)",
            "schema": {
              "maximum": 2147483,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The page size being requested (minimum: 1, maximum: 1000)",
            "schema": {
              "maximum": 1000,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedResponseReadNoteModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Notes"
        ],
        "summary": "Create a note",
        "description": "Creates a new note associated with a specific entity (required scope notes:write)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateNoteModel"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostResponseInt64"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v1/notes/{noteId}": {
      "get": {
        "tags": [
          "Notes"
        ],
        "summary": "Get a note",
        "description": "Retrieves the details of a single note (required scope notes:read)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "noteId",
            "in": "path",
            "description": "The unique identifier of the note",
            "required": true,
            "schema": {
              "maximum": 9223372036854776000,
              "minimum": 1,
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReadNoteModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Notes"
        ],
        "summary": "Update a note",
        "description": "Updates the details of a single note (required scope notes:write)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "noteId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateNoteModel"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Notes"
        ],
        "summary": "Delete a note",
        "description": "Delete a note (required scope notes:write)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "noteId",
            "in": "path",
            "description": "The note id",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v1/notes/{noteId}/progress": {
      "put": {
        "tags": [
          "Notes"
        ],
        "summary": "Update a note's progress",
        "description": "Updates the percentage completion of a note (required scope notes:write)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "noteId",
            "in": "path",
            "description": "The unique identifier of the note",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "The model containing information used to update the note progress",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateNoteProgressModel"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v1/notes/{noteId}/progress/history": {
      "get": {
        "tags": [
          "Notes"
        ],
        "summary": "Get the history of progress updates for a note",
        "description": "Retrieves the history of progress updates made against a note (required scope notes:read)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "noteId",
            "in": "path",
            "description": "The unique identifier of the note",
            "required": true,
            "schema": {
              "maximum": 9223372036854776000,
              "minimum": 1,
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "sortBy",
            "in": "query",
            "description": "The field to sort items in the page by",
            "schema": {
              "$ref": "#/components/schemas/NoteProgressSortOptions"
            }
          },
          {
            "name": "direction",
            "in": "query",
            "description": "The direction to apply the sort",
            "schema": {
              "$ref": "#/components/schemas/SortDirection"
            }
          },
          {
            "name": "pageNumber",
            "in": "query",
            "description": "The page number being requested (minimum: 1, maximum: 2147483)",
            "schema": {
              "maximum": 2147483,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The page size being requested (minimum: 1, maximum: 1000)",
            "schema": {
              "maximum": 1000,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedResponseReadNoteProgressModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v1/noteTypes": {
      "get": {
        "tags": [
          "NoteTypes"
        ],
        "summary": "Get a list of note types",
        "description": "Retrieve a paged collection of note types (required scope notes:read)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "sortBy",
            "in": "query",
            "description": "The field to sort items in the page by",
            "schema": {
              "$ref": "#/components/schemas/NoteTypeSortOptions"
            }
          },
          {
            "name": "direction",
            "in": "query",
            "description": "The direction to apply the sort",
            "schema": {
              "$ref": "#/components/schemas/SortDirection"
            }
          },
          {
            "name": "name",
            "in": "query",
            "description": "Only return note types where `name` matches with the value(s) provided (Max items: 50)",
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "id",
            "in": "query",
            "description": "Only return note types where `id` matches the value(s) provided (Max items: 50)",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int64"
              }
            }
          },
          {
            "name": "pageNumber",
            "in": "query",
            "description": "The page number being requested (minimum: 1, maximum: 2147483)",
            "schema": {
              "maximum": 2147483,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The page size being requested (minimum: 1, maximum: 1000)",
            "schema": {
              "maximum": 1000,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedResponseReadNoteTypeModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v1/noteTypes/{noteTypeId}": {
      "get": {
        "tags": [
          "NoteTypes"
        ],
        "summary": "Get a note type",
        "description": "Retrieve the details of a single note type (required scope notes:read)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "noteTypeId",
            "in": "path",
            "description": "The unique identifer of the note type",
            "required": true,
            "schema": {
              "maximum": 9223372036854776000,
              "minimum": 1,
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReadNoteTypeModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v1/persons": {
      "get": {
        "tags": [
          "Persons"
        ],
        "summary": "Get a list of persons",
        "description": "Retrieve a paged collection of persons (required scope contacts:persons:read)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "sortBy",
            "in": "query",
            "description": "The field to sort items in the page by",
            "schema": {
              "$ref": "#/components/schemas/PersonSortOptions"
            }
          },
          {
            "name": "direction",
            "in": "query",
            "description": "The direction to apply the sort",
            "schema": {
              "$ref": "#/components/schemas/SortDirection"
            }
          },
          {
            "name": "contactId",
            "in": "query",
            "description": "Only return persons where `contactId` matches the value(s) provided (Max items: 50)",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int64"
              }
            }
          },
          {
            "name": "surname",
            "in": "query",
            "description": "Only return persons where `surname` matches or starts with the value provided",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "email",
            "in": "query",
            "description": "Only return persons where `email` matches the value provided",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "mobile",
            "in": "query",
            "description": "Only return persons where `mobile` matches the value provided",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "landline",
            "in": "query",
            "description": "Only return persons where `landline` matches the value provided",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "isOptedOut",
            "in": "query",
            "description": "Only return persons where `isOptedOut` matches the value provided",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "pageNumber",
            "in": "query",
            "description": "The page number being requested (minimum: 1, maximum: 2147483)",
            "schema": {
              "maximum": 2147483,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The page size being requested (minimum: 1, maximum: 1000)",
            "schema": {
              "maximum": 1000,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedResponseReadPersonModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Persons"
        ],
        "summary": "Create a person",
        "description": "Create a new person (required scope contacts:persons:write)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "requestBody": {
          "description": "Create person model",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreatePersonModel"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostResponseGuid"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v1/persons/{personId}": {
      "get": {
        "tags": [
          "Persons"
        ],
        "summary": "Get a person",
        "description": "Retrieve the details of a single person (required scope contacts:persons:read)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "personId",
            "in": "path",
            "description": "The unique identifier of the person",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReadPersonModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Persons"
        ],
        "summary": "Update a person",
        "description": "Update the details of a single person (required scope contacts:persons:write)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "personId",
            "in": "path",
            "description": "Person id",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "description": "Update person model. At least one optional value must be provided",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdatePersonModel"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v1/persons/{personId}/dataConsent": {
      "put": {
        "tags": [
          "Persons"
        ],
        "summary": "Set a person's data consent",
        "description": "Captures information about when a person granted/denied consent to have their personal data stored (required scope contacts:persons:write)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "personId",
            "in": "path",
            "description": "Person id",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "description": "Update person consent model",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdatePersonConsentModel"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v1/persons/{personId}/dataConsent/history": {
      "get": {
        "tags": [
          "Persons"
        ],
        "summary": "Get a person's consent history",
        "description": "Gets a paged collection of events indicating when a person granted/denied consent to have their personal data stored (required scope contacts:persons:read)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "personId",
            "in": "path",
            "description": "The unique identifier of the person",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "direction",
            "in": "query",
            "description": "The direction to apply the sort",
            "schema": {
              "$ref": "#/components/schemas/SortDirection"
            }
          },
          {
            "name": "sortBy",
            "in": "query",
            "description": "The field to sort items in the page by",
            "schema": {
              "$ref": "#/components/schemas/PersonConsentSortOption"
            }
          },
          {
            "name": "pageNumber",
            "in": "query",
            "description": "The page number being requested (minimum: 1, maximum: 2147483)",
            "schema": {
              "maximum": 2147483,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The page size being requested (minimum: 1, maximum: 1000)",
            "schema": {
              "maximum": 1000,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedResponseReadPersonConsentModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v1/productCategories": {
      "get": {
        "tags": [
          "Stock"
        ],
        "summary": "Get a list of product categories",
        "description": "Retrieve a paged collection of product categories (required scope stock:read)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "id",
            "in": "query",
            "description": "Only return product categories where `id` matches the value(s) provided (Max items: 50)",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int64"
              }
            }
          },
          {
            "name": "sortBy",
            "in": "query",
            "description": "The field to sort items in the page by",
            "schema": {
              "$ref": "#/components/schemas/ProductCategorySortOptions"
            }
          },
          {
            "name": "direction",
            "in": "query",
            "description": "The direction to apply the sort",
            "schema": {
              "$ref": "#/components/schemas/SortDirection"
            }
          },
          {
            "name": "pageNumber",
            "in": "query",
            "description": "The page number being requested (minimum: 1, maximum: 2147483)",
            "schema": {
              "maximum": 2147483,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The page size being requested (minimum: 1, maximum: 1000)",
            "schema": {
              "maximum": 1000,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedResponseReadProductCategoryModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v1/productCategories/{productCategoryId}": {
      "get": {
        "tags": [
          "Stock"
        ],
        "summary": "Get a product category",
        "description": "Retrieve the details of a single product category (required scope stock:read)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "productCategoryId",
            "in": "path",
            "description": "The unique identifier of the product category",
            "required": true,
            "schema": {
              "maximum": 9223372036854776000,
              "minimum": 1,
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReadProductCategoryModel"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v1/resourceGroups": {
      "get": {
        "tags": [
          "ResourceGroups"
        ],
        "summary": "Get a list of resource groups",
        "description": "Retrieve a paged collection of resource groups (required scope resources:read)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "sortBy",
            "in": "query",
            "description": "The field to sort items in the page by",
            "schema": {
              "$ref": "#/components/schemas/ResourceGroupSortOptions"
            }
          },
          {
            "name": "direction",
            "in": "query",
            "description": "The direction to apply the sort",
            "schema": {
              "$ref": "#/components/schemas/SortDirection"
            }
          },
          {
            "name": "name",
            "in": "query",
            "description": "Only return resources where `name` matches with the value(s) provided (Max items: 50)",
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "id",
            "in": "query",
            "description": "Only return resources where `id` matches the value(s) provided (Max items: 50)",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int64"
              }
            }
          },
          {
            "name": "pageNumber",
            "in": "query",
            "description": "The page number being requested (minimum: 1, maximum: 2147483)",
            "schema": {
              "maximum": 2147483,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The page size being requested (minimum: 1, maximum: 1000)",
            "schema": {
              "maximum": 1000,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedResponseReadResourceGroupModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v1/resourceGroups/{resourceGroupId}": {
      "get": {
        "tags": [
          "ResourceGroups"
        ],
        "summary": "Get a resource group",
        "description": "Retrieve the details of a single resource group (required scope resources:read)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "resourceGroupId",
            "in": "path",
            "description": "The unique identifer of the resource group",
            "required": true,
            "schema": {
              "maximum": 9223372036854776000,
              "minimum": 1,
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReadResourceGroupModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v1/resources": {
      "get": {
        "tags": [
          "Resources"
        ],
        "summary": "Get a list of resources",
        "description": "Retrieve a paged collection of resources (required scope resources:read)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "sortBy",
            "in": "query",
            "description": "The field to sort items in the page by",
            "schema": {
              "$ref": "#/components/schemas/ResourceSortOptions"
            }
          },
          {
            "name": "direction",
            "in": "query",
            "description": "The direction to apply the sort",
            "schema": {
              "$ref": "#/components/schemas/SortDirection"
            }
          },
          {
            "name": "name",
            "in": "query",
            "description": "Only return resources where `name` matches or starts with the value provided",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "reference",
            "in": "query",
            "description": "Only return resources where `reference` matches the value(s) provided (Max items: 50)",
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "id",
            "in": "query",
            "description": "Only return resources where `id` matches the value(s) provided (Max items: 50)",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int64"
              }
            }
          },
          {
            "name": "groupId",
            "in": "query",
            "description": "Only return resources where `groupId` matches the value(s) provided (Max items: 50)",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int64"
              }
            }
          },
          {
            "name": "pageNumber",
            "in": "query",
            "description": "The page number being requested (minimum: 1, maximum: 2147483)",
            "schema": {
              "maximum": 2147483,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The page size being requested (minimum: 1, maximum: 1000)",
            "schema": {
              "maximum": 1000,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedResponseReadResourceModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Resources"
        ],
        "summary": "Create a resource",
        "description": "Create a new resource (required scope resources:write)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateResourceModel"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostResponseInt64"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v1/resources/{resourceId}": {
      "get": {
        "tags": [
          "Resources"
        ],
        "summary": "Get a resource",
        "description": "Retrieve the details of a single resource (required scope resources:read)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "resourceId",
            "in": "path",
            "description": "The unique identifer of the resource",
            "required": true,
            "schema": {
              "maximum": 9223372036854776000,
              "minimum": 1,
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReadResourceModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Resources"
        ],
        "summary": "Update a resource",
        "description": "Update the details of a single resource (required scope resources:write)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "resourceId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateResourceModel"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v1/stockDetails": {
      "get": {
        "tags": [
          "Stock"
        ],
        "summary": "Get a list of stock details",
        "description": "Retrieves a paged collection of stock details (required scope stock:read)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "sortBy",
            "in": "query",
            "description": "The field to sort items in the page by",
            "schema": {
              "$ref": "#/components/schemas/StockDetailsSortOptions"
            }
          },
          {
            "name": "direction",
            "in": "query",
            "description": "The direction to apply the sort",
            "schema": {
              "$ref": "#/components/schemas/SortDirection"
            }
          },
          {
            "name": "id",
            "in": "query",
            "description": "Only return stock details where `id` matches the value(s) provided (Max items: 50)",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int64"
              }
            }
          },
          {
            "name": "productCategoryId",
            "in": "query",
            "description": "Only return stock details where `productCategoryId` matches the value(s) provided (Max items: 50)",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int64"
              }
            }
          },
          {
            "name": "modelNumber",
            "in": "query",
            "description": "Only return stock details where `modelNumber` matches the value(s) provided (Max items: 50)",
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "isConsumable",
            "in": "query",
            "description": "Only return stock details where `isConsumable` matches the value provided",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "stockCode",
            "in": "query",
            "description": "Only return stock details where `stockCode` matches the value(s) provided (Max items: 50)",
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "batchNumber",
            "in": "query",
            "description": "Only return stock details where `batchNumber` matches the value(s) provided (Max items: 50)",
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "pageNumber",
            "in": "query",
            "description": "The page number being requested (minimum: 1, maximum: 2147483)",
            "schema": {
              "maximum": 2147483,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The page size being requested (minimum: 1, maximum: 1000)",
            "schema": {
              "maximum": 1000,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedResponseReadStockDetailsModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Stock"
        ],
        "summary": "Create a stock details",
        "description": "Creates a new stock details entity (required scope stock:write)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateStockDetailsModel"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostResponseInt64"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v1/stockDetails/{stockDetailsId}": {
      "get": {
        "tags": [
          "Stock"
        ],
        "summary": "Get a stock details",
        "description": "Retrieves single stock details (required scope stock:read)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "stockDetailsId",
            "in": "path",
            "description": "The unique identifier of the stock details",
            "required": true,
            "schema": {
              "maximum": 9223372036854776000,
              "minimum": 1,
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReadStockDetailsModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Stock"
        ],
        "summary": "Update a stock details",
        "description": "Update the details of a single stock details (required scope stock:write)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "stockDetailsId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateStockDetailsModel"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v1/stockDetails/{stockDetailsId}/suppliers": {
      "get": {
        "tags": [
          "Stock"
        ],
        "summary": "Get a list of stock suppliers",
        "description": "Retrieves a paged collection of stock suppliers (required scope stock:read)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "stockDetailsId",
            "in": "path",
            "description": "The unique identifier of the stock details",
            "required": true,
            "schema": {
              "maximum": 9223372036854776000,
              "minimum": 1,
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "id",
            "in": "query",
            "description": "Only return notes where `id` matches the value(s) provided (Max items: 50)",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int64"
              }
            }
          },
          {
            "name": "pageNumber",
            "in": "query",
            "description": "The page number being requested (minimum: 1, maximum: 2147483)",
            "schema": {
              "maximum": 2147483,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The page size being requested (minimum: 1, maximum: 1000)",
            "schema": {
              "maximum": 1000,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedResponseReadStockSupplierModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Stock"
        ],
        "summary": "Create a stock supplier",
        "description": "Create a new stock supplier (required scope stock:write)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "stockDetailsId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateStockSupplierModel"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostResponseInt64"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v1/stockDetails/{stockDetailsId}/suppliers/{stockSupplierId}": {
      "get": {
        "tags": [
          "Stock"
        ],
        "summary": "Get a stock supplier",
        "description": "Get a stock supplier by its id (required scope stock:read)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "stockDetailsId",
            "in": "path",
            "description": "The unique identifier of the stock details entity",
            "required": true,
            "schema": {
              "maximum": 9223372036854776000,
              "minimum": 1,
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "stockSupplierId",
            "in": "path",
            "description": "The unique identifier of the stock supplier",
            "required": true,
            "schema": {
              "maximum": 9223372036854776000,
              "minimum": 1,
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReadStockSupplierModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Stock"
        ],
        "summary": "Update a stock supplier",
        "description": "Update the details of a stock supplier (required scope stock:write)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "stockDetailsId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "stockSupplierId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateStockSupplierModel"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v1/stockItems": {
      "get": {
        "tags": [
          "Stock"
        ],
        "summary": "Get a list of stock items",
        "description": "Retrieves a paged collection of stock items (required scope stock:read)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "sortBy",
            "in": "query",
            "description": "The field to sort items in the page by",
            "schema": {
              "$ref": "#/components/schemas/StockItemsSortOptions"
            }
          },
          {
            "name": "direction",
            "in": "query",
            "description": "The direction to apply the sort",
            "schema": {
              "$ref": "#/components/schemas/SortDirection"
            }
          },
          {
            "name": "id",
            "in": "query",
            "description": "Only return stock items where `id` matches the value(s) provided (Max items: 50)",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int64"
              }
            }
          },
          {
            "name": "stockDetailsId",
            "in": "query",
            "description": "Only return stock items where `stockDetailsId` matches the value(s) provided (Max items: 50)",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int64"
              }
            }
          },
          {
            "name": "serialNumber",
            "in": "query",
            "description": "Only return stock items where 'serialNumber' matches the value provided",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "locationContactId",
            "in": "query",
            "description": "Only return stock items where 'locationContactId' matches the value provided",
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "locationVehicleId",
            "in": "query",
            "description": "Only return stock items where 'locationVehicleId' matches the value provided",
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "isSold",
            "in": "query",
            "description": "If true only returns stock items where 'soldAt' is not null, if false only returns stock items where 'soldAt' is null",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "pageNumber",
            "in": "query",
            "description": "The page number being requested (minimum: 1, maximum: 2147483)",
            "schema": {
              "maximum": 2147483,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The page size being requested (minimum: 1, maximum: 1000)",
            "schema": {
              "maximum": 1000,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedResponseReadStockItemModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Stock"
        ],
        "summary": "Create a stock item",
        "description": "Creates a new stock item entity (required scope stock:write)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateStockItemsModel"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostResponseInt64"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v1/stockItems/{stockItemId}": {
      "get": {
        "tags": [
          "Stock"
        ],
        "summary": "Get a stock item",
        "description": "Retrieves a single stock item (required scope stock:read)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "stockItemId",
            "in": "path",
            "description": "The unique identifier of the stock item",
            "required": true,
            "schema": {
              "maximum": 9223372036854776000,
              "minimum": 1,
              "type": "integer",
              "format": "int64",
              "example": 5514123
            },
            "example": 5514123
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReadStockItemModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Stock"
        ],
        "summary": "Update a stock item",
        "description": "Updates the details of a single stock item (required scope stock:write)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "stockItemId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateStockItemModel"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v1/stockMovement": {
      "get": {
        "tags": [
          "Stock"
        ],
        "summary": "Get a list of stock movements",
        "description": "Retrieves a paged collection of stock movements (required scope stock:read)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "id",
            "in": "query",
            "description": "Only return resources where `id` matches the value(s) provided (Max items: 50)",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int64"
              }
            }
          },
          {
            "name": "jobId",
            "in": "query",
            "description": "Only return resources where `jobId` matches the value(s) provided (Max items: 50)",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int64"
              }
            }
          },
          {
            "name": "pickUpAtFrom",
            "in": "query",
            "description": "Only return stock movement where `pickupAt` is the same or newer than this UTC value",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "pickUpAtTo",
            "in": "query",
            "description": "Only return stock movement where `pickupAt` is the same or older than this UTC value",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "dropOffAtFrom",
            "in": "query",
            "description": "Only return resources where 'dropOffDate' is greater than or equal to the UTC value provided",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "dropOffAtTo",
            "in": "query",
            "description": "Only return resources where 'dropOffDate' is lesser than or equal to the UTC value provided",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "stockDetailsId",
            "in": "query",
            "description": "Only return resources where `stockDetailsId` matches the value(s) provided (Max items: 50)",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int64"
              }
            }
          },
          {
            "name": "stockItemId",
            "in": "query",
            "description": "Only return resources where `stockItemId` matches the value(s) provided (Max items: 50)",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int64"
              }
            }
          },
          {
            "name": "vehicleId",
            "in": "query",
            "description": "Only return resources where `vehicleId` matches the value(s) provided (Max items: 50)",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int64"
              }
            }
          },
          {
            "name": "dropOffContactId",
            "in": "query",
            "description": "Only return records where 'dropOffContactId' matches the value(s) provided (Max items: 50)",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int64"
              }
            }
          },
          {
            "name": "dropOffVehicleId",
            "in": "query",
            "description": "Only return records where 'dropOffVehicleId' matches the value(s) provided (Max items: 50)",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int64"
              }
            }
          },
          {
            "name": "pageNumber",
            "in": "query",
            "description": "The page number being requested (minimum: 1, maximum: 2147483)",
            "schema": {
              "maximum": 2147483,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The page size being requested (minimum: 1, maximum: 1000)",
            "schema": {
              "maximum": 1000,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedResponseReadStockMovementModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v1/users": {
      "get": {
        "tags": [
          "Users"
        ],
        "summary": "Gets a list of users",
        "description": "Retrieve a paged collection of users (required scope users:read)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "sortBy",
            "in": "query",
            "description": "The field to sort items in the page by",
            "schema": {
              "$ref": "#/components/schemas/UserSortOptions"
            }
          },
          {
            "name": "direction",
            "in": "query",
            "description": "The direction to apply the sort",
            "schema": {
              "$ref": "#/components/schemas/SortDirection"
            }
          },
          {
            "name": "pageNumber",
            "in": "query",
            "description": "The page number being requested (minimum: 1, maximum: 2147483)",
            "schema": {
              "maximum": 2147483,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The page size being requested (minimum: 1, maximum: 1000)",
            "schema": {
              "maximum": 1000,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "emailAddress",
            "in": "query",
            "description": "The email address to filter users by",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedResponseReadUserModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Users"
        ],
        "summary": "Create a user",
        "description": "Create a new user (required scope users:write)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateUserModel"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostResponseInt64"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v1/users/{userId}": {
      "get": {
        "tags": [
          "Users"
        ],
        "summary": "Get a user",
        "description": "Retrieve the details of a single user (required scope users:read)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "userId",
            "in": "path",
            "description": "The unique identifier of the user",
            "required": true,
            "schema": {
              "maximum": 9223372036854776000,
              "minimum": 1,
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReadUserModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Users"
        ],
        "summary": "Update a user",
        "description": "Updates the details of a specific user (required scope users:write)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "userId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateUserModel"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v1/vatCodes": {
      "get": {
        "tags": [
          "ReferenceData"
        ],
        "summary": "Get a list of VAT codes",
        "description": "Retrieves a paged collection of VAT codes (required scope stock:read)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "sortBy",
            "in": "query",
            "description": "The field to sort items in the page by",
            "schema": {
              "$ref": "#/components/schemas/VatCodeSortOptions"
            }
          },
          {
            "name": "direction",
            "in": "query",
            "description": "The direction to apply the sort",
            "schema": {
              "$ref": "#/components/schemas/SortDirection"
            }
          },
          {
            "name": "id",
            "in": "query",
            "description": "Only return nominal codes where 'id' matches the value(s) provided (Max items: 50)",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int64"
              }
            }
          },
          {
            "name": "pageNumber",
            "in": "query",
            "description": "The page number being requested (minimum: 1, maximum: 2147483)",
            "schema": {
              "maximum": 2147483,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The page size being requested (minimum: 1, maximum: 1000)",
            "schema": {
              "maximum": 1000,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedResponseReadVatCodeModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v1/vatCodes/{vatCodeId}": {
      "get": {
        "tags": [
          "ReferenceData"
        ],
        "summary": "Get a VAT code by its id",
        "description": "Get a VAT code by its id (required scope stock:read)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "vatCodeId",
            "in": "path",
            "description": "The unique identifer of the VAT code",
            "required": true,
            "schema": {
              "maximum": 9223372036854776000,
              "minimum": 1,
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReadVatCodeModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v1/vehicles": {
      "get": {
        "tags": [
          "Vehicles"
        ],
        "summary": "Get a list of vehicles",
        "description": "Retrieve a paged collection of vehicles (required scope vehicles:read)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "sortBy",
            "in": "query",
            "description": "The field to sort items in the page by",
            "schema": {
              "$ref": "#/components/schemas/VehicleSortOptions"
            }
          },
          {
            "name": "direction",
            "in": "query",
            "description": "The direction to apply the sort",
            "schema": {
              "$ref": "#/components/schemas/SortDirection"
            }
          },
          {
            "name": "registration",
            "in": "query",
            "description": "Only return vehicles where `registration` matches with the value(s) provided (Max items: 50)",
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "reference",
            "in": "query",
            "description": "Only return vehicles where `reference` matches the value(s) provided (Max items: 50)",
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "id",
            "in": "query",
            "description": "Only return resources where `id` matches the value(s) provided (Max items: 50)",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int64"
              }
            }
          },
          {
            "name": "groupId",
            "in": "query",
            "description": "Only return resources where `groupId` matches the value(s) provided (Max items: 50)",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int64"
              }
            }
          },
          {
            "name": "pageNumber",
            "in": "query",
            "description": "The page number being requested (minimum: 1, maximum: 2147483)",
            "schema": {
              "maximum": 2147483,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The page size being requested (minimum: 1, maximum: 1000)",
            "schema": {
              "maximum": 1000,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedResponseReadVehicleModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Vehicles"
        ],
        "summary": "Create a vehicle",
        "description": "Create a new vehicle (required scope vehicles:write)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateVehicleModel"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostResponseInt64"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v1/vehicles/{vehicleId}": {
      "get": {
        "tags": [
          "Vehicles"
        ],
        "summary": "Get a vehicle",
        "description": "Retrieve the details of a single vehicle (required scope vehicles:read)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "vehicleId",
            "in": "path",
            "description": "The unique identifer of the vehicle",
            "required": true,
            "schema": {
              "maximum": 9223372036854776000,
              "minimum": 1,
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReadVehicleModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Vehicles"
        ],
        "summary": "Update a vehicle",
        "description": "Update the details of a single vehicle (required scope vehicles:write)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "vehicleId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateVehicleModel"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v1/worksheetAnswers": {
      "get": {
        "tags": [
          "Worksheets"
        ],
        "summary": "Get a list of worksheet answers",
        "description": "Retrieve a paged collection of worksheet answers. At least one of `entityId`, `worksheetId` or `questionId` must be provided (required scope worksheets:read)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "questionId",
            "in": "query",
            "description": "Only return answers where `questionId` matches the value(s) provided.\nAt least one of `questionId`, `entityId` or `worksheetId` must be provided (Max items: 50)",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int64"
              }
            }
          },
          {
            "name": "entityType",
            "in": "query",
            "description": "Only return answers where `entityType` matches the value provided",
            "schema": {
              "$ref": "#/components/schemas/WorksheetAnswerEntityType"
            }
          },
          {
            "name": "entityId",
            "in": "query",
            "description": "Only return answers where `entityId` matches the value(s) provided. To use this filter, `entityType` must also be provided.\nAt least one of `entityId`, `worksheetId` or `questionId` must be provided (Max items: 50)",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int64"
              }
            }
          },
          {
            "name": "worksheetId",
            "in": "query",
            "description": "Only return answers where `worksheetId` matches the value(s) provided.\nAt least one of `worksheetId`, `entityId` or `questionId` must be provided (Max items: 50)",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int64"
              }
            }
          },
          {
            "name": "pageNumber",
            "in": "query",
            "description": "The page number being requested (minimum: 1, maximum: 2147483)",
            "schema": {
              "maximum": 2147483,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The page size being requested (minimum: 1, maximum: 1000)",
            "schema": {
              "maximum": 1000,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedResponseReadWorksheetAnswerModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v1/worksheetGroups": {
      "get": {
        "tags": [
          "WorksheetGroups"
        ],
        "summary": "Get a list of worksheet groups",
        "description": "Retrieve a paged collection of worksheet groups (required scope worksheets:read)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "sortBy",
            "in": "query",
            "description": "The field to sort items in the page by",
            "schema": {
              "$ref": "#/components/schemas/WorksheetGroupSortOptions"
            }
          },
          {
            "name": "direction",
            "in": "query",
            "description": "The direction to apply the sort",
            "schema": {
              "$ref": "#/components/schemas/SortDirection"
            }
          },
          {
            "name": "id",
            "in": "query",
            "description": "Only return worksheet groups where `id` matches the value(s) provided (Max items: 50)",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int64"
              }
            }
          },
          {
            "name": "pageNumber",
            "in": "query",
            "description": "The page number being requested (minimum: 1, maximum: 2147483)",
            "schema": {
              "maximum": 2147483,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The page size being requested (minimum: 1, maximum: 1000)",
            "schema": {
              "maximum": 1000,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedResponseReadWorksheetGroupModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v1/worksheetGroups/{worksheetGroupId}": {
      "get": {
        "tags": [
          "WorksheetGroups"
        ],
        "summary": "Get a worksheet group",
        "description": "Retrieve the details of a single worksheet group (required scope worksheets:read)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "worksheetGroupId",
            "in": "path",
            "description": "The unique identifier of the worksheet group",
            "required": true,
            "schema": {
              "maximum": 9223372036854776000,
              "minimum": 1,
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReadWorksheetGroupModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v1/worksheets": {
      "get": {
        "tags": [
          "Worksheets"
        ],
        "summary": "Get a list of worksheets",
        "description": "Retrieve a paged collection of worksheets (required scope worksheets:read)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "name",
            "in": "query",
            "description": "Only return worksheets where `name` matches or starts with the value provided",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "groupId",
            "in": "query",
            "description": "Only return worksheets that are part of the group with the provided `groupId` (Max items: 50)",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int64"
              }
            }
          },
          {
            "name": "type",
            "in": "query",
            "description": "Only return worksheets of the selected type",
            "schema": {
              "$ref": "#/components/schemas/WorksheetType"
            }
          },
          {
            "name": "pageNumber",
            "in": "query",
            "description": "The page number being requested (minimum: 1, maximum: 2147483)",
            "schema": {
              "maximum": 2147483,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The page size being requested (minimum: 1, maximum: 1000)",
            "schema": {
              "maximum": 1000,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedResponseReadWorksheetModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v1/worksheets/{worksheetId}": {
      "get": {
        "tags": [
          "Worksheets"
        ],
        "summary": "Get a worksheet",
        "description": "Retrieve the details of a single worksheet (required scope worksheets:read)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "worksheetId",
            "in": "path",
            "description": "The unique identifier of the worksheet",
            "required": true,
            "schema": {
              "maximum": 9223372036854776000,
              "minimum": 1,
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReadWorksheetModel"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/v1/worksheets/{worksheetId}/worksheetQuestions": {
      "get": {
        "tags": [
          "Worksheets"
        ],
        "summary": "Get a collection of worksheet questions related to a worksheet",
        "description": "Retrieve the details of worksheet questions for a given worksheet (required scope worksheets:read)",
        "parameters": [
          {
            "name": "Customer-Id",
            "in": "header",
            "description": "The customer identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "worksheetId",
            "in": "path",
            "description": "The unique identifier of the worksheet",
            "required": true,
            "schema": {
              "maximum": 9223372036854776000,
              "minimum": 1,
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "pageNumber",
            "in": "query",
            "description": "The page number being requested (minimum: 1, maximum: 2147483)",
            "schema": {
              "maximum": 2147483,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The page size being requested (minimum: 1, maximum: 1000)",
            "schema": {
              "maximum": 1000,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReadWorksheetQuestionModel"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ProblemDetails"
                    },
                    {
                      "$ref": "#/components/schemas/HttpValidationProblemDetails"
                    }
                  ]
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "AccountStatus": {
        "enum": [
          "normal",
          "contactOnStop",
          "creditLimitOnStop"
        ],
        "type": "string",
        "description": "The status of the contact (if they are on stop)<p>Possible values:</p><ul><li><b>normal</b>: Normal</li><li><b>contactOnStop</b>: Contact is on stop</li><li><b>creditLimitOnStop</b>: Credit limit is on stop</li></ul>",
        "example": "normal"
      },
      "ApplyJobGroupJobFlagResult": {
        "type": "object",
        "properties": {
          "groupId": {
            "type": "integer",
            "description": "The ID of the job group",
            "format": "int64"
          },
          "jobsFlaggedCount": {
            "type": "integer",
            "description": "The number of jobs to which the flag was applied",
            "format": "int32"
          }
        },
        "additionalProperties": false,
        "description": "Represents the result of applying a job flag to a job group"
      },
      "CancelJobModel": {
        "type": "object",
        "properties": {
          "reason": {
            "type": "string",
            "description": "A textual reason as to why the job is cancelled",
            "nullable": true,
            "example": "Customer no longer requires the work"
          }
        },
        "additionalProperties": false,
        "description": "Represents a model that holds information about cancelling a job"
      },
      "ConstraintTypes": {
        "enum": [
          "jobMustStartAfter",
          "jobMustStartBefore",
          "jobMustCompleteBefore",
          "jobResource",
          "jobResourceGroup",
          "jobVehicle",
          "jobVehicleGroup",
          "jobMustStartInAvailableHours",
          "jobMustCompleteInAvailableHours",
          "jobRequiresResourceSkill",
          "jobRequiresVehicleAttribute"
        ],
        "type": "string",
        "description": "Enum of restriction rules that can be applied to a constraint<p>Possible values:</p><ul><li><b>jobMustStartAfter</b>: Job must start after a specified time</li><li><b>jobMustStartBefore</b>: Job must start before a specified time</li><li><b>jobMustCompleteBefore</b>: Job must complete before a specified time</li><li><b>jobResource</b>: Job resource</li><li><b>jobResourceGroup</b>: Job resource group</li><li><b>jobVehicle</b>: Job vehicle</li><li><b>jobVehicleGroup</b>: Job vehicle group</li><li><b>jobMustStartInAvailableHours</b>: Job must start within the available hours of the resource</li><li><b>jobMustCompleteInAvailableHours</b>: Job must complete within the available hours of the resource</li><li><b>jobRequiresResourceSkill</b>: Job requires a resource with the specified skill</li><li><b>jobRequiresVehicleAttribute</b>: Job requires a vehicle with the specified attribute</li></ul>",
        "example": "jobMustStartAfter"
      },
      "ContactGroupSortOptions": {
        "enum": [
          "name"
        ],
        "type": "string",
        "description": "Shows the possible values for sorting contact groups<p>Possible values:</p><ul><li><b>name</b>: Sorts contact groups by name</li></ul>",
        "example": "name"
      },
      "ContactSortOptions": {
        "enum": [
          "name",
          "createdAt"
        ],
        "type": "string",
        "description": "Shows the possible values for sorting contacts<p>Possible values:</p><ul><li><b>name</b>: Sort contacts by name</li><li><b>createdAt</b>: Sort contacts by created at</li></ul>",
        "example": "name"
      },
      "CreateContactGroupModel": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "The name of the contact group",
            "example": "High value customers"
          }
        },
        "additionalProperties": false,
        "description": "Create contact group model"
      },
      "CreateContactModel": {
        "required": [
          "groupId",
          "location",
          "name"
        ],
        "type": "object",
        "properties": {
          "reference": {
            "type": "string",
            "description": "The internal reference of the contact - should usually be unique",
            "nullable": true,
            "example": "5514123"
          },
          "name": {
            "minLength": 1,
            "type": "string",
            "description": "The name of the contact",
            "example": "Example Company"
          },
          "groupId": {
            "type": "integer",
            "description": "The unique identifier of the group this contact belongs to",
            "format": "int64",
            "example": 5514123
          },
          "parentId": {
            "type": "integer",
            "description": "The unique identifier of the parent contact of this contact",
            "format": "int64",
            "nullable": true,
            "example": 1
          },
          "extraInformation": {
            "type": "string",
            "description": "A free text description about the contact",
            "nullable": true,
            "example": "Loyal customer for many years"
          },
          "street": {
            "type": "string",
            "description": "The contact street address",
            "nullable": true,
            "example": "3150 Century Way"
          },
          "town": {
            "type": "string",
            "description": "The contact address town / city / village / locality",
            "nullable": true,
            "example": "Leeds"
          },
          "postalCode": {
            "type": "string",
            "description": "The contact address postcode or zipcode",
            "nullable": true,
            "example": "LS15 6HU"
          },
          "country": {
            "type": "string",
            "description": "The textual name of the contact address country",
            "nullable": true,
            "example": "England"
          },
          "location": {
            "$ref": "#/components/schemas/Location"
          },
          "customFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomFieldWriteModel"
            },
            "description": "Custom fields associated with the contact",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Create contact request model"
      },
      "CreateEntityFlagModel": {
        "required": [
          "flagId"
        ],
        "type": "object",
        "properties": {
          "flagId": {
            "type": "integer",
            "description": "The unique identifier of the flag to apply",
            "format": "int32",
            "example": 12345
          },
          "owner": {
            "type": "string",
            "description": "User email or ID who owns the flag",
            "example": "john.doe@example.com"
          },
          "comments": {
            "type": "string",
            "description": "Additional context for the flag",
            "nullable": true,
            "example": "Requires special attention"
          }
        },
        "additionalProperties": false,
        "description": "Request model for creating a flag on any supported entity type"
      },
      "CreateInvoiceLineItemModel": {
        "required": [
          "quantity"
        ],
        "type": "object",
        "properties": {
          "contactId": {
            "type": "integer",
            "description": "The unique identifier of the contact associated with this invoice item",
            "format": "int64",
            "nullable": true,
            "example": 54321
          },
          "quantity": {
            "type": "number",
            "description": "The quantity of the invoice item",
            "format": "double",
            "example": 1
          },
          "description": {
            "type": "string",
            "description": "Description of the invoice line item",
            "example": "Replacement filter cartridge"
          },
          "taxId": {
            "type": "integer",
            "description": "Tax identifier (must exist and not be deleted for customer). Nullable",
            "format": "int64",
            "nullable": true,
            "example": 1001
          },
          "unitCost": {
            "type": "number",
            "description": "Unit cost (nullable, non-negative)",
            "format": "double",
            "nullable": true,
            "example": 5.5
          },
          "unitSellingPrice": {
            "type": "number",
            "description": "Unit selling price (non-negative)",
            "format": "double",
            "example": 10.99
          },
          "nominalCodeId": {
            "type": "integer",
            "description": "Nominal code identifier (must exist and not be deleted for customer)",
            "format": "int64",
            "nullable": true,
            "example": 50001
          },
          "departmentCodeId": {
            "type": "integer",
            "description": "Department code identifier (must exist and not be deleted for customer)",
            "format": "int64",
            "nullable": true,
            "example": 20002
          }
        },
        "additionalProperties": false,
        "description": "Represents a model that holds information about creating an invoice item"
      },
      "CreateInvoiceModel": {
        "type": "object",
        "properties": {
          "jobId": {
            "type": "integer",
            "description": "The unique identifier of the job associated with this invoice, if applicable",
            "format": "int64",
            "nullable": true,
            "example": 12345
          },
          "jobGroupId": {
            "type": "integer",
            "description": "The unique identifier of the job group associated with this invoice, if applicable",
            "format": "int64",
            "nullable": true,
            "example": 54321
          },
          "contactId": {
            "type": "integer",
            "description": "The unique identifier of the contact associated with this invoice. Will reference the job or job group contact if not provided",
            "format": "int64",
            "nullable": true,
            "example": 1234
          },
          "createdAt": {
            "type": "string",
            "description": "The dateTime the invoice was created. If null, will default to the current dateTime",
            "format": "date-time",
            "nullable": true,
            "example": "2022-11-29T16:50:16.0000000+00:00"
          },
          "reference": {
            "type": "string",
            "description": "The reference of the invoice. If null, will default to an auto-generated reference",
            "nullable": true,
            "example": "InvoiceNote101"
          },
          "currencyCode": {
            "$ref": "#/components/schemas/CurrencyWrite"
          },
          "deliverySiteContactId": {
            "type": "integer",
            "description": "The unique identifier of the delivery site contact associated with this invoice, if applicable",
            "format": "int64",
            "nullable": true,
            "example": 56789
          },
          "bankAccountId": {
            "type": "integer",
            "description": "The unique identifier of the bank account associated with this invoice, if applicable",
            "format": "int64",
            "nullable": true,
            "example": 34567
          },
          "departmentCodeId": {
            "type": "integer",
            "description": "The unique identifier of the department associated with this invoice, if applicable",
            "format": "int64",
            "nullable": true,
            "example": 23456
          },
          "nominalCodeId": {
            "type": "integer",
            "description": "The unique identifier of the nominal code associated with this invoice, if applicable",
            "format": "int64",
            "nullable": true
          },
          "clientNotes": {
            "type": "string",
            "description": "Notes on the invoice",
            "nullable": true,
            "example": "Please pay within 30 days"
          },
          "internalNotes": {
            "type": "string",
            "description": "Internal notes not visible to the client",
            "nullable": true,
            "example": "Follow up in two weeks"
          },
          "customFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomFieldWriteModel"
            },
            "description": "Custom fields to set on the invoice. If a custom field is omitted, its value will be set to the default value for that field",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents a model that holds information about creating an invoice"
      },
      "CreateJobConstraintModel": {
        "required": [
          "type"
        ],
        "type": "object",
        "properties": {
          "type": {
            "$ref": "#/components/schemas/ConstraintTypes"
          },
          "constraintAt": {
            "type": "string",
            "description": "The date and time associated with the job constraint",
            "format": "date-time",
            "nullable": true,
            "example": "2024-07-01T09:00:00.0000000+00:00"
          },
          "entityId": {
            "type": "integer",
            "description": "The unique identifier of the entity associated with the constraint. Required when Type is JobResource, JobResourceGroup, JobVehicle, JobVehicleGroup, JobRequiresResourceSkill, or JobRequiresVehicleAttribute. Must not be provided when Type is not JobResource, JobResourceGroup, JobVehicle, JobVehicleGroup, JobRequiresResourceSkill, or JobRequiresVehicleAttribute",
            "format": "int64",
            "nullable": true,
            "example": 12345
          }
        },
        "additionalProperties": false,
        "description": "Represents a model that holds information about creating a job constraint"
      },
      "CreateJobFlagModel": {
        "required": [
          "flagId"
        ],
        "type": "object",
        "properties": {
          "flagId": {
            "type": "integer",
            "description": "The unique identifier of the flag",
            "format": "int32",
            "example": 12345
          },
          "owner": {
            "type": "string",
            "description": "User email or ID who owns the flag",
            "example": "john.doe@example.com"
          },
          "comments": {
            "type": "string",
            "description": "Additional context for the flag",
            "nullable": true,
            "example": "This job requires special attention"
          }
        },
        "additionalProperties": false,
        "description": "Represents a model that holds information about creating a job flag"
      },
      "CreateJobGroupLineItemModel": {
        "required": [
          "quantity"
        ],
        "type": "object",
        "properties": {
          "contactId": {
            "type": "integer",
            "description": "Contact id that the costs are charged to",
            "format": "int64",
            "nullable": true,
            "example": 6547
          },
          "quantity": {
            "type": "number",
            "description": "Quantity of the line item",
            "format": "double",
            "example": 5
          },
          "description": {
            "type": "string",
            "description": "Description of the line item",
            "example": "Copper pipe - 1m"
          },
          "taxId": {
            "type": "integer",
            "description": "Tax identifier (must exist and not be deleted for customer). Nullable",
            "format": "int64",
            "nullable": true,
            "example": 1
          },
          "unitCost": {
            "type": "number",
            "description": "Unit cost (nullable, non-negative)",
            "format": "double",
            "nullable": true,
            "example": 2.5
          },
          "unitSellingPrice": {
            "type": "number",
            "description": "Unit selling price (non-negative)",
            "format": "double",
            "example": 5.99
          },
          "nominalCodeId": {
            "type": "integer",
            "description": "Id of the associated nominal code",
            "format": "int64",
            "nullable": true,
            "example": 45
          },
          "departmentCodeId": {
            "type": "integer",
            "description": "Id of the associated department code",
            "format": "int64",
            "nullable": true,
            "example": 59
          }
        },
        "additionalProperties": false,
        "description": "Create job group line item request model"
      },
      "CreateJobGroupModel": {
        "required": [
          "plannedEndOption",
          "plannedStartOption"
        ],
        "type": "object",
        "properties": {
          "reference": {
            "type": "string",
            "description": "The internal reference of a job group - should usually be unique. If not provided and auto-referencing is setup, auto-reference value will be used",
            "nullable": true,
            "example": "ABC/12345"
          },
          "contactId": {
            "type": "integer",
            "description": "The unique identifier of the contact the job group is for",
            "format": "int64",
            "example": 12345678
          },
          "personId": {
            "type": "string",
            "description": "The unique uuid identifier of the person who will serve as primary point of contact for the job",
            "format": "uuid",
            "nullable": true,
            "example": "123e4567-e89b-12d3-a456-426614174000"
          },
          "title": {
            "type": "string",
            "description": "The title of the job group",
            "nullable": true,
            "example": "My Group Job"
          },
          "isShownOnDevice": {
            "type": "boolean",
            "description": "Indicates whether the job group is shown on the device. If true, it will be shown",
            "example": false
          },
          "areJobsLinked": {
            "type": "boolean",
            "description": "Indicates whether the jobs in the group are linked",
            "example": true
          },
          "orderNumber": {
            "type": "string",
            "description": "The order number associated with the job group",
            "nullable": true,
            "example": "ORD123456"
          },
          "plannedStartOption": {
            "$ref": "#/components/schemas/JobGroupPlannedStartOptions"
          },
          "plannedStartAt": {
            "type": "string",
            "description": "The UTC timestamp for when the job group should be started. Should be set if the BigChange.BO.RestApi.Application.JobGroups.Models.CreateJobGroupModel.PlannedStartOption is BigChange.BO.RestApi.Application.JobGroups.Enumerations.JobGroupPlannedStartOptions.OnSetDate",
            "format": "date-time",
            "nullable": true,
            "example": "2025-01-01T09:00:00.0000000+00:00"
          },
          "plannedEndOption": {
            "$ref": "#/components/schemas/JobGroupPlannedEndOptions"
          },
          "plannedEndAt": {
            "type": "string",
            "description": "The UTC timestamp for when the job group should be ended. Should be set if the BigChange.BO.RestApi.Application.JobGroups.Models.CreateJobGroupModel.PlannedEndOption is BigChange.BO.RestApi.Application.JobGroups.Enumerations.JobGroupPlannedEndOptions.OnSetDate",
            "format": "date-time",
            "nullable": true,
            "example": "2025-01-01T09:00:00.0000000+00:00"
          },
          "categoryId": {
            "type": "integer",
            "description": "The unique identifier of the category that the job group is assigned to",
            "format": "int64",
            "nullable": true,
            "example": 123456
          },
          "linkedJobsResourceId": {
            "type": "integer",
            "description": "The unique identifier of the resource who will be actioning the job group.  Should return an error if the BigChange.BO.RestApi.Application.JobGroups.Models.CreateJobGroupModel.AreJobsLinked is `false`",
            "format": "int64",
            "nullable": true,
            "example": 1234567
          },
          "linkedJobsStartAt": {
            "type": "string",
            "description": "The UTC timestamp for when the job group is started. Should return an error if the BigChange.BO.RestApi.Application.JobGroups.Models.CreateJobGroupModel.AreJobsLinked is `false`",
            "format": "date-time",
            "nullable": true,
            "example": "2025-01-01T09:00:00.0000000+00:00"
          },
          "linkedJobsVehicleId": {
            "type": "integer",
            "description": "The unique identifier of the vehicle associated with the job group. Should return an error if the BigChange.BO.RestApi.Application.JobGroups.Models.CreateJobGroupModel.AreJobsLinked is `false`",
            "format": "int64",
            "nullable": true,
            "example": 123456
          },
          "ownerId": {
            "type": "integer",
            "description": "The unique identifier of the user who owns the job group",
            "format": "int64",
            "nullable": true,
            "example": 12345
          }
        },
        "additionalProperties": false,
        "description": "Create job group request model"
      },
      "CreateJobLineItemModel": {
        "required": [
          "quantity"
        ],
        "type": "object",
        "properties": {
          "contactId": {
            "type": "integer",
            "description": "The unique identifier of the contact associated with this job item",
            "format": "int64",
            "nullable": true,
            "example": 54321
          },
          "quantity": {
            "type": "number",
            "description": "The quantity of the job item",
            "format": "double",
            "example": 1
          },
          "description": {
            "type": "string",
            "description": "Description of the job line item",
            "example": "Replacement filter cartridge"
          },
          "taxId": {
            "type": "integer",
            "description": "Tax identifier (must exist and not be deleted for customer). Nullable",
            "format": "int64",
            "nullable": true,
            "example": 1001
          },
          "unitCost": {
            "type": "number",
            "description": "Unit cost (nullable, non-negative)",
            "format": "double",
            "nullable": true,
            "example": 5.5
          },
          "unitSellingPrice": {
            "type": "number",
            "description": "Unit selling price (non-negative)",
            "format": "double",
            "example": 10.99
          },
          "nominalCodeId": {
            "type": "integer",
            "description": "Nominal code identifier (must exist and not be deleted for customer)",
            "format": "int64",
            "nullable": true,
            "example": 50001
          },
          "departmentCodeId": {
            "type": "integer",
            "description": "Department code identifier (must exist and not be deleted for customer)",
            "format": "int64",
            "nullable": true,
            "example": 20002
          }
        },
        "additionalProperties": false,
        "description": "Represents a model that holds information about creating a job item"
      },
      "CreateJobModel": {
        "required": [
          "contactId",
          "typeId"
        ],
        "type": "object",
        "properties": {
          "typeId": {
            "type": "integer",
            "description": "The unique identifier of the type assigned to this job",
            "format": "int64",
            "example": 5514123
          },
          "contactId": {
            "type": "integer",
            "description": "The unique identifier of the contact (customer) for who this job is to be performed",
            "format": "int64",
            "example": 5514123
          },
          "plannedDuration": {
            "type": "integer",
            "description": "The planned duration for the job, indicated in minutes. If not provided, the default duration for the job type will be used",
            "format": "int32",
            "nullable": true,
            "example": 90
          },
          "reference": {
            "type": "string",
            "description": "The internal reference of the job - should usually be unique. If not provided and job type auto-reference set, auto-referenced value will be used",
            "nullable": true,
            "example": "ABC/5514123"
          },
          "description": {
            "type": "string",
            "description": "The textual details about the job",
            "nullable": true,
            "example": "New boiler install - please remove and retain the old boiler"
          },
          "personId": {
            "type": "string",
            "description": "The unique uuid identifier of the person who will serve as primary point of contact for the job",
            "format": "uuid",
            "nullable": true,
            "example": "3729c414-ed21-4849-816f-25d332265dc8"
          },
          "orderNumber": {
            "type": "string",
            "description": "The order number associated to the job. May be required, dependent upon job type",
            "nullable": true,
            "example": "PAO/1312KU"
          },
          "jobGroupId": {
            "type": "integer",
            "description": "The unique identifier of the job group to which this job belongs",
            "format": "int64",
            "nullable": true,
            "example": 42
          },
          "categoryId": {
            "type": "integer",
            "description": "The unique identifier of the category that the job is assigned to",
            "format": "int64",
            "nullable": true,
            "example": 5514123
          },
          "customFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomFieldWriteModel"
            },
            "description": "Custom fields applied to this job"
          },
          "siteContactId": {
            "type": "integer",
            "description": "The unique identifier of the site contact for this job<br/>If provided, the contact must exist within the customer's account",
            "format": "int64",
            "nullable": true,
            "example": 15548440
          }
        },
        "additionalProperties": false,
        "description": "Represents a model that holds information about creating a job"
      },
      "CreateJobStockModel": {
        "type": "object",
        "properties": {
          "stockDetailsId": {
            "type": "integer",
            "description": "The identifier of the type of stock associated with the planned stock usage on the job. Only one job stock can be created per stock detail if stock item id is null",
            "format": "int64",
            "example": 7775
          },
          "stockItemId": {
            "type": "integer",
            "description": "The identifier of the specific stock item associated with the planned stock usage on the job. Must be null when stock detail is consumable. Only one job stock can be created per stock item",
            "format": "int64",
            "nullable": true,
            "example": 5954
          },
          "action": {
            "$ref": "#/components/schemas/JobStockActionWrite"
          },
          "quantityPlanned": {
            "type": "number",
            "description": "The anticipated quantity of stock units that will be used on a job. Must be null or 1 when stock detail is not consumable. Can't be null when stock detail is consumable",
            "format": "double",
            "nullable": true,
            "example": 10.5
          },
          "pickupContactId": {
            "type": "integer",
            "description": "The identifier for the contact at the pickup location during the planned stock usage",
            "format": "int64",
            "nullable": true,
            "example": 1234
          },
          "dropOffContactId": {
            "type": "integer",
            "description": "The identifier for contact at the drop-off location during the planned stock usage",
            "format": "int64",
            "nullable": true,
            "example": 676
          },
          "isDeliveredToBeSold": {
            "type": "boolean",
            "description": "A flag indicating whether the stock is delivered to be sold",
            "example": true
          },
          "isEquipmentAtDropOff": {
            "type": "boolean",
            "description": "A flag indicating whether the stock equipment is at the drop-off location",
            "example": true
          }
        },
        "additionalProperties": false,
        "description": "Represents a model that holds information about creating a job stock"
      },
      "CreateNoteModel": {
        "required": [
          "entityId",
          "entityType",
          "subject",
          "typeId"
        ],
        "type": "object",
        "properties": {
          "entityType": {
            "$ref": "#/components/schemas/NoteEntityType"
          },
          "entityId": {
            "type": "integer",
            "description": "The unique identifier of the associated entity that owns the note, relative to the `entityType`",
            "format": "int64",
            "example": 5514123
          },
          "typeId": {
            "type": "integer",
            "description": "The unique identifier of the note type definition associated to this note",
            "format": "int64",
            "example": 5514123
          },
          "subject": {
            "minLength": 1,
            "type": "string",
            "description": "The subject of the note",
            "example": "Call Mr Brown"
          },
          "ownedByUserId": {
            "type": "integer",
            "description": "The unique id of the user who owns the note. Must have an active licence. If not provided, this will be set to the default user in the note type or the user ID of the API request",
            "format": "int64",
            "nullable": true,
            "example": 67246
          },
          "parentId": {
            "type": "integer",
            "description": "The unique identifier of the parent note of this note",
            "format": "int64",
            "nullable": true,
            "example": 5514123
          },
          "dueAt": {
            "type": "string",
            "description": "The UTC timestamp of when this note is due for completion",
            "format": "date-time",
            "nullable": true,
            "example": "2022-11-29T16:50:16.0000000+00:00"
          },
          "reference": {
            "type": "string",
            "description": "The internal reference of the note - should usually be unique.  If not provided, this will be auto-generated",
            "nullable": true,
            "example": "5514123"
          },
          "status": {
            "$ref": "#/components/schemas/NoteStatus"
          },
          "completionText": {
            "type": "string",
            "description": "The completion text for the note",
            "nullable": true,
            "example": "Completed"
          },
          "description": {
            "type": "string",
            "description": "The detailed textual content about the note",
            "example": "Message left by Mr Brown regarding the recent installation of his CCTC cameras. He can't get one of them working and needs some technical support."
          },
          "customFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomFieldWriteModel"
            },
            "description": "Custom fields associated with the note",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Create note model"
      },
      "CreatePersonModel": {
        "required": [
          "contactId",
          "forename",
          "surname"
        ],
        "type": "object",
        "properties": {
          "contactId": {
            "type": "integer",
            "description": "The unique identifier of the contact that this person belongs to",
            "format": "int64",
            "example": 12345
          },
          "title": {
            "type": "string",
            "description": "The person's title",
            "nullable": true,
            "example": "Mr"
          },
          "forename": {
            "minLength": 1,
            "type": "string",
            "description": "The person's first name",
            "example": "David"
          },
          "surname": {
            "minLength": 1,
            "type": "string",
            "description": "The person's second name",
            "example": "Smith"
          },
          "email": {
            "type": "string",
            "description": "The email address of the person",
            "nullable": true,
            "example": "dave.brown@example.com"
          },
          "mobile": {
            "type": "string",
            "description": "The mobile telephone number of the person",
            "nullable": true,
            "example": "+447812 123112"
          },
          "landline": {
            "type": "string",
            "description": "The landline telephone number of the person",
            "nullable": true,
            "example": "+441312 112441"
          },
          "extension": {
            "type": "string",
            "description": "The landline extension of the person",
            "nullable": true,
            "example": "12"
          },
          "position": {
            "type": "string",
            "description": "The job role that the person holds within the contact",
            "nullable": true,
            "example": "Manager"
          },
          "department": {
            "type": "string",
            "description": "The department that the person belongs to",
            "nullable": true,
            "example": "Customer service"
          },
          "isOptedOut": {
            "type": "boolean",
            "description": "A flag indicating if the contact has opted out of marketing communications",
            "example": false
          },
          "customFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomFieldWriteModel"
            },
            "description": "Custom fields associated with the person",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Create the person request model"
      },
      "CreatePurchaseOrderLineItemModel": {
        "required": [
          "quantity"
        ],
        "type": "object",
        "properties": {
          "contactId": {
            "type": "integer",
            "description": "The unique identifier of the contact associated with this purchase order item",
            "format": "int64",
            "nullable": true,
            "example": 54321
          },
          "quantity": {
            "type": "number",
            "description": "The quantity of the purchase order item",
            "format": "double",
            "example": 1
          },
          "description": {
            "type": "string",
            "description": "Description of the purchase order line item",
            "example": "Replacement filter cartridge"
          },
          "taxId": {
            "type": "integer",
            "description": "Tax identifier (must exist and not be deleted for customer). Nullable",
            "format": "int64",
            "nullable": true,
            "example": 1001
          },
          "unitCost": {
            "type": "number",
            "description": "Unit cost (nullable, non-negative)",
            "format": "double",
            "nullable": true,
            "example": 5.5
          },
          "unitSellingPrice": {
            "type": "number",
            "description": "Unit selling price (non-negative)",
            "format": "double",
            "example": 10.99
          },
          "nominalCodeId": {
            "type": "integer",
            "description": "Nominal code identifier (must exist and not be deleted for customer)",
            "format": "int64",
            "nullable": true,
            "example": 50001
          },
          "departmentCodeId": {
            "type": "integer",
            "description": "Department code identifier (must exist and not be deleted for customer)",
            "format": "int64",
            "nullable": true,
            "example": 20002
          }
        },
        "additionalProperties": false,
        "description": "Represents a model that holds information about creating an purchase order item"
      },
      "CreatePurchaseOrderModel": {
        "type": "object",
        "properties": {
          "jobId": {
            "type": "integer",
            "description": "The unique identifier of the job associated with this purchase order, if applicable",
            "format": "int64",
            "nullable": true,
            "example": 12345
          },
          "jobGroupId": {
            "type": "integer",
            "description": "The unique identifier of the job group associated with this purchase order, if applicable",
            "format": "int64",
            "nullable": true,
            "example": 54321
          },
          "contactId": {
            "type": "integer",
            "description": "The unique identifier of the contact associated with this purchase order. Will reference the job or job group contact if not provided",
            "format": "int64",
            "nullable": true,
            "example": 1234
          },
          "seriesId": {
            "type": "integer",
            "description": "The unique identifier of the purchase order series. Required if you have PO Series setup, otherwise it must be omitted",
            "format": "int64",
            "nullable": true,
            "example": 1234
          },
          "createdAt": {
            "type": "string",
            "description": "The dateTime the purchase order was created. If null, will default to the current dateTime",
            "format": "date-time",
            "nullable": true,
            "example": "2022-11-29T16:50:16.0000000+00:00"
          },
          "reference": {
            "type": "string",
            "description": "The reference of the purchase order. If null, will default to an auto-generated reference",
            "nullable": true,
            "example": "PurchaseOrderNote101"
          },
          "currencyCode": {
            "$ref": "#/components/schemas/CurrencyWrite"
          },
          "deliverySiteContactId": {
            "type": "integer",
            "description": "The unique identifier of the delivery site contact associated with this purchase order, if applicable",
            "format": "int64",
            "nullable": true,
            "example": 56789
          },
          "supplierId": {
            "type": "integer",
            "description": "The unique identifier of the supplier associated with the purchase order",
            "format": "int64",
            "example": 12345
          },
          "clientNotes": {
            "type": "string",
            "description": "Notes on the purchase order",
            "nullable": true,
            "example": "Please pay within 30 days"
          },
          "internalNotes": {
            "type": "string",
            "description": "Internal notes not visible to the client",
            "nullable": true,
            "example": "Follow up in two weeks"
          },
          "customFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomFieldWriteModel"
            },
            "description": "Custom fields to set on the purchase order. If a custom field is omitted, its value will be set to the default value for that field",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents a model that holds information about creating an purchase order"
      },
      "CreateQuoteLineItemModel": {
        "required": [
          "quantity"
        ],
        "type": "object",
        "properties": {
          "contactId": {
            "type": "integer",
            "description": "The unique identifier of the contact associated with this quote line item",
            "format": "int64",
            "nullable": true,
            "example": 54321
          },
          "quantity": {
            "type": "number",
            "description": "The quantity of the quote line item",
            "format": "double",
            "example": 1
          },
          "description": {
            "type": "string",
            "description": "Description of the quote line item",
            "example": "Replacement filter cartridge"
          },
          "taxId": {
            "type": "integer",
            "description": "Tax identifier (must exist and not be deleted for customer). Nullable",
            "format": "int64",
            "nullable": true,
            "example": 1001
          },
          "unitCost": {
            "type": "number",
            "description": "Unit cost (nullable, non-negative)",
            "format": "double",
            "nullable": true,
            "example": 5.5
          },
          "unitSellingPrice": {
            "type": "number",
            "description": "Unit selling price (non-negative)",
            "format": "double",
            "example": 10.99
          },
          "nominalCodeId": {
            "type": "integer",
            "description": "Nominal code identifier (must exist and not be deleted for customer)",
            "format": "int64",
            "nullable": true,
            "example": 50001
          },
          "departmentCodeId": {
            "type": "integer",
            "description": "Department code identifier (must exist and not be deleted for customer)",
            "format": "int64",
            "nullable": true,
            "example": 20002
          }
        },
        "additionalProperties": false,
        "description": "Represents a model that holds information about creating a quote line item"
      },
      "CreateQuoteModel": {
        "type": "object",
        "properties": {
          "jobId": {
            "type": "integer",
            "description": "The unique identifier of the job associated with this quote, if applicable",
            "format": "int64",
            "nullable": true,
            "example": 12345
          },
          "jobGroupId": {
            "type": "integer",
            "description": "The unique identifier of the job group associated with this quote, if applicable",
            "format": "int64",
            "nullable": true,
            "example": 54321
          },
          "contactId": {
            "type": "integer",
            "description": "The unique identifier of the contact associated with this quote. Will reference the job or job group contact if not provided",
            "format": "int64",
            "nullable": true,
            "example": 1234
          },
          "createdAt": {
            "type": "string",
            "description": "The dateTime the quote was created. If null, will default to the current dateTime",
            "format": "date-time",
            "nullable": true,
            "example": "2022-11-29T16:50:16.0000000+00:00"
          },
          "reference": {
            "type": "string",
            "description": "The reference of the quote. If null, will default to an auto-generated reference",
            "nullable": true,
            "example": "quoteNote101"
          },
          "currencyCode": {
            "$ref": "#/components/schemas/CurrencyWrite"
          },
          "deliverySiteContactId": {
            "type": "integer",
            "description": "The unique identifier of the delivery site contact associated with this quote, if applicable",
            "format": "int64",
            "nullable": true,
            "example": 56789
          },
          "departmentCodeId": {
            "type": "integer",
            "description": "The unique identifier of the department associated with this quote, if applicable",
            "format": "int64",
            "nullable": true,
            "example": 23456
          },
          "nominalCodeId": {
            "type": "integer",
            "description": "The unique identifier of the nominal code associated with this quote, if applicable",
            "format": "int64",
            "nullable": true
          },
          "clientNotes": {
            "type": "string",
            "description": "Notes on the quote",
            "nullable": true,
            "example": "Please pay within 30 days"
          },
          "internalNotes": {
            "type": "string",
            "description": "Internal notes not visible to the client",
            "nullable": true,
            "example": "Follow up in two weeks"
          },
          "daysValidFor": {
            "type": "integer",
            "description": "The number of days the quote is valid for",
            "format": "int32",
            "nullable": true,
            "example": 7
          },
          "customFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomFieldWriteModel"
            },
            "description": "Custom fields to set on the quote. If a custom field is omitted, its value will be set to the default value for that field",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents a model that holds information about creating a quote"
      },
      "CreateResourceModel": {
        "required": [
          "groupId",
          "name"
        ],
        "type": "object",
        "properties": {
          "reference": {
            "type": "string",
            "description": "The internal reference of the resource - should usually be unique",
            "nullable": true,
            "example": "XYZ12345"
          },
          "name": {
            "minLength": 1,
            "type": "string",
            "description": "The full name of the resource",
            "example": "David Smith"
          },
          "groupId": {
            "type": "integer",
            "description": "The unique identifier of the resource's group",
            "format": "int64",
            "example": 441122
          },
          "mobile": {
            "type": "string",
            "description": "The mobile telephone number of the resource",
            "nullable": true,
            "example": "+447812 123112"
          },
          "maxTravelDistance": {
            "type": "integer",
            "description": "The maximum number of kilometres the resource will travel from start location (as crow flies)",
            "format": "int32",
            "nullable": true,
            "example": 5
          },
          "fuelCard": {
            "type": "string",
            "description": "The fuel card number associated to the resource",
            "nullable": true,
            "example": "01234567891234"
          },
          "businessKey": {
            "type": "string",
            "description": "The number associated to the resources business key",
            "nullable": true,
            "example": "1231231"
          },
          "privateKey": {
            "type": "string",
            "description": "The number associated to the resources private key",
            "nullable": true,
            "example": "414221"
          },
          "tachoCard": {
            "type": "string",
            "description": "The tachograph driver card number associated to the resource",
            "nullable": true,
            "example": "DRI0RDW0000000100"
          },
          "isTracked": {
            "type": "boolean",
            "description": "Indicates whether tracking data should be collected for this resource",
            "example": true
          },
          "isTrackedOutOfHours": {
            "type": "boolean",
            "description": "Indicates whether out of working hour tracking data is private",
            "example": false
          },
          "workingHours": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/WriteWorkingHourModel"
            },
            "description": "The resources working hours / shifts, expressed relative to `timeZoneId`",
            "nullable": true
          },
          "customFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomFieldWriteModel"
            },
            "description": "Custom fields associated with the resource",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Create the resource request model"
      },
      "CreateSalesOpportunityLineItemModel": {
        "required": [
          "quantity"
        ],
        "type": "object",
        "properties": {
          "contactId": {
            "type": "integer",
            "description": "The unique identifier of the contact associated with this sales opportunity line item",
            "format": "int64",
            "nullable": true,
            "example": 54321
          },
          "quantity": {
            "type": "number",
            "description": "The quantity of the sales opportunity line item",
            "format": "double",
            "example": 1
          },
          "description": {
            "type": "string",
            "description": "Description of the sales opportunity line item",
            "example": "Replacement filter cartridge"
          },
          "taxId": {
            "type": "integer",
            "description": "Tax identifier (must exist and not be deleted for customer). Nullable",
            "format": "int64",
            "nullable": true,
            "example": 1001
          },
          "unitCost": {
            "type": "number",
            "description": "Unit cost (nullable, non-negative)",
            "format": "double",
            "nullable": true,
            "example": 5.5
          },
          "unitSellingPrice": {
            "type": "number",
            "description": "Unit selling price (non-negative)",
            "format": "double",
            "example": 10.99
          },
          "nominalCodeId": {
            "type": "integer",
            "description": "Nominal code identifier (must exist and not be deleted for customer)",
            "format": "int64",
            "nullable": true,
            "example": 50001
          },
          "departmentCodeId": {
            "type": "integer",
            "description": "Department code identifier (must exist and not be deleted for customer)",
            "format": "int64",
            "nullable": true,
            "example": 20002
          }
        },
        "additionalProperties": false,
        "description": "Represents a model that holds information about creating a sales opportunity line item"
      },
      "CreateSalesOpportunityModel": {
        "type": "object",
        "properties": {
          "contactId": {
            "type": "integer",
            "description": "The unique identifier of the contact associated with this sales opportunity",
            "format": "int64",
            "example": 67890
          },
          "subject": {
            "type": "string",
            "description": "The subject of the sales opportunity",
            "example": "New office equipment deal"
          },
          "status": {
            "$ref": "#/components/schemas/SalesOpportunityStatus"
          },
          "dueAt": {
            "type": "string",
            "description": "The due date of the sales opportunity",
            "format": "date-time",
            "example": "2025-06-30T00:00:00.0000000+00:00"
          },
          "stageId": {
            "type": "integer",
            "description": "The unique identifier of the stage associated with the sales opportunity",
            "format": "int64",
            "example": 3
          },
          "probabilityId": {
            "type": "integer",
            "description": "The unique identifier of the probability associated with the sales opportunity",
            "format": "int64",
            "example": 2
          },
          "notes": {
            "type": "string",
            "description": "Notes associated with the sales opportunity",
            "nullable": true,
            "example": "Customer is interested in bulk pricing"
          },
          "reference": {
            "type": "string",
            "description": "The reference for the sales opportunity",
            "nullable": true,
            "example": "SO-2025-001"
          }
        },
        "additionalProperties": false,
        "description": "Represents a model that holds information about creating a sales opportunity"
      },
      "CreateStockDetailsModel": {
        "required": [
          "model",
          "productCategoryId"
        ],
        "type": "object",
        "properties": {
          "model": {
            "minLength": 1,
            "type": "string",
            "description": "The model name of the stock details",
            "example": "F1 Cleaner"
          },
          "productCategoryId": {
            "type": "integer",
            "description": "The unique identifier of the product category related to this stock details",
            "format": "int64",
            "example": 5514123
          },
          "make": {
            "type": "string",
            "description": "The manufacturer or brand of the stock",
            "nullable": true,
            "example": "DustGone Solutions"
          },
          "sellingPrice": {
            "type": "number",
            "description": "The selling price of the stock",
            "format": "double",
            "nullable": true,
            "example": 19.99
          },
          "currencyCode": {
            "$ref": "#/components/schemas/CurrencyWrite"
          },
          "departmentCodeId": {
            "type": "integer",
            "description": "The department code of the stock",
            "format": "int64",
            "nullable": true,
            "example": 123
          },
          "nominalCodeId": {
            "type": "integer",
            "description": "The nominal code associated with the stock for accounting purposes",
            "format": "int64",
            "nullable": true,
            "example": 1234
          },
          "notes": {
            "type": "string",
            "description": "Notes associated with the stock",
            "nullable": true,
            "example": "Great for cleaning windows"
          },
          "isConsumable": {
            "type": "boolean",
            "description": "Indicates whether the stock is a consumable item or not. Default is false",
            "example": true
          },
          "modelNumber": {
            "type": "string",
            "description": "The unique number assigned by the manufacturer to identify the model of the stock",
            "nullable": true,
            "example": "F1-00010"
          },
          "stockCode": {
            "type": "string",
            "description": "The unique number or barcode assigned to each individual stock for identification and tracking",
            "nullable": true,
            "example": "B10"
          },
          "batchNumber": {
            "type": "string",
            "description": "The batch number of the stock",
            "nullable": true,
            "example": "S8"
          },
          "size": {
            "type": "number",
            "description": "The dimensions or volume of the stock (m3)",
            "format": "double",
            "nullable": true,
            "example": 199
          },
          "weight": {
            "type": "number",
            "description": "The weight of the stock (kg)",
            "format": "double",
            "nullable": true,
            "example": 6.3
          },
          "taxId": {
            "type": "integer",
            "description": "The identifier of the tax (vat) associated with the stock.  If null or omitted, the user's default tax rate will be applied",
            "format": "int64",
            "nullable": true,
            "example": 1234
          }
        },
        "additionalProperties": false,
        "description": "Create stock details model"
      },
      "CreateStockItemsModel": {
        "required": [
          "stockDetailsId"
        ],
        "type": "object",
        "properties": {
          "stockDetailsId": {
            "type": "integer",
            "description": "The unique identifier of the stock details related to this stock item",
            "format": "int64",
            "example": 5514123
          },
          "quantity": {
            "type": "number",
            "description": "The quantity of the stock items. Must be omitted or null if the stock item is not consumable",
            "format": "double",
            "nullable": true,
            "example": 5.3
          },
          "locationContactId": {
            "type": "integer",
            "description": "The ID of the contact associated with the stock item, must be omitted or null if the stock item is located at a vehicle or another stock item",
            "format": "int64",
            "nullable": true,
            "example": 5514123
          },
          "locationVehicleId": {
            "type": "integer",
            "description": "The ID of the vehicle associated with the stock item, must be omitted or null if the stock item is located at a contact or another stock item",
            "format": "int64",
            "nullable": true,
            "example": 5514123
          },
          "locationStockItemId": {
            "type": "integer",
            "description": "The ID of the stock item this stock item is allocated to, must be omitted or null if the stock item is located at a contact or a vehicle",
            "format": "int64",
            "nullable": true,
            "example": 5514123
          },
          "soldAt": {
            "type": "string",
            "description": "The date when the stock item was sold",
            "format": "date-time",
            "nullable": true,
            "example": "2024-08-29T12:30:45.0000000+00:00"
          },
          "notes": {
            "type": "string",
            "description": "Notes on the stock item, must be null or omitted if the stock item is not consumable",
            "nullable": true,
            "example": "Should be kept in warehouse"
          },
          "serialNumber": {
            "type": "string",
            "description": "The unique number or barcode assigned to each individual stock item for identification and tracking. Required if the stock item is non consumable, otherwise must be null or omitted. Cannot contain preceding or trailing whitespace",
            "nullable": true,
            "example": "AT-25805"
          },
          "altSerialNumber": {
            "type": "string",
            "description": "The alternative serial number of the stock item. Must be omitted or null if the stock item is consumable",
            "nullable": true,
            "example": "PA-09842"
          },
          "supplierSerialNumber": {
            "type": "string",
            "description": "The unique number used by the supplier for the stock item, must be null or omitted if the stock item is not consumable",
            "nullable": true,
            "example": "TW-015"
          },
          "customerSerialNumber": {
            "type": "string",
            "description": "The number assigned by the customer for the stock item",
            "nullable": true,
            "example": "LM-214750"
          },
          "isEquipment": {
            "type": "boolean",
            "description": "Indicates whether the stock item is equipment or not, defaults to false",
            "example": true
          },
          "condition": {
            "$ref": "#/components/schemas/StockItemCondition"
          },
          "usage": {
            "type": "number",
            "description": "The usage of the stock item, must be null or omitted when stock item is consumable",
            "format": "double",
            "nullable": true,
            "example": 0.7
          },
          "customFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomFieldWriteModel"
            },
            "description": "The custom fields associated with the stock item",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents a model for creating stock items"
      },
      "CreateStockSupplierModel": {
        "required": [
          "contactId"
        ],
        "type": "object",
        "properties": {
          "contactId": {
            "type": "integer",
            "description": "The unique identifier of the contact that supplies the stock",
            "format": "int64",
            "example": 5514123
          },
          "warrantyPeriod": {
            "type": "integer",
            "description": "The warranty period refers to the duration (in months) for which the stock supplier guarantees the inventory's quality and performance",
            "format": "int32",
            "nullable": true,
            "example": 12
          },
          "cost": {
            "type": "number",
            "description": "The cost refers to the amount charged by the stock supplier for each unit of inventory. If CurrencyCode is not null, this field is required",
            "format": "double",
            "nullable": true,
            "example": 12.99
          },
          "currencyCode": {
            "$ref": "#/components/schemas/CurrencyWrite"
          }
        },
        "additionalProperties": false,
        "description": "Represents a model that holds information about creating a stock supplier"
      },
      "CreateUserModel": {
        "required": [
          "email",
          "name",
          "roleId"
        ],
        "type": "object",
        "properties": {
          "name": {
            "minLength": 1,
            "type": "string",
            "description": "The name associated with the user",
            "example": "John Doe"
          },
          "email": {
            "minLength": 1,
            "type": "string",
            "description": "The email associated with the user",
            "example": "email@example.com"
          },
          "roleId": {
            "type": "integer",
            "description": "The role ID associated with the user",
            "format": "int64",
            "example": 12345
          },
          "defaultJobCategoryId": {
            "type": "integer",
            "description": "The default job category ID associated with the user",
            "format": "int64",
            "nullable": true
          },
          "position": {
            "type": "string",
            "description": "The job position or title associated with the user",
            "nullable": true,
            "example": "Engineer"
          },
          "type": {
            "$ref": "#/components/schemas/LicenceTypeWrite"
          },
          "groupId": {
            "type": "integer",
            "description": "The group identifier associated with the user",
            "format": "int64",
            "nullable": true,
            "example": 67890
          },
          "mobile": {
            "type": "string",
            "description": "The mobile phone number associated with the user. The phone number has to start with a + sign followed by the country code, followed by the number without the first zero",
            "nullable": true,
            "example": "+447700900123"
          },
          "customFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomFieldWriteModel"
            },
            "description": "Custom fields associated with the user",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents a model for creating a user"
      },
      "CreateVehicleModel": {
        "required": [
          "groupId",
          "registration",
          "vehicleType"
        ],
        "type": "object",
        "properties": {
          "groupId": {
            "type": "integer",
            "description": "The unique identifier of the group that the vehicle belongs to",
            "format": "int64",
            "example": 7927
          },
          "vehicleType": {
            "$ref": "#/components/schemas/VehicleType"
          },
          "fixedResourceId": {
            "type": "integer",
            "description": "The unique identifier of the resource who this vehicle is assigned to",
            "format": "int64",
            "nullable": true,
            "example": 110841
          },
          "reference": {
            "type": "string",
            "description": "The internal reference of the vehicle - should usually be unique",
            "nullable": true,
            "example": "ABC5514123"
          },
          "registration": {
            "minLength": 1,
            "type": "string",
            "description": "The registration number of the vehicle",
            "example": "BC24 BIG"
          },
          "make": {
            "type": "string",
            "description": "The manufacturer of the vehicle",
            "nullable": true,
            "example": "Ford"
          },
          "model": {
            "type": "string",
            "description": "The model of the vehicle",
            "nullable": true,
            "example": "Transit"
          },
          "registrationYear": {
            "type": "integer",
            "description": "The year that the vehicle was first registered as new",
            "format": "int32",
            "nullable": true,
            "example": 2012
          },
          "isSchedulable": {
            "type": "boolean",
            "description": "Indicates whether this vehicle can be scheduled jobs",
            "example": true
          },
          "idlingFuelConsumptionRate": {
            "type": "number",
            "description": "The litre fuel consumption of the vehicle used when idling per minute",
            "format": "double",
            "nullable": true,
            "example": 0.1
          },
          "costPerKm": {
            "type": "number",
            "description": "The running cost of the vehicle per kilometre, expressed in `costPerKmCurrencyCode`",
            "format": "double",
            "nullable": true,
            "example": 0.25
          },
          "costPerDay": {
            "type": "number",
            "description": "The running cost of the vehicle per day, expressed in `costPerDayCurrencyCode`",
            "format": "double",
            "nullable": true,
            "example": 0.25
          },
          "costPerKmCurrencyCode": {
            "$ref": "#/components/schemas/CurrencyWrite"
          },
          "costPerDayCurrencyCode": {
            "$ref": "#/components/schemas/CurrencyWrite"
          },
          "odometerUnit": {
            "$ref": "#/components/schemas/OdometerUnit"
          },
          "odometer": {
            "type": "integer",
            "description": "The latest reading from the vehicles odometer",
            "format": "int32",
            "nullable": true,
            "example": 51023
          },
          "roadSafetyExpiresAt": {
            "type": "string",
            "description": "The date of when the vehicles road safety test expires (eg. UK MOT test)",
            "format": "date",
            "nullable": true,
            "example": "2022-11-29"
          },
          "roadTaxExpiresAt": {
            "type": "string",
            "description": "The date of when the vehicles road tax expires",
            "format": "date",
            "nullable": true,
            "example": "2022-11-29"
          },
          "serviceDueAt": {
            "type": "string",
            "description": "The date of when the vehicles next service is due",
            "format": "date",
            "nullable": true,
            "example": "2022-11-29"
          },
          "insuranceDueAt": {
            "type": "string",
            "description": "The date of when the vehicles insurance is due for renewal",
            "format": "date",
            "nullable": true,
            "example": "2022-11-29"
          },
          "co2EmissionsGramsPerKm": {
            "type": "integer",
            "description": "The vehicle co2 emission rate as (grams per km). Mutually exclusive with Co2EmissionsKilogramsPerLitre",
            "format": "int32",
            "nullable": true,
            "example": 5
          },
          "co2EmissionsKilogramsPerLitre": {
            "type": "number",
            "description": "The vehicle co2 emission rate as (kilograms per litre). Mutually exclusive with Co2EmissionsGramsPerKm",
            "format": "double",
            "nullable": true,
            "example": 5.5
          },
          "customFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomFieldWriteModel"
            },
            "description": "Custom fields associated with the vehicle",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Model representing the data needed to create a vehicle"
      },
      "CurrencyRead": {
        "enum": [
          "EUR",
          "AUD",
          "GBP",
          "BGN",
          "CAD",
          "CZK",
          "DKK",
          "HUF",
          "ILS",
          "LVL",
          "LTL",
          "MXN",
          "NZD",
          "NOK",
          "PLN",
          "RON",
          "RUB",
          "ZAR",
          "SEK",
          "CHF",
          "AED",
          "USD",
          "UNKNOWN"
        ],
        "type": "string",
        "description": "CurrencyCode definitions enum, matches currencies available in the BigChange Client Site with an unknown value to handle unrecognised currencies returned from the database<p>Possible values:</p><ul><li><b>EUR</b>: Euro</li><li><b>AUD</b>: Australian Dollar</li><li><b>GBP</b>: Pound Sterling</li><li><b>BGN</b>: Bulgarian Lev</li><li><b>CAD</b>: Canadian Dollar</li><li><b>CZK</b>: Czech Koruna</li><li><b>DKK</b>: Danish Krone</li><li><b>HUF</b>: Forint</li><li><b>ILS</b>: New Israeli Sheqel</li><li><b>LVL</b>: Latvian Lats - replaced by Euro</li><li><b>LTL</b>: Lithuanian Litas - replaced by Euro</li><li><b>MXN</b>: Mexican Peso</li><li><b>NZD</b>: New Zealand Dollar</li><li><b>NOK</b>: Norwegian Krone</li><li><b>PLN</b>: Zloty</li><li><b>RON</b>: Romanian Leu</li><li><b>RUB</b>: Russian Ruble</li><li><b>ZAR</b>: Rand</li><li><b>SEK</b>: Swedish Krona</li><li><b>CHF</b>: Swiss Franc</li><li><b>AED</b>: UAE Dirham</li><li><b>USD</b>: US Dollar</li><li><b>UNKNOWN</b>: Unknown currency</li></ul>",
        "example": "EUR"
      },
      "CurrencyWrite": {
        "enum": [
          "EUR",
          "AUD",
          "GBP",
          "BGN",
          "CAD",
          "CZK",
          "DKK",
          "HUF",
          "ILS",
          "LVL",
          "LTL",
          "MXN",
          "NZD",
          "NOK",
          "PLN",
          "RON",
          "RUB",
          "ZAR",
          "SEK",
          "CHF",
          "AED",
          "USD"
        ],
        "type": "string",
        "description": "CurrencyCode definitions enum, matches currencies available in the BigChange Client Site<p>Possible values:</p><ul><li><b>EUR</b>: Euro</li><li><b>AUD</b>: Australian Dollar</li><li><b>GBP</b>: Pound Sterling</li><li><b>BGN</b>: Bulgarian Lev</li><li><b>CAD</b>: Canadian Dollar</li><li><b>CZK</b>: Czech Koruna</li><li><b>DKK</b>: Danish Krone</li><li><b>HUF</b>: Forint</li><li><b>ILS</b>: New Israeli Sheqel</li><li><b>LVL</b>: Latvian Lats - replaced by Euro</li><li><b>LTL</b>: Lithuanian Litas - replaced by Euro</li><li><b>MXN</b>: Mexican Peso</li><li><b>NZD</b>: New Zealand Dollar</li><li><b>NOK</b>: Norwegian Krone</li><li><b>PLN</b>: Zloty</li><li><b>RON</b>: Romanian Leu</li><li><b>RUB</b>: Russian Ruble</li><li><b>ZAR</b>: Rand</li><li><b>SEK</b>: Swedish Krona</li><li><b>CHF</b>: Swiss Franc</li><li><b>AED</b>: UAE Dirham</li><li><b>USD</b>: US Dollar</li></ul>",
        "example": "EUR"
      },
      "CustomFieldDefinitionReadModel": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "The unique identifier of the custom field definition",
            "format": "int64",
            "example": 12345
          },
          "caption": {
            "type": "string",
            "description": "The caption of a custom field",
            "example": "Favourite colour"
          },
          "type": {
            "$ref": "#/components/schemas/CustomFieldType"
          },
          "listOptions": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Shows the possible values for a list type custom field. Value will be null if type is not list",
            "nullable": true,
            "example": [
              "Red",
              "Blue",
              "Green",
              "Purple"
            ]
          },
          "isRequired": {
            "type": "boolean",
            "description": "Indicates if the field is required in the UI. This is NOT enforced in the API",
            "example": true
          },
          "isEditable": {
            "type": "boolean",
            "description": "Indicates if the field is editable",
            "example": true
          },
          "default": {
            "type": "string",
            "description": "The default value of a custom field. Formatted in accordance with the rules of the field type",
            "nullable": true,
            "example": "10"
          }
        },
        "additionalProperties": false,
        "description": "Represents the full definition of a custom field including its unique identifier"
      },
      "CustomFieldEmbeddedDefinitionModel": {
        "type": "object",
        "properties": {
          "caption": {
            "type": "string",
            "description": "The caption of a custom field",
            "example": "Favourite colour"
          },
          "type": {
            "$ref": "#/components/schemas/CustomFieldType"
          },
          "listOptions": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Shows the possible values for a list type custom field. Value will be null if type is not list",
            "nullable": true,
            "example": [
              "Red",
              "Blue",
              "Green",
              "Purple"
            ]
          },
          "isRequired": {
            "type": "boolean",
            "description": "Indicates if the field is required in the UI. This is NOT enforced in the API",
            "example": true
          },
          "isEditable": {
            "type": "boolean",
            "description": "Indicates if the field is editable",
            "example": true
          },
          "default": {
            "type": "string",
            "description": "The default value of a custom field. Formatted in accordance with the rules of the field type",
            "nullable": true,
            "example": "10"
          }
        },
        "additionalProperties": false,
        "description": "Represents the definition of a custom field"
      },
      "CustomFieldReadModel": {
        "type": "object",
        "properties": {
          "definitionId": {
            "type": "integer",
            "description": "The unique identifier of the associated custom field definition",
            "format": "int64",
            "example": 5514123
          },
          "value": {
            "type": "string",
            "description": "The current value set for the custom field",
            "nullable": true,
            "example": "Purple"
          },
          "definition": {
            "$ref": "#/components/schemas/CustomFieldEmbeddedDefinitionModel"
          },
          "systemListValueMetadata": {
            "$ref": "#/components/schemas/SystemListValueMetadataModel"
          }
        },
        "additionalProperties": false,
        "description": "Represents a model for a custom field"
      },
      "CustomFieldSystemListType": {
        "enum": [
          "resource",
          "vehicle",
          "webUser"
        ],
        "type": "string",
        "description": "The type of entity used for custom field value of type system list<p>Possible values:</p><ul><li><b>resource</b></li><li><b>vehicle</b></li><li><b>webUser</b></li></ul>",
        "example": "resource"
      },
      "CustomFieldType": {
        "enum": [
          "boolean",
          "integer",
          "decimal",
          "text",
          "list",
          "statement",
          "date",
          "note",
          "time",
          "systemList"
        ],
        "type": "string",
        "description": "The type of the custom field. New field types may be added in the future, so integrations should be resilient to this<p>Possible values:</p><ul><li><b>boolean</b>: Indicates a boolean field <i>(Example: \"false\")</i></li><li><b>integer</b>: Indicates an integer numeric field <i>(Example: \"1001\")</i></li><li><b>decimal</b>: Indicates a floating point numeric field <i>(Example: \"1.42\")</i></li><li><b>text</b>: Indicates an editable text field <i>(Example: \"Purple\")</i></li><li><b>list</b>: Indicates a field with a single value from a predefined list of options <i>(Example: \"Purple\")</i></li><li><b>statement</b>: Indicates a text field that cannot be edited. The value is always equal to the default value <i>(Example: \"By signing this you agree to the following...\")</i></li><li><b>date</b>: Indicates a date field, which will be represented as an RFC3339 formatted date string. The default value is not supported for this type and will always be null <i>(Example: \"2024-01-31\")</i></li><li><b>note</b>: Indicates a multiline, editable text field. Lines are seperated with a line feed character <i>(Example: \"This is a note.\")</i></li><li><b>time</b>: Indicates a time field, formatted as HH:mm. The default value is not supported for this type and will always be null <i>(Example: \"10:30\")</i></li><li><b>systemList</b>: Indicates the ID of a related resource, vehicle or web user <i>(Example: \"228007\")</i></li></ul>",
        "example": "boolean"
      },
      "CustomFieldWriteModel": {
        "required": [
          "definitionId"
        ],
        "type": "object",
        "properties": {
          "definitionId": {
            "type": "integer",
            "description": "The unique identifier of the associated custom field definition",
            "format": "int64",
            "example": 5514123
          },
          "value": {
            "type": "string",
            "description": "The value of this custom field. If set to null, any existing value will be unset",
            "nullable": true,
            "example": "High net worth"
          }
        },
        "additionalProperties": false,
        "description": "Represents a model for writing to a custom field.<br/>If a custom field is omitted from a request its current value will be retained.<br/>The value must be set according to the custom field's type as shown in the examples below:<ul><li><b>boolean</b>: Indicates a boolean field <i>(Example: \"false\")</i></li><li><b>integer</b>: Indicates an integer numeric field <i>(Example: \"1001\")</i></li><li><b>decimal</b>: Indicates a floating point numeric field <i>(Example: \"1.42\")</i></li><li><b>text</b>: Indicates an editable text field <i>(Example: \"Purple\")</i></li><li><b>list</b>: Indicates a field with a single value from a predefined list of options <i>(Example: \"Purple\")</i></li><li><b>statement</b>: Indicates a text field that cannot be edited. The value is always equal to the default value <i>(Example: \"By signing this you agree to the following...\")</i></li><li><b>date</b>: Indicates a date field, which will be represented as an RFC3339 formatted date string. The default value is not supported for this type and will always be null <i>(Example: \"2024-01-31\")</i></li><li><b>note</b>: Indicates a multiline, editable text field. Lines are seperated with a line feed character <i>(Example: \"This is a note.\")</i></li><li><b>time</b>: Indicates a time field, formatted as HH:mm. The default value is not supported for this type and will always be null <i>(Example: \"10:30\")</i></li><li><b>systemList</b>: Indicates the ID of a related resource, vehicle or web user <i>(Example: \"228007\")</i></li></ul>"
      },
      "DayOfWeek": {
        "enum": [
          "sunday",
          "monday",
          "tuesday",
          "wednesday",
          "thursday",
          "friday",
          "saturday"
        ],
        "type": "string",
        "description": "<p>Possible values:</p><ul><li><b>sunday</b></li><li><b>monday</b></li><li><b>tuesday</b></li><li><b>wednesday</b></li><li><b>thursday</b></li><li><b>friday</b></li><li><b>saturday</b></li></ul>",
        "example": "sunday"
      },
      "DepartmentCodeSortOptions": {
        "enum": [
          "code",
          "description"
        ],
        "type": "string",
        "description": "Represents the fields that can be used to sort department codes<p>Possible values:</p><ul><li><b>code</b>: The code</li><li><b>description</b>: The description</li></ul>",
        "example": "code"
      },
      "FlagEntityType": {
        "enum": [
          "contactNote",
          "job",
          "defInvoiceItem",
          "contactUser",
          "salesOpportunity",
          "contactNotePriority",
          "assetDefect",
          "quote",
          "proforma",
          "invoice",
          "purchaseOrder",
          "creditNote",
          "deliveryNote",
          "appPayment",
          "salesOrder",
          "jobGroup"
        ],
        "type": "string",
        "description": "Enumeration representing the types of entities that can have flags<p>Possible values:</p><ul><li><b>contactNote</b>: Flag for contact notes</li><li><b>job</b>: Flag for jobs</li><li><b>defInvoiceItem</b>: Flag for default invoice items</li><li><b>contactUser</b>: Flag for contact users</li><li><b>salesOpportunity</b>: Flag for sales opportunities</li><li><b>contactNotePriority</b>: Flag for contact note priorities</li><li><b>assetDefect</b>: Flag for asset defects</li><li><b>quote</b>: Flag for quotes</li><li><b>proforma</b>: Flag for proformas</li><li><b>invoice</b>: Flag for invoices</li><li><b>purchaseOrder</b>: Flag for purchase orders</li><li><b>creditNote</b>: Flag for credit notes</li><li><b>deliveryNote</b>: Flag for delivery notes</li><li><b>appPayment</b>: Flag for app payments</li><li><b>salesOrder</b>: Flag for sales orders</li><li><b>jobGroup</b>: Flag for job groups</li></ul>",
        "example": "contactNote"
      },
      "FlagSortOptions": {
        "enum": [
          "name",
          "createdAt"
        ],
        "type": "string",
        "description": "Represents the fields that can be used to sort flags<p>Possible values:</p><ul><li><b>name</b>: The name</li><li><b>createdAt</b>: The description</li></ul>",
        "example": "name"
      },
      "HttpValidationProblemDetails": {
        "type": "object",
        "allOf": [
          {
            "$ref": "#/components/schemas/ProblemDetails"
          }
        ],
        "properties": {
          "errors": {
            "type": "object",
            "additionalProperties": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          }
        },
        "additionalProperties": { }
      },
      "InvoiceSortOptions": {
        "enum": [
          "createdAt"
        ],
        "type": "string",
        "description": "Represents the fields that can be used to sort invoices.<p>Possible values:</p><ul><li><b>createdAt</b>: The date and time when the invoice was created</li></ul>",
        "example": "createdAt"
      },
      "JobConstraintSortOptions": {
        "enum": [
          "createdAt"
        ],
        "type": "string",
        "description": "Represents the fields that can be used to sort job constraint<p>Possible values:</p><ul><li><b>createdAt</b>: The date and time when the job constraint was created</li></ul>",
        "example": "createdAt"
      },
      "JobFlagsForJobModel": {
        "type": "object",
        "properties": {
          "jobId": {
            "type": "integer",
            "description": "The unique identifier of the job",
            "format": "int64",
            "example": 654321
          },
          "flags": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReadJobFlagModel"
            },
            "description": "The flags associated with this job"
          }
        },
        "additionalProperties": false,
        "description": "Represents a collection of job flags grouped by job"
      },
      "JobGroupLineItemSortOptions": {
        "enum": [
          "createdAt"
        ],
        "type": "string",
        "description": "JobGroupLineItemSortOptions enum<p>Possible values:</p><ul><li><b>createdAt</b>: JobGroupLineItemSortOptions CreatedAt</li></ul>",
        "example": "createdAt"
      },
      "JobGroupPlannedEndOptions": {
        "enum": [
          "onSetDate",
          "dateOfLastJob"
        ],
        "type": "string",
        "description": "Represents the options for setting the planned end date of a job group<p>Possible values:</p><ul><li><b>onSetDate</b>: On a specific date</li><li><b>dateOfLastJob</b>: The date of the last job in the job group</li></ul>",
        "example": "onSetDate"
      },
      "JobGroupPlannedStartOptions": {
        "enum": [
          "onSetDate",
          "dateOfFirstJob"
        ],
        "type": "string",
        "description": "Represents the options for setting the planned start date of a job group<p>Possible values:</p><ul><li><b>onSetDate</b>: On a specific date</li><li><b>dateOfFirstJob</b>: The date of the first job in the job group</li></ul>",
        "example": "onSetDate"
      },
      "JobGroupSortOptions": {
        "enum": [
          "createdAt"
        ],
        "type": "string",
        "description": "Represents the fields that can be used to sort job groups<p>Possible values:</p><ul><li><b>createdAt</b>: Sort by created at date</li></ul>",
        "example": "createdAt"
      },
      "JobGroupStatus": {
        "enum": [
          "unscheduled",
          "partScheduled",
          "scheduled",
          "inProgress",
          "completed",
          "financiallyCompleted"
        ],
        "type": "string",
        "description": "Represents the status of a job group<p>Possible values:</p><ul><li><b>unscheduled</b>: Job group is unscheduled</li><li><b>partScheduled</b>: Part of the job group is scheduled</li><li><b>scheduled</b>: Job group is scheduled</li><li><b>inProgress</b>: Job group is in progress</li><li><b>completed</b>: Job group is completed</li><li><b>financiallyCompleted</b>: Job group is financially completed</li></ul>",
        "example": "unscheduled"
      },
      "JobGroupStatusSortOptions": {
        "enum": [
          "createdAt"
        ],
        "type": "string",
        "description": "Represents the fields that can be used to sort job groups<p>Possible values:</p><ul><li><b>createdAt</b>: Sort by created at date</li></ul>",
        "example": "createdAt"
      },
      "JobLineItemSortOptions": {
        "enum": [
          "createdAt"
        ],
        "type": "string",
        "description": "JobLineItemSortOptions enum<p>Possible values:</p><ul><li><b>createdAt</b>: JobLineItemSortOptions CreatedAt</li></ul>",
        "example": "createdAt"
      },
      "JobResult": {
        "enum": [
          "completedOk",
          "completedWithIssues"
        ],
        "type": "string",
        "description": "Describes the result of a job<p>Possible values:</p><ul><li><b>completedOk</b>: Job completed with a positive result</li><li><b>completedWithIssues</b>: Job completed with a negative result</li></ul>",
        "example": "completedOk"
      },
      "JobSortOptions": {
        "enum": [
          "createdAt",
          "scheduledAt"
        ],
        "type": "string",
        "description": "Represents the fields that can be used to sort jobs<p>Possible values:</p><ul><li><b>createdAt</b>: The date and time when the job was created</li><li><b>scheduledAt</b>: The date and time when the job was scheduled to start</li></ul>",
        "example": "createdAt"
      },
      "JobStatus": {
        "enum": [
          "new",
          "scheduled",
          "unscheduled",
          "sent",
          "read",
          "accepted",
          "refused",
          "onTheWay",
          "started",
          "suspended",
          "completedOk",
          "completedWithIssues",
          "cancelled",
          "lateStart",
          "lateFinish",
          "rescheduled"
        ],
        "type": "string",
        "description": "Describes each possible status of a Job<p>Possible values:</p><ul><li><b>new</b>: A job that is newly created in BigChange All Jobs start with a New status, regardless of schedule detail</li><li><b>scheduled</b>: Job has been scheduled. Scheduled status is when the Vehicle, Driver, and Planned Date Time are all allocated</li><li><b>unscheduled</b>: Job has been unscheduled. Unscheduled status happens when any combination of the Vehicle, Driver, and Planned Date Time are all removed from a Scheduled job</li><li><b>sent</b>: The scheduled job has been delivered to the driver's mobile device (tablet/phone). The driver must be logged into BigChange for jobs to be sent</li><li><b>read</b>: Job Detail has been read by the Driver on their mobile terminal</li><li><b>accepted</b>: Driver accepted the job</li><li><b>refused</b>: Driver refused the job</li><li><b>onTheWay</b>: Driver indicated they are on route to the Job Address</li><li><b>started</b>: Driver has indicated they have started the work detailed in the Job</li><li><b>suspended</b>: Driver paused work – ie taking a break</li><li><b>completedOk</b>: Job Completed with no issues</li><li><b>completedWithIssues</b>: Job Completed with issues</li><li><b>cancelled</b>: Job was Cancelled</li><li><b>lateStart</b>: Internal Status used by BigChange Alert Management - should not be visible from the the API</li><li><b>lateFinish</b>: Internal Status used by BigChange Alert Management - should not be visible from the the API</li><li><b>rescheduled</b>: Internal Status used by BigChange Alert Management - should not be visible from the the API</li></ul>",
        "example": "new"
      },
      "JobStatusSortOptions": {
        "enum": [
          "createdAt"
        ],
        "type": "string",
        "description": "Represents the fields that can be used to sort job status history records<p>Possible values:</p><ul><li><b>createdAt</b>: The date and time when the job status history record was created</li></ul>",
        "example": "createdAt"
      },
      "JobStockActionFilter": {
        "enum": [
          "noMovement",
          "broughtAndLeft",
          "broughtAndTakenBack",
          "broughtToSwap",
          "onSiteAndTakenBack",
          "onSiteAndLeft",
          "usedInStock"
        ],
        "type": "string",
        "description": "Represents the actions that can be performed on a job stock<p>Possible values:</p><ul><li><b>noMovement</b>: No movement</li><li><b>broughtAndLeft</b>: Brought to job and left at location</li><li><b>broughtAndTakenBack</b>: Brought to job and taken back</li><li><b>broughtToSwap</b>: Brought to job to swap with other stock item</li><li><b>onSiteAndTakenBack</b>: Taken from job location</li><li><b>onSiteAndLeft</b>: Already on site and left at location</li><li><b>usedInStock</b>: Used on equipment</li></ul>",
        "example": "noMovement"
      },
      "JobStockActionRead": {
        "enum": [
          "Unknown",
          "noMovement",
          "broughtAndLeft",
          "broughtAndTakenBack",
          "broughtToSwap",
          "onSiteAndTakenBack",
          "onSiteAndLeft",
          "usedInStock"
        ],
        "type": "string",
        "description": "Represents the actions that can be performed on a job stock<p>Possible values:</p><ul><li><b>unknown</b>: Unknown action</li><li><b>noMovement</b>: No movement</li><li><b>broughtAndLeft</b>: Brought to job and left at location</li><li><b>broughtAndTakenBack</b>: Brought to job and taken back</li><li><b>broughtToSwap</b>: Brought to job to swap with other stock item</li><li><b>onSiteAndTakenBack</b>: Taken from job location</li><li><b>onSiteAndLeft</b>: Already on site and left at location</li><li><b>usedInStock</b>: Used on equipment</li></ul>",
        "example": "Unknown"
      },
      "JobStockActionWrite": {
        "enum": [
          "noMovement",
          "broughtAndLeft",
          "broughtAndTakenBack",
          "onSiteAndTakenBack",
          "onSiteAndLeft",
          "usedInStock"
        ],
        "type": "string",
        "description": "Represents the actions that can be performed on a job stock<p>Possible values:</p><ul><li><b>noMovement</b>: No movement. Can not use when job is completed or cancelled</li><li><b>broughtAndLeft</b>: Brought to job and left at location. Can not use when job is completed or cancelled. When this action is selected, the drop off contact id will be set to the job contact id automatically</li><li><b>broughtAndTakenBack</b>: Brought to job and taken back. Can not use when job is completed or cancelled</li><li><b>onSiteAndTakenBack</b>: Taken from job location. Can not use when job is completed or cancelled. When this action is selected, the pickup contact id will be set to the job contact id automatically</li><li><b>onSiteAndLeft</b>: Already on site and left at location. Can not use when job is cancelled</li><li><b>usedInStock</b>: Used on equipment. Can not use when job is completed or cancelled</li></ul>",
        "example": "noMovement"
      },
      "JobTypeSortOptions": {
        "enum": [
          "name"
        ],
        "type": "string",
        "description": "Represents the fields that can be used to sort job types<p>Possible values:</p><ul><li><b>name</b>: The name of the job type</li></ul>",
        "example": "name"
      },
      "LicenceType": {
        "enum": [
          "active",
          "inactive",
          "integration",
          "linkedResource"
        ],
        "type": "string",
        "description": "Represents the type of licence assigned to a user<p>Possible values:</p><ul><li><b>active</b>: Indicates an active licence</li><li><b>inactive</b>: Indicates an inactive licence</li><li><b>integration</b>: Indicates a licence used for system integrations</li><li><b>linkedResource</b>: Indicates a licence associated with a linked resource</li></ul>",
        "example": "active"
      },
      "LicenceTypeWrite": {
        "enum": [
          "active",
          "inactive",
          "linkedResource"
        ],
        "type": "string",
        "description": "Represents the type of licence assigned to a user<p>Possible values:</p><ul><li><b>active</b>: Indicates an active licence</li><li><b>inactive</b>: Indicates an inactive licence</li><li><b>linkedResource</b>: Indicates a licence associated with a linked resource</li></ul>",
        "example": "active"
      },
      "LineItemType": {
        "enum": [
          "freeText",
          "predefined",
          "stockItem",
          "worksheet",
          "drivingPlanned",
          "drivingActual",
          "workPlanned",
          "workActual",
          "expense",
          "invoice",
          "stock",
          "ratingTable"
        ],
        "type": "string",
        "description": "Represents the type of a purchase order line item<p>Possible values:</p><ul><li><b>freeText</b>: A free text line item</li><li><b>predefined</b>: A predefined invoicing item</li><li><b>stockItem</b>: A stock item line item</li><li><b>worksheet</b>: A worksheet line item</li><li><b>drivingPlanned</b>: A driving planned line item</li><li><b>drivingActual</b>: A driving actual line item</li><li><b>workPlanned</b>: A work planned line item</li><li><b>workActual</b>: A work actual line item</li><li><b>expense</b>: An expense line item</li><li><b>invoice</b>: An invoice line item</li><li><b>stock</b>: A stock line item</li><li><b>ratingTable</b>: A rating table line item</li></ul>",
        "example": "freeText"
      },
      "LinkType": {
        "enum": [
          "linkedToJob",
          "branchedFromWorksheetQuestion"
        ],
        "type": "string",
        "description": "The type of link the worksheet has to the job. Worksheet question can have conditional branching which allows different worksheets to be linked based on answers given.<p>Possible values:</p><ul><li><b>linkedToJob</b>: The worksheet is linked directly to the job</li><li><b>branchedFromWorksheetQuestion</b>: The worksheet is branched from a worksheet question</li></ul>",
        "example": "linkedToJob"
      },
      "Location": {
        "required": [
          "latitude",
          "longitude"
        ],
        "type": "object",
        "properties": {
          "latitude": {
            "type": "number",
            "description": "Latitude of the center of the location",
            "format": "double",
            "example": 51.31349
          },
          "longitude": {
            "type": "number",
            "description": "Longitude of the center of the location",
            "format": "double",
            "example": -0.7464233
          }
        },
        "additionalProperties": false,
        "description": "Represents a geographical location"
      },
      "NominalCodeSortOptions": {
        "enum": [
          "code",
          "description"
        ],
        "type": "string",
        "description": "Represents the fields that can be used to sort nominal codes<p>Possible values:</p><ul><li><b>code</b>: The code</li><li><b>description</b>: The description</li></ul>",
        "example": "code"
      },
      "NoteEntityType": {
        "enum": [
          "contact",
          "job",
          "stockItem",
          "resource",
          "vehicle",
          "salesOpportunity",
          "contract"
        ],
        "type": "string",
        "description": "The type of entity that the note is associated to<p>Possible values:</p><ul><li><b>contact</b>: Associated with a contact entity</li><li><b>job</b>: Associated with a job entity</li><li><b>stockItem</b>: Associated with a stock item entity</li><li><b>resource</b>: Associated with a resource entity</li><li><b>vehicle</b>: Associated with a vehicle entity</li><li><b>salesOpportunity</b>: Associated with a sales opportunity entity</li><li><b>contract</b>: Associated with a contract entity</li></ul>",
        "example": "contact"
      },
      "NoteProgressSortOptions": {
        "enum": [
          "progressedAt"
        ],
        "type": "string",
        "description": "Represents the fields that can be used to sort note progress entries<p>Possible values:</p><ul><li><b>progressedAt</b>: The progress date</li></ul>",
        "example": "progressedAt"
      },
      "NoteSortOptions": {
        "enum": [
          "createdAt",
          "dueAt",
          "progressedAt",
          "status",
          "progressPercentage"
        ],
        "type": "string",
        "description": "Represents the fields that can be used to sort notes<p>Possible values:</p><ul><li><b>createdAt</b>: The creation date</li><li><b>dueAt</b>: The due date</li><li><b>progressedAt</b>: The last progress date</li><li><b>status</b>: The status</li><li><b>progressPercentage</b>: The progress percentage</li></ul>",
        "example": "createdAt"
      },
      "NoteStatus": {
        "enum": [
          "open",
          "completed",
          "cancelled"
        ],
        "type": "string",
        "description": "The status of the note<p>Possible values:</p><ul><li><b>open</b>: Open</li><li><b>completed</b>: Completed</li><li><b>cancelled</b>: Cancelled</li></ul>",
        "example": "open"
      },
      "NoteTypeSortOptions": {
        "enum": [
          "name"
        ],
        "type": "string",
        "description": "Represents the fields that can be used to sort note types<p>Possible values:</p><ul><li><b>name</b>: The name of the note type</li></ul>",
        "example": "name"
      },
      "OdometerUnit": {
        "enum": [
          "miles",
          "kilometres"
        ],
        "type": "string",
        "description": "The unit of measure for distance presented by the vehicles odometer<p>Possible values:</p><ul><li><b>miles</b></li><li><b>kilometres</b></li></ul>",
        "example": "miles"
      },
      "PagedResponseJobFlagsForJobModel": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/JobFlagsForJobModel"
            },
            "description": "The items returned for the requested page"
          },
          "pageNumber": {
            "type": "integer",
            "description": "The page number of the response where 1 is the first page",
            "format": "int32",
            "example": 2
          },
          "pageSize": {
            "type": "integer",
            "description": "The number of items requested for the current page",
            "format": "int32",
            "example": 100
          },
          "pageItemCount": {
            "type": "integer",
            "description": "The number of items returned in the current page",
            "format": "int32",
            "readOnly": true,
            "example": 55
          }
        },
        "additionalProperties": false,
        "description": "A paged collection of items"
      },
      "PagedResponseReadAccessHourModel": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReadAccessHourModel"
            },
            "description": "The items returned for the requested page"
          },
          "pageNumber": {
            "type": "integer",
            "description": "The page number of the response where 1 is the first page",
            "format": "int32",
            "example": 2
          },
          "pageSize": {
            "type": "integer",
            "description": "The number of items requested for the current page",
            "format": "int32",
            "example": 100
          },
          "pageItemCount": {
            "type": "integer",
            "description": "The number of items returned in the current page",
            "format": "int32",
            "readOnly": true,
            "example": 55
          }
        },
        "additionalProperties": false,
        "description": "A paged collection of items"
      },
      "PagedResponseReadContactGroupModel": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReadContactGroupModel"
            },
            "description": "The items returned for the requested page"
          },
          "pageNumber": {
            "type": "integer",
            "description": "The page number of the response where 1 is the first page",
            "format": "int32",
            "example": 2
          },
          "pageSize": {
            "type": "integer",
            "description": "The number of items requested for the current page",
            "format": "int32",
            "example": 100
          },
          "pageItemCount": {
            "type": "integer",
            "description": "The number of items returned in the current page",
            "format": "int32",
            "readOnly": true,
            "example": 55
          }
        },
        "additionalProperties": false,
        "description": "A paged collection of items"
      },
      "PagedResponseReadContactModel": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReadContactModel"
            },
            "description": "The items returned for the requested page"
          },
          "pageNumber": {
            "type": "integer",
            "description": "The page number of the response where 1 is the first page",
            "format": "int32",
            "example": 2
          },
          "pageSize": {
            "type": "integer",
            "description": "The number of items requested for the current page",
            "format": "int32",
            "example": 100
          },
          "pageItemCount": {
            "type": "integer",
            "description": "The number of items returned in the current page",
            "format": "int32",
            "readOnly": true,
            "example": 55
          }
        },
        "additionalProperties": false,
        "description": "A paged collection of items"
      },
      "PagedResponseReadDepartmentCodeModel": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReadDepartmentCodeModel"
            },
            "description": "The items returned for the requested page"
          },
          "pageNumber": {
            "type": "integer",
            "description": "The page number of the response where 1 is the first page",
            "format": "int32",
            "example": 2
          },
          "pageSize": {
            "type": "integer",
            "description": "The number of items requested for the current page",
            "format": "int32",
            "example": 100
          },
          "pageItemCount": {
            "type": "integer",
            "description": "The number of items returned in the current page",
            "format": "int32",
            "readOnly": true,
            "example": 55
          }
        },
        "additionalProperties": false,
        "description": "A paged collection of items"
      },
      "PagedResponseReadEntityFlagModel": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReadEntityFlagModel"
            },
            "description": "The items returned for the requested page"
          },
          "pageNumber": {
            "type": "integer",
            "description": "The page number of the response where 1 is the first page",
            "format": "int32",
            "example": 2
          },
          "pageSize": {
            "type": "integer",
            "description": "The number of items requested for the current page",
            "format": "int32",
            "example": 100
          },
          "pageItemCount": {
            "type": "integer",
            "description": "The number of items returned in the current page",
            "format": "int32",
            "readOnly": true,
            "example": 55
          }
        },
        "additionalProperties": false,
        "description": "A paged collection of items"
      },
      "PagedResponseReadFlagModel": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReadFlagModel"
            }
          },
          "pageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "format": "int32"
          },
          "totalItemCount": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "PagedResponseReadInvoiceLineItemModel": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReadInvoiceLineItemModel"
            },
            "description": "The items returned for the requested page"
          },
          "pageNumber": {
            "type": "integer",
            "description": "The page number of the response where 1 is the first page",
            "format": "int32",
            "example": 2
          },
          "pageSize": {
            "type": "integer",
            "description": "The number of items requested for the current page",
            "format": "int32",
            "example": 100
          },
          "pageItemCount": {
            "type": "integer",
            "description": "The number of items returned in the current page",
            "format": "int32",
            "readOnly": true,
            "example": 55
          }
        },
        "additionalProperties": false,
        "description": "A paged collection of items"
      },
      "PagedResponseReadInvoiceModel": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReadInvoiceModel"
            },
            "description": "The items returned for the requested page"
          },
          "pageNumber": {
            "type": "integer",
            "description": "The page number of the response where 1 is the first page",
            "format": "int32",
            "example": 2
          },
          "pageSize": {
            "type": "integer",
            "description": "The number of items requested for the current page",
            "format": "int32",
            "example": 100
          },
          "pageItemCount": {
            "type": "integer",
            "description": "The number of items returned in the current page",
            "format": "int32",
            "readOnly": true,
            "example": 55
          }
        },
        "additionalProperties": false,
        "description": "A paged collection of items"
      },
      "PagedResponseReadJobFlagModel": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReadJobFlagModel"
            },
            "description": "The items returned for the requested page"
          },
          "pageNumber": {
            "type": "integer",
            "description": "The page number of the response where 1 is the first page",
            "format": "int32",
            "example": 2
          },
          "pageSize": {
            "type": "integer",
            "description": "The number of items requested for the current page",
            "format": "int32",
            "example": 100
          },
          "pageItemCount": {
            "type": "integer",
            "description": "The number of items returned in the current page",
            "format": "int32",
            "readOnly": true,
            "example": 55
          }
        },
        "additionalProperties": false,
        "description": "A paged collection of items"
      },
      "PagedResponseReadJobGroupLineItemModel": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReadJobGroupLineItemModel"
            },
            "description": "The items returned for the requested page"
          },
          "pageNumber": {
            "type": "integer",
            "description": "The page number of the response where 1 is the first page",
            "format": "int32",
            "example": 2
          },
          "pageSize": {
            "type": "integer",
            "description": "The number of items requested for the current page",
            "format": "int32",
            "example": 100
          },
          "pageItemCount": {
            "type": "integer",
            "description": "The number of items returned in the current page",
            "format": "int32",
            "readOnly": true,
            "example": 55
          }
        },
        "additionalProperties": false,
        "description": "A paged collection of items"
      },
      "PagedResponseReadJobGroupModel": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReadJobGroupModel"
            },
            "description": "The items returned for the requested page"
          },
          "pageNumber": {
            "type": "integer",
            "description": "The page number of the response where 1 is the first page",
            "format": "int32",
            "example": 2
          },
          "pageSize": {
            "type": "integer",
            "description": "The number of items requested for the current page",
            "format": "int32",
            "example": 100
          },
          "pageItemCount": {
            "type": "integer",
            "description": "The number of items returned in the current page",
            "format": "int32",
            "readOnly": true,
            "example": 55
          }
        },
        "additionalProperties": false,
        "description": "A paged collection of items"
      },
      "PagedResponseReadJobLineItemModel": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReadJobLineItemModel"
            },
            "description": "The items returned for the requested page"
          },
          "pageNumber": {
            "type": "integer",
            "description": "The page number of the response where 1 is the first page",
            "format": "int32",
            "example": 2
          },
          "pageSize": {
            "type": "integer",
            "description": "The number of items requested for the current page",
            "format": "int32",
            "example": 100
          },
          "pageItemCount": {
            "type": "integer",
            "description": "The number of items returned in the current page",
            "format": "int32",
            "readOnly": true,
            "example": 55
          }
        },
        "additionalProperties": false,
        "description": "A paged collection of items"
      },
      "PagedResponseReadJobModel": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReadJobModel"
            },
            "description": "The items returned for the requested page"
          },
          "pageNumber": {
            "type": "integer",
            "description": "The page number of the response where 1 is the first page",
            "format": "int32",
            "example": 2
          },
          "pageSize": {
            "type": "integer",
            "description": "The number of items requested for the current page",
            "format": "int32",
            "example": 100
          },
          "pageItemCount": {
            "type": "integer",
            "description": "The number of items returned in the current page",
            "format": "int32",
            "readOnly": true,
            "example": 55
          }
        },
        "additionalProperties": false,
        "description": "A paged collection of items"
      },
      "PagedResponseReadJobStatusModel": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReadJobStatusModel"
            },
            "description": "The items returned for the requested page"
          },
          "pageNumber": {
            "type": "integer",
            "description": "The page number of the response where 1 is the first page",
            "format": "int32",
            "example": 2
          },
          "pageSize": {
            "type": "integer",
            "description": "The number of items requested for the current page",
            "format": "int32",
            "example": 100
          },
          "pageItemCount": {
            "type": "integer",
            "description": "The number of items returned in the current page",
            "format": "int32",
            "readOnly": true,
            "example": 55
          }
        },
        "additionalProperties": false,
        "description": "A paged collection of items"
      },
      "PagedResponseReadJobTypeModel": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReadJobTypeModel"
            },
            "description": "The items returned for the requested page"
          },
          "pageNumber": {
            "type": "integer",
            "description": "The page number of the response where 1 is the first page",
            "format": "int32",
            "example": 2
          },
          "pageSize": {
            "type": "integer",
            "description": "The number of items requested for the current page",
            "format": "int32",
            "example": 100
          },
          "pageItemCount": {
            "type": "integer",
            "description": "The number of items returned in the current page",
            "format": "int32",
            "readOnly": true,
            "example": 55
          }
        },
        "additionalProperties": false,
        "description": "A paged collection of items"
      },
      "PagedResponseReadJobWorksheetModel": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReadJobWorksheetModel"
            },
            "description": "The items returned for the requested page"
          },
          "pageNumber": {
            "type": "integer",
            "description": "The page number of the response where 1 is the first page",
            "format": "int32",
            "example": 2
          },
          "pageSize": {
            "type": "integer",
            "description": "The number of items requested for the current page",
            "format": "int32",
            "example": 100
          },
          "pageItemCount": {
            "type": "integer",
            "description": "The number of items returned in the current page",
            "format": "int32",
            "readOnly": true,
            "example": 55
          }
        },
        "additionalProperties": false,
        "description": "A paged collection of items"
      },
      "PagedResponseReadNominalCodeModel": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReadNominalCodeModel"
            },
            "description": "The items returned for the requested page"
          },
          "pageNumber": {
            "type": "integer",
            "description": "The page number of the response where 1 is the first page",
            "format": "int32",
            "example": 2
          },
          "pageSize": {
            "type": "integer",
            "description": "The number of items requested for the current page",
            "format": "int32",
            "example": 100
          },
          "pageItemCount": {
            "type": "integer",
            "description": "The number of items returned in the current page",
            "format": "int32",
            "readOnly": true,
            "example": 55
          }
        },
        "additionalProperties": false,
        "description": "A paged collection of items"
      },
      "PagedResponseReadNoteModel": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReadNoteModel"
            },
            "description": "The items returned for the requested page"
          },
          "pageNumber": {
            "type": "integer",
            "description": "The page number of the response where 1 is the first page",
            "format": "int32",
            "example": 2
          },
          "pageSize": {
            "type": "integer",
            "description": "The number of items requested for the current page",
            "format": "int32",
            "example": 100
          },
          "pageItemCount": {
            "type": "integer",
            "description": "The number of items returned in the current page",
            "format": "int32",
            "readOnly": true,
            "example": 55
          }
        },
        "additionalProperties": false,
        "description": "A paged collection of items"
      },
      "PagedResponseReadNoteProgressModel": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReadNoteProgressModel"
            },
            "description": "The items returned for the requested page"
          },
          "pageNumber": {
            "type": "integer",
            "description": "The page number of the response where 1 is the first page",
            "format": "int32",
            "example": 2
          },
          "pageSize": {
            "type": "integer",
            "description": "The number of items requested for the current page",
            "format": "int32",
            "example": 100
          },
          "pageItemCount": {
            "type": "integer",
            "description": "The number of items returned in the current page",
            "format": "int32",
            "readOnly": true,
            "example": 55
          }
        },
        "additionalProperties": false,
        "description": "A paged collection of items"
      },
      "PagedResponseReadNoteTypeModel": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReadNoteTypeModel"
            },
            "description": "The items returned for the requested page"
          },
          "pageNumber": {
            "type": "integer",
            "description": "The page number of the response where 1 is the first page",
            "format": "int32",
            "example": 2
          },
          "pageSize": {
            "type": "integer",
            "description": "The number of items requested for the current page",
            "format": "int32",
            "example": 100
          },
          "pageItemCount": {
            "type": "integer",
            "description": "The number of items returned in the current page",
            "format": "int32",
            "readOnly": true,
            "example": 55
          }
        },
        "additionalProperties": false,
        "description": "A paged collection of items"
      },
      "PagedResponseReadPersonConsentModel": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReadPersonConsentModel"
            },
            "description": "The items returned for the requested page"
          },
          "pageNumber": {
            "type": "integer",
            "description": "The page number of the response where 1 is the first page",
            "format": "int32",
            "example": 2
          },
          "pageSize": {
            "type": "integer",
            "description": "The number of items requested for the current page",
            "format": "int32",
            "example": 100
          },
          "pageItemCount": {
            "type": "integer",
            "description": "The number of items returned in the current page",
            "format": "int32",
            "readOnly": true,
            "example": 55
          }
        },
        "additionalProperties": false,
        "description": "A paged collection of items"
      },
      "PagedResponseReadPersonModel": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReadPersonModel"
            },
            "description": "The items returned for the requested page"
          },
          "pageNumber": {
            "type": "integer",
            "description": "The page number of the response where 1 is the first page",
            "format": "int32",
            "example": 2
          },
          "pageSize": {
            "type": "integer",
            "description": "The number of items requested for the current page",
            "format": "int32",
            "example": 100
          },
          "pageItemCount": {
            "type": "integer",
            "description": "The number of items returned in the current page",
            "format": "int32",
            "readOnly": true,
            "example": 55
          }
        },
        "additionalProperties": false,
        "description": "A paged collection of items"
      },
      "PagedResponseReadProductCategoryModel": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReadProductCategoryModel"
            },
            "description": "The items returned for the requested page"
          },
          "pageNumber": {
            "type": "integer",
            "description": "The page number of the response where 1 is the first page",
            "format": "int32",
            "example": 2
          },
          "pageSize": {
            "type": "integer",
            "description": "The number of items requested for the current page",
            "format": "int32",
            "example": 100
          },
          "pageItemCount": {
            "type": "integer",
            "description": "The number of items returned in the current page",
            "format": "int32",
            "readOnly": true,
            "example": 55
          }
        },
        "additionalProperties": false,
        "description": "A paged collection of items"
      },
      "PagedResponseReadPurchaseOrderLineItemModel": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReadPurchaseOrderLineItemModel"
            },
            "description": "The items returned for the requested page"
          },
          "pageNumber": {
            "type": "integer",
            "description": "The page number of the response where 1 is the first page",
            "format": "int32",
            "example": 2
          },
          "pageSize": {
            "type": "integer",
            "description": "The number of items requested for the current page",
            "format": "int32",
            "example": 100
          },
          "pageItemCount": {
            "type": "integer",
            "description": "The number of items returned in the current page",
            "format": "int32",
            "readOnly": true,
            "example": 55
          }
        },
        "additionalProperties": false,
        "description": "A paged collection of items"
      },
      "PagedResponseReadPurchaseOrderModel": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReadPurchaseOrderModel"
            },
            "description": "The items returned for the requested page"
          },
          "pageNumber": {
            "type": "integer",
            "description": "The page number of the response where 1 is the first page",
            "format": "int32",
            "example": 2
          },
          "pageSize": {
            "type": "integer",
            "description": "The number of items requested for the current page",
            "format": "int32",
            "example": 100
          },
          "pageItemCount": {
            "type": "integer",
            "description": "The number of items returned in the current page",
            "format": "int32",
            "readOnly": true,
            "example": 55
          }
        },
        "additionalProperties": false,
        "description": "A paged collection of items"
      },
      "PagedResponseReadPurchaseOrderSeriesModel": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReadPurchaseOrderSeriesModel"
            },
            "description": "The items returned for the requested page"
          },
          "pageNumber": {
            "type": "integer",
            "description": "The page number of the response where 1 is the first page",
            "format": "int32",
            "example": 2
          },
          "pageSize": {
            "type": "integer",
            "description": "The number of items requested for the current page",
            "format": "int32",
            "example": 100
          },
          "pageItemCount": {
            "type": "integer",
            "description": "The number of items returned in the current page",
            "format": "int32",
            "readOnly": true,
            "example": 55
          }
        },
        "additionalProperties": false,
        "description": "A paged collection of items"
      },
      "PagedResponseReadQuoteLineItemModel": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReadQuoteLineItemModel"
            },
            "description": "The items returned for the requested page"
          },
          "pageNumber": {
            "type": "integer",
            "description": "The page number of the response where 1 is the first page",
            "format": "int32",
            "example": 2
          },
          "pageSize": {
            "type": "integer",
            "description": "The number of items requested for the current page",
            "format": "int32",
            "example": 100
          },
          "pageItemCount": {
            "type": "integer",
            "description": "The number of items returned in the current page",
            "format": "int32",
            "readOnly": true,
            "example": 55
          }
        },
        "additionalProperties": false,
        "description": "A paged collection of items"
      },
      "PagedResponseReadQuoteModel": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReadQuoteModel"
            },
            "description": "The items returned for the requested page"
          },
          "pageNumber": {
            "type": "integer",
            "description": "The page number of the response where 1 is the first page",
            "format": "int32",
            "example": 2
          },
          "pageSize": {
            "type": "integer",
            "description": "The number of items requested for the current page",
            "format": "int32",
            "example": 100
          },
          "pageItemCount": {
            "type": "integer",
            "description": "The number of items returned in the current page",
            "format": "int32",
            "readOnly": true,
            "example": 55
          }
        },
        "additionalProperties": false,
        "description": "A paged collection of items"
      },
      "PagedResponseReadResourceGroupModel": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReadResourceGroupModel"
            },
            "description": "The items returned for the requested page"
          },
          "pageNumber": {
            "type": "integer",
            "description": "The page number of the response where 1 is the first page",
            "format": "int32",
            "example": 2
          },
          "pageSize": {
            "type": "integer",
            "description": "The number of items requested for the current page",
            "format": "int32",
            "example": 100
          },
          "pageItemCount": {
            "type": "integer",
            "description": "The number of items returned in the current page",
            "format": "int32",
            "readOnly": true,
            "example": 55
          }
        },
        "additionalProperties": false,
        "description": "A paged collection of items"
      },
      "PagedResponseReadResourceModel": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReadResourceModel"
            },
            "description": "The items returned for the requested page"
          },
          "pageNumber": {
            "type": "integer",
            "description": "The page number of the response where 1 is the first page",
            "format": "int32",
            "example": 2
          },
          "pageSize": {
            "type": "integer",
            "description": "The number of items requested for the current page",
            "format": "int32",
            "example": 100
          },
          "pageItemCount": {
            "type": "integer",
            "description": "The number of items returned in the current page",
            "format": "int32",
            "readOnly": true,
            "example": 55
          }
        },
        "additionalProperties": false,
        "description": "A paged collection of items"
      },
      "PagedResponseReadSalesOpportunityLineItemModel": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReadSalesOpportunityLineItemModel"
            },
            "description": "The items returned for the requested page"
          },
          "pageNumber": {
            "type": "integer",
            "description": "The page number of the response where 1 is the first page",
            "format": "int32",
            "example": 2
          },
          "pageSize": {
            "type": "integer",
            "description": "The number of items requested for the current page",
            "format": "int32",
            "example": 100
          },
          "pageItemCount": {
            "type": "integer",
            "description": "The number of items returned in the current page",
            "format": "int32",
            "readOnly": true,
            "example": 55
          }
        },
        "additionalProperties": false,
        "description": "A paged collection of items"
      },
      "PagedResponseReadSalesOpportunityModel": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReadSalesOpportunityModel"
            },
            "description": "The items returned for the requested page"
          },
          "pageNumber": {
            "type": "integer",
            "description": "The page number of the response where 1 is the first page",
            "format": "int32",
            "example": 2
          },
          "pageSize": {
            "type": "integer",
            "description": "The number of items requested for the current page",
            "format": "int32",
            "example": 100
          },
          "pageItemCount": {
            "type": "integer",
            "description": "The number of items returned in the current page",
            "format": "int32",
            "readOnly": true,
            "example": 55
          }
        },
        "additionalProperties": false,
        "description": "A paged collection of items"
      },
      "PagedResponseReadSalesOpportunityProbabilityModel": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReadSalesOpportunityProbabilityModel"
            },
            "description": "The items returned for the requested page"
          },
          "pageNumber": {
            "type": "integer",
            "description": "The page number of the response where 1 is the first page",
            "format": "int32",
            "example": 2
          },
          "pageSize": {
            "type": "integer",
            "description": "The number of items requested for the current page",
            "format": "int32",
            "example": 100
          },
          "pageItemCount": {
            "type": "integer",
            "description": "The number of items returned in the current page",
            "format": "int32",
            "readOnly": true,
            "example": 55
          }
        },
        "additionalProperties": false,
        "description": "A paged collection of items"
      },
      "PagedResponseReadStockDetailsModel": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReadStockDetailsModel"
            },
            "description": "The items returned for the requested page"
          },
          "pageNumber": {
            "type": "integer",
            "description": "The page number of the response where 1 is the first page",
            "format": "int32",
            "example": 2
          },
          "pageSize": {
            "type": "integer",
            "description": "The number of items requested for the current page",
            "format": "int32",
            "example": 100
          },
          "pageItemCount": {
            "type": "integer",
            "description": "The number of items returned in the current page",
            "format": "int32",
            "readOnly": true,
            "example": 55
          }
        },
        "additionalProperties": false,
        "description": "A paged collection of items"
      },
      "PagedResponseReadStockItemModel": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReadStockItemModel"
            },
            "description": "The items returned for the requested page"
          },
          "pageNumber": {
            "type": "integer",
            "description": "The page number of the response where 1 is the first page",
            "format": "int32",
            "example": 2
          },
          "pageSize": {
            "type": "integer",
            "description": "The number of items requested for the current page",
            "format": "int32",
            "example": 100
          },
          "pageItemCount": {
            "type": "integer",
            "description": "The number of items returned in the current page",
            "format": "int32",
            "readOnly": true,
            "example": 55
          }
        },
        "additionalProperties": false,
        "description": "A paged collection of items"
      },
      "PagedResponseReadStockMovementModel": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReadStockMovementModel"
            },
            "description": "The items returned for the requested page"
          },
          "pageNumber": {
            "type": "integer",
            "description": "The page number of the response where 1 is the first page",
            "format": "int32",
            "example": 2
          },
          "pageSize": {
            "type": "integer",
            "description": "The number of items requested for the current page",
            "format": "int32",
            "example": 100
          },
          "pageItemCount": {
            "type": "integer",
            "description": "The number of items returned in the current page",
            "format": "int32",
            "readOnly": true,
            "example": 55
          }
        },
        "additionalProperties": false,
        "description": "A paged collection of items"
      },
      "PagedResponseReadStockSupplierModel": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReadStockSupplierModel"
            },
            "description": "The items returned for the requested page"
          },
          "pageNumber": {
            "type": "integer",
            "description": "The page number of the response where 1 is the first page",
            "format": "int32",
            "example": 2
          },
          "pageSize": {
            "type": "integer",
            "description": "The number of items requested for the current page",
            "format": "int32",
            "example": 100
          },
          "pageItemCount": {
            "type": "integer",
            "description": "The number of items returned in the current page",
            "format": "int32",
            "readOnly": true,
            "example": 55
          }
        },
        "additionalProperties": false,
        "description": "A paged collection of items"
      },
      "PagedResponseReadUserModel": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReadUserModel"
            },
            "description": "The items returned for the requested page"
          },
          "pageNumber": {
            "type": "integer",
            "description": "The page number of the response where 1 is the first page",
            "format": "int32",
            "example": 2
          },
          "pageSize": {
            "type": "integer",
            "description": "The number of items requested for the current page",
            "format": "int32",
            "example": 100
          },
          "pageItemCount": {
            "type": "integer",
            "description": "The number of items returned in the current page",
            "format": "int32",
            "readOnly": true,
            "example": 55
          }
        },
        "additionalProperties": false,
        "description": "A paged collection of items"
      },
      "PagedResponseReadVatCodeModel": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReadVatCodeModel"
            },
            "description": "The items returned for the requested page"
          },
          "pageNumber": {
            "type": "integer",
            "description": "The page number of the response where 1 is the first page",
            "format": "int32",
            "example": 2
          },
          "pageSize": {
            "type": "integer",
            "description": "The number of items requested for the current page",
            "format": "int32",
            "example": 100
          },
          "pageItemCount": {
            "type": "integer",
            "description": "The number of items returned in the current page",
            "format": "int32",
            "readOnly": true,
            "example": 55
          }
        },
        "additionalProperties": false,
        "description": "A paged collection of items"
      },
      "PagedResponseReadVehicleModel": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReadVehicleModel"
            },
            "description": "The items returned for the requested page"
          },
          "pageNumber": {
            "type": "integer",
            "description": "The page number of the response where 1 is the first page",
            "format": "int32",
            "example": 2
          },
          "pageSize": {
            "type": "integer",
            "description": "The number of items requested for the current page",
            "format": "int32",
            "example": 100
          },
          "pageItemCount": {
            "type": "integer",
            "description": "The number of items returned in the current page",
            "format": "int32",
            "readOnly": true,
            "example": 55
          }
        },
        "additionalProperties": false,
        "description": "A paged collection of items"
      },
      "PagedResponseReadWorksheetAnswerModel": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReadWorksheetAnswerModel"
            },
            "description": "The items returned for the requested page"
          },
          "pageNumber": {
            "type": "integer",
            "description": "The page number of the response where 1 is the first page",
            "format": "int32",
            "example": 2
          },
          "pageSize": {
            "type": "integer",
            "description": "The number of items requested for the current page",
            "format": "int32",
            "example": 100
          },
          "pageItemCount": {
            "type": "integer",
            "description": "The number of items returned in the current page",
            "format": "int32",
            "readOnly": true,
            "example": 55
          }
        },
        "additionalProperties": false,
        "description": "A paged collection of items"
      },
      "PagedResponseReadWorksheetGroupModel": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReadWorksheetGroupModel"
            },
            "description": "The items returned for the requested page"
          },
          "pageNumber": {
            "type": "integer",
            "description": "The page number of the response where 1 is the first page",
            "format": "int32",
            "example": 2
          },
          "pageSize": {
            "type": "integer",
            "description": "The number of items requested for the current page",
            "format": "int32",
            "example": 100
          },
          "pageItemCount": {
            "type": "integer",
            "description": "The number of items returned in the current page",
            "format": "int32",
            "readOnly": true,
            "example": 55
          }
        },
        "additionalProperties": false,
        "description": "A paged collection of items"
      },
      "PagedResponseReadWorksheetModel": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReadWorksheetModel"
            },
            "description": "The items returned for the requested page"
          },
          "pageNumber": {
            "type": "integer",
            "description": "The page number of the response where 1 is the first page",
            "format": "int32",
            "example": 2
          },
          "pageSize": {
            "type": "integer",
            "description": "The number of items requested for the current page",
            "format": "int32",
            "example": 100
          },
          "pageItemCount": {
            "type": "integer",
            "description": "The number of items returned in the current page",
            "format": "int32",
            "readOnly": true,
            "example": 55
          }
        },
        "additionalProperties": false,
        "description": "A paged collection of items"
      },
      "PersonConsentMedium": {
        "enum": [
          "email",
          "click",
          "telephone"
        ],
        "type": "string",
        "description": "The medium that a person has expressed their consent using<p>Possible values:</p><ul><li><b>email</b>: Email</li><li><b>click</b>: Click</li><li><b>telephone</b>: Telephone</li></ul>",
        "example": "email"
      },
      "PersonConsentSortOption": {
        "enum": [
          "createdAt"
        ],
        "type": "string",
        "description": "Sort options for Person Consent<p>Possible values:</p><ul><li><b>createdAt</b>: Sort by Creation Date</li></ul>",
        "example": "createdAt"
      },
      "PersonConsentType": {
        "enum": [
          "awaiting",
          "refused",
          "granted"
        ],
        "type": "string",
        "description": "The consent preference indicated by the person<p>Possible values:</p><ul><li><b>awaiting</b>: Awaiting</li><li><b>refused</b>: Refused</li><li><b>granted</b>: Granted</li></ul>",
        "example": "awaiting"
      },
      "PersonSortOptions": {
        "enum": [
          "surname",
          "createdAt"
        ],
        "type": "string",
        "description": "Represents the sort options for a persons<p>Possible values:</p><ul><li><b>surname</b>: Sorts the persons by surname</li><li><b>createdAt</b>: Sorts the persons by creation date</li></ul>",
        "example": "surname"
      },
      "PostResponseGuid": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Identifier of the newly created record",
            "format": "uuid"
          }
        },
        "additionalProperties": false,
        "description": "Represents a response for a POST request, containing the ID of the newly created record"
      },
      "PostResponseInt64": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "Identifier of the newly created record",
            "format": "int64"
          }
        },
        "additionalProperties": false,
        "description": "Represents a response for a POST request, containing the ID of the newly created record"
      },
      "ProblemDetails": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "description": "A URI reference [RFC3986] that identifies the problem type",
            "nullable": true,
            "example": "https://example.com/probs/out-of-credit"
          },
          "title": {
            "type": "string",
            "description": "A short, human-readable summary of the problem type",
            "nullable": true,
            "example": "You do not have enough credit"
          },
          "status": {
            "type": "integer",
            "description": "The HTTP status code([RFC7231], Section 6) generated by the origin server for this occurrence of the problem",
            "format": "int32",
            "nullable": true,
            "example": 403
          },
          "detail": {
            "type": "string",
            "description": "A human-readable explanation specific to this occurrence of the problem",
            "nullable": true,
            "example": "Your current balance is 30, but that costs 50"
          },
          "instance": {
            "type": "string",
            "description": "A URI reference that identifies the specific occurrence of the problem",
            "nullable": true,
            "example": "/account/12345/msgs/abc"
          }
        },
        "additionalProperties": { }
      },
      "ProductCategorySortOptions": {
        "enum": [
          "name"
        ],
        "type": "string",
        "description": "Represents the sort options for product categories<p>Possible values:</p><ul><li><b>name</b>: Sort product categories by name</li></ul>",
        "example": "name"
      },
      "PurchaseOrderSeriesSortOptions": {
        "enum": [
          "name"
        ],
        "type": "string",
        "description": "<p>Possible values:</p><ul><li><b>name</b>: The name of the purchase order series</li></ul>",
        "example": "name"
      },
      "PurchaseOrderSortOptions": {
        "enum": [
          "createdAt",
          "reference"
        ],
        "type": "string",
        "description": "Represents the fields that can be used to sort purchase orders.<p>Possible values:</p><ul><li><b>createdAt</b>: The date and time when the purchase order was created.</li><li><b>reference</b>: Represents a reference to an external resource or entity.</li></ul>",
        "example": "createdAt"
      },
      "QuoteSortOptions": {
        "enum": [
          "createdAt"
        ],
        "type": "string",
        "description": "Represents the fields that can be used to sort quotes.<p>Possible values:</p><ul><li><b>createdAt</b>: The date and time when the quote was created</li></ul>",
        "example": "createdAt"
      },
      "ReadAccessHourModel": {
        "type": "object",
        "properties": {
          "dayOfWeek": {
            "$ref": "#/components/schemas/DayOfWeek"
          },
          "start": {
            "type": "string",
            "description": "The 24H format time of day that access to the contact site starts (hh:mm)",
            "example": "09:00"
          },
          "stop": {
            "type": "string",
            "description": "The 24H format time of day that access to the contact site stops (hh:mm)",
            "example": "17:00"
          }
        },
        "additionalProperties": false,
        "description": "Represents a read model for an AccessHour object"
      },
      "ReadContactGroupModel": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "The unique identifier of the contact group",
            "format": "int64",
            "example": 5514123
          },
          "name": {
            "type": "string",
            "description": "The name of the contact group",
            "example": "High value customers"
          }
        },
        "additionalProperties": false,
        "description": "Contact group details response model"
      },
      "ReadContactModel": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "The unique identifier of the contact",
            "format": "int64",
            "example": 5514123
          },
          "createdAt": {
            "type": "string",
            "description": "The UTC timestamp of when this contact was created",
            "format": "date-time",
            "example": "2022-11-29T16:50:16.0000000+00:00"
          },
          "modifiedAt": {
            "type": "string",
            "description": "The UTC timestamp of when this contact was modified",
            "format": "date-time",
            "example": "2023-09-12T11:24:23.0000000+00:00"
          },
          "reference": {
            "type": "string",
            "description": "The internal reference of the contact - should usually be unique",
            "example": "5514123"
          },
          "name": {
            "type": "string",
            "description": "The name of the contact",
            "example": "Example Company"
          },
          "groupId": {
            "type": "integer",
            "description": "The unique identifier of the group this contact belongs to",
            "format": "int64",
            "example": 5514123
          },
          "parentId": {
            "type": "integer",
            "description": "The unique identifier of the parent contact of this contact",
            "format": "int64",
            "nullable": true,
            "example": 5514123
          },
          "extraInformation": {
            "type": "string",
            "description": "A free text description about the contact",
            "example": "Loyal customer for many years"
          },
          "street": {
            "type": "string",
            "description": "The contact street address",
            "example": "3150 Century Way"
          },
          "town": {
            "type": "string",
            "description": "The contact address town / city / village / locality",
            "example": "Leeds"
          },
          "postalCode": {
            "type": "string",
            "description": "The contact address postcode or zipcode",
            "example": "LS15 6HU"
          },
          "country": {
            "type": "string",
            "description": "The textual name of the contact address country",
            "example": "England"
          },
          "location": {
            "$ref": "#/components/schemas/Location"
          },
          "accountStatus": {
            "$ref": "#/components/schemas/AccountStatus"
          },
          "stopReason": {
            "type": "string",
            "description": "If the contact status has been set to on stop, a textual description explaining why",
            "example": "This customer has not paid for our services and won't return calls"
          },
          "stoppedAt": {
            "type": "string",
            "description": "The date that this contact was placed on stop",
            "format": "date",
            "nullable": true,
            "example": "2023-09-12"
          },
          "customFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomFieldReadModel"
            },
            "description": "Custom fields associated with the contact"
          }
        },
        "additionalProperties": false,
        "description": "Represents a model for reading contact"
      },
      "ReadDepartmentCodeModel": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "The unique identifier of the department code",
            "format": "int64",
            "example": 123456
          },
          "code": {
            "type": "string",
            "description": "The department code the identifies departments within the organisation",
            "example": "C1234"
          },
          "description": {
            "type": "string",
            "description": "Description of the department code",
            "example": "Finance"
          },
          "createdAt": {
            "type": "string",
            "description": "The date and time when the record was created",
            "format": "date-time",
            "example": "2021-07-01T00:00:00.0000000+00:00"
          }
        },
        "additionalProperties": false,
        "description": "Represents a model for reading department code information"
      },
      "ReadEntityFlagModel": {
        "type": "object",
        "properties": {
          "historyId": {
            "type": "integer",
            "description": "The unique identifier of the flag history entry",
            "format": "int64",
            "example": 123456
          },
          "flagId": {
            "type": "integer",
            "description": "The unique identifier of the flag",
            "format": "int64",
            "example": 789
          },
          "flagName": {
            "type": "string",
            "description": "The name of the flag",
            "example": "High Priority"
          },
          "appliedAt": {
            "type": "string",
            "description": "The UTC timestamp of when this flag was applied",
            "format": "date-time",
            "example": "2024-01-15T10:30:00.0000000+00:00"
          },
          "ownerName": {
            "type": "string",
            "description": "The owner who applied the flag (user email or ID)",
            "example": "john.doe@example.com"
          },
          "comments": {
            "type": "string",
            "description": "Additional context for the flag",
            "nullable": true,
            "example": "Requires special attention"
          }
        },
        "additionalProperties": { },
        "description": "Represents a flag applied to an entity. Used as the response model for all entity flag endpoints.<br/>The entity identifier is serialised under its entity-specific key (e.g. `jobId`,<br/>`jobGroupId`) taken from BigChange.BO.RestApi.Application.EntityFlags.Services.EntityFlagConfig.PrimaryKeyColumn"
      },
      "ReadFlagModel": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "The unique identifier of the flag",
            "format": "int64",
            "example": 12345
          },
          "name": {
            "type": "string",
            "description": "The name of the flag",
            "example": "Urgent"
          },
          "description": {
            "type": "string",
            "description": "The description of the flag",
            "example": "This flag indicates urgent items"
          },
          "color": {
            "type": "string",
            "description": "The color associated with the flag",
            "example": "#FF0000"
          },
          "createdAt": {
            "type": "string",
            "description": "The UTC timestamp of when this flag was created",
            "format": "date-time",
            "example": "2022-11-29T16:50:16.0000000+00:00"
          }
        },
        "additionalProperties": false,
        "description": "Read flag model"
      },
      "ReadInvoiceLineItemModel": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "The unique identifier associated with the invoice line item",
            "format": "int64",
            "example": 12345
          },
          "invoiceId": {
            "type": "integer",
            "description": "The unique identifier of the invoice associated with the invoice line item",
            "format": "int64",
            "nullable": true,
            "example": 54321
          },
          "contactId": {
            "type": "integer",
            "description": "The unique identifier of the contact associated with the invoice line item",
            "format": "int64",
            "nullable": true
          },
          "createdAt": {
            "type": "string",
            "description": "The date and time when the invoice line item was created",
            "format": "date-time"
          },
          "quantity": {
            "type": "number",
            "description": "The quantity of the line item",
            "format": "double",
            "example": 5
          },
          "description": {
            "type": "string",
            "description": "Description of the invoice line item",
            "example": "Replacement filter cartridge"
          },
          "taxId": {
            "type": "integer",
            "description": "VAT / Tax identifier associated with the line item",
            "format": "int64",
            "nullable": true,
            "example": 1001
          },
          "taxPercentage": {
            "type": "number",
            "description": "Tax percentage applied to the line item (GET only, never null). Defaults to 0 when no tax is applied",
            "format": "double",
            "example": 20
          },
          "unitCost": {
            "type": "number",
            "description": "Unit cost of the item (cannot be negative)",
            "format": "double",
            "nullable": true,
            "example": 5.5
          },
          "unitSellingPrice": {
            "type": "number",
            "description": "Unit selling price of the item (cannot be negative)",
            "format": "double",
            "example": 10.99
          },
          "taxAmount": {
            "type": "number",
            "description": "Tax amount for the line item (GET only)",
            "format": "double",
            "nullable": true,
            "example": 2.2
          },
          "grossAmount": {
            "type": "number",
            "description": "Gross amount (formerly NetPrice internal) of the line item (GET only)",
            "format": "double",
            "nullable": true,
            "example": 13.19
          },
          "nominalCodeId": {
            "type": "integer",
            "description": "Nominal code identifier",
            "format": "int64",
            "nullable": true,
            "example": 50001
          },
          "departmentCodeId": {
            "type": "integer",
            "description": "Department code identifier",
            "format": "int64",
            "nullable": true,
            "example": 20002
          }
        },
        "additionalProperties": false,
        "description": "Model for reading an invoice line item"
      },
      "ReadInvoiceModel": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "The unique identifier of the invoice",
            "format": "int64",
            "example": 12345
          },
          "jobId": {
            "type": "integer",
            "description": "The unique identifier of the job associated with this invoice, if applicable",
            "format": "int64",
            "nullable": true,
            "example": 54321
          },
          "jobGroupId": {
            "type": "integer",
            "description": "The unique identifier of the job group associated with this invoice, if applicable",
            "format": "int64",
            "nullable": true,
            "example": 67890
          },
          "contactId": {
            "type": "integer",
            "description": "The unique identifier of the contact associated with this invoice",
            "format": "int64"
          },
          "contractId": {
            "type": "integer",
            "description": "The unique identifier of the contract associated with this invoice, if applicable.<br/>Shown even if the contract has been soft deleted",
            "format": "int64",
            "nullable": true,
            "example": 101112
          },
          "createdAt": {
            "type": "string",
            "description": "The dateTime the invoice was created",
            "format": "date-time",
            "example": "2022-11-29T16:50:16.0000000+00:00"
          },
          "reference": {
            "type": "string",
            "description": "The reference of the invoice",
            "example": "InvoiceNote101"
          },
          "currencyCode": {
            "$ref": "#/components/schemas/CurrencyRead"
          },
          "deliverySiteContactId": {
            "type": "integer",
            "description": "The unique identifier of the delivery site contact associated with this invoice, if applicable",
            "format": "int64",
            "nullable": true,
            "example": 56789
          },
          "nominalCodeId": {
            "type": "integer",
            "description": "The unique identifier of the nominal code associated with this invoice, if applicable",
            "format": "int64",
            "nullable": true,
            "example": 45678
          },
          "bankAccountId": {
            "type": "integer",
            "description": "The unique identifier of the bank account associated with this invoice, if applicable",
            "format": "int64",
            "nullable": true,
            "example": 34567
          },
          "departmentCodeId": {
            "type": "integer",
            "description": "The unique identifier of the department associated with this invoice, if applicable",
            "format": "int64",
            "nullable": true,
            "example": 23456
          },
          "clientNotes": {
            "type": "string",
            "description": "Notes on the invoice",
            "example": "Please pay within 30 days"
          },
          "internalNotes": {
            "type": "string",
            "description": "Internal notes not visible to the client",
            "example": "Follow up in two weeks"
          },
          "sentAt": {
            "type": "string",
            "description": "The date and time when the invoice was sent, if applicable",
            "format": "date-time",
            "nullable": true,
            "example": "2024-01-15T10:30:00.0000000+00:00"
          },
          "cancelledAt": {
            "type": "string",
            "description": "The date and time when the invoice was cancelled, if applicable",
            "format": "date-time",
            "nullable": true,
            "example": "2024-02-20T14:45:00.0000000+00:00"
          },
          "paidAt": {
            "type": "string",
            "description": "The date and time when the invoice was paid, if applicable",
            "format": "date-time",
            "nullable": true,
            "example": "2024-01-30T09:15:00.0000000+00:00"
          },
          "acceptedAt": {
            "type": "string",
            "description": "The date and time when the invoice was accepted, if applicable",
            "format": "date-time",
            "nullable": true,
            "example": "2024-01-20T11:00:00.0000000+00:00"
          },
          "cost": {
            "type": "number",
            "description": "The cost of the invoice",
            "format": "double",
            "nullable": true,
            "example": 850.5
          },
          "totalExclTax": {
            "type": "number",
            "description": "The total amount excluding tax",
            "format": "double",
            "example": 1000
          },
          "totalInclTax": {
            "type": "number",
            "description": "The total amount including tax",
            "format": "double",
            "example": 1200
          },
          "totalPaid": {
            "type": "number",
            "description": "The total amount paid",
            "format": "double",
            "example": 1200
          },
          "customFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomFieldReadModel"
            },
            "description": "Custom fields associated with the invoice"
          }
        },
        "additionalProperties": false,
        "description": "Represents a model that holds information about an invoice"
      },
      "ReadJobFlagModel": {
        "type": "object",
        "properties": {
          "historyId": {
            "type": "integer",
            "description": "The unique identifier of the flag history entry",
            "format": "int64",
            "example": 123456
          },
          "flagId": {
            "type": "integer",
            "description": "The unique identifier of the flag",
            "format": "int64",
            "example": 789
          },
          "flagName": {
            "type": "string",
            "description": "The name of the flag",
            "example": "High Priority"
          },
          "jobId": {
            "type": "integer",
            "description": "The unique identifier of the job",
            "format": "int64",
            "example": 654321
          },
          "appliedAt": {
            "type": "string",
            "description": "The UTC timestamp of when this flag was applied",
            "format": "date-time",
            "example": "2024-01-15T10:30:00.0000000+00:00"
          },
          "ownerName": {
            "type": "string",
            "description": "The name of the owner who applied the flag",
            "example": "John Doe"
          },
          "comments": {
            "type": "string",
            "description": "Additional comments about the flag",
            "example": "Urgent issue requires immediate attention"
          }
        },
        "additionalProperties": false,
        "description": "Represents a model that holds information about a job flag"
      },
      "ReadJobGroupLineItemModel": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "The unique identifier of the line item",
            "format": "int64",
            "example": 52488
          },
          "jobId": {
            "type": "integer",
            "description": "The unique identifier of the job the line item is associated with",
            "format": "int64",
            "nullable": true,
            "example": 52488
          },
          "jobGroupId": {
            "type": "integer",
            "description": "The unique identifier of the job group associated with the job group line item",
            "format": "int64",
            "nullable": true
          },
          "contactId": {
            "type": "integer",
            "description": "Contact id that the costs are charged to",
            "format": "int64",
            "nullable": true,
            "example": 6547
          },
          "createdAt": {
            "type": "string",
            "description": "Creation date of the invoice item that this line belongs to",
            "format": "date-time",
            "example": "2022-11-29T16:50:16.0000000+00:00"
          },
          "lineItemType": {
            "$ref": "#/components/schemas/LineItemType"
          },
          "quantity": {
            "type": "number",
            "description": "Quantity of the line item",
            "format": "double",
            "example": 5
          },
          "description": {
            "type": "string",
            "description": "Description of the line item",
            "example": "Copper pipe - 1m"
          },
          "taxId": {
            "type": "integer",
            "description": "Id of the vat/tax rate applied to this item",
            "format": "int64",
            "nullable": true,
            "example": 55
          },
          "taxPercentage": {
            "type": "number",
            "description": "Percentage of tax applied to this item",
            "format": "double",
            "example": 20
          },
          "unitCost": {
            "type": "number",
            "description": "Cost of the line item",
            "format": "double",
            "nullable": true,
            "example": 2.5
          },
          "unitSellingPrice": {
            "type": "number",
            "description": "Price of each individual unit associated to the line item",
            "format": "double",
            "example": 5.99
          },
          "taxAmount": {
            "type": "number",
            "description": "Tax amount associated to the line item (GET only)",
            "format": "double",
            "nullable": true,
            "example": 5
          },
          "grossAmount": {
            "type": "number",
            "description": "Net price associated to the line item",
            "format": "double",
            "nullable": true,
            "example": 25
          },
          "nominalCodeId": {
            "type": "integer",
            "description": "Id of the associated nominal code",
            "format": "int64",
            "nullable": true,
            "example": 49
          },
          "departmentCodeId": {
            "type": "integer",
            "description": "Id of the associated department code",
            "format": "int64",
            "nullable": true,
            "example": 22
          }
        },
        "additionalProperties": false,
        "description": "Model for reading a job group line item"
      },
      "ReadJobGroupModel": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "The unique identifier of the job group",
            "format": "int64",
            "example": 123456789
          },
          "reference": {
            "type": "string",
            "description": "The internal reference of a job group - should usually be unique",
            "example": "ABC/12345"
          },
          "contactId": {
            "type": "integer",
            "description": "The unique identifier of the contact the job group is for",
            "format": "int64",
            "example": 12345678
          },
          "contactName": {
            "type": "string",
            "description": "The name of the contact the job group is for",
            "nullable": true,
            "example": "John Doe"
          },
          "contactAddress": {
            "type": "string",
            "description": "The postal address of the contact the job group is for",
            "nullable": true,
            "example": "3150 Century Way, Leeds LS15 6HU"
          },
          "contactLocation": {
            "$ref": "#/components/schemas/Location"
          },
          "personId": {
            "type": "string",
            "description": "The unique uuid identifier of the person who will serve as primary point of contact for the job",
            "format": "uuid",
            "nullable": true,
            "example": "123e4567-e89b-12d3-a456-426614174000"
          },
          "personName": {
            "type": "string",
            "description": "The name of the person who will serve as primary point of contact for the job",
            "nullable": true,
            "example": "Peter Brown"
          },
          "title": {
            "type": "string",
            "description": "The title of the job group",
            "example": "My Group Job"
          },
          "isShownOnDevice": {
            "type": "boolean",
            "description": "Indicates whether the job group is shown on the device",
            "example": false
          },
          "areJobsLinked": {
            "type": "boolean",
            "description": "Indicates whether the jobs in the group are linked",
            "example": true
          },
          "createdAt": {
            "type": "string",
            "description": "The UTC timestamp for when the job group was created",
            "format": "date-time",
            "example": "2025-01-24T12:00:00.0000000+00:00"
          },
          "orderNumber": {
            "type": "string",
            "description": "The order number associated with the job group",
            "nullable": true,
            "example": "ORD123456"
          },
          "plannedStartOption": {
            "$ref": "#/components/schemas/JobGroupPlannedStartOptions"
          },
          "plannedStartAt": {
            "type": "string",
            "description": "The UTC Timestamp for when the job group is planned to start. Only set if the BigChange.BO.RestApi.Application.JobGroups.Models.ReadJobGroupModel.PlannedStartOption is BigChange.BO.RestApi.Application.JobGroups.Enumerations.JobGroupPlannedStartOptions.OnSetDate",
            "format": "date-time",
            "nullable": true,
            "example": "2025-01-01T09:00:00.0000000+00:00"
          },
          "plannedEndOption": {
            "$ref": "#/components/schemas/JobGroupPlannedEndOptions"
          },
          "plannedEndAt": {
            "type": "string",
            "description": "The UTC timestamp for when the job group should be ended. Only set if the BigChange.BO.RestApi.Application.JobGroups.Models.ReadJobGroupModel.PlannedEndOption is BigChange.BO.RestApi.Application.JobGroups.Enumerations.JobGroupPlannedEndOptions.OnSetDate",
            "format": "date-time",
            "nullable": true,
            "example": "2025-01-01T09:00:00.0000000+00:00"
          },
          "status": {
            "$ref": "#/components/schemas/JobGroupStatus"
          },
          "categoryId": {
            "type": "integer",
            "description": "The unique identifier of the category that the job group is assigned to",
            "format": "int32",
            "nullable": true,
            "example": 123456
          },
          "categoryName": {
            "type": "string",
            "description": "The name of the category that the job group is assigned to",
            "nullable": true,
            "example": "Global Solutions Ltd"
          },
          "contractId": {
            "type": "integer",
            "description": "The unique identifier of the contract that the job group is associated with",
            "format": "int64",
            "nullable": true,
            "example": 123456
          },
          "linkedJobsResourceName": {
            "type": "string",
            "description": "The name of the resource associated with the job group. Should only be set when BigChange.BO.RestApi.Application.JobGroups.Models.ReadJobGroupModel.AreJobsLinked is `true`",
            "nullable": true,
            "example": "John Doe"
          },
          "linkedJobsResourceId": {
            "type": "integer",
            "description": "The unique identifier of the resource who will be actioning the job group. Should only be set when BigChange.BO.RestApi.Application.JobGroups.Models.ReadJobGroupModel.AreJobsLinked is `true`",
            "format": "int64",
            "nullable": true,
            "example": 1234567
          },
          "linkedJobsVehicleRegistration": {
            "type": "string",
            "description": "The registration number of the vehicle associated with the job group. Should only be set when BigChange.BO.RestApi.Application.JobGroups.Models.ReadJobGroupModel.AreJobsLinked is `true`",
            "nullable": true,
            "example": "AB12 CDE"
          },
          "linkedJobsVehicleId": {
            "type": "integer",
            "description": "The unique identifier of the vehicle associated with the job group. Should only be set when BigChange.BO.RestApi.Application.JobGroups.Models.ReadJobGroupModel.AreJobsLinked is `true`",
            "format": "int64",
            "nullable": true,
            "example": 123456
          },
          "linkedJobsStartAt": {
            "type": "string",
            "description": "The UTC timestamp for when the job group is started. Should only be set when BigChange.BO.RestApi.Application.JobGroups.Models.ReadJobGroupModel.AreJobsLinked is `true`",
            "format": "date-time",
            "nullable": true,
            "example": "2025-01-01T09:00:00.0000000+00:00"
          },
          "ownerId": {
            "type": "integer",
            "description": "The unique identifier of the user who owns the job group",
            "format": "int64",
            "nullable": true,
            "example": 12345
          }
        },
        "additionalProperties": false,
        "description": "Represents a model for reading job groups"
      },
      "ReadJobLineItemModel": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "The unique identifier associated with the job line item",
            "format": "int64",
            "example": 12345
          },
          "jobId": {
            "type": "integer",
            "description": "The unique identifier of the job associated with the job line item",
            "format": "int64",
            "nullable": true,
            "example": 54321
          },
          "jobGroupId": {
            "type": "integer",
            "description": "The unique identifier of the job group associated with the job line item",
            "format": "int64",
            "nullable": true
          },
          "contactId": {
            "type": "integer",
            "description": "The unique identifier of the contact associated with the job line item",
            "format": "int64",
            "nullable": true
          },
          "createdAt": {
            "type": "string",
            "description": "The date and time when the job line item was created",
            "format": "date-time"
          },
          "lineItemType": {
            "$ref": "#/components/schemas/LineItemType"
          },
          "quantity": {
            "type": "number",
            "description": "The quantity of the line item",
            "format": "double",
            "example": 5
          },
          "description": {
            "type": "string",
            "description": "Description of the job line item",
            "example": "Replacement filter cartridge"
          },
          "taxId": {
            "type": "integer",
            "description": "VAT / Tax identifier associated with the line item",
            "format": "int64",
            "nullable": true,
            "example": 1001
          },
          "taxPercentage": {
            "type": "number",
            "description": "Tax percentage applied to the line item (GET only, never null). Defaults to 0 when no tax is applied",
            "format": "double",
            "example": 20
          },
          "unitCost": {
            "type": "number",
            "description": "Unit cost of the item (cannot be negative)",
            "format": "double",
            "nullable": true,
            "example": 5.5
          },
          "unitSellingPrice": {
            "type": "number",
            "description": "Unit selling price of the item (cannot be negative)",
            "format": "double",
            "example": 10.99
          },
          "taxAmount": {
            "type": "number",
            "description": "Tax amount for the line item (GET only)",
            "format": "double",
            "nullable": true,
            "example": 2.2
          },
          "grossAmount": {
            "type": "number",
            "description": "Gross amount (formerly NetPrice internal) of the line item (GET only)",
            "format": "double",
            "nullable": true,
            "example": 13.19
          },
          "nominalCodeId": {
            "type": "integer",
            "description": "Nominal code identifier",
            "format": "int64",
            "nullable": true,
            "example": 50001
          },
          "departmentCodeId": {
            "type": "integer",
            "description": "Department code identifier",
            "format": "int64",
            "nullable": true,
            "example": 20002
          }
        },
        "additionalProperties": false,
        "description": "Model for reading a job line item"
      },
      "ReadJobModel": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "The unique identifier of the job",
            "format": "int64",
            "example": 5514123
          },
          "uid": {
            "type": "string",
            "description": "The unique uid of the job",
            "format": "uuid",
            "nullable": true,
            "example": "3729C414-ED21-4849-816F-25D332265DC8"
          },
          "typeId": {
            "type": "integer",
            "description": "The unique identifier of the type assigned to this job",
            "format": "int64",
            "example": 5514123
          },
          "typeName": {
            "type": "string",
            "description": "The name of the type assigned to this job",
            "example": "Boiler Service"
          },
          "contactId": {
            "type": "integer",
            "description": "The unique identifier of the contact (customer) for whom this job is to be performed",
            "format": "int64",
            "example": 5514123
          },
          "contactName": {
            "type": "string",
            "description": "The name of the customer (business or individual) for whom this job is to be performed",
            "example": "Global Solutions Ltd"
          },
          "contactAddress": {
            "type": "string",
            "description": "The complete address of the contact (customer) for whom this job is to be performed",
            "example": "15 High Street, Lichfield, Staffordshire, WS15 3TT"
          },
          "contactLocation": {
            "$ref": "#/components/schemas/Location"
          },
          "status": {
            "$ref": "#/components/schemas/JobStatus"
          },
          "statusModifiedAt": {
            "type": "string",
            "description": "The UTC timestamp for when the job status was last updated",
            "format": "date-time",
            "nullable": true,
            "example": "2022-11-29T13:39:00.0000000+00:00"
          },
          "plannedDuration": {
            "type": "integer",
            "description": "The planned duration of the job, specified in minutes",
            "format": "int32",
            "example": 90
          },
          "dueAt": {
            "type": "string",
            "description": "The UTC date and time the job is required to be completed by",
            "format": "date-time",
            "nullable": true,
            "example": "2022-11-29T06:00:00.0000000+00:00"
          },
          "reference": {
            "type": "string",
            "description": "The internal reference of the job - should usually be unique",
            "example": "ABC/5514123"
          },
          "description": {
            "type": "string",
            "description": "The textual details about the job",
            "example": "New boiler install - please remove and retain the old boiler"
          },
          "createdAt": {
            "type": "string",
            "description": "The UTC timestamp of when this job was created",
            "format": "date-time",
            "example": "2022-11-29T16:50:16.0000000+00:00"
          },
          "orderNumber": {
            "type": "string",
            "description": "The order number associated to the job",
            "nullable": true,
            "example": "PAO/1312KU"
          },
          "personId": {
            "type": "string",
            "description": "The unique uuid identifier of the person who will serve as primary point of contact for the job",
            "format": "uuid",
            "nullable": true,
            "example": "3729c414-ed21-4849-816f-25d332265dc8"
          },
          "personName": {
            "type": "string",
            "description": "The full name of the person who will serve as primary point of contact for the job",
            "nullable": true,
            "example": "Peter Brown"
          },
          "isConfirmed": {
            "type": "boolean",
            "description": "A flag indicating whether the job has been confirmed by the contact",
            "example": true
          },
          "categoryId": {
            "type": "integer",
            "description": "The unique identifier of the category that the job is assigned to",
            "format": "int32",
            "nullable": true,
            "example": 5514123
          },
          "categoryName": {
            "type": "string",
            "description": "The name of the category that the job is assigned",
            "nullable": true,
            "example": "Global Solutions Ltd"
          },
          "resourceId": {
            "type": "integer",
            "description": "The unique identifier of the resource assigned to this job",
            "format": "int64",
            "nullable": true,
            "example": 243556
          },
          "resourceName": {
            "type": "string",
            "description": "The full name of the resource assigned to this job",
            "nullable": true,
            "example": "John Smith"
          },
          "vehicleId": {
            "type": "integer",
            "description": "The unique identifier of the vehicle assigned to this job",
            "format": "int64",
            "nullable": true,
            "example": 665433
          },
          "vehicleRegistration": {
            "type": "string",
            "description": "The registration number of the vehicle assigned to this job",
            "nullable": true,
            "example": "BC21 BCL"
          },
          "plannedStartAt": {
            "type": "string",
            "description": "The UTC timestamp for when the job is planned to begin",
            "format": "date-time",
            "nullable": true,
            "example": "2022-11-29T12:00:00.0000000+00:00"
          },
          "plannedEndAt": {
            "type": "string",
            "description": "The UTC timestamp for when the job is planned to finish",
            "format": "date-time",
            "nullable": true,
            "example": "2022-11-29T13:30:00.0000000+00:00"
          },
          "actualStartAt": {
            "type": "string",
            "description": "The UTC timestamp for when the job actually started (as indicated by resource's device)",
            "format": "date-time",
            "nullable": true,
            "example": "2022-11-29T12:03:00.0000000+00:00"
          },
          "actualEndAt": {
            "type": "string",
            "description": "The UTC timestamp for when the job actually finished (as indicated by resource's device)",
            "format": "date-time",
            "nullable": true,
            "example": "2022-11-29T13:39:00.0000000+00:00"
          },
          "actualDuration": {
            "type": "integer",
            "description": "The actual duration of the job, specified in seconds (as indicated by resource's device)",
            "format": "int32",
            "nullable": true,
            "example": 6000
          },
          "internalComment": {
            "type": "string",
            "description": "Notes about the job outcome, added by the back office",
            "example": "Old boiler has been moved to storage"
          },
          "resourcesComment": {
            "type": "string",
            "description": "Notes about the job outcome, added by the resource",
            "example": "Boiler removed and stored in van"
          },
          "contactComment": {
            "type": "string",
            "description": "Notes about the job outcome, added by the customer",
            "example": "No issues with new boiler"
          },
          "result": {
            "type": "string",
            "description": "The result of a job that has been completed or completed with issues. This will be null if the job has any other status",
            "nullable": true,
            "example": "Ok"
          },
          "jobGroupId": {
            "type": "integer",
            "description": "The unique identifier of the job group",
            "format": "int64",
            "nullable": true,
            "example": 123456789
          },
          "isFinanciallyComplete": {
            "type": "boolean",
            "description": "A flag indicating whether the job is financially complete",
            "example": false
          },
          "isActioned": {
            "type": "boolean",
            "description": "A flag indicating whether all actions concerned with the job have been completed",
            "example": false
          },
          "officeNotes": {
            "type": "string",
            "description": "Notes for the office team regarding the job",
            "example": "Customer has requested a follow-up call"
          },
          "contractId": {
            "type": "integer",
            "description": "The unique identifier of the contract that the job is associated with",
            "format": "int64",
            "nullable": true,
            "example": 123456
          },
          "recurrenceId": {
            "type": "integer",
            "description": "The unique identifier of the recurrence series this job belongs to, or null if the job is not part of a recurring series",
            "format": "int64",
            "nullable": true,
            "example": 789012
          },
          "customFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomFieldReadModel"
            },
            "description": "Custom fields applied to this job"
          },
          "siteContactIds": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int64"
            },
            "description": "The unique identifiers of the site contacts associated with this job",
            "example": [
              15548440,
              9425766
            ]
          }
        },
        "additionalProperties": false,
        "description": "Represents a model that holds information about a job"
      },
      "ReadJobStatusModel": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "The unique identifier of the job status change",
            "format": "int64",
            "example": 5514123
          },
          "status": {
            "$ref": "#/components/schemas/JobStatus"
          },
          "createdAt": {
            "type": "string",
            "description": "The UTC timestamp of when this job status history entry was created (when the job status changed)",
            "format": "date-time",
            "example": "2022-11-29T16:50:16.0000000+00:00"
          },
          "actionedBy": {
            "type": "string",
            "description": "The name of the user who triggered the change in status",
            "example": "Bob Brown"
          },
          "comment": {
            "type": "string",
            "description": "Textual context about the status change that was made",
            "example": "Appliance successfully tested"
          }
        },
        "additionalProperties": false,
        "description": "Represents a model that holds information about a job status change"
      },
      "ReadJobStockModel": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "The unique identifier for each planned stock usage record",
            "format": "int64",
            "example": 123
          },
          "jobId": {
            "type": "integer",
            "description": "The identifier of the job associated with the planned stock usage",
            "format": "int64",
            "example": 3334
          },
          "stockDetailsId": {
            "type": "integer",
            "description": "The identifier of the type of stock associated with the planned stock usage on the job",
            "format": "int64",
            "example": 7775
          },
          "stockItemId": {
            "type": "integer",
            "description": "The identifier of the specific stock item associated with the planned stock usage on the job",
            "format": "int64",
            "nullable": true,
            "example": 5954
          },
          "action": {
            "$ref": "#/components/schemas/JobStockActionRead"
          },
          "quantityPlanned": {
            "type": "number",
            "description": "The anticipated quantity of stock units that will be used on a job",
            "format": "double",
            "example": 10.5
          },
          "pickupContactId": {
            "type": "integer",
            "description": "The identifier for the contact at the pickup location during the planned stock usage. If set, allowed actions are 'BroughtAndLeft', 'BroughtAndTakenBack' and 'UsedInStock'. Null value indicates that the stock will be on the vehicle relating to the job",
            "format": "int64",
            "nullable": true,
            "example": 1234
          },
          "dropOffContactId": {
            "type": "integer",
            "description": "The identifier for contact at the drop-off location during the planned stock usage. If set, allowed actions are 'BroughtAndTakenBack' and 'OnSiteAndTakenBack'. Null value indicates that the stock will be on the vehicle relating to the job",
            "format": "int64",
            "nullable": true,
            "example": 676
          },
          "isDeliveredToBeSold": {
            "type": "boolean",
            "description": "A flag indicating whether the stock is delivered to be sold",
            "example": true
          },
          "isEquipmentAtDropOff": {
            "type": "boolean",
            "description": "A flag indicating whether the stock equipment is at the drop-off location",
            "example": true
          },
          "quantityActual": {
            "type": "number",
            "description": "The actual quantity of stock units that were used on a job",
            "format": "double",
            "example": 2.5
          },
          "make": {
            "type": "string",
            "description": "Make of a stock item used in a job",
            "nullable": true,
            "example": "Samsung"
          },
          "model": {
            "type": "string",
            "description": "Model of a stock item used in a job. Usually used in conjunction with the Make for generic identification",
            "example": "Smart Fridge V100"
          },
          "serialNumber": {
            "type": "string",
            "description": "Used as a unique reference field for a stock item to track specific unit. Doesn't have to be set when a job is initialised",
            "nullable": true,
            "example": "SN001/200/500"
          },
          "dropOffStockItemId": {
            "type": "integer",
            "description": "The identifier for the specific item of stock that is planned to be dropped at off or delivered to",
            "format": "int64",
            "nullable": true,
            "example": 12345
          },
          "worksheets": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReadJobStockWorksheetModel"
            },
            "description": "The worksheets associated with this stock item on the job. Each entry contains the worksheet identifier<br/>and the entity identifier to use as the `entityId` filter when querying worksheet answers<br/>with an `entityType` of `stockItem`"
          }
        },
        "additionalProperties": false,
        "description": "Represents a model that holds information about planned stock usage for a job"
      },
      "ReadJobStockWorksheetModel": {
        "type": "object",
        "properties": {
          "worksheetId": {
            "type": "integer",
            "description": "The identifier of the worksheet associated with the stock item on this job",
            "format": "int64",
            "example": 1234
          },
          "worksheetAnswersEntityId": {
            "type": "integer",
            "description": "The entity identifier to use as the `entityId` filter when querying worksheet answers<br/>with an `entityType` of `stockItem`",
            "format": "int64",
            "example": 4321
          }
        },
        "additionalProperties": false,
        "description": "Represents the association between a job stock item and a worksheet"
      },
      "ReadJobTypeModel": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "The unique identifier of the job type",
            "format": "int64",
            "example": 5514123
          },
          "name": {
            "type": "string",
            "description": "The name of the job type",
            "example": "Combi boiler installation"
          },
          "description": {
            "type": "string",
            "description": "The default textual description for jobs of this type",
            "example": "New boiler install - please remove and retain the old boiler"
          },
          "plannedDuration": {
            "type": "integer",
            "description": "The default planned duration for jobs of this type, specified in minutes",
            "format": "int32",
            "example": 90
          },
          "categoryId": {
            "type": "integer",
            "description": "The unique identifier of default category for jobs of this type",
            "format": "int32",
            "nullable": true,
            "example": 5514123
          },
          "isArchived": {
            "type": "boolean",
            "description": "A flag determining if a type is archived - new jobs cannot be created against archived job types",
            "example": false
          },
          "isOrderNumberRequired": {
            "type": "boolean",
            "description": "A flag determining if an order number is required for jobs of this type",
            "example": true
          },
          "isTasksEnabled": {
            "type": "boolean",
            "description": "A flag determining if tasks are used for this job type",
            "example": true
          },
          "positiveResults": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "The result options for when a job is completed successfully",
            "nullable": true
          },
          "negativeResults": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "The result options for when a job is completed with issues. If null then jobs of this type will not be allowed to have the status of completedWithIssues",
            "nullable": true
          },
          "customFieldDefinitions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomFieldDefinitionReadModel"
            },
            "description": "The custom field definitions associated with this job type"
          }
        },
        "additionalProperties": false,
        "description": "Represents a model that holds information about a job type"
      },
      "ReadJobWorksheetModel": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "The unique identifier for the worksheet associated with the job",
            "format": "int64",
            "example": 1234
          },
          "name": {
            "type": "string",
            "description": "The name of the worksheet associated with the job",
            "example": "Worksheet Example Name"
          },
          "linkType": {
            "$ref": "#/components/schemas/LinkType"
          }
        },
        "additionalProperties": false,
        "description": "Represents a model that holds information about a job worksheet"
      },
      "ReadNominalCodeModel": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "The unique identifier of the nominal code",
            "format": "int64",
            "example": 5514123
          },
          "code": {
            "type": "string",
            "description": "The nominal code",
            "example": "T01"
          },
          "description": {
            "type": "string",
            "description": "Description of the code",
            "example": "Nominal code for roofing work"
          },
          "createdAt": {
            "type": "string",
            "description": "The UTC timestamp of when this nominal code was created",
            "format": "date-time",
            "example": "2022-11-29T16:50:16.0000000+00:00"
          }
        },
        "additionalProperties": false,
        "description": "Read nominal code model"
      },
      "ReadNoteModel": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "The unique identifier of the note",
            "format": "int64",
            "example": 5514123
          },
          "entityType": {
            "$ref": "#/components/schemas/NoteEntityType"
          },
          "entityId": {
            "type": "integer",
            "description": "The unique identifier of the associated entity that owns the note, relative to the `entityType`",
            "format": "int64",
            "example": 5514123
          },
          "contactId": {
            "type": "integer",
            "description": "The unique identifier of the contact associated to this note",
            "format": "int64",
            "nullable": true,
            "example": 47644689
          },
          "typeId": {
            "type": "integer",
            "description": "The unique identifier of the note type definition associated to this note",
            "format": "int64",
            "example": 5514123
          },
          "createdAt": {
            "type": "string",
            "description": "The UTC timestamp of when this note was created",
            "format": "date-time",
            "example": "2022-11-29T16:50:16.0000000+00:00"
          },
          "subject": {
            "type": "string",
            "description": "The subject of the note",
            "example": "Call Mr Brown"
          },
          "parentId": {
            "type": "integer",
            "description": "The unique identifier of the parent note of this note",
            "format": "int64",
            "nullable": true,
            "example": 5514123
          },
          "dueAt": {
            "type": "string",
            "description": "The UTC timestamp of when this note is due for completion",
            "format": "date-time",
            "nullable": true,
            "example": "2022-11-29T16:50:16.0000000+00:00"
          },
          "progressedAt": {
            "type": "string",
            "description": "The UTC timestamp of when this note was last progressed",
            "format": "date-time",
            "nullable": true,
            "example": "2022-11-29T16:50:16.0000000+00:00"
          },
          "reference": {
            "type": "string",
            "description": "The internal reference of the note - should usually be unique",
            "example": "5514123"
          },
          "status": {
            "$ref": "#/components/schemas/NoteStatus"
          },
          "description": {
            "type": "string",
            "description": "The detailed textual content about the note",
            "example": "Message left by Mr Brown regarding the recent installation of his CCTC cameras. He can't get one of them working and needs some technical support."
          },
          "completionText": {
            "type": "string",
            "description": "A textual note that can be added when a note has been completed. Can only be set if the note has a completed status",
            "nullable": true,
            "example": "Called the customer, he is now happy with the work"
          },
          "progressPercentage": {
            "type": "integer",
            "description": "The percentage of work done required to complete the note",
            "format": "int32",
            "example": 50
          },
          "createdByUserName": {
            "type": "string",
            "description": "The name of the user who owns the note",
            "example": "Mr. Jones"
          },
          "ownedByUserId": {
            "type": "integer",
            "description": "The unique id of the user who owns the note",
            "format": "int64",
            "example": 1245
          },
          "ownedByUserName": {
            "type": "string",
            "description": "The name of the user who owns the note",
            "example": "Mr. Smith"
          },
          "customFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomFieldReadModel"
            },
            "description": "The collection of custom fields applied to this note"
          }
        },
        "additionalProperties": false,
        "description": "Read note model"
      },
      "ReadNoteProgressModel": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "The unique identifier of the note progress entry",
            "format": "int64",
            "example": 124124
          },
          "progressedAt": {
            "type": "string",
            "description": "The UTC timestamp of when this note was progressed",
            "format": "date-time",
            "example": "2023-09-12T11:24:23.0000000+00:00"
          },
          "percentage": {
            "type": "integer",
            "description": "The percentage the note was progressed to",
            "format": "int32",
            "example": 50
          },
          "comment": {
            "type": "string",
            "description": "Free text description about progress made by this update",
            "example": "Sent out the new part"
          }
        },
        "additionalProperties": false,
        "description": "Read note progress model"
      },
      "ReadNoteTypeModel": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "The unique identifier of the note type",
            "format": "int64",
            "example": 5514123
          },
          "name": {
            "type": "string",
            "description": "The name of the note type",
            "example": "Complaint"
          },
          "defaultOwnedByUserId": {
            "type": "integer",
            "description": "The default owner for notes of this type",
            "format": "int64",
            "nullable": true,
            "example": 5514123
          },
          "createdAt": {
            "type": "string",
            "description": "The UTC timestamp of when this note type was created",
            "format": "date-time",
            "example": "2022-11-29T16:50:16.0000000+00:00"
          }
        },
        "additionalProperties": false,
        "description": "Represents a model that holds information about a note type"
      },
      "ReadPersonConsentModel": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "The unique identifier of the consent preference",
            "format": "int64",
            "example": 12345
          },
          "createdAt": {
            "type": "string",
            "description": "The UTC timestamp of when this preference was captured",
            "format": "date-time",
            "example": "2022-11-29T16:50:16.0000000+00:00"
          },
          "status": {
            "$ref": "#/components/schemas/PersonConsentType"
          },
          "medium": {
            "$ref": "#/components/schemas/PersonConsentMedium"
          },
          "comment": {
            "type": "string",
            "description": "Descriptive text about how and/or why the person has made this consent decision",
            "example": "Happy for their data to be held."
          }
        },
        "additionalProperties": false,
        "description": "ReadPersonConsent model"
      },
      "ReadPersonModel": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "The unique identifier of the person",
            "format": "uuid",
            "example": "5514123"
          },
          "createdAt": {
            "type": "string",
            "description": "The UTC timestamp of when this person was created",
            "format": "date-time",
            "example": "2022-11-29T16:50:16.0000000+00:00"
          },
          "contactId": {
            "type": "integer",
            "description": "The unique identifier of the contact that this person belongs to",
            "format": "int64",
            "example": 12345
          },
          "title": {
            "type": "string",
            "description": "The person's title",
            "example": "Mr"
          },
          "forename": {
            "type": "string",
            "description": "The person's first name",
            "example": "David"
          },
          "surname": {
            "type": "string",
            "description": "The person's second name",
            "example": "Smith"
          },
          "email": {
            "type": "string",
            "description": "The email address of the person",
            "example": "dave.brown@example.com"
          },
          "mobile": {
            "type": "string",
            "description": "The mobile telephone number of the person",
            "example": "+447812 123112"
          },
          "landline": {
            "type": "string",
            "description": "The landline telephone number of the person",
            "example": "+441312 112441"
          },
          "extension": {
            "type": "string",
            "description": "The landline extension of the person",
            "example": "12"
          },
          "position": {
            "type": "string",
            "description": "The job role that the person holds within the contact",
            "example": "Manager"
          },
          "department": {
            "type": "string",
            "description": "The department that the person belongs to",
            "example": "Customer service"
          },
          "isOptedOut": {
            "type": "boolean",
            "description": "A flag indicating if the contact has opted out of marketing communications",
            "example": false
          },
          "flagIds": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "description": "The IDs of flags currently applied to this person"
          },
          "customFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomFieldReadModel"
            },
            "description": "Custom fields associated with persons"
          }
        },
        "additionalProperties": false,
        "description": "Read person model"
      },
      "ReadProductCategoryModel": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "The unique identifier of the product category",
            "format": "int64",
            "example": 346583
          },
          "name": {
            "type": "string",
            "description": "Represents the classification or grouping of a stock item based on its characteristics, usage, or other criteria. It helps in organising the inventory and can aid in tracking, reporting, and analysing inventory data",
            "example": "Electronics"
          },
          "createdAt": {
            "type": "string",
            "description": "The date and time when the stock item record was created",
            "format": "date-time",
            "example": "2022-11-29T16:50:16.0000000+00:00"
          }
        },
        "additionalProperties": false,
        "description": "Represents a model for reading product category"
      },
      "ReadPurchaseOrderLineItemModel": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "The unique identifier associated with the purchase order line item",
            "format": "int64",
            "example": 12345
          },
          "purchaseOrderId": {
            "type": "integer",
            "description": "The unique identifier of the purchase order associated with the purchase order line item",
            "format": "int64",
            "nullable": true,
            "example": 54321
          },
          "contactId": {
            "type": "integer",
            "description": "The unique identifier of the contact associated with the purchase order line item",
            "format": "int64",
            "nullable": true
          },
          "createdAt": {
            "type": "string",
            "description": "The date and time when the purchase order line item was created",
            "format": "date-time"
          },
          "quantity": {
            "type": "number",
            "description": "The quantity of the line item",
            "format": "double",
            "example": 5
          },
          "description": {
            "type": "string",
            "description": "Description of the purchase order line item",
            "example": "Replacement filter cartridge"
          },
          "taxId": {
            "type": "integer",
            "description": "VAT / Tax identifier associated with the line item",
            "format": "int64",
            "nullable": true,
            "example": 1001
          },
          "taxPercentage": {
            "type": "number",
            "description": "Tax percentage applied to the line item (GET only, never null). Defaults to 0 when no tax is applied",
            "format": "double",
            "example": 20
          },
          "unitCost": {
            "type": "number",
            "description": "Unit cost of the item (cannot be negative)",
            "format": "double",
            "nullable": true,
            "example": 5.5
          },
          "unitSellingPrice": {
            "type": "number",
            "description": "Unit selling price of the item (cannot be negative)",
            "format": "double",
            "example": 10.99
          },
          "taxAmount": {
            "type": "number",
            "description": "Tax amount for the line item (GET only)",
            "format": "double",
            "nullable": true,
            "example": 2.2
          },
          "grossAmount": {
            "type": "number",
            "description": "Gross amount (formerly NetPrice internal) of the line item (GET only)",
            "format": "double",
            "nullable": true,
            "example": 13.19
          },
          "nominalCodeId": {
            "type": "integer",
            "description": "Nominal code identifier",
            "format": "int64",
            "nullable": true,
            "example": 50001
          },
          "departmentCodeId": {
            "type": "integer",
            "description": "Department code identifier",
            "format": "int64",
            "nullable": true,
            "example": 20002
          }
        },
        "additionalProperties": false,
        "description": "Model for reading an purchase order line item"
      },
      "ReadPurchaseOrderModel": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "The unique identifier of the purchase order",
            "format": "int64",
            "example": 12345
          },
          "jobId": {
            "type": "integer",
            "description": "The unique identifier of the job associated with this purchase order, if applicable",
            "format": "int64",
            "nullable": true,
            "example": 54321
          },
          "jobGroupId": {
            "type": "integer",
            "description": "The unique identifier of the job group associated with this purchase order, if applicable",
            "format": "int64",
            "nullable": true,
            "example": 67890
          },
          "contactId": {
            "type": "integer",
            "description": "The unique identifier of the contact associated with this purchase order",
            "format": "int64"
          },
          "seriesId": {
            "type": "integer",
            "description": "The unique identifier of the purchase order series",
            "format": "int64",
            "nullable": true,
            "example": 1234
          },
          "contractId": {
            "type": "integer",
            "description": "The unique identifier of the contract associated with this purchase order, if applicable.<br/>Shown even if the contract has been soft deleted",
            "format": "int64",
            "nullable": true,
            "example": 101112
          },
          "supplierId": {
            "type": "integer",
            "description": "The unique identifier of the supplier associated with the purchase order",
            "format": "int64",
            "nullable": true,
            "example": 12345
          },
          "createdAt": {
            "type": "string",
            "description": "The dateTime the purchase order was created",
            "format": "date-time",
            "example": "2022-11-29T16:50:16.0000000+00:00"
          },
          "reference": {
            "type": "string",
            "description": "The reference of the purchase order",
            "example": "InvoiceNote101"
          },
          "currencyCode": {
            "$ref": "#/components/schemas/CurrencyRead"
          },
          "deliverySiteContactId": {
            "type": "integer",
            "description": "The unique identifier of the delivery site contact associated with this purchase order, if applicable",
            "format": "int64",
            "nullable": true,
            "example": 56789
          },
          "clientNotes": {
            "type": "string",
            "description": "Notes on the purchase order",
            "example": "Please pay within 30 days"
          },
          "internalNotes": {
            "type": "string",
            "description": "Internal notes not visible to the client",
            "example": "Follow up in two weeks"
          },
          "sentAt": {
            "type": "string",
            "description": "The date and time when the purchase order was sent, if applicable",
            "format": "date-time",
            "nullable": true,
            "example": "2024-01-15T10:30:00.0000000+00:00"
          },
          "cancelledAt": {
            "type": "string",
            "description": "The date and time when the purchase order was cancelled, if applicable",
            "format": "date-time",
            "nullable": true,
            "example": "2024-02-20T14:45:00.0000000+00:00"
          },
          "receivedAt": {
            "type": "string",
            "description": "The date and time when the purchase order was received, if applicable",
            "format": "date-time",
            "nullable": true,
            "example": "2024-01-20T11:00:00.0000000+00:00"
          },
          "cost": {
            "type": "number",
            "description": "The cost of the purchase order",
            "format": "double",
            "nullable": true,
            "example": 850.5
          },
          "totalExclTax": {
            "type": "number",
            "description": "The total amount excluding tax",
            "format": "double",
            "example": 1000
          },
          "totalInclTax": {
            "type": "number",
            "description": "The total amount including tax",
            "format": "double",
            "example": 1200
          },
          "totalPaid": {
            "type": "number",
            "description": "The total amount paid",
            "format": "double",
            "example": 1200
          },
          "customFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomFieldReadModel"
            },
            "description": "Custom fields associated with the purchase order"
          }
        },
        "additionalProperties": false,
        "description": "Represents a model for reading a purchase order"
      },
      "ReadPurchaseOrderSeriesModel": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "The unique identifier of the purchase order",
            "format": "int64",
            "example": 12345
          },
          "name": {
            "type": "string",
            "description": "The name of the purchase order series",
            "example": "Stationary"
          }
        },
        "additionalProperties": false,
        "description": "Represents a model for reading a purchase order series"
      },
      "ReadQuoteLineItemModel": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "The unique identifier associated with the quote line item",
            "format": "int64",
            "example": 12345
          },
          "quoteId": {
            "type": "integer",
            "description": "The unique identifier of the quote associated with the quote line item",
            "format": "int64",
            "nullable": true,
            "example": 54321
          },
          "contactId": {
            "type": "integer",
            "description": "The unique identifier of the contact associated with the quote line item",
            "format": "int64",
            "nullable": true
          },
          "createdAt": {
            "type": "string",
            "description": "The date and time when the quote line item was created",
            "format": "date-time"
          },
          "quantity": {
            "type": "number",
            "description": "The quantity of the line item",
            "format": "double",
            "example": 5
          },
          "description": {
            "type": "string",
            "description": "Description of the quote line item",
            "example": "Replacement filter cartridge"
          },
          "taxId": {
            "type": "integer",
            "description": "VAT / Tax identifier associated with the line item",
            "format": "int64",
            "nullable": true,
            "example": 1001
          },
          "taxPercentage": {
            "type": "number",
            "description": "Tax percentage applied to the line item (GET only, never null). Defaults to 0 when no tax is applied",
            "format": "double",
            "example": 20
          },
          "unitCost": {
            "type": "number",
            "description": "Unit cost of the item (cannot be negative)",
            "format": "double",
            "nullable": true,
            "example": 5.5
          },
          "unitSellingPrice": {
            "type": "number",
            "description": "Unit selling price of the item (cannot be negative)",
            "format": "double",
            "example": 10.99
          },
          "taxAmount": {
            "type": "number",
            "description": "Tax amount for the line item (GET only)",
            "format": "double",
            "nullable": true,
            "example": 2.2
          },
          "grossAmount": {
            "type": "number",
            "description": "Gross amount of the line item (GET only)",
            "format": "double",
            "nullable": true,
            "example": 13.19
          },
          "nominalCodeId": {
            "type": "integer",
            "description": "Nominal code identifier",
            "format": "int64",
            "nullable": true,
            "example": 50001
          },
          "departmentCodeId": {
            "type": "integer",
            "description": "Department code identifier",
            "format": "int64",
            "nullable": true,
            "example": 20002
          }
        },
        "additionalProperties": false,
        "description": "Model for reading a quote line item"
      },
      "ReadQuoteModel": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "The unique identifier of the quote",
            "format": "int64",
            "example": 12345
          },
          "jobId": {
            "type": "integer",
            "description": "The unique identifier of the job associated with this quote, if applicable",
            "format": "int64",
            "nullable": true,
            "example": 54321
          },
          "jobGroupId": {
            "type": "integer",
            "description": "The unique identifier of the job group associated with this quote, if applicable",
            "format": "int64",
            "nullable": true,
            "example": 67890
          },
          "contactId": {
            "type": "integer",
            "description": "The unique identifier of the contact associated with this quote",
            "format": "int64"
          },
          "contractId": {
            "type": "integer",
            "description": "The unique identifier of the contract associated with this quote, if applicable.<br/>Shown even if the contract has been soft deleted",
            "format": "int64",
            "nullable": true,
            "example": 101112
          },
          "createdAt": {
            "type": "string",
            "description": "The dateTime the quote was created",
            "format": "date-time",
            "example": "2022-11-29T16:50:16.0000000+00:00"
          },
          "reference": {
            "type": "string",
            "description": "The reference of the quote",
            "example": "quoteNote101"
          },
          "currencyCode": {
            "$ref": "#/components/schemas/CurrencyRead"
          },
          "deliverySiteContactId": {
            "type": "integer",
            "description": "The unique identifier of the delivery site contact associated with this quote, if applicable",
            "format": "int64",
            "nullable": true,
            "example": 56789
          },
          "nominalCodeId": {
            "type": "integer",
            "description": "The unique identifier of the nominal code associated with this quote, if applicable",
            "format": "int64",
            "nullable": true,
            "example": 45678
          },
          "departmentCodeId": {
            "type": "integer",
            "description": "The unique identifier of the department associated with this quote, if applicable",
            "format": "int64",
            "nullable": true,
            "example": 23456
          },
          "clientNotes": {
            "type": "string",
            "description": "Notes on the quote",
            "example": "Please pay within 30 days"
          },
          "internalNotes": {
            "type": "string",
            "description": "Internal notes not visible to the client",
            "example": "Follow up in two weeks"
          },
          "sentAt": {
            "type": "string",
            "description": "The date and time when the quote was sent, if applicable",
            "format": "date-time",
            "nullable": true,
            "example": "2024-01-15T10:30:00.0000000+00:00"
          },
          "acceptedAt": {
            "type": "string",
            "description": "The date and time when the quote was accepted, if applicable",
            "format": "date-time",
            "nullable": true,
            "example": "2024-01-20T11:00:00.0000000+00:00"
          },
          "rejectedAt": {
            "type": "string",
            "description": "The date and time when the quote was rejected, if applicable",
            "format": "date-time",
            "nullable": true,
            "example": "2024-01-20T11:00:00.0000000+00:00"
          },
          "cancelledAt": {
            "type": "string",
            "description": "The date and time when the quote was cancelled, if applicable",
            "format": "date-time",
            "nullable": true,
            "example": "2024-02-20T14:45:00.0000000+00:00"
          },
          "cost": {
            "type": "number",
            "description": "The cost of the quote",
            "format": "double",
            "nullable": true,
            "example": 850.5
          },
          "totalExclTax": {
            "type": "number",
            "description": "The total amount excluding tax",
            "format": "double",
            "example": 1000
          },
          "totalInclTax": {
            "type": "number",
            "description": "The total amount including tax",
            "format": "double",
            "example": 1200
          },
          "totalPaid": {
            "type": "number",
            "description": "The total amount paid",
            "format": "double",
            "example": 1200
          },
          "daysValidFor": {
            "type": "integer",
            "description": "The number of days the quote is valid for",
            "format": "int32",
            "nullable": true,
            "example": 10
          },
          "customFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomFieldReadModel"
            },
            "description": "Custom fields associated with the quote"
          }
        },
        "additionalProperties": false
      },
      "ReadRatePeriodModel": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "The unique identifier of the rate period",
            "format": "int64"
          },
          "rate": {
            "type": "number",
            "description": "The VAT rate",
            "format": "double"
          },
          "startsAt": {
            "type": "string",
            "description": "The start of the period",
            "format": "date-time"
          }
        },
        "additionalProperties": false,
        "description": "Read rate period model"
      },
      "ReadResourceGroupModel": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "The unique identifier of the resource group",
            "format": "int64",
            "example": 5514123
          },
          "name": {
            "type": "string",
            "description": "The name of the resource group",
            "example": "Plumbers"
          }
        },
        "additionalProperties": false,
        "description": "Represents a model for reading a resource group"
      },
      "ReadResourceModel": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "The unique identifier of the resource",
            "format": "int64",
            "example": 5514123
          },
          "createdAt": {
            "type": "string",
            "description": "The UTC timestamp of when this resource was created",
            "format": "date-time",
            "example": "2022-11-29T16:50:16.0000000+00:00"
          },
          "reference": {
            "type": "string",
            "description": "The internal reference of the resource - should usually be unique",
            "example": "XYZ12345"
          },
          "name": {
            "type": "string",
            "description": "The full name of the resource",
            "example": "David Smith"
          },
          "groupId": {
            "type": "integer",
            "description": "The unique identifier of the resource's group",
            "format": "int64",
            "example": 441122
          },
          "groupName": {
            "type": "string",
            "description": "The name of the resource's group",
            "example": "Plumbers"
          },
          "mobile": {
            "type": "string",
            "description": "The mobile telephone number of the resource",
            "nullable": true,
            "example": "+447812 123112"
          },
          "timeZoneId": {
            "type": "string",
            "description": "The id of the timezone that the resource operates in",
            "example": "GMT Standard Time"
          },
          "maxTravelDistance": {
            "type": "integer",
            "description": "The maximum number of kilometres the resource will travel from start location (as crow flies)",
            "format": "int32",
            "nullable": true,
            "example": 5
          },
          "fuelCard": {
            "type": "string",
            "description": "The fuel card number associated to the resource",
            "nullable": true,
            "example": "01234567891234"
          },
          "businessKey": {
            "type": "string",
            "description": "The number associated to the resources business key",
            "nullable": true,
            "example": "1231231"
          },
          "privateKey": {
            "type": "string",
            "description": "The number associated to the resources private key",
            "nullable": true,
            "example": "414221"
          },
          "tachoCard": {
            "type": "string",
            "description": "The tachograph driver card number associated to the resource",
            "nullable": true,
            "example": "DRI0RDW0000000100"
          },
          "isTracked": {
            "type": "boolean",
            "description": "Indicates whether tracking data should be collected for this resource",
            "example": true
          },
          "isTrackedOutOfHours": {
            "type": "boolean",
            "description": "Indicates whether out of working hour tracking data is private",
            "example": false
          },
          "workingHours": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReadWorkingHourModel"
            },
            "description": "The resources working hours / shifts, expressed relative to `timeZoneId`"
          },
          "customFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomFieldReadModel"
            },
            "description": "Custom fields associated with the resource"
          }
        },
        "additionalProperties": false,
        "description": "Represents a model for reading a resource"
      },
      "ReadSalesOpportunityLineItemModel": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "The unique identifier of the sales opportunity line item",
            "format": "int64",
            "example": 987654
          },
          "salesOpportunityId": {
            "type": "integer",
            "description": "The sales opportunity id associated with the line item",
            "format": "int64",
            "nullable": true,
            "example": 12345
          },
          "contactId": {
            "type": "integer",
            "description": "The contact id associated with the line item",
            "format": "int64",
            "nullable": true,
            "example": 1234
          },
          "createdAt": {
            "type": "string",
            "description": "The date and time when the sales opportunity line item was created",
            "format": "date-time"
          },
          "quantity": {
            "type": "number",
            "description": "The quantity of the line item",
            "format": "double",
            "example": 5
          },
          "description": {
            "type": "string",
            "description": "Description of the sales opportunity line item",
            "example": "Replacement filter cartridge"
          },
          "taxId": {
            "type": "integer",
            "description": "VAT / Tax identifier associated with the line item",
            "format": "int64",
            "nullable": true,
            "example": 1001
          },
          "taxPercentage": {
            "type": "number",
            "description": "Tax percentage applied to the line item (GET only, never null). Defaults to 0 when no tax is applied",
            "format": "double",
            "example": 20
          },
          "unitCost": {
            "type": "number",
            "description": "Unit cost of the item (cannot be negative)",
            "format": "double",
            "nullable": true,
            "example": 5.5
          },
          "unitSellingPrice": {
            "type": "number",
            "description": "Unit selling price of the item (cannot be negative)",
            "format": "double",
            "example": 10.99
          },
          "taxAmount": {
            "type": "number",
            "description": "Tax amount for the line item (GET only)",
            "format": "double",
            "nullable": true,
            "example": 2.2
          },
          "grossAmount": {
            "type": "number",
            "description": "Gross amount of the line item (GET only)",
            "format": "double",
            "nullable": true,
            "example": 13.19
          },
          "nominalCodeId": {
            "type": "integer",
            "description": "Nominal code identifier",
            "format": "int64",
            "nullable": true,
            "example": 50001
          },
          "departmentCodeId": {
            "type": "integer",
            "description": "Department code identifier",
            "format": "int64",
            "nullable": true,
            "example": 20002
          }
        },
        "additionalProperties": false,
        "description": "Model for reading a sales opportunity line item"
      },
      "ReadSalesOpportunityModel": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "The unique identifier of the sales opportunity",
            "format": "int64",
            "example": 12345
          },
          "contactId": {
            "type": "integer",
            "description": "The identifier of the contact associated with the sales opportunity",
            "format": "int64",
            "example": 67890
          },
          "subject": {
            "type": "string",
            "description": "The subject of the sales opportunity",
            "example": "New office equipment deal"
          },
          "status": {
            "$ref": "#/components/schemas/SalesOpportunityStatus"
          },
          "dueAt": {
            "type": "string",
            "description": "The due date of the sales opportunity",
            "format": "date-time",
            "nullable": true,
            "example": "2025-06-30T00:00:00.0000000+00:00"
          },
          "stageId": {
            "type": "integer",
            "description": "The identifier of the stage associated with the sales opportunity",
            "format": "int64",
            "example": 3
          },
          "probabilityId": {
            "type": "integer",
            "description": "The identifier of the probability associated with the sales opportunity",
            "format": "int64",
            "example": 2
          },
          "ownerId": {
            "type": "integer",
            "description": "The identifier of the owner of the sales opportunity",
            "format": "int64",
            "example": 456
          },
          "ownerName": {
            "type": "string",
            "description": "The name of the owner of the sales opportunity",
            "example": "Jane Smith"
          },
          "notes": {
            "type": "string",
            "description": "Notes associated with the sales opportunity",
            "nullable": true,
            "example": "Customer is interested in bulk pricing"
          },
          "reference": {
            "type": "string",
            "description": "The reference for the sales opportunity",
            "nullable": true,
            "example": "SO-2025-001"
          },
          "createdAt": {
            "type": "string",
            "description": "The date the sales opportunity was created",
            "format": "date-time",
            "example": "2025-01-15T09:30:00.0000000+00:00"
          }
        },
        "additionalProperties": false,
        "description": "Represents a model for reading sales opportunity information"
      },
      "ReadSalesOpportunityProbabilityModel": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "The unique identifier of the sales opportunity probability",
            "format": "int64",
            "example": 12345
          },
          "name": {
            "type": "string",
            "description": "The name of the sales opportunity probability",
            "example": "Likely"
          },
          "colour": {
            "type": "string",
            "description": "The colour associated with the probability",
            "example": "Blue"
          },
          "createdAt": {
            "type": "string",
            "description": "The date and time the probability was created",
            "format": "date-time",
            "example": "2025-06-30T00:00:00.0000000+00:00"
          }
        },
        "additionalProperties": false,
        "description": "Represents a model for reading sales opportunity probability information"
      },
      "ReadStockDetailsModel": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "The unique identifier of the stock details",
            "format": "int64",
            "example": 5514123
          },
          "make": {
            "type": "string",
            "description": "The manufacturer or brand of the stock",
            "nullable": true,
            "example": "DustGone Solutions"
          },
          "model": {
            "type": "string",
            "description": "The model name of the stock details",
            "example": "F1 Cleaner"
          },
          "sellingPrice": {
            "type": "number",
            "description": "The selling price of the stock",
            "format": "double",
            "nullable": true,
            "example": 19.99
          },
          "currencyCode": {
            "$ref": "#/components/schemas/CurrencyRead"
          },
          "departmentCodeId": {
            "type": "integer",
            "description": "The department code of the stock",
            "format": "int64",
            "nullable": true,
            "example": 123
          },
          "nominalCodeId": {
            "type": "integer",
            "description": "The nominal code associated with the stock for accounting purposes",
            "format": "int64",
            "nullable": true,
            "example": 1234
          },
          "notes": {
            "type": "string",
            "description": "Notes associated with the stock",
            "nullable": true,
            "example": "Great for cleaning windows"
          },
          "productCategoryId": {
            "type": "integer",
            "description": "The unique identifier of the product category related to this stock details",
            "format": "int64",
            "example": 5514123
          },
          "isConsumable": {
            "type": "boolean",
            "description": "Indicates whether the stock is a consumable item or not. Default is false",
            "example": true
          },
          "modelNumber": {
            "type": "string",
            "description": "The unique number assigned by the manufacturer to identify the model of the stock",
            "nullable": true,
            "example": "F1-00010"
          },
          "stockCode": {
            "type": "string",
            "description": "The unique number or barcode assigned to each individual stock for identification and tracking",
            "nullable": true,
            "example": "B10"
          },
          "batchNumber": {
            "type": "string",
            "description": "The batch number of the stock",
            "nullable": true,
            "example": "S8"
          },
          "taxId": {
            "type": "integer",
            "description": "The identifier of the tax (vat) associated with the stock",
            "format": "int64",
            "nullable": true,
            "example": 1234
          },
          "taxPercentage": {
            "type": "number",
            "description": "The tax (vat) percentage of the stock",
            "format": "double",
            "nullable": true,
            "example": 20
          },
          "size": {
            "type": "number",
            "description": "The dimensions or volume of the stock (m3)",
            "format": "double",
            "nullable": true,
            "example": 199
          },
          "weight": {
            "type": "number",
            "description": "The weight of the stock (kg)",
            "format": "double",
            "nullable": true,
            "example": 6.3
          },
          "createdAt": {
            "type": "string",
            "description": "The UTC timestamp of when this stock details was created",
            "format": "date-time",
            "example": "2022-11-29T16:50:16.0000000+00:00"
          }
        },
        "additionalProperties": false,
        "description": "Read stock details model"
      },
      "ReadStockItemModel": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "The unique identifier of the stock item",
            "format": "int64",
            "example": 5514123
          },
          "stockDetailsId": {
            "type": "integer",
            "description": "The unique identifier of the stock details associated with the stock item",
            "format": "int64",
            "example": 5514123
          },
          "quantity": {
            "type": "number",
            "description": "The quantity of the stock item",
            "format": "double",
            "nullable": true,
            "example": 2.5
          },
          "locationContactId": {
            "type": "integer",
            "description": "The ID of the contact associated with the stock item, null if the stock item is not located at a contact",
            "format": "int64",
            "nullable": true,
            "example": 5514123
          },
          "locationVehicleId": {
            "type": "integer",
            "description": "The ID of the vehicle associated with the stock item, null if the stock item is not located on a vehicle",
            "format": "int64",
            "nullable": true,
            "example": 5514123
          },
          "locationStockItemId": {
            "type": "integer",
            "description": "The ID of the stock item this stock item is allocated to, null if the stock item is not allocated to an item",
            "format": "int64",
            "nullable": true,
            "example": 5514123
          },
          "soldAt": {
            "type": "string",
            "description": "The date when the stock item was sold",
            "format": "date-time",
            "nullable": true,
            "example": "2024-08-29T12:30:45.0000000+00:00"
          },
          "createdAt": {
            "type": "string",
            "description": "The UTC timestamp of when this stock item was created",
            "format": "date-time",
            "example": "2022-11-29T16:50:16.0000000+00:00"
          },
          "notes": {
            "type": "string",
            "description": "Notes on the stock item",
            "nullable": true,
            "example": "Should be kept in warehouse"
          },
          "serialNumber": {
            "type": "string",
            "description": "The unique number or barcode assigned to each individual stock item for identification and tracking",
            "nullable": true,
            "example": "AT-25805"
          },
          "altSerialNumber": {
            "type": "string",
            "description": "The alternative serial number of the stock item",
            "nullable": true,
            "example": "PA-09842"
          },
          "supplierSerialNumber": {
            "type": "string",
            "description": "The unique number used by the supplier for the stock item",
            "nullable": true,
            "example": "TW-015"
          },
          "customerSerialNumber": {
            "type": "string",
            "description": "The number assigned by the customer for the stock item",
            "nullable": true,
            "example": "LM-214750"
          },
          "isEquipment": {
            "type": "boolean",
            "description": "Indicates whether the stock item is equipment or not",
            "example": true
          },
          "condition": {
            "$ref": "#/components/schemas/StockItemCondition"
          },
          "usage": {
            "type": "number",
            "description": "The usage of the stock item",
            "format": "double",
            "nullable": true,
            "example": 10
          },
          "customFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomFieldReadModel"
            },
            "description": "The custom fields associated with the stock item"
          }
        },
        "additionalProperties": false,
        "description": "Represents a model for reading stock item information"
      },
      "ReadStockMovementModel": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "The unique identifier for each stock movement record",
            "format": "int64",
            "example": 123456
          },
          "stockDetailsId": {
            "type": "integer",
            "description": "The identifier of the type of stock associated with the stock movement",
            "format": "int64",
            "example": 876
          },
          "stockItemId": {
            "type": "integer",
            "description": "The identifier of the specific stock item involved in the stock movement",
            "format": "int64",
            "nullable": true,
            "example": 384
          },
          "jobId": {
            "type": "integer",
            "description": "The identifier of the job associated with the stock usage/movement",
            "format": "int64",
            "nullable": true,
            "example": 559
          },
          "pickupAt": {
            "type": "string",
            "description": "The timestamp with time zone offset of the stock pickup",
            "format": "date-time",
            "nullable": true,
            "example": "2022-11-29T16:50:16.0000000+00:00"
          },
          "dropOffAt": {
            "type": "string",
            "description": "The UTC timestamp of the stock drop-off",
            "format": "date-time",
            "nullable": true,
            "example": "2022-11-29T16:50:16.0000000+00:00"
          },
          "isDropOffForSell": {
            "type": "boolean",
            "description": "A flag indicating if the delivered stock is meant for sale",
            "example": true
          },
          "pickupPosition": {
            "$ref": "#/components/schemas/Location"
          },
          "dropOffPosition": {
            "$ref": "#/components/schemas/Location"
          },
          "pickupVehicleId": {
            "type": "integer",
            "description": "The identifier of the vehicle at the pickup location",
            "format": "int64",
            "nullable": true,
            "example": 123
          },
          "vehicleId": {
            "type": "integer",
            "description": "The identifier of the vehicle associated with the stock movement",
            "format": "int64",
            "nullable": true,
            "example": 123
          },
          "dropOffVehicleId": {
            "type": "integer",
            "description": "The identifier of the vehicle at the drop-off location",
            "format": "int64",
            "nullable": true,
            "example": 123
          },
          "dropOffStockItemId": {
            "type": "integer",
            "description": "The identifier of the stock item at the drop-off location",
            "format": "int64",
            "nullable": true,
            "example": 123
          },
          "pickupStockItemId": {
            "type": "integer",
            "description": "The identifier of the stock item at the pickup location",
            "format": "int64",
            "nullable": true,
            "example": 123
          },
          "isEquipmentAtPickup": {
            "type": "boolean",
            "description": "A flag indicating if the stock at the pickup location is equipment",
            "example": true
          },
          "isEquipmentAtDropOff": {
            "type": "boolean",
            "description": "A flag indicating if the stock at the drop-off location is equipment",
            "example": true
          },
          "ownerId": {
            "type": "integer",
            "description": "The identifier of the owner related to the stock movement",
            "format": "int64",
            "nullable": true,
            "example": 74837
          },
          "ownerName": {
            "type": "string",
            "description": "The name of the individual or entity who owns the stock movement",
            "nullable": true,
            "example": "John Doe"
          },
          "invoiceId": {
            "type": "integer",
            "description": "The unique identifier of the invoice associated with the stock usage or movement",
            "format": "int64",
            "nullable": true,
            "example": 50012345
          },
          "pickupContactId": {
            "type": "integer",
            "description": "The unique identifier of the contact at the pickup location",
            "format": "int64",
            "nullable": true,
            "example": 50012345
          },
          "dropOffContactId": {
            "type": "integer",
            "description": "The unique identifier of the contact at the drop-off location",
            "format": "int64",
            "nullable": true,
            "example": 50012345
          },
          "pickUpQuantity": {
            "type": "number",
            "description": "The count of stock units that were picked up",
            "format": "double",
            "nullable": true,
            "example": 12.3
          },
          "dropOffQuantity": {
            "type": "number",
            "description": "The count of stock units that were delivered",
            "format": "double",
            "nullable": true,
            "example": 13.14
          }
        },
        "additionalProperties": false,
        "description": "Represents a model for reading a stock movement"
      },
      "ReadStockSupplierModel": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "The unique identifier of the stock supplier",
            "format": "int64",
            "example": 12345
          },
          "stockDetailsId": {
            "type": "integer",
            "description": "The unique identifier of the stock details record",
            "format": "int64",
            "example": 4334
          },
          "contactId": {
            "type": "integer",
            "description": "The unique identifier of the contact for this stock supplier",
            "format": "int64",
            "example": 88112
          },
          "warrantyPeriod": {
            "type": "integer",
            "description": "The warranty period refers to the duration (in months) for which the stock supplier guarantees the inventory's quality and performance",
            "format": "int32",
            "nullable": true,
            "example": 12
          },
          "cost": {
            "type": "number",
            "description": "The cost refers to the amount charged by the stock supplier for each unit of inventory",
            "format": "double",
            "nullable": true,
            "example": 12.99
          },
          "currencyCode": {
            "$ref": "#/components/schemas/CurrencyRead"
          }
        },
        "additionalProperties": false,
        "description": "Represents a model that holds information about a stock supplier"
      },
      "ReadUserModel": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "The unique identifier of the user",
            "format": "int64",
            "example": 123456
          },
          "email": {
            "type": "string",
            "description": "The email of the user",
            "example": "email@example.com"
          },
          "name": {
            "type": "string",
            "description": "The name associated with the user",
            "example": "John Doe"
          },
          "createdAt": {
            "type": "string",
            "description": "The date and time when the user was created",
            "format": "date-time",
            "example": "2023-12-01T13:00:00.0000000+00:00"
          },
          "roleId": {
            "type": "integer",
            "description": "The role id associated with the user",
            "format": "int64",
            "example": 12345
          },
          "defaultJobCategoryId": {
            "type": "integer",
            "description": "The default job category id associated with the user",
            "format": "int64",
            "nullable": true
          },
          "position": {
            "type": "string",
            "description": "The job position or title associated with the user",
            "nullable": true,
            "example": "Engineer"
          },
          "type": {
            "$ref": "#/components/schemas/LicenceType"
          },
          "groupId": {
            "type": "integer",
            "description": "The group identifier associated with the user",
            "format": "int64",
            "nullable": true,
            "example": 67890
          },
          "mobile": {
            "type": "string",
            "description": "The mobile phone number associated with the user",
            "nullable": true,
            "example": "+447700900123"
          },
          "customFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomFieldReadModel"
            },
            "description": "The collection of custom fields applied to this user"
          }
        },
        "additionalProperties": false,
        "description": "Represents a model for reading user information"
      },
      "ReadVatCodeModel": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "The unique identifier of the VAT code",
            "format": "int64",
            "example": 5514123
          },
          "code": {
            "type": "string",
            "description": "The VAT code",
            "example": "T01"
          },
          "rate": {
            "type": "number",
            "description": "The VAT tax rate of the current period",
            "format": "double"
          },
          "ratePeriods": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReadRatePeriodModel"
            },
            "description": "The VAT tax rate periods, if applicable"
          },
          "isDomesticReverseCharged": {
            "type": "boolean",
            "description": "Is domestic reverse-charge applied"
          },
          "description": {
            "type": "string",
            "description": "Description of the code",
            "example": "Nominal code for roofing work"
          },
          "endsAt": {
            "type": "string",
            "description": "The date the VAT code period ends, null if there is no future period",
            "format": "date-time",
            "nullable": true
          },
          "createdAt": {
            "type": "string",
            "description": "The UTC timestamp of when this nominal code was created",
            "format": "date-time",
            "example": "2022-11-29T16:50:16.0000000+00:00"
          }
        },
        "additionalProperties": false,
        "description": "Read VAT code model"
      },
      "ReadVehicleModel": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "The unique identifier of the vehicle",
            "format": "int64",
            "example": 5514123
          },
          "createdAt": {
            "type": "string",
            "description": "The UTC timestamp of when this vehicle was created",
            "format": "date-time",
            "example": "2022-11-29T16:50:16.0000000+00:00"
          },
          "groupId": {
            "type": "integer",
            "description": "The unique identifier of the group that the vehicle belongs to",
            "format": "int64",
            "example": 1211
          },
          "vehicleType": {
            "$ref": "#/components/schemas/VehicleType"
          },
          "fixedResourceId": {
            "type": "integer",
            "description": "The unique identifier of the resource who this vehicle is assigned to",
            "format": "int64",
            "nullable": true,
            "example": 1211
          },
          "groupName": {
            "type": "string",
            "description": "The name of the group that the vehicle belongs to",
            "example": "Vans"
          },
          "reference": {
            "type": "string",
            "description": "The internal reference of the vehicle - should usually be unique",
            "example": "ABC5514123"
          },
          "registration": {
            "type": "string",
            "description": "The registration number of the vehicle",
            "example": "BC24 BIG"
          },
          "make": {
            "type": "string",
            "description": "The manufacturer of the vehicle",
            "nullable": true,
            "example": "Ford"
          },
          "model": {
            "type": "string",
            "description": "The model of the vehicle",
            "nullable": true,
            "example": "Transit"
          },
          "registrationYear": {
            "type": "integer",
            "description": "The year that the vehicle was first registered as new",
            "format": "int32",
            "nullable": true,
            "example": 2012
          },
          "isSchedulable": {
            "type": "boolean",
            "description": "Indicates whether this vehicle can be scheduled jobs",
            "example": true
          },
          "idlingFuelConsumptionRate": {
            "type": "number",
            "description": "The litre fuel consumption of the vehicle used when idling per minute",
            "format": "double",
            "nullable": true,
            "example": 0.1
          },
          "costPerKm": {
            "type": "number",
            "description": "The running cost of the vehicle per kilometre, expressed in `costPerKmCurrencyCode`",
            "format": "double",
            "nullable": true,
            "example": 0.25
          },
          "costPerDay": {
            "type": "number",
            "description": "The running cost of the vehicle per day, expressed in `costPerDayCurrencyCode`",
            "format": "double",
            "nullable": true,
            "example": 0.25
          },
          "costPerKmCurrencyCode": {
            "$ref": "#/components/schemas/CurrencyRead"
          },
          "costPerDayCurrencyCode": {
            "$ref": "#/components/schemas/CurrencyRead"
          },
          "odometerUnit": {
            "$ref": "#/components/schemas/OdometerUnit"
          },
          "odometerEstimate": {
            "type": "integer",
            "description": "An estimate of vehicle odometer reading, based on tracked distance",
            "format": "int32",
            "nullable": true,
            "example": 510200
          },
          "odometer": {
            "type": "integer",
            "description": "The latest reading from the vehicles odometer",
            "format": "int32",
            "nullable": true,
            "example": 51023
          },
          "odometerReadAt": {
            "type": "string",
            "description": "The UTC timestamp of when the odometer reading was last recorded",
            "format": "date-time",
            "nullable": true,
            "example": "2022-11-29T16:50:16.0000000+00:00"
          },
          "roadSafetyExpiresAt": {
            "type": "string",
            "description": "The date of when the vehicle's road safety test expires (eg. UK MOT test)",
            "format": "date",
            "nullable": true,
            "example": "2022-11-29"
          },
          "roadTaxExpiresAt": {
            "type": "string",
            "description": "The date of when the vehicle's road tax expires",
            "format": "date",
            "nullable": true,
            "example": "2022-11-29"
          },
          "serviceDueAt": {
            "type": "string",
            "description": "The date of when the vehicle's next service is due",
            "format": "date",
            "nullable": true,
            "example": "2022-11-29"
          },
          "insuranceDueAt": {
            "type": "string",
            "description": "The date of when the vehicle's insurance is due for renewal",
            "format": "date",
            "nullable": true,
            "example": "2022-11-29"
          },
          "co2EmissionsGramsPerKm": {
            "type": "integer",
            "description": "The vehicle co2 emission rate as (grams per km)",
            "format": "int32",
            "nullable": true,
            "example": 5
          },
          "co2EmissionsKilogramsPerLitre": {
            "type": "number",
            "description": "The vehicle co2 emission rate as (kilograms per litre)",
            "format": "double",
            "nullable": true,
            "example": 5.5
          },
          "customFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomFieldReadModel"
            },
            "description": "Custom fields associated with the vehicle"
          }
        },
        "additionalProperties": false,
        "description": "Represents a model for reading vehicle"
      },
      "ReadWorkingHourModel": {
        "type": "object",
        "properties": {
          "dayOfWeek": {
            "$ref": "#/components/schemas/DayOfWeek"
          },
          "start": {
            "type": "string",
            "description": "The UTC 24H format time of day that the resource starts their shift (hh:mm)",
            "format": "time",
            "example": "09:00"
          },
          "stop": {
            "type": "string",
            "description": "The UTC 24H format time of day that the resource stops their shift (hh:mm)",
            "format": "time",
            "example": "17:00"
          },
          "startAtContactId": {
            "type": "integer",
            "description": "The unique identifier of the contact (location) that the resource starts this shift from",
            "format": "int64",
            "nullable": true,
            "example": 1241551
          },
          "startAtLocation": {
            "$ref": "#/components/schemas/Location"
          }
        },
        "additionalProperties": false,
        "description": "Represents a read model for a resources working hours in a day"
      },
      "ReadWorksheetAnswerModel": {
        "type": "object",
        "properties": {
          "entityType": {
            "$ref": "#/components/schemas/WorksheetAnswerEntityType"
          },
          "entityId": {
            "type": "integer",
            "description": "The unique identifier of the entity",
            "format": "int64",
            "example": 4
          },
          "questionId": {
            "type": "integer",
            "description": "The unique identifier of the question",
            "format": "int64",
            "example": 3
          },
          "questionText": {
            "type": "string",
            "description": "The text body of the question",
            "example": "How satisfied were you with the job?"
          },
          "resourceId": {
            "type": "integer",
            "description": "The unique identifier of the resource",
            "format": "int64",
            "nullable": true,
            "example": 2
          },
          "worksheetId": {
            "type": "integer",
            "description": "The unique identifier of the worksheet",
            "format": "int64",
            "example": 5
          },
          "worksheetName": {
            "type": "string",
            "description": "The name of the worksheet",
            "nullable": true,
            "example": "Example"
          },
          "questionType": {
            "$ref": "#/components/schemas/WorksheetQuestionTypeRead"
          },
          "worksheetGroupName": {
            "type": "string",
            "description": "The name of the worksheet group",
            "example": "Example"
          },
          "isMandatory": {
            "type": "boolean",
            "description": "Is the worksheet answer mandatory",
            "example": true
          },
          "worksheetQuestionOrder": {
            "type": "integer",
            "description": "The order of the question in the worksheet",
            "format": "int32",
            "example": 9
          },
          "note": {
            "type": "string",
            "description": "The note attached to the worksheet answer",
            "example": "Example"
          },
          "rawAnswerText": {
            "type": "string",
            "description": "Represents the raw, unparsed text of the worksheet answer",
            "example": "Example"
          },
          "answer": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/WorksheetAnswerGeneric"
              },
              {
                "$ref": "#/components/schemas/WorksheetAnswerAppLaunch"
              },
              {
                "$ref": "#/components/schemas/WorksheetAnswerBarcode"
              },
              {
                "$ref": "#/components/schemas/WorksheetAnswerBoolean"
              },
              {
                "$ref": "#/components/schemas/WorksheetAnswerCost"
              },
              {
                "$ref": "#/components/schemas/WorksheetAnswerDate"
              },
              {
                "$ref": "#/components/schemas/WorksheetAnswerDecimal"
              },
              {
                "$ref": "#/components/schemas/WorksheetAnswerFile"
              },
              {
                "$ref": "#/components/schemas/WorksheetAnswerInteger"
              },
              {
                "$ref": "#/components/schemas/WorksheetAnswerList"
              },
              {
                "$ref": "#/components/schemas/WorksheetAnswerOCR"
              },
              {
                "$ref": "#/components/schemas/WorksheetAnswerPhoto"
              },
              {
                "$ref": "#/components/schemas/WorksheetAnswerSignature"
              },
              {
                "$ref": "#/components/schemas/WorksheetAnswerStatement"
              },
              {
                "$ref": "#/components/schemas/WorksheetAnswerText"
              },
              {
                "$ref": "#/components/schemas/WorksheetAnswerTime"
              }
            ],
            "description": "The dynamic answer of the worksheet"
          }
        },
        "additionalProperties": false,
        "description": "Represents a model that holds information about worksheet answers"
      },
      "ReadWorksheetGroupModel": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "The unique identifier of the worksheet group",
            "format": "int64",
            "example": 12345
          },
          "name": {
            "type": "string",
            "description": "The name of the worksheet group",
            "example": "Example Worksheet Group"
          },
          "createdAt": {
            "type": "string",
            "description": "The UTC timestamp of when this worksheet group was created",
            "format": "date-time",
            "example": "2022-11-29T16:50:16.0000000+00:00"
          }
        },
        "additionalProperties": false,
        "description": "Represents a model that holds information about a worksheet group"
      },
      "ReadWorksheetModel": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "The unique identifier of the worksheet",
            "format": "int64",
            "example": 12345
          },
          "name": {
            "type": "string",
            "description": "The name of the worksheet",
            "example": "Boiler Install"
          },
          "modifiedAt": {
            "type": "string",
            "description": "The UTC timestamp of when this worksheet was modified",
            "format": "date-time",
            "example": "2022-11-29T16:50:16.0000000+00:00"
          },
          "groupId": {
            "type": "integer",
            "description": "The unique identifier of the worksheet group",
            "format": "int32",
            "nullable": true,
            "example": 12345
          },
          "isSharedWithContractors": {
            "type": "boolean",
            "description": "Indicates whether the worksheet will be shared with contractors",
            "example": false
          },
          "type": {
            "$ref": "#/components/schemas/WorksheetType"
          },
          "answerHeadingLabel": {
            "type": "string",
            "description": "The label associated with the worksheet answer heading",
            "example": "Please answer here"
          },
          "notesHeadingLabel": {
            "type": "string",
            "description": "The label associated with the worksheet notes heading",
            "example": "Please add any notes here"
          }
        },
        "additionalProperties": false,
        "description": "Represents a model that holds information about a worksheet"
      },
      "ReadWorksheetQuestionModel": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "The unique identifier of the worksheet question",
            "format": "int64",
            "example": 123
          },
          "questionText": {
            "type": "string",
            "description": "The title associated with the given question",
            "example": "Example question title"
          },
          "order": {
            "type": "integer",
            "description": "The order of the question in the worksheet",
            "format": "int32",
            "example": 9
          },
          "type": {
            "$ref": "#/components/schemas/WorksheetQuestionTypeRead"
          },
          "isMandatory": {
            "type": "boolean",
            "description": "Indicates whether the answer to the worksheet question is mandatory",
            "example": true
          },
          "defaultRawAnswerText": {
            "type": "string",
            "description": "Default answer text for a given question",
            "nullable": true,
            "example": "This is my default answer"
          },
          "maxLength": {
            "type": "integer",
            "description": "The maximum length allowed for the answer for a question of type Text",
            "format": "int64",
            "nullable": true,
            "example": 255
          },
          "validItems": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "A list of valid items that can be selected or entered as answers for a question of type ListSingle, ListMulti, ListIconSingle, or ListIconMulti",
            "nullable": true,
            "example": [
              "Option1",
              "Option2",
              "Option3"
            ]
          }
        },
        "additionalProperties": false,
        "description": "Represents a model that holds information about a worksheet question"
      },
      "ResourceGroupSortOptions": {
        "enum": [
          "name"
        ],
        "type": "string",
        "description": "Represents the sort options for resource groups<p>Possible values:</p><ul><li><b>name</b>: Sort by name</li></ul>",
        "example": "name"
      },
      "ResourceSortOptions": {
        "enum": [
          "name",
          "createdAt"
        ],
        "type": "string",
        "description": "Represents the sort options for resources<p>Possible values:</p><ul><li><b>name</b>: Sort by name</li><li><b>createdAt</b>: Sort by created at date</li></ul>",
        "example": "name"
      },
      "SalesOpportunityProbabilitiesSortOptions": {
        "enum": [
          "creationDate"
        ],
        "type": "string",
        "description": "Sort options for sales opportunity probabilities.<p>Possible values:</p><ul><li><b>creationDate</b>: Sort by creation date.</li></ul>",
        "example": "creationDate"
      },
      "SalesOpportunitySortOptions": {
        "enum": [
          "creationDate",
          "subject",
          "dueDate",
          "reference"
        ],
        "type": "string",
        "description": "Sort options for sales opportunities.<p>Possible values:</p><ul><li><b>creationDate</b>: Sort by creation date.</li><li><b>subject</b>: Sort by subject.</li><li><b>dueDate</b>: Sort by due date.</li><li><b>reference</b>: Sort by reference.</li></ul>",
        "example": "creationDate"
      },
      "SalesOpportunityStageSortOptions": {
        "enum": [
          "createdAt"
        ],
        "type": "string",
        "description": "Represents the fields that can be used to sort sales opportunity stages<p>Possible values:</p><ul><li><b>createdAt</b>: The date and time when the stage was created</li></ul>",
        "example": "createdAt"
      },
      "SalesOpportunityStatus": {
        "enum": [
          "created",
          "onHold",
          "completedWon",
          "completedLost"
        ],
        "type": "string",
        "description": "Represents the status of a sales opportunity.<p>Possible values:</p><ul><li><b>created</b>: The sales opportunity has been created.</li><li><b>onHold</b>: The sales opportunity is on hold.</li><li><b>completedWon</b>: The sales opportunity has been completed and won.</li><li><b>completedLost</b>: The sales opportunity has been completed and lost.</li></ul>",
        "example": "created"
      },
      "ScheduleJobModel": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "integer",
            "description": "The unique identifier of the resource assigned to this job. If the chosen resource is not active for job watch, the request will be rejected with a 422. If null and the chosen vehicle id is fixed to a resource, this will be automatically populated",
            "format": "int64",
            "nullable": true,
            "example": 5514123
          },
          "vehicleId": {
            "type": "integer",
            "description": "The unique identifier of the vehicle assigned to this job. If null and the chosen resource id is fixed to a vehicle, this will be automatically populated",
            "format": "int64",
            "nullable": true,
            "example": 5514123
          },
          "plannedStartAt": {
            "type": "string",
            "description": "The UTC timestamp of when the job is planned to start",
            "format": "date-time",
            "nullable": true,
            "example": "2022-11-29T11:00:00.0000000+00:00"
          }
        },
        "additionalProperties": false,
        "description": "Represents a model that holds information about scheduling a job. To schedule a job, PlannedStartAt must not be null and at least one of the ids must be populated. To unschedule a job, both ResourceId and VehicleId must be null"
      },
      "SetJobWorksheetAnswerModel": {
        "type": "object",
        "properties": {
          "note": {
            "type": "string",
            "description": "The note related to the job worksheet answer",
            "nullable": true,
            "example": "This answer was completed on Tuesday morning"
          },
          "answer": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/WriteWorksheetAnswerBoolean"
              },
              {
                "$ref": "#/components/schemas/WriteWorksheetAnswerCost"
              },
              {
                "$ref": "#/components/schemas/WriteWorksheetAnswerDate"
              },
              {
                "$ref": "#/components/schemas/WriteWorksheetAnswerDecimal"
              },
              {
                "$ref": "#/components/schemas/WriteWorksheetAnswerInteger"
              },
              {
                "$ref": "#/components/schemas/WriteWorksheetAnswerListIconMulti"
              },
              {
                "$ref": "#/components/schemas/WriteWorksheetAnswerListIconSingle"
              },
              {
                "$ref": "#/components/schemas/WriteWorksheetAnswerListMulti"
              },
              {
                "$ref": "#/components/schemas/WriteWorksheetAnswerListSingle"
              },
              {
                "$ref": "#/components/schemas/WriteWorksheetAnswerText"
              },
              {
                "$ref": "#/components/schemas/WriteWorksheetAnswerTime"
              }
            ],
            "description": "The answer to the worksheet question",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Set job worksheet answer model"
      },
      "SetJobWorksheetsModel": {
        "type": "object",
        "properties": {
          "worksheetIds": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int64"
            },
            "description": "The collection of unique identifiers of worksheets to associate with a job"
          }
        },
        "additionalProperties": false,
        "description": "Represents a model that holds information linking worksheets to a job"
      },
      "SortDirection": {
        "enum": [
          "ascending",
          "descending"
        ],
        "type": "string",
        "description": "Represents the direction in which sorting should be applied<p>Possible values:</p><ul><li><b>ascending</b>: Indicates ascending sorting order</li><li><b>descending</b>: Indicates descending sorting order</li></ul>",
        "example": "ascending"
      },
      "StockDetailsSortOptions": {
        "enum": [
          "model"
        ],
        "type": "string",
        "description": "Represents the fields that can be used to sort stock details<p>Possible values:</p><ul><li><b>model</b>: The name of the stock details model</li></ul>",
        "example": "model"
      },
      "StockItemCondition": {
        "enum": [
          "new",
          "refurbished",
          "used"
        ],
        "type": "string",
        "description": "Represents the condition of a stock item<p>Possible values:</p><ul><li><b>new</b>: New stock item</li><li><b>refurbished</b>: Refurbished stock item</li><li><b>used</b>: Used stock item</li></ul>",
        "example": "new"
      },
      "StockItemsSortOptions": {
        "enum": [
          "createdAt"
        ],
        "type": "string",
        "description": "Represents the fields that can be used to sort stock items<p>Possible values:</p><ul><li><b>createdAt</b>: The date and time when the stock item was created</li></ul>",
        "example": "createdAt"
      },
      "StopAppliesTo": {
        "enum": [
          "contactOnly",
          "contactAndChildren"
        ],
        "type": "string",
        "description": "Indicates if the contact's child contacts should also be on stop<p>Possible values:</p><ul><li><b>contactOnly</b>: Contact only</li><li><b>contactAndChildren</b>: Contact and children</li></ul>",
        "example": "contactOnly"
      },
      "StopContactModel": {
        "type": "object",
        "properties": {
          "appliesTo": {
            "$ref": "#/components/schemas/StopAppliesTo"
          },
          "status": {
            "$ref": "#/components/schemas/StopStatus"
          },
          "stopReason": {
            "type": "string",
            "description": "The textual description of why the contact has been put on stop",
            "example": "This customer has not paid for our services and won't return calls."
          }
        },
        "additionalProperties": false,
        "description": "Represents a model that holds information about putting a contact on stop"
      },
      "StopStatus": {
        "enum": [
          "contactOnStop",
          "creditLimitOnStop"
        ],
        "type": "string",
        "description": "Indicates whether the contact should be put on stop or their credit limit<p>Possible values:</p><ul><li><b>contactOnStop</b>: Contact on stop</li><li><b>creditLimitOnStop</b>: Credit limit on stop</li></ul>",
        "example": "contactOnStop"
      },
      "SystemListValueMetadataModel": {
        "type": "object",
        "properties": {
          "label": {
            "type": "string",
            "description": "A descriptive label for the specific resource, vehicle or web user that this system list value relates to",
            "nullable": true,
            "example": "John Doe"
          },
          "entityType": {
            "$ref": "#/components/schemas/CustomFieldSystemListType"
          }
        },
        "additionalProperties": false,
        "description": "Represents details of custom field value of type system list"
      },
      "UnstopAppliesTo": {
        "enum": [
          "contactOnly",
          "contactAndChildren"
        ],
        "type": "string",
        "description": "Indicates if the contact's child contacts should also no longer be on stop<p>Possible values:</p><ul><li><b>contactOnly</b>: Contact only</li><li><b>contactAndChildren</b>: Contact and children</li></ul>",
        "example": "contactOnly"
      },
      "UnstopContactModel": {
        "type": "object",
        "properties": {
          "appliesTo": {
            "$ref": "#/components/schemas/UnstopAppliesTo"
          }
        },
        "additionalProperties": false,
        "description": "Unstop contact model"
      },
      "UpdateAccessHourModel": {
        "required": [
          "start",
          "stop"
        ],
        "type": "object",
        "properties": {
          "dayOfWeek": {
            "$ref": "#/components/schemas/DayOfWeek"
          },
          "start": {
            "type": "string",
            "description": "The 24H format time of day that access to the contact site starts (hh:mm)",
            "format": "time",
            "example": "09:00"
          },
          "stop": {
            "type": "string",
            "description": "The 24H format time of day that access to the contact site stops (hh:mm)",
            "format": "time",
            "example": "17:00"
          }
        },
        "additionalProperties": false,
        "description": "Update access hour model"
      },
      "UpdateContactGroupModel": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "The name of the contact group<br/><br/>Optional: Omit to retain current value",
            "example": "High value customers",
            "x-optional": "Omit to retain current value"
          }
        },
        "additionalProperties": false,
        "description": "Update contact group model. At least one optional value must be provided"
      },
      "UpdateContactModel": {
        "type": "object",
        "properties": {
          "reference": {
            "type": "string",
            "description": "The internal reference of the contact - should usually be unique<br/><br/>Optional: Omit to retain current value or provide null to unset",
            "nullable": true,
            "example": "5514123",
            "x-optional": "Omit to retain current value or provide null to unset"
          },
          "name": {
            "type": "string",
            "description": "The name of the contact<br/><br/>Optional: Omit to retain current value",
            "example": "Example Company",
            "x-optional": "Omit to retain current value"
          },
          "groupId": {
            "type": "integer",
            "description": "The unique identifier of the group this contact belongs to<br/><br/>Optional: Omit to retain current value",
            "format": "int64",
            "example": 5514123,
            "x-optional": "Omit to retain current value"
          },
          "parentId": {
            "type": "integer",
            "description": "The unique identifier of the parent contact of this contact<br/><br/>Optional: Omit to retain current value or provide null to unset",
            "format": "int64",
            "nullable": true,
            "example": 5514123,
            "x-optional": "Omit to retain current value or provide null to unset"
          },
          "extraInformation": {
            "type": "string",
            "description": "A free text description about the contact<br/><br/>Optional: Omit to retain current value or provide null to unset",
            "nullable": true,
            "example": "Loyal customer for many years",
            "x-optional": "Omit to retain current value or provide null to unset"
          },
          "street": {
            "type": "string",
            "description": "The contact street address<br/><br/>Optional: Omit to retain current value or provide null to unset",
            "nullable": true,
            "example": "3150 Century Way",
            "x-optional": "Omit to retain current value or provide null to unset"
          },
          "town": {
            "type": "string",
            "description": "The contact address town / city / village / locality<br/><br/>Optional: Omit to retain current value or provide null to unset",
            "nullable": true,
            "example": "Leeds",
            "x-optional": "Omit to retain current value or provide null to unset"
          },
          "postalCode": {
            "type": "string",
            "description": "The contact address postcode or zipcode<br/><br/>Optional: Omit to retain current value or provide null to unset",
            "nullable": true,
            "example": "LS15 6HU",
            "x-optional": "Omit to retain current value or provide null to unset"
          },
          "country": {
            "type": "string",
            "description": "The textual name of the contact address country<br/><br/>Optional: Omit to retain current value or provide null to unset",
            "nullable": true,
            "example": "England",
            "x-optional": "Omit to retain current value or provide null to unset"
          },
          "location": {
            "$ref": "#/components/schemas/Location"
          },
          "customFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomFieldWriteModel"
            },
            "description": "Custom fields associated with the contact. Omit or use an empty list to retain current values<br/><br/>Optional: Omit to retain current value",
            "x-optional": "Omit to retain current value"
          }
        },
        "additionalProperties": false,
        "description": "Update contact model. At least one optional value must be provided. The API doesn't currently support polygon information for a contact. If the contact has been set up with polygon information in JobWatch, updating the location here will overwrite the polygon data and revert to a circle. To avoid unintentional updates, very small changes to the location are ignored by this endpoint"
      },
      "UpdateInvoiceLineItemModel": {
        "type": "object",
        "properties": {
          "quantity": {
            "type": "number",
            "description": "The quantity of the invoice line item<br/><br/>Optional: Omit to retain current value",
            "format": "double",
            "example": 2.5,
            "x-optional": "Omit to retain current value"
          },
          "description": {
            "type": "string",
            "description": "Description of the invoice line item<br/><br/>Optional: Omit to retain current value",
            "example": "Replacement filter cartridge",
            "x-optional": "Omit to retain current value"
          },
          "taxId": {
            "type": "integer",
            "description": "Tax identifier (must exist and not be deleted for customer). Nullable<br/><br/>Optional: Omit to retain current value or provide null to unset",
            "format": "int64",
            "nullable": true,
            "example": 1001,
            "x-optional": "Omit to retain current value or provide null to unset"
          },
          "unitCost": {
            "type": "number",
            "description": "Unit cost (nullable, non-negative)<br/><br/>Optional: Omit to retain current value or provide null to unset",
            "format": "double",
            "nullable": true,
            "example": 5.5,
            "x-optional": "Omit to retain current value or provide null to unset"
          },
          "unitSellingPrice": {
            "type": "number",
            "description": "Unit selling price (non-negative)<br/><br/>Optional: Omit to retain current value",
            "format": "double",
            "example": 10.99,
            "x-optional": "Omit to retain current value"
          },
          "nominalCodeId": {
            "type": "integer",
            "description": "Nominal code identifier (must exist and not be deleted for customer)<br/><br/>Optional: Omit to retain current value or provide null to unset",
            "format": "int64",
            "nullable": true,
            "example": 50001,
            "x-optional": "Omit to retain current value or provide null to unset"
          },
          "departmentCodeId": {
            "type": "integer",
            "description": "Department code identifier (must exist and not be deleted for customer)<br/><br/>Optional: Omit to retain current value or provide null to unset",
            "format": "int64",
            "nullable": true,
            "example": 20002,
            "x-optional": "Omit to retain current value or provide null to unset"
          }
        },
        "additionalProperties": false,
        "description": "represents a model for updating an invoice line item"
      },
      "UpdateInvoiceModel": {
        "type": "object",
        "properties": {
          "deliverySiteContactId": {
            "type": "integer",
            "description": "The unique identifier of the delivery site contact associated with this invoice, if applicable<br/><br/>Optional: Omit to retain current value or provide null to unset",
            "format": "int64",
            "nullable": true,
            "example": 56789,
            "x-optional": "Omit to retain current value or provide null to unset"
          },
          "clientNotes": {
            "type": "string",
            "description": "Notes on the invoice. Length must not exceed 3000 characters when provided.<br/><br/>Optional: Omit to retain current value or provide null to unset",
            "nullable": true,
            "example": "Please pay within 30 days",
            "x-optional": "Omit to retain current value or provide null to unset"
          },
          "internalNotes": {
            "type": "string",
            "description": "Internal notes not visible to the client. Length must not exceed 3000 characters when provided.<br/><br/>Optional: Omit to retain current value or provide null to unset",
            "nullable": true,
            "example": "Follow up in two weeks",
            "x-optional": "Omit to retain current value or provide null to unset"
          },
          "bankAccountId": {
            "type": "integer",
            "description": "The unique identifier of the bank account associated with this invoice, if applicable.<br/>Validation: When provided and not null must be a positive integer within 32-bit bounds and must exist.<br/><br/>Optional: Omit to retain current value or provide null to unset",
            "format": "int64",
            "nullable": true,
            "example": 34567,
            "x-optional": "Omit to retain current value or provide null to unset"
          },
          "nominalCodeId": {
            "type": "integer",
            "description": "The unique identifier of the nominal code associated with this invoice, if applicable.<br/>Validation: When provided and not null must be a positive integer within 32-bit bounds and must exist.<br/><br/>Optional: Omit to retain current value or provide null to unset",
            "format": "int64",
            "nullable": true,
            "example": 45678,
            "x-optional": "Omit to retain current value or provide null to unset"
          },
          "departmentCodeId": {
            "type": "integer",
            "description": "The unique identifier of the department code associated with this invoice, if applicable.<br/>Validation: When provided and not null must be a positive integer within 32-bit bounds and must exist.<br/><br/>Optional: Omit to retain current value or provide null to unset",
            "format": "int64",
            "nullable": true,
            "example": 23456,
            "x-optional": "Omit to retain current value or provide null to unset"
          },
          "reference": {
            "type": "string",
            "description": "The reference code for the invoice.<br/>Validation: When provided and not null, must not be empty and can only contain alphanumeric characters, hyphens, underscores, and forward slashes.<br/><br/>Optional: Omit to retain current value or provide null to unset",
            "nullable": true,
            "example": "INV-2024/001_A",
            "x-optional": "Omit to retain current value or provide null to unset"
          },
          "customFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomFieldWriteModel"
            },
            "description": "Custom fields associated with the invoice.<br/>Omit or use an empty list to retain current values.<br/>            <br/>Validation:<br/>- Cannot be null when provided.<br/>- Each custom field must satisfy its definition rules for the invoice type.<br/><br/>Optional: Omit to retain current value",
            "x-optional": "Omit to retain current value"
          }
        },
        "additionalProperties": false,
        "description": "Represents a model that holds information about updating an invoice"
      },
      "UpdateInvoicePaidModel": {
        "type": "object",
        "properties": {
          "paidAt": {
            "type": "string",
            "description": "The UTC date and time when the invoice was paid, if omitted the current date and time will be used",
            "format": "date-time",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents a model that holds information about marking an invoice as paid"
      },
      "UpdateInvoiceSentModel": {
        "type": "object",
        "properties": {
          "sentAt": {
            "type": "string",
            "description": "The UTC date and time when the invoice was sent, if omitted the current date and time will be used",
            "format": "date-time",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents a model that holds information about marking an invoice as sent"
      },
      "UpdateJobGroupLineItemModel": {
        "type": "object",
        "properties": {
          "quantity": {
            "type": "number",
            "description": "Quantity of the line item<br/><br/>Optional: Omit to retain current value",
            "format": "double",
            "example": 5,
            "x-optional": "Omit to retain current value"
          },
          "description": {
            "type": "string",
            "description": "Description of the line item<br/><br/>Optional: Omit to retain current value",
            "example": "Copper pipe - 1m",
            "x-optional": "Omit to retain current value"
          },
          "taxId": {
            "type": "integer",
            "description": "Id of the vat/tax rate applied to this item<br/><br/>Optional: Omit to retain current value or provide null to unset",
            "format": "int64",
            "nullable": true,
            "example": 854,
            "x-optional": "Omit to retain current value or provide null to unset"
          },
          "unitCost": {
            "type": "number",
            "description": "Cost of the line item<br/><br/>Optional: Omit to retain current value or provide null to unset",
            "format": "double",
            "nullable": true,
            "example": 2.5,
            "x-optional": "Omit to retain current value or provide null to unset"
          },
          "unitSellingPrice": {
            "type": "number",
            "description": "Price of each individual unit associated to the line item<br/><br/>Optional: Omit to retain current value",
            "format": "double",
            "example": 5.99,
            "x-optional": "Omit to retain current value"
          },
          "nominalCodeId": {
            "type": "integer",
            "description": "Id of the associated nominal code<br/><br/>Optional: Omit to retain current value or provide null to unset",
            "format": "int64",
            "nullable": true,
            "example": 45,
            "x-optional": "Omit to retain current value or provide null to unset"
          },
          "departmentCodeId": {
            "type": "integer",
            "description": "Id of the associated department code<br/><br/>Optional: Omit to retain current value or provide null to unset",
            "format": "int64",
            "nullable": true,
            "example": 22,
            "x-optional": "Omit to retain current value or provide null to unset"
          }
        },
        "additionalProperties": false,
        "description": "Update job group line item request model. At least one optional value must be provided"
      },
      "UpdateJobGroupModel": {
        "type": "object",
        "properties": {
          "reference": {
            "type": "string",
            "description": "The internal reference of a job group - should usually be unique. If not provided and auto-referencing is setup, auto-reference value will be used<br/><br/>Max length: 40 characters<br/><br/>Optional: Omit to retain current value or provide null to unset",
            "nullable": true,
            "example": "ABC/12345",
            "x-optional": "Omit to retain current value or provide null to unset"
          },
          "contactId": {
            "type": "integer",
            "description": "The unique identifier of the contact the job group is for<br/><br/>Must be a positive integer within the range of a 32-bit signed int<br/><br/>Must reference an existing contact<br/><br/>Optional: Omit to retain current value",
            "format": "int64",
            "example": 12345678,
            "x-optional": "Omit to retain current value"
          },
          "personId": {
            "type": "string",
            "description": "The unique uuid identifier of the person who will serve as primary point of contact for the job<br/><br/>If provided, must belong to the specified contact (or existing job group's contact if ContactId not provided)<br/><br/>If not provided, the existing job group's person will be validated against the provided contact (if ContactId is given)<br/><br/>Optional: Omit to retain current value or provide null to unset",
            "format": "uuid",
            "nullable": true,
            "example": "123e4567-e89b-12d3-a456-426614174000",
            "x-optional": "Omit to retain current value or provide null to unset"
          },
          "title": {
            "type": "string",
            "description": "The title of the job group<br/><br/>Max length: 50 characters<br/><br/>Optional: Omit to retain current value or provide null to unset",
            "nullable": true,
            "example": "My Group Job",
            "x-optional": "Omit to retain current value or provide null to unset"
          },
          "isShownOnDevice": {
            "type": "boolean",
            "description": "Indicates whether the job group is shown on the device. If true, it will be shown<br/><br/>Optional: Omit to retain current value",
            "example": false,
            "x-optional": "Omit to retain current value"
          },
          "orderNumber": {
            "type": "string",
            "description": "The order number associated with the job group<br/><br/>Max length: 40 characters<br/><br/>Optional: Omit to retain current value or provide null to unset",
            "nullable": true,
            "example": "ORD123456",
            "x-optional": "Omit to retain current value or provide null to unset"
          },
          "plannedStartOption": {
            "$ref": "#/components/schemas/JobGroupPlannedStartOptions"
          },
          "plannedStartAt": {
            "type": "string",
            "description": "The UTC timestamp for when the job group should be started. Should be set if the PlannedStartOption is JobGroupPlannedStartOptions.OnSetDate<br/><br/>If PlannedStartOption is DateOfFirstJob, this must be null<br/><br/>If PlannedStartOption is not provided, its requirement or nullability depends on the existing job group's start option<br/><br/>Optional: Omit to retain current value or provide null to unset",
            "format": "date-time",
            "nullable": true,
            "example": "2025-01-01T09:00:00.0000000+00:00",
            "x-optional": "Omit to retain current value or provide null to unset"
          },
          "plannedEndOption": {
            "$ref": "#/components/schemas/JobGroupPlannedEndOptions"
          },
          "plannedEndAt": {
            "type": "string",
            "description": "The UTC timestamp for when the job group should be ended. Should be set if the PlannedEndOption is JobGroupPlannedEndOptions.OnSetDate<br/><br/>If PlannedEndOption is DateOfLastJob, this must be null<br/><br/>If PlannedEndOption is not provided, its requirement or nullability depends on the existing job group's end option<br/><br/>If both PlannedStartAt and PlannedEndAt are OnSetDate, PlannedEndAt must be after PlannedStartAt<br/><br/>Optional: Omit to retain current value or provide null to unset",
            "format": "date-time",
            "nullable": true,
            "example": "2025-01-01T09:00:00.0000000+00:00",
            "x-optional": "Omit to retain current value or provide null to unset"
          },
          "categoryId": {
            "type": "integer",
            "description": "The unique identifier of the category that the job group is assigned to<br/><br/>Must be a positive integer within the range of a 32-bit signed int and reference an existing category<br/><br/>Optional: Omit to retain current value or provide null to unset",
            "format": "int64",
            "nullable": true,
            "example": 123456,
            "x-optional": "Omit to retain current value or provide null to unset"
          },
          "areJobsLinked": {
            "type": "boolean",
            "description": "Determines whether the jobs are linked<br/><br/>Cannot be set to true after a group job has been created<br/><br/>Optional: Omit to retain current value",
            "example": false,
            "x-optional": "Omit to retain current value"
          },
          "linkedJobsVehicleId": {
            "type": "integer",
            "description": "The unique identifier of the vehicle used for each job if linked<br/><br/>Cannot be set if AreJobsLinked is false<br/><br/>Cannot be set if the job group status is not scheduled or unscheduled<br/>Must be provided if ResourceId is provided<br/><br/>Optional: Omit to retain current value or provide null to unset",
            "format": "int64",
            "nullable": true,
            "example": 123456,
            "x-optional": "Omit to retain current value or provide null to unset"
          },
          "linkedJobsResourceId": {
            "type": "integer",
            "description": "The unique identifier of the resource used for each job if linked<br/><br/>Cannot be set if AreJobsLinked is false<br/><br/>Cannot be set if the job group status is not scheduled or unscheduled<br/>Must be provided if VehicleId is provided<br/><br/>Optional: Omit to retain current value or provide null to unset",
            "format": "int64",
            "nullable": true,
            "example": 123456,
            "x-optional": "Omit to retain current value or provide null to unset"
          },
          "linkedJobsStartAt": {
            "type": "string",
            "description": "The date and time the first job will be scheduled for if linked<br/><br/>Cannot be set if AreJobsLinked is false<br/><br/>Cannot be set if the job group status is not scheduled or unscheduled<br/><br/>Optional: Omit to retain current value or provide null to unset",
            "format": "date-time",
            "nullable": true,
            "example": "123456",
            "x-optional": "Omit to retain current value or provide null to unset"
          },
          "ownerId": {
            "type": "integer",
            "description": "The unique identifier of the user who owns the job group<br/><br/>Setting to null removes the owner<br/><br/>Optional: Omit to retain current value or provide null to unset",
            "format": "int64",
            "nullable": true,
            "example": 12345,
            "x-optional": "Omit to retain current value or provide null to unset"
          }
        },
        "additionalProperties": false,
        "description": "Update job group request model. At least one optional value must be provided"
      },
      "UpdateJobLineItemModel": {
        "type": "object",
        "properties": {
          "quantity": {
            "type": "number",
            "description": "The quantity of the job line item<br/><br/>Optional: Omit to retain current value",
            "format": "double",
            "example": 2.5,
            "x-optional": "Omit to retain current value"
          },
          "description": {
            "type": "string",
            "description": "Description of the job line item<br/><br/>Optional: Omit to retain current value",
            "example": "Replacement filter cartridge",
            "x-optional": "Omit to retain current value"
          },
          "taxId": {
            "type": "integer",
            "description": "Tax identifier (must exist and not be deleted for customer). Nullable<br/><br/>Optional: Omit to retain current value or provide null to unset",
            "format": "int64",
            "nullable": true,
            "example": 1001,
            "x-optional": "Omit to retain current value or provide null to unset"
          },
          "unitCost": {
            "type": "number",
            "description": "Unit cost (nullable, non-negative)<br/><br/>Optional: Omit to retain current value or provide null to unset",
            "format": "double",
            "nullable": true,
            "example": 5.5,
            "x-optional": "Omit to retain current value or provide null to unset"
          },
          "unitSellingPrice": {
            "type": "number",
            "description": "Unit selling price (non-negative)<br/><br/>Optional: Omit to retain current value",
            "format": "double",
            "example": 10.99,
            "x-optional": "Omit to retain current value"
          },
          "nominalCodeId": {
            "type": "integer",
            "description": "Nominal code identifier (must exist and not be deleted for customer)<br/><br/>Optional: Omit to retain current value or provide null to unset",
            "format": "int64",
            "nullable": true,
            "example": 50001,
            "x-optional": "Omit to retain current value or provide null to unset"
          },
          "departmentCodeId": {
            "type": "integer",
            "description": "Department code identifier (must exist and not be deleted for customer)<br/><br/>Optional: Omit to retain current value or provide null to unset",
            "format": "int64",
            "nullable": true,
            "example": 20002,
            "x-optional": "Omit to retain current value or provide null to unset"
          }
        },
        "additionalProperties": false,
        "description": "Represents a model for updating a job line item"
      },
      "UpdateJobModel": {
        "type": "object",
        "properties": {
          "plannedDuration": {
            "type": "integer",
            "description": "The planned duration for the job, indicated in minutes.<br/>            <br/>Validation:<br/>- Must be greater than 0.<br/>- Must be less than or equal to 1440.<br/><br/>Optional: Omit to retain current value",
            "format": "int32",
            "example": 90,
            "x-optional": "Omit to retain current value"
          },
          "description": {
            "type": "string",
            "description": "The textual details about the job.<br/>Cannot be updated if the job has been started or completed.<br/>            <br/>Validation:<br/>- Only allowed when job status is New, Sent, Accepted, Refused, or Scheduled.<br/>- Cannot be null when provided.<br/>- Maximum length is 1000 characters.<br/><br/>Optional: Omit to retain current value",
            "example": "New boiler install - please remove and retain the old boiler",
            "x-optional": "Omit to retain current value"
          },
          "reference": {
            "type": "string",
            "description": "The internal reference of the job.<br/>Should usually be unique.<br/>            <br/>Validation:<br/>- Maximum length is 40 characters.<br/><br/>Optional: Omit to retain current value or provide null to unset",
            "nullable": true,
            "example": "ABC/5514123",
            "x-optional": "Omit to retain current value or provide null to unset"
          },
          "personId": {
            "type": "string",
            "description": "The unique UUID identifier of the person who will serve as primary point of contact for the job.<br/>If set to null, the primary person for the contact will be set instead.<br/>Cannot be updated if the job has been started or completed.<br/>            <br/>Validation:<br/>- Only allowed when job status is New, Sent, Accepted, Refused, or Scheduled.<br/>- If provided and not null, the person must exist and belong to the job’s contact.<br/><br/>Optional: Omit to retain current value or provide null to unset",
            "format": "uuid",
            "nullable": true,
            "example": "3729c414-ed21-4849-816f-25d332265dc8",
            "x-optional": "Omit to retain current value or provide null to unset"
          },
          "orderNumber": {
            "type": "string",
            "description": "The order number associated with the job.<br/>May be required, dependent upon job type.<br/>            <br/>Validation:<br/>- Required if the job type mandates an order number.<br/>- Maximum length is 40 characters.<br/>- Cannot be empty when required.<br/><br/>Optional: Omit to retain current value or provide null to unset",
            "nullable": true,
            "example": "PAO/1312KU",
            "x-optional": "Omit to retain current value or provide null to unset"
          },
          "jobGroupId": {
            "type": "integer",
            "description": "The unique identifier of the job group to which this job belongs.<br/>            <br/>Validation:<br/>- If provided, job must not already belong to another group.<br/>- The job group must exist.<br/>- The job group must not be financially completed.<br/><br/>Optional: Omit to retain current value or provide null to unset",
            "format": "int64",
            "nullable": true,
            "example": 42,
            "x-optional": "Omit to retain current value or provide null to unset"
          },
          "categoryId": {
            "type": "integer",
            "description": "The unique identifier of the category that the job is assigned to.<br/><br/>Validation:<br/>- If provided and not null, the category must exist and be visible for Jobs (JobCategoryVisibility 0 or 2).<br/><br/>Optional: Omit to retain current value or provide null to unset",
            "format": "int64",
            "nullable": true,
            "example": 5514123,
            "x-optional": "Omit to retain current value or provide null to unset"
          },
          "isFinanciallyComplete": {
            "type": "boolean",
            "description": "Indicates whether the job is financially complete.<br/>            <br/>Validation:<br/>- Can only be set to true when job status is CompletedOk or CompletedWithIssues.<br/><br/>Optional: Omit to retain current value",
            "example": false,
            "x-optional": "Omit to retain current value"
          },
          "isActioned": {
            "type": "boolean",
            "description": "A flag indicating whether all actions concerned with the job have been completed.<br/>            <br/>Validation:<br/>- Can only be set to true when job status is CompletedOk or CompletedWithIssues.<br/><br/>Optional: Omit to retain current value",
            "example": false,
            "x-optional": "Omit to retain current value"
          },
          "officeNotes": {
            "type": "string",
            "description": "Notes for the office team regarding the job.<br/>            <br/>Validation:<br/>- Maximum length is 500 characters.<br/>- Only allowed when job status is CompletedOk or CompletedWithIssues if non-empty.<br/><br/>Optional: Omit to retain current value or provide null to unset",
            "nullable": true,
            "example": "Customer has requested a follow-up call",
            "x-optional": "Omit to retain current value or provide null to unset"
          },
          "customFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomFieldWriteModel"
            },
            "description": "Custom fields associated with the job.<br/>Omit or use an empty list to retain current values.<br/>            <br/>Validation:<br/>- Cannot be null when provided.<br/>- Each custom field must satisfy its definition rules for the job type.<br/><br/>Optional: Omit to retain current value",
            "x-optional": "Omit to retain current value"
          },
          "siteContactId": {
            "type": "integer",
            "description": "The unique identifier of the site contact for this job.<br/>If provided, the contact must exist within the customer's account.<br/>Cannot be null when provided.<br/><br/>Optional: Omit to retain current value or provide null to unset",
            "format": "int64",
            "nullable": true,
            "example": 15548440,
            "x-optional": "Omit to retain current value or provide null to unset"
          }
        },
        "additionalProperties": false,
        "description": "Update job model.<br/>At least one optional value must be provided.<br/>            <br/>Validation:<br/>- The request body must contain at least one provided value"
      },
      "UpdateJobResultModel": {
        "required": [
          "status"
        ],
        "type": "object",
        "properties": {
          "status": {
            "$ref": "#/components/schemas/JobResult"
          },
          "result": {
            "type": "string",
            "description": "Required if status is completedOk; optional if completedWithIssues. Must exactly match a valid result string for the job type and status",
            "nullable": true,
            "example": "complete"
          },
          "statusModifiedAt": {
            "type": "string",
            "description": "The UTC timestamp the status change should be recorded at. If omitted the current UTC time is used",
            "format": "date-time",
            "nullable": true,
            "example": "2025-01-05T14:23:10.0000000+00:00"
          }
        },
        "additionalProperties": false,
        "description": "Represents a model containing information for setting the result of a job"
      },
      "UpdateJobStartModel": {
        "type": "object",
        "properties": {
          "comment": {
            "type": "string",
            "description": "Optional free-form comment to associate with the status update<br/>            <br/>Validation:<br/>- Maximum length of 250 characters",
            "nullable": true,
            "example": "Arrived on site"
          },
          "statusModifiedAt": {
            "type": "string",
            "description": "The UTC timestamp the status change should be recorded as.<br/>If omitted, the current UTC time will be used.<br/>            <br/>Validation:<br/>- Must not be a future date/time",
            "format": "date-time",
            "nullable": true,
            "example": "2025-01-05T14:23:10.0000000+00:00"
          }
        },
        "additionalProperties": false,
        "description": "Represents a model containing information for starting a job<br/>            <br/>Validation:<br/>- Job status must be one of: Scheduled, Rescheduled, Sent, Read, Accepted, OnTheWay, Suspended"
      },
      "UpdateNoteModel": {
        "type": "object",
        "properties": {
          "typeId": {
            "type": "integer",
            "description": "The unique identifier of the note type definition associated to this note<br/><br/>Optional: Omit to retain current value",
            "format": "int64",
            "example": 5514123,
            "x-optional": "Omit to retain current value"
          },
          "subject": {
            "type": "string",
            "description": "The subject of the note<br/><br/>Optional: Omit to retain current value",
            "example": "Call Mr Brown",
            "x-optional": "Omit to retain current value"
          },
          "ownedByUserId": {
            "type": "integer",
            "description": "The unique id of the user who owns the note. Must have an active licence<br/><br/>Optional: Omit to retain current value",
            "format": "int64",
            "example": 67246,
            "x-optional": "Omit to retain current value"
          },
          "dueAt": {
            "type": "string",
            "description": "The UTC timestamp of when this note is due for completion<br/><br/>Optional: Omit to retain current value or provide null to unset",
            "format": "date-time",
            "nullable": true,
            "example": "2022-11-29T16:50:16.0000000+00:00",
            "x-optional": "Omit to retain current value or provide null to unset"
          },
          "parentId": {
            "type": "integer",
            "description": "The unique identifier of the parent note of this note<br/><br/>Optional: Omit to retain current value or provide null to unset",
            "format": "int64",
            "nullable": true,
            "example": 5514123,
            "x-optional": "Omit to retain current value or provide null to unset"
          },
          "reference": {
            "type": "string",
            "description": "The internal reference of the note - should usually be unique<br/><br/>Optional: Omit to retain current value",
            "example": "REF420",
            "x-optional": "Omit to retain current value"
          },
          "status": {
            "$ref": "#/components/schemas/NoteStatus"
          },
          "completionText": {
            "type": "string",
            "description": "The completion text for the note<br/><br/>Optional: Omit to retain current value or provide null to unset",
            "nullable": true,
            "example": "Completed",
            "x-optional": "Omit to retain current value or provide null to unset"
          },
          "description": {
            "type": "string",
            "description": "The detailed textual content about the note<br/><br/>Optional: Omit to retain current value",
            "example": "Message left by Mr Brown regarding the recent installation of his CCTC cameras. He can't get one of them working and needs some technical support.",
            "x-optional": "Omit to retain current value"
          },
          "customFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomFieldWriteModel"
            },
            "description": "The collection of custom fields applied to this note<br/><br/>Optional: Omit to retain current value",
            "x-optional": "Omit to retain current value"
          }
        },
        "additionalProperties": false,
        "description": "Update note model"
      },
      "UpdateNoteProgressModel": {
        "required": [
          "percentage"
        ],
        "type": "object",
        "properties": {
          "progressedAt": {
            "type": "string",
            "description": "The UTC timestamp of when this note was progressed. Must be unique to the second. Defaults to UTC now if no value specified. If a note progress more recent than this value already exists, the note fields will not be updated",
            "format": "date-time",
            "nullable": true,
            "example": "2023-09-12T11:24:23.0000000+00:00"
          },
          "percentage": {
            "maximum": 100,
            "minimum": 0,
            "type": "integer",
            "description": "The percentage to progress the note to. Must be between 0 - 100 inclusive. Setting to 100 will not complete the note, this must be done manually via the patch endpoint",
            "format": "int32",
            "example": 50
          },
          "comment": {
            "type": "string",
            "description": "Free text description about progress made by this update",
            "nullable": true,
            "example": "Sent out the new part"
          }
        },
        "additionalProperties": false,
        "description": "Update note progress model"
      },
      "UpdatePersonConsentModel": {
        "required": [
          "medium",
          "status"
        ],
        "type": "object",
        "properties": {
          "status": {
            "$ref": "#/components/schemas/PersonConsentType"
          },
          "medium": {
            "$ref": "#/components/schemas/PersonConsentMedium"
          },
          "comment": {
            "type": "string",
            "description": "Descriptive text about how and/or why the person has made this consent decision",
            "nullable": true,
            "example": "Happy for their data to be held"
          }
        },
        "additionalProperties": false,
        "description": "Update person consent model"
      },
      "UpdatePersonModel": {
        "type": "object",
        "properties": {
          "title": {
            "type": "string",
            "description": "The person's title<br/><br/>Optional: Omit to retain current value or provide null to unset",
            "nullable": true,
            "example": "Mr",
            "x-optional": "Omit to retain current value or provide null to unset"
          },
          "forename": {
            "type": "string",
            "description": "The person's first name<br/><br/>Optional: Omit to retain current value",
            "example": "David",
            "x-optional": "Omit to retain current value"
          },
          "surname": {
            "type": "string",
            "description": "The person's second name<br/><br/>Optional: Omit to retain current value",
            "example": "Smith",
            "x-optional": "Omit to retain current value"
          },
          "email": {
            "type": "string",
            "description": "The email address of the person, provide an empty string to unset.<br/><br/>Optional: Omit to retain current value",
            "example": "dave.brown@example.com.",
            "x-optional": "Omit to retain current value"
          },
          "mobile": {
            "type": "string",
            "description": "The mobile telephone number of the person<br/><br/>Optional: Omit to retain current value or provide null to unset",
            "nullable": true,
            "example": "+447812 123112",
            "x-optional": "Omit to retain current value or provide null to unset"
          },
          "landline": {
            "type": "string",
            "description": "The landline telephone number of the person<br/><br/>Optional: Omit to retain current value or provide null to unset",
            "nullable": true,
            "example": "+441312 112441",
            "x-optional": "Omit to retain current value or provide null to unset"
          },
          "extension": {
            "type": "string",
            "description": "The landline extension of the person<br/><br/>Optional: Omit to retain current value or provide null to unset",
            "nullable": true,
            "example": "12",
            "x-optional": "Omit to retain current value or provide null to unset"
          },
          "position": {
            "type": "string",
            "description": "The job role that the person holds within the contact<br/><br/>Optional: Omit to retain current value or provide null to unset",
            "nullable": true,
            "example": "Manager",
            "x-optional": "Omit to retain current value or provide null to unset"
          },
          "department": {
            "type": "string",
            "description": "The department that the person belongs to<br/><br/>Optional: Omit to retain current value or provide null to unset",
            "nullable": true,
            "example": "Customer service",
            "x-optional": "Omit to retain current value or provide null to unset"
          },
          "isOptedOut": {
            "type": "boolean",
            "description": "A flag indicating if the contact has opted out of marketing communications<br/><br/>Optional: Omit to retain current value",
            "example": false,
            "x-optional": "Omit to retain current value"
          },
          "customFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomFieldWriteModel"
            },
            "description": "Custom fields associated with the person. Omit or use an empty list to retain current values<br/><br/>Optional: Omit to retain current value",
            "x-optional": "Omit to retain current value"
          }
        },
        "additionalProperties": false,
        "description": "Update person model. At least one optional value must be provided"
      },
      "UpdatePurchaseOrderLineItemModel": {
        "type": "object",
        "properties": {
          "quantity": {
            "type": "number",
            "description": "The quantity of the purchase order line item<br/><br/>Optional: Omit to retain current value",
            "format": "double",
            "example": 2.5,
            "x-optional": "Omit to retain current value"
          },
          "description": {
            "type": "string",
            "description": "Description of the purchase order line item<br/><br/>Optional: Omit to retain current value",
            "example": "Replacement filter cartridge",
            "x-optional": "Omit to retain current value"
          },
          "taxId": {
            "type": "integer",
            "description": "Tax identifier (must exist and not be deleted for customer), nullable<br/><br/>Optional: Omit to retain current value or provide null to unset",
            "format": "int64",
            "nullable": true,
            "example": 1001,
            "x-optional": "Omit to retain current value or provide null to unset"
          },
          "unitCost": {
            "type": "number",
            "description": "Unit cost (nullable, non-negative)<br/><br/>Optional: Omit to retain current value or provide null to unset",
            "format": "double",
            "nullable": true,
            "example": 5.5,
            "x-optional": "Omit to retain current value or provide null to unset"
          },
          "unitSellingPrice": {
            "type": "number",
            "description": "Unit selling price (non-negative)<br/><br/>Optional: Omit to retain current value",
            "format": "double",
            "example": 10.99,
            "x-optional": "Omit to retain current value"
          },
          "nominalCodeId": {
            "type": "integer",
            "description": "Nominal code identifier (must exist and not be deleted for customer)<br/><br/>Optional: Omit to retain current value or provide null to unset",
            "format": "int64",
            "nullable": true,
            "example": 50001,
            "x-optional": "Omit to retain current value or provide null to unset"
          },
          "departmentCodeId": {
            "type": "integer",
            "description": "Department code identifier (must exist and not be deleted for customer)<br/><br/>Optional: Omit to retain current value or provide null to unset",
            "format": "int64",
            "nullable": true,
            "example": 20002,
            "x-optional": "Omit to retain current value or provide null to unset"
          }
        },
        "additionalProperties": false,
        "description": "Represents a model for updating a purchase order line item"
      },
      "UpdatePurchaseOrderModel": {
        "type": "object",
        "properties": {
          "deliverySiteContactId": {
            "type": "integer",
            "description": "The unique identifier of the delivery site contact associated with this purchase order, if applicable<br/><br/>Optional: Omit to retain current value or provide null to unset",
            "format": "int64",
            "nullable": true,
            "example": 56789,
            "x-optional": "Omit to retain current value or provide null to unset"
          },
          "clientNotes": {
            "type": "string",
            "description": "Notes on the purchase order. Length must not exceed 3000 characters when provided.<br/><br/>Optional: Omit to retain current value or provide null to unset",
            "nullable": true,
            "example": "Please pay within 30 days",
            "x-optional": "Omit to retain current value or provide null to unset"
          },
          "internalNotes": {
            "type": "string",
            "description": "Internal notes not visible to the client. Length must not exceed 3000 characters when provided.<br/><br/>Optional: Omit to retain current value or provide null to unset",
            "nullable": true,
            "example": "Follow up in two weeks",
            "x-optional": "Omit to retain current value or provide null to unset"
          },
          "nominalCodeId": {
            "type": "integer",
            "description": "The unique identifier of the nominal code associated with this purchase order, if applicable.<br/>Validation: When provided and not null must be a positive integer within 32-bit bounds and must exist.<br/><br/>Optional: Omit to retain current value or provide null to unset",
            "format": "int64",
            "nullable": true,
            "example": 45678,
            "x-optional": "Omit to retain current value or provide null to unset"
          },
          "departmentCodeId": {
            "type": "integer",
            "description": "The unique identifier of the department code associated with this purchase order, if applicable.<br/>Validation: When provided and not null must be a positive integer within 32-bit bounds and must exist.<br/><br/>Optional: Omit to retain current value or provide null to unset",
            "format": "int64",
            "nullable": true,
            "example": 23456,
            "x-optional": "Omit to retain current value or provide null to unset"
          },
          "seriesId": {
            "type": "integer",
            "description": "The unique identifier of the purchase order series. Required if you have PO Series setup, otherwise it must be omitted<br/><br/>Optional: Omit to retain current value",
            "format": "int64",
            "example": 1234,
            "x-optional": "Omit to retain current value"
          },
          "customFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomFieldWriteModel"
            },
            "description": "Custom fields associated with the purchase order.<br/>Omit or use an empty list to retain current values.<br/>            <br/>Validation:<br/>- Cannot be null when provided.<br/>- Each custom field must satisfy its definition rules for the purchase order type.<br/><br/>Optional: Omit to retain current value",
            "x-optional": "Omit to retain current value"
          }
        },
        "additionalProperties": false,
        "description": "Represents a model that holds information about updating a purchase order"
      },
      "UpdateQuoteLineItemModel": {
        "type": "object",
        "properties": {
          "quantity": {
            "type": "number",
            "description": "The quantity of the quote line item<br/><br/>Optional: Omit to retain current value",
            "format": "double",
            "example": 2.5,
            "x-optional": "Omit to retain current value"
          },
          "description": {
            "type": "string",
            "description": "Description of the quote line item<br/><br/>Optional: Omit to retain current value",
            "example": "Replacement filter cartridge",
            "x-optional": "Omit to retain current value"
          },
          "taxId": {
            "type": "integer",
            "description": "Tax identifier (must exist and not be deleted for customer). Nullable<br/><br/>Optional: Omit to retain current value or provide null to unset",
            "format": "int64",
            "nullable": true,
            "example": 1001,
            "x-optional": "Omit to retain current value or provide null to unset"
          },
          "unitCost": {
            "type": "number",
            "description": "Unit cost (nullable, non-negative)<br/><br/>Optional: Omit to retain current value or provide null to unset",
            "format": "double",
            "nullable": true,
            "example": 5.5,
            "x-optional": "Omit to retain current value or provide null to unset"
          },
          "unitSellingPrice": {
            "type": "number",
            "description": "Unit selling price (non-negative)<br/><br/>Optional: Omit to retain current value",
            "format": "double",
            "example": 10.99,
            "x-optional": "Omit to retain current value"
          },
          "nominalCodeId": {
            "type": "integer",
            "description": "Nominal code identifier (must exist and not be deleted for customer)<br/><br/>Optional: Omit to retain current value or provide null to unset",
            "format": "int64",
            "nullable": true,
            "example": 50001,
            "x-optional": "Omit to retain current value or provide null to unset"
          },
          "departmentCodeId": {
            "type": "integer",
            "description": "Department code identifier (must exist and not be deleted for customer)<br/><br/>Optional: Omit to retain current value or provide null to unset",
            "format": "int64",
            "nullable": true,
            "example": 20002,
            "x-optional": "Omit to retain current value or provide null to unset"
          }
        },
        "additionalProperties": false,
        "description": "represents a model for updating a quote line item"
      },
      "UpdateQuoteModel": {
        "type": "object",
        "properties": {
          "deliverySiteContactId": {
            "type": "integer",
            "description": "The unique identifier of the delivery site contact associated with this quote, if applicable<br/><br/>Optional: Omit to retain current value or provide null to unset",
            "format": "int64",
            "nullable": true,
            "example": 56789,
            "x-optional": "Omit to retain current value or provide null to unset"
          },
          "clientNotes": {
            "type": "string",
            "description": "Notes on the quote. Length must not exceed 3000 characters when provided.<br/><br/>Optional: Omit to retain current value or provide null to unset",
            "nullable": true,
            "example": "Please pay within 30 days",
            "x-optional": "Omit to retain current value or provide null to unset"
          },
          "internalNotes": {
            "type": "string",
            "description": "Internal notes not visible to the client. Length must not exceed 3000 characters when provided.<br/><br/>Optional: Omit to retain current value or provide null to unset",
            "nullable": true,
            "example": "Follow up in two weeks",
            "x-optional": "Omit to retain current value or provide null to unset"
          },
          "nominalCodeId": {
            "type": "integer",
            "description": "The unique identifier of the nominal code associated with this quote, if applicable.<br/>Validation: When provided and not null must be a positive integer within 32-bit bounds and must exist.<br/><br/>Optional: Omit to retain current value or provide null to unset",
            "format": "int64",
            "nullable": true,
            "example": 45678,
            "x-optional": "Omit to retain current value or provide null to unset"
          },
          "departmentCodeId": {
            "type": "integer",
            "description": "The unique identifier of the department code associated with this quote, if applicable.<br/>Validation: When provided and not null must be a positive integer within 32-bit bounds and must exist.<br/><br/>Optional: Omit to retain current value or provide null to unset",
            "format": "int64",
            "nullable": true,
            "example": 23456,
            "x-optional": "Omit to retain current value or provide null to unset"
          },
          "daysValidFor": {
            "type": "integer",
            "description": "The number of days the quote is valid for<br/><br/>Validation:<br/>- Must be positive<br/><br/>Optional: Omit to retain current value or provide null to unset",
            "format": "int16",
            "nullable": true,
            "example": 15,
            "x-optional": "Omit to retain current value or provide null to unset"
          },
          "customFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomFieldWriteModel"
            },
            "description": "Custom fields associated with the quote.<br/>Omit or use an empty list to retain current values.<br/>            <br/>Validation:<br/>- Cannot be null when provided.<br/>- Each custom field must satisfy its definition rules for the quote type.<br/><br/>Optional: Omit to retain current value",
            "x-optional": "Omit to retain current value"
          }
        },
        "additionalProperties": false,
        "description": "Represents a model that holds information about updating a quote"
      },
      "UpdateQuoteSentModel": {
        "type": "object",
        "properties": {
          "sentAt": {
            "type": "string",
            "description": "The UTC date and time when the quote was sent, if omitted the current date and time will be used",
            "format": "date-time",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents a model that holds information about marking a quote as sent"
      },
      "UpdateResourceModel": {
        "type": "object",
        "properties": {
          "reference": {
            "type": "string",
            "description": "The internal reference of the resource - should usually be unique<br/><br/>Optional: Omit to retain current value",
            "example": "XYZ12345",
            "x-optional": "Omit to retain current value"
          },
          "name": {
            "type": "string",
            "description": "The full name of the resource<br/><br/>Optional: Omit to retain current value",
            "example": "David Smith",
            "x-optional": "Omit to retain current value"
          },
          "groupId": {
            "type": "integer",
            "description": "The unique identifier of the resource's group<br/><br/>Optional: Omit to retain current value",
            "format": "int64",
            "example": 441122,
            "x-optional": "Omit to retain current value"
          },
          "email": {
            "type": "string",
            "description": "The email address of the resource<br/><br/>Optional: Omit to retain current value",
            "example": "david.smith@example.com",
            "x-optional": "Omit to retain current value"
          },
          "mobile": {
            "type": "string",
            "description": "The mobile telephone number of the resource<br/><br/>Optional: Omit to retain current value",
            "example": "+447812 123112",
            "x-optional": "Omit to retain current value"
          },
          "timeZoneId": {
            "type": "string",
            "description": "The id of the timezone that the resource operates in<br/><br/>Optional: Omit to retain current value",
            "example": "GMT Standard Time",
            "x-optional": "Omit to retain current value"
          },
          "maxTravelDistance": {
            "type": "integer",
            "description": "The maximum number of kilometres the resource will travel from start location (as crow flies)<br/><br/>Optional: Omit to retain current value or provide null to unset",
            "format": "int32",
            "nullable": true,
            "example": 5,
            "x-optional": "Omit to retain current value or provide null to unset"
          },
          "fuelCard": {
            "type": "string",
            "description": "The fuel card number associated to the resource<br/><br/>Optional: Omit to retain current value",
            "example": "01234567891234",
            "x-optional": "Omit to retain current value"
          },
          "businessKey": {
            "type": "string",
            "description": "The number associated to the resources business key<br/><br/>Optional: Omit to retain current value",
            "example": "1231231",
            "x-optional": "Omit to retain current value"
          },
          "privateKey": {
            "type": "string",
            "description": "The number associated to the resources private key<br/><br/>Optional: Omit to retain current value",
            "example": "414221",
            "x-optional": "Omit to retain current value"
          },
          "tachoCard": {
            "type": "string",
            "description": "The tachograph driver card number associated to the resource<br/><br/>Optional: Omit to retain current value",
            "example": "DRI0RDW0000000100",
            "x-optional": "Omit to retain current value"
          },
          "isTracked": {
            "type": "boolean",
            "description": "Indicates whether tracking data should be collected for this resource<br/><br/>Optional: Omit to retain current value",
            "example": true,
            "x-optional": "Omit to retain current value"
          },
          "isTrackedOutOfHours": {
            "type": "boolean",
            "description": "Indicates whether out of working hour tracking data is private<br/><br/>Optional: Omit to retain current value",
            "example": false,
            "x-optional": "Omit to retain current value"
          },
          "workingHours": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/WriteWorkingHourModel"
            },
            "description": "The resources working hours / shifts, expressed relative to `timeZoneId`. If this field is supplied it will overwrite any existing working hours in the resource<br/><br/>Optional: Omit to retain current value",
            "x-optional": "Omit to retain current value"
          },
          "customFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomFieldWriteModel"
            },
            "description": "Custom fields associated with the resource. Omit or use an empty list to retain current values<br/><br/>Optional: Omit to retain current value",
            "x-optional": "Omit to retain current value"
          }
        },
        "additionalProperties": false,
        "description": "Update resource model. At least one optional value must be provided"
      },
      "UpdateSalesOpportunityLineItemModel": {
        "type": "object",
        "properties": {
          "quantity": {
            "type": "number",
            "description": "The quantity of the sales opportunity line item<br/><br/>Optional: Omit to retain current value",
            "format": "double",
            "example": 1,
            "x-optional": "Omit to retain current value"
          },
          "description": {
            "type": "string",
            "description": "Description of the sales opportunity line item<br/><br/>Optional: Omit to retain current value",
            "example": "Replacement filter cartridge",
            "x-optional": "Omit to retain current value"
          },
          "taxId": {
            "type": "integer",
            "description": "Tax identifier (must exist and not be deleted for customer). Nullable<br/><br/>Optional: Omit to retain current value or provide null to unset",
            "format": "int64",
            "nullable": true,
            "example": 1001,
            "x-optional": "Omit to retain current value or provide null to unset"
          },
          "unitCost": {
            "type": "number",
            "description": "Unit cost (nullable, non-negative)<br/><br/>Optional: Omit to retain current value or provide null to unset",
            "format": "double",
            "nullable": true,
            "example": 5.5,
            "x-optional": "Omit to retain current value or provide null to unset"
          },
          "unitSellingPrice": {
            "type": "number",
            "description": "Unit selling price (non-negative)<br/><br/>Optional: Omit to retain current value",
            "format": "double",
            "example": 10.99,
            "x-optional": "Omit to retain current value"
          },
          "nominalCodeId": {
            "type": "integer",
            "description": "Nominal code identifier (must exist and not be deleted for customer)<br/><br/>Optional: Omit to retain current value or provide null to unset",
            "format": "int64",
            "nullable": true,
            "example": 50001,
            "x-optional": "Omit to retain current value or provide null to unset"
          },
          "departmentCodeId": {
            "type": "integer",
            "description": "Department code identifier (must exist and not be deleted for customer)<br/><br/>Optional: Omit to retain current value or provide null to unset",
            "format": "int64",
            "nullable": true,
            "example": 20002,
            "x-optional": "Omit to retain current value or provide null to unset"
          }
        },
        "additionalProperties": false,
        "description": "Represents a model that holds information about updating a sales opportunity line item"
      },
      "UpdateSalesOpportunityModel": {
        "type": "object",
        "properties": {
          "subject": {
            "type": "string",
            "description": "The subject of the sales opportunity<br/><br/>Optional: Omit to retain current value",
            "example": "New office equipment deal",
            "x-optional": "Omit to retain current value"
          },
          "status": {
            "$ref": "#/components/schemas/SalesOpportunityStatus"
          },
          "dueAt": {
            "type": "string",
            "description": "The due date of the sales opportunity<br/><br/>Optional: Omit to retain current value",
            "format": "date-time",
            "example": "2025-06-30T00:00:00.0000000+00:00",
            "x-optional": "Omit to retain current value"
          },
          "stageId": {
            "type": "integer",
            "description": "The unique identifier of the stage associated with the sales opportunity<br/><br/>Optional: Omit to retain current value",
            "format": "int64",
            "example": 3,
            "x-optional": "Omit to retain current value"
          },
          "probabilityId": {
            "type": "integer",
            "description": "The unique identifier of the probability associated with the sales opportunity<br/><br/>Optional: Omit to retain current value",
            "format": "int64",
            "example": 2,
            "x-optional": "Omit to retain current value"
          },
          "notes": {
            "type": "string",
            "description": "Notes associated with the sales opportunity<br/><br/>Optional: Omit to retain current value",
            "example": "Customer is interested in bulk pricing",
            "x-optional": "Omit to retain current value"
          },
          "reference": {
            "type": "string",
            "description": "The reference for the sales opportunity<br/><br/>Optional: Omit to retain current value or provide null to unset",
            "nullable": true,
            "example": "SO-2025-001",
            "x-optional": "Omit to retain current value or provide null to unset"
          }
        },
        "additionalProperties": false,
        "description": "Represents a model that holds information about updating a sales opportunity"
      },
      "UpdateStockDetailsModel": {
        "type": "object",
        "properties": {
          "productCategoryId": {
            "type": "integer",
            "description": "The unique identifier of the product category associated to this stock details<br/><br/>Optional: Omit to retain current value",
            "format": "int64",
            "example": 5514123,
            "x-optional": "Omit to retain current value"
          },
          "model": {
            "type": "string",
            "description": "The model name of the stock details<br/><br/>Optional: Omit to retain current value",
            "example": "F1 Cleaner",
            "x-optional": "Omit to retain current value"
          },
          "make": {
            "type": "string",
            "description": "The manufacturer or brand of the stock<br/><br/>Optional: Omit to retain current value or provide null to unset",
            "nullable": true,
            "example": "DustGone Solutions",
            "x-optional": "Omit to retain current value or provide null to unset"
          },
          "sellingPrice": {
            "type": "number",
            "description": "The selling price of the stock. Cannot set to null if CurrencyCode is set<br/><br/>Optional: Omit to retain current value or provide null to unset",
            "format": "double",
            "nullable": true,
            "example": 19.99,
            "x-optional": "Omit to retain current value or provide null to unset"
          },
          "currencyCode": {
            "$ref": "#/components/schemas/CurrencyWrite"
          },
          "departmentCodeId": {
            "type": "integer",
            "description": "The department code of the stock<br/><br/>Optional: Omit to retain current value or provide null to unset",
            "format": "int64",
            "nullable": true,
            "example": 123,
            "x-optional": "Omit to retain current value or provide null to unset"
          },
          "nominalCodeId": {
            "type": "integer",
            "description": "The nominal code associated with the stock for accounting purposes<br/><br/>Optional: Omit to retain current value or provide null to unset",
            "format": "int64",
            "nullable": true,
            "example": 1234,
            "x-optional": "Omit to retain current value or provide null to unset"
          },
          "notes": {
            "type": "string",
            "description": "Notes associated with the stock<br/><br/>Optional: Omit to retain current value or provide null to unset",
            "nullable": true,
            "example": "Great for cleaning windows",
            "x-optional": "Omit to retain current value or provide null to unset"
          },
          "modelNumber": {
            "type": "string",
            "description": "The unique number assigned by the manufacturer to identify the model of the stock<br/><br/>Optional: Omit to retain current value or provide null to unset",
            "nullable": true,
            "example": "F1-00010",
            "x-optional": "Omit to retain current value or provide null to unset"
          },
          "stockCode": {
            "type": "string",
            "description": "The unique number or barcode assigned to each individual stock for identification and tracking<br/><br/>Optional: Omit to retain current value or provide null to unset",
            "nullable": true,
            "example": "B10",
            "x-optional": "Omit to retain current value or provide null to unset"
          },
          "batchNumber": {
            "type": "string",
            "description": "The batch number of the stock<br/><br/>Optional: Omit to retain current value or provide null to unset",
            "nullable": true,
            "example": "S8",
            "x-optional": "Omit to retain current value or provide null to unset"
          },
          "size": {
            "type": "number",
            "description": "The dimensions or volume of the stock (m3)<br/><br/>Optional: Omit to retain current value or provide null to unset",
            "format": "double",
            "nullable": true,
            "example": 199,
            "x-optional": "Omit to retain current value or provide null to unset"
          },
          "weight": {
            "type": "number",
            "description": "The weight of the stock (kg)<br/><br/>Optional: Omit to retain current value or provide null to unset",
            "format": "double",
            "nullable": true,
            "example": 6.3,
            "x-optional": "Omit to retain current value or provide null to unset"
          },
          "taxId": {
            "type": "integer",
            "description": "The identifier of the tax (vat) associated with the stock.  If null, the user's default tax rate will be applied<br/><br/>Optional: Omit to retain current value or provide null to unset",
            "format": "int64",
            "nullable": true,
            "example": 1234,
            "x-optional": "Omit to retain current value or provide null to unset"
          }
        },
        "additionalProperties": false,
        "description": "Update stock details model"
      },
      "UpdateStockItemModel": {
        "type": "object",
        "properties": {
          "quantity": {
            "type": "number",
            "description": "The quantity of the stock items. Must be omitted or null if the stock item is not consumable<br/><br/>Optional: Omit to retain current value or provide null to unset",
            "format": "double",
            "nullable": true,
            "example": 5.3,
            "x-optional": "Omit to retain current value or provide null to unset"
          },
          "locationContactId": {
            "type": "integer",
            "description": "The ID of the contact associated with the stock item, must be omitted or null if the stock item is located at a vehicle or another stock item<br/><br/>Optional: Omit to retain current value or provide null to unset",
            "format": "int64",
            "nullable": true,
            "example": 5514123,
            "x-optional": "Omit to retain current value or provide null to unset"
          },
          "locationVehicleId": {
            "type": "integer",
            "description": "The ID of the vehicle associated with the stock item, must be omitted or null if the stock item is located at a contact or another stock item<br/><br/>Optional: Omit to retain current value or provide null to unset",
            "format": "int64",
            "nullable": true,
            "example": 5514123,
            "x-optional": "Omit to retain current value or provide null to unset"
          },
          "locationStockItemId": {
            "type": "integer",
            "description": "The ID of the stock item this stock item is allocated to, must be omitted or null if the stock item is located at a contact or a vehicle<br/><br/>Optional: Omit to retain current value or provide null to unset",
            "format": "int64",
            "nullable": true,
            "example": 5514123,
            "x-optional": "Omit to retain current value or provide null to unset"
          },
          "soldAt": {
            "type": "string",
            "description": "The date when the stock item was sold<br/><br/>Optional: Omit to retain current value or provide null to unset",
            "format": "date-time",
            "nullable": true,
            "example": "2024-08-29T12:30:45.0000000+00:00",
            "x-optional": "Omit to retain current value or provide null to unset"
          },
          "notes": {
            "type": "string",
            "description": "Notes on the stock item, must be null or omitted if the stock item is consumable<br/><br/>Optional: Omit to retain current value or provide null to unset",
            "nullable": true,
            "example": "Should be kept in warehouse",
            "x-optional": "Omit to retain current value or provide null to unset"
          },
          "serialNumber": {
            "type": "string",
            "description": "The unique number or barcode assigned to each individual stock item for identification and tracking. Required if the stock item is non consumable, otherwise must be null or omitted. Cannot contain preceding or trailing whitespace<br/><br/>Optional: Omit to retain current value or provide null to unset",
            "nullable": true,
            "example": "AT-25805",
            "x-optional": "Omit to retain current value or provide null to unset"
          },
          "altSerialNumber": {
            "type": "string",
            "description": "The alternative serial number of the stock item. Must be omitted or null if the stock item is consumable<br/><br/>Optional: Omit to retain current value or provide null to unset",
            "nullable": true,
            "example": "PA-09842",
            "x-optional": "Omit to retain current value or provide null to unset"
          },
          "supplierSerialNumber": {
            "type": "string",
            "description": "The unique number used by the supplier for the stock item. Must be omitted or null if the stock item is consumable<br/><br/>Optional: Omit to retain current value or provide null to unset",
            "nullable": true,
            "example": "TW-015",
            "x-optional": "Omit to retain current value or provide null to unset"
          },
          "customerSerialNumber": {
            "type": "string",
            "description": "The unique number used by the customer for the stock item. Must be omitted or null if the stock item is consumable<br/><br/>Optional: Omit to retain current value or provide null to unset",
            "nullable": true,
            "example": "LM-214750",
            "x-optional": "Omit to retain current value or provide null to unset"
          },
          "isEquipment": {
            "type": "boolean",
            "description": "Indicates whether the stock item is equipment or not<br/><br/>Optional: Omit to retain current value",
            "example": true,
            "x-optional": "Omit to retain current value"
          },
          "condition": {
            "$ref": "#/components/schemas/StockItemCondition"
          },
          "usage": {
            "type": "number",
            "description": "The usage of the stock item. For items which are chargeable on an hourly, daily or weekly rate. Must be null or omitted if the stock item is consumable<br/><br/>Optional: Omit to retain current value or provide null to unset",
            "format": "double",
            "nullable": true,
            "example": 6.15,
            "x-optional": "Omit to retain current value or provide null to unset"
          },
          "customFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomFieldWriteModel"
            },
            "description": "The custom fields associated with the stock item<br/><br/>Optional: Omit to retain current value",
            "x-optional": "Omit to retain current value"
          }
        },
        "additionalProperties": false,
        "description": "Represents a model for updating a stock item"
      },
      "UpdateStockSupplierModel": {
        "type": "object",
        "properties": {
          "contactId": {
            "type": "integer",
            "description": "The identifier of the contact associated with the stock supplier. It is used for communication and relationship management with the supplier<br/><br/>Optional: Omit to retain current value",
            "format": "int64",
            "example": 12345,
            "x-optional": "Omit to retain current value"
          },
          "warrantyPeriod": {
            "type": "integer",
            "description": "The warranty period refers to the duration (in months) for which the stock supplier guarantees the inventory's quality and performance<br/><br/>Optional: Omit to retain current value or provide null to unset",
            "format": "int8",
            "nullable": true,
            "example": 12,
            "x-optional": "Omit to retain current value or provide null to unset"
          },
          "cost": {
            "type": "number",
            "description": "The cost refers to the amount charged by the stock supplier for each unit of inventory. If set to null, CurrencyCode is also changed to null. If CurrencyCode is omitted from request and it's previous value is null, the default currency is used<br/><br/>Optional: Omit to retain current value or provide null to unset",
            "format": "double",
            "nullable": true,
            "example": 12.99,
            "x-optional": "Omit to retain current value or provide null to unset"
          },
          "currencyCode": {
            "$ref": "#/components/schemas/CurrencyWrite"
          }
        },
        "additionalProperties": false,
        "description": "Represents a model that holds information to update a stock supplier"
      },
      "UpdateUserModel": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "The name associated with the user<br/><br/>Optional: Omit to retain current value",
            "example": "John Doe",
            "x-optional": "Omit to retain current value"
          },
          "email": {
            "type": "string",
            "description": "The email associated with the user<br/><br/>Optional: Omit to retain current value",
            "example": "email@example.com",
            "x-optional": "Omit to retain current value"
          },
          "roleId": {
            "type": "integer",
            "description": "The role ID associated with the user<br/><br/>Optional: Omit to retain current value",
            "format": "int64",
            "example": 12345,
            "x-optional": "Omit to retain current value"
          },
          "defaultJobCategoryId": {
            "type": "integer",
            "description": "The default job category ID associated with the user<br/><br/>Optional: Omit to retain current value or provide null to unset",
            "format": "int64",
            "nullable": true,
            "x-optional": "Omit to retain current value or provide null to unset"
          },
          "position": {
            "type": "string",
            "description": "The job position or title associated with the user<br/><br/>Optional: Omit to retain current value or provide null to unset",
            "nullable": true,
            "example": "Engineer",
            "x-optional": "Omit to retain current value or provide null to unset"
          },
          "type": {
            "$ref": "#/components/schemas/LicenceTypeWrite"
          },
          "groupId": {
            "type": "integer",
            "description": "The group identifier associated with the user<br/><br/>Optional: Omit to retain current value or provide null to unset",
            "format": "int64",
            "nullable": true,
            "example": 67890,
            "x-optional": "Omit to retain current value or provide null to unset"
          },
          "mobile": {
            "type": "string",
            "description": "The mobile phone number associated with the user. The phone number has to start with a + sign followed by the country code, followed by the number without the first zero<br/><br/>Optional: Omit to retain current value or provide null to unset",
            "nullable": true,
            "example": "+447700900123",
            "x-optional": "Omit to retain current value or provide null to unset"
          },
          "customFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomFieldWriteModel"
            },
            "description": "Custom fields associated with the user<br/><br/>Optional: Omit to retain current value",
            "x-optional": "Omit to retain current value"
          }
        },
        "additionalProperties": false,
        "description": "Represents a model for updating a user"
      },
      "UpdateVehicleModel": {
        "type": "object",
        "properties": {
          "groupId": {
            "type": "integer",
            "description": "The unique identifier of the group that the vehicle belongs to<br/><br/>Optional: Omit to retain current value",
            "format": "int64",
            "example": 7927,
            "x-optional": "Omit to retain current value"
          },
          "vehicleType": {
            "$ref": "#/components/schemas/VehicleType"
          },
          "fixedResourceId": {
            "type": "integer",
            "description": "The unique identifier of the resource who this vehicle is assigned to<br/><br/>Optional: Omit to retain current value or provide null to unset",
            "format": "int64",
            "nullable": true,
            "example": 110841,
            "x-optional": "Omit to retain current value or provide null to unset"
          },
          "reference": {
            "type": "string",
            "description": "The internal reference of the vehicle - should usually be unique<br/><br/>Optional: Omit to retain current value or provide null to unset",
            "nullable": true,
            "example": "ABC5514123",
            "x-optional": "Omit to retain current value or provide null to unset"
          },
          "registration": {
            "type": "string",
            "description": "The registration number of the vehicle<br/><br/>Optional: Omit to retain current value",
            "example": "BC24 BIG",
            "x-optional": "Omit to retain current value"
          },
          "make": {
            "type": "string",
            "description": "The manufacturer of the vehicle<br/><br/>Optional: Omit to retain current value or provide null to unset",
            "nullable": true,
            "example": "Ford",
            "x-optional": "Omit to retain current value or provide null to unset"
          },
          "model": {
            "type": "string",
            "description": "The model of the vehicle<br/><br/>Optional: Omit to retain current value or provide null to unset",
            "nullable": true,
            "example": "Transit",
            "x-optional": "Omit to retain current value or provide null to unset"
          },
          "registrationYear": {
            "type": "integer",
            "description": "The year that the vehicle was first registered as new<br/><br/>Optional: Omit to retain current value or provide null to unset",
            "format": "int32",
            "nullable": true,
            "example": 2012,
            "x-optional": "Omit to retain current value or provide null to unset"
          },
          "isSchedulable": {
            "type": "boolean",
            "description": "Indicates whether this vehicle can be scheduled jobs<br/><br/>Optional: Omit to retain current value",
            "example": true,
            "x-optional": "Omit to retain current value"
          },
          "idlingFuelConsumptionRate": {
            "type": "number",
            "description": "The litre fuel consumption of the vehicle used when idling per minute<br/><br/>Optional: Omit to retain current value or provide null to unset",
            "format": "double",
            "nullable": true,
            "example": 0.1,
            "x-optional": "Omit to retain current value or provide null to unset"
          },
          "costPerKm": {
            "type": "number",
            "description": "The running cost of the vehicle per kilometre, expressed in `costPerKmCurrencyCode`<br/><br/>Optional: Omit to retain current value or provide null to unset",
            "format": "double",
            "nullable": true,
            "example": 0.25,
            "x-optional": "Omit to retain current value or provide null to unset"
          },
          "costPerDay": {
            "type": "number",
            "description": "The running cost of the vehicle per day, expressed in `costPerDayCurrencyCode`<br/><br/>Optional: Omit to retain current value or provide null to unset",
            "format": "double",
            "nullable": true,
            "example": 0.25,
            "x-optional": "Omit to retain current value or provide null to unset"
          },
          "costPerKmCurrencyCode": {
            "$ref": "#/components/schemas/CurrencyWrite"
          },
          "costPerDayCurrencyCode": {
            "$ref": "#/components/schemas/CurrencyWrite"
          },
          "odometerUnit": {
            "$ref": "#/components/schemas/OdometerUnit"
          },
          "odometer": {
            "type": "integer",
            "description": "The latest reading from the vehicles odometer. If provided with a value, the new odometer reading will be recorded even if the value hasn't changed<br/><br/>Optional: Omit to retain current value",
            "format": "int32",
            "example": 51023,
            "x-optional": "Omit to retain current value"
          },
          "roadSafetyExpiresAt": {
            "type": "string",
            "description": "The date of when the vehicles road safety test expires (eg. UK MOT test)<br/><br/>Optional: Omit to retain current value or provide null to unset",
            "format": "date",
            "nullable": true,
            "example": "2022-11-29",
            "x-optional": "Omit to retain current value or provide null to unset"
          },
          "roadTaxExpiresAt": {
            "type": "string",
            "description": "The date of when the vehicles road tax expires<br/><br/>Optional: Omit to retain current value or provide null to unset",
            "format": "date",
            "nullable": true,
            "example": "2022-11-29",
            "x-optional": "Omit to retain current value or provide null to unset"
          },
          "serviceDueAt": {
            "type": "string",
            "description": "The date of when the vehicles next service is due<br/><br/>Optional: Omit to retain current value or provide null to unset",
            "format": "date",
            "nullable": true,
            "example": "2022-11-29",
            "x-optional": "Omit to retain current value or provide null to unset"
          },
          "insuranceDueAt": {
            "type": "string",
            "description": "The date of when the vehicles insurance is due for renewal<br/><br/>Optional: Omit to retain current value or provide null to unset",
            "format": "date",
            "nullable": true,
            "example": "2022-11-29",
            "x-optional": "Omit to retain current value or provide null to unset"
          },
          "co2EmissionsGramsPerKm": {
            "type": "integer",
            "description": "The vehicle co2 emission rate as (grams per km). Mutually exclusive with Co2EmissionsKilogramsPerLitre. Setting this property with a non-null value will nullify the Co2EmissionsKilogramsPerLitre property, if previously set. To retain the current value, omit both Co2EmissionsGramsPerKm and Co2EmissionsKilogramsPerLitre<br/><br/>Optional: Omit to retain current value or provide null to unset",
            "format": "int32",
            "nullable": true,
            "example": 5,
            "x-optional": "Omit to retain current value or provide null to unset"
          },
          "co2EmissionsKilogramsPerLitre": {
            "type": "number",
            "description": "The vehicle co2 emission rate as (kilograms per litre). Mutually exclusive with Co2EmissionsGramsPerKm. Setting this property with a non-null value will nullify the Co2EmissionsGramsPerKm property, if previously set. To retain the current value, omit both Co2EmissionsGramsPerKm and Co2EmissionsKilogramsPerLitre<br/><br/>Optional: Omit to retain current value or provide null to unset",
            "format": "double",
            "nullable": true,
            "example": 5.5,
            "x-optional": "Omit to retain current value or provide null to unset"
          },
          "customFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomFieldWriteModel"
            },
            "description": "Custom fields associated with the vehicle. Omit or use an empty list to retain current values<br/><br/>Optional: Omit to retain current value",
            "x-optional": "Omit to retain current value"
          }
        },
        "additionalProperties": false,
        "description": "Model representing the data needed to update a vehicle"
      },
      "UserSortOptions": {
        "enum": [
          "emailAddress"
        ],
        "type": "string",
        "description": "Represents the fields that can be used to sort users<p>Possible values:</p><ul><li><b>emailAddress</b>: The email address of the user</li></ul>",
        "example": "emailAddress"
      },
      "ValidationProblemDetails": {
        "type": "object",
        "properties": {
          "errors": {
            "type": "object",
            "additionalProperties": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          "type": {
            "type": "string",
            "description": "A URI reference [RFC3986] that identifies the problem type",
            "nullable": true,
            "example": "https://example.com/probs/out-of-credit"
          },
          "title": {
            "type": "string",
            "description": "A short, human-readable summary of the problem type",
            "nullable": true,
            "example": "You do not have enough credit"
          },
          "status": {
            "type": "integer",
            "description": "The HTTP status code([RFC7231], Section 6) generated by the origin server for this occurrence of the problem",
            "format": "int32",
            "nullable": true,
            "example": 403
          },
          "detail": {
            "type": "string",
            "description": "A human-readable explanation specific to this occurrence of the problem",
            "nullable": true,
            "example": "Your current balance is 30, but that costs 50"
          },
          "instance": {
            "type": "string",
            "description": "A URI reference that identifies the specific occurrence of the problem",
            "nullable": true,
            "example": "/account/12345/msgs/abc"
          }
        },
        "additionalProperties": { }
      },
      "VatCodeSortOptions": {
        "enum": [
          "code",
          "description"
        ],
        "type": "string",
        "description": "Represents the fields that can be used to sort vat codes<p>Possible values:</p><ul><li><b>code</b>: The code</li><li><b>description</b>: The description</li></ul>",
        "example": "code"
      },
      "VehicleSortOptions": {
        "enum": [
          "createdAt",
          "groupName",
          "registration"
        ],
        "type": "string",
        "description": "Represents the sort options for vehicles<p>Possible values:</p><ul><li><b>createdAt</b>: Sort by created at date</li><li><b>groupName</b>: Sort by vehicle group</li><li><b>registration</b>: Sort by registration</li></ul>",
        "example": "createdAt"
      },
      "VehicleType": {
        "enum": [
          "motorcycle",
          "car",
          "trailer",
          "bus",
          "emergency",
          "goodsLess7_5T",
          "goodsMore7_5T",
          "busLess12"
        ],
        "type": "string",
        "description": "Enumeration representing different types of vehicles<p>Possible values:</p><ul><li><b>motorcycle</b>: Motorcycle vehicle type</li><li><b>car</b>: Car vehicle type</li><li><b>trailer</b>: Trailer vehicle type</li><li><b>bus</b>: Bus vehicle type</li><li><b>emergency</b>: Emergency vehicle type</li><li><b>goodsLess7_5T</b>: Goods vehicle type with weight less than 7.5 tons</li><li><b>goodsMore7_5T</b>: Goods vehicle type with weight more than or equal to 7.5 tons</li><li><b>busLess12</b>: Bus vehicle type with less than 12 seats</li></ul>",
        "example": "motorcycle"
      },
      "WorksheetAnswerAppLaunch": {
        "type": "object",
        "allOf": [
          {
            "$ref": "#/components/schemas/WorksheetAnswerGeneric"
          }
        ],
        "properties": {
          "stringValue": {
            "type": "string",
            "description": "The app launch value",
            "nullable": true,
            "example": "/app.exe"
          }
        },
        "additionalProperties": false,
        "description": "Model wrapper for the app launch answer given to a worksheet question"
      },
      "WorksheetAnswerBarcode": {
        "type": "object",
        "allOf": [
          {
            "$ref": "#/components/schemas/WorksheetAnswerGeneric"
          }
        ],
        "properties": {
          "stringValue": {
            "type": "string",
            "description": "Represents the barcode answer to a worksheet question",
            "nullable": true,
            "example": "JK-001"
          }
        },
        "additionalProperties": false,
        "description": "Model wrapper for the barcode answer given to a worksheet question"
      },
      "WorksheetAnswerBoolean": {
        "type": "object",
        "allOf": [
          {
            "$ref": "#/components/schemas/WorksheetAnswerGeneric"
          }
        ],
        "properties": {
          "booleanValue": {
            "type": "boolean",
            "description": "Represents the boolean (yes/no) answer to a worksheet question",
            "nullable": true,
            "example": true
          }
        },
        "additionalProperties": false,
        "description": "Model wrapper for the boolean answer given to a worksheet question"
      },
      "WorksheetAnswerCost": {
        "type": "object",
        "allOf": [
          {
            "$ref": "#/components/schemas/WorksheetAnswerGeneric"
          }
        ],
        "properties": {
          "name": {
            "type": "string",
            "description": "Represents the name of the costed item",
            "nullable": true,
            "example": "Item 1"
          },
          "quantity": {
            "type": "number",
            "description": "Represents the quantity of the costed item",
            "format": "double",
            "nullable": true,
            "example": 5
          },
          "unitSellingPrice": {
            "type": "number",
            "description": "Represents the selling price per unit of the costed item",
            "format": "double",
            "nullable": true,
            "example": 5.99
          },
          "taxPercentage": {
            "type": "number",
            "description": "Represents the percentage tax applied to the costed item",
            "format": "double",
            "nullable": true,
            "example": 20
          },
          "grossSellingPrice": {
            "type": "number",
            "description": "Represents the gross selling price of the costed item",
            "format": "double",
            "nullable": true,
            "example": 29.95
          }
        },
        "additionalProperties": false,
        "description": "Model wrapper for the cost type answer given to a worksheet question"
      },
      "WorksheetAnswerDate": {
        "type": "object",
        "allOf": [
          {
            "$ref": "#/components/schemas/WorksheetAnswerGeneric"
          }
        ],
        "properties": {
          "date": {
            "type": "string",
            "description": "The date defined in the worksheet question in YYYY-MM-DD format",
            "format": "date",
            "nullable": true,
            "example": "2025-01-02"
          },
          "time": {
            "type": "string",
            "description": "The time defined in the worksheet question in HH:MM format",
            "format": "time",
            "nullable": true,
            "example": "12:34"
          }
        },
        "additionalProperties": false,
        "description": "Model wrapper for the date answer given to a worksheet question"
      },
      "WorksheetAnswerDecimal": {
        "type": "object",
        "allOf": [
          {
            "$ref": "#/components/schemas/WorksheetAnswerGeneric"
          }
        ],
        "properties": {
          "decimalValue": {
            "type": "number",
            "description": "Represents the decimal answer to a worksheet question",
            "format": "double",
            "nullable": true,
            "example": 3.14
          }
        },
        "additionalProperties": false,
        "description": "Model wrapper for the decimal answer given to a worksheet question"
      },
      "WorksheetAnswerEntityType": {
        "enum": [
          "job",
          "contactNote",
          "stockItem",
          "activityLog",
          "activitySign",
          "assetCheck"
        ],
        "type": "string",
        "description": "Enumeration representing different types of worksheet answers<p>Possible values:</p><ul><li><b>job</b>: Answer relating to a job entity</li><li><b>contactNote</b>: Answer relating to a contact note entity</li><li><b>stockItem</b>: Answer relating to a stock item entity</li><li><b>activityLog</b>: Answer relating to an activity log entity</li><li><b>activitySign</b>: Answer relating to an activity sign entity</li><li><b>assetCheck</b>: Answer relating to an asset check entity</li></ul>",
        "example": "job"
      },
      "WorksheetAnswerFile": {
        "type": "object",
        "allOf": [
          {
            "$ref": "#/components/schemas/WorksheetAnswerGeneric"
          }
        ],
        "properties": {
          "id": {
            "type": "integer",
            "description": "The Id of the file",
            "format": "int64",
            "nullable": true,
            "example": 100
          },
          "name": {
            "type": "string",
            "description": "The name of the file",
            "nullable": true,
            "example": "Photo"
          },
          "date": {
            "type": "string",
            "description": "The date the file was uploaded",
            "format": "date-time",
            "nullable": true,
            "example": "2025-01-01T12:20:00.0000000+00:00"
          }
        },
        "additionalProperties": false,
        "description": "Model wrapper for the file answer given to a worksheet question"
      },
      "WorksheetAnswerGeneric": {
        "type": "object",
        "additionalProperties": false,
        "description": "Base model wrapper for the answer given to a worksheet question or an empty answer"
      },
      "WorksheetAnswerInteger": {
        "type": "object",
        "allOf": [
          {
            "$ref": "#/components/schemas/WorksheetAnswerGeneric"
          }
        ],
        "properties": {
          "integerValue": {
            "type": "integer",
            "description": "Represents the integer answer to a worksheet question",
            "format": "int32",
            "nullable": true,
            "example": 44
          }
        },
        "additionalProperties": false,
        "description": "Model wrapper for the integer answer given to a worksheet question"
      },
      "WorksheetAnswerList": {
        "type": "object",
        "allOf": [
          {
            "$ref": "#/components/schemas/WorksheetAnswerGeneric"
          }
        ],
        "properties": {
          "selectedItems": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Represents the answer to a collection of items worksheet question",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Model wrapper for the list answer given to a worksheet question"
      },
      "WorksheetAnswerOCR": {
        "type": "object",
        "allOf": [
          {
            "$ref": "#/components/schemas/WorksheetAnswerGeneric"
          }
        ],
        "properties": {
          "stringValue": {
            "type": "string",
            "description": "The OCR value",
            "nullable": true,
            "example": "KM12 KFT"
          }
        },
        "additionalProperties": false,
        "description": "Model wrapper for the ocr answer given to a worksheet question"
      },
      "WorksheetAnswerPhoto": {
        "type": "object",
        "allOf": [
          {
            "$ref": "#/components/schemas/WorksheetAnswerGeneric"
          }
        ],
        "properties": {
          "attachmentId": {
            "type": "integer",
            "description": "Represents the photo answer attachment id to a worksheet question",
            "format": "int64",
            "nullable": true,
            "example": 123456789
          }
        },
        "additionalProperties": false,
        "description": "Model wrapper for the photo answer given to a worksheet question"
      },
      "WorksheetAnswerSignature": {
        "type": "object",
        "allOf": [
          {
            "$ref": "#/components/schemas/WorksheetAnswerGeneric"
          }
        ],
        "properties": {
          "name": {
            "type": "string",
            "description": "The signature name defined in the worksheet question",
            "nullable": true,
            "example": "John Doe"
          },
          "image": {
            "type": "string",
            "description": "The base64 encoded image of the signature",
            "nullable": true,
            "example": "iVBORw0KGgoAAAANSUhEUgAAAZAAAABkC..."
          }
        },
        "additionalProperties": false,
        "description": "Model wrapper for the signature answer given to a worksheet question"
      },
      "WorksheetAnswerStatement": {
        "type": "object",
        "allOf": [
          {
            "$ref": "#/components/schemas/WorksheetAnswerGeneric"
          }
        ],
        "properties": {
          "statement": {
            "type": "string",
            "description": "The statement defined in the worksheet question",
            "nullable": true,
            "example": "What is the capital of France?"
          },
          "outcome": {
            "type": "string",
            "description": "The outcome of the given statement associated with the question",
            "nullable": true,
            "example": "Paris"
          }
        },
        "additionalProperties": false,
        "description": "Model wrapper for the statement answer given to a worksheet question"
      },
      "WorksheetAnswerText": {
        "type": "object",
        "allOf": [
          {
            "$ref": "#/components/schemas/WorksheetAnswerGeneric"
          }
        ],
        "properties": {
          "stringValue": {
            "type": "string",
            "description": "Represents the text answer to a worksheet question",
            "nullable": true,
            "example": "Text"
          }
        },
        "additionalProperties": false,
        "description": "Model wrapper for the text answer given to a worksheet question"
      },
      "WorksheetAnswerTime": {
        "type": "object",
        "allOf": [
          {
            "$ref": "#/components/schemas/WorksheetAnswerGeneric"
          }
        ],
        "properties": {
          "time": {
            "type": "string",
            "description": "The time defined in the worksheet answer",
            "format": "time",
            "nullable": true,
            "example": "10:25"
          }
        },
        "additionalProperties": false,
        "description": "Model wrapper for the time answer given to a worksheet question"
      },
      "WorksheetGroupSortOptions": {
        "enum": [
          "name"
        ],
        "type": "string",
        "description": "Represents the fields that can be used to sort worksheet groups<p>Possible values:</p><ul><li><b>name</b>: The name of the worksheet group</li></ul>",
        "example": "name"
      },
      "WorksheetQuestionTypeRead": {
        "enum": [
          "boolean",
          "numberInteger",
          "numberDecimal",
          "text",
          "listMulti",
          "signature",
          "statement",
          "cost",
          "date",
          "photo",
          "time",
          "listSingle",
          "barcode",
          "appLaunch",
          "listIconSingle",
          "listIconMulti",
          "ocr",
          "file",
          "Unknown"
        ],
        "type": "string",
        "description": "Enumeration representing different types of worksheet questions<p>Possible values:</p><ul><li><b>boolean</b>: Used for Yes/No worksheet Question types</li><li><b>numberInteger</b>: Used for Whole Number worksheet question types which allow the user to provide a whole number without a decimal place</li><li><b>numberDecimal</b>: Used for Decimal worksheet question types. Responses contain a number with a decimal place</li><li><b>text</b>: Used for Text worksheet question types</li><li><b>listMulti</b>: Used for worksheet type of List when the multiple answer setting is set to yes. Responses contain multiple items from a list defined on the worksheet question</li><li><b>signature</b>: Used for Signature worksheet question types. When used, a name and signature box will be presented for the user to complete</li><li><b>statement</b>: Used for statement worksheet question types. This presents a text-based statement which may be presented to the resource or the customer</li><li><b>cost</b>: Used for Cost question types. This allow a response including a description and an amount</li><li><b>date</b>: Used for worksheet questions with a type of Date</li><li><b>photo</b>: Used for photo worksheet question types. It requires the user to upload a photo or multiple photos</li><li><b>time</b>: Used for worksheet questions with the type of Time in the format of HH:MM</li><li><b>listSingle</b>: Used for worksheet type of List when the multiple answer setting is set to no. Responses contain multiple items from a list defined on the worksheet question</li><li><b>barcode</b>: Used for barcode worksheet questions. This stores the text contained within a barcode and may be scanned in via a device</li><li><b>appLaunch</b>: Used for worksheet questions with a type of Launch App. When used, a separate application specified in the worksheet question will be launched</li><li><b>listIconSingle</b>: Used for worksheet question type of Icon where the multiple answer setting is set to no. Responses contain multiple names or icons defined on the worksheet question</li><li><b>listIconMulti</b>: Used for worksheet question type of Icon where the multiple answer setting is set to yes. Responses contain multiple names or icons defined on the worksheet question</li><li><b>ocr</b>: Used for worksheet question with a type of OCR</li><li><b>file</b>: Used for worksheet question type of View File</li><li><b>unknown</b>: Represents an unknown worksheet question type</li></ul>",
        "example": "boolean"
      },
      "WorksheetType": {
        "enum": [
          "worksheet",
          "workflow",
          "worksheetActivity",
          "worksheetDefect"
        ],
        "type": "string",
        "description": "Enumeration representing different types of worksheets<p>Possible values:</p><ul><li><b>worksheet</b>: Data collected through the digital questionnaires associated with a job</li><li><b>workflow</b>: Data collected through the digital questionnaires associated with a note</li><li><b>worksheetActivity</b>: Data collected through the digital questionnaires associated with the timesheet acitivities</li><li><b>worksheetDefect</b>: The records of inspections performed on a vehicle using the vehicle check worksheets. Note that legacy ticksheets are not included in this</li></ul>",
        "example": "worksheet"
      },
      "WriteWorkingHourModel": {
        "required": [
          "dayOfWeek",
          "start",
          "stop"
        ],
        "type": "object",
        "properties": {
          "dayOfWeek": {
            "$ref": "#/components/schemas/DayOfWeek"
          },
          "start": {
            "type": "string",
            "description": "The 24H format time of day that the resource starts their shift (hh:mm)",
            "format": "time",
            "example": "09:00"
          },
          "stop": {
            "type": "string",
            "description": "The 24H format time of day that the resource stops their shift (hh:mm)",
            "format": "time",
            "example": "17:00"
          },
          "startAtContactId": {
            "type": "integer",
            "description": "The unique identifier of the contact (location) that the resource starts this shift from",
            "format": "int64",
            "nullable": true,
            "example": 1241551
          }
        },
        "additionalProperties": false,
        "description": "Model representing the data needed to create a working hour for a resource"
      },
      "WriteWorksheetAnswer": {
        "type": "object",
        "additionalProperties": false,
        "description": "Dynamic model for writing a worksheet answer"
      },
      "WriteWorksheetAnswerBoolean": {
        "required": [
          "booleanValue"
        ],
        "type": "object",
        "allOf": [
          {
            "$ref": "#/components/schemas/WriteWorksheetAnswer"
          }
        ],
        "properties": {
          "booleanValue": {
            "type": "boolean",
            "description": "Represents the boolean (yes/no) answer to a worksheet question",
            "example": true
          }
        },
        "additionalProperties": false,
        "description": "Model for writing a boolean answer to a worksheet question"
      },
      "WriteWorksheetAnswerCost": {
        "required": [
          "name",
          "quantity",
          "taxPercentage",
          "unitSellingPrice"
        ],
        "type": "object",
        "allOf": [
          {
            "$ref": "#/components/schemas/WriteWorksheetAnswer"
          }
        ],
        "properties": {
          "name": {
            "type": "string",
            "description": "Dynamic answer associated to the cost question",
            "example": "This is my cost"
          },
          "quantity": {
            "minimum": 0,
            "type": "number",
            "description": "Represents the quantity associated to the cost",
            "format": "double",
            "example": 12.5
          },
          "unitSellingPrice": {
            "minimum": 0,
            "type": "number",
            "description": "The unit selling price associated to the cost",
            "format": "double",
            "example": 10.1
          },
          "taxPercentage": {
            "minimum": 0,
            "type": "number",
            "description": "The tax percentage associated to the cost",
            "format": "double",
            "example": 20
          }
        },
        "additionalProperties": false,
        "description": "Model for writing a cost answer to a worksheet question"
      },
      "WriteWorksheetAnswerDate": {
        "required": [
          "date"
        ],
        "type": "object",
        "allOf": [
          {
            "$ref": "#/components/schemas/WriteWorksheetAnswer"
          }
        ],
        "properties": {
          "date": {
            "type": "string",
            "description": "Represents the date answer to a worksheet question",
            "format": "date",
            "example": "2025-01-31"
          },
          "time": {
            "type": "string",
            "description": "Represents the time answer to a worksheet question",
            "format": "time",
            "nullable": true,
            "example": "01:23"
          }
        },
        "additionalProperties": false,
        "description": "Model for writing a date answer to a worksheet question"
      },
      "WriteWorksheetAnswerDecimal": {
        "required": [
          "decimalValue"
        ],
        "type": "object",
        "allOf": [
          {
            "$ref": "#/components/schemas/WriteWorksheetAnswer"
          }
        ],
        "properties": {
          "decimalValue": {
            "type": "number",
            "description": "Represents the decimal answer to a worksheet question",
            "format": "double",
            "example": 3.14
          }
        },
        "additionalProperties": false,
        "description": "Model for writing a decimal answer to a worksheet question"
      },
      "WriteWorksheetAnswerInteger": {
        "required": [
          "integerValue"
        ],
        "type": "object",
        "allOf": [
          {
            "$ref": "#/components/schemas/WriteWorksheetAnswer"
          }
        ],
        "properties": {
          "integerValue": {
            "type": "integer",
            "description": "Represents the integer answer to a worksheet question",
            "format": "int64",
            "example": 44
          }
        },
        "additionalProperties": false,
        "description": "Model for writing a integer answer to a worksheet question"
      },
      "WriteWorksheetAnswerListIconMulti": {
        "required": [
          "selectedItems"
        ],
        "type": "object",
        "allOf": [
          {
            "$ref": "#/components/schemas/WriteWorksheetAnswer"
          }
        ],
        "properties": {
          "selectedItems": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Represents selected items from a list icon multi answer to a worksheet question"
          }
        },
        "additionalProperties": false,
        "description": "Model for writing a list icon multi answer to a worksheet question"
      },
      "WriteWorksheetAnswerListIconSingle": {
        "required": [
          "selectedItem"
        ],
        "type": "object",
        "allOf": [
          {
            "$ref": "#/components/schemas/WriteWorksheetAnswer"
          }
        ],
        "properties": {
          "selectedItem": {
            "type": "string",
            "description": "Represents selected item from a list icon single answer to a worksheet question"
          }
        },
        "additionalProperties": false,
        "description": "Model for writing a list icon single answer to a worksheet question"
      },
      "WriteWorksheetAnswerListMulti": {
        "required": [
          "selectedItems"
        ],
        "type": "object",
        "allOf": [
          {
            "$ref": "#/components/schemas/WriteWorksheetAnswer"
          }
        ],
        "properties": {
          "selectedItems": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Represents selected items from a list multi answer to a worksheet question"
          }
        },
        "additionalProperties": false,
        "description": "Model for writing a list multi answer to a worksheet question"
      },
      "WriteWorksheetAnswerListSingle": {
        "required": [
          "selectedItem"
        ],
        "type": "object",
        "allOf": [
          {
            "$ref": "#/components/schemas/WriteWorksheetAnswer"
          }
        ],
        "properties": {
          "selectedItem": {
            "type": "string",
            "description": "Represents selected item from a list single answer to a worksheet question"
          }
        },
        "additionalProperties": false,
        "description": "Model for writing a list single answer to a worksheet question"
      },
      "WriteWorksheetAnswerText": {
        "required": [
          "stringValue"
        ],
        "type": "object",
        "allOf": [
          {
            "$ref": "#/components/schemas/WriteWorksheetAnswer"
          }
        ],
        "properties": {
          "stringValue": {
            "type": "string",
            "description": "Represents the text answer to a worksheet question",
            "example": "Hello world"
          }
        },
        "additionalProperties": false,
        "description": "Model for writing a text answer to a worksheet question"
      },
      "WriteWorksheetAnswerTime": {
        "required": [
          "time"
        ],
        "type": "object",
        "allOf": [
          {
            "$ref": "#/components/schemas/WriteWorksheetAnswer"
          }
        ],
        "properties": {
          "time": {
            "type": "string",
            "description": "Represents the time answer to a worksheet question",
            "format": "time",
            "example": "01:23"
          }
        },
        "additionalProperties": false,
        "description": "Model for writing a time answer to a worksheet question"
      }
    },
    "securitySchemes": {
      "bearer": {
        "type": "http",
        "description": "Enter the access token only.",
        "scheme": "bearer",
        "bearerFormat": "JWT"
      }
    }
  },
  "security": [
    {
      "bearer": [ ]
    }
  ]
}