{
  "openapi": "3.0.4",
  "info": {
    "title": "Tracker API",
    "description": "# Introduction\r\n[comment]: <> (x-product-description-placeholder)\r\nThe Tracker API is built on HTTP and is RESTful.\r\nIt has predictable resource URLs and returns HTTP response codes to indicate errors.\r\n\r\nIt returns JSON in the HTTP body.\r\nUse the HTTP/REST library in your favorite programming language when using this API,\r\nor generate a client SDK using your preferred development IDE.\r\n\r\nMany [Tracker](https://my.tracker-rms.com) actions are supported by APIs which are documented and available for use, so that you may automate any necessary workflows or processes.\r\nThis API reference documentation contains the most commonly integrated resources.\r\n\r\n# Intended Audience\r\n\r\nThis document is intended for technically trained developers. Please ensure you share this with developers who intend to implement the API. Support will not be provided for non technically trained users.\r\n\r\n# Authentication\r\n\r\n**All calls to this API require an authorised JWT token**, which is obtained by exchanging a valid OAuth2 access token for a JWT token using the **/api/auth/exchangetoken** endpoint.\r\n\r\nThe access token is acquired with the [OAuth2](https://oauth.net/2/) authentication flow using our [OAuth2 API](/swagger/index.html?urls.primaryName=OAuth2+API).\r\n\r\nAuthentication steps\r\n\r\n1. Acquire an access token using the OAuth2 flow with the **/oauth2/authorize** and **/oauth2/token** endpoints\\\r\n   See the [OAuth2 API](/swagger/index.html?urls.primaryName=OAuth2+API) documentation for details on these endpoints and note in particular that they are published on a separate domain to this API\r\n2. Exchange your access token for a JWT token using the **/api/auth/exchangetoken** endpoint\r\n3. Send your JWT token in the **Authorization** header with all subsequent calls to the API\r\n\r\n**Important: JWT tokens expire, so you should always check for an authentication failure (401) response and obtain a new JWT token by calling the /api/auth/exchangetoken endpoint, if necessary.**\r\n\r\n# Errors\r\n\r\nTracker follows the error response format proposed in [RFC 9457](https://tools.ietf.org/html/rfc9457),\r\nwhich is also known as Problem Details for HTTP APIs.\r\n\r\nAs with any API responses, your client must be prepared to gracefully handle additional members of the response.\r\n\r\n# Rate Limits\r\n\r\nTracker implements rate limiting on the API. Presently 600 requests per minute.\r\n\r\nIf the rate limit is exceeded, the API returns a '429 Too Many Requests' response. \r\n\r\n# Response Codes\r\n\r\nThis API follows REST specification. For convenience below is a table of returned response codes:\r\n\r\n| **Code** | **Meaning**                                                                 |\r\n|----------|------------------------------------------------------------------------------|\r\n| 200 OK   | The request was successful.                                                  |\r\n| 201 Created | A new resource has been successfully created.                            |\r\n| 202 Accepted | The request has been accepted for processing, but the processing is not complete. |\r\n| 204 No Content | The request was successful, but there is no content to return.        |\r\n| 400 Bad Request | The request was malformed or invalid. Check the request parameters or body. |\r\n| 401 Unauthorized | Authentication is required or has failed. Verify your JWT token.    |\r\n| 403 Forbidden | The client does not have permission to access the requested resource.   |\r\n| 404 Not Found | The requested resource could not be found.                             |\r\n| 405 Method Not Allowed | The HTTP method is not supported for the requested resource.  |\r\n| 409 Conflict | The request could not be completed due to a conflict with the current state of the resource. |\r\n| 415 Unsupported Media Type | The request entity has a media type that the server does not support. |\r\n| 422 Unprocessable Entity | The server understands the content type and syntax, but the content is semantically invalid. |\r\n| 429 Too Many Requests | The client has sent too many requests in a given amount of time (rate limiting). |\r\n| 500 Internal Server Error | A generic error occurred on the server.                    |\r\n| 502 Bad Gateway | The server received an invalid response from an upstream server.     |\r\n| 503 Service Unavailable | The server is currently unavailable, usually due to maintenance or overload. |\r\n\r\nThese status codes are returned in the HTTP response status line, and error responses may include a body formatted according to [RFC 9457 (Problem Details)](https://tools.ietf.org/html/rfc9457) for additional context.\r\n\r\n\r\n\r\n\r\n\r\n\r\n",
    "contact": {
      "name": "Tracker Support",
      "url": "https://www.tracker-rms.com/customer-support/"
    },
    "version": "1.0.0"
  },
  "paths": {
    "/api/v1/Activity": {
      "post": {
        "tags": [
          "Activity"
        ],
        "summary": "Creates a new activity",
        "description": "",
        "operationId": "AddActivity",
        "requestBody": {
          "description": "",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ActivityRequestDto"
                  }
                ]
              }
            },
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ActivityRequestDto"
                  }
                ]
              }
            },
            "text/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ActivityRequestDto"
                  }
                ]
              }
            },
            "application/*+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ActivityRequestDto"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedResponseDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedResponseDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "200": {
            "description": "record created successfully"
          },
          "204": {
            "description": "record not created"
          }
        }
      }
    },
    "/api/v1/Activity/Search": {
      "post": {
        "tags": [
          "Activity"
        ],
        "summary": "Searches for activities using the supplied parameters",
        "description": "Sample request:\r\n            \r\n    POST /\r\n    {\r\n        \"subject\": \"John Doe\",\r\n        \"maxResults\": 50,\r\n        \"pageNumber\": 1,\r\n        \"startingAfter\": <activityid>,\r\n        \"sortBy\": \"name\",\r\n        \"sortDirection\": \"desc\",\r\n        \"updatedBefore\": null,\r\n        \"updatedAfter\": null,\r\n        \"onlyMyRecords\": false,\r\n        \"includeCustomFields\": false\r\n    }\r\n            \r\nUse `startingAfter` as a keysetid for the next page - pass the last\r\n`activityid` from the previous response to fetch the next batch.",
        "operationId": "SearchActivities",
        "requestBody": {
          "description": "",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ActivitySearchRequestDto"
                  }
                ]
              }
            },
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ActivitySearchRequestDto"
                  }
                ]
              }
            },
            "text/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ActivitySearchRequestDto"
                  }
                ]
              }
            },
            "application/*+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ActivitySearchRequestDto"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Record found",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ActivitySearchResponseDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ActivitySearchResponseDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ActivitySearchResponseDto"
                  }
                }
              }
            }
          },
          "204": {
            "description": "Record not found"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/Activity/{Id}": {
      "get": {
        "tags": [
          "Activity"
        ],
        "summary": "Gets an existing activity",
        "description": "Sample request:\r\n            \r\n    GET /\r\n    {\r\n       \"Id\": \"27841\",\r\n    }",
        "operationId": "GetActivity",
        "parameters": [
          {
            "name": "Id",
            "in": "path",
            "description": "The activity id",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "example": 27841
          }
        ],
        "responses": {
          "200": {
            "description": "Record found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ActivityResponseDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ActivityResponseDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ActivityResponseDto"
                }
              }
            }
          },
          "204": {
            "description": "Record not found"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Activity"
        ],
        "summary": "Updates an existing activity",
        "description": "",
        "operationId": "UpdateActivity",
        "parameters": [
          {
            "name": "Id",
            "in": "path",
            "description": "The record id",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "example": 27841
          }
        ],
        "requestBody": {
          "description": "",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ActivityRequestDto"
                  }
                ]
              }
            },
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ActivityRequestDto"
                  }
                ]
              }
            },
            "text/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ActivityRequestDto"
                  }
                ]
              }
            },
            "application/*+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ActivityRequestDto"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Record updated",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedResponseDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedResponseDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedResponseDto"
                }
              }
            }
          },
          "204": {
            "description": "Record not found"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Activity"
        ],
        "summary": "Deletes an activity",
        "description": "Sample request:\r\n            \r\n    DELETE /\r\n    {\r\n       \"id\": 1,\r\n    }",
        "operationId": "DeleteActivity",
        "parameters": [
          {
            "name": "Id",
            "in": "path",
            "description": "",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Record delete"
          },
          "204": {
            "description": "Record not found"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/Activity/PagedSearch": {
      "post": {
        "tags": [
          "Activity"
        ],
        "summary": "Searches for activity records using the supplied parameters",
        "operationId": "ActivityPagedSearch",
        "requestBody": {
          "description": "",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ActivitySearchRequestDto"
                  }
                ]
              }
            },
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ActivitySearchRequestDto"
                  }
                ]
              }
            },
            "text/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ActivitySearchRequestDto"
                  }
                ]
              }
            },
            "application/*+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ActivitySearchRequestDto"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Record found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ActivityPagedSearchResponseDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ActivityPagedSearchResponseDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ActivityPagedSearchResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Internal Error"
          }
        }
      }
    },
    "/api/v1/Audit/PagedSearch": {
      "post": {
        "tags": [
          "Audit"
        ],
        "summary": "Searches audit records using keyset pagination.",
        "description": "<b>dateFrom</b> and <b>dateTo</b> are required. The date range must not exceed one calendar month —\r\n             request data in monthly batches for larger ranges.\r\n            \r\n             Sample request:\r\n            \r\n                 POST /api/v1/Audit/PagedSearch\r\n                 {\r\n                     \"dateFrom\": \"2024-01-01\",\r\n                     \"dateTo\": \"2024-01-31\",\r\n                     \"userId\": 42,\r\n                     \"recordType\": \"Resource\",\r\n                     \"actionType\": \"View\",\r\n                     \"startingAfter\": 10000,\r\n                     \"maxResults\": 25,\r\n                     \"pageNumber\": 1\r\n                 }\r\n            \r\n             Use `startingAfter` as a keyset cursor for the next page — pass the last\r\n             `userHistoryId` from the previous response to fetch the next batch efficiently.",
        "operationId": "SearchAudit",
        "requestBody": {
          "description": "The search filters and pagination cursor.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/AuditSearchRequestDto"
                  }
                ]
              }
            },
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/AuditSearchRequestDto"
                  }
                ]
              }
            },
            "text/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/AuditSearchRequestDto"
                  }
                ]
              }
            },
            "application/*+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/AuditSearchRequestDto"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Records found and returned.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/AuditSearchPagedResponseDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuditSearchPagedResponseDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuditSearchPagedResponseDto"
                }
              }
            }
          },
          "204": {
            "description": "No records found matching the search criteria."
          },
          "400": {
            "description": "Validation failed or bad request — dateFrom/dateTo missing, or range exceeds one month.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/Audit": {
      "post": {
        "tags": [
          "Audit"
        ],
        "summary": "Inserts a new user action audit entry.",
        "description": "<b>actionType</b>, <b>description</b>, <b>recordType</b> and <b>recordId</b> are required.\r\n             If <b>userId</b> is null, the UserId associated with the current ApiKey will be used.\r\n            \r\n             Sample request:\r\n            \r\n                 POST /api/v1/Audit\r\n                 {\r\n                     \"userId\": 1,\r\n                     \"timestamp\": \"2025-07-17T08:54:37\",\r\n                     \"actionType\": \"Record\",\r\n                     \"description\": \"Activity created\",\r\n                     \"recordType\": \"Resource\",\r\n                     \"recordId\": 112,\r\n                     \"itemName\": null\r\n                 }",
        "operationId": "AddAudit",
        "requestBody": {
          "description": "",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/AuditRequestDto"
                  }
                ]
              }
            },
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/AuditRequestDto"
                  }
                ]
              }
            },
            "text/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/AuditRequestDto"
                  }
                ]
              }
            },
            "application/*+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/AuditRequestDto"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Record created.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedResponseDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedResponseDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed or bad request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/Auth/ExchangeToken": {
      "post": {
        "tags": [
          "Auth"
        ],
        "summary": "Exchanges a Tracker OAuth2 token for an API JWT token",
        "parameters": [
          {
            "name": "api-version",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/TokenRequest"
                  }
                ]
              }
            },
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/TokenRequest"
                  }
                ]
              }
            },
            "text/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/TokenRequest"
                  }
                ]
              }
            },
            "application/*+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/TokenRequest"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/v1/Client": {
      "post": {
        "tags": [
          "Client"
        ],
        "summary": "Creates a new client record",
        "description": "",
        "operationId": "AddClient",
        "requestBody": {
          "description": "",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ClientRequestDto"
                  }
                ]
              }
            },
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ClientRequestDto"
                  }
                ]
              }
            },
            "text/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ClientRequestDto"
                  }
                ]
              }
            },
            "application/*+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ClientRequestDto"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedResponseDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedResponseDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "200": {
            "description": "record created successfully"
          },
          "204": {
            "description": "record not created"
          }
        }
      }
    },
    "/api/v1/Client/Search": {
      "post": {
        "tags": [
          "Client"
        ],
        "summary": "Searches for client records using the supplied parameters",
        "description": "Sample request:\r\n            \r\n    POST /\r\n    {\r\n        \"searchTerm\": \"John Doe\",\r\n        \"maxResults\": 50,\r\n        \"pageNumber\": 1,\r\n        \"statusId\": 1,\r\n        \"sortBy\": \"name\",\r\n        \"sortDirection\": \"desc\",\r\n        \"updatedBefore\": null,\r\n        \"updatedAfter\": null,\r\n        \"onlyMyRecords\": false,\r\n        \"includeCustomFields\": false,\r\n        \"telephone\": null,\r\n        \"fax\": null\r\n    }",
        "operationId": "SearchClients",
        "requestBody": {
          "description": "",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ClientSearchRequestDto"
                  }
                ]
              }
            },
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ClientSearchRequestDto"
                  }
                ]
              }
            },
            "text/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ClientSearchRequestDto"
                  }
                ]
              }
            },
            "application/*+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ClientSearchRequestDto"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Record found",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ClientSearchResponseDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ClientSearchResponseDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ClientSearchResponseDto"
                  }
                }
              }
            }
          },
          "204": {
            "description": "Record not found"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/Client/AttachDocument": {
      "post": {
        "tags": [
          "Client"
        ],
        "summary": "Attaches a document to a client record",
        "description": "",
        "operationId": "AttachClientDocument",
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/DocumentDto"
                  }
                ]
              }
            },
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/DocumentDto"
                  }
                ]
              }
            },
            "text/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/DocumentDto"
                  }
                ]
              }
            },
            "application/*+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/DocumentDto"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedResponseDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedResponseDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedResponseDto"
                }
              }
            }
          },
          "201": {
            "description": "Document attached successfully",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedResponseDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedResponseDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/Client/DocumentFolders/{Id}": {
      "get": {
        "tags": [
          "Client"
        ],
        "summary": "Lists all document folders for a client record",
        "description": "Sample request:\r\n            \r\n    GET /\r\n    {\r\n       \"Id\": 1\r\n    }",
        "operationId": "GetClientDocumentFolders",
        "parameters": [
          {
            "name": "Id",
            "in": "path",
            "description": "",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Folders found",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/DocumentFolderResponse"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/DocumentFolderResponse"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/DocumentFolderResponse"
                  }
                }
              }
            }
          },
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/Client/{Id}": {
      "get": {
        "tags": [
          "Client"
        ],
        "summary": "Gets an existing client record",
        "description": "Sample request:\r\n            \r\n    GET /\r\n    {\r\n       \"Id\": 1\r\n    }",
        "operationId": "GetClient",
        "parameters": [
          {
            "name": "Id",
            "in": "path",
            "description": "",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Record found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ClientResponseDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ClientResponseDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ClientResponseDto"
                }
              }
            }
          },
          "204": {
            "description": "Record not found"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Client"
        ],
        "summary": "Updates an existing client record",
        "description": "",
        "operationId": "UpdateClient",
        "parameters": [
          {
            "name": "Id",
            "in": "path",
            "description": "The record id",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "example": 27841
          }
        ],
        "requestBody": {
          "description": "",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ClientRequestDto"
                  }
                ]
              }
            },
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ClientRequestDto"
                  }
                ]
              }
            },
            "text/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ClientRequestDto"
                  }
                ]
              }
            },
            "application/*+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ClientRequestDto"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Record updated",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedResponseDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedResponseDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedResponseDto"
                }
              }
            }
          },
          "204": {
            "description": "Record not found"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Client"
        ],
        "summary": "Deletes a client record",
        "description": "Sample request:\r\n            \r\n    DELETE /\r\n    {\r\n       \"id\": 1,\r\n    }",
        "operationId": "DeleteClient",
        "parameters": [
          {
            "name": "Id",
            "in": "path",
            "description": "",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Record delete"
          },
          "204": {
            "description": "Record not found"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/Client/PagedSearch": {
      "post": {
        "tags": [
          "Client"
        ],
        "summary": "Searches for client records using the supplied parameters",
        "operationId": "ClientPagedSearch",
        "requestBody": {
          "description": "",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ClientSearchRequestDto"
                  }
                ]
              }
            },
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ClientSearchRequestDto"
                  }
                ]
              }
            },
            "text/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ClientSearchRequestDto"
                  }
                ]
              }
            },
            "application/*+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ClientSearchRequestDto"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Record found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ClientPagedSearchResponseDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ClientPagedSearchResponseDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ClientPagedSearchResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Internal Error"
          }
        }
      }
    },
    "/api/v1/Contact": {
      "post": {
        "tags": [
          "Contact"
        ],
        "summary": "Creates a new contact record",
        "description": "Sample request:\r\n            \r\n    POST /Add\r\n    {\r\n       ...leadServiceDto data\r\n    }",
        "operationId": "AddContact",
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ContactRequestDto"
                  }
                ]
              }
            },
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ContactRequestDto"
                  }
                ]
              }
            },
            "text/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ContactRequestDto"
                  }
                ]
              }
            },
            "application/*+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ContactRequestDto"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedResponseDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedResponseDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "200": {
            "description": "Contact created successfully"
          },
          "204": {
            "description": "Contact not created"
          }
        }
      }
    },
    "/api/v1/Contact/Search": {
      "post": {
        "tags": [
          "Contact"
        ],
        "summary": "Searches for contact records using the supplied parameters",
        "operationId": "SearchContacts",
        "requestBody": {
          "description": "",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ContactSearchRequestDto"
                  }
                ]
              }
            },
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ContactSearchRequestDto"
                  }
                ]
              }
            },
            "text/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ContactSearchRequestDto"
                  }
                ]
              }
            },
            "application/*+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ContactSearchRequestDto"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Record found",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ContactSearchResponseDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ContactSearchResponseDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ContactSearchResponseDto"
                  }
                }
              }
            }
          },
          "204": {
            "description": "Record not found"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/Contact/Search/CustomField": {
      "post": {
        "tags": [
          "Contact"
        ],
        "summary": "Searches custom fields for contact records using the supplied parameters",
        "operationId": "SearchContactCustomFields",
        "requestBody": {
          "description": "",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/SearchCustomFieldRequestDto"
                  }
                ]
              }
            },
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/SearchCustomFieldRequestDto"
                  }
                ]
              }
            },
            "text/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/SearchCustomFieldRequestDto"
                  }
                ]
              }
            },
            "application/*+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/SearchCustomFieldRequestDto"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Record found",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ResourceSearchResponseDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ResourceSearchResponseDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ResourceSearchResponseDto"
                  }
                }
              }
            }
          },
          "204": {
            "description": "Record not found"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/Contact/AttachDocument": {
      "post": {
        "tags": [
          "Contact"
        ],
        "summary": "Attaches a document to a contact record",
        "description": "",
        "operationId": "AttachContactDocument",
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/DocumentDto"
                  }
                ]
              }
            },
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/DocumentDto"
                  }
                ]
              }
            },
            "text/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/DocumentDto"
                  }
                ]
              }
            },
            "application/*+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/DocumentDto"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Document attached successfully",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedResponseDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedResponseDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/Contact/DocumentFolders/{Id}": {
      "get": {
        "tags": [
          "Contact"
        ],
        "summary": "Lists all document folders for a contact record",
        "description": "Sample request:\r\n            \r\n    GET /\r\n    {\r\n       \"Id\": 1,\r\n    }",
        "operationId": "GetContactDocumentFolders",
        "parameters": [
          {
            "name": "Id",
            "in": "path",
            "description": "",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Folders found",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/DocumentFolderResponse"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/DocumentFolderResponse"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/DocumentFolderResponse"
                  }
                }
              }
            }
          },
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/Contact/{Id}": {
      "get": {
        "tags": [
          "Contact"
        ],
        "summary": "Gets an existing contact record",
        "description": "Sample request:\r\n            \r\n    GET /\r\n    {\r\n       \"id\": 1,\r\n    }",
        "operationId": "GetContact",
        "parameters": [
          {
            "name": "Id",
            "in": "path",
            "description": "",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Contact found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ContactResponseDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ContactResponseDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ContactResponseDto"
                }
              }
            }
          },
          "204": {
            "description": "Contact not found"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "429": {
            "description": "Too many requests",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Contact"
        ],
        "summary": "Updates an existing contact record",
        "operationId": "UpdateContact",
        "parameters": [
          {
            "name": "Id",
            "in": "path",
            "description": "The record id",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "example": 1001
          }
        ],
        "requestBody": {
          "description": "",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ContactRequestDto"
                  }
                ]
              }
            },
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ContactRequestDto"
                  }
                ]
              }
            },
            "text/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ContactRequestDto"
                  }
                ]
              }
            },
            "application/*+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ContactRequestDto"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Record updated",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedResponseDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedResponseDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedResponseDto"
                }
              }
            }
          },
          "204": {
            "description": "Record not found"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Contact"
        ],
        "summary": "Deletes a contact record",
        "description": "Sample request:\r\n            \r\n    DELETE /\r\n    {\r\n       \"id\": 1,\r\n    }",
        "operationId": "DeleteContact",
        "parameters": [
          {
            "name": "Id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Contact delete"
          },
          "204": {
            "description": "Contact not found"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/Contact/PagedSearch": {
      "post": {
        "tags": [
          "Contact"
        ],
        "summary": "Searches for contact records using the supplied parameters",
        "operationId": "ContactPagedSearch",
        "requestBody": {
          "description": "",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ContactSearchRequestDto"
                  }
                ]
              }
            },
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ContactSearchRequestDto"
                  }
                ]
              }
            },
            "text/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ContactSearchRequestDto"
                  }
                ]
              }
            },
            "application/*+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ContactSearchRequestDto"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Record found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ContactPagedSearchResponseDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ContactPagedSearchResponseDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ContactPagedSearchResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Internal Error"
          }
        }
      }
    },
    "/api/v1/CustomFields/{Id}": {
      "get": {
        "tags": [
          "CustomFields"
        ],
        "summary": "Gets list values of a custom field list given a field list id",
        "description": "Sample request:\r\n            \r\n    GET /\r\n    {\r\n       \"Id\": 1,\r\n    }",
        "operationId": "GetCustomFieldsList",
        "parameters": [
          {
            "name": "Id",
            "in": "path",
            "description": "",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Record found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/CustomFieldListResponseDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomFieldListResponseDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomFieldListResponseDto"
                }
              }
            }
          },
          "204": {
            "description": "Record not found"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/Expense/{Id}": {
      "get": {
        "tags": [
          "Expense"
        ],
        "summary": "Gets an existing expense record",
        "operationId": "GetExpense",
        "parameters": [
          {
            "name": "Id",
            "in": "path",
            "description": "The identifier.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ExpenseResponseDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExpenseResponseDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExpenseResponseDto"
                }
              }
            }
          },
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/Expense/Search": {
      "post": {
        "tags": [
          "Expense"
        ],
        "summary": "Expenses search",
        "operationId": "SearchExpenses",
        "requestBody": {
          "description": "The search request.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ExpenseSearchRequestDto"
                  }
                ]
              }
            },
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ExpenseSearchRequestDto"
                  }
                ]
              }
            },
            "text/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ExpenseSearchRequestDto"
                  }
                ]
              }
            },
            "application/*+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ExpenseSearchRequestDto"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ExpenseSearchResponseDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ExpenseSearchResponseDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ExpenseSearchResponseDto"
                  }
                }
              }
            }
          },
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/Expense/PagedSearch": {
      "post": {
        "tags": [
          "Expense"
        ],
        "summary": "Expenses paged search",
        "operationId": "ExpensesPagedSearch",
        "requestBody": {
          "description": "The search request.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ExpenseSearchRequestDto"
                  }
                ]
              }
            },
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ExpenseSearchRequestDto"
                  }
                ]
              }
            },
            "text/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ExpenseSearchRequestDto"
                  }
                ]
              }
            },
            "application/*+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ExpenseSearchRequestDto"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ExpensePagedSearchResponseDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExpensePagedSearchResponseDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExpensePagedSearchResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error"
          }
        }
      }
    },
    "/api/v1/Invoice": {
      "post": {
        "tags": [
          "Invoice"
        ],
        "summary": "Creates a new invoice record",
        "description": "",
        "operationId": "AddInvoice",
        "requestBody": {
          "description": "",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/InvoiceRequestDto"
                  }
                ]
              }
            },
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/InvoiceRequestDto"
                  }
                ]
              }
            },
            "text/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/InvoiceRequestDto"
                  }
                ]
              }
            },
            "application/*+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/InvoiceRequestDto"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedResponseDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedResponseDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "200": {
            "description": "record created successfully"
          },
          "204": {
            "description": "record not created"
          }
        }
      }
    },
    "/api/v1/Invoice/Search": {
      "post": {
        "tags": [
          "Invoice"
        ],
        "summary": "Searches for invoice records using the supplied parameters",
        "description": " Sample request:\r\n\r\n     POST /\r\n     {\r\n\t        \"searchTerm\": \"Acme Corp\",\r\n\t        \"maxResults\": 50,\r\n\t        \"pageNumber\": 1,\r\n\t        \"sortBy\": \"clientname\",\r\n\t        \"sortDirection\": \"asc\",\r\n\t        \"updatedBefore\": null,\r\n\t        \"updatedAfter\": null,\r\n\t        \"onlyMyRecords\": false,\r\n\t        \"includeCustomFields\": false,\r\n\t        \"state\": \"Raised\"\r\n     }",
        "operationId": "SearchInvoices",
        "requestBody": {
          "description": "",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/InvoiceSearchRequestDto"
                  }
                ],
                "description": "Search request specific to invoice records.\r\nThe State field accepts invoice-specific values: 'Raised', 'Paid', 'Bad Debt', 'Awaiting Approval', 'Approved', 'Unapproved'"
              }
            },
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/InvoiceSearchRequestDto"
                  }
                ],
                "description": "Search request specific to invoice records.\r\nThe State field accepts invoice-specific values: 'Raised', 'Paid', 'Bad Debt', 'Awaiting Approval', 'Approved', 'Unapproved'"
              }
            },
            "text/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/InvoiceSearchRequestDto"
                  }
                ],
                "description": "Search request specific to invoice records.\r\nThe State field accepts invoice-specific values: 'Raised', 'Paid', 'Bad Debt', 'Awaiting Approval', 'Approved', 'Unapproved'"
              }
            },
            "application/*+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/InvoiceSearchRequestDto"
                  }
                ],
                "description": "Search request specific to invoice records.\r\nThe State field accepts invoice-specific values: 'Raised', 'Paid', 'Bad Debt', 'Awaiting Approval', 'Approved', 'Unapproved'"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Record found",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/InvoiceSearchResponseDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/InvoiceSearchResponseDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/InvoiceSearchResponseDto"
                  }
                }
              }
            }
          },
          "204": {
            "description": "Record not found"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/Invoice/{Id}": {
      "get": {
        "tags": [
          "Invoice"
        ],
        "summary": "Gets an existing invoice record",
        "description": "Sample request:\r\n            \r\n    GET /\r\n    {\r\n       \"Id\": 1,\r\n    }",
        "operationId": "GetInvoice",
        "parameters": [
          {
            "name": "Id",
            "in": "path",
            "description": "",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Record found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/InvoiceResponseDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InvoiceResponseDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/InvoiceResponseDto"
                }
              }
            }
          },
          "204": {
            "description": "Record not found"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Invoice"
        ],
        "summary": "Updates an existing invoice record",
        "description": "",
        "operationId": "UpdateInvoice",
        "parameters": [
          {
            "name": "Id",
            "in": "path",
            "description": "The record id",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "example": 1001
          }
        ],
        "requestBody": {
          "description": "",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/InvoiceRequestDto"
                  }
                ]
              }
            },
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/InvoiceRequestDto"
                  }
                ]
              }
            },
            "text/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/InvoiceRequestDto"
                  }
                ]
              }
            },
            "application/*+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/InvoiceRequestDto"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Record updated",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedResponseDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedResponseDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedResponseDto"
                }
              }
            }
          },
          "204": {
            "description": "Record not found"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Invoice"
        ],
        "summary": "Deletes an invoice record",
        "description": "Sample request:\r\n            \r\n    DELETE /\r\n    {\r\n       \"id\": 1,\r\n    }",
        "operationId": "DeleteInvoice",
        "parameters": [
          {
            "name": "Id",
            "in": "path",
            "description": "",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Record delete"
          },
          "204": {
            "description": "Record not found"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/Invoice/PagedSearch": {
      "post": {
        "tags": [
          "Invoice"
        ],
        "summary": "Searches for invoice records using the supplied parameters",
        "description": " Sample request:\r\n\r\n     POST /\r\n     {\r\n\t        \"searchTerm\": \"Acme Corp\",\r\n\t        \"maxResults\": 50,\r\n\t        \"pageNumber\": 1,\r\n\t        \"sortBy\": \"clientname\",\r\n\t        \"sortDirection\": \"asc\",\r\n\t        \"updatedBefore\": null,\r\n\t        \"updatedAfter\": null,\r\n\t        \"onlyMyRecords\": false,\r\n\t        \"includeCustomFields\": false,\r\n\t        \"state\": \"Raised\"\r\n     }",
        "operationId": "InvoicePagedSearch",
        "requestBody": {
          "description": "",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/InvoiceSearchRequestDto"
                  }
                ],
                "description": "Search request specific to invoice records.\r\nThe State field accepts invoice-specific values: 'Raised', 'Paid', 'Bad Debt', 'Awaiting Approval', 'Approved', 'Unapproved'"
              }
            },
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/InvoiceSearchRequestDto"
                  }
                ],
                "description": "Search request specific to invoice records.\r\nThe State field accepts invoice-specific values: 'Raised', 'Paid', 'Bad Debt', 'Awaiting Approval', 'Approved', 'Unapproved'"
              }
            },
            "text/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/InvoiceSearchRequestDto"
                  }
                ],
                "description": "Search request specific to invoice records.\r\nThe State field accepts invoice-specific values: 'Raised', 'Paid', 'Bad Debt', 'Awaiting Approval', 'Approved', 'Unapproved'"
              }
            },
            "application/*+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/InvoiceSearchRequestDto"
                  }
                ],
                "description": "Search request specific to invoice records.\r\nThe State field accepts invoice-specific values: 'Raised', 'Paid', 'Bad Debt', 'Awaiting Approval', 'Approved', 'Unapproved'"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Record found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/InvoicePagedSearchResponseDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InvoicePagedSearchResponseDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/InvoicePagedSearchResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Internal Error"
          }
        }
      }
    },
    "/api/v1/Lead": {
      "post": {
        "tags": [
          "Lead"
        ],
        "summary": "Creates a new lead record",
        "description": "Sample request:\r\n            \r\n    POST /Add\r\n    {\r\n       ...leadServiceDto data\r\n    }",
        "operationId": "AddLead",
        "requestBody": {
          "description": "",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/LeadRequestDto"
                  }
                ]
              }
            },
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/LeadRequestDto"
                  }
                ]
              }
            },
            "text/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/LeadRequestDto"
                  }
                ]
              }
            },
            "application/*+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/LeadRequestDto"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedResponseDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedResponseDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "200": {
            "description": "Lead created successfully"
          },
          "204": {
            "description": "Lead not created"
          }
        }
      }
    },
    "/api/v1/Lead/Search": {
      "post": {
        "tags": [
          "Lead"
        ],
        "summary": "Searches for lead records using the supplied parameters",
        "description": " Sample request:\r\n\r\n     POST /\r\n     {\r\n       \t\"searchTerm\": \"John Doe\",\r\n\t        \"maxResults\": 50,\r\n\t        \"pageNumber\": 1,\r\n\t        \"statusId\": 1,\r\n\t        \"clientId\": null,\r\n\t        \"sortBy\": \"name\",\r\n\t        \"sortDirection\": \"desc\",\r\n\t        \"updatedBefore\": null,\r\n\t        \"updatedAfter\": null,\r\n\t        \"onlyMyRecords\": false,\r\n\t        \"includeCustomFields\": false\r\n     }",
        "operationId": "SearchLeads",
        "requestBody": {
          "description": "",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/LeadSearchRequestDto"
                  }
                ],
                "description": "Lead Search Request Dto"
              }
            },
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/LeadSearchRequestDto"
                  }
                ],
                "description": "Lead Search Request Dto"
              }
            },
            "text/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/LeadSearchRequestDto"
                  }
                ],
                "description": "Lead Search Request Dto"
              }
            },
            "application/*+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/LeadSearchRequestDto"
                  }
                ],
                "description": "Lead Search Request Dto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Record found",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/LeadSearchResponseDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/LeadSearchResponseDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/LeadSearchResponseDto"
                  }
                }
              }
            }
          },
          "204": {
            "description": "Record not found"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/Lead/AttachDocument": {
      "post": {
        "tags": [
          "Lead"
        ],
        "summary": "Attaches a document to a lead record",
        "description": "",
        "operationId": "AttachLeadDocument",
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/DocumentDto"
                  }
                ]
              }
            },
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/DocumentDto"
                  }
                ]
              }
            },
            "text/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/DocumentDto"
                  }
                ]
              }
            },
            "application/*+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/DocumentDto"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Document attached successfully",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedResponseDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedResponseDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/Lead/DocumentFolders/{Id}": {
      "get": {
        "tags": [
          "Lead"
        ],
        "summary": "List all document folders for a lead record",
        "description": "Sample request:\r\n            \r\n    GET /\r\n    {\r\n       \"Id\": 1,\r\n    }",
        "operationId": "GetLeadDocumentFolders",
        "parameters": [
          {
            "name": "Id",
            "in": "path",
            "description": "",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Folders found",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/DocumentFolderResponse"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/DocumentFolderResponse"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/DocumentFolderResponse"
                  }
                }
              }
            }
          },
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/Lead/{leadId}": {
      "get": {
        "tags": [
          "Lead"
        ],
        "summary": "Gets an existing lead record",
        "description": "Sample request:\r\n            \r\n    GET /\r\n    {\r\n       \"id\": 1,\r\n    }",
        "operationId": "GetLead",
        "parameters": [
          {
            "name": "leadId",
            "in": "path",
            "description": "",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Lead found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/LeadResponseDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LeadResponseDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/LeadResponseDto"
                }
              }
            }
          },
          "204": {
            "description": "Lead not found"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/Lead/{Id}": {
      "patch": {
        "tags": [
          "Lead"
        ],
        "summary": "Updates an existing lead record",
        "description": "Sample request:\r\n            \r\n    PATCH /\r\n    {\r\n       \"id\": 1,\r\n    }",
        "operationId": "UpdateLead",
        "parameters": [
          {
            "name": "Id",
            "in": "path",
            "description": "The record id",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "example": 1001
          }
        ],
        "requestBody": {
          "description": "",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/LeadRequestDto"
                  }
                ]
              }
            },
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/LeadRequestDto"
                  }
                ]
              }
            },
            "text/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/LeadRequestDto"
                  }
                ]
              }
            },
            "application/*+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/LeadRequestDto"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Lead updated",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedResponseDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedResponseDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedResponseDto"
                }
              }
            }
          },
          "204": {
            "description": "Lead not found"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Lead"
        ],
        "summary": "Deletes a lead record",
        "description": "Sample request:\r\n            \r\n    DELETE /\r\n    {\r\n       \"id\": 1,\r\n    }",
        "operationId": "DeleteLead",
        "parameters": [
          {
            "name": "Id",
            "in": "path",
            "description": "",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Lead delete"
          },
          "204": {
            "description": "Lead not found"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/Lead/PagedSearch": {
      "post": {
        "tags": [
          "Lead"
        ],
        "summary": "Searches for lead records using the supplied parameters",
        "operationId": "LeadPagedSearch",
        "requestBody": {
          "description": "",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/LeadSearchRequestDto"
                  }
                ],
                "description": "Lead Search Request Dto"
              }
            },
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/LeadSearchRequestDto"
                  }
                ],
                "description": "Lead Search Request Dto"
              }
            },
            "text/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/LeadSearchRequestDto"
                  }
                ],
                "description": "Lead Search Request Dto"
              }
            },
            "application/*+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/LeadSearchRequestDto"
                  }
                ],
                "description": "Lead Search Request Dto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Record found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/LeadPagedSearchResponseDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LeadPagedSearchResponseDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/LeadPagedSearchResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Internal Error"
          }
        }
      }
    },
    "/api/v1/MetaData": {
      "get": {
        "tags": [
          "MetaData"
        ],
        "summary": "Gets full metadata",
        "description": "",
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/MetaDataResponseDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MetaDataResponseDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/MetaDataResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Unable to fulfil request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "200": {
            "description": "Meta retrieved successfully"
          }
        }
      }
    },
    "/api/v1/MetaData/recordTypes": {
      "get": {
        "tags": [
          "MetaData"
        ],
        "summary": "Gets recordtype metadata",
        "description": "",
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/RecordTypesDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RecordTypesDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/RecordTypesDto"
                }
              }
            }
          },
          "400": {
            "description": "Unable to fulfil request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "200": {
            "description": "Meta retrieved successfully"
          }
        }
      }
    },
    "/api/v1/MetaData/Skills/Hierarchy": {
      "get": {
        "tags": [
          "MetaData"
        ],
        "summary": "Gets skill categories and areas (lightweight hierarchy without skills)",
        "operationId": "GetSkillsHierarchy",
        "responses": {
          "200": {
            "description": "Skills hierarchy retrieved successfully",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/SkillsHierarchyResponseDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SkillsHierarchyResponseDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/SkillsHierarchyResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Unable to fulfil request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/MetaData/Skills/Areas/{areaId}/Skills": {
      "get": {
        "tags": [
          "MetaData"
        ],
        "summary": "Gets paginated skills for a specific area",
        "operationId": "GetSkillsByArea",
        "parameters": [
          {
            "name": "areaId",
            "in": "path",
            "description": "The skill area ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageNumber",
            "in": "query",
            "description": "Page number (1-based)",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "Number of items per page (max 1000, default 100)",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 100
            }
          },
          {
            "name": "searchTerm",
            "in": "query",
            "description": "Optional search term to filter skills",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/SkillsSearchResponseDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SkillsSearchResponseDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/SkillsSearchResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/MetaData/Skills/Search": {
      "get": {
        "tags": [
          "MetaData"
        ],
        "summary": "Gets paginated skills with search across all areas",
        "operationId": "SearchSkills",
        "parameters": [
          {
            "name": "pageNumber",
            "in": "query",
            "description": "Page number (1-based)",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "Number of items per page (max 1000, default 100)",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 100
            }
          },
          {
            "name": "searchTerm",
            "in": "query",
            "description": "Search term to filter skills",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "skillType",
            "in": "query",
            "description": "Optional skill type filter",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/SkillsSearchResponseDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SkillsSearchResponseDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/SkillsSearchResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/MetaData/Skills/Areas/{areaId}/Count": {
      "get": {
        "tags": [
          "MetaData"
        ],
        "summary": "Gets skills count for a specific area",
        "operationId": "GetSkillsCount",
        "parameters": [
          {
            "name": "areaId",
            "in": "path",
            "description": "The skill area ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "integer",
                  "format": "int32"
                }
              },
              "application/json": {
                "schema": {
                  "type": "integer",
                  "format": "int32"
                }
              },
              "text/json": {
                "schema": {
                  "type": "integer",
                  "format": "int32"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/MetaData/Skills/List/{skillListId}": {
      "get": {
        "tags": [
          "MetaData"
        ],
        "summary": "Gets skill list with its associated values",
        "operationId": "GetSkillList",
        "parameters": [
          {
            "name": "skillListId",
            "in": "path",
            "description": "The skill list ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/SkillListDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SkillListDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/SkillListDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/MetaData/Shifts": {
      "get": {
        "tags": [
          "MetaData"
        ],
        "summary": "Gets all utilisation statuses",
        "operationId": "GetUtilisationMeta",
        "responses": {
          "200": {
            "description": "Utilisation statuses retrieved successfully",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/RecordReference"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/RecordReference"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/RecordReference"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/Opportunity": {
      "post": {
        "tags": [
          "Opportunity"
        ],
        "summary": "Creates a new opportunity record",
        "description": "",
        "operationId": "AddOpportunity",
        "requestBody": {
          "description": "",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/OpportunityRequestDto"
                  }
                ]
              }
            },
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/OpportunityRequestDto"
                  }
                ]
              }
            },
            "text/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/OpportunityRequestDto"
                  }
                ]
              }
            },
            "application/*+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/OpportunityRequestDto"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedResponseDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedResponseDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "200": {
            "description": "record created successfully"
          },
          "204": {
            "description": "record not created"
          }
        }
      }
    },
    "/api/v1/Opportunity/{Id}": {
      "get": {
        "tags": [
          "Opportunity"
        ],
        "summary": "Gets an existing opportunity record",
        "description": "Sample request:\r\n            \r\n    GET /\r\n    {\r\n       \"Id\": 1,\r\n    }",
        "operationId": "GetOpportunity",
        "parameters": [
          {
            "name": "Id",
            "in": "path",
            "description": "",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Record found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/OpportunityResponseDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OpportunityResponseDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/OpportunityResponseDto"
                }
              }
            }
          },
          "204": {
            "description": "Record not found"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Opportunity"
        ],
        "summary": "Updates an existing opportunity record",
        "description": "",
        "operationId": "UpdateOpportunity",
        "parameters": [
          {
            "name": "Id",
            "in": "path",
            "description": "The record id",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "example": 1001
          }
        ],
        "requestBody": {
          "description": "",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/OpportunityRequestDto"
                  }
                ]
              }
            },
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/OpportunityRequestDto"
                  }
                ]
              }
            },
            "text/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/OpportunityRequestDto"
                  }
                ]
              }
            },
            "application/*+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/OpportunityRequestDto"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Record updated",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedResponseDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedResponseDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedResponseDto"
                }
              }
            }
          },
          "204": {
            "description": "Record not found"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Opportunity"
        ],
        "summary": "Deletes an opportunity record",
        "description": "Sample request:\r\n            \r\n    DELETE /\r\n    {\r\n       \"id\": 1,\r\n    }",
        "operationId": "DeleteOpportunity",
        "parameters": [
          {
            "name": "Id",
            "in": "path",
            "description": "",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Record delete"
          },
          "204": {
            "description": "Record not found"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/Opportunity/Search": {
      "post": {
        "tags": [
          "Opportunity"
        ],
        "summary": "Searches for opportunity records using the supplied parameters",
        "description": " Sample request:\r\n\r\n     POST /\r\n     {\r\n       \t\"searchTerm\": \"John Doe\",\r\n\t        \"maxResults\": 50,\r\n\t        \"pageNumber\": 1,\r\n\t        \"sortBy\": \"name\",\r\n\t        \"sortDirection\": \"desc\",\r\n\t        \"updatedBefore\": null,\r\n\t        \"updatedAfter\": null,\r\n\t        \"onlyMyRecords\": false,\r\n\t        \"includeCustomFields\": false\r\n     }",
        "operationId": "SearchOpportunities",
        "requestBody": {
          "description": "",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/OpportunitySearchRequestDto"
                  }
                ],
                "description": "Opportunity Search Request Dto"
              }
            },
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/OpportunitySearchRequestDto"
                  }
                ],
                "description": "Opportunity Search Request Dto"
              }
            },
            "text/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/OpportunitySearchRequestDto"
                  }
                ],
                "description": "Opportunity Search Request Dto"
              }
            },
            "application/*+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/OpportunitySearchRequestDto"
                  }
                ],
                "description": "Opportunity Search Request Dto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Record found",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/OpportunitySearchResponseDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/OpportunitySearchResponseDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/OpportunitySearchResponseDto"
                  }
                }
              }
            }
          },
          "204": {
            "description": "Record not found"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/Opportunity/AttachDocument": {
      "post": {
        "tags": [
          "Opportunity"
        ],
        "summary": "Attaches a document to an opportunity record",
        "description": "",
        "operationId": "AttachOpportunityDocument",
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/DocumentDto"
                  }
                ]
              }
            },
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/DocumentDto"
                  }
                ]
              }
            },
            "text/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/DocumentDto"
                  }
                ]
              }
            },
            "application/*+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/DocumentDto"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Document attached successfully",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedResponseDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedResponseDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/Opportunity/DocumentFolders/{Id}": {
      "get": {
        "tags": [
          "Opportunity"
        ],
        "summary": "Lists all document folders for an opportunity record",
        "description": "Sample request:\r\n            \r\n    GET /\r\n    {\r\n       \"Id\": 1\r\n    }",
        "operationId": "GetOpportunityDocumentFolders",
        "parameters": [
          {
            "name": "Id",
            "in": "path",
            "description": "",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Folders found",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/DocumentFolderResponse"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/DocumentFolderResponse"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/DocumentFolderResponse"
                  }
                }
              }
            }
          },
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/Opportunity/{Id}/Applicants": {
      "get": {
        "tags": [
          "Opportunity"
        ],
        "summary": "Lists all applicants for a job only matched resources will be returned",
        "description": "Sample request:\r\n            \r\n    GET /\r\n    {\r\n       \"Id\": 1\r\n    }",
        "operationId": "GetApplicants",
        "parameters": [
          {
            "name": "Id",
            "in": "path",
            "description": "",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Folders found",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ResourceVitals"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ResourceVitals"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ResourceVitals"
                  }
                }
              }
            }
          },
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/Opportunity/Longlist": {
      "post": {
        "tags": [
          "Opportunity"
        ],
        "summary": "Adds a resource to an opportunity's longlist",
        "description": "",
        "operationId": "AddToLongList",
        "requestBody": {
          "description": "",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/LongListDto"
                  }
                ],
                "description": "Long list transfer object"
              }
            },
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/LongListDto"
                  }
                ],
                "description": "Long list transfer object"
              }
            },
            "text/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/LongListDto"
                  }
                ],
                "description": "Long list transfer object"
              }
            },
            "application/*+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/LongListDto"
                  }
                ],
                "description": "Long list transfer object"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/UpdatedResponseDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/UpdatedResponseDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/UpdatedResponseDto"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "200": {
            "description": "Longlist request was successfull"
          }
        }
      }
    },
    "/api/v1/Opportunity/{Id}/Longlist": {
      "get": {
        "tags": [
          "Opportunity"
        ],
        "summary": "Gets the list of candidates on the long list",
        "description": "Sample request:\r\n            \r\n    GET /\r\n    {\r\n       \"Id\": 1\r\n    }",
        "operationId": "GetLongList",
        "parameters": [
          {
            "name": "Id",
            "in": "path",
            "description": "",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Record found",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/LongListResponseDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/LongListResponseDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/LongListResponseDto"
                  }
                }
              }
            }
          },
          "204": {
            "description": "Record not found"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/Opportunity/{OpportunityId}/shortlist/resource/{ResourceId}": {
      "delete": {
        "tags": [
          "Opportunity"
        ],
        "summary": "Removes a resource from an opportunity's shortlist",
        "description": "Sample request:\r\n            \r\n    DELETE /\r\n    {\r\n       \"id\": 1,\r\n    }",
        "operationId": "RemoveFromShortlist",
        "parameters": [
          {
            "name": "OpportunityId",
            "in": "path",
            "description": "Id of opportunity",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "ResourceId",
            "in": "path",
            "description": "The resource to remove",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Record delete"
          },
          "204": {
            "description": "Record not found"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/Opportunity/{OpportunityId}/longlist/resource/{ResourceId}": {
      "delete": {
        "tags": [
          "Opportunity"
        ],
        "summary": "Removes a resource from an opportunity's longlist",
        "description": "Sample request:\r\n            \r\n    DELETE /\r\n    {\r\n       \"id\": 1,\r\n    }",
        "operationId": "RemoveFromLonglist",
        "parameters": [
          {
            "name": "OpportunityId",
            "in": "path",
            "description": "Id of opportunity",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "ResourceId",
            "in": "path",
            "description": "The resource to remove",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Record delete"
          },
          "204": {
            "description": "Record not found"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/Opportunity/PagedSearch": {
      "post": {
        "tags": [
          "Opportunity"
        ],
        "summary": "Searches for opportunity records using the supplied parameters",
        "operationId": "OpportunityPagedSearch",
        "requestBody": {
          "description": "",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/OpportunitySearchRequestDto"
                  }
                ],
                "description": "Opportunity Search Request Dto"
              }
            },
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/OpportunitySearchRequestDto"
                  }
                ],
                "description": "Opportunity Search Request Dto"
              }
            },
            "text/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/OpportunitySearchRequestDto"
                  }
                ],
                "description": "Opportunity Search Request Dto"
              }
            },
            "application/*+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/OpportunitySearchRequestDto"
                  }
                ],
                "description": "Opportunity Search Request Dto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Record found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/OpportunityPagedSearchResponseDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OpportunityPagedSearchResponseDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/OpportunityPagedSearchResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Internal Error"
          }
        }
      }
    },
    "/api/v1/OpportunityResource": {
      "post": {
        "tags": [
          "OpportunityResource"
        ],
        "summary": "Adds a resource to an opportunity's shortlist",
        "description": "",
        "operationId": "AddOpportunityResource",
        "requestBody": {
          "description": "",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ShortListDto"
                  }
                ],
                "description": "Short list transfer object"
              }
            },
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ShortListDto"
                  }
                ],
                "description": "Short list transfer object"
              }
            },
            "text/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ShortListDto"
                  }
                ],
                "description": "Short list transfer object"
              }
            },
            "application/*+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ShortListDto"
                  }
                ],
                "description": "Short list transfer object"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/Response"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Response"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Response"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "200": {
            "description": "record created successfully"
          },
          "204": {
            "description": "record not created"
          }
        }
      }
    },
    "/api/v1/OpportunityResource/Search": {
      "post": {
        "tags": [
          "OpportunityResource"
        ],
        "summary": "Searches for opportunityresource records using the supplied parameters",
        "description": " Sample request:\r\n\r\n     POST /\r\n     {\r\n       \t\"searchTerm\": \"John Doe\",\r\n\t        \"maxResults\": 50,\r\n\t        \"pageNumber\": 1,\r\n\t        \"statusId\": 1,\r\n\t        \"sortBy\": \"name\",\r\n\t        \"sortDirection\": \"desc\",\r\n\t        \"updatedBefore\": null,\r\n\t        \"updatedAfter\": null,\r\n\t        \"onlyMyRecords\": false,\r\n\t        \"includeCustomFields\": false\r\n     }",
        "operationId": "SearchOpportunityResources",
        "requestBody": {
          "description": "",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/OpportunityResourceSearchRequestDto"
                  }
                ],
                "description": "Search request DTO specifically for OpportunityResource records"
              }
            },
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/OpportunityResourceSearchRequestDto"
                  }
                ],
                "description": "Search request DTO specifically for OpportunityResource records"
              }
            },
            "text/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/OpportunityResourceSearchRequestDto"
                  }
                ],
                "description": "Search request DTO specifically for OpportunityResource records"
              }
            },
            "application/*+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/OpportunityResourceSearchRequestDto"
                  }
                ],
                "description": "Search request DTO specifically for OpportunityResource records"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Record found",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/OpportunityResourceSearchResponseDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/OpportunityResourceSearchResponseDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/OpportunityResourceSearchResponseDto"
                  }
                }
              }
            }
          },
          "204": {
            "description": "Record not found"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/OpportunityResource/{Id}": {
      "get": {
        "tags": [
          "OpportunityResource"
        ],
        "summary": "Gets an existing opportunity record",
        "description": "Sample request:\r\n            \r\n    GET /\r\n    {\r\n       \"Id\": 1\r\n    }",
        "operationId": "GetOpportunityResource",
        "parameters": [
          {
            "name": "Id",
            "in": "path",
            "description": "",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Record found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/OpportunityResourceResponseDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OpportunityResourceResponseDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/OpportunityResourceResponseDto"
                }
              }
            }
          },
          "204": {
            "description": "Record not found"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "OpportunityResource"
        ],
        "summary": "Updates an existing opportunity resource record",
        "description": "",
        "operationId": "UpdateOpportunityResource",
        "parameters": [
          {
            "name": "Id",
            "in": "path",
            "description": "The record id",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "example": 1001
          }
        ],
        "requestBody": {
          "description": "",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/OpportunityResourceRequestDto"
                  }
                ],
                "description": "Request payload for a opportunity resource"
              }
            },
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/OpportunityResourceRequestDto"
                  }
                ],
                "description": "Request payload for a opportunity resource"
              }
            },
            "text/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/OpportunityResourceRequestDto"
                  }
                ],
                "description": "Request payload for a opportunity resource"
              }
            },
            "application/*+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/OpportunityResourceRequestDto"
                  }
                ],
                "description": "Request payload for a opportunity resource"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Record updated",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedResponseDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedResponseDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedResponseDto"
                }
              }
            }
          },
          "204": {
            "description": "Record not found"
          },
          "400": {
            "description": "Bad request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "OpportunityResource"
        ],
        "summary": "Deletes an opportunityresource record",
        "description": "Sample request:\r\n            \r\n    DELETE /\r\n    {\r\n       \"id\": 1\r\n    }",
        "parameters": [
          {
            "name": "Id",
            "in": "path",
            "description": "",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Record delete"
          },
          "204": {
            "description": "Record not found"
          },
          "400": {
            "description": "Bad request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/OpportunityResource/Shortlist/{opportunityId}": {
      "get": {
        "tags": [
          "OpportunityResource"
        ],
        "summary": "Gets a opportunity short list",
        "description": "Sample request:\r\n            \r\n    GET /\r\n    {\r\n       \"opportunityId\": 1\r\n    }",
        "operationId": "GetShortlist",
        "parameters": [
          {
            "name": "opportunityId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Record found",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ShortListResource"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ShortListResource"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ShortListResource"
                  }
                }
              }
            }
          },
          "204": {
            "description": "Record not found"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/OpportunityResource/PagedSearch": {
      "post": {
        "tags": [
          "OpportunityResource"
        ],
        "summary": "Searches for opportunity resource records using the supplied parameters",
        "operationId": "OpportunityResourcePagedSearch",
        "requestBody": {
          "description": "",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/OpportunityResourceSearchRequestDto"
                  }
                ],
                "description": "Search request DTO specifically for OpportunityResource records"
              }
            },
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/OpportunityResourceSearchRequestDto"
                  }
                ],
                "description": "Search request DTO specifically for OpportunityResource records"
              }
            },
            "text/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/OpportunityResourceSearchRequestDto"
                  }
                ],
                "description": "Search request DTO specifically for OpportunityResource records"
              }
            },
            "application/*+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/OpportunityResourceSearchRequestDto"
                  }
                ],
                "description": "Search request DTO specifically for OpportunityResource records"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Record found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/OpportunityResourcePagedSearchResponseDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OpportunityResourcePagedSearchResponseDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/OpportunityResourcePagedSearchResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Internal Error"
          }
        }
      }
    },
    "/api/v1/PartnerRecord": {
      "post": {
        "tags": [
          "PartnerRecord"
        ],
        "summary": "Creates a new partner record",
        "description": "",
        "operationId": "AddPartnerRecord",
        "requestBody": {
          "description": "",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/PartnerRecordRequestDto"
                  }
                ]
              }
            },
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/PartnerRecordRequestDto"
                  }
                ]
              }
            },
            "text/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/PartnerRecordRequestDto"
                  }
                ]
              }
            },
            "application/*+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/PartnerRecordRequestDto"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedResponseDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedResponseDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "200": {
            "description": "record created successfully"
          },
          "204": {
            "description": "record not created"
          }
        }
      }
    },
    "/api/v1/PartnerRecord/Search": {
      "post": {
        "tags": [
          "PartnerRecord"
        ],
        "summary": "Searches for partner record records using the supplied parameters",
        "description": " Sample request:\r\n\r\n     POST /\r\n     {\r\n       \t\"searchTerm\": \"John Doe\",\r\n\t        \"maxResults\": 50,\r\n\t        \"pageNumber\": 1,\r\n\t        \"statusId\": 1,\r\n\t        \"sortBy\": \"name\",\r\n\t        \"sortDirection\": \"desc\",\r\n\t        \"updatedBefore\": null,\r\n\t        \"updatedAfter\": null,\r\n\t        \"onlyMyRecords\": false,\r\n\t        \"includeCustomFields\": false\r\n     }",
        "operationId": "SearchPartnerRecords",
        "requestBody": {
          "description": "",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/PartnerRecordSearchRequestDto"
                  }
                ]
              }
            },
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/PartnerRecordSearchRequestDto"
                  }
                ]
              }
            },
            "text/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/PartnerRecordSearchRequestDto"
                  }
                ]
              }
            },
            "application/*+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/PartnerRecordSearchRequestDto"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Record found",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PartnerRecordSearchResponseDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PartnerRecordSearchResponseDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PartnerRecordSearchResponseDto"
                  }
                }
              }
            }
          },
          "204": {
            "description": "Record not found"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/PartnerRecord/{PartnerRecordId}/Partner/{PartnerId}": {
      "get": {
        "tags": [
          "PartnerRecord"
        ],
        "summary": "Gets a list of existing records from the partners external id",
        "description": "Sample request:\r\n            \r\n    GET /\r\n    {\r\n       \"Id\": 1\r\n    }",
        "operationId": "GetPartnerRecord",
        "parameters": [
          {
            "name": "PartnerRecordId",
            "in": "path",
            "description": "",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "PartnerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Record found",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PartnerRecordResponseDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PartnerRecordResponseDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PartnerRecordResponseDto"
                  }
                }
              }
            }
          },
          "204": {
            "description": "Record not found"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/PartnerRecord/{Id}": {
      "patch": {
        "tags": [
          "PartnerRecord"
        ],
        "summary": "Updates an existing partner record record",
        "description": "",
        "operationId": "UpdatePartnerRecord",
        "parameters": [
          {
            "name": "Id",
            "in": "path",
            "description": "The record id",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "example": 27841
          }
        ],
        "requestBody": {
          "description": "",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/PartnerRecordRequestDto"
                  }
                ]
              }
            },
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/PartnerRecordRequestDto"
                  }
                ]
              }
            },
            "text/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/PartnerRecordRequestDto"
                  }
                ]
              }
            },
            "application/*+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/PartnerRecordRequestDto"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Record updated",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedResponseDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedResponseDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedResponseDto"
                }
              }
            }
          },
          "204": {
            "description": "Record not found"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "PartnerRecord"
        ],
        "summary": "Deletes a partner record record",
        "description": "Sample request:\r\n            \r\n    DELETE /\r\n    {\r\n       \"id\": 1,\r\n    }",
        "operationId": "DeletePartnerRecord",
        "parameters": [
          {
            "name": "Id",
            "in": "path",
            "description": "",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Record delete"
          },
          "204": {
            "description": "Record not found"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/PartnerRecord/PagedSearch": {
      "post": {
        "tags": [
          "PartnerRecord"
        ],
        "summary": "Searches for partner records using the supplied parameters",
        "operationId": "PartnerRecordPagedSearch",
        "requestBody": {
          "description": "",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/PartnerRecordSearchRequestDto"
                  }
                ]
              }
            },
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/PartnerRecordSearchRequestDto"
                  }
                ]
              }
            },
            "text/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/PartnerRecordSearchRequestDto"
                  }
                ]
              }
            },
            "application/*+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/PartnerRecordSearchRequestDto"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Record found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/PartnerRecordPagedSearchResponseDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PartnerRecordPagedSearchResponseDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/PartnerRecordPagedSearchResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Internal Error"
          }
        }
      }
    },
    "/api/v1/Project": {
      "post": {
        "tags": [
          "Project"
        ],
        "summary": "Creates a new project record",
        "description": "",
        "operationId": "AddProject",
        "requestBody": {
          "description": "",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ProjectRequestDto"
                  }
                ]
              }
            },
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ProjectRequestDto"
                  }
                ]
              }
            },
            "text/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ProjectRequestDto"
                  }
                ]
              }
            },
            "application/*+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ProjectRequestDto"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedResponseDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedResponseDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "200": {
            "description": "record created successfully"
          },
          "204": {
            "description": "record not created"
          }
        }
      }
    },
    "/api/v1/Project/Opportunity/{Id}": {
      "post": {
        "tags": [
          "Project"
        ],
        "summary": "Creates a new project record from a existing opportunity",
        "description": "",
        "operationId": "AddProjectFromOpportunity",
        "parameters": [
          {
            "name": "Id",
            "in": "path",
            "description": "",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request successfull",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedResponseDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedResponseDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedResponseDto"
                }
              }
            }
          },
          "201": {
            "description": "Project created successfully",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedResponseDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedResponseDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/Project/{Id}": {
      "get": {
        "tags": [
          "Project"
        ],
        "summary": "Gets an existing project record",
        "description": "Sample request:\r\n            \r\n    GET /\r\n    {\r\n       \"Id\": 1,\r\n    }",
        "operationId": "GetProject",
        "parameters": [
          {
            "name": "Id",
            "in": "path",
            "description": "",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Record found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProjectResponseDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProjectResponseDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProjectResponseDto"
                }
              }
            }
          },
          "204": {
            "description": "Record not found"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Project"
        ],
        "summary": "Updates an existing project record",
        "description": "",
        "operationId": "UpdateProject",
        "parameters": [
          {
            "name": "Id",
            "in": "path",
            "description": "The record id",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "example": 1001
          }
        ],
        "requestBody": {
          "description": "",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ProjectRequestDto"
                  }
                ]
              }
            },
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ProjectRequestDto"
                  }
                ]
              }
            },
            "text/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ProjectRequestDto"
                  }
                ]
              }
            },
            "application/*+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ProjectRequestDto"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Record updated",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedResponseDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedResponseDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedResponseDto"
                }
              }
            }
          },
          "204": {
            "description": "Record not found"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Project"
        ],
        "summary": "Deletes a project record",
        "description": "Sample request:\r\n            \r\n    DELETE /\r\n    {\r\n       \"id\": 1,\r\n    }",
        "operationId": "DeleteProject",
        "parameters": [
          {
            "name": "Id",
            "in": "path",
            "description": "",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Record delete"
          },
          "204": {
            "description": "Record not found"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/Project/{Id}/Activities": {
      "get": {
        "tags": [
          "Project"
        ],
        "summary": "Gets associated project activities/tasks for this project",
        "operationId": "GetProjectActivities",
        "parameters": [
          {
            "name": "Id",
            "in": "path",
            "description": "",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Record found",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "integer",
                    "format": "int32"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "integer",
                    "format": "int32"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "integer",
                    "format": "int32"
                  }
                }
              }
            }
          },
          "204": {
            "description": "Record not found"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/Project/Search": {
      "post": {
        "tags": [
          "Project"
        ],
        "summary": "Searches for project records based on supplied parameters",
        "description": " Sample request:\r\n\r\n     POST /\r\n     {\r\n       \t\"searchTerm\": \"John Doe\",\r\n\t        \"maxResults\": 50,\r\n\t        \"pageNumber\": 1,\r\n\t        \"statusId\": 1,\r\n\t        \"sortBy\": \"name\",\r\n\t        \"sortDirection\": \"desc\",\r\n\t        \"updatedBefore\": null,\r\n\t        \"updatedAfter\": null,\r\n\t        \"onlyMyRecords\": false,\r\n\t        \"includeCustomFields\": false\r\n     }",
        "operationId": "SearchProjects",
        "requestBody": {
          "description": "",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/SearchRequestDto"
                  }
                ]
              }
            },
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/SearchRequestDto"
                  }
                ]
              }
            },
            "text/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/SearchRequestDto"
                  }
                ]
              }
            },
            "application/*+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/SearchRequestDto"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Record found",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ProjectSearchResponseDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ProjectSearchResponseDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ProjectSearchResponseDto"
                  }
                }
              }
            }
          },
          "204": {
            "description": "Record not found"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/Project/AttachDocument": {
      "post": {
        "tags": [
          "Project"
        ],
        "summary": "Attaches a document to a project record",
        "description": "",
        "operationId": "AttachProjectDocument",
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/DocumentDto"
                  }
                ]
              }
            },
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/DocumentDto"
                  }
                ]
              }
            },
            "text/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/DocumentDto"
                  }
                ]
              }
            },
            "application/*+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/DocumentDto"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Document attached successfully",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedResponseDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedResponseDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/Project/DocumentFolders/{Id}": {
      "get": {
        "tags": [
          "Project"
        ],
        "summary": "Lists all document folders for a project record",
        "description": "Sample request:\r\n            \r\n    GET /\r\n    {\r\n       \"Id\": 1,\r\n    }",
        "operationId": "GetProjectDocumentFolders",
        "parameters": [
          {
            "name": "Id",
            "in": "path",
            "description": "",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Folders found",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/DocumentFolderResponse"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/DocumentFolderResponse"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/DocumentFolderResponse"
                  }
                }
              }
            }
          },
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/Project/PagedSearch": {
      "post": {
        "tags": [
          "Project"
        ],
        "summary": "Searches for project records using the supplied parameters",
        "operationId": "ProjectPagedSearch",
        "requestBody": {
          "description": "",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/SearchRequestDto"
                  }
                ]
              }
            },
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/SearchRequestDto"
                  }
                ]
              }
            },
            "text/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/SearchRequestDto"
                  }
                ]
              }
            },
            "application/*+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/SearchRequestDto"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Record found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProjectPagedSearchResponseDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProjectPagedSearchResponseDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProjectPagedSearchResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Internal Error"
          }
        }
      }
    },
    "/api/v1/ProjectActivity": {
      "post": {
        "tags": [
          "ProjectActivity"
        ],
        "summary": "Creates a new project activity / task record",
        "description": "",
        "operationId": "AddProjectActivity",
        "requestBody": {
          "description": "",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ProjectActivityRequestDto"
                  }
                ]
              }
            },
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ProjectActivityRequestDto"
                  }
                ]
              }
            },
            "text/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ProjectActivityRequestDto"
                  }
                ]
              }
            },
            "application/*+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ProjectActivityRequestDto"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedResponseDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedResponseDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "200": {
            "description": "record created successfully"
          },
          "204": {
            "description": "record not created"
          }
        }
      }
    },
    "/api/v1/ProjectActivity/{Id}": {
      "get": {
        "tags": [
          "ProjectActivity"
        ],
        "summary": "Gets an existing project activity record",
        "description": "Sample request:\r\n            \r\n    GET /\r\n    {\r\n       \"Id\": 1,\r\n    }",
        "operationId": "GetProjectActivity",
        "parameters": [
          {
            "name": "Id",
            "in": "path",
            "description": "",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Record found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProjectActivityResponseDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProjectActivityResponseDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProjectActivityResponseDto"
                }
              }
            }
          },
          "204": {
            "description": "Record not found"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "ProjectActivity"
        ],
        "summary": "Updates an existing project activity record",
        "description": "",
        "operationId": "UpdateProjectActivity",
        "parameters": [
          {
            "name": "Id",
            "in": "path",
            "description": "The record id",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "example": 1001
          }
        ],
        "requestBody": {
          "description": "",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ProjectActivityRequestDto"
                  }
                ]
              }
            },
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ProjectActivityRequestDto"
                  }
                ]
              }
            },
            "text/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ProjectActivityRequestDto"
                  }
                ]
              }
            },
            "application/*+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ProjectActivityRequestDto"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Record updated",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedResponseDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedResponseDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedResponseDto"
                }
              }
            }
          },
          "204": {
            "description": "Record not found"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "ProjectActivity"
        ],
        "summary": "Deletes a project activity record",
        "description": "Sample request:\r\n            \r\n    DELETE /\r\n    {\r\n       \"id\": 1,\r\n    }",
        "operationId": "DeleteProjectActivity",
        "parameters": [
          {
            "name": "Id",
            "in": "path",
            "description": "",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Record delete"
          },
          "204": {
            "description": "Record not found"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/ProjectActivity/{Id}/Resources": {
      "get": {
        "tags": [
          "ProjectActivity"
        ],
        "summary": "Gets project activity resources",
        "operationId": "ListProjectActivityResources",
        "parameters": [
          {
            "name": "Id",
            "in": "path",
            "description": "",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Record found",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ProjectActivityResourceResponseDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ProjectActivityResourceResponseDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ProjectActivityResourceResponseDto"
                  }
                }
              }
            }
          },
          "204": {
            "description": "Record not found"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/ProjectActivityResource": {
      "post": {
        "tags": [
          "ProjectActivityResource"
        ],
        "summary": "Creates a new project activity resource",
        "description": "",
        "operationId": "AddProjectActivityResource",
        "requestBody": {
          "description": "",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ProjectActivityResourceRequestDto"
                  }
                ]
              }
            },
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ProjectActivityResourceRequestDto"
                  }
                ]
              }
            },
            "text/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ProjectActivityResourceRequestDto"
                  }
                ]
              }
            },
            "application/*+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ProjectActivityResourceRequestDto"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedResponseDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedResponseDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "200": {
            "description": "record created successfully"
          },
          "204": {
            "description": "record not created"
          }
        }
      }
    },
    "/api/v1/ProjectActivityResource/{Id}": {
      "get": {
        "tags": [
          "ProjectActivityResource"
        ],
        "summary": "Gets an existing project activity record",
        "description": "Sample request:\r\n            \r\n    GET /\r\n    {\r\n       \"Id\": 1,\r\n    }",
        "operationId": "GetProjectActivityResource",
        "parameters": [
          {
            "name": "Id",
            "in": "path",
            "description": "",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Record found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProjectActivityResourceResponseDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProjectActivityResourceResponseDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProjectActivityResourceResponseDto"
                }
              }
            }
          },
          "204": {
            "description": "Record not found"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "ProjectActivityResource"
        ],
        "summary": "Updates an existing project activity resource record",
        "description": "",
        "operationId": "UpdateProjectActivityResource",
        "parameters": [
          {
            "name": "Id",
            "in": "path",
            "description": "The project activity resource id to update",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "example": 1001
          }
        ],
        "requestBody": {
          "description": "",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ProjectActivityResourceRequestDto"
                  }
                ]
              }
            },
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ProjectActivityResourceRequestDto"
                  }
                ]
              }
            },
            "text/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ProjectActivityResourceRequestDto"
                  }
                ]
              }
            },
            "application/*+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ProjectActivityResourceRequestDto"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Record updated",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedResponseDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedResponseDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedResponseDto"
                }
              }
            }
          },
          "204": {
            "description": "Record not found"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "ProjectActivityResource"
        ],
        "summary": "Deletes a project activity resource record",
        "description": "Sample request:\r\n            \r\n    DELETE /\r\n    {\r\n       \"id\": 1,\r\n    }",
        "operationId": "DeleteProjectActivityResource",
        "parameters": [
          {
            "name": "Id",
            "in": "path",
            "description": "",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Record delete"
          },
          "204": {
            "description": "Record not found"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/RecordCategory": {
      "post": {
        "tags": [
          "RecordCategory"
        ],
        "summary": "Applies the category to the record.",
        "operationId": "AddRecordCategory",
        "requestBody": {
          "description": "The new record.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/RecordCategoryRequestDto"
                  }
                ]
              }
            },
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/RecordCategoryRequestDto"
                  }
                ]
              }
            },
            "text/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/RecordCategoryRequestDto"
                  }
                ]
              }
            },
            "application/*+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/RecordCategoryRequestDto"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedResponseDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedResponseDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error"
          }
        }
      }
    },
    "/api/v1/RecordCategory/{Id}": {
      "delete": {
        "tags": [
          "RecordCategory"
        ],
        "summary": "Removes the category from the record. Id is the link Id returned when applying a category, not the category Id returned in Metadata.",
        "operationId": "DeleteRecordCategory",
        "parameters": [
          {
            "name": "Id",
            "in": "path",
            "description": "The identifier.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error"
          }
        }
      }
    },
    "/api/v1/Resource": {
      "post": {
        "tags": [
          "Resource"
        ],
        "summary": "Creates a new resource record",
        "description": "",
        "operationId": "AddResource",
        "requestBody": {
          "description": "",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ResourceRequestDto"
                  }
                ],
                "description": "Resource requst object for resource api"
              }
            },
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ResourceRequestDto"
                  }
                ],
                "description": "Resource requst object for resource api"
              }
            },
            "text/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ResourceRequestDto"
                  }
                ],
                "description": "Resource requst object for resource api"
              }
            },
            "application/*+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ResourceRequestDto"
                  }
                ],
                "description": "Resource requst object for resource api"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedResponseDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedResponseDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "200": {
            "description": "record created successfully"
          },
          "204": {
            "description": "record not created"
          }
        }
      }
    },
    "/api/v1/Resource/CreateFromResume": {
      "post": {
        "tags": [
          "Resource"
        ],
        "summary": "Creates a new resource record from a resume",
        "description": "",
        "operationId": "CreateResourceFromResume",
        "requestBody": {
          "description": "",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ParseRequest"
                  }
                ]
              }
            },
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ParseRequest"
                  }
                ]
              }
            },
            "text/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ParseRequest"
                  }
                ]
              }
            },
            "application/*+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ParseRequest"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "record created successfully",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ParseResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ParseResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ParseResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/Resource/AttachDocument": {
      "post": {
        "tags": [
          "Resource"
        ],
        "summary": "Attaches a document to a resource record",
        "description": "",
        "operationId": "AttachResourceDocument",
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/DocumentDto"
                  }
                ]
              }
            },
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/DocumentDto"
                  }
                ]
              }
            },
            "text/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/DocumentDto"
                  }
                ]
              }
            },
            "application/*+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/DocumentDto"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Document attached successfully",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedResponseDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedResponseDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/Resource/Search": {
      "post": {
        "tags": [
          "Resource"
        ],
        "summary": "Searches for resource records based on supplied parameters",
        "description": " Sample request:\r\n\r\n     POST /\r\n     {\r\n       \t\"searchTerm\": \"John Doe\",\r\n\t        \"maxResults\": 50,\r\n\t        \"pageNumber\": 1,\r\n\t        \"sortBy\": \"name\",\r\n\t        \"sortDirection\": \"desc\",\r\n\t        \"updatedBefore\": null,\r\n\t        \"updatedAfter\": null,\r\n\t        \"onlyMyRecords\": false,\r\n\t        \"includeCustomFields\": false,\r\n\t        \"state\": \"active\",\r\n\t        \"telephone\": \"555 0100\",\r\n\t        \"email\": \"john.doe@example.com\"\r\n     }",
        "operationId": "SearchResources",
        "requestBody": {
          "description": "",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ResourceSearchRequestDto"
                  }
                ]
              }
            },
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ResourceSearchRequestDto"
                  }
                ]
              }
            },
            "text/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ResourceSearchRequestDto"
                  }
                ]
              }
            },
            "application/*+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ResourceSearchRequestDto"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Record found",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ResourceSearchResponseDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ResourceSearchResponseDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ResourceSearchResponseDto"
                  }
                }
              }
            }
          },
          "204": {
            "description": "Record not found"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/Resource/Search/CustomField": {
      "post": {
        "tags": [
          "Resource"
        ],
        "summary": "Searches custom fields for resource records using the supplied parameters",
        "description": " Sample request:\r\n\r\n     POST /\r\n     {\r\n       \t\"searchTerm\": \"John Doe\",\r\n\t        \"maxResults\": 50,\r\n\t        \"pageNumber\": 1,\r\n\t        \"sortBy\": \"name\",\r\n\t        \"sortDirection\": \"desc\",\r\n\t        \"customFieldId\": 0\r\n     }",
        "operationId": "SearchResourcesCustomFields",
        "requestBody": {
          "description": "",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/SearchCustomFieldRequestDto"
                  }
                ]
              }
            },
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/SearchCustomFieldRequestDto"
                  }
                ]
              }
            },
            "text/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/SearchCustomFieldRequestDto"
                  }
                ]
              }
            },
            "application/*+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/SearchCustomFieldRequestDto"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Record found",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ResourceSearchResponseDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ResourceSearchResponseDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ResourceSearchResponseDto"
                  }
                }
              }
            }
          },
          "204": {
            "description": "Record not found"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/Resource/{Id}": {
      "patch": {
        "tags": [
          "Resource"
        ],
        "summary": "Updates an existing resource record",
        "description": "",
        "operationId": "UpdateResource",
        "parameters": [
          {
            "name": "Id",
            "in": "path",
            "description": "The record id",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "example": 1001
          }
        ],
        "requestBody": {
          "description": "",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ResourceRequestDto"
                  }
                ],
                "description": "Resource requst object for resource api"
              }
            },
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ResourceRequestDto"
                  }
                ],
                "description": "Resource requst object for resource api"
              }
            },
            "text/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ResourceRequestDto"
                  }
                ],
                "description": "Resource requst object for resource api"
              }
            },
            "application/*+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ResourceRequestDto"
                  }
                ],
                "description": "Resource requst object for resource api"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Record updated",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedResponseDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedResponseDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedResponseDto"
                }
              }
            }
          },
          "204": {
            "description": "Record not found"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      },
      "get": {
        "tags": [
          "Resource"
        ],
        "summary": "Gets an existing resource record",
        "description": "Sample request:\r\n            \r\n    GET /\r\n    {\r\n       \"Id\": 1,\r\n    }",
        "operationId": "GetResource",
        "parameters": [
          {
            "name": "Id",
            "in": "path",
            "description": "",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Record found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceResponseDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceResponseDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceResponseDto"
                }
              }
            }
          },
          "204": {
            "description": "Record not found"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Resource"
        ],
        "summary": "Deletes a resource record",
        "description": "Sample request:\r\n            \r\n    DELETE /\r\n    {\r\n       \"id\": 1,\r\n    }",
        "operationId": "DeleteResource",
        "parameters": [
          {
            "name": "Id",
            "in": "path",
            "description": "",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Record delete"
          },
          "204": {
            "description": "Record not found"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/Resource/DocumentFolders/{Id}": {
      "get": {
        "tags": [
          "Resource"
        ],
        "summary": "Lists all document folders for a resource record",
        "description": "Sample request:\r\n            \r\n    GET /\r\n    {\r\n       \"Id\": 1,\r\n    }",
        "operationId": "GetResourceDocumentFolders",
        "parameters": [
          {
            "name": "Id",
            "in": "path",
            "description": "",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Folders found",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/DocumentFolderResponse"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/DocumentFolderResponse"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/DocumentFolderResponse"
                  }
                }
              }
            }
          },
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/Resource/{id}/Documents": {
      "get": {
        "tags": [
          "Resource"
        ],
        "summary": "Gets documents for a resource",
        "operationId": "GetResourceDocuments",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ResourceDocumentDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ResourceDocumentDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ResourceDocumentDto"
                  }
                }
              }
            }
          },
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/Resource/{resourceId}/Document/{documentId}": {
      "get": {
        "tags": [
          "Resource"
        ],
        "summary": "Gets the physical file for a specific resource document",
        "operationId": "GetResourceDocumentFile",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The resource ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "documentId",
            "in": "path",
            "description": "The document ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "File found and returned successfully",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/FileContentResponseDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FileContentResponseDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/FileContentResponseDto"
                }
              }
            }
          },
          "204": {
            "description": "File not found"
          },
          "400": {
            "description": "Bad request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/Resource/{resourceId}/Skills": {
      "post": {
        "tags": [
          "Resource"
        ],
        "summary": "Adds or updates multiple skills for a resource",
        "description": "Sample request:\r\n            \r\n    POST /api/v1/Resource/123/Skills\r\n    {\r\n        \"skills\": [\r\n            {\r\n                \"skillId\": 1,\r\n                \"skillValueId\": 10,\r\n                \"skillValue\": \"Expert\"\r\n            },\r\n            {\r\n                \"skillId\": 2,\r\n                \"skillValue\": \"Yes\"\r\n            }\r\n        ]\r\n    }",
        "operationId": "AddResourceSkills",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The resource identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "List of skills to add or update",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/SkillsRequestDto"
                  }
                ],
                "description": "Skills request object for managing multiple skills on a record"
              }
            },
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/SkillsRequestDto"
                  }
                ],
                "description": "Skills request object for managing multiple skills on a record"
              }
            },
            "text/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/SkillsRequestDto"
                  }
                ],
                "description": "Skills request object for managing multiple skills on a record"
              }
            },
            "application/*+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/SkillsRequestDto"
                  }
                ],
                "description": "Skills request object for managing multiple skills on a record"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Skills added successfully",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedResponseDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedResponseDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      },
      "get": {
        "tags": [
          "Resource"
        ],
        "summary": "Gets all skills for a resource",
        "description": "",
        "operationId": "GetResourceSkills",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The resource identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Skills found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/SkillsResponseDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SkillsResponseDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/SkillsResponseDto"
                }
              }
            }
          },
          "204": {
            "description": "No skills found"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Resource"
        ],
        "summary": "Replaces all skills for a resource with the provided skills",
        "description": "This endpoint will delete all existing skills and replace them with the provided skills.\r\n\r\nSample request:\r\n            \r\n    PUT /api/v1/Resource/123/Skills\r\n    {\r\n        \"skills\": [\r\n            {\r\n                \"skillId\": 1,\r\n                \"skillValueId\": 10,\r\n                \"skillValue\": \"Expert\"\r\n            },\r\n            {\r\n                \"skillId\": 3,\r\n                \"skillValue\": \"Intermediate\"\r\n            }\r\n        ]\r\n    }",
        "operationId": "UpdateResourceSkills",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The resource identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "The complete list of skills to replace existing ones",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/SkillsRequestDto"
                  }
                ],
                "description": "Skills request object for managing multiple skills on a record"
              }
            },
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/SkillsRequestDto"
                  }
                ],
                "description": "Skills request object for managing multiple skills on a record"
              }
            },
            "text/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/SkillsRequestDto"
                  }
                ],
                "description": "Skills request object for managing multiple skills on a record"
              }
            },
            "application/*+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/SkillsRequestDto"
                  }
                ],
                "description": "Skills request object for managing multiple skills on a record"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Skills updated successfully",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedResponseDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedResponseDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedResponseDto"
                }
              }
            }
          },
          "204": {
            "description": "Resource not found"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Resource"
        ],
        "summary": "Deletes all skills for a resource",
        "description": "",
        "operationId": "DeleteResourceSkills",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The resource identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Skills deleted successfully"
          },
          "400": {
            "description": "Bad request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/Resource/{resourceId}/Skills/{skillId}": {
      "get": {
        "tags": [
          "Resource"
        ],
        "summary": "Gets a specific skill for a resource by resource ID and skill ID",
        "description": "",
        "operationId": "GetResourceSkill",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The resource identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "skillId",
            "in": "path",
            "description": "The skill identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Skill found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/RecordSkillDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RecordSkillDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/RecordSkillDto"
                }
              }
            }
          },
          "204": {
            "description": "Skill not found"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Resource"
        ],
        "summary": "Deletes a specific skill for a resource by resource ID and skill ID",
        "description": "",
        "operationId": "DeleteResourceSkill",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The resource identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "skillId",
            "in": "path",
            "description": "The skill identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Skill deleted successfully"
          },
          "204": {
            "description": "Skill not found"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/Resource/PagedSearch": {
      "post": {
        "tags": [
          "Resource"
        ],
        "summary": "Searches for resource records using the supplied parameters",
        "operationId": "ResourcePagedSearch",
        "requestBody": {
          "description": "",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ResourceSearchRequestDto"
                  }
                ]
              }
            },
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ResourceSearchRequestDto"
                  }
                ]
              }
            },
            "text/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ResourceSearchRequestDto"
                  }
                ]
              }
            },
            "application/*+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ResourceSearchRequestDto"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Record found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ResourcePagedSearchResponseDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourcePagedSearchResponseDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourcePagedSearchResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Internal Error"
          }
        }
      }
    },
    "/api/v1/Resource/{resourceId}/EmploymentHistory": {
      "get": {
        "tags": [
          "Resource"
        ],
        "summary": "Gets the employment history for the resource record",
        "operationId": "GetEmploymentHistory",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Record found",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ResourceHistoryServiceDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ResourceHistoryServiceDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ResourceHistoryServiceDto"
                  }
                }
              }
            }
          },
          "204": {
            "description": "Record not found"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Resource"
        ],
        "summary": "Adds a new employment history record to a resource",
        "operationId": "AddEmploymentHistory",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ResourceHistoryServiceDto"
                  }
                ]
              }
            },
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ResourceHistoryServiceDto"
                  }
                ]
              }
            },
            "text/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ResourceHistoryServiceDto"
                  }
                ]
              }
            },
            "application/*+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ResourceHistoryServiceDto"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedResponseDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedResponseDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "200": {
            "description": "Record found"
          },
          "204": {
            "description": "Record not found"
          }
        }
      }
    },
    "/api/v1/Resource/{resourceId}/EmploymentHistory/{Id}": {
      "patch": {
        "tags": [
          "Resource"
        ],
        "summary": "Updates an existing employment history record",
        "operationId": "UpdateEmploymentHistory",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "Id",
            "in": "path",
            "description": "",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ResourceHistoryServiceDto"
                  }
                ]
              }
            },
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ResourceHistoryServiceDto"
                  }
                ]
              }
            },
            "text/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ResourceHistoryServiceDto"
                  }
                ]
              }
            },
            "application/*+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ResourceHistoryServiceDto"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Record found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedResponseDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedResponseDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedResponseDto"
                }
              }
            }
          },
          "204": {
            "description": "Record not found"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Resource"
        ],
        "summary": "Deletes an existing employment history record",
        "operationId": "DeleteEmploymentHistory",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "Id",
            "in": "path",
            "description": "",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Record found"
          },
          "204": {
            "description": "Record not found"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/Resource/{resourceId}/Compliance/{resourceComplianceId}": {
      "get": {
        "tags": [
          "Resource"
        ],
        "summary": "Gets a specific compliance item for a resource",
        "operationId": "GetResourceCompliance",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The resource identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "resourceComplianceId",
            "in": "path",
            "description": "The resource identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Compliance items retrieved successfully",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ResourceComplianceResponseDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ResourceComplianceResponseDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ResourceComplianceResponseDto"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error"
          }
        }
      },
      "patch": {
        "tags": [
          "Resource"
        ],
        "summary": "Updates an existing compliance item for a resource",
        "operationId": "UpdateResourceCompliance",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The resource identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "resourceComplianceId",
            "in": "path",
            "description": "The resource compliance identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "The compliance item",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ResourceComplianceRequestDto"
                  }
                ],
                "description": "Resource Compliance Request Dto"
              }
            },
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ResourceComplianceRequestDto"
                  }
                ],
                "description": "Resource Compliance Request Dto"
              }
            },
            "text/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ResourceComplianceRequestDto"
                  }
                ],
                "description": "Resource Compliance Request Dto"
              }
            },
            "application/*+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ResourceComplianceRequestDto"
                  }
                ],
                "description": "Resource Compliance Request Dto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedResponseDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedResponseDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error"
          }
        }
      },
      "delete": {
        "tags": [
          "Resource"
        ],
        "summary": "Deletes a specific compliance item from a resource",
        "operationId": "DeleteResourceCompliance",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The resource identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "resourceComplianceId",
            "in": "path",
            "description": "The resource compliance identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error"
          }
        }
      }
    },
    "/api/v1/Resource/{resourceId}/Compliance": {
      "get": {
        "tags": [
          "Resource"
        ],
        "summary": "Gets all compliance items for a resource",
        "operationId": "GetResourceComplianceByResourceId",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The resource identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Compliance items retrieved successfully",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ResourceComplianceResponseDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ResourceComplianceResponseDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ResourceComplianceResponseDto"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error"
          }
        }
      },
      "post": {
        "tags": [
          "Resource"
        ],
        "summary": "Adds a compliance item to a resource",
        "operationId": "AddResourceCompliance",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The resource identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "The compliance item",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ResourceComplianceRequestDto"
                  }
                ],
                "description": "Resource Compliance Request Dto"
              }
            },
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ResourceComplianceRequestDto"
                  }
                ],
                "description": "Resource Compliance Request Dto"
              }
            },
            "text/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ResourceComplianceRequestDto"
                  }
                ],
                "description": "Resource Compliance Request Dto"
              }
            },
            "application/*+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ResourceComplianceRequestDto"
                  }
                ],
                "description": "Resource Compliance Request Dto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedResponseDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedResponseDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedResponseDto"
                }
              }
            }
          },
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error"
          }
        }
      }
    },
    "/api/v1/Resource/{resourceId}/Compliance/{resourceComplianceId}/Document": {
      "post": {
        "tags": [
          "Resource"
        ],
        "summary": "Attaches a document to a resource compliance item",
        "operationId": "AddResourceComplianceDocument",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The resource identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "resourceComplianceId",
            "in": "path",
            "description": "The resource compliance identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "The document",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ComplianceDocumentRequestDto"
                  }
                ],
                "description": "Compliance Document Request Dto"
              }
            },
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ComplianceDocumentRequestDto"
                  }
                ],
                "description": "Compliance Document Request Dto"
              }
            },
            "text/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ComplianceDocumentRequestDto"
                  }
                ],
                "description": "Compliance Document Request Dto"
              }
            },
            "application/*+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ComplianceDocumentRequestDto"
                  }
                ],
                "description": "Compliance Document Request Dto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedResponseDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedResponseDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error"
          }
        }
      }
    },
    "/api/v1/Resource/{resourceId}/Compliance/{resourceComplianceId}/Document/{documentId}": {
      "delete": {
        "tags": [
          "Resource"
        ],
        "summary": "Deletes a document from a resource compliance item",
        "operationId": "DeleteResourceComplianceDocument",
        "parameters": [
          {
            "name": "resourceId",
            "in": "path",
            "description": "The resource identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "resourceComplianceId",
            "in": "path",
            "description": "The resource compliance identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "documentId",
            "in": "path",
            "description": "The document identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error"
          }
        }
      }
    },
    "/api/v1/Screening/Template/{templateId}": {
      "get": {
        "tags": [
          "Screening"
        ],
        "summary": "Gets a screening template and its active questions",
        "operationId": "GetTemplate",
        "parameters": [
          {
            "name": "templateId",
            "in": "path",
            "description": "The template id",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "example": 1
          }
        ],
        "responses": {
          "200": {
            "description": "Template found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ScreeningTemplateResponseDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ScreeningTemplateResponseDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ScreeningTemplateResponseDto"
                }
              }
            }
          },
          "204": {
            "description": "Template not found"
          },
          "400": {
            "description": "Bad request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/Screening/Interview/{interviewId}": {
      "get": {
        "tags": [
          "Screening"
        ],
        "summary": "Gets the latest screening interview for an opportunity-resource, including its questions.\r\nReturns question ids from the InterviewQuestions table (i.e. the ids to use when submitting answers).",
        "operationId": "GetInterview",
        "parameters": [
          {
            "name": "interviewId",
            "in": "path",
            "description": "The id of the interview can be found calling GET for a opportunity resources interviews",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Interview found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/FullInterviewResponseDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FullInterviewResponseDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/FullInterviewResponseDto"
                }
              }
            }
          },
          "204": {
            "description": "No matching interview found"
          },
          "400": {
            "description": "Bad request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/Screening/Interview/OpportunityResource/{opportunityResourceId}": {
      "get": {
        "tags": [
          "Screening"
        ],
        "summary": "Gets all interviews for an opportunity-resource, most recent first.",
        "operationId": "GetScreeningInterviews",
        "parameters": [
          {
            "name": "opportunityResourceId",
            "in": "path",
            "description": "The opportunity-resource id",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Interviews found",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/InterviewResponseDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/InterviewResponseDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/InterviewResponseDto"
                  }
                }
              }
            }
          },
          "204": {
            "description": "No interviews found"
          },
          "400": {
            "description": "Bad request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/Screening/Interview": {
      "post": {
        "tags": [
          "Screening"
        ],
        "summary": "Creates a new interview from a template, seeding its questions from InterviewTemplateQuestions.",
        "description": "Provide either:\r\n            \r\nresourceId and opportunityId  \r\nor  \r\nopportunityResourceId  \r\n            \r\nThe interviewCode returned can be used to build the candidate-facing portal URL.",
        "operationId": "CreateInterview",
        "requestBody": {
          "description": "The create interview payload",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/CreateInterviewRequestDto"
                  }
                ]
              }
            },
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/CreateInterviewRequestDto"
                  }
                ]
              }
            },
            "text/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/CreateInterviewRequestDto"
                  }
                ]
              }
            },
            "application/*+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/CreateInterviewRequestDto"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Interview created successfully",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/CreateInterviewResponseDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreateInterviewResponseDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreateInterviewResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed or bad request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Template not found or record type unrecognised",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/Screening/Interview/{interviewId}/Answers": {
      "patch": {
        "tags": [
          "Screening"
        ],
        "summary": "Records a completed external screening session and its answers.",
        "description": "Used to submit answers for a specific interview, screening, video or ai chat",
        "operationId": "SubmitInterviewAnswers",
        "parameters": [
          {
            "name": "interviewId",
            "in": "path",
            "description": "",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "The submission payload",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ScreeningSubmissionRequestDto"
                  }
                ]
              }
            },
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ScreeningSubmissionRequestDto"
                  }
                ]
              }
            },
            "text/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ScreeningSubmissionRequestDto"
                  }
                ]
              }
            },
            "application/*+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ScreeningSubmissionRequestDto"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Screening session and answers recorded",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/InterviewSubmissionResponseDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InterviewSubmissionResponseDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/InterviewSubmissionResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed (missing fields, invalid score, etc.)",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "No matching opportunity-resource could be found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/SendList/PagedSearch": {
      "post": {
        "tags": [
          "SendList"
        ],
        "summary": "Searches for send list records using the supplied parameters",
        "operationId": "SendListPagedSearch",
        "requestBody": {
          "description": "",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/SendListSearchRequestDto"
                  }
                ],
                "description": "Send List Search Request Dto"
              }
            },
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/SendListSearchRequestDto"
                  }
                ],
                "description": "Send List Search Request Dto"
              }
            },
            "text/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/SendListSearchRequestDto"
                  }
                ],
                "description": "Send List Search Request Dto"
              }
            },
            "application/*+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/SendListSearchRequestDto"
                  }
                ],
                "description": "Send List Search Request Dto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Record found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/SendListPagedSearchResponseDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SendListPagedSearchResponseDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/SendListPagedSearchResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Internal Error"
          }
        }
      }
    },
    "/api/v1/SendListPeople/PagedSearch": {
      "post": {
        "tags": [
          "SendListPeople"
        ],
        "summary": "Searches for send list people records using the supplied parameters",
        "operationId": "SendListPeoplePagedSearch",
        "requestBody": {
          "description": "",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/SendListPeopleSearchRequestDto"
                  }
                ],
                "description": "Send List People Search Request Dto"
              }
            },
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/SendListPeopleSearchRequestDto"
                  }
                ],
                "description": "Send List People Search Request Dto"
              }
            },
            "text/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/SendListPeopleSearchRequestDto"
                  }
                ],
                "description": "Send List People Search Request Dto"
              }
            },
            "application/*+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/SendListPeopleSearchRequestDto"
                  }
                ],
                "description": "Send List People Search Request Dto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Record found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/SendListPeoplePagedSearchResponseDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SendListPeoplePagedSearchResponseDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/SendListPeoplePagedSearchResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Internal Error"
          },
          "204": {
            "description": "Record not found"
          }
        }
      }
    },
    "/api/v1/Shift/PagedSearch": {
      "post": {
        "tags": [
          "Shift"
        ],
        "summary": "Searches for shifts and how many positions each one still has free, grouped by the\r\nopportunity they belong to.",
        "description": "Sample request:\r\n            \r\n    POST /api/v1/Shift/PagedSearch\r\n    {\r\n        \"opportunityId\": 5721,\r\n        \"startDate\": \"2026-08-11\",\r\n        \"endDate\": \"2026-08-18\",\r\n        \"maxResults\": 10,\r\n        \"startingAfter\": 0\r\n    }\r\n            \r\n<b>maxResults counts opportunities, not shifts.</b> Every matching shift for an\r\nincluded opportunity is returned, so a page holds more shifts than opportunities and\r\none opportunity is never split across two pages. Use `nextCursor` from the\r\nresponse as `startingAfter` on the next request.\r\n            \r\nOnly opportunities with at least one shift matching the date filters are returned,\r\nand only shifts that are bookable - the opportunity and client active, the\r\nopportunity not closed, and the shift having at least one position.",
        "operationId": "ShiftPagedSearch",
        "requestBody": {
          "description": "Search and filter criteria. Every filter is optional.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ShiftSearchRequestDto"
                  }
                ],
                "description": "Request DTO for the shift search."
              }
            },
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ShiftSearchRequestDto"
                  }
                ],
                "description": "Request DTO for the shift search."
              }
            },
            "text/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ShiftSearchRequestDto"
                  }
                ],
                "description": "Request DTO for the shift search."
              }
            },
            "application/*+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ShiftSearchRequestDto"
                  }
                ],
                "description": "Request DTO for the shift search."
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Shifts found and returned.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ShiftSearchPagedSearchResponseDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ShiftSearchPagedSearchResponseDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ShiftSearchPagedSearchResponseDto"
                }
              }
            }
          },
          "204": {
            "description": "No shifts found matching the search criteria."
          },
          "400": {
            "description": "Bad request.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/Shift/Audit/PagedSearch": {
      "post": {
        "tags": [
          "Shift"
        ],
        "summary": "Returns a paged history of shift changes grouped by opportunity, with nested shifts\r\nand resource utilisation changes per shift date.",
        "description": "Sample request:\r\n            \r\n    POST /api/v1/Shift/Audit/PagedSearch\r\n    {\r\n        \"opportunityId\": 5721,\r\n        \"updatedAfter\": \"2026-06-16T16:56:00\",\r\n        \"status\": \"UPDATE\",\r\n        \"onlyShifts\": false,\r\n        \"maxResults\": 100,\r\n        \"sortDirection\": \"ASC\"\r\n    }\r\n            \r\nUse `nextCursor` from the response as `startingAfter` in the next request\r\nto fetch the following page using fast keyset pagination.\r\n            \r\nThis reports what has *changed*. Utilisations are hard deleted when a resource is\r\ntaken off a shift, so this history is the only record that they were ever there. It\r\nis not a view of current shift availability.",
        "operationId": "ShiftAuditPagedSearch",
        "requestBody": {
          "description": "Search and filter criteria.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ShiftChangeHistorySearchRequestDto"
                  }
                ],
                "description": "Request DTO for the Shifts paged search endpoint."
              }
            },
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ShiftChangeHistorySearchRequestDto"
                  }
                ],
                "description": "Request DTO for the Shifts paged search endpoint."
              }
            },
            "text/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ShiftChangeHistorySearchRequestDto"
                  }
                ],
                "description": "Request DTO for the Shifts paged search endpoint."
              }
            },
            "application/*+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ShiftChangeHistorySearchRequestDto"
                  }
                ],
                "description": "Request DTO for the Shifts paged search endpoint."
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Records found and returned.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ShiftPagedSearchResponseDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ShiftPagedSearchResponseDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ShiftPagedSearchResponseDto"
                }
              }
            }
          },
          "204": {
            "description": "No records found matching the search criteria."
          },
          "400": {
            "description": "Bad request.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/TimesheetEntries": {
      "post": {
        "tags": [
          "TimesheetEntries"
        ],
        "summary": "Creates a new record",
        "description": "",
        "operationId": "AddTimesheetEntry",
        "requestBody": {
          "description": "",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/TimesheetEntriesRequestDto"
                  }
                ]
              }
            },
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/TimesheetEntriesRequestDto"
                  }
                ]
              }
            },
            "text/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/TimesheetEntriesRequestDto"
                  }
                ]
              }
            },
            "application/*+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/TimesheetEntriesRequestDto"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedResponseDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedResponseDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "200": {
            "description": "record created successfully"
          },
          "204": {
            "description": "record not created"
          }
        }
      }
    },
    "/api/v1/TimesheetEntries/bulk": {
      "post": {
        "tags": [
          "TimesheetEntries"
        ],
        "summary": "Bulk add new records",
        "description": "",
        "operationId": "BulkAddTimesheetEntries",
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/TimesheetEntriesRequestDto"
                }
              }
            },
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/TimesheetEntriesRequestDto"
                }
              }
            },
            "text/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/TimesheetEntriesRequestDto"
                }
              }
            },
            "application/*+json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/TimesheetEntriesRequestDto"
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedResponseDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedResponseDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "200": {
            "description": "record created successfully"
          },
          "204": {
            "description": "record not created"
          }
        }
      }
    },
    "/api/v1/TimesheetEntries/{Id}": {
      "get": {
        "tags": [
          "TimesheetEntries"
        ],
        "summary": "Gets an existing timesheet entry record",
        "description": "Sample request:\r\n            \r\n    GET /\r\n    {\r\n       \"Id\": 1,\r\n    }",
        "operationId": "GetTimesheetEntry",
        "parameters": [
          {
            "name": "Id",
            "in": "path",
            "description": "",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Record found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TimesheetEntriesResponseDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TimesheetEntriesResponseDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TimesheetEntriesResponseDto"
                }
              }
            }
          },
          "204": {
            "description": "Record not found"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "TimesheetEntries"
        ],
        "summary": "Updates an existing timesheet entry record",
        "description": "",
        "operationId": "UpdateTimesheetEntry",
        "parameters": [
          {
            "name": "Id",
            "in": "path",
            "description": "The record id",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "example": 1001
          }
        ],
        "requestBody": {
          "description": "",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/TimesheetEntriesRequestDto"
                  }
                ]
              }
            },
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/TimesheetEntriesRequestDto"
                  }
                ]
              }
            },
            "text/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/TimesheetEntriesRequestDto"
                  }
                ]
              }
            },
            "application/*+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/TimesheetEntriesRequestDto"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Record updated",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedResponseDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedResponseDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedResponseDto"
                }
              }
            }
          },
          "204": {
            "description": "Record not found"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/TimesheetEntries/Search": {
      "post": {
        "tags": [
          "TimesheetEntries"
        ],
        "summary": "Searches for entry records using the supplied parameters",
        "operationId": "SearchTimesheets",
        "requestBody": {
          "description": "",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/TimesheetEntriesSearchRequestDto"
                  }
                ]
              }
            },
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/TimesheetEntriesSearchRequestDto"
                  }
                ]
              }
            },
            "text/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/TimesheetEntriesSearchRequestDto"
                  }
                ]
              }
            },
            "application/*+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/TimesheetEntriesSearchRequestDto"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Record found",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TimesheetEntriesSearchResponseDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TimesheetEntriesSearchResponseDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TimesheetEntriesSearchResponseDto"
                  }
                }
              }
            }
          },
          "204": {
            "description": "Record not found"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/TimesheetEntries/PagedSearch": {
      "post": {
        "tags": [
          "TimesheetEntries"
        ],
        "summary": "Searches for timesheet entries records using the supplied parameters",
        "operationId": "TimesheetEntriesPagedSearch",
        "requestBody": {
          "description": "",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/TimesheetEntriesSearchRequestDto"
                  }
                ]
              }
            },
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/TimesheetEntriesSearchRequestDto"
                  }
                ]
              }
            },
            "text/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/TimesheetEntriesSearchRequestDto"
                  }
                ]
              }
            },
            "application/*+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/TimesheetEntriesSearchRequestDto"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Record found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TimesheetEntriesPagedSearchResponseDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TimesheetEntriesPagedSearchResponseDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TimesheetEntriesPagedSearchResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Internal Error"
          }
        }
      }
    },
    "/api/v1/User/Search": {
      "post": {
        "tags": [
          "User"
        ],
        "summary": "Searches for user records using the supplied parameters",
        "description": " Sample request:\r\n\r\n     POST /Search\r\n     {\r\n       \t\"searchTerm\": \"John Doe\",\r\n\t        \"maxResults\": 50,\r\n\t        \"pageNumber\": 1,\r\n\t        \"statusId\": 1,\r\n\t        \"sortBy\": \"fullname\",\r\n\t        \"sortDirection\": \"desc\",\r\n\t        \"updatedBefore\": null,\r\n\t        \"updatedAfter\": null,\r\n\t        \"onlyMyRecords\": false,\r\n\t        \"includeCustomFields\": false\r\n     }",
        "operationId": "SearchUsers",
        "requestBody": {
          "description": "",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/SearchRequestDto"
                  }
                ]
              }
            },
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/SearchRequestDto"
                  }
                ]
              }
            },
            "text/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/SearchRequestDto"
                  }
                ]
              }
            },
            "application/*+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/SearchRequestDto"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Records found",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/UserSearchResponseDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/UserSearchResponseDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/UserSearchResponseDto"
                  }
                }
              }
            }
          },
          "204": {
            "description": "Records not found"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/User/{userId}": {
      "get": {
        "tags": [
          "User"
        ],
        "summary": "Gets an existing user record",
        "description": "Sample request:\r\n\r\n    GET /1001\r\n    GET /1001?includeAll=true (include base64 photo data if available)",
        "operationId": "GetUser",
        "parameters": [
          {
            "name": "userId",
            "in": "path",
            "description": "",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includeAll",
            "in": "query",
            "description": "",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "responses": {
          "200": {
            "description": "User found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/UserResponseDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserResponseDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserResponseDto"
                }
              }
            }
          },
          "204": {
            "description": "User not found"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Access denied - cannot access system user",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/User/PagedSearch": {
      "post": {
        "tags": [
          "User"
        ],
        "summary": "Searches for user records using the supplied parameters",
        "operationId": "UserPagedSearch",
        "requestBody": {
          "description": "",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/SearchRequestDto"
                  }
                ]
              }
            },
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/SearchRequestDto"
                  }
                ]
              }
            },
            "text/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/SearchRequestDto"
                  }
                ]
              }
            },
            "application/*+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/SearchRequestDto"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Record found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/UserPagedSearchResponseDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserPagedSearchResponseDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserPagedSearchResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Internal Error"
          }
        }
      }
    },
    "/api/v1/User/Alert": {
      "post": {
        "tags": [
          "User"
        ],
        "summary": "Sends a real-time alert notification to one or more users",
        "description": "Used to push toast-style notifications to users currently signed into Tracker\r\n            \r\nSample request:\r\n            \r\n    POST /Alert\r\n    {\r\n        \"userIds\": [101, 102, 103],\r\n        \"subject\": \"New candidate match\",\r\n        \"note\": \"A new candidate has been shortlisted on the Acme Corp role.\",\r\n        \"alertDateTime\": null,\r\n        \"opportunityId\": 3391,\r\n        \"resourceId\": 10482\r\n    }",
        "operationId": "SendUserAlert",
        "requestBody": {
          "description": "",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/UserAlertRequestDto"
                  }
                ]
              }
            },
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/UserAlertRequestDto"
                  }
                ]
              }
            },
            "text/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/UserAlertRequestDto"
                  }
                ]
              }
            },
            "application/*+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/UserAlertRequestDto"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Alert(s) created",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/UserAlertResponseDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserAlertResponseDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserAlertResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Internal Error"
          }
        }
      }
    },
    "/api/v1/Utilisation": {
      "post": {
        "tags": [
          "Utilisation"
        ],
        "summary": "Creates a utilisation record, booking a resource onto an opportunity for a date.",
        "description": "Sample request:\r\n            \r\n    POST /api/v1/Utilisation\r\n    {\r\n        \"shiftId\": 123,\r\n        \"resourceId\": 42,\r\n        \"opportunityId\": 5721,\r\n        \"shiftStartDateTime\": \"2026-03-10T09:00:00\",\r\n        \"shiftEndDateTime\":   \"2026-03-10T17:00:00\",\r\n        \"billableHours\": 8.0,\r\n        \"shiftStatus\": { \"id\": 2, \"name\": \"Confirmed\" }\r\n    }\r\n            \r\nA placement is created for the resource and opportunity if one does not already\r\nexist, and the placement, job and assignment dates are widened to accommodate the\r\nutilisation. The request is refused if an active company exclusion bars the resource\r\nfrom this client.\r\n            \r\n`shiftId` is optional. When supplied, the shift must exist, belong to the same\r\nopportunity, fall on the same date, and have a free position - counted as utilisations\r\nwith a status of 2 (Confirmed) for that opportunity and date. `shiftStatus` is\r\nalso optional and defaults to 8 (Proposed); valid values come from\r\n`/api/v1/MetaData/Shifts`.\r\n            \r\nA utilisation is one date and two times, so `shiftEndDateTime` must be later than\r\nthe start and less than 24 hours after it. An overnight shift is expressed by giving\r\nan end on the following day.",
        "operationId": "CreateUtilisation",
        "requestBody": {
          "description": "The utilisation to create.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/UtilisationRequestDto"
                  }
                ],
                "description": "Request payload for creating or updating a utilisation record."
              }
            },
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/UtilisationRequestDto"
                  }
                ],
                "description": "Request payload for creating or updating a utilisation record."
              }
            },
            "text/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/UtilisationRequestDto"
                  }
                ],
                "description": "Request payload for creating or updating a utilisation record."
              }
            },
            "application/*+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/UtilisationRequestDto"
                  }
                ],
                "description": "Request payload for creating or updating a utilisation record."
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Utilisation created.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/UtilisationResponseDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UtilisationResponseDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/UtilisationResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "The request was rejected. The message explains why.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/Utilisation/OpportunityResource/{opportunityResourceId}": {
      "get": {
        "tags": [
          "Utilisation"
        ],
        "summary": "Returns all shifts for the given opportunity resource.",
        "description": "Sample request:\r\n            \r\n    GET /api/v1/Utilisation/1042\r\n            \r\nShifts are resolved via the resourceutilisation table, matched on\r\nresourceid + projectid (opportunityid) from the opportunityresource record.",
        "operationId": "GetUtilisation",
        "parameters": [
          {
            "name": "opportunityResourceId",
            "in": "path",
            "description": "The opportunity resource (placement) ID.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Shifts found and returned.",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/UtilisationResponseDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/UtilisationResponseDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/UtilisationResponseDto"
                  }
                }
              }
            }
          },
          "204": {
            "description": "No shifts found for the given opportunity resource."
          },
          "400": {
            "description": "Bad request.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/Utilisation/{utilisationId}": {
      "get": {
        "tags": [
          "Utilisation"
        ],
        "summary": "Returns all shifts for the given opportunity resource.",
        "description": "Sample request:\r\n            \r\n    GET /api/v1/Utilisation/1042\r\n            \r\nShifts are resolved via the resourceutilisation table, matched on\r\nresourceid + projectid (opportunityid) from the opportunityresource record.",
        "operationId": "GetUtilisationById",
        "parameters": [
          {
            "name": "utilisationId",
            "in": "path",
            "description": "The opportunity resource (placement) ID.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Shifts found and returned.",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/UtilisationResponseDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/UtilisationResponseDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/UtilisationResponseDto"
                  }
                }
              }
            }
          },
          "204": {
            "description": "No shifts found for the given opportunity resource."
          },
          "400": {
            "description": "Bad request.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Utilisation"
        ],
        "summary": "Updates an existing utilisation record.",
        "description": "Sample request:\r\n            \r\n    PATCH /api/v1/Utilisation/208442\r\n    {\r\n        \"shiftEndDateTime\": \"2026-03-10T18:00:00\",\r\n        \"billableHours\": 9.0,\r\n        \"shiftStatus\": { \"id\": 2, \"name\": \"Confirmed\" }\r\n    }\r\n            \r\nOnly the supplied properties are changed. `resourceId` and `opportunityId`\r\nmay be repeated but cannot be changed - delete the utilisation and create a new one\r\ninstead. When `shiftId` is supplied it is re-validated against the resulting\r\ndate and status.",
        "operationId": "UpdateUtilisation",
        "parameters": [
          {
            "name": "utilisationId",
            "in": "path",
            "description": "The utilisation ID.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "example": 208442
          }
        ],
        "requestBody": {
          "description": "The properties to change.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/UtilisationRequestDto"
                  }
                ],
                "description": "Request payload for creating or updating a utilisation record."
              }
            },
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/UtilisationRequestDto"
                  }
                ],
                "description": "Request payload for creating or updating a utilisation record."
              }
            },
            "text/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/UtilisationRequestDto"
                  }
                ],
                "description": "Request payload for creating or updating a utilisation record."
              }
            },
            "application/*+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/UtilisationRequestDto"
                  }
                ],
                "description": "Request payload for creating or updating a utilisation record."
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Utilisation updated.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedResponseDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedResponseDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedResponseDto"
                }
              }
            }
          },
          "204": {
            "description": "Utilisation not found."
          },
          "400": {
            "description": "The request was rejected. The message explains why.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Utilisation"
        ],
        "summary": "Deletes a utilisation record.",
        "description": "Sample request:\r\n            \r\n    DELETE /api/v1/Utilisation/208442\r\n            \r\nIf this was the last utilisation for the resource on that opportunity, the placement\r\nis removed as well, mirroring the Shift Planner. Otherwise the placement dates are\r\nre-synced from the remaining utilisations.",
        "operationId": "DeleteUtilisation",
        "parameters": [
          {
            "name": "utilisationId",
            "in": "path",
            "description": "The utilisation ID.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "example": 208442
          }
        ],
        "responses": {
          "200": {
            "description": "Utilisation deleted.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedResponseDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedResponseDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedResponseDto"
                }
              }
            }
          },
          "204": {
            "description": "Utilisation not found."
          },
          "400": {
            "description": "Bad request.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/Utilisation/PagedSearch": {
      "post": {
        "tags": [
          "Utilisation"
        ],
        "operationId": "SearchUtilisation",
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/UtilisationSearchRequestDto"
                  }
                ]
              }
            },
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/UtilisationSearchRequestDto"
                  }
                ]
              }
            },
            "text/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/UtilisationSearchRequestDto"
                  }
                ]
              }
            },
            "application/*+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/UtilisationSearchRequestDto"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/UtilisationSearchPagedSearchResponseDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UtilisationSearchPagedSearchResponseDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/UtilisationSearchPagedSearchResponseDto"
                }
              }
            }
          },
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/Webhook": {
      "post": {
        "tags": [
          "Webhook"
        ],
        "summary": "Creates a new webhook",
        "description": "",
        "operationId": "AddHook",
        "requestBody": {
          "description": "",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/WebhookRequestDto"
                  }
                ],
                "description": "Represents webhook information for post"
              }
            },
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/WebhookRequestDto"
                  }
                ],
                "description": "Represents webhook information for post"
              }
            },
            "text/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/WebhookRequestDto"
                  }
                ],
                "description": "Represents webhook information for post"
              }
            },
            "application/*+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/WebhookRequestDto"
                  }
                ],
                "description": "Represents webhook information for post"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedResponseDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedResponseDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "200": {
            "description": "Hook created successfully"
          }
        }
      },
      "patch": {
        "tags": [
          "Webhook"
        ],
        "summary": "Updates an existing webhook",
        "description": "",
        "operationId": "Update",
        "requestBody": {
          "description": "",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/WebhookRequestDto"
                  }
                ],
                "description": "Represents webhook information for post"
              }
            },
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/WebhookRequestDto"
                  }
                ],
                "description": "Represents webhook information for post"
              }
            },
            "text/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/WebhookRequestDto"
                  }
                ],
                "description": "Represents webhook information for post"
              }
            },
            "application/*+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/WebhookRequestDto"
                  }
                ],
                "description": "Represents webhook information for post"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedResponseDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedResponseDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatedResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "200": {
            "description": "Hook updated successfully"
          }
        }
      }
    },
    "/api/v1/Webhook/Actions/{hookId}": {
      "get": {
        "tags": [
          "Webhook"
        ],
        "summary": "Gets a list of all actions that trigger a webhook",
        "description": "",
        "operationId": "GetWebhookActions",
        "parameters": [
          {
            "name": "hookId",
            "in": "path",
            "description": "",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Hooks found",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/WebhookResponseDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/WebhookResponseDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/WebhookResponseDto"
                  }
                }
              }
            }
          },
          "204": {
            "description": "Hooks not found"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/Webhook/Meta/Actions": {
      "get": {
        "tags": [
          "Webhook"
        ],
        "summary": "Gets actions list options",
        "description": "",
        "operationId": "ListActions",
        "responses": {
          "200": {
            "description": "Ok found",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/WebhookMetaData"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/WebhookMetaData"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/WebhookMetaData"
                  }
                }
              }
            }
          },
          "204": {
            "description": "No results"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/Webhook/List": {
      "get": {
        "tags": [
          "Webhook"
        ],
        "summary": "Gets an existing webhook",
        "description": "",
        "operationId": "GetHooksList",
        "responses": {
          "200": {
            "description": "Hooks found",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/WebhookResponseDto"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/WebhookResponseDto"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/WebhookResponseDto"
                  }
                }
              }
            }
          },
          "204": {
            "description": "Hooks not found"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/Webhook/{hookId}": {
      "get": {
        "tags": [
          "Webhook"
        ],
        "summary": "Gets specific webhook information",
        "description": "",
        "operationId": "GetWebhook",
        "parameters": [
          {
            "name": "hookId",
            "in": "path",
            "description": "",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Hooks found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/WebhookResponseDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WebhookResponseDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/WebhookResponseDto"
                }
              }
            }
          },
          "204": {
            "description": "Hooks not found"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/Webhook/{Id}": {
      "delete": {
        "tags": [
          "Webhook"
        ],
        "summary": "Deletes an existing webhook",
        "description": "Sample request:\r\n            \r\n    DELETE /\r\n    {\r\n       \"id\": 1,\r\n    }",
        "operationId": "DeleteHook",
        "parameters": [
          {
            "name": "Id",
            "in": "path",
            "description": "",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Record delete"
          },
          "204": {
            "description": "Record not found"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/oAuth2/Authorize": {
      "get": {
        "tags": [
          "OAuth2"
        ],
        "summary": "Starts the OAuth2 authentication flow and calls back to redirect_uri with an access code if the user authenticates successfully. For client_id use EvoApi_1.0",
        "parameters": [
          {
            "name": "client_id",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "example": "EvoApi_1.0"
            }
          },
          {
            "name": "response_type",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "example": "code"
            }
          },
          {
            "name": "scope",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "example": "read,write"
            }
          },
          {
            "name": "redirect_uri",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "state",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Authorization code returned",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "code": {
                      "type": "string",
                      "description": "Authorization code"
                    },
                    "state": {
                      "type": "string",
                      "description": "State string provided in the first step"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/oAuth2/Token": {
      "post": {
        "tags": [
          "OAuth2"
        ],
        "summary": "Exchanges an access code returned by Authorize for a token that can be used in subsequent calls to the API",
        "requestBody": {
          "content": {
            "application/x-www-form-urlencoded": {
              "schema": {
                "type": "object",
                "properties": {
                  "client_id": {
                    "type": "string",
                    "example": "EvoApi_1.0"
                  },
                  "redirect_uri": {
                    "type": "string"
                  },
                  "grant_type": {
                    "enum": [
                      "authorization_code",
                      "refresh_token"
                    ],
                    "type": "string"
                  },
                  "client_secret": {
                    "type": "string"
                  },
                  "code": {
                    "type": "string"
                  },
                  "refresh_token": {
                    "type": "string"
                  }
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OAuth Token obtained",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "Token": {
                      "type": "string",
                      "description": "OAuth Token to be used in subsequent calls"
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "AccessRights": {
        "type": "object",
        "properties": {
          "clients": {
            "type": "boolean"
          },
          "contacts": {
            "type": "boolean"
          },
          "leads": {
            "type": "boolean"
          },
          "opportunities": {
            "type": "boolean"
          },
          "projects": {
            "type": "boolean"
          },
          "tickets": {
            "type": "boolean"
          },
          "resources": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "ActivityHistory": {
        "type": "object",
        "properties": {
          "created": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "closed": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "updated": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "updatedBy": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "ActivityPagedSearchResponseDto": {
        "type": "object",
        "properties": {
          "pageNumber": {
            "type": "integer",
            "description": "Current page number (1-based)",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "description": "Number of items per page",
            "format": "int32"
          },
          "totalCount": {
            "type": "integer",
            "description": "Total number of skills matching the query",
            "format": "int32"
          },
          "totalPages": {
            "type": "integer",
            "description": "Total number of pages available",
            "format": "int32"
          },
          "hasNextPage": {
            "type": "boolean",
            "description": "Indicates if there are more pages after the current page"
          },
          "hasPreviousPage": {
            "type": "boolean",
            "description": "Indicates if there are pages before the current page"
          },
          "activities": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ActivitySearchResponseDto"
            },
            "description": "Activities",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Paginated response containing activity data with pagination metadata"
      },
      "ActivityRequestDto": {
        "type": "object",
        "properties": {
          "source": {
            "type": "string",
            "description": "The source from which the record originated",
            "nullable": true
          },
          "status": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Status"
              }
            ],
            "description": "The record's current status",
            "nullable": true
          },
          "customFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomField"
            },
            "description": "Custom field values associated with the record",
            "nullable": true
          },
          "owners": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/UserOwner"
            },
            "description": "Assigns users to own this activity record, defaults to auth key userid if not provided",
            "nullable": true
          },
          "subject": {
            "type": "string",
            "description": "The activity's subject (the email subject, for example)",
            "nullable": true
          },
          "priority": {
            "type": "string",
            "description": "The activity's priority (Low, Medium or High)",
            "nullable": true
          },
          "note": {
            "type": "string",
            "description": "Activity notes or email/text body",
            "nullable": true
          },
          "contactDirection": {
            "type": "string",
            "description": "Direction of contact, for telephone calls, emails and texts (Inbound or Outbound)",
            "nullable": true
          },
          "dueDateTime": {
            "type": "string",
            "description": "Date when the activity is due to take place",
            "format": "date-time",
            "nullable": true
          },
          "startDateTime": {
            "type": "string",
            "description": "Date when the activity is due to start",
            "format": "date-time",
            "nullable": true
          },
          "endDateTime": {
            "type": "string",
            "description": "Date when the activity is due to finish",
            "format": "date-time",
            "nullable": true
          },
          "activityType": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ActivityType"
              }
            ],
            "description": "The activity's type",
            "nullable": true
          },
          "interviewer": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ContactLink"
              }
            ],
            "description": "For interview activities, the contact conducting the interview",
            "nullable": true
          },
          "interviewType": {
            "allOf": [
              {
                "$ref": "#/components/schemas/InterviewType"
              }
            ],
            "description": "Indicates the interview type, for interview activities",
            "nullable": true
          },
          "history": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ActivityHistory"
              }
            ],
            "nullable": true
          },
          "associations": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Associations"
              }
            ],
            "description": "Other records that a record is associated with",
            "nullable": true
          },
          "location": {
            "type": "string",
            "description": "Assigns the location of the activity record",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ActivityResponseDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "The record's unique identifier",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "description": "The record's name",
            "nullable": true
          },
          "typeName": {
            "type": "string",
            "description": "Naming convention for this record type, e.g. 'Company', 'Contact', 'Lead', 'Job', etc.",
            "nullable": true
          },
          "source": {
            "type": "string",
            "description": "The source from which the record originated",
            "nullable": true
          },
          "contactDetails": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ContactDetails"
              }
            ],
            "description": "Contact details for the record",
            "nullable": true
          },
          "status": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Status"
              }
            ],
            "description": "The record's current status",
            "nullable": true
          },
          "territory": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Territory"
              }
            ],
            "description": "The record's territory",
            "nullable": true
          },
          "department": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Department"
              }
            ],
            "description": "The record's department",
            "nullable": true
          },
          "customFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomField"
            },
            "description": "Custom field values associated with the record",
            "nullable": true
          },
          "owners": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/UserOwner"
            },
            "description": "Assigned to list of Activity ownerId is a userId",
            "nullable": true
          },
          "subject": {
            "type": "string",
            "description": "The activity's subject (the email subject, for example)",
            "nullable": true
          },
          "priority": {
            "type": "string",
            "description": "The activity's priority (Low, Medium or High)",
            "nullable": true
          },
          "note": {
            "type": "string",
            "description": "Activity notes or email/text body",
            "nullable": true
          },
          "contactDirection": {
            "type": "string",
            "description": "Direction of contact, for telephone calls, emails and texts (Inbound or Outbound)",
            "nullable": true
          },
          "dueDate": {
            "type": "string",
            "description": "Date when the activity is due to take place",
            "format": "date",
            "nullable": true
          },
          "dueTime": {
            "type": "string",
            "description": "Time when the activity is due to take place",
            "format": "time",
            "nullable": true
          },
          "startDate": {
            "type": "string",
            "description": "Date when the activity is due to start",
            "format": "date",
            "nullable": true
          },
          "startTime": {
            "type": "string",
            "description": "Time when the activity is due to start",
            "format": "time",
            "nullable": true
          },
          "endDate": {
            "type": "string",
            "description": "Date when the activity is due to finish",
            "format": "date",
            "nullable": true
          },
          "endTime": {
            "type": "string",
            "description": "Time when the activity is due to finish",
            "format": "time",
            "nullable": true
          },
          "activityType": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ActivityType"
              }
            ],
            "description": "The activity's type",
            "nullable": true
          },
          "interviewer": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ContactLink"
              }
            ],
            "description": "For interview activities, the contact conducting the interview",
            "nullable": true
          },
          "interviewType": {
            "allOf": [
              {
                "$ref": "#/components/schemas/InterviewType"
              }
            ],
            "description": "Indicates the interview type, for interview activities",
            "nullable": true
          },
          "associations": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Associations"
              }
            ],
            "description": "Other records that a record is associated with",
            "nullable": true
          },
          "history": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ActivityHistory"
              }
            ],
            "nullable": true
          },
          "location": {
            "type": "string",
            "description": "Indicates the location of the activity",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents a single activity record"
      },
      "ActivitySearchRequestDto": {
        "type": "object",
        "properties": {
          "maxResults": {
            "type": "integer",
            "description": "Maximum results per page",
            "format": "int32",
            "nullable": true,
            "example": 10
          },
          "pageNumber": {
            "type": "integer",
            "description": "The page number to return",
            "format": "int32",
            "nullable": true,
            "example": 1
          },
          "sortBy": {
            "type": "string",
            "description": "A valid column to sort by",
            "nullable": true,
            "example": ""
          },
          "sortDirection": {
            "type": "string",
            "description": "The sort direction, valid values are ASC or DESC",
            "nullable": true,
            "example": "ASC"
          },
          "startingAfter": {
            "type": "integer",
            "description": "optional A cursor to use in pagination. starting_after is an object ID that defines your place in the list. For example, if you make a list request and receive 100 objects, ending with obj_foo, your subsequent call can include starting_after=obj_foo to fetch the next page of the list.",
            "format": "int32",
            "nullable": true
          },
          "statusId": {
            "type": "integer",
            "description": "A record type status by id can be null",
            "format": "int32",
            "nullable": true,
            "example": 7
          },
          "state": {
            "type": "string",
            "description": "Include only records whose status matches this state (not supported for Clients or Contacts)",
            "nullable": true,
            "example": "open"
          },
          "updatedBefore": {
            "type": "string",
            "description": "Only records before a date/time",
            "format": "date-time",
            "nullable": true
          },
          "updatedAfter": {
            "type": "string",
            "description": "Only records after a date/time",
            "format": "date-time",
            "nullable": true
          },
          "onlyMyRecords": {
            "type": "boolean",
            "description": "Include only records assigned to the user calling the api",
            "example": false
          },
          "includeCustomFields": {
            "type": "boolean",
            "description": "Include custom fields in the results",
            "example": false
          },
          "subject": {
            "type": "string",
            "description": "Searches <b>telephone</b>",
            "nullable": true,
            "example": "acme"
          },
          "activityTypeId": {
            "type": "integer",
            "description": "Searches <b>An activity type by id can be null</b>",
            "format": "int32",
            "nullable": true,
            "example": 10
          },
          "priority": {
            "type": "string",
            "description": "Searches <b>priority</b>",
            "nullable": true,
            "example": "Medium"
          },
          "contactType": {
            "type": "string",
            "description": "Searches <b>Contact Type</b>",
            "nullable": true,
            "example": "Outbound"
          },
          "clientId": {
            "type": "integer",
            "description": "Searches <b>A client id can be null</b>",
            "format": "int32",
            "nullable": true,
            "example": 1
          },
          "contactId": {
            "type": "integer",
            "description": "Searches <b>A contact id can be null</b>",
            "format": "int32",
            "nullable": true,
            "example": 1
          },
          "leadId": {
            "type": "integer",
            "description": "Searches <b>A lead id can be null</b>",
            "format": "int32",
            "nullable": true,
            "example": 1
          },
          "opportunityId": {
            "type": "integer",
            "description": "Searches <b>An opportunity id can be null</b>",
            "format": "int32",
            "nullable": true,
            "example": 1
          },
          "projectId": {
            "type": "integer",
            "description": "Searches <b>A project id can be null</b>",
            "format": "int32",
            "nullable": true,
            "example": 1
          },
          "ticketId": {
            "type": "integer",
            "description": "Searches <b>A ticket id can be null</b>",
            "format": "int32",
            "nullable": true,
            "example": 1
          },
          "resourceId": {
            "type": "integer",
            "description": "Searches <b>A resource id can be null</b>",
            "format": "int32",
            "nullable": true,
            "example": 1
          },
          "userId": {
            "type": "integer",
            "description": "Searches <b>A user id can be null</b>",
            "format": "int32",
            "nullable": true,
            "example": 1
          },
          "opportunityResourceId": {
            "type": "integer",
            "description": "Searches <b>An opportunity resource id can be null</b>",
            "format": "int32",
            "nullable": true,
            "example": 1
          },
          "includeNotes": {
            "type": "boolean",
            "description": "Include the full note from each activity in the results."
          },
          "mustHaveResource": {
            "type": "boolean",
            "description": "Only activities linked to a resource will be returned in the results."
          },
          "mustHaveOpportunity": {
            "type": "boolean",
            "description": "Only activities linked to an opportunity will be returned in the results."
          }
        },
        "additionalProperties": false
      },
      "ActivitySearchResponseDto": {
        "type": "object",
        "properties": {
          "activityId": {
            "type": "integer",
            "format": "int32"
          },
          "clientId": {
            "type": "integer",
            "format": "int32"
          },
          "clientName": {
            "type": "string",
            "nullable": true
          },
          "contactId": {
            "type": "integer",
            "format": "int32"
          },
          "contactName": {
            "type": "string",
            "nullable": true
          },
          "leadId": {
            "type": "integer",
            "format": "int32"
          },
          "leadName": {
            "type": "string",
            "nullable": true
          },
          "opportunityId": {
            "type": "integer",
            "format": "int32"
          },
          "opportunityName": {
            "type": "string",
            "nullable": true
          },
          "resourceId": {
            "type": "integer",
            "format": "int32"
          },
          "resourceName": {
            "type": "string",
            "nullable": true
          },
          "activityTypeId": {
            "type": "integer",
            "format": "int32"
          },
          "activityTypeName": {
            "type": "string",
            "nullable": true
          },
          "activityStatusId": {
            "type": "integer",
            "format": "int32"
          },
          "activityStatusName": {
            "type": "string",
            "nullable": true
          },
          "subject": {
            "type": "string",
            "nullable": true
          },
          "dateDue": {
            "type": "string",
            "nullable": true
          },
          "timeDue": {
            "type": "string",
            "nullable": true
          },
          "lastUpdatedDateTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "lastUpdatedUserId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "startDate": {
            "type": "string",
            "nullable": true
          },
          "startTime": {
            "type": "string",
            "nullable": true
          },
          "endDate": {
            "type": "string",
            "nullable": true
          },
          "endTime": {
            "type": "string",
            "nullable": true
          },
          "priority": {
            "type": "string",
            "nullable": true
          },
          "contactType": {
            "type": "string",
            "nullable": true
          },
          "interviewCount": {
            "type": "integer",
            "format": "int32"
          },
          "cvSentCount": {
            "type": "integer",
            "format": "int32"
          },
          "userId": {
            "type": "integer",
            "format": "int32"
          },
          "userName": {
            "type": "string",
            "nullable": true
          },
          "position": {
            "type": "string",
            "nullable": true
          },
          "email": {
            "type": "string",
            "nullable": true
          },
          "opportunityResourceId": {
            "type": "integer",
            "format": "int32"
          },
          "creationDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "note": {
            "type": "string",
            "nullable": true
          },
          "interviewer": {
            "type": "string",
            "nullable": true
          },
          "interviewType": {
            "type": "string",
            "nullable": true
          },
          "customFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomField"
            },
            "nullable": true,
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "ActivityType": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "AdditionalContactDetails": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "description": "Type of contact detail, either Phone, Email, Skype, Facebook, Twitter, Instagram or Other",
            "nullable": true
          },
          "value": {
            "type": "string",
            "description": "Details for the contact: phone number, email address, URL, etc.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Additional, non-standard contact details"
      },
      "AddressDetails": {
        "type": "object",
        "properties": {
          "isPrimary": {
            "type": "boolean",
            "description": "True if this is the primary address associated with a record"
          },
          "addressName": {
            "type": "string",
            "description": "A user-friendly name for the address",
            "nullable": true
          },
          "addressLine1": {
            "type": "string",
            "description": "Address line 1",
            "nullable": true
          },
          "addressLine2": {
            "type": "string",
            "description": "Address line 2",
            "nullable": true
          },
          "town": {
            "type": "string",
            "description": "Town or City",
            "nullable": true
          },
          "county": {
            "type": "string",
            "description": "County or State",
            "nullable": true
          },
          "country": {
            "type": "string",
            "description": "Country",
            "nullable": true
          },
          "postcode": {
            "type": "string",
            "description": "Postcode or zip code",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "A postal address"
      },
      "AdvertDetails": {
        "type": "object",
        "properties": {
          "publishOnline": {
            "type": "boolean",
            "description": "True if the opportunity is published on the client's website"
          },
          "reference": {
            "type": "string",
            "description": "Public reference for the opportunity",
            "nullable": true
          },
          "title": {
            "type": "string",
            "description": "Public title for the opportunity",
            "nullable": true
          },
          "description": {
            "type": "string",
            "description": "Public description for the opportunity",
            "nullable": true
          },
          "location": {
            "type": "string",
            "description": "Public location for the opportunity",
            "nullable": true
          },
          "duration": {
            "type": "string",
            "description": "Public duration for the opportunity",
            "nullable": true
          },
          "workType": {
            "type": "string",
            "description": "Public work type for the opportunity",
            "nullable": true
          },
          "sector": {
            "type": "string",
            "description": "Public sector for the opportunity",
            "nullable": true
          },
          "category": {
            "type": "string",
            "description": "Public category for the opportunity",
            "nullable": true
          },
          "salaryFrom": {
            "type": "string",
            "description": "Public salary range start for the opportunity",
            "nullable": true
          },
          "salaryTo": {
            "type": "string",
            "description": "Public salary range end for the opportunity",
            "nullable": true
          },
          "salaryPer": {
            "type": "string",
            "description": "Public salary schedule for the opportunity (\"per Year\", \"per Annum\", \"per Month\", \"per Week\", \"per Day\", or \"per Hour\")",
            "nullable": true
          },
          "benefits": {
            "type": "string",
            "description": "Public benfits for the opportunity",
            "nullable": true
          },
          "skills": {
            "type": "string",
            "description": "Public skill requriements for the opportunity",
            "nullable": true
          },
          "publishDate": {
            "type": "string",
            "description": "The opportunity's publication date",
            "format": "date-time",
            "nullable": true
          },
          "startDate": {
            "type": "string",
            "description": "Public start date for the opportunity",
            "format": "date-time",
            "nullable": true
          },
          "advertStatus": {
            "type": "string",
            "description": "The opportunity's job board advert status (\"A\" Advertised, \"C\" Closed, or \"\" Unadvertised)",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ApplicantSettings": {
        "type": "object",
        "properties": {
          "screeningTemplateId": {
            "type": "integer",
            "description": "The screening template to use for applicants added to this opportunity",
            "format": "int32",
            "nullable": true
          },
          "applicantRouting": {
            "type": "string",
            "description": "Defines the list that applicants should be assigned to.\r\n\"S\" or \"\" = Shortlist, \"L\" = Longlist, \"K\" = Applicants (parsing CV), \"N\" = Applicants (without parsing CV)",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Approver": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "Id",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "description": "Name",
            "nullable": true
          },
          "recordType": {
            "type": "string",
            "description": "The type of the record.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "A link to an approver type"
      },
      "Associations": {
        "type": "object",
        "properties": {
          "clients": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ClientLink"
            },
            "nullable": true
          },
          "contacts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ContactLink"
            },
            "nullable": true
          },
          "resources": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ResourceLink"
            },
            "nullable": true
          },
          "opportunities": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/OpportunityLink"
            },
            "nullable": true
          },
          "leads": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/LeadLink"
            },
            "nullable": true
          },
          "products": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ProductLink"
            },
            "nullable": true
          },
          "opportunityResources": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/OpportunityResourcesLink"
            },
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Other records that a record is associated with"
      },
      "AuditRequestDto": {
        "type": "object",
        "properties": {
          "userId": {
            "type": "integer",
            "description": "The UserId attributed to the audit record.",
            "format": "int32",
            "nullable": true
          },
          "timestamp": {
            "type": "string",
            "description": "The timestamp of the audit entry (defaults to \"now\" if null)",
            "format": "date-time",
            "nullable": true
          },
          "actionType": {
            "type": "string",
            "description": "The ActionType must match a single value in this set list of values: `\"Activity\", \"Document\", \"Portal\", \"Record\", \"Search\", \"Timesheet\", \"User\"`",
            "nullable": true
          },
          "description": {
            "type": "string",
            "description": "The Description for the audit entry (255 characters max).",
            "nullable": true
          },
          "recordType": {
            "type": "string",
            "description": "The RecordType must match a single value in this set list of values: `\"Activity\", \"Client\", \"Contact\", \"Invoice\", \"Lead\", \"OpportunityResourceContact\", \"Opportunity\", \"OpportunityResource\", \"Project\", \"Resource\", \"ResourceCompliance\", \"Task\", \"TaskResource\", \"User\"`",
            "nullable": true
          },
          "recordId": {
            "type": "integer",
            "description": "The Id of the record being audited.",
            "format": "int32",
            "nullable": true
          },
          "itemName": {
            "type": "string",
            "description": "The name of the value that changed (255 characters max).",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "AuditSearchPagedResponseDto": {
        "type": "object",
        "properties": {
          "pageNumber": {
            "type": "integer",
            "description": "Current page number (1-based)",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "description": "Number of items per page",
            "format": "int32"
          },
          "totalCount": {
            "type": "integer",
            "description": "Total number of skills matching the query",
            "format": "int32"
          },
          "totalPages": {
            "type": "integer",
            "description": "Total number of pages available",
            "format": "int32"
          },
          "hasNextPage": {
            "type": "boolean",
            "description": "Indicates if there are more pages after the current page"
          },
          "hasPreviousPage": {
            "type": "boolean",
            "description": "Indicates if there are pages before the current page"
          },
          "auditRecords": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AuditSearchResponseDto"
            },
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Paginated audit search response with pagination metadata."
      },
      "AuditSearchRequestDto": {
        "type": "object",
        "properties": {
          "maxResults": {
            "type": "integer",
            "description": "Maximum results per page",
            "format": "int32",
            "nullable": true,
            "example": 10
          },
          "pageNumber": {
            "type": "integer",
            "description": "The page number to return",
            "format": "int32",
            "nullable": true,
            "example": 1
          },
          "sortBy": {
            "type": "string",
            "description": "A valid column to sort by",
            "nullable": true,
            "example": ""
          },
          "sortDirection": {
            "type": "string",
            "description": "The sort direction, valid values are ASC or DESC",
            "nullable": true,
            "example": "ASC"
          },
          "startingAfter": {
            "type": "integer",
            "description": "optional A cursor to use in pagination. starting_after is an object ID that defines your place in the list. For example, if you make a list request and receive 100 objects, ending with obj_foo, your subsequent call can include starting_after=obj_foo to fetch the next page of the list.",
            "format": "int32",
            "nullable": true
          },
          "dateFrom": {
            "type": "string",
            "description": "<b>Required.</b> Include only records on or after this date. The range between DateFrom and DateTo must not exceed one month.",
            "format": "date",
            "nullable": true,
            "example": "2024-01-01"
          },
          "dateTo": {
            "type": "string",
            "description": "<b>Required.</b> Include only records on or before this date. The range between DateFrom and DateTo must not exceed one month.",
            "format": "date",
            "nullable": true,
            "example": "2024-01-31"
          },
          "recordType": {
            "type": "string",
            "description": "Filter by record type using the full name (e.g. Resource, Contact, Lead, Opportunity, Client)",
            "nullable": true,
            "example": "Resource"
          },
          "actionType": {
            "type": "string",
            "description": "Filter by action type (e.g. View, Edit, Delete)",
            "nullable": true,
            "example": "View"
          },
          "userId": {
            "type": "integer",
            "description": "Filter by the user who performed the action",
            "format": "int32",
            "nullable": true,
            "example": 42
          }
        },
        "additionalProperties": false
      },
      "AuditSearchResponseDto": {
        "type": "object",
        "properties": {
          "userHistoryId": {
            "type": "integer",
            "description": "The unique audit record identifier.",
            "format": "int32"
          },
          "userId": {
            "type": "integer",
            "description": "The ID of the user who performed the action.",
            "format": "int32"
          },
          "timestamp": {
            "type": "string",
            "description": "The date and time the action was performed.",
            "format": "date-time"
          },
          "actionType": {
            "type": "string",
            "description": "The type of action performed (e.g. View, Edit, Delete).",
            "nullable": true
          },
          "description": {
            "type": "string",
            "description": "A description of the action performed.",
            "nullable": true
          },
          "recordType": {
            "type": "string",
            "description": "The resolved record type name (e.g. Resource, Contact, Lead).",
            "nullable": true
          },
          "recordId": {
            "type": "integer",
            "description": "The ID of the record the action was performed on.",
            "format": "int32",
            "nullable": true
          },
          "itemName": {
            "type": "string",
            "description": "The name of the item the action was performed on.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents a single audit record returned from a search."
      },
      "BankingDetails": {
        "type": "object",
        "properties": {
          "bankName": {
            "type": "string",
            "description": "Bank name",
            "nullable": true
          },
          "sortCode": {
            "type": "string",
            "description": "Account sort code",
            "nullable": true
          },
          "accountNumber": {
            "type": "string",
            "description": "Account number",
            "nullable": true
          },
          "bankReference": {
            "type": "string",
            "description": "Reference",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "BidDetails": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "description": "Bid type",
            "nullable": true
          },
          "dueDate": {
            "type": "string",
            "description": "Date by which the bid is dut to be submitted",
            "format": "date-time",
            "nullable": true
          },
          "driver": {
            "type": "string",
            "description": "",
            "nullable": true
          },
          "noBid": {
            "type": "string",
            "description": "Decision on whether or not to bid on the opportunity (\"Bid\" or \"No Bid\")",
            "nullable": true
          },
          "noBidReason": {
            "type": "string",
            "description": "Reason for not bidding, if that decision was made",
            "nullable": true
          },
          "manager": {
            "allOf": [
              {
                "$ref": "#/components/schemas/RecordReference"
              }
            ],
            "description": "User that owns the bid",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "BusinessTypeLink": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "Id",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "description": "Name",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "A link to a business type"
      },
      "ClientHistory": {
        "type": "object",
        "properties": {
          "created": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "closed": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "updated": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "updatedBy": {
            "type": "integer",
            "format": "int32"
          },
          "renewal1": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "renewal2": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "cancelled": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "cancellationReason": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ClientLink": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "Id",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "description": "Name",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "A link to a client record"
      },
      "ClientPagedSearchResponseDto": {
        "type": "object",
        "properties": {
          "pageNumber": {
            "type": "integer",
            "description": "Current page number (1-based)",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "description": "Number of items per page",
            "format": "int32"
          },
          "totalCount": {
            "type": "integer",
            "description": "Total number of skills matching the query",
            "format": "int32"
          },
          "totalPages": {
            "type": "integer",
            "description": "Total number of pages available",
            "format": "int32"
          },
          "hasNextPage": {
            "type": "boolean",
            "description": "Indicates if there are more pages after the current page"
          },
          "hasPreviousPage": {
            "type": "boolean",
            "description": "Indicates if there are pages before the current page"
          },
          "clients": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ClientSearchResponseDto"
            },
            "description": "Clients",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Paginated response containing client data with pagination metadata"
      },
      "ClientRank": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "order": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "ClientRequestDto": {
        "type": "object",
        "properties": {
          "source": {
            "type": "string",
            "description": "The source from which the record originated",
            "nullable": true
          },
          "contactDetails": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ContactDetails"
              }
            ],
            "description": "Contact details for the record",
            "nullable": true
          },
          "status": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Status"
              }
            ],
            "description": "The record's current status",
            "nullable": true
          },
          "territory": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Territory"
              }
            ],
            "description": "The record's territory",
            "nullable": true
          },
          "department": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Department"
              }
            ],
            "description": "The record's department",
            "nullable": true
          },
          "customFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomField"
            },
            "description": "Custom field values associated with the record",
            "nullable": true
          },
          "owners": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Owner"
            },
            "description": "List of users that own the record, or that the record is assigned to",
            "nullable": true
          },
          "name": {
            "type": "string",
            "description": "The client name",
            "nullable": true
          },
          "internalReference": {
            "type": "string",
            "description": "The client's internal reference code",
            "nullable": true
          },
          "website": {
            "type": "string",
            "description": "The client's website URL",
            "nullable": true
          },
          "linkedInUrl": {
            "type": "string",
            "description": "The client's LinkedIn URL",
            "nullable": true
          },
          "isParentClient": {
            "type": "boolean",
            "description": "True if this is a parent client",
            "nullable": true
          },
          "parentClientId": {
            "type": "integer",
            "description": "The client's parent client ID (if it has one)",
            "format": "int32",
            "nullable": true
          },
          "tagText": {
            "type": "string",
            "description": "Arbitrary tag text entered by users",
            "nullable": true
          },
          "specialTerms": {
            "type": "string",
            "description": "Special terms",
            "nullable": true
          },
          "note": {
            "type": "string",
            "description": "Notes",
            "nullable": true
          },
          "background": {
            "type": "string",
            "description": "Background information",
            "nullable": true
          },
          "targetRevenue": {
            "type": "integer",
            "description": "Target revenue",
            "format": "int32",
            "nullable": true
          },
          "turnover": {
            "type": "string",
            "description": "Turnover",
            "nullable": true
          },
          "supportDepartment": {
            "type": "string",
            "description": "Default support department",
            "nullable": true
          },
          "supportTeam": {
            "type": "string",
            "description": "Default support team",
            "nullable": true
          },
          "supportResource": {
            "type": "string",
            "description": "Default support resource",
            "nullable": true
          },
          "secondarysupportResource": {
            "type": "string",
            "description": "Secondary support resource",
            "nullable": true
          },
          "noticePeriod": {
            "type": "string",
            "description": "Notice period",
            "nullable": true
          },
          "timesheetApprovals": {
            "type": "boolean",
            "description": "Receive Timesheet Approval Emails?",
            "nullable": true
          },
          "clientTypes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ClientType"
            },
            "nullable": true
          },
          "sectors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Sector"
            },
            "nullable": true
          },
          "quickSkills": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/QuickSkill"
            },
            "nullable": true
          },
          "bankingDetails": {
            "allOf": [
              {
                "$ref": "#/components/schemas/BankingDetails"
              }
            ],
            "nullable": true
          },
          "invoicingDetails": {
            "allOf": [
              {
                "$ref": "#/components/schemas/InvoicingDetails"
              }
            ],
            "nullable": true
          },
          "rank": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ClientRank"
              }
            ],
            "nullable": true
          },
          "vertical": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ClientVertical"
              }
            ],
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ClientResponseDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "The record's unique identifier",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "description": "The record's name",
            "nullable": true
          },
          "typeName": {
            "type": "string",
            "description": "Naming convention for this record type, e.g. 'Company', 'Contact', 'Lead', 'Job', etc.",
            "nullable": true
          },
          "source": {
            "type": "string",
            "description": "The source from which the record originated",
            "nullable": true
          },
          "contactDetails": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ContactDetails"
              }
            ],
            "description": "Contact details for the record",
            "nullable": true
          },
          "status": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Status"
              }
            ],
            "description": "The record's current status",
            "nullable": true
          },
          "territory": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Territory"
              }
            ],
            "description": "The record's territory",
            "nullable": true
          },
          "department": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Department"
              }
            ],
            "description": "The record's department",
            "nullable": true
          },
          "customFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomField"
            },
            "description": "Custom field values associated with the record",
            "nullable": true
          },
          "owners": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Owner"
            },
            "description": "List of users that own the record, or that the record is assigned to",
            "nullable": true
          },
          "internalReference": {
            "type": "string",
            "description": "The client's internal reference code",
            "nullable": true
          },
          "website": {
            "type": "string",
            "description": "The client's website URL",
            "nullable": true
          },
          "linkedInUrl": {
            "type": "string",
            "description": "The client's LinkedIn URL",
            "nullable": true
          },
          "isParentClient": {
            "type": "boolean",
            "description": "True if this is a parent client"
          },
          "parentClientId": {
            "type": "integer",
            "description": "The client's parent client ID (if it has one)",
            "format": "int32"
          },
          "tagText": {
            "type": "string",
            "description": "Arbitrary tag text entered by users",
            "nullable": true
          },
          "specialTerms": {
            "type": "string",
            "description": "Special terms",
            "nullable": true
          },
          "note": {
            "type": "string",
            "description": "Notes",
            "nullable": true
          },
          "background": {
            "type": "string",
            "description": "Background information",
            "nullable": true
          },
          "targetRevenue": {
            "type": "integer",
            "description": "Target revenue",
            "format": "int32"
          },
          "turnover": {
            "type": "string",
            "description": "Turnover",
            "nullable": true
          },
          "supportDepartment": {
            "type": "string",
            "description": "Default support department",
            "nullable": true
          },
          "supportTeam": {
            "type": "string",
            "description": "Default support team",
            "nullable": true
          },
          "supportResource": {
            "type": "string",
            "description": "Default support resource",
            "nullable": true
          },
          "secondarysupportResource": {
            "type": "string",
            "description": "Secondary support resource",
            "nullable": true
          },
          "noticePeriod": {
            "type": "string",
            "description": "Notice period",
            "nullable": true
          },
          "timesheetApprovals": {
            "type": "boolean",
            "description": "Receive Timesheet Approval Emails?"
          },
          "clientTypes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ClientType"
            },
            "nullable": true
          },
          "sectors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Sector"
            },
            "nullable": true
          },
          "quickSkills": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/QuickSkill"
            },
            "nullable": true
          },
          "bankingDetails": {
            "allOf": [
              {
                "$ref": "#/components/schemas/BankingDetails"
              }
            ],
            "nullable": true
          },
          "invoicingDetails": {
            "allOf": [
              {
                "$ref": "#/components/schemas/InvoicingDetails"
              }
            ],
            "nullable": true
          },
          "rank": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ClientRank"
              }
            ],
            "nullable": true
          },
          "vertical": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ClientVertical"
              }
            ],
            "nullable": true
          },
          "history": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ClientHistory"
              }
            ],
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents a single client record"
      },
      "ClientSearchRequestDto": {
        "type": "object",
        "properties": {
          "searchTerm": {
            "type": "string",
            "description": "Term to search for",
            "nullable": true,
            "example": "acme"
          },
          "maxResults": {
            "type": "integer",
            "description": "Maximum results per page",
            "format": "int32",
            "nullable": true,
            "example": 10
          },
          "pageNumber": {
            "type": "integer",
            "description": "The page number to return",
            "format": "int32",
            "nullable": true,
            "example": 1
          },
          "sortBy": {
            "type": "string",
            "description": "A valid column to sort by",
            "nullable": true,
            "example": ""
          },
          "sortDirection": {
            "type": "string",
            "description": "The sort direction, valid values are ASC or DESC",
            "nullable": true,
            "example": "ASC"
          },
          "statusId": {
            "type": "integer",
            "description": "A record type status id can be null",
            "format": "int32",
            "nullable": true,
            "example": 7
          },
          "state": {
            "type": "string",
            "description": "Include only records whose status matches this state (not supported for Clients or Contacts)",
            "nullable": true,
            "example": ""
          },
          "updatedBefore": {
            "type": "string",
            "description": "Only records before a date/time",
            "format": "date-time",
            "nullable": true
          },
          "updatedAfter": {
            "type": "string",
            "description": "Only records after a date/time",
            "format": "date-time",
            "nullable": true
          },
          "onlyMyRecords": {
            "type": "boolean",
            "description": "Include only records assigned to the user calling the api",
            "example": false
          },
          "includeCustomFields": {
            "type": "boolean",
            "description": "Include custom fields in the results",
            "example": false
          },
          "telephone": {
            "type": "string",
            "description": "Searches <b>telephone number</b>",
            "nullable": true,
            "example": "555 0100"
          },
          "fax": {
            "type": "string",
            "description": "Searches <b>fax number</b>",
            "nullable": true,
            "example": "555 0100"
          }
        },
        "additionalProperties": false
      },
      "ClientSearchResponseDto": {
        "type": "object",
        "properties": {
          "clientId": {
            "type": "integer",
            "format": "int32"
          },
          "creationDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "clientName": {
            "type": "string",
            "nullable": true
          },
          "addressLine1": {
            "type": "string",
            "nullable": true
          },
          "addressLine2": {
            "type": "string",
            "nullable": true
          },
          "town": {
            "type": "string",
            "nullable": true
          },
          "county": {
            "type": "string",
            "nullable": true
          },
          "postcode": {
            "type": "string",
            "nullable": true
          },
          "country": {
            "type": "string",
            "nullable": true
          },
          "email": {
            "type": "string",
            "nullable": true
          },
          "website": {
            "type": "string",
            "nullable": true
          },
          "telephone": {
            "type": "string",
            "nullable": true
          },
          "fax": {
            "type": "string",
            "nullable": true
          },
          "internalRef": {
            "type": "string",
            "nullable": true
          },
          "clientSource": {
            "type": "string",
            "nullable": true
          },
          "departmentName": {
            "type": "string",
            "nullable": true
          },
          "clientVerticalName": {
            "type": "string",
            "nullable": true
          },
          "clientRankName": {
            "type": "string",
            "nullable": true
          },
          "territory": {
            "type": "string",
            "nullable": true
          },
          "clientOwner": {
            "type": "string",
            "nullable": true
          },
          "clientOwnerId": {
            "type": "integer",
            "format": "int32"
          },
          "customFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomField"
            },
            "nullable": true,
            "readOnly": true
          },
          "lastUpdatedUserId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "lastUpdatedDateTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ClientType": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ClientVertical": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ComplianceDocumentRequestDto": {
        "type": "object",
        "properties": {
          "filename": {
            "type": "string",
            "description": "Name of the file",
            "nullable": true
          },
          "documentData": {
            "type": "string",
            "description": "File data as a base 64 string",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Compliance Document Request Dto"
      },
      "ComplianceItem": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "Id",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "description": "Name",
            "nullable": true
          },
          "typeId": {
            "type": "integer",
            "description": "Type identifier",
            "format": "int32"
          },
          "description": {
            "type": "string",
            "description": "Description",
            "nullable": true
          },
          "format": {
            "type": "string",
            "description": "Format",
            "nullable": true
          },
          "defaultMandatory": {
            "type": "boolean",
            "description": "Is the item mandatory by default?"
          },
          "defaultItem": {
            "type": "boolean",
            "description": "Is the default"
          }
        },
        "additionalProperties": false,
        "description": "Compliance Item"
      },
      "ContactDetails": {
        "type": "object",
        "properties": {
          "telephone": {
            "type": "string",
            "nullable": true
          },
          "mobilePhone": {
            "type": "string",
            "nullable": true
          },
          "fax": {
            "type": "string",
            "nullable": true
          },
          "email": {
            "type": "string",
            "nullable": true
          },
          "homePhone": {
            "type": "string",
            "nullable": true
          },
          "businessPhone": {
            "type": "string",
            "nullable": true
          },
          "otherPhone": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Contact details for a record\r\n\r\nFor Client and Contact, `businessPhone` supersedes `telephone`; if omitted, `telephone` is used as fallback.  \r\nFor Resource, `homePhone` supersedes `telephone`; if omitted, `telephone` is used as fallback.  \r\n\r\nValid usage by record type:  \r\nClient: `businessPhone/telephone, fax, email` (ignored: mobilePhone, homePhone, otherPhone)  \r\nContact: `businessPhone/telephone, fax, email, mobilePhone, homePhone, otherPhone`  \r\nInvoice: (not applicable)  \r\nLead: (not applicable)  \r\nResource: `homePhone/telephone, email, mobilePhone, businessPhone` (ignored: fax, otherPhone)"
      },
      "ContactHistory": {
        "type": "object",
        "properties": {
          "created": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "closed": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "updated": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "updatedBy": {
            "type": "integer",
            "format": "int32"
          },
          "dateLastContacted": {
            "type": "string",
            "description": "Date when the contact was last contacted",
            "format": "date-time",
            "nullable": true
          },
          "lastActivityId": {
            "type": "integer",
            "description": "Id of the last activity",
            "format": "int32",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ContactLink": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "Id",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "description": "Name",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "A link to a contact record"
      },
      "ContactPagedSearchResponseDto": {
        "type": "object",
        "properties": {
          "pageNumber": {
            "type": "integer",
            "description": "Current page number (1-based)",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "description": "Number of items per page",
            "format": "int32"
          },
          "totalCount": {
            "type": "integer",
            "description": "Total number of skills matching the query",
            "format": "int32"
          },
          "totalPages": {
            "type": "integer",
            "description": "Total number of pages available",
            "format": "int32"
          },
          "hasNextPage": {
            "type": "boolean",
            "description": "Indicates if there are more pages after the current page"
          },
          "hasPreviousPage": {
            "type": "boolean",
            "description": "Indicates if there are pages before the current page"
          },
          "contacts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ContactSearchResponseDto"
            },
            "description": "Contacts",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Paginated response containing contact data with pagination metadata"
      },
      "ContactRequestDto": {
        "type": "object",
        "properties": {
          "source": {
            "type": "string",
            "description": "The source from which the record originated",
            "nullable": true
          },
          "contactDetails": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ContactDetails"
              }
            ],
            "description": "Contact details for the record",
            "nullable": true
          },
          "status": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Status"
              }
            ],
            "description": "The record's current status",
            "nullable": true
          },
          "territory": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Territory"
              }
            ],
            "description": "The record's territory",
            "nullable": true
          },
          "department": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Department"
              }
            ],
            "description": "The record's department",
            "nullable": true
          },
          "customFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomField"
            },
            "description": "Custom field values associated with the record",
            "nullable": true
          },
          "owners": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Owner"
            },
            "description": "List of users that own the record, or that the record is assigned to",
            "nullable": true
          },
          "preferredName": {
            "type": "string",
            "description": "The contact's preferred name",
            "nullable": true
          },
          "firstName": {
            "type": "string",
            "description": "The contact's first name",
            "nullable": true
          },
          "surname": {
            "type": "string",
            "description": "The contact's last name",
            "nullable": true
          },
          "nickname": {
            "type": "string",
            "description": "The contact's nickname",
            "nullable": true
          },
          "jobTitle": {
            "type": "string",
            "description": "The contact's job title",
            "nullable": true
          },
          "company": {
            "type": "string",
            "description": "The contact's current employer",
            "nullable": true
          },
          "website": {
            "type": "string",
            "description": "The client's website URL",
            "nullable": true
          },
          "office": {
            "type": "string",
            "description": "The office in which the contact is based",
            "nullable": true
          },
          "spousesName": {
            "type": "string",
            "description": "Name of the contact's spouse",
            "nullable": true
          },
          "birthday": {
            "type": "string",
            "description": "The contact's birthday",
            "nullable": true
          },
          "anniversary": {
            "type": "string",
            "description": "The contact's anniversary date",
            "nullable": true
          },
          "photo": {
            "type": "string",
            "description": "Contact photo URL",
            "nullable": true
          },
          "note": {
            "type": "string",
            "description": "Notes",
            "nullable": true
          },
          "isPrimary": {
            "type": "boolean",
            "description": "True if this contact is the primary contact for their client",
            "nullable": true
          },
          "marketingPreference": {
            "type": "string",
            "description": "Marketing preference",
            "nullable": true
          },
          "businessUnit": {
            "type": "string",
            "description": "Business unit in which the contact is employed",
            "nullable": true
          },
          "internalReference": {
            "type": "string",
            "description": "The contact's internal reference code",
            "nullable": true
          },
          "tagText": {
            "type": "string",
            "description": "Arbitrary tag text entered by users",
            "nullable": true
          },
          "sectors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Sector"
            },
            "description": "List of sectors associated with the contact",
            "nullable": true
          },
          "quickSkills": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/QuickSkill"
            },
            "description": "List of quick skills associated with the contact",
            "nullable": true
          },
          "client": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ClientLink"
              }
            ],
            "description": "The contact's parent client (employer)",
            "nullable": true
          },
          "manager": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ContactLink"
              }
            ],
            "description": "The contact's manager",
            "nullable": true
          },
          "assistant": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ContactLink"
              }
            ],
            "description": "The contact's assistant",
            "nullable": true
          },
          "referralFrom": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ContactLink"
              }
            ],
            "description": "Contact that this contact was referred by",
            "nullable": true
          },
          "type": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ContactTypeLink"
              }
            ],
            "description": "type is deprecated, use contactTypes instead",
            "nullable": true,
            "deprecated": true
          },
          "role": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ContactRoleLink"
              }
            ],
            "description": "The contact's role",
            "nullable": true
          },
          "address": {
            "allOf": [
              {
                "$ref": "#/components/schemas/AddressDetails"
              }
            ],
            "description": "A postal address",
            "nullable": true
          },
          "additionalContactDetails": {
            "allOf": [
              {
                "$ref": "#/components/schemas/AdditionalContactDetails"
              }
            ],
            "description": "Additional, non-standard contact details",
            "nullable": true
          },
          "marketingPreferences": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Marketing"
              }
            ],
            "description": "Marketing Preferences",
            "nullable": true
          },
          "linkedInUrl": {
            "type": "string",
            "description": "The contact's LinkedIn URL",
            "nullable": true
          },
          "contactTypes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ContactTypeLink"
            },
            "description": "Contact Types",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ContactResponseDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "The record's unique identifier",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "description": "The record's name",
            "nullable": true
          },
          "typeName": {
            "type": "string",
            "description": "Naming convention for this record type, e.g. 'Company', 'Contact', 'Lead', 'Job', etc.",
            "nullable": true
          },
          "source": {
            "type": "string",
            "description": "The source from which the record originated",
            "nullable": true
          },
          "contactDetails": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ContactDetails"
              }
            ],
            "description": "Contact details for the record",
            "nullable": true
          },
          "status": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Status"
              }
            ],
            "description": "The record's current status",
            "nullable": true
          },
          "territory": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Territory"
              }
            ],
            "description": "The record's territory",
            "nullable": true
          },
          "department": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Department"
              }
            ],
            "description": "The record's department",
            "nullable": true
          },
          "customFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomField"
            },
            "description": "Custom field values associated with the record",
            "nullable": true
          },
          "owners": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Owner"
            },
            "description": "List of users that own the record, or that the record is assigned to",
            "nullable": true
          },
          "preferredName": {
            "type": "string",
            "description": "The contact's preferred name",
            "nullable": true
          },
          "firstName": {
            "type": "string",
            "description": "The contact's first name",
            "nullable": true
          },
          "surname": {
            "type": "string",
            "description": "The contact's last name",
            "nullable": true
          },
          "nickname": {
            "type": "string",
            "description": "The contact's nickname",
            "nullable": true
          },
          "jobTitle": {
            "type": "string",
            "description": "The contact's job title",
            "nullable": true
          },
          "company": {
            "type": "string",
            "description": "The contact's current employer",
            "nullable": true
          },
          "website": {
            "type": "string",
            "description": "The client's website URL",
            "nullable": true
          },
          "office": {
            "type": "string",
            "description": "The office in which the contact is based",
            "nullable": true
          },
          "spousesName": {
            "type": "string",
            "description": "Name of the contact's spouse",
            "nullable": true
          },
          "birthday": {
            "type": "string",
            "description": "The contact's birthday",
            "nullable": true
          },
          "anniversary": {
            "type": "string",
            "description": "The contact's anniversary date",
            "nullable": true
          },
          "photo": {
            "type": "string",
            "description": "Contact photo URL",
            "nullable": true
          },
          "note": {
            "type": "string",
            "description": "Notes",
            "nullable": true
          },
          "isPrimary": {
            "type": "boolean",
            "description": "True if this contact is the primary contact for their client"
          },
          "marketingPreference": {
            "type": "string",
            "description": "Marketing preference",
            "nullable": true
          },
          "businessUnit": {
            "type": "string",
            "description": "Business unit in which the contact is employed",
            "nullable": true
          },
          "internalReference": {
            "type": "string",
            "description": "The contact's internal reference code",
            "nullable": true
          },
          "tagText": {
            "type": "string",
            "description": "Arbitrary tag text entered by users",
            "nullable": true
          },
          "sectors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Sector"
            },
            "description": "List of sectors associated with the contact",
            "nullable": true
          },
          "quickSkills": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/QuickSkill"
            },
            "description": "List of quick skills associated with the contact",
            "nullable": true
          },
          "marketingPreferences": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Marketing"
              }
            ],
            "description": "The contacts marketing preferences",
            "nullable": true
          },
          "client": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ClientLink"
              }
            ],
            "description": "The contact's parent client (employer)",
            "nullable": true
          },
          "manager": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ContactLink"
              }
            ],
            "description": "The contact's manager",
            "nullable": true
          },
          "assistant": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ContactLink"
              }
            ],
            "description": "The contact's assistant",
            "nullable": true
          },
          "referralFrom": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ContactLink"
              }
            ],
            "description": "Contact that this contact was referred by",
            "nullable": true
          },
          "type": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ContactTypeLink"
              }
            ],
            "description": "The contact's primary type (first associated contact type, retained for backwards compatibility)",
            "nullable": true
          },
          "contactTypes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ContactTypeLink"
            },
            "description": "All contact types associated with this contact",
            "nullable": true
          },
          "role": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ContactRoleLink"
              }
            ],
            "description": "The contact's role",
            "nullable": true
          },
          "address": {
            "allOf": [
              {
                "$ref": "#/components/schemas/AddressDetails"
              }
            ],
            "description": "A postal address",
            "nullable": true
          },
          "offLimits": {
            "allOf": [
              {
                "$ref": "#/components/schemas/OffLimitsDetails"
              }
            ],
            "description": "Off limits details for this resource",
            "nullable": true
          },
          "history": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ContactHistory"
              }
            ],
            "nullable": true
          },
          "additionalContactDetails": {
            "allOf": [
              {
                "$ref": "#/components/schemas/AdditionalContactDetails"
              }
            ],
            "description": "Additional, non-standard contact details",
            "nullable": true
          },
          "linkedResource": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ResourceLink"
              }
            ],
            "description": "The linked resource",
            "nullable": true
          },
          "linkedInUrl": {
            "type": "string",
            "description": "The contact's LinkedIn URL.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents a single contact record"
      },
      "ContactRoleLink": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "Id",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "description": "Name",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "A link to a contact role"
      },
      "ContactSearchRequestDto": {
        "type": "object",
        "properties": {
          "searchTerm": {
            "type": "string",
            "description": "Term to search for",
            "nullable": true,
            "example": "acme"
          },
          "maxResults": {
            "type": "integer",
            "description": "Maximum results per page",
            "format": "int32",
            "nullable": true,
            "example": 10
          },
          "pageNumber": {
            "type": "integer",
            "description": "The page number to return",
            "format": "int32",
            "nullable": true,
            "example": 1
          },
          "sortBy": {
            "type": "string",
            "description": "A valid column to sort by",
            "nullable": true,
            "example": ""
          },
          "sortDirection": {
            "type": "string",
            "description": "The sort direction, valid values are ASC or DESC",
            "nullable": true,
            "example": "ASC"
          },
          "startingAfter": {
            "type": "integer",
            "description": "optional A cursor to use in pagination. starting_after is an object ID that defines your place in the list. For example, if you make a list request and receive 100 objects, ending with obj_foo, your subsequent call can include starting_after=obj_foo to fetch the next page of the list.",
            "format": "int32",
            "nullable": true
          },
          "statusId": {
            "type": "integer",
            "description": "A record type status by id can be null",
            "format": "int32",
            "nullable": true,
            "example": 7
          },
          "updatedBefore": {
            "type": "string",
            "description": "Only records before a date/time",
            "format": "date-time",
            "nullable": true
          },
          "updatedAfter": {
            "type": "string",
            "description": "Only records after a date/time",
            "format": "date-time",
            "nullable": true
          },
          "onlyMyRecords": {
            "type": "boolean",
            "description": "Include only records assigned to the user calling the api",
            "example": false
          },
          "includeCustomFields": {
            "type": "boolean",
            "description": "Include custom fields in the results",
            "example": false
          },
          "telephone": {
            "type": "string",
            "description": "Searches <b>telephone</b>",
            "nullable": true,
            "example": "acme"
          },
          "email": {
            "type": "string",
            "description": "Searches <b>email</b>",
            "nullable": true,
            "example": "acme"
          },
          "clientId": {
            "type": "integer",
            "description": "Searches by <b>client</b>",
            "format": "int32",
            "nullable": true,
            "example": 1138
          }
        },
        "additionalProperties": false
      },
      "ContactSearchResponseDto": {
        "type": "object",
        "properties": {
          "contactId": {
            "type": "integer",
            "format": "int32"
          },
          "clientName": {
            "type": "string",
            "nullable": true
          },
          "clientId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "salutation": {
            "type": "string",
            "nullable": true
          },
          "firstName": {
            "type": "string",
            "nullable": true
          },
          "surname": {
            "type": "string",
            "nullable": true
          },
          "displayAs": {
            "type": "string",
            "nullable": true
          },
          "jobTitle": {
            "type": "string",
            "nullable": true
          },
          "company": {
            "type": "string",
            "nullable": true
          },
          "addressLine1": {
            "type": "string",
            "nullable": true
          },
          "addressLine2": {
            "type": "string",
            "nullable": true
          },
          "town": {
            "type": "string",
            "nullable": true
          },
          "county": {
            "type": "string",
            "nullable": true
          },
          "postcode": {
            "type": "string",
            "nullable": true
          },
          "country": {
            "type": "string",
            "nullable": true
          },
          "businessPhone": {
            "type": "string",
            "nullable": true
          },
          "homePhone": {
            "type": "string",
            "nullable": true
          },
          "mobilePhone": {
            "type": "string",
            "nullable": true
          },
          "otherPhone": {
            "type": "string",
            "nullable": true
          },
          "fax": {
            "type": "string",
            "nullable": true
          },
          "pager": {
            "type": "string",
            "description": "Pager is deprecated, use LinkedInUrl instead",
            "nullable": true,
            "deprecated": true
          },
          "email": {
            "type": "string",
            "nullable": true
          },
          "website": {
            "type": "string",
            "nullable": true
          },
          "department": {
            "type": "string",
            "nullable": true
          },
          "office": {
            "type": "string",
            "nullable": true
          },
          "contactRole": {
            "type": "string",
            "nullable": true
          },
          "contactType": {
            "type": "string",
            "nullable": true
          },
          "referralFrom": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "territory": {
            "type": "string",
            "nullable": true
          },
          "contactSource": {
            "type": "string",
            "nullable": true
          },
          "marketing": {
            "type": "string",
            "nullable": true
          },
          "businessUnit": {
            "type": "string",
            "nullable": true
          },
          "managerContactId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "contactRoleId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "contactTypeId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "lastUpdatedDateTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "lastUpdatedUserId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "creationDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "departmentId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "territoryId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "contactStatusId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "customFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomField"
            },
            "nullable": true,
            "readOnly": true
          },
          "linkedInUrl": {
            "type": "string",
            "nullable": true
          },
          "contactOwnerId": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "ContactTypeLink": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "Id",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "description": "Name",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "A link to a contact type"
      },
      "CreateInterviewRequestDto": {
        "type": "object",
        "properties": {
          "interviewTemplateId": {
            "type": "integer",
            "description": "The Id of the interview template to use. This must be provided.",
            "format": "int32",
            "nullable": true
          },
          "resourceId": {
            "type": "integer",
            "description": "The Id of a Resource record. Must be provided if OpportunityId is provided.",
            "format": "int32",
            "nullable": true
          },
          "opportunityId": {
            "type": "integer",
            "description": "The Id of an Opportunity record. Must be provided if ResourceId is provided.",
            "format": "int32",
            "nullable": true
          },
          "opportunityResourceId": {
            "type": "integer",
            "description": "The Id of an OpportunityResource record. Must be provided if neither ResourceId or OpportunityId are provided.",
            "format": "int32",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "CreateInterviewResponseDto": {
        "type": "object",
        "properties": {
          "interviewId": {
            "type": "integer",
            "format": "int32"
          },
          "interviewCode": {
            "type": "string",
            "nullable": true
          },
          "questionCount": {
            "type": "integer",
            "format": "int32",
            "readOnly": true
          },
          "recordId": {
            "type": "integer",
            "format": "int32"
          },
          "recordType": {
            "type": "string",
            "nullable": true
          },
          "opportunityId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "interviewDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "interviewExpiry": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "questions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ScreeningTemplateQuestionDto"
            },
            "description": "The active questions belonging to this template, ordered by sort position",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "CustomField": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "value": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "CustomFieldDetails": {
        "type": "object",
        "properties": {
          "association": {
            "type": "string",
            "nullable": true
          },
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "type": {
            "type": "string",
            "nullable": true
          },
          "listId": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "CustomFieldListEntryDto": {
        "type": "object",
        "properties": {
          "fieldValueId": {
            "type": "integer",
            "description": "the custom field list value id",
            "format": "int32"
          },
          "value": {
            "type": "string",
            "description": "The value of the custom field list entry",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "CustomFieldListResponseDto": {
        "type": "object",
        "properties": {
          "listName": {
            "type": "string",
            "description": "Custom field list name",
            "nullable": true
          },
          "listId": {
            "type": "integer",
            "description": "The custom fields list id",
            "format": "int32"
          },
          "listEntries": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomFieldListEntryDto"
            },
            "description": "The allowed values of this list",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents list data values for a custom field list type"
      },
      "Department": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "Id",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "description": "Name",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "The department to which a record belongs"
      },
      "DocumentDto": {
        "type": "object",
        "properties": {
          "filename": {
            "type": "string",
            "description": "Name of the file",
            "nullable": true
          },
          "documentType": {
            "type": "string",
            "description": "The type of document e.g. resume",
            "nullable": true
          },
          "documentData": {
            "type": "string",
            "description": "File data as a base 64 string",
            "nullable": true
          },
          "recordId": {
            "type": "integer",
            "description": "The record id to attach the file to",
            "format": "int32"
          },
          "isPrimary": {
            "type": "boolean",
            "description": "Whether the file is the primary file"
          }
        },
        "additionalProperties": false
      },
      "DocumentFolderResponse": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "DocumentHistoryDto": {
        "type": "object",
        "properties": {
          "createdOn": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "createdByUserId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "createdByDisplayName": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ExpenseCodeDto": {
        "type": "object",
        "properties": {
          "expenseCodeId": {
            "type": "integer",
            "description": "The expense code identifier.",
            "format": "int32"
          },
          "expenseCode": {
            "type": "string",
            "description": "The expense code.",
            "nullable": true
          },
          "expenseCodeName": {
            "type": "string",
            "description": "The name of the expense code.",
            "nullable": true
          },
          "expenseUnitValue": {
            "type": "number",
            "description": "The expense unit value.",
            "format": "double",
            "nullable": true
          },
          "expenseTaxRate": {
            "type": "number",
            "description": "The expense tax rate.",
            "format": "double",
            "nullable": true
          },
          "isBillable": {
            "type": "boolean",
            "description": "A value indicating whether this instance is billable."
          },
          "expenseDescription": {
            "type": "string",
            "description": "The expense description.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ExpensePagedSearchResponseDto": {
        "type": "object",
        "properties": {
          "pageNumber": {
            "type": "integer",
            "description": "Current page number (1-based)",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "description": "Number of items per page",
            "format": "int32"
          },
          "totalCount": {
            "type": "integer",
            "description": "Total number of skills matching the query",
            "format": "int32"
          },
          "totalPages": {
            "type": "integer",
            "description": "Total number of pages available",
            "format": "int32"
          },
          "hasNextPage": {
            "type": "boolean",
            "description": "Indicates if there are more pages after the current page"
          },
          "hasPreviousPage": {
            "type": "boolean",
            "description": "Indicates if there are pages before the current page"
          },
          "expenses": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ExpenseSearchResponseDto"
            },
            "description": "The paginated list of expenses matching the search criteria",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ExpenseResponseDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "The expense identifier.",
            "format": "int32"
          },
          "resourceId": {
            "type": "integer",
            "description": "The resource identifier.",
            "format": "int32"
          },
          "clientId": {
            "type": "integer",
            "description": "The client identifier.",
            "format": "int32"
          },
          "projectId": {
            "type": "integer",
            "description": "The project identifier.",
            "format": "int32"
          },
          "projectActivityId": {
            "type": "integer",
            "description": "The project activity identifier.",
            "format": "int32"
          },
          "expenseDate": {
            "type": "string",
            "description": "The expense date.",
            "format": "date"
          },
          "expenseCodeId": {
            "type": "integer",
            "description": "The expense code identifier.",
            "format": "int32"
          },
          "expenseCodeName": {
            "type": "string",
            "description": "The name of the expense code.",
            "nullable": true
          },
          "expenseUnits": {
            "type": "number",
            "description": "The expense units.",
            "format": "double"
          },
          "expenseUnitValue": {
            "type": "number",
            "description": "The expense unit value.",
            "format": "double"
          },
          "expenseValue": {
            "type": "number",
            "description": "The expense value.",
            "format": "double"
          },
          "expenseTaxRate": {
            "type": "number",
            "description": "The expense tax rate.",
            "format": "double"
          },
          "expenseTaxValue": {
            "type": "number",
            "description": "The expense tax value.",
            "format": "double"
          },
          "expenseNote": {
            "type": "string",
            "description": "The expense note.",
            "nullable": true
          },
          "approvalStatus": {
            "type": "string",
            "description": "The approval status.",
            "nullable": true
          },
          "isBillable": {
            "type": "boolean",
            "description": "A value indicating whether this expense is billable."
          },
          "isBilled": {
            "type": "boolean",
            "description": "A value indicating whether this expense is billed."
          },
          "billReference": {
            "type": "string",
            "description": "The bill reference.",
            "nullable": true
          },
          "isPaid": {
            "type": "boolean",
            "description": "A value indicating whether this expense is paid."
          },
          "payReference": {
            "type": "string",
            "description": "The pay reference.",
            "nullable": true
          },
          "purchaseOrderId": {
            "type": "integer",
            "description": "The purchase order identifier.",
            "format": "int32"
          },
          "expenseTotalValue": {
            "type": "number",
            "description": "Gets the expense total value.",
            "format": "double"
          },
          "approvalDateTime": {
            "type": "string",
            "description": "The approval date time",
            "format": "date-time",
            "nullable": true
          },
          "history": {
            "allOf": [
              {
                "$ref": "#/components/schemas/RecordHistory"
              }
            ],
            "description": "The history.",
            "nullable": true
          },
          "approvedBy": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Approver"
              }
            ],
            "description": "The approver",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "The GET response for expenses with history child object"
      },
      "ExpenseSearchRequestDto": {
        "type": "object",
        "properties": {
          "searchTerm": {
            "type": "string",
            "description": "Term to search for",
            "nullable": true,
            "example": "acme"
          },
          "maxResults": {
            "type": "integer",
            "description": "Maximum results per page",
            "format": "int32",
            "nullable": true,
            "example": 10
          },
          "pageNumber": {
            "type": "integer",
            "description": "The page number to return",
            "format": "int32",
            "nullable": true,
            "example": 1
          },
          "sortBy": {
            "type": "string",
            "description": "A valid column to sort by",
            "nullable": true,
            "example": ""
          },
          "sortDirection": {
            "type": "string",
            "description": "The sort direction, valid values are ASC or DESC",
            "nullable": true,
            "example": "ASC"
          },
          "dateFrom": {
            "type": "string",
            "description": "Sets the date from.",
            "format": "date",
            "nullable": true
          },
          "dateTo": {
            "type": "string",
            "description": "Sets the date to.",
            "format": "date",
            "nullable": true
          },
          "resourceId": {
            "type": "integer",
            "description": "Sets the resource identifier.",
            "format": "int32",
            "nullable": true
          },
          "clientId": {
            "type": "integer",
            "description": "Sets the client identifier.",
            "format": "int32",
            "nullable": true
          },
          "projectId": {
            "type": "integer",
            "description": "Sets the project identifier.",
            "format": "int32",
            "nullable": true
          },
          "expenseCodeId": {
            "type": "integer",
            "description": "Sets the expense code identifier.",
            "format": "int32",
            "nullable": true
          },
          "purchaseOrderId": {
            "type": "integer",
            "description": "Sets the purchase order identifier.",
            "format": "int32",
            "nullable": true
          },
          "approvalStatus": {
            "type": "string",
            "description": "Sets the approval status.",
            "nullable": true
          },
          "isPaid": {
            "type": "boolean",
            "description": "Sets the is paid.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ExpenseSearchResponseDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "The expense identifier.",
            "format": "int32"
          },
          "resourceId": {
            "type": "integer",
            "description": "The resource identifier.",
            "format": "int32"
          },
          "clientId": {
            "type": "integer",
            "description": "The client identifier.",
            "format": "int32"
          },
          "projectId": {
            "type": "integer",
            "description": "The project identifier.",
            "format": "int32"
          },
          "projectActivityId": {
            "type": "integer",
            "description": "The project activity identifier.",
            "format": "int32"
          },
          "expenseDate": {
            "type": "string",
            "description": "The expense date.",
            "format": "date"
          },
          "expenseCodeId": {
            "type": "integer",
            "description": "The expense code identifier.",
            "format": "int32"
          },
          "expenseCodeName": {
            "type": "string",
            "description": "The name of the expense code.",
            "nullable": true
          },
          "expenseUnits": {
            "type": "number",
            "description": "The expense units.",
            "format": "double"
          },
          "expenseUnitValue": {
            "type": "number",
            "description": "The expense unit value.",
            "format": "double"
          },
          "expenseValue": {
            "type": "number",
            "description": "The expense value.",
            "format": "double"
          },
          "expenseTaxRate": {
            "type": "number",
            "description": "The expense tax rate.",
            "format": "double"
          },
          "expenseTaxValue": {
            "type": "number",
            "description": "The expense tax value.",
            "format": "double"
          },
          "expenseNote": {
            "type": "string",
            "description": "The expense note.",
            "nullable": true
          },
          "approvalStatus": {
            "type": "string",
            "description": "The approval status.",
            "nullable": true
          },
          "isBillable": {
            "type": "boolean",
            "description": "A value indicating whether this expense is billable."
          },
          "isBilled": {
            "type": "boolean",
            "description": "A value indicating whether this expense is billed."
          },
          "billReference": {
            "type": "string",
            "description": "The bill reference.",
            "nullable": true
          },
          "isPaid": {
            "type": "boolean",
            "description": "A value indicating whether this expense is paid."
          },
          "payReference": {
            "type": "string",
            "description": "The pay reference.",
            "nullable": true
          },
          "purchaseOrderId": {
            "type": "integer",
            "description": "The purchase order identifier.",
            "format": "int32"
          },
          "expenseTotalValue": {
            "type": "number",
            "description": "Gets the expense total value.",
            "format": "double"
          },
          "approvalDateTime": {
            "type": "string",
            "description": "The approval date time",
            "format": "date-time",
            "nullable": true
          },
          "createdDate": {
            "type": "string",
            "description": "The created date",
            "format": "date",
            "nullable": true
          },
          "updatedByUserId": {
            "type": "integer",
            "description": "The created user Id",
            "format": "int32",
            "nullable": true
          },
          "approvedByRecordId": {
            "type": "integer",
            "description": "The approved by record identifier",
            "format": "int32",
            "nullable": true
          },
          "approvedByRecordType": {
            "type": "string",
            "description": "The type of the approved by record",
            "nullable": true
          },
          "approvedByName": {
            "type": "string",
            "description": "The name of the approver",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "The search response for expenses in the standard flat format"
      },
      "FileContentResponseDto": {
        "type": "object",
        "properties": {
          "documentId": {
            "type": "integer",
            "format": "int32"
          },
          "filename": {
            "type": "string",
            "nullable": true
          },
          "isPrimary": {
            "type": "boolean"
          },
          "documentType": {
            "type": "string",
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "folderId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "fileType": {
            "type": "string",
            "nullable": true
          },
          "virtualFilePath": {
            "type": "string",
            "nullable": true
          },
          "history": {
            "allOf": [
              {
                "$ref": "#/components/schemas/DocumentHistoryDto"
              }
            ],
            "nullable": true
          },
          "filecontent": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "FullInterviewResponseDto": {
        "type": "object",
        "properties": {
          "template": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ScreeningTemplateDto"
              }
            ],
            "description": "The screening template details",
            "nullable": true
          },
          "questions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ScreeningTemplateQuestionDto"
            },
            "description": "The active questions belonging to this template, ordered by sort position",
            "nullable": true
          },
          "recordId": {
            "type": "integer",
            "description": "The recordId asssociated with this interview",
            "format": "int32"
          },
          "recordType": {
            "type": "string",
            "description": "The type of the record.",
            "nullable": true
          },
          "type": {
            "type": "string",
            "description": "Interview type: Screening Questions | Video Interview | AI Screening Chat",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "InterviewResponseDto": {
        "type": "object",
        "properties": {
          "interviewId": {
            "type": "integer",
            "description": "The interview's unique identifier",
            "format": "int32"
          },
          "type": {
            "type": "string",
            "description": "Interview type: Screening Questions | Video Interview | AI Screening Chat",
            "nullable": true
          },
          "templateId": {
            "type": "integer",
            "description": "The template used for this interview",
            "format": "int32"
          },
          "date": {
            "type": "string",
            "description": "The date/time the interview was sent",
            "format": "date-time",
            "nullable": true
          },
          "expiresOn": {
            "type": "string",
            "description": "The date/time the interview expires",
            "format": "date-time",
            "nullable": true
          },
          "completedOn": {
            "type": "string",
            "description": "The date/time the interview was completed",
            "format": "date-time",
            "nullable": true
          },
          "startedOn": {
            "type": "string",
            "description": "The date/time the candidate started the interview",
            "format": "date-time",
            "nullable": true
          },
          "opportunityId": {
            "type": "integer",
            "description": "The opportunity this interview relates to",
            "format": "int32",
            "nullable": true
          },
          "aiScore": {
            "type": "number",
            "description": "AI score from 0–100 assigned after screening",
            "format": "double",
            "nullable": true
          },
          "aiProvider": {
            "type": "string",
            "description": "The AI provider that conducted the screening",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents a single interview record for an opportunity-resource"
      },
      "InterviewSubmissionResponseDto": {
        "type": "object",
        "properties": {
          "status": {
            "allOf": [
              {
                "$ref": "#/components/schemas/InterviewSubmissionResultStatus"
              }
            ]
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "opportunityResourceId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "InterviewSubmissionResultStatus": {
        "enum": [
          0,
          1,
          2,
          3
        ],
        "type": "integer",
        "format": "int32"
      },
      "InterviewType": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "InvoiceHistory": {
        "type": "object",
        "properties": {
          "created": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "closed": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "updated": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "updatedBy": {
            "type": "integer",
            "format": "int32"
          },
          "sendCount": {
            "type": "integer",
            "description": "The number of times the invoice has been sent",
            "format": "int32",
            "nullable": true
          },
          "lastSent": {
            "type": "string",
            "description": "The last date the invoice was sent",
            "format": "date-time",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "InvoiceItemDto": {
        "type": "object",
        "properties": {
          "invoiceItemId": {
            "type": "integer",
            "description": "The unique identifier for the invoice item",
            "format": "int32"
          },
          "invoiceId": {
            "type": "integer",
            "description": "The associated invoice ID",
            "format": "int32",
            "nullable": true
          },
          "itemDate": {
            "type": "string",
            "description": "The date of the item",
            "format": "date-time",
            "nullable": true
          },
          "itemCode": {
            "type": "string",
            "description": "The item code",
            "nullable": true
          },
          "itemDescription": {
            "type": "string",
            "description": "The description of the item",
            "nullable": true
          },
          "units": {
            "type": "number",
            "description": "The number of units",
            "format": "double",
            "nullable": true
          },
          "unitValue": {
            "type": "number",
            "description": "The value per unit",
            "format": "double",
            "nullable": true
          },
          "subValue": {
            "type": "number",
            "description": "The subtotal value",
            "format": "double",
            "nullable": true
          },
          "taxRate": {
            "type": "number",
            "description": "The tax rate applied",
            "format": "double",
            "nullable": true
          },
          "totalValue": {
            "type": "number",
            "description": "The total value including tax",
            "format": "double",
            "nullable": true
          },
          "itemStatus": {
            "type": "string",
            "description": "The status of the item",
            "nullable": true
          },
          "opportunityResourceId": {
            "type": "integer",
            "description": "Associated Opportunity Resource",
            "format": "int32",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "InvoicePagedSearchResponseDto": {
        "type": "object",
        "properties": {
          "pageNumber": {
            "type": "integer",
            "description": "Current page number (1-based)",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "description": "Number of items per page",
            "format": "int32"
          },
          "totalCount": {
            "type": "integer",
            "description": "Total number of skills matching the query",
            "format": "int32"
          },
          "totalPages": {
            "type": "integer",
            "description": "Total number of pages available",
            "format": "int32"
          },
          "hasNextPage": {
            "type": "boolean",
            "description": "Indicates if there are more pages after the current page"
          },
          "hasPreviousPage": {
            "type": "boolean",
            "description": "Indicates if there are pages before the current page"
          },
          "invoices": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/InvoiceSearchResponseDto"
            },
            "description": "Invoices",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Paginated response containing invoice data with pagination metadata"
      },
      "InvoiceRequestDto": {
        "type": "object",
        "properties": {
          "invoiceDate": {
            "type": "string",
            "description": "The invoice date",
            "format": "date-time",
            "nullable": true
          },
          "dueDate": {
            "type": "string",
            "description": "The due date for the invoice",
            "format": "date-time",
            "nullable": true
          },
          "poNumber": {
            "type": "string",
            "description": "The purchase order number associated with the invoice",
            "nullable": true
          },
          "status": {
            "type": "string",
            "description": "The status of the invoice Raised etc",
            "nullable": true
          },
          "terms": {
            "type": "integer",
            "description": "The terms associated with the invoice  in number of days",
            "format": "int32",
            "nullable": true
          },
          "paymentDate": {
            "type": "string",
            "description": "The payment date of the invoice",
            "format": "date-time",
            "nullable": true
          },
          "subTotal": {
            "type": "number",
            "description": "The subtotal amount of the invoice",
            "format": "double",
            "nullable": true
          },
          "taxTotal": {
            "type": "number",
            "description": "The total tax amount of the invoice",
            "format": "double",
            "nullable": true
          },
          "total": {
            "type": "number",
            "description": "The total amount of the invoice",
            "format": "double",
            "nullable": true
          },
          "note": {
            "type": "string",
            "description": "Any notes associated with the invoice",
            "nullable": true
          },
          "currencyCode": {
            "type": "string",
            "description": "The currency code used for the invoice",
            "nullable": true
          },
          "discount": {
            "type": "number",
            "description": "Any discount applied to the invoice",
            "format": "double",
            "nullable": true
          },
          "surcharge": {
            "type": "number",
            "description": "Any surcharge applied to the invoice",
            "format": "double",
            "nullable": true
          },
          "invoiceItems": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/InvoiceItemDto"
            },
            "description": "Invoice line items",
            "nullable": true
          },
          "address": {
            "allOf": [
              {
                "$ref": "#/components/schemas/AddressDetails"
              }
            ],
            "description": "The invoice address",
            "nullable": true
          },
          "associations": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Associations"
              }
            ],
            "description": "Records associated with this invoice",
            "nullable": true
          },
          "territory": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Territory"
              }
            ],
            "description": "The record's territory",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "InvoiceResponseDto": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "The record's name",
            "nullable": true
          },
          "typeName": {
            "type": "string",
            "description": "Naming convention for this record type, e.g. 'Company', 'Contact', 'Lead', 'Job', etc.",
            "nullable": true
          },
          "source": {
            "type": "string",
            "description": "The source from which the record originated",
            "nullable": true
          },
          "contactDetails": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ContactDetails"
              }
            ],
            "description": "Contact details for the record",
            "nullable": true
          },
          "status": {
            "type": "string",
            "description": "The status of the invoice",
            "nullable": true
          },
          "territory": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Territory"
              }
            ],
            "description": "The record's territory",
            "nullable": true
          },
          "department": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Department"
              }
            ],
            "description": "The record's department",
            "nullable": true
          },
          "customFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomField"
            },
            "description": "Custom field values associated with the record",
            "nullable": true
          },
          "owners": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Owner"
            },
            "description": "List of users that own the record, or that the record is assigned to",
            "nullable": true
          },
          "id": {
            "type": "integer",
            "description": "The invoice number",
            "format": "int32"
          },
          "invoiceDate": {
            "type": "string",
            "description": "The invoice date",
            "format": "date-time",
            "nullable": true
          },
          "dueDate": {
            "type": "string",
            "description": "The due date for the invoice",
            "format": "date-time",
            "nullable": true
          },
          "poNumber": {
            "type": "string",
            "description": "The purchase order number associated with the invoice",
            "nullable": true
          },
          "terms": {
            "type": "integer",
            "description": "The terms associated with the invoice in number of days",
            "format": "int32"
          },
          "paymentDate": {
            "type": "string",
            "description": "The payment date of the invoice",
            "format": "date-time",
            "nullable": true
          },
          "subTotal": {
            "type": "number",
            "description": "The subtotal amount of the invoice",
            "format": "double",
            "nullable": true
          },
          "taxTotal": {
            "type": "number",
            "description": "The total tax amount of the invoice",
            "format": "double",
            "nullable": true
          },
          "total": {
            "type": "number",
            "description": "The total amount of the invoice",
            "format": "double",
            "nullable": true
          },
          "note": {
            "type": "string",
            "description": "Any notes associated with the invoice",
            "nullable": true
          },
          "currencyCode": {
            "type": "string",
            "description": "The currency code used for the invoice",
            "nullable": true
          },
          "discount": {
            "type": "number",
            "description": "Any discount applied to the invoice",
            "format": "double",
            "nullable": true
          },
          "surcharge": {
            "type": "number",
            "description": "Any surcharge applied to the invoice",
            "format": "double",
            "nullable": true
          },
          "invoiceItems": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/InvoiceItemDto"
            },
            "description": "Invoice line items",
            "nullable": true
          },
          "address": {
            "allOf": [
              {
                "$ref": "#/components/schemas/AddressDetails"
              }
            ],
            "description": "The invoice address",
            "nullable": true
          },
          "associations": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Associations"
              }
            ],
            "description": "Records associated with this invoice",
            "nullable": true
          },
          "history": {
            "allOf": [
              {
                "$ref": "#/components/schemas/InvoiceHistory"
              }
            ],
            "description": "Historical imformation for the invoice",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents a single invoice record"
      },
      "InvoiceSearchRequestDto": {
        "type": "object",
        "properties": {
          "searchTerm": {
            "type": "string",
            "description": "Term to search for",
            "nullable": true,
            "example": "acme"
          },
          "maxResults": {
            "type": "integer",
            "description": "Maximum results per page",
            "format": "int32",
            "nullable": true,
            "example": 10
          },
          "pageNumber": {
            "type": "integer",
            "description": "The page number to return",
            "format": "int32",
            "nullable": true,
            "example": 1
          },
          "sortBy": {
            "type": "string",
            "description": "A valid column to sort by",
            "nullable": true,
            "example": ""
          },
          "sortDirection": {
            "type": "string",
            "description": "The sort direction, valid values are ASC or DESC",
            "nullable": true,
            "example": "ASC"
          },
          "statusId": {
            "type": "integer",
            "description": "A record type status id can be null",
            "format": "int32",
            "nullable": true,
            "example": 7
          },
          "state": {
            "type": "string",
            "description": "Include only records whose status matches this state (not supported for Clients or Contacts)",
            "nullable": true,
            "example": ""
          },
          "updatedBefore": {
            "type": "string",
            "description": "Only records before a date/time",
            "format": "date-time",
            "nullable": true
          },
          "updatedAfter": {
            "type": "string",
            "description": "Only records after a date/time",
            "format": "date-time",
            "nullable": true
          },
          "onlyMyRecords": {
            "type": "boolean",
            "description": "Include only records assigned to the user calling the api",
            "example": false
          },
          "includeCustomFields": {
            "type": "boolean",
            "description": "Include custom fields in the results",
            "example": false
          },
          "invoiceDateFrom": {
            "type": "string",
            "description": "Only records where invoice date is from this date",
            "format": "date",
            "nullable": true
          },
          "invoiceDateTo": {
            "type": "string",
            "description": "Only records where invoice date is up to this date",
            "format": "date",
            "nullable": true
          },
          "dueDateFrom": {
            "type": "string",
            "description": "Only records where invoice due date is from this date",
            "format": "date",
            "nullable": true
          },
          "dueDateTo": {
            "type": "string",
            "description": "Only records where invoice due date is up to this date",
            "format": "date",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Search request specific to invoice records.\r\nThe State field accepts invoice-specific values: 'Raised', 'Paid', 'Bad Debt', 'Awaiting Approval', 'Approved', 'Unapproved'"
      },
      "InvoiceSearchResponseDto": {
        "type": "object",
        "properties": {
          "invoiceId": {
            "type": "integer",
            "format": "int32"
          },
          "opportunityId": {
            "type": "integer",
            "format": "int32"
          },
          "clientName": {
            "type": "string",
            "nullable": true
          },
          "clientId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "invoiceTotal": {
            "type": "number",
            "format": "double"
          },
          "currencyCode": {
            "type": "string",
            "nullable": true
          },
          "invoiceDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "status": {
            "type": "string",
            "nullable": true
          },
          "invoiceOwnerId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "invoiceOwner": {
            "type": "string",
            "nullable": true
          },
          "customFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomField"
            },
            "nullable": true,
            "readOnly": true
          },
          "invoiceDueDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "InvoicingDetails": {
        "type": "object",
        "properties": {
          "chargeRateTerms": {
            "type": "string",
            "description": "Agreed Charge Rate Terms",
            "nullable": true
          },
          "invoicingFrequency": {
            "type": "string",
            "description": "Invoicing Frequency Note",
            "nullable": true
          },
          "invoicingDay": {
            "type": "string",
            "description": "Invoicing Day",
            "nullable": true
          },
          "invoiceTerms": {
            "type": "string",
            "description": "Agreed invoicing terms",
            "nullable": true
          },
          "invoicingContact": {
            "type": "string",
            "description": "Invoicing contact name",
            "nullable": true
          },
          "invoiceSendCc": {
            "type": "string",
            "description": "Send Also To (Cc)",
            "nullable": true
          },
          "chargeRate": {
            "type": "number",
            "description": "Agreed Charge Rate",
            "format": "double"
          },
          "discount": {
            "type": "number",
            "description": "Automatically applied discount",
            "format": "double"
          },
          "surcharge": {
            "type": "number",
            "description": "Automatically applied surcharge",
            "format": "double"
          },
          "taxRate": {
            "type": "number",
            "description": "Tax rate to apply to invoices",
            "format": "double"
          },
          "isTaxExempt": {
            "type": "boolean",
            "description": "True if the client is exempt from taxes"
          },
          "applySurcharge": {
            "type": "boolean",
            "description": "True if the surcharge should be applied automatically"
          },
          "creditApproved": {
            "type": "boolean",
            "description": "True if the client has been approved for credit"
          },
          "allowOnlinePayments": {
            "type": "boolean",
            "description": "True if online payment services are enabled"
          }
        },
        "additionalProperties": false
      },
      "LeadHistory": {
        "type": "object",
        "properties": {
          "created": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "closed": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "updated": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "updatedBy": {
            "type": "integer",
            "format": "int32"
          },
          "awarded": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "LeadLink": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "Id",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "description": "Name",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "A link to a lead record"
      },
      "LeadPagedSearchResponseDto": {
        "type": "object",
        "properties": {
          "pageNumber": {
            "type": "integer",
            "description": "Current page number (1-based)",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "description": "Number of items per page",
            "format": "int32"
          },
          "totalCount": {
            "type": "integer",
            "description": "Total number of skills matching the query",
            "format": "int32"
          },
          "totalPages": {
            "type": "integer",
            "description": "Total number of pages available",
            "format": "int32"
          },
          "hasNextPage": {
            "type": "boolean",
            "description": "Indicates if there are more pages after the current page"
          },
          "hasPreviousPage": {
            "type": "boolean",
            "description": "Indicates if there are pages before the current page"
          },
          "leads": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/LeadSearchResponseDto"
            },
            "description": "Leads",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Paginated response containing send list data with pagination metadata"
      },
      "LeadRequestDto": {
        "type": "object",
        "properties": {
          "source": {
            "type": "string",
            "description": "The source from which the record originated",
            "nullable": true
          },
          "contactDetails": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ContactDetails"
              }
            ],
            "description": "Contact details for the record",
            "nullable": true
          },
          "status": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Status"
              }
            ],
            "description": "The record's current status",
            "nullable": true
          },
          "territory": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Territory"
              }
            ],
            "description": "The record's territory",
            "nullable": true
          },
          "department": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Department"
              }
            ],
            "description": "The record's department",
            "nullable": true
          },
          "customFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomField"
            },
            "description": "Custom field values associated with the record",
            "nullable": true
          },
          "owners": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Owner"
            },
            "description": "List of users that own the record, or that the record is assigned to",
            "nullable": true
          },
          "name": {
            "type": "string",
            "description": "The record's name",
            "nullable": true
          },
          "description": {
            "type": "string",
            "description": "The lead's description",
            "nullable": true
          },
          "currencyCode": {
            "type": "string",
            "description": "The currency in which the lead's potential value is stored",
            "nullable": true
          },
          "contactType": {
            "type": "string",
            "description": "(Deprecated)",
            "nullable": true
          },
          "potentialValue": {
            "type": "integer",
            "description": "The lead's potential monetary value",
            "format": "int32",
            "nullable": true
          },
          "strategy": {
            "type": "string",
            "description": "The business strategy for approaching the lead",
            "nullable": true
          },
          "internalReference": {
            "type": "string",
            "description": "The lead's internal reference code",
            "nullable": true
          },
          "tagText": {
            "type": "string",
            "description": "Arbitrary tag text entered by users",
            "nullable": true
          },
          "associations": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Associations"
              }
            ],
            "description": "Other records that a record is associated with",
            "nullable": true
          },
          "mandact": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Mandact"
              }
            ],
            "description": "MANDACT scores for a record",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "LeadResponseDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "The record's unique identifier",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "description": "The record's name",
            "nullable": true
          },
          "typeName": {
            "type": "string",
            "description": "Naming convention for this record type, e.g. 'Company', 'Contact', 'Lead', 'Job', etc.",
            "nullable": true
          },
          "source": {
            "type": "string",
            "description": "The source from which the record originated",
            "nullable": true
          },
          "contactDetails": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ContactDetails"
              }
            ],
            "description": "Contact details for the record",
            "nullable": true
          },
          "status": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Status"
              }
            ],
            "description": "The record's current status",
            "nullable": true
          },
          "territory": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Territory"
              }
            ],
            "description": "The record's territory",
            "nullable": true
          },
          "department": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Department"
              }
            ],
            "description": "The record's department",
            "nullable": true
          },
          "customFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomField"
            },
            "description": "Custom field values associated with the record",
            "nullable": true
          },
          "owners": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Owner"
            },
            "description": "List of users that own the record, or that the record is assigned to",
            "nullable": true
          },
          "subject": {
            "type": "string",
            "description": "The subject of the lead (supported for backward compatibility with API Classic)",
            "nullable": true
          },
          "description": {
            "type": "string",
            "description": "The lead's description",
            "nullable": true
          },
          "from": {
            "type": "string",
            "description": "The contact or resource from which the lead was created",
            "nullable": true
          },
          "currencyCode": {
            "type": "string",
            "description": "The currency in which the lead's potential value is stored",
            "nullable": true
          },
          "contactType": {
            "type": "string",
            "description": "(Deprecated)",
            "nullable": true
          },
          "potentialValue": {
            "type": "integer",
            "description": "The lead's potential monetary value",
            "format": "int32"
          },
          "strategy": {
            "type": "string",
            "description": "The business strategy for approaching the lead",
            "nullable": true
          },
          "internalReference": {
            "type": "string",
            "description": "The lead's internal reference code",
            "nullable": true
          },
          "responseCode": {
            "type": "string",
            "description": "",
            "nullable": true
          },
          "tagText": {
            "type": "string",
            "description": "Arbitrary tag text entered by users",
            "nullable": true
          },
          "associations": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Associations"
              }
            ],
            "description": "Other records that a record is associated with",
            "nullable": true
          },
          "mandact": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Mandact"
              }
            ],
            "description": "MANDACT scores for a record",
            "nullable": true
          },
          "history": {
            "allOf": [
              {
                "$ref": "#/components/schemas/LeadHistory"
              }
            ],
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents a single lead record"
      },
      "LeadSearchRequestDto": {
        "type": "object",
        "properties": {
          "searchTerm": {
            "type": "string",
            "description": "Term to search for",
            "nullable": true,
            "example": "acme"
          },
          "maxResults": {
            "type": "integer",
            "description": "Maximum results per page",
            "format": "int32",
            "nullable": true,
            "example": 10
          },
          "pageNumber": {
            "type": "integer",
            "description": "The page number to return",
            "format": "int32",
            "nullable": true,
            "example": 1
          },
          "sortBy": {
            "type": "string",
            "description": "A valid column to sort by",
            "nullable": true,
            "example": ""
          },
          "sortDirection": {
            "type": "string",
            "description": "The sort direction, valid values are ASC or DESC",
            "nullable": true,
            "example": "ASC"
          },
          "statusId": {
            "type": "integer",
            "description": "A record type status id can be null",
            "format": "int32",
            "nullable": true,
            "example": 7
          },
          "state": {
            "type": "string",
            "description": "Include only records whose status matches this state (not supported for Clients or Contacts)",
            "nullable": true,
            "example": ""
          },
          "updatedBefore": {
            "type": "string",
            "description": "Only records before a date/time",
            "format": "date-time",
            "nullable": true
          },
          "updatedAfter": {
            "type": "string",
            "description": "Only records after a date/time",
            "format": "date-time",
            "nullable": true
          },
          "onlyMyRecords": {
            "type": "boolean",
            "description": "Include only records assigned to the user calling the api",
            "example": false
          },
          "includeCustomFields": {
            "type": "boolean",
            "description": "Include custom fields in the results",
            "example": false
          },
          "clientId": {
            "type": "integer",
            "description": "Searches by <b>client</b>",
            "format": "int32",
            "nullable": true,
            "example": 1138
          }
        },
        "additionalProperties": false,
        "description": "Lead Search Request Dto"
      },
      "LeadSearchResponseDto": {
        "type": "object",
        "properties": {
          "leadId": {
            "type": "integer",
            "format": "int32"
          },
          "leadName": {
            "type": "string",
            "nullable": true
          },
          "clientName": {
            "type": "string",
            "nullable": true
          },
          "leadStatusName": {
            "type": "string",
            "nullable": true
          },
          "leadDate": {
            "type": "string",
            "nullable": true
          },
          "leadSource": {
            "type": "string",
            "nullable": true
          },
          "leadDescription": {
            "type": "string",
            "nullable": true
          },
          "clientId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "customFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomField"
            },
            "nullable": true,
            "readOnly": true
          },
          "lastUpdatedUserId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "lastUpdatedDateTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "leadOwnerId": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "LongListDto": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "integer",
            "format": "int32"
          },
          "opportunityId": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false,
        "description": "Long list transfer object"
      },
      "LongListResponseDto": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "integer",
            "format": "int32"
          },
          "opportunityId": {
            "type": "integer",
            "format": "int32"
          },
          "rank": {
            "type": "integer",
            "format": "int32"
          },
          "status": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Mandact": {
        "type": "object",
        "properties": {
          "money": {
            "nullable": true
          },
          "moneyScore": {
            "nullable": true
          },
          "authority": {
            "nullable": true
          },
          "authorityScore": {
            "nullable": true
          },
          "need": {
            "nullable": true
          },
          "needScore": {
            "nullable": true
          },
          "decision": {
            "nullable": true
          },
          "decisionScore": {
            "nullable": true
          },
          "ability": {
            "nullable": true
          },
          "abilityScore": {
            "nullable": true
          },
          "competition": {
            "nullable": true
          },
          "competitionScore": {
            "nullable": true
          },
          "timing": {
            "nullable": true
          },
          "timingScore": {
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "MANDACT scores for a record"
      },
      "Marketing": {
        "type": "object",
        "properties": {
          "marketingPreference": {
            "type": "string",
            "nullable": true
          },
          "textOptIn": {
            "type": "boolean"
          },
          "emailOptIn": {
            "type": "boolean"
          },
          "telephoneOptIn": {
            "type": "boolean"
          },
          "workOptIn": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "MetaDataResponseDto": {
        "type": "object",
        "properties": {
          "documentTypes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/RecordReference"
            },
            "description": "Document types available in the system (e.g. doc, docx, pdf)",
            "nullable": true
          },
          "accessRights": {
            "allOf": [
              {
                "$ref": "#/components/schemas/AccessRights"
              }
            ],
            "description": "Access rights list",
            "nullable": true
          },
          "namingConventions": {
            "allOf": [
              {
                "$ref": "#/components/schemas/NamingConventions"
              }
            ],
            "description": "Naming conventions in place",
            "nullable": true
          },
          "resourceStatuses": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/StatusMetadata"
            },
            "description": "The status look ups for resources",
            "nullable": true
          },
          "projectStatuses": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/StatusMetadata"
            },
            "description": "The status look ups for projects",
            "nullable": true
          },
          "contactStatuses": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/StatusMetadata"
            },
            "description": "The status look ups for contacts",
            "nullable": true
          },
          "opportunityStatuses": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/StatusMetadata"
            },
            "description": "The status look ups for opportunities",
            "nullable": true
          },
          "opportunityStates": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "The state look ups for opportunities",
            "nullable": true
          },
          "opportunityResourceStatuses": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/StatusMetadata"
            },
            "description": "The status look ups for opportunity resources",
            "nullable": true
          },
          "opportunityResourceTypes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Status"
            },
            "description": "The status look ups for opportunity resources types",
            "nullable": true
          },
          "clientStatuses": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/StatusMetadata"
            },
            "description": "The status look ups for clients",
            "nullable": true
          },
          "departments": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Department"
            },
            "description": "The status look ups for departments",
            "nullable": true
          },
          "leadStatuses": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/StatusMetadata"
            },
            "description": "The status lookups for lead statuses",
            "nullable": true
          },
          "leadSources": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Status"
            },
            "description": "The status lookups for lead sources",
            "nullable": true
          },
          "opportunityWorkTypes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Status"
            },
            "description": "The status lookups for opportunity work types",
            "nullable": true
          },
          "resourceSources": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Status"
            },
            "description": "The status lookups for resource sources",
            "nullable": true
          },
          "ticketTypes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Status"
            },
            "description": "The status lookups for ticket types",
            "nullable": true
          },
          "userTeams": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Status"
            },
            "description": "The status lookups for user teams",
            "nullable": true
          },
          "taskTypes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Status"
            },
            "description": "The status lookups for task types",
            "nullable": true
          },
          "customFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomFieldDetails"
            },
            "description": "The custom fields",
            "nullable": true
          },
          "partnerTypes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Status"
            },
            "description": "The status lookups for partner types",
            "nullable": true
          },
          "activityStatuses": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/StatusMetadata"
            },
            "description": "The status lookups for activities",
            "nullable": true
          },
          "resourceWorkTypes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Status"
            },
            "description": "The status lookups for resource work types",
            "nullable": true
          },
          "clientTypes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Status"
            },
            "description": "The status lookups for client types",
            "nullable": true
          },
          "complianceTypes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Status"
            },
            "description": "The status lookups for compliance types",
            "nullable": true
          },
          "complianceItems": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ComplianceItem"
            },
            "description": "The compliance items",
            "nullable": true
          },
          "complianceStatuses": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/StringRecordReference"
            },
            "description": "The compliance statuses",
            "nullable": true
          },
          "recordCategories": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/StatusDescription"
            },
            "description": "The record categories",
            "nullable": true
          },
          "shiftStatuses": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/RecordReference"
            },
            "description": "The status lookups for shifts",
            "nullable": true
          },
          "expenseCodes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ExpenseCodeDto"
            },
            "description": "The expense codes",
            "nullable": true
          },
          "auditActionTypes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/RecordReference"
            },
            "description": "The valid action types for audit search (e.g. Activity, Document, Record, Search, Timesheet, User)",
            "nullable": true
          },
          "contactTypes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Status"
            },
            "description": "The Contact Types",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents meta data looks ups such as status ids etc"
      },
      "NamingConventions": {
        "type": "object",
        "properties": {
          "client": {
            "type": "string",
            "nullable": true
          },
          "clients": {
            "type": "string",
            "nullable": true
          },
          "contact": {
            "type": "string",
            "nullable": true
          },
          "contacts": {
            "type": "string",
            "nullable": true
          },
          "lead": {
            "type": "string",
            "nullable": true
          },
          "leads": {
            "type": "string",
            "nullable": true
          },
          "opportunity": {
            "type": "string",
            "nullable": true
          },
          "opportunities": {
            "type": "string",
            "nullable": true
          },
          "opportunityResource": {
            "type": "string",
            "nullable": true
          },
          "opportunityResources": {
            "type": "string",
            "nullable": true
          },
          "project": {
            "type": "string",
            "nullable": true
          },
          "projects": {
            "type": "string",
            "nullable": true
          },
          "resource": {
            "type": "string",
            "nullable": true
          },
          "resources": {
            "type": "string",
            "nullable": true
          },
          "ticket": {
            "type": "string",
            "nullable": true
          },
          "tickets": {
            "type": "string",
            "nullable": true
          },
          "resume": {
            "type": "string",
            "nullable": true
          },
          "resumes": {
            "type": "string",
            "nullable": true
          },
          "sector": {
            "type": "string",
            "nullable": true
          },
          "sectors": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "OffLimitsDetails": {
        "type": "object",
        "properties": {
          "offLimitsFromDate": {
            "type": "string",
            "description": "Date from which the off limits restriction applies",
            "format": "date-time",
            "nullable": true
          },
          "offLimitsUntilDate": {
            "type": "string",
            "description": "Date until which the off limits restriction applies",
            "format": "date-time",
            "nullable": true
          },
          "offLimitsNote": {
            "type": "string",
            "description": "Note explaining the off limits restriction",
            "nullable": true
          },
          "restrictions": {
            "type": "string",
            "description": "Type of off limits restriction with human readable description",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "OpportunityHistory": {
        "type": "object",
        "properties": {
          "created": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "closed": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "updated": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "updatedBy": {
            "type": "integer",
            "format": "int32"
          },
          "opened": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "awarded": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "filled": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "approved": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "approvedBy": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "OpportunityLink": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "Id",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "description": "Name",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "A link to a opportunity record"
      },
      "OpportunityPagedSearchResponseDto": {
        "type": "object",
        "properties": {
          "pageNumber": {
            "type": "integer",
            "description": "Current page number (1-based)",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "description": "Number of items per page",
            "format": "int32"
          },
          "totalCount": {
            "type": "integer",
            "description": "Total number of skills matching the query",
            "format": "int32"
          },
          "totalPages": {
            "type": "integer",
            "description": "Total number of pages available",
            "format": "int32"
          },
          "hasNextPage": {
            "type": "boolean",
            "description": "Indicates if there are more pages after the current page"
          },
          "hasPreviousPage": {
            "type": "boolean",
            "description": "Indicates if there are pages before the current page"
          },
          "opportunities": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/OpportunitySearchResponseDto"
            },
            "description": "Opportunities",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Paginated response containing opportunity data with pagination metadata"
      },
      "OpportunityRequestDto": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "The opportunity's name",
            "nullable": true
          },
          "description": {
            "type": "string",
            "description": "The opportunity's description",
            "nullable": true
          },
          "note": {
            "type": "string",
            "description": "Notes about the opportunity",
            "nullable": true
          },
          "location": {
            "type": "string",
            "description": "The opportunity's location",
            "nullable": true
          },
          "locationCity": {
            "type": "string",
            "description": "City in which the opportunity is located",
            "nullable": true
          },
          "locationState": {
            "type": "string",
            "description": "State or county in which the opportunity is located",
            "nullable": true
          },
          "postCodeLocation": {
            "type": "string",
            "description": "The opportunity's postcode location",
            "nullable": true
          },
          "clientReference": {
            "type": "string",
            "description": "The client's reference code for the opportunity",
            "nullable": true
          },
          "strategy": {
            "type": "string",
            "description": "Strategy for winning the opportunity",
            "nullable": true
          },
          "contractType": {
            "type": "string",
            "description": "The opportunity's contract type",
            "nullable": true
          },
          "numberOfPositions": {
            "type": "integer",
            "description": "The number of positions required for the opportunity",
            "format": "int32",
            "nullable": true
          },
          "probabiity": {
            "type": "integer",
            "description": "The probability of winning the opportunity, as a percentage",
            "format": "int32",
            "nullable": true
          },
          "estimatedValue": {
            "type": "number",
            "description": "The opportunity's estimated value",
            "format": "double",
            "nullable": true
          },
          "factoredValue": {
            "type": "number",
            "description": "The opportunity's value, factored by the probability of winning it",
            "format": "double",
            "nullable": true
          },
          "targetMargin": {
            "type": "number",
            "description": "The opportunity's target margin",
            "format": "double",
            "nullable": true
          },
          "invoiceStartDate": {
            "type": "string",
            "description": "Dat eon which invoicing should commmence",
            "format": "date-time",
            "nullable": true
          },
          "startDateTime": {
            "type": "string",
            "description": "Date on which the opportunity is due to start",
            "format": "date-time",
            "nullable": true
          },
          "endDateTime": {
            "type": "string",
            "description": "Date on which the opportunity is due to finish",
            "format": "date-time",
            "nullable": true
          },
          "tagText": {
            "type": "string",
            "description": "Arbitrary tag text entered by users",
            "nullable": true
          },
          "vmsReference": {
            "type": "string",
            "description": "The opportunity's Vendor Management System reference code",
            "nullable": true
          },
          "payRate": {
            "type": "number",
            "description": "Hourly or daily pay rate",
            "format": "double",
            "nullable": true
          },
          "chargeRate": {
            "type": "number",
            "description": "Hourly or daily charge rate",
            "format": "double",
            "nullable": true
          },
          "currencyCode": {
            "type": "string",
            "description": "Currency in which the client is billed for the opportunity",
            "nullable": true
          },
          "unitsInADay": {
            "type": "number",
            "description": "Number of billing units in one day (e.g. billable hours per. day)",
            "format": "double",
            "nullable": true
          },
          "billingPerDay": {
            "type": "string",
            "description": "Units in which billing units are represented (hours or days)",
            "nullable": true
          },
          "daysOfWeek": {
            "type": "string",
            "description": "Weekly working days (e.g. Mo,Tu,We,Th,Fr)",
            "nullable": true
          },
          "contactRole": {
            "type": "string",
            "description": "The project's main contact's role",
            "nullable": true
          },
          "businessType": {
            "allOf": [
              {
                "$ref": "#/components/schemas/BusinessTypeLink"
              }
            ],
            "description": "The opportunity's business type",
            "nullable": true
          },
          "bidDetails": {
            "allOf": [
              {
                "$ref": "#/components/schemas/BidDetails"
              }
            ],
            "nullable": true
          },
          "advertDetails": {
            "allOf": [
              {
                "$ref": "#/components/schemas/AdvertDetails"
              }
            ],
            "nullable": true
          },
          "client": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ClientLink"
              }
            ],
            "description": "A link to a client record",
            "nullable": true
          },
          "contact": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ContactLink"
              }
            ],
            "description": "A link to a contact record",
            "nullable": true
          },
          "secondaryContact": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ContactLink"
              }
            ],
            "description": "A link to a contact record",
            "nullable": true
          },
          "workType": {
            "allOf": [
              {
                "$ref": "#/components/schemas/WorkTypeLink"
              }
            ],
            "description": "A link to a work type",
            "nullable": true
          },
          "publishContact": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ContactLink"
              }
            ],
            "description": "A link to a contact record",
            "nullable": true
          },
          "mandact": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Mandact"
              }
            ],
            "description": "MANDACT scores for a record",
            "nullable": true
          },
          "status": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Status"
              }
            ],
            "description": "The record's current status",
            "nullable": true
          },
          "sectors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Sector"
            },
            "description": "The sectors this opportunity relates to",
            "nullable": true
          },
          "customFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomField"
            },
            "description": "Custom field values associated with the record",
            "nullable": true
          },
          "owners": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Owner"
            },
            "description": "List of users that own the record, or that the record is assigned to",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "OpportunityResourceHistory": {
        "type": "object",
        "properties": {
          "created": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "closed": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "updated": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "updatedBy": {
            "type": "integer",
            "format": "int32"
          },
          "confirmed": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "OpportunityResourcePagedSearchResponseDto": {
        "type": "object",
        "properties": {
          "pageNumber": {
            "type": "integer",
            "description": "Current page number (1-based)",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "description": "Number of items per page",
            "format": "int32"
          },
          "totalCount": {
            "type": "integer",
            "description": "Total number of skills matching the query",
            "format": "int32"
          },
          "totalPages": {
            "type": "integer",
            "description": "Total number of pages available",
            "format": "int32"
          },
          "hasNextPage": {
            "type": "boolean",
            "description": "Indicates if there are more pages after the current page"
          },
          "hasPreviousPage": {
            "type": "boolean",
            "description": "Indicates if there are pages before the current page"
          },
          "opportunityResources": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/OpportunityResourceSearchResponseDto"
            },
            "description": "Opportunity Resources",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Paginated response containing opportunity resource data with pagination metadata"
      },
      "OpportunityResourceRequestDto": {
        "type": "object",
        "properties": {
          "dateAssigned": {
            "type": "string",
            "description": "Date when the resource was assigned.",
            "format": "date-time",
            "nullable": true
          },
          "dateConfirmed": {
            "type": "string",
            "description": "Date when the assignment was confirmed.",
            "format": "date-time",
            "nullable": true
          },
          "note": {
            "type": "string",
            "description": "General note for the opportunity resource.",
            "nullable": true
          },
          "startDate": {
            "type": "string",
            "description": "Start date of the resource assignment.",
            "format": "date-time",
            "nullable": true
          },
          "endDate": {
            "type": "string",
            "description": "End date of the resource assignment.",
            "format": "date-time",
            "nullable": true
          },
          "startTime": {
            "type": "string",
            "description": "Start time for the assignment period.",
            "format": "date-time",
            "nullable": true
          },
          "endTime": {
            "type": "string",
            "description": "End time for the assignment period.",
            "format": "date-time",
            "nullable": true
          },
          "hoursInWorkingDay": {
            "type": "number",
            "description": "Number of working hours in a standard day.",
            "format": "double",
            "nullable": true
          },
          "payRate": {
            "type": "string",
            "description": "Pay rate for the resource.",
            "nullable": true
          },
          "chargeRate": {
            "type": "string",
            "description": "Charge rate billed to the client.",
            "nullable": true
          },
          "chargePeriod": {
            "type": "string",
            "description": "Period for which the charge rate applies.",
            "nullable": true
          },
          "overtimeRate": {
            "type": "string",
            "description": "Overtime pay rate for the resource.",
            "nullable": true
          },
          "rejectionReason": {
            "type": "string",
            "description": "Reason for rejection or status note.",
            "nullable": true
          },
          "overtimeChargeRate": {
            "type": "string",
            "description": "Overtime charge rate billed to client.",
            "nullable": true
          },
          "timesheetEntry": {
            "type": "string",
            "description": "Timesheet entry method or status.",
            "nullable": true
          },
          "opportunityResourceStatusId": {
            "type": "integer",
            "description": "Status id",
            "format": "int32",
            "nullable": true
          },
          "opportunityResourceTypeId": {
            "type": "integer",
            "description": "Resource type id",
            "format": "int32",
            "nullable": true
          },
          "assignedByUserId": {
            "type": "integer",
            "description": "User who assigned this resource.",
            "format": "int32",
            "nullable": true
          },
          "currencyCode": {
            "type": "string",
            "description": "Currency code used for rates.",
            "nullable": true
          },
          "daysOfWeek": {
            "type": "string",
            "description": "Days of the week assignment applies.",
            "nullable": true
          },
          "weekStarts": {
            "type": "string",
            "description": "Day the week starts on.",
            "nullable": true
          },
          "placementSource": {
            "type": "string",
            "description": "Source of the placement for this resource.",
            "nullable": true
          },
          "resource": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ResourceLink"
              }
            ],
            "description": "A link to a resource record",
            "nullable": true
          },
          "client": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ClientLink"
              }
            ],
            "description": "A link to a client record",
            "nullable": true
          },
          "contact": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ContactLink"
              }
            ],
            "description": "A link to a contact record",
            "nullable": true
          },
          "workType": {
            "allOf": [
              {
                "$ref": "#/components/schemas/WorkTypeLink"
              }
            ],
            "description": "A link to a work type",
            "nullable": true
          },
          "opportunity": {
            "allOf": [
              {
                "$ref": "#/components/schemas/OpportunityLink"
              }
            ],
            "description": "A link to a opportunity record",
            "nullable": true
          },
          "customFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomField"
            },
            "description": "Custom field values associated with the record",
            "nullable": true
          },
          "status": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Status"
              }
            ],
            "description": "The record's current status",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request payload for a opportunity resource"
      },
      "OpportunityResourceResponseDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "The record's unique identifier",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "description": "The record's name",
            "nullable": true
          },
          "typeName": {
            "type": "string",
            "description": "Naming convention for this record type, e.g. 'Company', 'Contact', 'Lead', 'Job', etc.",
            "nullable": true
          },
          "source": {
            "type": "string",
            "description": "The source from which the record originated",
            "nullable": true
          },
          "contactDetails": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ContactDetails"
              }
            ],
            "description": "Contact details for the record",
            "nullable": true
          },
          "status": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Status"
              }
            ],
            "description": "The record's current status",
            "nullable": true
          },
          "territory": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Territory"
              }
            ],
            "description": "The record's territory",
            "nullable": true
          },
          "department": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Department"
              }
            ],
            "description": "The record's department",
            "nullable": true
          },
          "customFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomField"
            },
            "description": "Custom field values associated with the record",
            "nullable": true
          },
          "owners": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Owner"
            },
            "description": "List of users that own the record, or that the record is assigned to",
            "nullable": true
          },
          "opportunityResourceId": {
            "type": "string",
            "description": "The resource identifier",
            "nullable": true
          },
          "dateAssigned": {
            "type": "string",
            "description": "Date when the resource was assigned.",
            "format": "date",
            "nullable": true
          },
          "dateConfirmed": {
            "type": "string",
            "description": "Date when the assignment was confirmed.",
            "format": "date",
            "nullable": true
          },
          "note": {
            "type": "string",
            "description": "General note for the opportunity resource.",
            "nullable": true
          },
          "startDate": {
            "type": "string",
            "description": "Start date of the resource assignment.",
            "format": "date",
            "nullable": true
          },
          "endDate": {
            "type": "string",
            "description": "End date of the resource assignment.",
            "format": "date",
            "nullable": true
          },
          "startTime": {
            "type": "string",
            "description": "Start time for the assignment period.",
            "format": "time",
            "nullable": true
          },
          "endTime": {
            "type": "string",
            "description": "End time for the assignment period.",
            "format": "time",
            "nullable": true
          },
          "hoursInWorkingDay": {
            "type": "number",
            "description": "Number of working hours in a standard day.",
            "format": "double",
            "nullable": true
          },
          "payRate": {
            "type": "string",
            "description": "Pay rate for the resource.",
            "nullable": true
          },
          "chargeRate": {
            "type": "string",
            "description": "Charge rate billed to the client.",
            "nullable": true
          },
          "chargePeriod": {
            "type": "string",
            "description": "Period for which the charge rate applies.",
            "nullable": true
          },
          "overtimeRate": {
            "type": "string",
            "description": "Overtime pay rate for the resource.",
            "nullable": true
          },
          "rejectionReason": {
            "type": "string",
            "description": "Reason for rejection or status note.",
            "nullable": true
          },
          "overtimeChargeRate": {
            "type": "string",
            "description": "Overtime charge rate billed to client.",
            "nullable": true
          },
          "hasDynamicRateSet": {
            "type": "boolean",
            "description": "True once a Dynamic Rate Set has been committed, meaning payRate/chargeRate/overtimeChargeRate are stale."
          },
          "activeRecord": {
            "type": "boolean",
            "description": "Indicates if this record is active.",
            "nullable": true
          },
          "timesheetEntry": {
            "type": "string",
            "description": "Timesheet entry method or status.",
            "nullable": true
          },
          "opportunityResourceStatusId": {
            "type": "integer",
            "description": "Status id",
            "format": "int32",
            "nullable": true
          },
          "opportunityResourceTypeId": {
            "type": "integer",
            "description": "Resource type id",
            "format": "int32",
            "nullable": true
          },
          "assignedByUserId": {
            "type": "integer",
            "description": "User who assigned this resource.",
            "format": "int32",
            "nullable": true
          },
          "currencyCode": {
            "type": "string",
            "description": "Currency code used for rates.",
            "nullable": true
          },
          "portalViewDateTime": {
            "type": "string",
            "description": "Date/time when portal view occurred.",
            "format": "date-time",
            "nullable": true
          },
          "daysOfWeek": {
            "type": "string",
            "description": "Days of the week assignment applies.",
            "nullable": true
          },
          "weekStarts": {
            "type": "string",
            "description": "Day the week starts on.",
            "nullable": true
          },
          "placementSource": {
            "type": "string",
            "description": "Source of the placement for this resource.",
            "nullable": true
          },
          "resource": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ResourceLink"
              }
            ],
            "description": "A link to a resource record",
            "nullable": true
          },
          "client": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ClientLink"
              }
            ],
            "description": "A link to a client record",
            "nullable": true
          },
          "contact": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ContactLink"
              }
            ],
            "description": "A link to a contact record",
            "nullable": true
          },
          "workType": {
            "allOf": [
              {
                "$ref": "#/components/schemas/WorkTypeLink"
              }
            ],
            "description": "A link to a work type",
            "nullable": true
          },
          "opportunity": {
            "allOf": [
              {
                "$ref": "#/components/schemas/OpportunityLink"
              }
            ],
            "description": "A link to a opportunity record",
            "nullable": true
          },
          "history": {
            "allOf": [
              {
                "$ref": "#/components/schemas/OpportunityResourceHistory"
              }
            ],
            "nullable": true
          },
          "recordCategories": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/RecordCategory"
            },
            "description": "The record categories.",
            "nullable": true
          },
          "lifecycle": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/OpportunityResourceStatusHistoryDto"
            },
            "description": "The lifecycle status history.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents a single opportunty resource"
      },
      "OpportunityResourceSearchRequestDto": {
        "type": "object",
        "properties": {
          "searchTerm": {
            "type": "string",
            "description": "Term to search for",
            "nullable": true,
            "example": "acme"
          },
          "maxResults": {
            "type": "integer",
            "description": "Maximum results per page",
            "format": "int32",
            "nullable": true,
            "example": 10
          },
          "pageNumber": {
            "type": "integer",
            "description": "The page number to return",
            "format": "int32",
            "nullable": true,
            "example": 1
          },
          "sortBy": {
            "type": "string",
            "description": "A valid column to sort by",
            "nullable": true,
            "example": ""
          },
          "sortDirection": {
            "type": "string",
            "description": "The sort direction, valid values are ASC or DESC",
            "nullable": true,
            "example": "ASC"
          },
          "statusId": {
            "type": "integer",
            "description": "A record type status id can be null",
            "format": "int32",
            "nullable": true,
            "example": 7
          },
          "state": {
            "type": "string",
            "description": "Include only records whose status matches this state\r\nValid values: Applied, Complete, CVReview, CVSend, Internal, Interview, Offer, Rejected, Shortlisted, ShortlistedByUser, ShortlistedByResource, Working",
            "nullable": true,
            "example": "Shortlisted"
          },
          "updatedBefore": {
            "type": "string",
            "description": "Only records before a date/time",
            "format": "date-time",
            "nullable": true
          },
          "updatedAfter": {
            "type": "string",
            "description": "Only records after a date/time",
            "format": "date-time",
            "nullable": true
          },
          "confirmedBefore": {
            "type": "string",
            "description": "Only records confirmed before a date/time",
            "format": "date-time",
            "nullable": true
          },
          "confirmedAfter": {
            "type": "string",
            "description": "Only records confirmed after a date/time",
            "format": "date-time",
            "nullable": true
          },
          "onlyMyRecords": {
            "type": "boolean",
            "description": "Include only records assigned to the user calling the api",
            "example": false
          },
          "includeCustomFields": {
            "type": "boolean",
            "description": "Include custom fields in the results",
            "example": false
          },
          "opportunityId": {
            "type": "integer",
            "description": "An opportunity id can be null",
            "format": "int32",
            "nullable": true,
            "example": 1001
          },
          "resourceId": {
            "type": "integer",
            "description": "A resource id can be null",
            "format": "int32",
            "nullable": true,
            "example": 12345
          },
          "onlyActive": {
            "type": "boolean",
            "description": "Include only active in the results",
            "example": true
          },
          "clientId": {
            "type": "integer",
            "description": "Searches by <b>client</b>",
            "format": "int32",
            "nullable": true,
            "example": 1138
          },
          "includeLifecycle": {
            "type": "boolean",
            "description": "Include the lifecycle history in the results"
          }
        },
        "additionalProperties": false,
        "description": "Search request DTO specifically for OpportunityResource records"
      },
      "OpportunityResourceSearchResponseDto": {
        "type": "object",
        "properties": {
          "opportunityResourceId": {
            "type": "integer",
            "format": "int32"
          },
          "opportunityId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "resourceId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "clientId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "contactId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "opportunityName": {
            "type": "string",
            "nullable": true
          },
          "opportunityResourceStatus": {
            "type": "string",
            "nullable": true
          },
          "workType": {
            "type": "string",
            "nullable": true
          },
          "dateAssigned": {
            "type": "string",
            "nullable": true
          },
          "dateConfirmed": {
            "type": "string",
            "nullable": true
          },
          "note": {
            "type": "string",
            "nullable": true
          },
          "startDate": {
            "type": "string",
            "nullable": true
          },
          "endDate": {
            "type": "string",
            "nullable": true
          },
          "startTime": {
            "type": "string",
            "nullable": true
          },
          "endTime": {
            "type": "string",
            "nullable": true
          },
          "hoursInWorkingDay": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "fee": {
            "type": "string",
            "nullable": true
          },
          "feeValue": {
            "type": "string",
            "nullable": true
          },
          "payRate": {
            "type": "string",
            "nullable": true
          },
          "chargeRate": {
            "type": "string",
            "nullable": true
          },
          "chargePeriod": {
            "type": "string",
            "nullable": true
          },
          "overtimeRate": {
            "type": "string",
            "nullable": true
          },
          "enterTimesheet": {
            "type": "string",
            "nullable": true
          },
          "arrivalInstructions": {
            "type": "string",
            "nullable": true
          },
          "rejectionReason": {
            "type": "string",
            "nullable": true
          },
          "assignmentValue": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "percentEffort": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "opportunityWorkTypeId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "feeTaxValue": {
            "type": "string",
            "nullable": true
          },
          "feeTotalValue": {
            "type": "string",
            "nullable": true
          },
          "tax": {
            "type": "string",
            "nullable": true
          },
          "suppliment": {
            "type": "string",
            "nullable": true
          },
          "overtimeChargeRate": {
            "type": "string",
            "nullable": true
          },
          "ruleSetId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "activeRecord": {
            "type": "string",
            "nullable": true
          },
          "timesheetEntry": {
            "type": "string",
            "nullable": true
          },
          "searchStatus": {
            "type": "string",
            "nullable": true
          },
          "awrEffectiveDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "awrPayRate": {
            "type": "string",
            "nullable": true
          },
          "awrOvertimePayRate": {
            "type": "string",
            "nullable": true
          },
          "awrChargeRate": {
            "type": "string",
            "nullable": true
          },
          "awrOvertimeChargeRate": {
            "type": "string",
            "nullable": true
          },
          "awrDayOneRightsDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "awrTermsDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "awrWorkingHours": {
            "type": "string",
            "nullable": true
          },
          "awrRestBreaks": {
            "type": "string",
            "nullable": true
          },
          "awrHoliday": {
            "type": "string",
            "nullable": true
          },
          "awrSickness": {
            "type": "string",
            "nullable": true
          },
          "awrBonus": {
            "type": "string",
            "nullable": true
          },
          "awrOvertime": {
            "type": "string",
            "nullable": true
          },
          "awrExpenses": {
            "type": "string",
            "nullable": true
          },
          "awrMaternity": {
            "type": "string",
            "nullable": true
          },
          "awrOtherEntitlements": {
            "type": "string",
            "nullable": true
          },
          "awrReport": {
            "type": "string",
            "nullable": true
          },
          "orderId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "opportunityResourceStatusId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "opportunityResourceTypeId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "territory": {
            "type": "string",
            "nullable": true
          },
          "assignedByUserId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "currencyCode": {
            "type": "string",
            "nullable": true
          },
          "portalShare": {
            "type": "string",
            "nullable": true
          },
          "portalWhyShortlisted": {
            "type": "string",
            "nullable": true
          },
          "portalRating": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "portalFeedback": {
            "type": "string",
            "nullable": true
          },
          "portalViewDateTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "portalDocumentId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "daysOfWeek": {
            "type": "string",
            "nullable": true
          },
          "territoryId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "weekStarts": {
            "type": "string",
            "nullable": true
          },
          "firstOwnerId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "firstOwnerPercent": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "firstOwnerRoleId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "secondOwnerId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "secondOwnerPercent": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "secondOwnerRoleId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "thirdOwnerId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "thirdOwnerPercent": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "thirdOwnerRoleId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "fourthOwnerId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "fourthOwnerPercent": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "fourthOwnerRoleId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "fifthOwnerId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "fifthOwnerPercent": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "fifthOwnerRoleId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "portalVideoResumeId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "placementSource": {
            "type": "string",
            "nullable": true
          },
          "portalInterviewId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "clientName": {
            "type": "string",
            "nullable": true
          },
          "contactDisplayAs": {
            "type": "string",
            "nullable": true
          },
          "resourceDisplayAs": {
            "type": "string",
            "nullable": true
          },
          "resourceEmail": {
            "type": "string",
            "nullable": true
          },
          "opportunityStatusDesc": {
            "type": "string",
            "nullable": true
          },
          "opportunityResourceStatusName": {
            "type": "string",
            "nullable": true
          },
          "opportunityResourceTypeName": {
            "type": "string",
            "nullable": true
          },
          "hasDynamicRateSet": {
            "type": "boolean",
            "description": "True once a Dynamic Rate Set has been committed, meaning PayRate/ChargeRate/OvertimeChargeRate are stale.",
            "readOnly": true
          },
          "customFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomField"
            },
            "nullable": true,
            "readOnly": true
          },
          "lifecycle": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/OpportunityResourceStatusHistoryDto"
            },
            "nullable": true,
            "readOnly": true
          },
          "lifecycleData": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "OpportunityResourceStatusHistoryDto": {
        "type": "object",
        "properties": {
          "statusDateTime": {
            "type": "string",
            "description": "The date and time that the status was set on the record.",
            "format": "date-time"
          },
          "statusId": {
            "type": "integer",
            "description": "The Id of the status.",
            "format": "int32"
          },
          "statusName": {
            "type": "string",
            "description": "The name of the status",
            "nullable": true
          },
          "statusEvent": {
            "type": "string",
            "description": "The event name to which the status is linked.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "OpportunityResourcesLink": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "Id",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "description": "Name",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "A link to a opportunity resource"
      },
      "OpportunityResponseDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "The record's unique identifier",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "description": "The record's name",
            "nullable": true
          },
          "typeName": {
            "type": "string",
            "description": "Naming convention for this record type, e.g. 'Company', 'Contact', 'Lead', 'Job', etc.",
            "nullable": true
          },
          "source": {
            "type": "string",
            "description": "The source from which the record originated",
            "nullable": true
          },
          "contactDetails": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ContactDetails"
              }
            ],
            "description": "Contact details for the record",
            "nullable": true
          },
          "status": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Status"
              }
            ],
            "description": "The record's current status",
            "nullable": true
          },
          "territory": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Territory"
              }
            ],
            "description": "The record's territory",
            "nullable": true
          },
          "department": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Department"
              }
            ],
            "description": "The record's department",
            "nullable": true
          },
          "customFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomField"
            },
            "description": "Custom field values associated with the record",
            "nullable": true
          },
          "owners": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Owner"
            },
            "description": "List of users that own the record, or that the record is assigned to",
            "nullable": true
          },
          "description": {
            "type": "string",
            "description": "The opportunity's description",
            "nullable": true
          },
          "note": {
            "type": "string",
            "description": "Notes about the opportunity",
            "nullable": true
          },
          "location": {
            "type": "string",
            "description": "The opportunity's location",
            "nullable": true
          },
          "locationCity": {
            "type": "string",
            "description": "City in which the opportunity is located",
            "nullable": true
          },
          "locationState": {
            "type": "string",
            "description": "State or county in which the opportunity is located",
            "nullable": true
          },
          "postCodeLocation": {
            "type": "string",
            "description": "The opportunity's postcode location",
            "nullable": true
          },
          "clientReference": {
            "type": "string",
            "description": "The client's reference code for the opportunity",
            "nullable": true
          },
          "strategy": {
            "type": "string",
            "description": "Strategy for winning the opportunity",
            "nullable": true
          },
          "contractType": {
            "type": "string",
            "description": "The opportunity's contract type",
            "nullable": true
          },
          "numberOfPositions": {
            "type": "integer",
            "description": "The number of positions required for the opportunity",
            "format": "int32",
            "nullable": true
          },
          "probabiity": {
            "type": "integer",
            "description": "The probability of winning the opportunity, as a percentage",
            "format": "int32",
            "nullable": true
          },
          "estimatedValue": {
            "type": "number",
            "description": "The opportunity's estimated value",
            "format": "double",
            "nullable": true
          },
          "factoredValue": {
            "type": "number",
            "description": "The opportunity's value, factored by the probability of winning it",
            "format": "double",
            "nullable": true
          },
          "targetMargin": {
            "type": "number",
            "description": "The opportunity's target margin",
            "format": "double",
            "nullable": true
          },
          "invoiceStartDate": {
            "type": "string",
            "description": "Dat eon which invoicing should commmence",
            "format": "date",
            "nullable": true
          },
          "startDate": {
            "type": "string",
            "description": "Date on which the opportunity is due to start",
            "format": "date",
            "nullable": true
          },
          "endDate": {
            "type": "string",
            "description": "Date on which the opportunity is due to finish",
            "format": "date",
            "nullable": true
          },
          "startTime": {
            "type": "string",
            "description": "Default working start time",
            "format": "time",
            "nullable": true
          },
          "endTime": {
            "type": "string",
            "description": "Default working end time",
            "format": "time",
            "nullable": true
          },
          "tagText": {
            "type": "string",
            "description": "Arbitrary tag text entered by users",
            "nullable": true
          },
          "vmsReference": {
            "type": "string",
            "description": "The opportunity's Vendor Management System reference code",
            "nullable": true
          },
          "payRate": {
            "type": "number",
            "description": "Hourly or daily pay rate",
            "format": "double",
            "nullable": true
          },
          "chargeRate": {
            "type": "number",
            "description": "Hourly or daily charge rate",
            "format": "double",
            "nullable": true
          },
          "currencyCode": {
            "type": "string",
            "description": "Currency in which the client is billed for the opportunity",
            "nullable": true
          },
          "unitsInADay": {
            "type": "number",
            "description": "Number of billing units in one day (e.g. billable hours per. day)",
            "format": "double",
            "nullable": true
          },
          "billingPerDay": {
            "type": "string",
            "description": "Units in which billing units are represented (hours or days)",
            "nullable": true
          },
          "daysOfWeek": {
            "type": "string",
            "description": "Weekly working days (e.g. Mo,Tu,We,Th,Fr)",
            "nullable": true
          },
          "contactRole": {
            "type": "string",
            "description": "The project's main contact's role",
            "nullable": true
          },
          "businessType": {
            "allOf": [
              {
                "$ref": "#/components/schemas/BusinessTypeLink"
              }
            ],
            "description": "The opportunity's business type",
            "nullable": true
          },
          "bidDetails": {
            "allOf": [
              {
                "$ref": "#/components/schemas/BidDetails"
              }
            ],
            "nullable": true
          },
          "advertDetails": {
            "allOf": [
              {
                "$ref": "#/components/schemas/AdvertDetails"
              }
            ],
            "nullable": true
          },
          "client": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ClientLink"
              }
            ],
            "description": "A link to a client record",
            "nullable": true
          },
          "contact": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ContactLink"
              }
            ],
            "description": "A link to a contact record",
            "nullable": true
          },
          "secondaryContact": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ContactLink"
              }
            ],
            "description": "A link to a contact record",
            "nullable": true
          },
          "workType": {
            "allOf": [
              {
                "$ref": "#/components/schemas/WorkTypeLink"
              }
            ],
            "description": "A link to a work type",
            "nullable": true
          },
          "publishContact": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ContactLink"
              }
            ],
            "description": "A link to a contact record",
            "nullable": true
          },
          "mandact": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Mandact"
              }
            ],
            "description": "MANDACT scores for a record",
            "nullable": true
          },
          "sectors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Sector"
            },
            "description": "The sectors this opportunity relates to",
            "nullable": true
          },
          "history": {
            "allOf": [
              {
                "$ref": "#/components/schemas/OpportunityHistory"
              }
            ],
            "nullable": true
          },
          "applicantSettings": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ApplicantSettings"
              }
            ],
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents a single opportunity record"
      },
      "OpportunitySearchRequestDto": {
        "type": "object",
        "properties": {
          "searchTerm": {
            "type": "string",
            "description": "Term to search for",
            "nullable": true,
            "example": "acme"
          },
          "maxResults": {
            "type": "integer",
            "description": "Maximum results per page",
            "format": "int32",
            "nullable": true,
            "example": 10
          },
          "pageNumber": {
            "type": "integer",
            "description": "The page number to return",
            "format": "int32",
            "nullable": true,
            "example": 1
          },
          "sortBy": {
            "type": "string",
            "description": "A valid column to sort by",
            "nullable": true,
            "example": ""
          },
          "sortDirection": {
            "type": "string",
            "description": "The sort direction, valid values are ASC or DESC",
            "nullable": true,
            "example": "ASC"
          },
          "statusId": {
            "type": "integer",
            "description": "A record type status id can be null",
            "format": "int32",
            "nullable": true,
            "example": 7
          },
          "state": {
            "type": "string",
            "description": "Include only records whose status matches this state (not supported for Clients or Contacts)",
            "nullable": true,
            "example": ""
          },
          "updatedBefore": {
            "type": "string",
            "description": "Only records before a date/time",
            "format": "date-time",
            "nullable": true
          },
          "updatedAfter": {
            "type": "string",
            "description": "Only records after a date/time",
            "format": "date-time",
            "nullable": true
          },
          "onlyMyRecords": {
            "type": "boolean",
            "description": "Include only records assigned to the user calling the api",
            "example": false
          },
          "includeCustomFields": {
            "type": "boolean",
            "description": "Include custom fields in the results",
            "example": false
          },
          "publishOnline": {
            "type": "boolean",
            "description": "Has the opportunity been published online",
            "nullable": true,
            "example": false
          },
          "clientId": {
            "type": "integer",
            "description": "Searches by <b>client</b>",
            "format": "int32",
            "nullable": true,
            "example": 1138
          }
        },
        "additionalProperties": false,
        "description": "Opportunity Search Request Dto"
      },
      "OpportunitySearchResponseDto": {
        "type": "object",
        "properties": {
          "opportunityId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "opportunityName": {
            "type": "string",
            "nullable": true
          },
          "opportunityOwnerId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "department": {
            "type": "string",
            "nullable": true
          },
          "opportunityStatusId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "clientId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "contactId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "dateOpened": {
            "type": "string",
            "nullable": true
          },
          "location": {
            "type": "string",
            "nullable": true
          },
          "clientRef": {
            "type": "string",
            "nullable": true
          },
          "workType": {
            "type": "string",
            "nullable": true
          },
          "opportunitySource": {
            "type": "string",
            "nullable": true
          },
          "probability": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "duration": {
            "type": "string",
            "nullable": true
          },
          "estimatedValue": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "factoredValue": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "targetMargin": {
            "type": "string",
            "nullable": true
          },
          "awardDate": {
            "type": "string",
            "nullable": true
          },
          "invoiceStartDate": {
            "type": "string",
            "nullable": true
          },
          "startDate": {
            "type": "string",
            "nullable": true
          },
          "endDate": {
            "type": "string",
            "nullable": true
          },
          "dateFilled": {
            "type": "string",
            "nullable": true
          },
          "opportunityDescription": {
            "type": "string",
            "nullable": true
          },
          "note": {
            "type": "string",
            "nullable": true
          },
          "active": {
            "type": "string",
            "nullable": true
          },
          "money": {
            "type": "string",
            "nullable": true
          },
          "moneyScore": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "authority": {
            "type": "string",
            "nullable": true
          },
          "authorityScore": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "need": {
            "type": "string",
            "nullable": true
          },
          "needScore": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "decision": {
            "type": "string",
            "nullable": true
          },
          "decisionScore": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "ability": {
            "type": "string",
            "nullable": true
          },
          "abilityScore": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "competition": {
            "type": "string",
            "nullable": true
          },
          "competitionScore": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "timing": {
            "type": "string",
            "nullable": true
          },
          "timingScore": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "winStrategy": {
            "type": "string",
            "nullable": true
          },
          "bidType": {
            "type": "string",
            "nullable": true
          },
          "newRepeat": {
            "type": "string",
            "nullable": true
          },
          "competitive": {
            "type": "string",
            "nullable": true
          },
          "contractType": {
            "type": "string",
            "nullable": true
          },
          "bidDueDate": {
            "type": "string",
            "nullable": true
          },
          "bidDriver": {
            "type": "string",
            "nullable": true
          },
          "bidNoBid": {
            "type": "string",
            "nullable": true
          },
          "bidNoBidReason": {
            "type": "string",
            "nullable": true
          },
          "bidManager": {
            "type": "string",
            "nullable": true
          },
          "bidCosts": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "approvedBy": {
            "type": "string",
            "nullable": true
          },
          "approvalDate": {
            "type": "string",
            "nullable": true
          },
          "territory": {
            "type": "string",
            "nullable": true
          },
          "contactRole": {
            "type": "string",
            "nullable": true
          },
          "reasonForClose": {
            "type": "string",
            "nullable": true
          },
          "publishOnline": {
            "type": "string",
            "nullable": true
          },
          "publishReference": {
            "type": "string",
            "nullable": true
          },
          "publishTitle": {
            "type": "string",
            "nullable": true
          },
          "publishDescription": {
            "type": "string",
            "nullable": true
          },
          "publishLocation": {
            "type": "string",
            "nullable": true
          },
          "publishStartDate": {
            "type": "string",
            "nullable": true
          },
          "publishDuration": {
            "type": "string",
            "nullable": true
          },
          "publishWorkType": {
            "type": "string",
            "nullable": true
          },
          "publishSector": {
            "type": "string",
            "nullable": true
          },
          "publishCategory": {
            "type": "string",
            "nullable": true
          },
          "publishContactUserId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "postcodeLocation": {
            "type": "string",
            "nullable": true
          },
          "lastUpdatedDateTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "lastUpdatedUserId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "opportunityWorkTypeId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "workingFolder": {
            "type": "string",
            "nullable": true
          },
          "opportunityRate": {
            "type": "string",
            "nullable": true
          },
          "creationDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "currencyCode": {
            "type": "string",
            "nullable": true
          },
          "publishSalaryFrom": {
            "type": "string",
            "nullable": true
          },
          "publishSalaryTo": {
            "type": "string",
            "nullable": true
          },
          "publishSalaryPer": {
            "type": "string",
            "nullable": true
          },
          "publishBenefits": {
            "type": "string",
            "nullable": true
          },
          "publishSkills": {
            "type": "string",
            "nullable": true
          },
          "tagText": {
            "type": "string",
            "nullable": true
          },
          "opportunityChargeRate": {
            "type": "string",
            "nullable": true
          },
          "startTime": {
            "type": "string",
            "nullable": true
          },
          "endTime": {
            "type": "string",
            "nullable": true
          },
          "businessType": {
            "type": "string",
            "nullable": true
          },
          "renewalOpportunityId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "secondaryOwnerId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "ownerPercent": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "secondaryOwnerPercent": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "indeedPost": {
            "type": "string",
            "nullable": true
          },
          "departmentId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "territoryId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "businessTypeId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "fyreReqId": {
            "type": "string",
            "nullable": true
          },
          "advertId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "advertUserId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "advertStatus": {
            "type": "string",
            "nullable": true
          },
          "publishDate": {
            "type": "string",
            "nullable": true
          },
          "publishViewCount": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "publishApplyCount": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "ownerRoleId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "secondaryOwnerRoleId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "thirdOwnerId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "thirdOwnerPercent": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "thirdOwnerRoleId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "fourthOwnerId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "fourthOwnerPercent": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "fourthOwnerRoleId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "fifthOwnerId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "fifthOwnerPercent": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "fifthOwnerRoleId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "payPer": {
            "type": "string",
            "nullable": true
          },
          "unitsInADay": {
            "type": "number",
            "format": "double"
          },
          "daysOfWeek": {
            "type": "string",
            "nullable": true
          },
          "secondaryContactId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "locationCity": {
            "type": "string",
            "nullable": true
          },
          "locationState": {
            "type": "string",
            "nullable": true
          },
          "marginCalculation": {
            "type": "string",
            "nullable": true
          },
          "privateRecord": {
            "type": "string",
            "nullable": true
          },
          "clientName": {
            "type": "string",
            "nullable": true
          },
          "displayAs": {
            "type": "string",
            "nullable": true
          },
          "opportunityStatusDesc": {
            "type": "string",
            "nullable": true
          },
          "workTypeName": {
            "type": "string",
            "nullable": true
          },
          "countShortlisted": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "screeningTemplateId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "customFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomField"
            },
            "nullable": true,
            "readOnly": true
          },
          "opportunityOwnerFullName": {
            "type": "string",
            "nullable": true
          },
          "opportunityOwnerEmail": {
            "type": "string",
            "nullable": true
          },
          "secondaryOwnerName": {
            "type": "string",
            "nullable": true
          },
          "secondaryOwnerEmail": {
            "type": "string",
            "nullable": true
          },
          "thirdOwnerName": {
            "type": "string",
            "nullable": true
          },
          "thirdOwnerEmail": {
            "type": "string",
            "nullable": true
          },
          "fourthOwnerName": {
            "type": "string",
            "nullable": true
          },
          "fourthOwnerEmail": {
            "type": "string",
            "nullable": true
          },
          "fifthOwnerName": {
            "type": "string",
            "nullable": true
          },
          "fifthOwnerEmail": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Owner": {
        "type": "object",
        "properties": {
          "ownerId": {
            "type": "integer",
            "format": "int32"
          },
          "rank": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "percent": {
            "type": "integer",
            "format": "int32"
          },
          "role": {
            "type": "string",
            "nullable": true
          },
          "email": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ParseRequest": {
        "type": "object",
        "properties": {
          "resourceStatusId": {
            "type": "integer",
            "format": "int32"
          },
          "opportunityId": {
            "type": "string",
            "nullable": true
          },
          "source": {
            "type": "string",
            "nullable": true
          },
          "resource": {
            "type": "integer",
            "format": "int32"
          },
          "list": {
            "type": "string",
            "nullable": true
          },
          "fileName": {
            "type": "string",
            "nullable": true
          },
          "fileData": {
            "type": "string",
            "nullable": true
          },
          "department": {
            "type": "string",
            "nullable": true
          },
          "userId": {
            "type": "integer",
            "format": "int32"
          },
          "resourceSource": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ParseResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean"
          },
          "resourceId": {
            "type": "integer",
            "format": "int32"
          },
          "returnCode": {
            "type": "string",
            "nullable": true
          },
          "returnDescription": {
            "type": "string",
            "nullable": true
          },
          "returnAction": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "PartnerRecordPagedSearchResponseDto": {
        "type": "object",
        "properties": {
          "pageNumber": {
            "type": "integer",
            "description": "Current page number (1-based)",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "description": "Number of items per page",
            "format": "int32"
          },
          "totalCount": {
            "type": "integer",
            "description": "Total number of skills matching the query",
            "format": "int32"
          },
          "totalPages": {
            "type": "integer",
            "description": "Total number of pages available",
            "format": "int32"
          },
          "hasNextPage": {
            "type": "boolean",
            "description": "Indicates if there are more pages after the current page"
          },
          "hasPreviousPage": {
            "type": "boolean",
            "description": "Indicates if there are pages before the current page"
          },
          "partners": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PartnerRecordSearchResponseDto"
            },
            "description": "Partners",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Paginated response containing activity data with pagination metadata"
      },
      "PartnerRecordRequestDto": {
        "type": "object",
        "properties": {
          "partnerId": {
            "type": "integer",
            "description": "The partner identifier",
            "format": "int32"
          },
          "partnerRecordId": {
            "type": "string",
            "description": "The external partners identifier",
            "nullable": true
          },
          "recordType": {
            "type": "string",
            "description": "The internal record type this maps to",
            "nullable": true
          },
          "recordId": {
            "type": "integer",
            "description": "The internal record id of the record type this maps to",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "PartnerRecordResponseDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "The partner record types unique identifier",
            "format": "int32"
          },
          "partnerId": {
            "type": "integer",
            "description": "The partner identifier",
            "format": "int32"
          },
          "partnerRecordId": {
            "type": "string",
            "description": "The external partners identifier",
            "nullable": true
          },
          "recordType": {
            "type": "string",
            "description": "The internal record type this maps to",
            "nullable": true
          },
          "recordId": {
            "type": "integer",
            "description": "The internal record id of the record type this maps to",
            "format": "int32"
          }
        },
        "additionalProperties": false,
        "description": "Represents a partner record mapping"
      },
      "PartnerRecordSearchRequestDto": {
        "type": "object",
        "properties": {
          "maxResults": {
            "type": "integer",
            "description": "Maximum results per page",
            "format": "int32",
            "nullable": true,
            "example": 10
          },
          "pageNumber": {
            "type": "integer",
            "description": "The page number to return",
            "format": "int32",
            "nullable": true,
            "example": 1
          },
          "sortBy": {
            "type": "string",
            "description": "A valid column to sort by",
            "nullable": true,
            "example": ""
          },
          "sortDirection": {
            "type": "string",
            "description": "The sort direction, valid values are ASC or DESC",
            "nullable": true,
            "example": "ASC"
          },
          "partnerId": {
            "type": "integer",
            "description": "Searches <b>partner id</b>",
            "format": "int32",
            "nullable": true,
            "example": 2
          },
          "partnerTypeId": {
            "type": "string",
            "description": "The partners external id",
            "nullable": true
          },
          "recordId": {
            "type": "integer",
            "description": "The record identifier",
            "format": "int32",
            "nullable": true
          },
          "recordType": {
            "type": "string",
            "description": "The record type",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "PartnerRecordSearchResponseDto": {
        "type": "object",
        "properties": {
          "partnerRecordTypeId": {
            "type": "integer",
            "description": "Unique identifier of partner record row",
            "format": "int32",
            "nullable": true
          },
          "partnerId": {
            "type": "integer",
            "description": "The partner identifier",
            "format": "int32",
            "nullable": true
          },
          "partnerTypeId": {
            "type": "string",
            "description": "The external partners identifier",
            "nullable": true
          },
          "internalRecordTypeId": {
            "type": "string",
            "description": "The internal record type this maps to",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "PartnerResponseDto": {
        "type": "object",
        "properties": {
          "partnerId": {
            "type": "integer",
            "description": "Id of the partner type",
            "format": "int32"
          },
          "partnerRecordId": {
            "type": "string",
            "description": "External partner id",
            "nullable": true
          },
          "recordId": {
            "type": "integer",
            "description": "Internal reference of the resource etc",
            "format": "int32"
          },
          "recordType": {
            "type": "string",
            "description": "The record type ie Resource, Contact etc",
            "nullable": true
          },
          "partnerName": {
            "type": "string",
            "description": "Name of the partner type",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Details for a partner integration external to internal reference map"
      },
      "ProblemDetails": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "nullable": true
          },
          "title": {
            "type": "string",
            "nullable": true
          },
          "status": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "detail": {
            "type": "string",
            "nullable": true
          },
          "instance": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": { }
      },
      "ProductLink": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "Id",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "description": "Name",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "A link to a product"
      },
      "ProjectActivityRequestDto": {
        "type": "object",
        "properties": {
          "planTaskId": {
            "type": "integer",
            "description": "The ID of the associated plan task",
            "format": "int32",
            "nullable": true
          },
          "projectId": {
            "type": "integer",
            "description": "The ID of the project the activity belongs to",
            "format": "int32",
            "nullable": true
          },
          "activityName": {
            "type": "string",
            "description": "The name of the activity",
            "nullable": true
          },
          "budgetedDays": {
            "type": "number",
            "description": "The budgeted number of days for the activity",
            "format": "double",
            "nullable": true
          },
          "billable": {
            "type": "boolean",
            "description": "Indicates if the activity is billable",
            "nullable": true
          },
          "activityStatus": {
            "type": "string",
            "description": "The status of the activity",
            "nullable": true
          },
          "activityNote": {
            "type": "string",
            "description": "Notes or description about the activity",
            "nullable": true
          },
          "stopTimesheet": {
            "type": "boolean",
            "description": "Indicates if timesheet entry is stopped",
            "nullable": true
          },
          "expectedEndDate": {
            "type": "string",
            "description": "The expected end date of the activity",
            "format": "date-time",
            "nullable": true
          },
          "expectedStartDate": {
            "type": "string",
            "description": "The expected start date of the activity",
            "format": "date-time",
            "nullable": true
          },
          "payRate": {
            "type": "number",
            "description": "The pay rate associated with the activity",
            "format": "double",
            "nullable": true
          },
          "chargePeriod": {
            "type": "string",
            "description": "The charge period for billing",
            "nullable": true
          },
          "chargeRate": {
            "type": "number",
            "description": "The charge rate for the activity",
            "format": "double",
            "nullable": true
          },
          "activityOrderId": {
            "type": "integer",
            "description": "The sort order of the activity",
            "format": "int32",
            "nullable": true
          },
          "ticketId": {
            "type": "integer",
            "description": "The ID of the associated support ticket",
            "format": "int32",
            "nullable": true
          },
          "activityType": {
            "type": "string",
            "description": "The type of activity (e.g., project task type)",
            "nullable": true
          },
          "rateToUse": {
            "type": "string",
            "description": "The rate type to use for billing",
            "nullable": true
          },
          "projectPlanSetId": {
            "type": "integer",
            "description": "The ID of the project plan set",
            "format": "int32",
            "nullable": true
          },
          "purchaseOrderId": {
            "type": "integer",
            "description": "The ID of the related purchase order",
            "format": "int32",
            "nullable": true
          },
          "threshold": {
            "type": "number",
            "description": "The daily threshold in hours or units",
            "format": "double",
            "nullable": true
          },
          "rolloverActivityId": {
            "type": "integer",
            "description": "The ID of the task where surplus effort is rolled over",
            "format": "int32",
            "nullable": true
          },
          "rolloverPeriod": {
            "type": "string",
            "description": "The period code used for rolling over effort",
            "nullable": true
          },
          "weekThreshold": {
            "type": "number",
            "description": "The weekly threshold in hours or units",
            "format": "double",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ProjectActivityResourceRequestDto": {
        "type": "object",
        "properties": {
          "projectId": {
            "type": "integer",
            "description": "The ID of the associated project",
            "format": "int32",
            "nullable": true
          },
          "projectActivityId": {
            "type": "integer",
            "description": "The ID of the associated task/project activity",
            "format": "int32",
            "nullable": true
          },
          "resourceId": {
            "type": "integer",
            "description": "The ID of the resource assigned to the activity",
            "format": "int32",
            "nullable": true
          },
          "payRate": {
            "type": "number",
            "description": "The resource's pay rate for the activity",
            "format": "double",
            "nullable": true
          },
          "startDate": {
            "type": "string",
            "description": "The date on which the resource's assignment begins",
            "format": "date",
            "nullable": true
          },
          "endDate": {
            "type": "string",
            "description": "The date on which the resource's assignment ends",
            "format": "date",
            "nullable": true
          },
          "chargeRate": {
            "type": "number",
            "description": "The resource's charge rate for the activity",
            "format": "double",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ProjectActivityResourceResponseDto": {
        "type": "object",
        "properties": {
          "projectActivityResourceId": {
            "type": "integer",
            "description": "The ID of the PAR",
            "format": "int32",
            "nullable": true
          },
          "projectActivityId": {
            "type": "integer",
            "description": "The ID of the associated task/project activity",
            "format": "int32",
            "nullable": true
          },
          "resourceId": {
            "type": "integer",
            "description": "The resource id of the resource assigned to the activity",
            "format": "int32",
            "nullable": true
          },
          "payRate": {
            "type": "number",
            "description": "The resource's pay rate for the activity",
            "format": "double",
            "nullable": true
          },
          "startDate": {
            "type": "string",
            "description": "The date on which the resource's assignment begins",
            "format": "date",
            "nullable": true
          },
          "endDate": {
            "type": "string",
            "description": "The date on which the resource's assignment ends",
            "format": "date",
            "nullable": true
          },
          "chargeRate": {
            "type": "number",
            "description": "The resource's charge rate for the activity",
            "format": "double",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents a single project activity record"
      },
      "ProjectActivityResponseDto": {
        "type": "object",
        "properties": {
          "activityId": {
            "type": "integer",
            "description": "The unique identifier of the project activity",
            "format": "int32"
          },
          "planTaskId": {
            "type": "integer",
            "description": "The ID of the associated plan task",
            "format": "int32",
            "nullable": true
          },
          "projectId": {
            "type": "integer",
            "description": "The ID of the project the activity belongs to",
            "format": "int32",
            "nullable": true
          },
          "activityName": {
            "type": "string",
            "description": "The name of the activity",
            "nullable": true
          },
          "budgetedDays": {
            "type": "number",
            "description": "The budgeted number of days for the activity",
            "format": "double",
            "nullable": true
          },
          "billable": {
            "type": "boolean",
            "description": "Indicates if the activity is billable",
            "nullable": true
          },
          "clientRequired": {
            "type": "boolean",
            "description": "Indicates if the task is internal-only",
            "nullable": true
          },
          "activityStatus": {
            "type": "string",
            "description": "The status of the activity",
            "nullable": true
          },
          "activityNote": {
            "type": "string",
            "description": "Notes or description about the activity",
            "nullable": true
          },
          "stopTimesheet": {
            "type": "boolean",
            "description": "Indicates if timesheet entry is stopped",
            "nullable": true
          },
          "expectedEndDate": {
            "type": "string",
            "description": "The expected end date of the activity",
            "format": "date-time",
            "nullable": true
          },
          "expectedStartDate": {
            "type": "string",
            "description": "The expected start date of the activity",
            "format": "date-time",
            "nullable": true
          },
          "payRate": {
            "type": "number",
            "description": "The pay rate associated with the activity",
            "format": "double",
            "nullable": true
          },
          "chargePeriod": {
            "type": "string",
            "description": "The charge period for billing",
            "nullable": true
          },
          "chargeRate": {
            "type": "number",
            "description": "The charge rate for the activity",
            "format": "double",
            "nullable": true
          },
          "activityOrderId": {
            "type": "integer",
            "description": "The sort order of the activity",
            "format": "int32",
            "nullable": true
          },
          "ticketId": {
            "type": "integer",
            "description": "The ID of the associated support ticket",
            "format": "int32",
            "nullable": true
          },
          "activityType": {
            "type": "string",
            "description": "The type of activity (e.g., project task type)",
            "nullable": true
          },
          "rateToUse": {
            "type": "string",
            "description": "The rate type to use for billing",
            "nullable": true
          },
          "projectPlanSetId": {
            "type": "integer",
            "description": "The ID of the project plan set",
            "format": "int32",
            "nullable": true
          },
          "purchaseOrderId": {
            "type": "integer",
            "description": "The ID of the related purchase order",
            "format": "int32",
            "nullable": true
          },
          "threshold": {
            "type": "number",
            "description": "The daily threshold in hours or units",
            "format": "double",
            "nullable": true
          },
          "rolloverActivityId": {
            "type": "integer",
            "description": "The ID of the task where surplus effort is rolled over",
            "format": "int32",
            "nullable": true
          },
          "rolloverPeriod": {
            "type": "string",
            "description": "The period code used for rolling over effort",
            "nullable": true
          },
          "weekThreshold": {
            "type": "number",
            "description": "The weekly threshold in hours or units",
            "format": "double",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents a single project activity record"
      },
      "ProjectPagedSearchResponseDto": {
        "type": "object",
        "properties": {
          "pageNumber": {
            "type": "integer",
            "description": "Current page number (1-based)",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "description": "Number of items per page",
            "format": "int32"
          },
          "totalCount": {
            "type": "integer",
            "description": "Total number of skills matching the query",
            "format": "int32"
          },
          "totalPages": {
            "type": "integer",
            "description": "Total number of pages available",
            "format": "int32"
          },
          "hasNextPage": {
            "type": "boolean",
            "description": "Indicates if there are more pages after the current page"
          },
          "hasPreviousPage": {
            "type": "boolean",
            "description": "Indicates if there are pages before the current page"
          },
          "projects": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ProjectSearchResponseDto"
            },
            "description": "Projects",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Paginated response containing project data with pagination metadata"
      },
      "ProjectRequestDto": {
        "type": "object",
        "properties": {
          "source": {
            "type": "string",
            "description": "The source from which the record originated",
            "nullable": true
          },
          "contactDetails": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ContactDetails"
              }
            ],
            "description": "Contact details for the record",
            "nullable": true
          },
          "status": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Status"
              }
            ],
            "description": "The record's current status",
            "nullable": true
          },
          "territory": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Territory"
              }
            ],
            "description": "The record's territory",
            "nullable": true
          },
          "department": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Department"
              }
            ],
            "description": "The record's department",
            "nullable": true
          },
          "customFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomField"
            },
            "description": "Custom field values associated with the record",
            "nullable": true
          },
          "owners": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Owner"
            },
            "description": "List of users that own the record, or that the record is assigned to",
            "nullable": true
          },
          "name": {
            "type": "string",
            "description": "The record's name",
            "nullable": true
          },
          "projectCode": {
            "type": "string",
            "description": "The project's identifying code",
            "nullable": true
          },
          "startDate": {
            "type": "string",
            "description": "The project's expected start date",
            "format": "date-time",
            "nullable": true
          },
          "endDate": {
            "type": "string",
            "description": "The project's expected end date",
            "format": "date-time",
            "nullable": true
          },
          "isSystemProject": {
            "type": "boolean",
            "description": "True if this is a system project"
          },
          "comments": {
            "type": "string",
            "description": "General comments about the project",
            "nullable": true
          },
          "health": {
            "type": "string",
            "description": "The project's health status (Red, Amber or Green)",
            "nullable": true
          },
          "priority": {
            "type": "string",
            "description": "The project's priority",
            "nullable": true
          },
          "tagText": {
            "type": "string",
            "description": "Arbitrary tag text entered by users",
            "nullable": true
          },
          "opportunity": {
            "allOf": [
              {
                "$ref": "#/components/schemas/OpportunityLink"
              }
            ],
            "description": "A link to a opportunity record",
            "nullable": true
          },
          "client": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ClientLink"
              }
            ],
            "description": "A link to a client record",
            "nullable": true
          },
          "contact": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ContactLink"
              }
            ],
            "description": "A link to a contact record",
            "nullable": true
          },
          "secondaryContact": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ContactLink"
              }
            ],
            "description": "A link to a contact record",
            "nullable": true
          },
          "type": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ProjectTypeLink"
              }
            ],
            "description": "A link to a project type",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ProjectResponseDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "The record's unique identifier",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "description": "The record's name",
            "nullable": true
          },
          "typeName": {
            "type": "string",
            "description": "Naming convention for this record type, e.g. 'Company', 'Contact', 'Lead', 'Job', etc.",
            "nullable": true
          },
          "source": {
            "type": "string",
            "description": "The source from which the record originated",
            "nullable": true
          },
          "contactDetails": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ContactDetails"
              }
            ],
            "description": "Contact details for the record",
            "nullable": true
          },
          "status": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Status"
              }
            ],
            "description": "The record's current status",
            "nullable": true
          },
          "territory": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Territory"
              }
            ],
            "description": "The record's territory",
            "nullable": true
          },
          "department": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Department"
              }
            ],
            "description": "The record's department",
            "nullable": true
          },
          "customFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomField"
            },
            "description": "Custom field values associated with the record",
            "nullable": true
          },
          "owners": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Owner"
            },
            "description": "List of users that own the record, or that the record is assigned to",
            "nullable": true
          },
          "projectCode": {
            "type": "string",
            "description": "The project's identifying code",
            "nullable": true
          },
          "startDate": {
            "type": "string",
            "description": "The project's expected start date",
            "format": "date-time",
            "nullable": true
          },
          "endDate": {
            "type": "string",
            "description": "The project's expected end date",
            "format": "date-time",
            "nullable": true
          },
          "isSystemProject": {
            "type": "boolean",
            "description": "True if this is a system project"
          },
          "comments": {
            "type": "string",
            "description": "General comments about the project",
            "nullable": true
          },
          "health": {
            "type": "string",
            "description": "The project's health status (Red, Amber or Green)",
            "nullable": true
          },
          "priority": {
            "type": "string",
            "description": "The project's priority",
            "nullable": true
          },
          "tagText": {
            "type": "string",
            "description": "Arbitrary tag text entered by users",
            "nullable": true
          },
          "opportunity": {
            "allOf": [
              {
                "$ref": "#/components/schemas/OpportunityLink"
              }
            ],
            "description": "A link to a opportunity record",
            "nullable": true
          },
          "client": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ClientLink"
              }
            ],
            "description": "A link to a client record",
            "nullable": true
          },
          "contact": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ContactLink"
              }
            ],
            "description": "A link to a contact record",
            "nullable": true
          },
          "secondaryContact": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ContactLink"
              }
            ],
            "description": "A link to a contact record",
            "nullable": true
          },
          "type": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ProjectTypeLink"
              }
            ],
            "description": "A link to a project type",
            "nullable": true
          },
          "history": {
            "allOf": [
              {
                "$ref": "#/components/schemas/RecordHistory"
              }
            ],
            "description": "An audit trail for a record",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents a single project record"
      },
      "ProjectSearchResponseDto": {
        "type": "object",
        "properties": {
          "projectId": {
            "type": "integer",
            "format": "int32"
          },
          "opportunityId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "clientId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "contactId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "projectCode": {
            "type": "string",
            "nullable": true
          },
          "projectName": {
            "type": "string",
            "nullable": true
          },
          "projectStatus": {
            "type": "string",
            "nullable": true
          },
          "projectOwnerId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "projectType": {
            "type": "string",
            "nullable": true
          },
          "startDate": {
            "type": "string",
            "nullable": true
          },
          "endDate": {
            "type": "string",
            "nullable": true
          },
          "activitySetId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "territory": {
            "type": "string",
            "nullable": true
          },
          "systemProject": {
            "type": "string"
          },
          "comments": {
            "type": "string",
            "nullable": true
          },
          "active": {
            "type": "string"
          },
          "lastUpdatedDateTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "lastUpdatedUserId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "projectHealth": {
            "type": "string",
            "nullable": true
          },
          "projectPriority": {
            "type": "string",
            "nullable": true
          },
          "workingFolder": {
            "type": "string",
            "nullable": true
          },
          "creationDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "projectStatusId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "projectTypeId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "projectPriorityId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "secondaryContactId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "tagText": {
            "type": "string",
            "nullable": true
          },
          "projectNotification": {
            "type": "string",
            "nullable": true
          },
          "territoryId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "clientName": {
            "type": "string",
            "nullable": true
          },
          "projectStatusName": {
            "type": "string",
            "nullable": true
          },
          "projectTypeName": {
            "type": "string",
            "nullable": true
          },
          "customFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomField"
            },
            "nullable": true,
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "ProjectTypeLink": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "Id",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "description": "Name",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "A link to a project type"
      },
      "QuickSkill": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "RecordCategory": {
        "type": "object",
        "properties": {
          "recordCategoryId": {
            "type": "integer",
            "description": "Gets or sets the record category identifier.",
            "format": "int32"
          },
          "categoryId": {
            "type": "integer",
            "description": "Gets or sets the category identifier.",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "description": "Gets or sets the name.",
            "nullable": true
          },
          "description": {
            "type": "string",
            "description": "Gets or sets the description.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "RecordCategoryInfo": {
        "type": "object",
        "properties": {
          "recordCategoryId": {
            "type": "integer",
            "format": "int32"
          },
          "recordCategoryName": {
            "type": "string",
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "isSystem": {
            "type": "boolean"
          },
          "recordCategoryColorClass": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "RecordCategoryRequestDto": {
        "required": [
          "recordId",
          "recordType"
        ],
        "type": "object",
        "properties": {
          "recordType": {
            "minLength": 1,
            "type": "string",
            "description": "Sets the record type of the record the category will be applied to. Allowed values: \"OpportunityResource\""
          },
          "recordId": {
            "type": "integer",
            "description": "Sets the Id of the record the category will be applied to.",
            "format": "int32"
          },
          "categoryId": {
            "type": "integer",
            "description": "Sets the Id of the category to be applied. Values can be obtained from Metadata.",
            "format": "int32",
            "nullable": true
          },
          "categoryName": {
            "type": "string",
            "description": "Sets the name of the category (can be set instead of category Id). The category will be added if it does not exist.",
            "nullable": true
          },
          "isSystem": {
            "type": "boolean",
            "description": "Sets the IsSystem property. IsSystem categories cannot be manually selected or modified by a user.",
            "nullable": true
          },
          "description": {
            "type": "string",
            "description": "Sets description which is used for a mouse over hint in the frontend.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "RecordHistory": {
        "type": "object",
        "properties": {
          "created": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "closed": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "updated": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "updatedBy": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false,
        "description": "An audit trail for a record"
      },
      "RecordReference": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "Id",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "description": "Name",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "A link to a record"
      },
      "RecordSkillDto": {
        "required": [
          "skillId"
        ],
        "type": "object",
        "properties": {
          "skillId": {
            "type": "integer",
            "description": "The skill identifier",
            "format": "int32"
          },
          "skillName": {
            "type": "string",
            "description": "The skill name (populated in responses, ignored in requests)",
            "nullable": true
          },
          "skillValueId": {
            "type": "integer",
            "description": "The skill value identifier (optional, for dropdown/list skills)",
            "format": "int32",
            "nullable": true
          },
          "skillValue": {
            "type": "string",
            "description": "The skill value (text representation)",
            "nullable": true
          },
          "skillType": {
            "type": "string",
            "description": "The skill type (populated in responses, ignored in requests)",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Skill data transfer object for both requests and responses"
      },
      "RecordTypesDto": {
        "type": "object",
        "properties": {
          "resource": {
            "type": "string",
            "nullable": true
          },
          "contact": {
            "type": "string",
            "nullable": true
          },
          "lead": {
            "type": "string",
            "nullable": true
          },
          "opportunity": {
            "type": "string",
            "nullable": true
          },
          "client": {
            "type": "string",
            "nullable": true
          },
          "opportunityResource": {
            "type": "string",
            "nullable": true
          },
          "project": {
            "type": "string",
            "nullable": true
          },
          "activity": {
            "type": "string",
            "nullable": true
          },
          "opportunityResourceContact": {
            "type": "string",
            "nullable": true
          },
          "invoice": {
            "type": "string",
            "nullable": true
          },
          "resourceCompliance": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ResourceComplianceDocumentResponseDto": {
        "type": "object",
        "properties": {
          "documentId": {
            "type": "integer",
            "description": "Gets or sets the document identifier.",
            "format": "int32"
          },
          "resourceComplianceDocumentId": {
            "type": "integer",
            "description": "Gets or sets the resource compliance document identifier.",
            "format": "int32"
          }
        },
        "additionalProperties": false,
        "description": "Resource Compliance Document Response Dto"
      },
      "ResourceComplianceRequestDto": {
        "type": "object",
        "properties": {
          "complianceItemId": {
            "type": "integer",
            "description": "Compliance item identifier",
            "format": "int32",
            "nullable": true
          },
          "dateCompleted": {
            "type": "string",
            "description": "Date completed",
            "format": "date-time",
            "nullable": true
          },
          "dateExpire": {
            "type": "string",
            "description": "Date item expires",
            "format": "date-time",
            "nullable": true
          },
          "mandatory": {
            "type": "boolean",
            "description": "Is item mandatory",
            "nullable": true
          },
          "status": {
            "type": "string",
            "description": "Status",
            "nullable": true
          },
          "notes": {
            "type": "string",
            "description": "Notes",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Resource Compliance Request Dto"
      },
      "ResourceComplianceResponseDto": {
        "type": "object",
        "properties": {
          "complianceItemId": {
            "type": "integer",
            "description": "Compliance item identifier",
            "format": "int32",
            "nullable": true
          },
          "dateCompleted": {
            "type": "string",
            "description": "Date completed",
            "format": "date-time",
            "nullable": true
          },
          "dateExpire": {
            "type": "string",
            "description": "Date item expires",
            "format": "date-time",
            "nullable": true
          },
          "mandatory": {
            "type": "boolean",
            "description": "Is item mandatory",
            "nullable": true
          },
          "status": {
            "type": "string",
            "description": "Status",
            "nullable": true
          },
          "notes": {
            "type": "string",
            "description": "Notes",
            "nullable": true
          },
          "resourceComplianceId": {
            "type": "integer",
            "description": "Resource compliance identifier",
            "format": "int32"
          },
          "documents": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ResourceComplianceDocumentResponseDto"
            },
            "description": "Gets or sets the documents.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Resource Compliance Response Dto"
      },
      "ResourceDocumentDto": {
        "type": "object",
        "properties": {
          "documentId": {
            "type": "integer",
            "format": "int32"
          },
          "filename": {
            "type": "string",
            "nullable": true
          },
          "isPrimary": {
            "type": "boolean"
          },
          "documentType": {
            "type": "string",
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "folderId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "fileType": {
            "type": "string",
            "nullable": true
          },
          "virtualFilePath": {
            "type": "string",
            "nullable": true
          },
          "history": {
            "allOf": [
              {
                "$ref": "#/components/schemas/DocumentHistoryDto"
              }
            ],
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ResourceHistory": {
        "type": "object",
        "properties": {
          "created": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "closed": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "updated": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "updatedBy": {
            "type": "integer",
            "format": "int32"
          },
          "resumeRecieved": {
            "type": "string",
            "description": "Date when the resource first submitted their resume",
            "format": "date-time",
            "nullable": true
          },
          "registered": {
            "type": "string",
            "description": "Date of the resource's initial registration",
            "format": "date-time",
            "nullable": true
          },
          "applied": {
            "type": "string",
            "description": "Date when the resource first applied for an opportunity",
            "format": "date-time",
            "nullable": true
          },
          "interviewed": {
            "type": "string",
            "description": "Date of the resource's interview",
            "format": "date-time",
            "nullable": true
          },
          "dateLastContacted": {
            "type": "string",
            "description": "Date when the resource was last contacted",
            "format": "date-time",
            "nullable": true
          },
          "lastActivityId": {
            "type": "integer",
            "description": "Id of the last activity",
            "format": "int32",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ResourceHistoryServiceDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "organization": {
            "type": "string",
            "nullable": true
          },
          "startDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "endDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "jobTitle": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ResourceLink": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "Id",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "description": "Name",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "A link to a resource record"
      },
      "ResourcePagedSearchResponseDto": {
        "type": "object",
        "properties": {
          "pageNumber": {
            "type": "integer",
            "description": "Current page number (1-based)",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "description": "Number of items per page",
            "format": "int32"
          },
          "totalCount": {
            "type": "integer",
            "description": "Total number of skills matching the query",
            "format": "int32"
          },
          "totalPages": {
            "type": "integer",
            "description": "Total number of pages available",
            "format": "int32"
          },
          "hasNextPage": {
            "type": "boolean",
            "description": "Indicates if there are more pages after the current page"
          },
          "hasPreviousPage": {
            "type": "boolean",
            "description": "Indicates if there are pages before the current page"
          },
          "resources": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ResourceSearchResponseDto"
            },
            "description": "Resources",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Paginated response containing activity data with pagination metadata"
      },
      "ResourceRequestDto": {
        "type": "object",
        "properties": {
          "source": {
            "type": "string",
            "description": "The source from which the record originated",
            "nullable": true
          },
          "contactDetails": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ContactDetails"
              }
            ],
            "description": "Contact details for the record",
            "nullable": true
          },
          "status": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Status"
              }
            ],
            "description": "The record's current status",
            "nullable": true
          },
          "territory": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Territory"
              }
            ],
            "description": "The record's territory",
            "nullable": true
          },
          "department": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Department"
              }
            ],
            "description": "The record's department",
            "nullable": true
          },
          "customFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomField"
            },
            "description": "Custom field values associated with the record",
            "nullable": true
          },
          "owners": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Owner"
            },
            "description": "List of users that own the record, or that the record is assigned to",
            "nullable": true
          },
          "dateApplied": {
            "type": "string",
            "description": "Date of first registration or application",
            "format": "date-time",
            "nullable": true
          },
          "preferredName": {
            "type": "string",
            "description": "The resource's preferred name",
            "nullable": true
          },
          "displayAs": {
            "type": "string",
            "description": "The resource's display name",
            "nullable": true
          },
          "firstName": {
            "type": "string",
            "description": "The resource's first name",
            "nullable": true
          },
          "surname": {
            "type": "string",
            "description": "The resource's last name",
            "nullable": true
          },
          "jobTitle": {
            "type": "string",
            "description": "The resource's job title",
            "nullable": true
          },
          "linkedInUrl": {
            "type": "string",
            "description": "The resource's LinkedIn URL",
            "nullable": true
          },
          "dateOfBirth": {
            "type": "string",
            "description": "The resource's date of birth",
            "nullable": true
          },
          "languages": {
            "type": "string",
            "description": "Languages that the resource is able to speak",
            "nullable": true
          },
          "educationSummary": {
            "type": "string",
            "description": "The resource's education summary",
            "nullable": true
          },
          "desiredPayRate": {
            "type": "number",
            "description": "The resource's desired pay rate",
            "format": "double",
            "nullable": true
          },
          "journeyTime": {
            "type": "string",
            "description": "The resource's curernt journey time to work",
            "nullable": true
          },
          "availableForWork": {
            "type": "boolean",
            "description": "True if the resource is currently available for work",
            "nullable": true
          },
          "currentSalary": {
            "type": "string",
            "description": "Free-text note about the resource's current salary, e.g. \"Circa GBP 50k plus car\".\r\nShown in the UI as \"Current Salary Note\". Not validated as a number -\r\nuse currentSalaryNum for the numeric value.",
            "nullable": true
          },
          "currentSalaryNum": {
            "type": "integer",
            "description": "The resource's current salary as a number. Shown in the UI as \"Current Salary\".",
            "format": "int32",
            "nullable": true
          },
          "desiredSalary": {
            "type": "string",
            "description": "Free-text note about the resource's desired salary, e.g. \"Negotiable, min 60k\".\r\nShown in the UI as \"Desired Salary Note\". Not validated as a number -\r\nuse desiredSalaryNum for the numeric value.",
            "nullable": true
          },
          "desiredSalaryNum": {
            "type": "integer",
            "description": "The resource's desired salary as a number. Shown in the UI as \"Desired Salary\".",
            "format": "int32",
            "nullable": true
          },
          "noticePeriod": {
            "type": "integer",
            "description": "The resource's notice period, in days, null indicates not set",
            "format": "int32",
            "nullable": true
          },
          "photo": {
            "type": "string",
            "description": "Resource photo URL",
            "nullable": true
          },
          "interviewResult": {
            "type": "string",
            "description": "Outcome of the resource's interview",
            "nullable": true
          },
          "interviewNote": {
            "type": "string",
            "description": "Notes from the resource's interview",
            "nullable": true
          },
          "note": {
            "type": "string",
            "description": "Summary notes about the resource",
            "nullable": true
          },
          "currentSituation": {
            "type": "string",
            "description": "Notes on the resource's current employment situation",
            "nullable": true
          },
          "rating": {
            "type": "integer",
            "description": "Rating for the resource (1...5)",
            "format": "int32",
            "nullable": true
          },
          "payRateNote": {
            "type": "string",
            "description": "The resource's current pay rate",
            "nullable": true
          },
          "payRateNum": {
            "type": "number",
            "description": "The resource's current pay rate",
            "format": "double",
            "nullable": true
          },
          "chargeRateNote": {
            "type": "string",
            "description": "The resource's current charge rate",
            "nullable": true
          },
          "chargeRateNum": {
            "type": "number",
            "description": "The resource's current charge rate///",
            "format": "double",
            "nullable": true
          },
          "costCentreCode": {
            "type": "string",
            "description": "Cost centre code under which the resource shoukd be billed",
            "nullable": true
          },
          "interviewedBy": {
            "type": "string",
            "description": "The consultant that interviewd the resource",
            "nullable": true
          },
          "otherEmail": {
            "type": "string",
            "description": "The resource's secondary email address",
            "nullable": true
          },
          "fullEmploymentHistory": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ResourceHistoryServiceDto"
            },
            "description": "Complete resource's employment history",
            "nullable": true
          },
          "employmentHistory": {
            "type": "string",
            "description": "Summary of the resource's employment history",
            "nullable": true
          },
          "achievements": {
            "type": "string",
            "description": "Summary of the resource's achievements to date",
            "nullable": true
          },
          "associations": {
            "type": "string",
            "description": "Associations of which the resource is a member",
            "nullable": true
          },
          "nissNumber": {
            "type": "string",
            "description": "The resource's NI or SS number",
            "nullable": true
          },
          "tagText": {
            "type": "string",
            "description": "Arbitrary tag text entered by users",
            "nullable": true
          },
          "payrollNumber": {
            "type": "string",
            "description": "The resource's payroll number",
            "nullable": true
          },
          "availableFrom": {
            "type": "string",
            "description": "Date from which the resource is available for work",
            "format": "date-time",
            "nullable": true
          },
          "bonuses": {
            "type": "string",
            "description": "Details of any bonuses the apply to the resource",
            "nullable": true
          },
          "contractStartDate": {
            "type": "string",
            "description": "The resource's contract start date",
            "format": "date-time",
            "nullable": true
          },
          "contractEndDate": {
            "type": "string",
            "description": "The resource's contract end date",
            "format": "date-time",
            "nullable": true
          },
          "holidayEntitlement": {
            "type": "number",
            "description": "Number of days holiday to which the resource is entitled",
            "format": "double",
            "nullable": true
          },
          "holidayCarryOver": {
            "type": "number",
            "description": "Number of days holiday that the resource has carried over to this year",
            "format": "double",
            "nullable": true
          },
          "maximumCarryOver": {
            "type": "number",
            "description": "Maximum number of days of unused holiday that the resource may carry over",
            "format": "double",
            "nullable": true
          },
          "rightToRepresent": {
            "type": "boolean",
            "description": "True if your business has the right to represent the resource",
            "nullable": true
          },
          "taxApplicable": {
            "type": "boolean",
            "description": "True if taxes are applied to charges made for the resource",
            "nullable": true
          },
          "agencyName": {
            "type": "string",
            "description": "Name of the agency under which the resource works",
            "nullable": true
          },
          "agencyType": {
            "type": "string",
            "description": "The type of agency under which the resource works",
            "nullable": true
          },
          "agencyAccountRef": {
            "type": "string",
            "description": "Account reference for the agency under which the resource works",
            "nullable": true
          },
          "createdBy": {
            "type": "string",
            "description": "Name of the user that created the resource",
            "nullable": true
          },
          "agencyAddress": {
            "allOf": [
              {
                "$ref": "#/components/schemas/AddressDetails"
              }
            ],
            "description": "Address of the agency under which the resource works",
            "nullable": true
          },
          "currentClient": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ClientLink"
              }
            ],
            "description": "The resource's current employer",
            "nullable": true
          },
          "manager": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ContactLink"
              }
            ],
            "description": "The resource's manager",
            "nullable": true
          },
          "address": {
            "allOf": [
              {
                "$ref": "#/components/schemas/AddressDetails"
              }
            ],
            "description": "A postal address",
            "nullable": true
          },
          "bankingDetails": {
            "allOf": [
              {
                "$ref": "#/components/schemas/BankingDetails"
              }
            ],
            "nullable": true
          },
          "additionalContactDetails": {
            "allOf": [
              {
                "$ref": "#/components/schemas/AdditionalContactDetails"
              }
            ],
            "description": "Additional, non-standard contact details",
            "nullable": true
          },
          "quickSkills": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/QuickSkill"
            },
            "description": "List of quick skills associated with the resource",
            "nullable": true
          },
          "marketingPreferences": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Marketing"
              }
            ],
            "description": "Marketing Preferences",
            "nullable": true
          },
          "workTypes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/WorkTypeLink"
            },
            "description": "Work Types.",
            "nullable": true
          },
          "sectors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Sector"
            },
            "description": "Sectors to assign to the resource.\r\nIf null, sectors are inherited from the resource owner (default behaviour).\r\nIf an empty array, no sectors are stored against the resource.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Resource requst object for resource api"
      },
      "ResourceResponseDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "The record's unique identifier",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "description": "The record's name",
            "nullable": true
          },
          "typeName": {
            "type": "string",
            "description": "Naming convention for this record type, e.g. 'Company', 'Contact', 'Lead', 'Job', etc.",
            "nullable": true
          },
          "source": {
            "type": "string",
            "description": "The source from which the record originated",
            "nullable": true
          },
          "contactDetails": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ContactDetails"
              }
            ],
            "description": "Contact details for the record",
            "nullable": true
          },
          "status": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ResourceStatus"
              }
            ],
            "description": "Resource Status",
            "nullable": true
          },
          "territory": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Territory"
              }
            ],
            "description": "The record's territory",
            "nullable": true
          },
          "department": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Department"
              }
            ],
            "description": "The record's department",
            "nullable": true
          },
          "customFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomField"
            },
            "description": "Custom field values associated with the record",
            "nullable": true
          },
          "owners": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Owner"
            },
            "description": "List of users that own the record, or that the record is assigned to",
            "nullable": true
          },
          "resourceId": {
            "type": "integer",
            "description": "The resource identifier",
            "format": "int32"
          },
          "dateApplied": {
            "type": "string",
            "description": "Date of first registration or application",
            "format": "date-time",
            "nullable": true
          },
          "preferredName": {
            "type": "string",
            "description": "The resource's preferred name",
            "nullable": true
          },
          "displayAs": {
            "type": "string",
            "description": "The resource's display name",
            "nullable": true
          },
          "firstName": {
            "type": "string",
            "description": "The resource's first name",
            "nullable": true
          },
          "surname": {
            "type": "string",
            "description": "The resource's last name",
            "nullable": true
          },
          "jobTitle": {
            "type": "string",
            "description": "The resource's job title",
            "nullable": true
          },
          "linkedInUrl": {
            "type": "string",
            "description": "The resource's LinkedIn URL",
            "nullable": true
          },
          "dateOfBirth": {
            "type": "string",
            "description": "The resource's date of birth",
            "nullable": true
          },
          "languages": {
            "type": "string",
            "description": "Languages that the resource is able to speak",
            "nullable": true
          },
          "educationSummary": {
            "type": "string",
            "description": "The resource's education summary",
            "nullable": true
          },
          "desiredPayRate": {
            "type": "number",
            "description": "The resource's desired pay rate",
            "format": "double"
          },
          "journeyTime": {
            "type": "string",
            "description": "The resource's curernt journey time to work",
            "nullable": true
          },
          "availableForWork": {
            "type": "boolean",
            "description": "True if the resource is currently available for work"
          },
          "currentSalary": {
            "type": "string",
            "description": "Free-text note about the resource's current salary.\r\nShown in the UI as \"Current Salary Note\".",
            "nullable": true
          },
          "currentSalaryNum": {
            "type": "integer",
            "description": "The resource's current salary as a number. Shown in the UI as \"Current Salary\".",
            "format": "int32",
            "nullable": true
          },
          "desiredSalary": {
            "type": "string",
            "description": "Free-text note about the resource's desired salary.\r\nShown in the UI as \"Desired Salary Note\".",
            "nullable": true
          },
          "desiredSalaryNum": {
            "type": "integer",
            "description": "The resource's desired salary as a number. Shown in the UI as \"Desired Salary\".",
            "format": "int32",
            "nullable": true
          },
          "noticePeriod": {
            "type": "integer",
            "description": "The resource's notice period, in days, null indicates not set",
            "format": "int32",
            "nullable": true
          },
          "photo": {
            "type": "string",
            "description": "Resource photo URL",
            "nullable": true
          },
          "interviewResult": {
            "type": "string",
            "description": "Outcome of the resource's interview",
            "nullable": true
          },
          "interviewNote": {
            "type": "string",
            "description": "Notes from the resource's interview",
            "nullable": true
          },
          "note": {
            "type": "string",
            "description": "Summary notes about the resource",
            "nullable": true
          },
          "currentSituation": {
            "type": "string",
            "description": "Notes on the resource's current employment situation",
            "nullable": true
          },
          "rating": {
            "type": "integer",
            "description": "Rating for the resource (1...5)",
            "format": "int32",
            "nullable": true
          },
          "payRateNote": {
            "type": "string",
            "description": "The resource's current pay rate",
            "nullable": true
          },
          "payRateNum": {
            "type": "number",
            "description": "The resource's current pay rate",
            "format": "double"
          },
          "chargeRateNote": {
            "type": "string",
            "description": "The resource's current charge rate",
            "nullable": true
          },
          "chargeRateNum": {
            "type": "number",
            "description": "The resource's current charge rate///",
            "format": "double"
          },
          "costCentreCode": {
            "type": "string",
            "description": "Cost centre code under which the resource should be billed",
            "nullable": true
          },
          "interviewedBy": {
            "type": "string",
            "description": "The consultant that interviewd the resource",
            "nullable": true
          },
          "employmentHistory": {
            "type": "string",
            "description": "Summary of the resource's employment history",
            "nullable": true
          },
          "achievements": {
            "type": "string",
            "description": "Summary of the resource's achievements to date",
            "nullable": true
          },
          "associations": {
            "type": "string",
            "description": "Associations of which the resource is a member",
            "nullable": true
          },
          "nissNumber": {
            "type": "string",
            "description": "The resource's NI or SS number",
            "nullable": true
          },
          "tagText": {
            "type": "string",
            "description": "Arbitrary tag text entered by users",
            "nullable": true
          },
          "payrollNumber": {
            "type": "string",
            "description": "The resource's payroll number",
            "nullable": true
          },
          "availableFrom": {
            "type": "string",
            "description": "Date from which the resource is available for work",
            "format": "date-time",
            "nullable": true
          },
          "bonuses": {
            "type": "string",
            "description": "Details of any bonuses the apply to the resource",
            "nullable": true
          },
          "contractStartDate": {
            "type": "string",
            "description": "The resource's contract start date",
            "format": "date-time",
            "nullable": true
          },
          "contractEndDate": {
            "type": "string",
            "description": "The resource's contract end date",
            "format": "date-time",
            "nullable": true
          },
          "holidayEntitlement": {
            "type": "number",
            "description": "Number of days holiday to which the resource is entitled",
            "format": "double"
          },
          "holidayCarryOver": {
            "type": "number",
            "description": "Number of days holiday that the resource has carried over to this year",
            "format": "double"
          },
          "maximumCarryOver": {
            "type": "number",
            "description": "Maximum number of days of unused holiday that the resource may carry over",
            "format": "double"
          },
          "rightToRepresent": {
            "type": "boolean",
            "description": "True if your business has the right to represent the resource"
          },
          "taxApplicable": {
            "type": "boolean",
            "description": "True if taxes are applied to charges made for the resource"
          },
          "agencyName": {
            "type": "string",
            "description": "Name of the agency under which the resource works",
            "nullable": true
          },
          "agencyType": {
            "type": "string",
            "description": "The type of agency under which the resource works",
            "nullable": true
          },
          "agencyAccountRef": {
            "type": "string",
            "description": "Account reference for the agency under which the resource works",
            "nullable": true
          },
          "createdBy": {
            "type": "string",
            "description": "Name of the user that created the resource",
            "nullable": true
          },
          "agencyAddress": {
            "allOf": [
              {
                "$ref": "#/components/schemas/AddressDetails"
              }
            ],
            "description": "Address of the agency under which the resource works",
            "nullable": true
          },
          "currentClient": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ClientLink"
              }
            ],
            "description": "The resource's current employer",
            "nullable": true
          },
          "manager": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ContactLink"
              }
            ],
            "description": "The resource's manager",
            "nullable": true
          },
          "address": {
            "allOf": [
              {
                "$ref": "#/components/schemas/AddressDetails"
              }
            ],
            "description": "A postal address",
            "nullable": true
          },
          "bankingDetails": {
            "allOf": [
              {
                "$ref": "#/components/schemas/BankingDetails"
              }
            ],
            "nullable": true
          },
          "additionalContactDetails": {
            "allOf": [
              {
                "$ref": "#/components/schemas/AdditionalContactDetails"
              }
            ],
            "description": "Additional, non-standard contact details",
            "nullable": true
          },
          "marketingPreferences": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Marketing"
              }
            ],
            "nullable": true
          },
          "quickSkills": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/QuickSkill"
            },
            "description": "List of quick skills associated with the resource",
            "nullable": true
          },
          "partnerRecords": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PartnerResponseDto"
            },
            "description": "List of partner ids associated with this resource",
            "nullable": true
          },
          "workTypes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/WorkTypeLink"
            },
            "description": "List of work types associated with the resource",
            "nullable": true
          },
          "sectors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Sector"
            },
            "description": "Sectors associated with the resource",
            "nullable": true
          },
          "offLimits": {
            "allOf": [
              {
                "$ref": "#/components/schemas/OffLimitsDetails"
              }
            ],
            "description": "Off limits details for this resource",
            "nullable": true
          },
          "history": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ResourceHistory"
              }
            ],
            "description": "Resource history",
            "nullable": true
          },
          "linkedContact": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ContactLink"
              }
            ],
            "description": "Linked contact.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents a single resource record"
      },
      "ResourceSearchRequestDto": {
        "type": "object",
        "properties": {
          "maxResults": {
            "type": "integer",
            "description": "Maximum results per page",
            "format": "int32",
            "nullable": true,
            "example": 10
          },
          "pageNumber": {
            "type": "integer",
            "description": "The page number to return",
            "format": "int32",
            "nullable": true,
            "example": 1
          },
          "sortBy": {
            "type": "string",
            "description": "A valid column to sort by",
            "nullable": true,
            "example": ""
          },
          "sortDirection": {
            "type": "string",
            "description": "The sort direction, valid values are ASC or DESC",
            "nullable": true,
            "example": "ASC"
          },
          "startingAfter": {
            "type": "integer",
            "description": "optional A cursor to use in pagination. starting_after is an object ID that defines your place in the list. For example, if you make a list request and receive 100 objects, ending with obj_foo, your subsequent call can include starting_after=obj_foo to fetch the next page of the list.",
            "format": "int32",
            "nullable": true
          },
          "searchTerm": {
            "type": "string",
            "description": "Searches <b>displayAs</b>",
            "nullable": true,
            "example": "John Doe"
          },
          "state": {
            "type": "string",
            "description": "Include only records whose status matches this state (not supported for Clients or Contacts)",
            "nullable": true,
            "example": "active"
          },
          "updatedBefore": {
            "type": "string",
            "description": "Include only records updated before a date/time",
            "format": "date-time",
            "nullable": true
          },
          "updatedAfter": {
            "type": "string",
            "description": "Include only records updated after a date/time",
            "format": "date-time",
            "nullable": true
          },
          "createdBefore": {
            "type": "string",
            "description": "Include only records created before a date/time",
            "format": "date-time",
            "nullable": true
          },
          "createdAfter": {
            "type": "string",
            "description": "Include only records created after a date/time",
            "format": "date-time",
            "nullable": true
          },
          "onlyMyRecords": {
            "type": "boolean",
            "description": "Include only records assigned to the user calling the API",
            "example": false
          },
          "includeCustomFields": {
            "type": "boolean",
            "description": "Include custom fields in the results",
            "example": false
          },
          "telephone": {
            "type": "string",
            "description": "Searches <b>telephone numbers</b>",
            "nullable": true,
            "example": "555 0100"
          },
          "email": {
            "type": "string",
            "description": "Searches <b>email address</b>",
            "nullable": true,
            "example": "john.doe@example.com"
          },
          "includeExtendedProperties": {
            "type": "boolean",
            "description": "Include extra properties in the results.\r\n(Partner records, Quick skills)"
          },
          "tagText": {
            "type": "string",
            "description": "Searches <b>tag text</b>",
            "nullable": true,
            "example": "do not send"
          }
        },
        "additionalProperties": false
      },
      "ResourceSearchResponseDto": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "integer",
            "format": "int32"
          },
          "dateApplied": {
            "type": "string",
            "nullable": true
          },
          "clientName": {
            "type": "string",
            "nullable": true
          },
          "firstname": {
            "type": "string",
            "nullable": true
          },
          "surname": {
            "type": "string",
            "nullable": true
          },
          "displayAs": {
            "type": "string",
            "nullable": true
          },
          "jobTitle": {
            "type": "string",
            "nullable": true
          },
          "addressLine1": {
            "type": "string",
            "nullable": true
          },
          "addressLine2": {
            "type": "string",
            "nullable": true
          },
          "town": {
            "type": "string",
            "nullable": true
          },
          "county": {
            "type": "string",
            "nullable": true
          },
          "postcode": {
            "type": "string",
            "nullable": true
          },
          "country": {
            "type": "string",
            "nullable": true
          },
          "email": {
            "type": "string",
            "nullable": true
          },
          "otherEmail": {
            "type": "string",
            "nullable": true
          },
          "linkedInUrl": {
            "type": "string",
            "nullable": true
          },
          "workTelephone": {
            "type": "string",
            "nullable": true
          },
          "homeTelephone": {
            "type": "string",
            "nullable": true
          },
          "mobilePhone": {
            "type": "string",
            "nullable": true
          },
          "nissNumber": {
            "type": "string",
            "nullable": true
          },
          "payrollNumber": {
            "type": "string",
            "nullable": true
          },
          "whereDidYouHear": {
            "type": "string",
            "nullable": true
          },
          "departmentName": {
            "type": "string",
            "nullable": true
          },
          "territory": {
            "type": "string",
            "nullable": true
          },
          "resourceOwner": {
            "type": "string",
            "nullable": true
          },
          "resourceOwnerId": {
            "type": "integer",
            "format": "int32"
          },
          "resourceStatusName": {
            "type": "string",
            "nullable": true
          },
          "resourceStatusState": {
            "type": "string",
            "nullable": true
          },
          "availableForWork": {
            "type": "string",
            "nullable": true
          },
          "availableFrom": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "availability": {
            "type": "string",
            "nullable": true
          },
          "lastUpdatedDateTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "lastUpdatedUserId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "tagText": {
            "type": "string",
            "nullable": true
          },
          "customFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomField"
            },
            "nullable": true,
            "readOnly": true
          },
          "creationDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "currentClientName": {
            "type": "string",
            "nullable": true
          },
          "partnerRecords": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PartnerResponseDto"
            },
            "nullable": true,
            "readOnly": true
          },
          "marketingPreference": {
            "type": "string",
            "nullable": true
          },
          "quickSkills": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/QuickSkill"
            },
            "nullable": true,
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "ResourceStatus": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "Id",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "description": "Name",
            "nullable": true
          },
          "state": {
            "type": "string",
            "description": "The active state",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Resource Status"
      },
      "ResourceUtilisationHistoryDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "The resource utilisation identifier.",
            "format": "int32"
          },
          "resourceId": {
            "type": "integer",
            "description": "The resource ID extracted from NewValuesJson (INSERT/UPDATE) or OldValuesJson (DELETE).\r\nNull when the JSON does not contain a resourceId field.",
            "format": "int32",
            "nullable": true
          },
          "startTime": {
            "type": "string",
            "description": "Shift start time (HH:mm) extracted from the values JSON. Null when not present.",
            "nullable": true
          },
          "endTime": {
            "type": "string",
            "description": "Shift end time (HH:mm) extracted from the values JSON. Null when not present.",
            "nullable": true
          },
          "changeDateUtc": {
            "type": "string",
            "description": "UTC timestamp of when this change was recorded.",
            "format": "date-time"
          },
          "status": {
            "type": "string",
            "description": "The change action: INSERT, UPDATE, or DELETE.",
            "nullable": true
          },
          "isDeleted": {
            "type": "boolean",
            "description": "True when this record represents a deletion."
          }
        },
        "additionalProperties": false,
        "description": "A resource utilisation change record linked to a shift."
      },
      "ResourceVitals": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "firstname": {
            "type": "string",
            "nullable": true
          },
          "surname": {
            "type": "string",
            "nullable": true
          },
          "telephone": {
            "type": "string",
            "nullable": true
          },
          "email": {
            "type": "string",
            "nullable": true
          },
          "applicationDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Vital contact details for a record"
      },
      "Response": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean"
          },
          "namedAccount": {
            "type": "string",
            "nullable": true
          },
          "namedResource": {
            "type": "string",
            "nullable": true
          },
          "namedOpportunity": {
            "type": "string",
            "nullable": true
          },
          "reason": {
            "type": "string",
            "nullable": true
          },
          "opportunityResourceId": {
            "type": "integer",
            "format": "int32"
          },
          "placementSource": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ScreeningSubmissionAnswerDto": {
        "type": "object",
        "properties": {
          "questionId": {
            "type": "integer",
            "description": "The template question the answer relates to.",
            "format": "int32"
          },
          "answerText": {
            "type": "string",
            "description": "The candidate's response. May be empty.",
            "nullable": true
          },
          "answerScore": {
            "type": "number",
            "description": "Optional per-answer score from the AI service (0-100).",
            "format": "double",
            "nullable": true
          },
          "answerJustification": {
            "type": "string",
            "description": "Optional per-answer reasoning from the AI service.",
            "nullable": true
          },
          "knockoutTriggered": {
            "type": "boolean",
            "description": "Whether the AI service determined this answer triggers a knockout.\r\nThe flag is stored as supplied; no server-side recomputation is performed.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "A single answer within a screening submission."
      },
      "ScreeningSubmissionRequestDto": {
        "type": "object",
        "properties": {
          "interviewId": {
            "type": "integer",
            "description": "The interviewid of the interview answers apply to",
            "format": "int32"
          },
          "aiScore": {
            "type": "number",
            "description": "Overall AI-assigned score for the session (0-100).",
            "format": "double"
          },
          "aiJustification": {
            "type": "string",
            "description": "Free-text reasoning from the AI service describing why the score was assigned.",
            "nullable": true
          },
          "aiProvider": {
            "type": "string",
            "description": "Identifier of the AI service / model that produced the assessment\r\n(for audit and support purposes).",
            "nullable": true
          },
          "screeningCompletedUTC": {
            "type": "string",
            "description": "UTC timestamp at which the candidate completed the screening.",
            "format": "date-time"
          },
          "answers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ScreeningSubmissionAnswerDto"
            },
            "description": "One entry per question answered. The questionId values correspond to\r\ninterviewTemplateQuestionId values returned by GET /api/v1/Screening/Template/{templateId}.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ScreeningTemplateDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "The template's unique identifier",
            "format": "int32"
          },
          "templateTitle": {
            "type": "string",
            "description": "The title of the template",
            "nullable": true
          },
          "introductionText": {
            "type": "string",
            "description": "The introduction text shown at the start of the screening",
            "nullable": true
          },
          "closeText": {
            "type": "string",
            "description": "The closing text shown at the end of the screening",
            "nullable": true
          },
          "ownerId": {
            "type": "integer",
            "description": "The id of the user that owns this template",
            "format": "int32",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents a screening template"
      },
      "ScreeningTemplateQuestionDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "The question's unique identifier",
            "format": "int32"
          },
          "sortOrder": {
            "type": "integer",
            "description": "The display order position of this question within the template",
            "format": "int32",
            "nullable": true
          },
          "questionText": {
            "type": "string",
            "description": "The question text",
            "nullable": true
          },
          "multipleChoiceOptions": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Multiple choice options",
            "nullable": true
          },
          "isKnockout": {
            "type": "boolean",
            "description": "Indicates whether this is a knockout question"
          },
          "preferredAnswer": {
            "type": "string",
            "description": "The preferred or correct answer for this question",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents a single question within a screening template"
      },
      "ScreeningTemplateResponseDto": {
        "type": "object",
        "properties": {
          "template": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ScreeningTemplateDto"
              }
            ],
            "description": "The screening template details",
            "nullable": true
          },
          "questions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ScreeningTemplateQuestionDto"
            },
            "description": "The active questions belonging to this template, ordered by sort position",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents a screening template with its active questions"
      },
      "SearchCustomFieldRequestDto": {
        "type": "object",
        "properties": {
          "maxResults": {
            "type": "integer",
            "description": "Maximum results per page",
            "format": "int32",
            "nullable": true,
            "example": 10
          },
          "pageNumber": {
            "type": "integer",
            "description": "The page number to return",
            "format": "int32",
            "nullable": true,
            "example": 1
          },
          "sortBy": {
            "type": "string",
            "description": "A valid column to sort by",
            "nullable": true,
            "example": ""
          },
          "sortDirection": {
            "type": "string",
            "description": "The sort direction, valid values are ASC or DESC",
            "nullable": true,
            "example": "ASC"
          },
          "customFieldValue": {
            "type": "string",
            "description": "Term to search for in the values",
            "nullable": true,
            "example": "acme"
          },
          "customFieldId": {
            "type": "integer",
            "description": "Custom field id to search, don't set to search all",
            "format": "int32",
            "nullable": true,
            "example": 0
          }
        },
        "additionalProperties": false
      },
      "SearchRequestDto": {
        "type": "object",
        "properties": {
          "searchTerm": {
            "type": "string",
            "description": "Term to search for",
            "nullable": true,
            "example": "acme"
          },
          "maxResults": {
            "type": "integer",
            "description": "Maximum results per page",
            "format": "int32",
            "nullable": true,
            "example": 10
          },
          "pageNumber": {
            "type": "integer",
            "description": "The page number to return",
            "format": "int32",
            "nullable": true,
            "example": 1
          },
          "sortBy": {
            "type": "string",
            "description": "A valid column to sort by",
            "nullable": true,
            "example": ""
          },
          "sortDirection": {
            "type": "string",
            "description": "The sort direction, valid values are ASC or DESC",
            "nullable": true,
            "example": "ASC"
          },
          "statusId": {
            "type": "integer",
            "description": "A record type status id can be null",
            "format": "int32",
            "nullable": true,
            "example": 7
          },
          "state": {
            "type": "string",
            "description": "Include only records whose status matches this state (not supported for Clients or Contacts)",
            "nullable": true,
            "example": ""
          },
          "updatedBefore": {
            "type": "string",
            "description": "Only records before a date/time",
            "format": "date-time",
            "nullable": true
          },
          "updatedAfter": {
            "type": "string",
            "description": "Only records after a date/time",
            "format": "date-time",
            "nullable": true
          },
          "onlyMyRecords": {
            "type": "boolean",
            "description": "Include only records assigned to the user calling the api",
            "example": false
          },
          "includeCustomFields": {
            "type": "boolean",
            "description": "Include custom fields in the results",
            "example": false
          }
        },
        "additionalProperties": false
      },
      "Sector": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "SendListPagedSearchResponseDto": {
        "type": "object",
        "properties": {
          "pageNumber": {
            "type": "integer",
            "description": "Current page number (1-based)",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "description": "Number of items per page",
            "format": "int32"
          },
          "totalCount": {
            "type": "integer",
            "description": "Total number of skills matching the query",
            "format": "int32"
          },
          "totalPages": {
            "type": "integer",
            "description": "Total number of pages available",
            "format": "int32"
          },
          "hasNextPage": {
            "type": "boolean",
            "description": "Indicates if there are more pages after the current page"
          },
          "hasPreviousPage": {
            "type": "boolean",
            "description": "Indicates if there are pages before the current page"
          },
          "sendLists": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SendListSearchResponseDto"
            },
            "description": "Send Lists",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Paginated response containing send list data with pagination metadata"
      },
      "SendListPeoplePagedSearchResponseDto": {
        "type": "object",
        "properties": {
          "pageNumber": {
            "type": "integer",
            "description": "Current page number (1-based)",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "description": "Number of items per page",
            "format": "int32"
          },
          "totalCount": {
            "type": "integer",
            "description": "Total number of skills matching the query",
            "format": "int32"
          },
          "totalPages": {
            "type": "integer",
            "description": "Total number of pages available",
            "format": "int32"
          },
          "hasNextPage": {
            "type": "boolean",
            "description": "Indicates if there are more pages after the current page"
          },
          "hasPreviousPage": {
            "type": "boolean",
            "description": "Indicates if there are pages before the current page"
          },
          "sendListPeople": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SendListPeopleSearchResponseDto"
            },
            "description": "Send List People",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Paginated response containing send list people data with pagination metadata"
      },
      "SendListPeopleSearchRequestDto": {
        "type": "object",
        "properties": {
          "searchTerm": {
            "type": "string",
            "description": "Term to search for",
            "nullable": true,
            "example": "acme"
          },
          "maxResults": {
            "type": "integer",
            "description": "Maximum results per page",
            "format": "int32",
            "nullable": true,
            "example": 10
          },
          "pageNumber": {
            "type": "integer",
            "description": "The page number to return",
            "format": "int32",
            "nullable": true,
            "example": 1
          },
          "sortBy": {
            "type": "string",
            "description": "A valid column to sort by",
            "nullable": true,
            "example": ""
          },
          "sortDirection": {
            "type": "string",
            "description": "The sort direction, valid values are ASC or DESC",
            "nullable": true,
            "example": "ASC"
          },
          "sendListId": {
            "type": "integer",
            "description": "Id of the send list",
            "format": "int32",
            "nullable": true
          },
          "contactId": {
            "type": "integer",
            "description": "Id of the contact",
            "format": "int32",
            "nullable": true
          },
          "resourceId": {
            "type": "integer",
            "description": "Id of the resource",
            "format": "int32",
            "nullable": true
          },
          "addedId": {
            "type": "integer",
            "description": "Id of the user that added the record",
            "format": "int32",
            "nullable": true
          },
          "createdBefore": {
            "type": "string",
            "description": "Only records before a date/time",
            "format": "date-time",
            "nullable": true
          },
          "createdAfter": {
            "type": "string",
            "description": "Only records after a date/time",
            "format": "date-time",
            "nullable": true
          },
          "includeContacts": {
            "type": "boolean",
            "description": "Only records linked to contacts",
            "nullable": true
          },
          "includeResources": {
            "type": "boolean",
            "description": "Only records linked to resources",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Send List People Search Request Dto"
      },
      "SendListPeopleSearchResponseDto": {
        "type": "object",
        "properties": {
          "sendListPersonId": {
            "type": "integer",
            "description": "Id of the send list person",
            "format": "int32"
          },
          "sendListId": {
            "type": "integer",
            "description": "Id of the related send list",
            "format": "int32"
          },
          "recordId": {
            "type": "integer",
            "description": "Id of the related record",
            "format": "int32"
          },
          "createdById": {
            "type": "integer",
            "description": "Id of the user that create the record",
            "format": "int32"
          },
          "createdDateTime": {
            "type": "string",
            "description": "Date the record was created",
            "format": "date-time"
          },
          "comments": {
            "type": "string",
            "description": "Comments",
            "nullable": true
          },
          "isContactRecord": {
            "type": "boolean",
            "description": "Indicates that record identifier relates to a contact"
          },
          "isResourceRecord": {
            "type": "boolean",
            "description": "Indicates that record identifier relates to a resource"
          }
        },
        "additionalProperties": false,
        "description": "Represents a single send list people record"
      },
      "SendListSearchRequestDto": {
        "type": "object",
        "properties": {
          "searchTerm": {
            "type": "string",
            "description": "Term to search for",
            "nullable": true,
            "example": "acme"
          },
          "maxResults": {
            "type": "integer",
            "description": "Maximum results per page",
            "format": "int32",
            "nullable": true,
            "example": 10
          },
          "pageNumber": {
            "type": "integer",
            "description": "The page number to return",
            "format": "int32",
            "nullable": true,
            "example": 1
          },
          "sortBy": {
            "type": "string",
            "description": "A valid column to sort by",
            "nullable": true,
            "example": ""
          },
          "sortDirection": {
            "type": "string",
            "description": "The sort direction, valid values are ASC or DESC",
            "nullable": true,
            "example": "ASC"
          },
          "onlyMyRecords": {
            "type": "boolean",
            "description": "Include only records assigned to the user calling the api",
            "example": false
          },
          "sendListTypeId": {
            "type": "integer",
            "description": "Send list type id",
            "format": "int32",
            "nullable": true
          },
          "sendListTypeName": {
            "type": "string",
            "description": "Send List Type Name",
            "nullable": true
          },
          "territoryId": {
            "type": "integer",
            "description": "Territory Id",
            "format": "int32",
            "nullable": true
          },
          "territory": {
            "type": "string",
            "description": "Territory Name",
            "nullable": true
          },
          "createdBefore": {
            "type": "string",
            "description": "Only records before a date/time",
            "format": "date-time",
            "nullable": true
          },
          "createdAfter": {
            "type": "string",
            "description": "Only records after a date/time",
            "format": "date-time",
            "nullable": true
          },
          "sendListOwnerId": {
            "type": "integer",
            "description": "Send List Owner Id",
            "format": "int32",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Send List Search Request Dto"
      },
      "SendListSearchResponseDto": {
        "type": "object",
        "properties": {
          "sendListId": {
            "type": "integer",
            "description": "Id of the send list",
            "format": "int32"
          },
          "sendListName": {
            "type": "string",
            "description": "Name of the send list",
            "nullable": true
          },
          "replyToName": {
            "type": "string",
            "description": "Reply To Name",
            "nullable": true
          },
          "replyToEmail": {
            "type": "string",
            "description": "Reply To Email",
            "nullable": true
          },
          "defaultSubject": {
            "type": "string",
            "description": "Default Subject",
            "nullable": true
          },
          "sendListDescription": {
            "type": "string",
            "description": "Send List Description",
            "nullable": true
          },
          "sendListType": {
            "allOf": [
              {
                "$ref": "#/components/schemas/SendListType"
              }
            ],
            "description": "Send list type",
            "nullable": true
          },
          "territory": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Territory"
              }
            ],
            "description": "The record's territory",
            "nullable": true
          },
          "owners": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/UserOwner"
            },
            "description": "List of users that own the record, or that the record is assigned to",
            "nullable": true
          },
          "createdDateTime": {
            "type": "string",
            "description": "Created Date Time",
            "format": "date-time"
          }
        },
        "additionalProperties": false,
        "description": "Represents a single send list record"
      },
      "SendListType": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "Id",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "description": "Name",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Send List Type"
      },
      "ShiftChangeHistorySearchRequestDto": {
        "type": "object",
        "properties": {
          "pageNumber": {
            "type": "integer",
            "description": "The page number to return",
            "format": "int32",
            "nullable": true,
            "example": 1
          },
          "sortBy": {
            "type": "string",
            "description": "A valid column to sort by",
            "nullable": true,
            "example": ""
          },
          "sortDirection": {
            "type": "string",
            "description": "The sort direction, valid values are ASC or DESC",
            "nullable": true,
            "example": "ASC"
          },
          "startingAfter": {
            "type": "integer",
            "description": "optional A cursor to use in pagination. starting_after is an object ID that defines your place in the list. For example, if you make a list request and receive 100 objects, ending with obj_foo, your subsequent call can include starting_after=obj_foo to fetch the next page of the list.",
            "format": "int32",
            "nullable": true
          },
          "maxResults": {
            "type": "integer",
            "description": "Maximum number of opportunity entries to return per page. Defaults to 100.\r\nEach entry represents one opportunity; all of its history rows are included.",
            "format": "int32",
            "nullable": true,
            "example": 100
          },
          "opportunityId": {
            "type": "integer",
            "description": "Filter results to a specific opportunity.",
            "format": "int32",
            "nullable": true,
            "example": 5721
          },
          "updatedAfter": {
            "type": "string",
            "description": "Return only records where ChangeDateUtc is after this value.",
            "format": "date-time",
            "nullable": true,
            "example": "2026-06-16T16:56:00"
          },
          "status": {
            "type": "string",
            "description": "Filter by change action type. Valid values: INSERT, UPDATE, DELETE.",
            "nullable": true,
            "example": "UPDATE"
          },
          "onlyShifts": {
            "type": "boolean",
            "description": "When true, only OPPORTUNITY_SHIFT history rows are returned and\r\nResourceUtilisations are left unpopulated on each shift.",
            "example": false
          }
        },
        "additionalProperties": false,
        "description": "Request DTO for the Shifts paged search endpoint."
      },
      "ShiftEntryDto": {
        "type": "object",
        "properties": {
          "opportunityId": {
            "type": "integer",
            "description": "The opportunity (job/project) ID.",
            "format": "int32"
          },
          "shiftPattern": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ShiftHistoryWeekPatternDto"
            },
            "description": "Shift pattern for this opportunity over the most recent 8 weeks that have scheduled shifts.\r\nEach entry covers one ISO week (Mon–Sun) and includes the days worked that week.",
            "nullable": true
          },
          "shifts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ShiftHistoryDto"
            },
            "description": "Individual shift change entries for this opportunity.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Shift change history for a single opportunity."
      },
      "ShiftHistoryDto": {
        "type": "object",
        "properties": {
          "shiftId": {
            "type": "integer",
            "description": "The opportunity shift identifier.",
            "format": "int32"
          },
          "shiftDate": {
            "type": "string",
            "description": "The date of this shift.",
            "format": "date",
            "nullable": true
          },
          "startTime": {
            "type": "string",
            "description": "Shift start time (e.g. \"09:00\").",
            "nullable": true
          },
          "endTime": {
            "type": "string",
            "description": "Shift end time (e.g. \"17:00\").",
            "nullable": true
          },
          "shiftStatus": {
            "type": "string",
            "description": "USED when at least one resource utilisation exists for this shift date; otherwise AVAILABLE.",
            "nullable": true
          },
          "changeAction": {
            "type": "string",
            "description": "The change action for this shift: INSERT, UPDATE, or DELETE.",
            "nullable": true
          },
          "changeDateUtc": {
            "type": "string",
            "description": "UTC timestamp of when this shift change was recorded.",
            "format": "date-time",
            "nullable": true
          },
          "numberOfPositions": {
            "type": "integer",
            "description": "Number of positions for this shift, extracted from the shift values JSON.",
            "format": "int32",
            "nullable": true
          },
          "resourceUtilisations": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ResourceUtilisationHistoryDto"
            },
            "description": "Resource utilisation change records associated with this shift date.\r\nEmpty when OnlyShifts is true.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "A single shift (identified by OpportunityShiftId) and its associated resource utilisation changes."
      },
      "ShiftHistoryWeekPatternDto": {
        "type": "object",
        "properties": {
          "weekStart": {
            "type": "string",
            "description": "Monday of this week.",
            "format": "date"
          },
          "weekEnd": {
            "type": "string",
            "description": "Sunday of this week.",
            "format": "date"
          },
          "pattern": {
            "type": "string",
            "description": "Concatenated 2-letter day abbreviations for every day in this week that has at least one shift.",
            "nullable": true,
            "example": "MoTuWeThFrSaSu"
          }
        },
        "additionalProperties": false,
        "description": "Weekly shift pattern for one ISO week."
      },
      "ShiftPagedSearchResponseDto": {
        "type": "object",
        "properties": {
          "pageNumber": {
            "type": "integer",
            "description": "Current page number (1-based)",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "description": "Number of items per page",
            "format": "int32"
          },
          "totalCount": {
            "type": "integer",
            "description": "Total number of skills matching the query",
            "format": "int32"
          },
          "totalPages": {
            "type": "integer",
            "description": "Total number of pages available",
            "format": "int32"
          },
          "hasNextPage": {
            "type": "boolean",
            "description": "Indicates if there are more pages after the current page"
          },
          "hasPreviousPage": {
            "type": "boolean",
            "description": "Indicates if there are pages before the current page"
          },
          "nextCursor": {
            "type": "integer",
            "description": "The largest OpportunityId in this page.\r\nPass this as startingAfter in the next request to fetch the next page.",
            "format": "int64",
            "nullable": true
          },
          "entries": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ShiftEntryDto"
            },
            "description": "Shift change history grouped by opportunity.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Paginated response for the Shifts paged search."
      },
      "ShiftSearchOpportunityDto": {
        "type": "object",
        "properties": {
          "opportunityId": {
            "type": "integer",
            "description": "The opportunity (job) these shifts belong to.",
            "format": "int32",
            "example": 5721
          },
          "shifts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ShiftSearchShiftDto"
            },
            "description": "The shifts on this opportunity that match the search criteria.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "The matching shifts for a single opportunity."
      },
      "ShiftSearchPagedSearchResponseDto": {
        "type": "object",
        "properties": {
          "pageNumber": {
            "type": "integer",
            "description": "Current page number (1-based)",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "description": "Number of items per page",
            "format": "int32"
          },
          "totalCount": {
            "type": "integer",
            "description": "Total number of skills matching the query",
            "format": "int32"
          },
          "totalPages": {
            "type": "integer",
            "description": "Total number of pages available",
            "format": "int32"
          },
          "hasNextPage": {
            "type": "boolean",
            "description": "Indicates if there are more pages after the current page"
          },
          "hasPreviousPage": {
            "type": "boolean",
            "description": "Indicates if there are pages before the current page"
          },
          "nextCursor": {
            "type": "integer",
            "description": "The largest OpportunityId in this page. Pass this as `startingAfter` on the next\r\nrequest to fetch the following page using fast keyset pagination.",
            "format": "int32",
            "nullable": true
          },
          "opportunities": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ShiftSearchOpportunityDto"
            },
            "description": "Matching shifts, grouped by the opportunity they belong to.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Paginated shift search results, grouped by opportunity."
      },
      "ShiftSearchRequestDto": {
        "type": "object",
        "properties": {
          "searchTerm": {
            "type": "string",
            "description": "Term to search for",
            "nullable": true,
            "example": "acme"
          },
          "maxResults": {
            "type": "integer",
            "description": "Maximum results per page",
            "format": "int32",
            "nullable": true,
            "example": 10
          },
          "pageNumber": {
            "type": "integer",
            "description": "The page number to return",
            "format": "int32",
            "nullable": true,
            "example": 1
          },
          "sortBy": {
            "type": "string",
            "description": "A valid column to sort by",
            "nullable": true,
            "example": ""
          },
          "sortDirection": {
            "type": "string",
            "description": "The sort direction, valid values are ASC or DESC",
            "nullable": true,
            "example": "ASC"
          },
          "startingAfter": {
            "type": "integer",
            "description": "optional A cursor to use in pagination. starting_after is an object ID that defines your place in the list. For example, if you make a list request and receive 100 objects, ending with obj_foo, your subsequent call can include starting_after=obj_foo to fetch the next page of the list.",
            "format": "int32",
            "nullable": true
          },
          "opportunityId": {
            "type": "integer",
            "description": "Optional. Return shifts for this opportunity only. When omitted, shifts across all\r\nopportunities are returned.",
            "format": "int32",
            "nullable": true,
            "example": 5721
          },
          "startDate": {
            "type": "string",
            "description": "Optional. Include only shifts on or after this date.",
            "format": "date",
            "nullable": true,
            "example": "2026-08-11"
          },
          "endDate": {
            "type": "string",
            "description": "Optional. Include only shifts on or before this date.",
            "format": "date",
            "nullable": true,
            "example": "2026-08-11"
          }
        },
        "additionalProperties": false,
        "description": "Request DTO for the shift search."
      },
      "ShiftSearchShiftDto": {
        "type": "object",
        "properties": {
          "shiftId": {
            "type": "integer",
            "description": "The shift identifier.",
            "format": "int32",
            "example": 123
          },
          "shiftDate": {
            "type": "string",
            "description": "The date this shift falls on.",
            "format": "date",
            "nullable": true,
            "example": "2026-06-16"
          },
          "startTime": {
            "type": "string",
            "description": "Start time, or null where none is recorded. An end time earlier than the start means\r\nthe shift runs past midnight and ends on the following day.",
            "format": "time",
            "nullable": true,
            "example": "09:00"
          },
          "endTime": {
            "type": "string",
            "description": "End time, or null where none is recorded.",
            "format": "time",
            "nullable": true,
            "example": "17:00"
          },
          "numberOfPositions": {
            "type": "integer",
            "description": "How many resources this shift is for.",
            "format": "int32",
            "example": 2
          },
          "numberOfPositionsAvailable": {
            "type": "integer",
            "description": "Positions still free right now: `NumberOfPositions` minus the confirmed\r\nutilisations (status 2) for this opportunity and date.",
            "format": "int32",
            "example": 1
          }
        },
        "additionalProperties": false,
        "description": "A single shift, with its current occupancy."
      },
      "ShiftStatus": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents a resolved utilisation status with its id and display name."
      },
      "ShortListDto": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "integer",
            "format": "int32"
          },
          "opportunityIds": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "description": "List of Opportunity Id's to add the resource on to",
            "nullable": true
          },
          "statusId": {
            "type": "integer",
            "description": "Status to set the resource at on the shortlist",
            "format": "int32"
          },
          "note": {
            "type": "string",
            "description": "Note against the shortlist entry",
            "nullable": true
          },
          "placementSource": {
            "type": "string",
            "description": "Placement Source",
            "nullable": true
          },
          "assignedByUserId": {
            "type": "integer",
            "description": "The Id of the user who assigned the resource to the shortlist",
            "format": "int32",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Short list transfer object"
      },
      "ShortListResource": {
        "type": "object",
        "properties": {
          "opportunityResourceId": {
            "type": "integer",
            "format": "int32"
          },
          "resourceId": {
            "type": "integer",
            "format": "int32"
          },
          "displayAs": {
            "type": "string",
            "nullable": true
          },
          "resourceStatusId": {
            "type": "integer",
            "format": "int32"
          },
          "opportunityResourceStatusId": {
            "type": "integer",
            "format": "int32"
          },
          "contractStartDate": {
            "type": "string",
            "nullable": true
          },
          "contractEndDate": {
            "type": "string",
            "nullable": true
          },
          "tagText": {
            "type": "string",
            "nullable": true
          },
          "isCompliant": {
            "type": "boolean"
          },
          "complianceInfo": {
            "type": "string",
            "nullable": true
          },
          "recordCategoryList": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/RecordCategoryInfo"
            },
            "nullable": true
          },
          "assignedByUserId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "overallScore": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "overrideScore": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "matchBand": {
            "type": "string",
            "nullable": true
          },
          "hasAlignmentReport": {
            "type": "boolean"
          },
          "effectiveAlignmentScore": {
            "type": "number",
            "format": "double",
            "nullable": true,
            "readOnly": true
          },
          "isAlignmentOverridden": {
            "type": "boolean",
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "SkillAreaDto": {
        "type": "object",
        "properties": {
          "skillAreaId": {
            "type": "integer",
            "description": "Unique identifier for the skill area",
            "format": "int32"
          },
          "skillCategoryId": {
            "type": "integer",
            "description": "Foreign key to the parent skill category",
            "format": "int32"
          },
          "skillAreaName": {
            "type": "string",
            "description": "Name of the skill area",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Skill area data transfer object"
      },
      "SkillCategoryDto": {
        "type": "object",
        "properties": {
          "skillCategoryId": {
            "type": "integer",
            "description": "Unique identifier for the skill category",
            "format": "int32"
          },
          "skillCategoryName": {
            "type": "string",
            "description": "Name of the skill category",
            "nullable": true
          },
          "department": {
            "type": "string",
            "description": "Department this skill category belongs to",
            "nullable": true
          },
          "skillAreas": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SkillAreaDto"
            },
            "description": "List of skill areas within this category (optional for lightweight queries)",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Skill category data transfer object"
      },
      "SkillDto": {
        "type": "object",
        "properties": {
          "skillId": {
            "type": "integer",
            "description": "Unique identifier for the skill",
            "format": "int32"
          },
          "skillAreaId": {
            "type": "integer",
            "description": "Foreign key to the parent skill area",
            "format": "int32"
          },
          "skillName": {
            "type": "string",
            "description": "Name of the skill",
            "nullable": true
          },
          "skillType": {
            "type": "string",
            "description": "Type classification of the skill",
            "nullable": true
          },
          "skillListId": {
            "type": "integer",
            "description": "List identifier for the skill (used for grouping or categorization)",
            "format": "int32"
          },
          "caseSensitive": {
            "type": "boolean",
            "description": "Indicates whether skill matching should be case sensitive"
          }
        },
        "additionalProperties": false,
        "description": "Individual skill data transfer object"
      },
      "SkillListDto": {
        "type": "object",
        "properties": {
          "skillListId": {
            "type": "integer",
            "description": "Unique identifier for the skill list",
            "format": "int32"
          },
          "skillListName": {
            "type": "string",
            "description": "Name of the skill list",
            "nullable": true
          },
          "values": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SkillListValueDto"
            },
            "description": "List of values associated with this skill list",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Skill list data transfer object containing its associated values"
      },
      "SkillListValueDto": {
        "type": "object",
        "properties": {
          "skillListId": {
            "type": "integer",
            "description": "Foreign key to the parent skill list",
            "format": "int32"
          },
          "skillValueId": {
            "type": "integer",
            "description": "Unique identifier for this skill value within the list",
            "format": "int32"
          },
          "skillValue": {
            "type": "string",
            "description": "The actual skill value/name",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Skill list value data transfer object"
      },
      "SkillsHierarchyResponseDto": {
        "type": "object",
        "properties": {
          "categories": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SkillCategoryDto"
            },
            "description": "List of skill categories containing their associated skill areas",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Response containing the complete skills hierarchy with categories and areas (without skills data for performance)"
      },
      "SkillsRequestDto": {
        "required": [
          "skills"
        ],
        "type": "object",
        "properties": {
          "skills": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/RecordSkillDto"
            },
            "description": "List of skills to be added or updated"
          }
        },
        "additionalProperties": false,
        "description": "Skills request object for managing multiple skills on a record"
      },
      "SkillsResponseDto": {
        "type": "object",
        "properties": {
          "skills": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/RecordSkillDto"
            },
            "description": "List of skills associated with the record",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Skills response object containing multiple skills for a record"
      },
      "SkillsSearchResponseDto": {
        "type": "object",
        "properties": {
          "pageNumber": {
            "type": "integer",
            "description": "Current page number (1-based)",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "description": "Number of items per page",
            "format": "int32"
          },
          "totalCount": {
            "type": "integer",
            "description": "Total number of skills matching the query",
            "format": "int32"
          },
          "totalPages": {
            "type": "integer",
            "description": "Total number of pages available",
            "format": "int32"
          },
          "hasNextPage": {
            "type": "boolean",
            "description": "Indicates if there are more pages after the current page"
          },
          "hasPreviousPage": {
            "type": "boolean",
            "description": "Indicates if there are pages before the current page"
          },
          "skills": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SkillDto"
            },
            "description": "List of skills in the current page",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Paginated response containing skills data with pagination metadata"
      },
      "Status": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "Id",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "description": "Name",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "The record's current status"
      },
      "StatusDescription": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "Id",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "description": "Name",
            "nullable": true
          },
          "description": {
            "type": "string",
            "description": "The optional description/hint.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "The record's current status"
      },
      "StatusMetadata": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "Id",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "description": "Name",
            "nullable": true
          },
          "state": {
            "type": "string",
            "description": "The status name or label (e.g., 'Open', 'Closed', '1st Interview', 'Converted', 'Qualified', 'Applied', 'Shortlisted', 'Placed Perm')",
            "nullable": true
          },
          "order": {
            "type": "integer",
            "description": "The display order for sorting statuses. Null values are typically sorted last.",
            "format": "int32",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Status reference data including state information and display ordering"
      },
      "StringRecordReference": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "For types that use a char as an identifier"
      },
      "Territory": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "Id",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "description": "Name",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "The territory to which a record belongs"
      },
      "TimesheetEntriesPagedSearchResponseDto": {
        "type": "object",
        "properties": {
          "pageNumber": {
            "type": "integer",
            "description": "Current page number (1-based)",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "description": "Number of items per page",
            "format": "int32"
          },
          "totalCount": {
            "type": "integer",
            "description": "Total number of skills matching the query",
            "format": "int32"
          },
          "totalPages": {
            "type": "integer",
            "description": "Total number of pages available",
            "format": "int32"
          },
          "hasNextPage": {
            "type": "boolean",
            "description": "Indicates if there are more pages after the current page"
          },
          "hasPreviousPage": {
            "type": "boolean",
            "description": "Indicates if there are pages before the current page"
          },
          "timesheetEntries": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TimesheetEntriesSearchResponseDto"
            },
            "description": "TimesheetEntries",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Paginated response containing timesheet entry data with pagination metadata"
      },
      "TimesheetEntriesRequestDto": {
        "type": "object",
        "properties": {
          "resourceId": {
            "type": "integer",
            "description": "The ID of the resource (employee) associated with the timesheet entry.",
            "format": "int32",
            "nullable": true
          },
          "projectId": {
            "type": "integer",
            "description": "The ID of the project associated with the timesheet entry.",
            "format": "int32",
            "nullable": true
          },
          "projectActivityId": {
            "type": "integer",
            "description": "The ID of the project activity linked to the timesheet entry.",
            "format": "int32",
            "nullable": true
          },
          "clientId": {
            "type": "integer",
            "description": "The ID of the client associated with the timesheet entry.",
            "format": "int32",
            "nullable": true
          },
          "entryDate": {
            "type": "string",
            "description": "The date of the timesheet entry (in string format, e.g., \"YYYY-MM-DD\").",
            "format": "date",
            "nullable": true
          },
          "hours": {
            "type": "number",
            "description": "The total hours worked during the timesheet entry.",
            "format": "double",
            "nullable": true
          },
          "billableHours": {
            "type": "number",
            "description": "The total billable hours worked during the timesheet entry.",
            "format": "double",
            "nullable": true
          },
          "entryNote": {
            "type": "string",
            "description": "Notes or comments about the timesheet entry.",
            "nullable": true
          },
          "approvalStatus": {
            "maxLength": 1,
            "minLength": 0,
            "type": "string",
            "description": "The approval status of the timesheet entry (e.g., \"A\" for approved).",
            "nullable": true
          },
          "billed": {
            "type": "boolean",
            "description": "Indicates whether the timesheet entry has been billed",
            "nullable": true
          },
          "billReference": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "A reference for billing purposes.",
            "nullable": true
          },
          "startTime1": {
            "type": "string",
            "description": "The start time of the first work period during the timesheet entry.",
            "format": "time",
            "nullable": true
          },
          "endTime1": {
            "type": "string",
            "description": "The end time of the first work period during the timesheet entry.",
            "format": "time",
            "nullable": true
          },
          "startTime2": {
            "type": "string",
            "description": "The start time of the second work period during the timesheet entry.",
            "format": "time",
            "nullable": true
          },
          "endTime2": {
            "type": "string",
            "description": "The end time of the second work period during the timesheet entry.",
            "format": "time",
            "nullable": true
          },
          "startTime3": {
            "type": "string",
            "description": "The start time of the third work period during the timesheet entry.",
            "format": "time",
            "nullable": true
          },
          "endTime3": {
            "type": "string",
            "description": "The end time of the third work period during the timesheet entry.",
            "format": "time",
            "nullable": true
          },
          "paid": {
            "type": "boolean",
            "description": "Indicates whether the timesheet entry has been paid",
            "nullable": true
          },
          "payReference": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "A reference for payment purposes.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "TimesheetEntriesResponseDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "The unique id of the timesheet entry.",
            "format": "int32"
          },
          "resourceId": {
            "type": "integer",
            "description": "The ID of the resource (employee) associated with the timesheet entry.",
            "format": "int32",
            "nullable": true
          },
          "projectId": {
            "type": "integer",
            "description": "The ID of the project associated with the timesheet entry.",
            "format": "int32",
            "nullable": true
          },
          "projectActivityId": {
            "type": "integer",
            "description": "The ID of the project activity linked to the timesheet entry.",
            "format": "int32",
            "nullable": true
          },
          "clientId": {
            "type": "integer",
            "description": "The ID of the client associated with the timesheet entry.",
            "format": "int32",
            "nullable": true
          },
          "entryDate": {
            "type": "string",
            "description": "The date of the timesheet entry (in string format, e.g., \"YYYY-MM-DD\").",
            "format": "date",
            "nullable": true
          },
          "hours": {
            "type": "number",
            "description": "The total hours worked during the timesheet entry.",
            "format": "double",
            "nullable": true
          },
          "billableHours": {
            "type": "number",
            "description": "The total billable hours worked during the timesheet entry.",
            "format": "double",
            "nullable": true
          },
          "entryNote": {
            "type": "string",
            "description": "Notes or comments about the timesheet entry.",
            "nullable": true
          },
          "activityProgress": {
            "type": "string",
            "description": "The progress of the activity associated with the timesheet entry.",
            "nullable": true
          },
          "approvalStatus": {
            "type": "string",
            "description": "The approval status of the timesheet entry (e.g., \"A\" for approved).",
            "nullable": true
          },
          "billed": {
            "type": "boolean",
            "description": "Indicates whether the timesheet entry has been billed (\"Y\" or \"N\").",
            "nullable": true
          },
          "billReference": {
            "type": "string",
            "description": "A reference for billing purposes.",
            "nullable": true
          },
          "startTime1": {
            "type": "string",
            "description": "The start time of the first work period during the timesheet entry.",
            "format": "time",
            "nullable": true
          },
          "endTime1": {
            "type": "string",
            "description": "The end time of the first work period during the timesheet entry.",
            "format": "time",
            "nullable": true
          },
          "startTime2": {
            "type": "string",
            "description": "The start time of the second work period during the timesheet entry.",
            "format": "time",
            "nullable": true
          },
          "endTime2": {
            "type": "string",
            "description": "The end time of the second work period during the timesheet entry.",
            "format": "time",
            "nullable": true
          },
          "startTime3": {
            "type": "string",
            "description": "The start time of the third work period during the timesheet entry.",
            "format": "time",
            "nullable": true
          },
          "endTime3": {
            "type": "string",
            "description": "The end time of the third work period during the timesheet entry.",
            "format": "time",
            "nullable": true
          },
          "paid": {
            "type": "boolean",
            "description": "Indicates whether the timesheet entry has been paid (\"Y\" or \"N\").",
            "nullable": true
          },
          "payReference": {
            "type": "string",
            "description": "A reference for payment purposes.",
            "nullable": true
          },
          "associations": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Associations"
              }
            ],
            "description": "Records associated with this invoice",
            "nullable": true
          },
          "history": {
            "allOf": [
              {
                "$ref": "#/components/schemas/RecordHistory"
              }
            ],
            "description": "Historical imformation for the entries",
            "nullable": true
          },
          "approvalDateTime": {
            "type": "string",
            "description": "The approval date time",
            "format": "date-time",
            "nullable": true
          },
          "approvedBy": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Approver"
              }
            ],
            "description": "The approver",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents a single time sheet entry record"
      },
      "TimesheetEntriesSearchRequestDto": {
        "type": "object",
        "properties": {
          "maxResults": {
            "type": "integer",
            "description": "Maximum results per page",
            "format": "int32",
            "nullable": true,
            "example": 10
          },
          "pageNumber": {
            "type": "integer",
            "description": "The page number to return",
            "format": "int32",
            "nullable": true,
            "example": 1
          },
          "sortBy": {
            "type": "string",
            "description": "A valid column to sort by",
            "nullable": true,
            "example": ""
          },
          "sortDirection": {
            "type": "string",
            "description": "The sort direction, valid values are ASC or DESC",
            "nullable": true,
            "example": "ASC"
          },
          "status": {
            "type": "string",
            "description": "Include only records whose status matches this status",
            "nullable": true,
            "example": "open"
          },
          "dateFrom": {
            "type": "string",
            "description": "Only records from date",
            "format": "date",
            "nullable": true
          },
          "dateTo": {
            "type": "string",
            "description": "Only records to date",
            "format": "date",
            "nullable": true
          },
          "resourceId": {
            "type": "integer",
            "description": "Include only records for this recordid",
            "format": "int32",
            "nullable": true
          },
          "clientId": {
            "type": "integer",
            "description": "Include only records for this recordid",
            "format": "int32",
            "nullable": true
          },
          "projectId": {
            "type": "integer",
            "description": "Include only records for this recordid",
            "format": "int32",
            "nullable": true
          },
          "isPaid": {
            "type": "boolean",
            "description": "Include only records dependant on paid status",
            "nullable": true
          },
          "rateToUse": {
            "type": "string",
            "description": "The Project Activity Rate To Use",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "TimesheetEntriesSearchResponseDto": {
        "type": "object",
        "properties": {
          "projectId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "resourceId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "clientId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "entryId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "opportunityResourceId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "taskId": {
            "type": "integer",
            "description": "This is the Project Activity Id",
            "format": "int32",
            "nullable": true
          },
          "taskName": {
            "type": "string",
            "description": "This is the Project Activity Name",
            "nullable": true
          },
          "entryDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "timeBooked": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "status": {
            "type": "string",
            "nullable": true
          },
          "checkInTime": {
            "type": "string",
            "format": "time",
            "nullable": true
          },
          "checkOutTime": {
            "type": "string",
            "format": "time",
            "nullable": true
          },
          "firstBreakInTime": {
            "type": "string",
            "format": "time",
            "nullable": true
          },
          "firstBreakOutTime": {
            "type": "string",
            "format": "time",
            "nullable": true
          },
          "secondBreakInTime": {
            "type": "string",
            "format": "time",
            "nullable": true
          },
          "secondBreakOutTime": {
            "type": "string",
            "format": "time",
            "nullable": true
          },
          "note": {
            "type": "string",
            "nullable": true
          },
          "billed": {
            "type": "boolean",
            "nullable": true
          },
          "billReference": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "paid": {
            "type": "boolean",
            "nullable": true
          },
          "paidReference": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "entryType": {
            "type": "string",
            "nullable": true
          },
          "approvalContactId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "approvalReport": {
            "type": "string",
            "nullable": true
          },
          "approvalRequestDate": {
            "type": "string",
            "format": "date",
            "nullable": true
          },
          "approvalRequestTime": {
            "type": "string",
            "format": "time",
            "nullable": true
          },
          "approvalRequestUserId": {
            "type": "integer",
            "description": "The user ID who requested the approval",
            "format": "int32",
            "nullable": true
          },
          "approvalStatus": {
            "type": "string",
            "nullable": true
          },
          "approvalDateTime": {
            "type": "string",
            "description": "The approval date and time",
            "format": "date-time",
            "nullable": true
          },
          "rateToUse": {
            "type": "string",
            "description": "This is the Project Activity Rate To Use",
            "nullable": true
          },
          "taskPayRate": {
            "type": "number",
            "description": "This is the Project Activity Pay Rate",
            "format": "double",
            "nullable": true
          },
          "placementPayRate": {
            "type": "number",
            "description": "This is the Placement Pay Rate ('Standard' Placement Rate)",
            "format": "double",
            "nullable": true
          },
          "approvedByRecordId": {
            "type": "integer",
            "description": "The approved by record identifier",
            "format": "int32",
            "nullable": true
          },
          "approvedByRecordType": {
            "type": "string",
            "description": "The type of the approved by record",
            "nullable": true
          },
          "approvedByName": {
            "type": "string",
            "description": "The name of the approver",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "TokenRequest": {
        "type": "object",
        "properties": {
          "bearerToken": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "UpdatedResponseDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "success": {
            "type": "boolean"
          },
          "message": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "UserAlertRequestDto": {
        "type": "object",
        "properties": {
          "userIds": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "nullable": true
          },
          "subject": {
            "type": "string",
            "nullable": true
          },
          "note": {
            "type": "string",
            "nullable": true
          },
          "alertDateTime": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "contactId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "clientId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "resourceId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "opportunityId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "campaignId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "projectId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "referenceId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "ticketId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "leadId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "UserAlertResponseDto": {
        "type": "object",
        "properties": {
          "alertsCreated": {
            "type": "integer",
            "format": "int32"
          },
          "alertIds": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "nullable": true
          },
          "notifiedUserIds": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "UserOwner": {
        "type": "object",
        "properties": {
          "ownerId": {
            "type": "integer",
            "description": "Owner identifier",
            "format": "int32"
          }
        },
        "additionalProperties": false,
        "description": "Details for a user assigned to a record"
      },
      "UserPagedSearchResponseDto": {
        "type": "object",
        "properties": {
          "pageNumber": {
            "type": "integer",
            "description": "Current page number (1-based)",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "description": "Number of items per page",
            "format": "int32"
          },
          "totalCount": {
            "type": "integer",
            "description": "Total number of skills matching the query",
            "format": "int32"
          },
          "totalPages": {
            "type": "integer",
            "description": "Total number of pages available",
            "format": "int32"
          },
          "hasNextPage": {
            "type": "boolean",
            "description": "Indicates if there are more pages after the current page"
          },
          "hasPreviousPage": {
            "type": "boolean",
            "description": "Indicates if there are pages before the current page"
          },
          "users": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/UserSearchResponseDto"
            },
            "description": "Users",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Paginated response containing user data with pagination metadata"
      },
      "UserResponseDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "The user's unique identifier",
            "format": "int32"
          },
          "username": {
            "type": "string",
            "description": "The user's login username",
            "nullable": true
          },
          "fullname": {
            "type": "string",
            "description": "The user's full display name",
            "nullable": true
          },
          "email": {
            "type": "string",
            "description": "The user's email address",
            "nullable": true
          },
          "userGroup": {
            "allOf": [
              {
                "$ref": "#/components/schemas/RecordReference"
              }
            ],
            "description": "The user's user group information",
            "nullable": true
          },
          "department": {
            "allOf": [
              {
                "$ref": "#/components/schemas/RecordReference"
              }
            ],
            "description": "The user's department information",
            "nullable": true
          },
          "territory": {
            "allOf": [
              {
                "$ref": "#/components/schemas/RecordReference"
              }
            ],
            "description": "The user's territory information",
            "nullable": true
          },
          "userTeam": {
            "allOf": [
              {
                "$ref": "#/components/schemas/RecordReference"
              }
            ],
            "description": "The user's team information",
            "nullable": true
          },
          "timezone": {
            "allOf": [
              {
                "$ref": "#/components/schemas/RecordReference"
              }
            ],
            "description": "The user's timezone information",
            "nullable": true
          },
          "timezoneOffset": {
            "type": "number",
            "description": "The timezone offset in hours from UTC",
            "format": "double"
          },
          "lastLogon": {
            "type": "string",
            "description": "The user's last logon date and time",
            "format": "date-time",
            "nullable": true
          },
          "employeeNumber": {
            "type": "string",
            "description": "The user's employee number",
            "nullable": true
          },
          "jobTitle": {
            "type": "string",
            "description": "The user's job title",
            "nullable": true
          },
          "telephone": {
            "type": "string",
            "description": "The user's telephone",
            "nullable": true
          },
          "mobilePhone": {
            "type": "string",
            "description": "The user's mobile phone",
            "nullable": true
          },
          "photo": {
            "allOf": [
              {
                "$ref": "#/components/schemas/FileContentResponseDto"
              }
            ],
            "description": "The user's photo (base64).",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents a single user record"
      },
      "UserSearchResponseDto": {
        "type": "object",
        "properties": {
          "userId": {
            "type": "integer",
            "format": "int32"
          },
          "username": {
            "type": "string",
            "nullable": true
          },
          "fullName": {
            "type": "string",
            "nullable": true
          },
          "email": {
            "type": "string",
            "nullable": true
          },
          "departmentName": {
            "type": "string",
            "nullable": true
          },
          "userGroupName": {
            "type": "string",
            "nullable": true
          },
          "territoryName": {
            "type": "string",
            "nullable": true
          },
          "userTeamName": {
            "type": "string",
            "nullable": true
          },
          "timezoneOffset": {
            "type": "number",
            "format": "double"
          },
          "timezoneName": {
            "type": "string",
            "nullable": true
          },
          "lastLogon": {
            "type": "string",
            "format": "date-time",
            "nullable": true,
            "readOnly": true
          },
          "employeeNumber": {
            "type": "string",
            "nullable": true
          },
          "lastLogonTS": {
            "type": "string",
            "nullable": true
          },
          "jobTitle": {
            "type": "string",
            "nullable": true
          },
          "telephone": {
            "type": "string",
            "nullable": true
          },
          "mobilePhone": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "UtilisationRequestDto": {
        "type": "object",
        "properties": {
          "shiftId": {
            "type": "integer",
            "description": "Optional. The shift this utilisation belongs to. When supplied, the shift must\r\nexist, must fall on the same date as the utilisation, and must have a position\r\nfree. A utilisation may exist without a shift, so omitting this skips those checks.",
            "format": "int32",
            "nullable": true,
            "example": 123
          },
          "resourceId": {
            "type": "integer",
            "description": "The resource (candidate) being booked. Required on create. A utilisation cannot be\r\nmoved to a different resource, so on update this may only repeat the current value.",
            "format": "int32",
            "nullable": true,
            "example": 42
          },
          "opportunityId": {
            "type": "integer",
            "description": "The opportunity (job) being booked onto. Required on create. A utilisation cannot be\r\nmoved to a different opportunity, so on update this may only repeat the current value.",
            "format": "int32",
            "nullable": true,
            "example": 5721
          },
          "shiftStartDateTime": {
            "type": "string",
            "description": "Combined start date and time. The date part determines the utilisation date.",
            "format": "date-time",
            "nullable": true,
            "example": "2026-03-10T09:00:00"
          },
          "shiftEndDateTime": {
            "type": "string",
            "description": "Combined end date and time. Must be later than the start, and less than 24 hours\r\nafter it. For an overnight shift this falls on the following day; only the time part\r\nis stored against the utilisation, so a longer span cannot be represented.",
            "format": "date-time",
            "nullable": true,
            "example": "2026-03-10T17:00:00"
          },
          "billableHours": {
            "type": "number",
            "description": "Billable hours for the utilisation. Omitted on an update leaves the current value.",
            "format": "double",
            "nullable": true,
            "example": 8
          },
          "shiftStatus": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ShiftStatus"
              }
            ],
            "description": "Optional. The utilisation status, as published by /api/v1/MetaData/Shifts. Only\r\nthe id is used. Defaults to 8 (Proposed) when omitted, matching the Shift Planner.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request payload for creating or updating a utilisation record."
      },
      "UtilisationResponseDto": {
        "type": "object",
        "properties": {
          "utilisationId": {
            "type": "integer",
            "description": "The utilisation unique ID.",
            "format": "int32"
          },
          "resourceId": {
            "type": "integer",
            "description": "The resource (candidate) ID.",
            "format": "int32"
          },
          "opportunityId": {
            "type": "integer",
            "description": "The opportunity (job/project) ID.",
            "format": "int32"
          },
          "shiftStartDateTime": {
            "type": "string",
            "description": "Combined shift start date and time.",
            "format": "date-time",
            "nullable": true
          },
          "shiftEndDateTime": {
            "type": "string",
            "description": "Combined shift end date and time. For an overnight shift this falls on the day after\r\nshiftStartDateTime: only a date and two times are held against a utilisation, so an\r\nend time earlier than the start time is taken to mean the shift runs past midnight.\r\nWhere no end time is recorded, this is the utilisation date at midnight.",
            "format": "date-time",
            "nullable": true
          },
          "billableHours": {
            "type": "number",
            "description": "Billable hours for the shift.",
            "format": "double"
          },
          "shiftStatus": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ShiftStatus"
              }
            ],
            "description": "The utilisation status id and resolved name.",
            "nullable": true
          },
          "placementWarning": {
            "type": "string",
            "description": "Set only when a confirmed utilisation was written but the related placement could\r\nnot be promoted to Working, which happens when the resource does not meet the\r\nopportunity's compliance requirements. The utilisation itself was created; it is\r\nthe placement that was left alone, matching what the Shift Planner does.\r\nOmitted from the response entirely when there is nothing to report.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents a single shift entry for an opportunity resource assignment."
      },
      "UtilisationSearchPagedSearchResponseDto": {
        "type": "object",
        "properties": {
          "pageNumber": {
            "type": "integer",
            "description": "Current page number (1-based)",
            "format": "int32"
          },
          "pageSize": {
            "type": "integer",
            "description": "Number of items per page",
            "format": "int32"
          },
          "totalCount": {
            "type": "integer",
            "description": "Total number of skills matching the query",
            "format": "int32"
          },
          "totalPages": {
            "type": "integer",
            "description": "Total number of pages available",
            "format": "int32"
          },
          "hasNextPage": {
            "type": "boolean",
            "description": "Indicates if there are more pages after the current page"
          },
          "hasPreviousPage": {
            "type": "boolean",
            "description": "Indicates if there are pages before the current page"
          },
          "utilisations": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/UtilisationSearchResponseDto"
            },
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Paginated response with pagination metadata"
      },
      "UtilisationSearchRequestDto": {
        "type": "object",
        "properties": {
          "searchTerm": {
            "type": "string",
            "description": "Term to search for",
            "nullable": true,
            "example": "acme"
          },
          "maxResults": {
            "type": "integer",
            "description": "Maximum results per page",
            "format": "int32",
            "nullable": true,
            "example": 10
          },
          "pageNumber": {
            "type": "integer",
            "description": "The page number to return",
            "format": "int32",
            "nullable": true,
            "example": 1
          },
          "sortBy": {
            "type": "string",
            "description": "A valid column to sort by",
            "nullable": true,
            "example": ""
          },
          "sortDirection": {
            "type": "string",
            "description": "The sort direction, valid values are ASC or DESC",
            "nullable": true,
            "example": "ASC"
          },
          "startingAfter": {
            "type": "integer",
            "description": "optional A cursor to use in pagination. starting_after is an object ID that defines your place in the list. For example, if you make a list request and receive 100 objects, ending with obj_foo, your subsequent call can include starting_after=obj_foo to fetch the next page of the list.",
            "format": "int32",
            "nullable": true
          },
          "startDateTime": {
            "type": "string",
            "description": "Include only records with a start date/time on or after this value",
            "format": "date-time",
            "nullable": true,
            "example": "2024-01-01T00:00:00"
          },
          "endDateTime": {
            "type": "string",
            "description": "Include only records with an end date/time on or before this value",
            "format": "date-time",
            "nullable": true,
            "example": "2024-12-31T23:59:59"
          },
          "resourceId": {
            "type": "integer",
            "description": "Include only records assigned to this resource",
            "format": "int32",
            "nullable": true,
            "example": 42
          },
          "opportunityId": {
            "type": "integer",
            "description": "Include only records associated with this opportunity",
            "format": "int32",
            "nullable": true,
            "example": 101
          },
          "status": {
            "type": "integer",
            "description": "Include only records whose status matches this value",
            "format": "int32",
            "nullable": true,
            "example": 1
          }
        },
        "additionalProperties": false
      },
      "UtilisationSearchResponseDto": {
        "type": "object",
        "properties": {
          "utilisationId": {
            "type": "integer",
            "description": "The utilisation unique ID.",
            "format": "int32"
          },
          "opportunityResourceId": {
            "type": "integer",
            "description": "The opportunityresource, placement identifier.",
            "format": "int32"
          },
          "resourceId": {
            "type": "integer",
            "description": "The resource (candidate) ID.",
            "format": "int32"
          },
          "opportunityId": {
            "type": "integer",
            "description": "The opportunity (job/project) ID.",
            "format": "int32"
          },
          "shiftStartDateTime": {
            "type": "string",
            "description": "Combined shift start date and time.",
            "format": "date-time",
            "nullable": true
          },
          "shiftEndDateTime": {
            "type": "string",
            "description": "Combined shift end date and time.",
            "format": "date-time",
            "nullable": true
          },
          "billableHours": {
            "type": "number",
            "description": "Billable hours for the shift.",
            "format": "double"
          },
          "shiftStatusId": {
            "type": "integer",
            "description": "The utilisation status id. See /UtilisationStatuses for resolved names.",
            "format": "int32",
            "nullable": true
          },
          "shiftStatus": {
            "type": "string",
            "description": "The utilisation status..",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents a single utilisation record returned from a search."
      },
      "WebhookMetaData": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "action": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Our meta data"
      },
      "WebhookRequestDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "url": {
            "type": "string",
            "nullable": true
          },
          "action": {
            "type": "string",
            "nullable": true
          },
          "recordType": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents webhook information for post"
      },
      "WebhookResponseDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "userId": {
            "type": "integer",
            "format": "int32"
          },
          "url": {
            "type": "string",
            "nullable": true
          },
          "recordType": {
            "type": "string",
            "nullable": true
          },
          "action": {
            "type": "string",
            "nullable": true
          },
          "created": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "updated": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents webhook information"
      },
      "WorkTypeLink": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "Id",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "description": "Name",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "A link to a work type"
      }
    },
    "securitySchemes": {
      "Bearer": {
        "type": "http",
        "description": "Please enter a valid token",
        "scheme": "Bearer",
        "bearerFormat": "JWT"
      }
    }
  },
  "security": [
    {
      "Bearer": [ ]
    }
  ],
  "tags": [
    {
      "name": "Activity",
      "description": "Activities log events that have taken place (like phone calls, email sends, interviews and tasks)."
    },
    {
      "name": "Audit",
      "description": "Provides access to the user action audit trail stored in UserHistory."
    },
    {
      "name": "Auth",
      "description": "A JWT token is required for all API calls. Authenticate via OAuth2 API\r\nthen exchange the token for a JWT.\r\n\r\nJWT tokens must be passed to all API calls in the 'Authorization' header."
    },
    {
      "name": "Client",
      "description": "Clients represent other companies and businesses with which you have a relationship."
    },
    {
      "name": "Contact",
      "description": "Contacts represent people with which you have a relationship."
    },
    {
      "name": "CustomFields",
      "description": "Custom field lists handling"
    },
    {
      "name": "Expense",
      "description": "Expenses"
    },
    {
      "name": "Invoice",
      "description": "Invoice records represent invoices raised in your database."
    },
    {
      "name": "Lead",
      "description": "Leads represent sales leads."
    },
    {
      "name": "MetaData",
      "description": "Obtain all the core access rights, naming conventions, statues, types, sources and teams for a given user."
    },
    {
      "name": "Opportunity",
      "description": "Opportunities represent business opportunities such as jobs."
    },
    {
      "name": "OpportunityResource",
      "description": "OpportunityResources represent placements - resources that are shortlisted or placed on opportunities."
    },
    {
      "name": "PartnerRecord",
      "description": "PartnerRecords represent mappings between records in external systems and internal records"
    },
    {
      "name": "ProjectActivity",
      "description": "Project Activity represent tasks linked to a project. On which resources are assigned"
    },
    {
      "name": "ProjectActivityResource",
      "description": "Project Activity represent tasks linked to a project. On which resources are assigned"
    },
    {
      "name": "Project",
      "description": "Projects represent projects on which your resources are working."
    },
    {
      "name": "RecordCategory",
      "description": "Record Category represents a category that can be applied to a record (such as an Opportunity Resource)"
    },
    {
      "name": "Resource",
      "description": "Resources represent people (like candidates and employees) in your database."
    },
    {
      "name": "Screening",
      "description": "Screening endpoints for interview templates and questions."
    },
    {
      "name": "SendList",
      "description": "Send lists (also known as 'hot lists') are collections of contacts and/or resources that are used when sending campaigns"
    },
    {
      "name": "SendListPeople",
      "description": "Send list people are the contacts or resources associated with a send list (also known as 'hot list')"
    },
    {
      "name": "Shift",
      "description": "Shifts represent the bookable slots on an opportunity - a date, a start and end time,\r\nand a number of positions. Resources are booked onto them as utilisations."
    },
    {
      "name": "TimesheetEntries",
      "description": "Timesheet entries records represent timesheets records raised in your database."
    },
    {
      "name": "Utilisation",
      "description": "Utilisation represent individual utilisation entries linked\r\nto an opportunity resource (placement)."
    },
    {
      "name": "Webhook",
      "description": "Webhooks provide real time updates when activities and records are created, updated and deleted."
    },
    {
      "name": "User",
      "description": "Users represent system users."
    }
  ]
}