{"openapi":"3.0.1","info":{"title":"Core API","description":"An API that allows users to programmatically interface with ScalePad core data and services.","termsOfService":"https://app.scalepad.com/pages/terms","contact":{"name":"support","email":"support@scalepad.com"},"version":"v1","x-group":"core"},"servers":[{"url":"https://api.scalepad.com"}],"paths":{"/core/v1/assets/hardware":{"get":{"tags":["Hardware Assets"],"summary":"List Hardware Assets","description":"This endpoint retrieves a detailed list of hardware assets. The endpoint supports filtering and sorting based on various criteria.\r\n            \r\nA hardware asset is an active physical device for a client managed by the MSP, enriched with information such as the associated client, assigned contact and other device-specific details.","operationId":"list-hardware-assets","parameters":[{"name":"filter[id]","in":"query","description":"Filters records by using a query string on the field `id`.\n\nSupports comparison operators: `eq`, `in`.\n\nQuery examples:\n\n\n* `filter[id]=example_value` - to filter for exact match.\n\n \n* `filter[id]=eq:example_value` - to filter for exact match.\n\n \n* `filter[id]=in:example_value_1,example_value_2,example_value_3` - to filter when any item in the list matches.\n\n","schema":{"type":"string"},"example":"eq:example_value"},{"name":"filter[name]","in":"query","description":"Filters records by using a query string on the field `name`.\n\nSupports comparison operators: `eq`, `in`, `cont`.\n\nQuery examples:\n\n\n* `filter[name]=example_value` - to filter for exact match.\n\n \n* `filter[name]=eq:example_value` - to filter for exact match.\n\n \n* `filter[name]=in:example_value_1,example_value_2,example_value_3` - to filter when any item in the list matches.\n\n \n* `filter[name]=cont:word` - to filter using a partial match.\n\n","schema":{"type":"string"},"example":"eq:example_value"},{"name":"filter[client.id]","in":"query","description":"Filters records by using a query string on the field `client.id`.\n\nSupports comparison operators: `eq`, `in`.\n\nQuery examples:\n\n\n* `filter[client.id]=example_value` - to filter for exact match.\n\n \n* `filter[client.id]=eq:example_value` - to filter for exact match.\n\n \n* `filter[client.id]=in:example_value_1,example_value_2,example_value_3` - to filter when any item in the list matches.\n\n","schema":{"type":"string"},"example":"eq:example_value"},{"name":"filter[client.name]","in":"query","description":"Filters records by using a query string on the field `client.name`.\n\nSupports comparison operators: `eq`, `in`, `cont`.\n\nQuery examples:\n\n\n* `filter[client.name]=example_value` - to filter for exact match.\n\n \n* `filter[client.name]=eq:example_value` - to filter for exact match.\n\n \n* `filter[client.name]=in:example_value_1,example_value_2,example_value_3` - to filter when any item in the list matches.\n\n \n* `filter[client.name]=cont:word` - to filter using a partial match.\n\n","schema":{"type":"string"},"example":"eq:example_value"},{"name":"filter[contact.id]","in":"query","description":"Filters records by using a query string on the field `contact.id`.\n\nSupports comparison operators: `eq`, `in`.\n\nQuery examples:\n\n\n* `filter[contact.id]=example_value` - to filter for exact match.\n\n \n* `filter[contact.id]=eq:example_value` - to filter for exact match.\n\n \n* `filter[contact.id]=in:example_value_1,example_value_2,example_value_3` - to filter when any item in the list matches.\n\n","schema":{"type":"string"},"example":"eq:example_value"},{"name":"filter[manufacturer.id]","in":"query","description":"Filters records by using a query string on the field `manufacturer.id`.\n\nSupports comparison operators: `eq`, `in`.\n\nQuery examples:\n\n\n* `filter[manufacturer.id]=example_value` - to filter for exact match.\n\n \n* `filter[manufacturer.id]=eq:example_value` - to filter for exact match.\n\n \n* `filter[manufacturer.id]=in:example_value_1,example_value_2,example_value_3` - to filter when any item in the list matches.\n\n","schema":{"type":"string"},"example":"eq:example_value"},{"name":"filter[manufacturer.name]","in":"query","description":"Filters records by using a query string on the field `manufacturer.name`.\n\nSupports comparison operators: `eq`, `in`, `cont`.\n\nQuery examples:\n\n\n* `filter[manufacturer.name]=example_value` - to filter for exact match.\n\n \n* `filter[manufacturer.name]=eq:example_value` - to filter for exact match.\n\n \n* `filter[manufacturer.name]=in:example_value_1,example_value_2,example_value_3` - to filter when any item in the list matches.\n\n \n* `filter[manufacturer.name]=cont:word` - to filter using a partial match.\n\n","schema":{"type":"string"},"example":"eq:example_value"},{"name":"filter[model.number]","in":"query","description":"Filters records by using a query string on the field `model.number`.\n\nSupports comparison operators: `eq`, `in`, `cont`.\n\nQuery examples:\n\n\n* `filter[model.number]=example_value` - to filter for exact match.\n\n \n* `filter[model.number]=eq:example_value` - to filter for exact match.\n\n \n* `filter[model.number]=in:example_value_1,example_value_2,example_value_3` - to filter when any item in the list matches.\n\n \n* `filter[model.number]=cont:word` - to filter using a partial match.\n\n","schema":{"type":"string"},"example":"eq:example_value"},{"name":"filter[serial_number]","in":"query","description":"Filters records by using a query string on the field `serial_number`.\n\nSupports comparison operators: `eq`, `in`.\n\nQuery examples:\n\n\n* `filter[serial_number]=example_value` - to filter for exact match.\n\n \n* `filter[serial_number]=eq:example_value` - to filter for exact match.\n\n \n* `filter[serial_number]=in:example_value_1,example_value_2,example_value_3` - to filter when any item in the list matches.\n\n","schema":{"type":"string"},"example":"eq:example_value"},{"name":"filter[type]","in":"query","description":"Filters records by using a query string on the field `type`.\n\n\n\n*Possible values*: `WORKSTATION`, `IMAGING`, `SERVER`, `NETWORK`, `MOBILE`, `VIRTUAL`.\n\n\n\nSupports comparison operators: `eq`, `in`.\n\nQuery examples:\n\n\n* `filter[type]=WORKSTATION` - to filter for exact match.\n\n \n* `filter[type]=eq:WORKSTATION` - to filter for exact match.\n\n \n* `filter[type]=in:WORKSTATION,IMAGING,SERVER` - to filter when any item in the list matches.\n\n","schema":{"type":"string"},"example":"eq:example_value"},{"name":"filter[location_name]","in":"query","description":"Filters records by using a query string on the field `location_name`.\n\nSupports comparison operators: `eq`, `in`, `cont`.\n\nQuery examples:\n\n\n* `filter[location_name]=example_value` - to filter for exact match.\n\n \n* `filter[location_name]=eq:example_value` - to filter for exact match.\n\n \n* `filter[location_name]=in:example_value_1,example_value_2,example_value_3` - to filter when any item in the list matches.\n\n \n* `filter[location_name]=cont:word` - to filter using a partial match.\n\n","schema":{"type":"string"},"example":"eq:example_value"},{"name":"filter[configuration.cpu.name]","in":"query","description":"Filters records by using a query string on the field `configuration.cpu.name`.\n\nSupports comparison operators: `eq`, `in`.\n\nQuery examples:\n\n\n* `filter[configuration.cpu.name]=example_value` - to filter for exact match.\n\n \n* `filter[configuration.cpu.name]=eq:example_value` - to filter for exact match.\n\n \n* `filter[configuration.cpu.name]=in:example_value_1,example_value_2,example_value_3` - to filter when any item in the list matches.\n\n","schema":{"type":"string"},"example":"eq:example_value"},{"name":"filter[configuration.cpu.manufacturer_name]","in":"query","description":"Filters records by using a query string on the field `configuration.cpu.manufacturer_name`.\n\nSupports comparison operators: `eq`, `in`, `cont`.\n\nQuery examples:\n\n\n* `filter[configuration.cpu.manufacturer_name]=example_value` - to filter for exact match.\n\n \n* `filter[configuration.cpu.manufacturer_name]=eq:example_value` - to filter for exact match.\n\n \n* `filter[configuration.cpu.manufacturer_name]=in:example_value_1,example_value_2,example_value_3` - to filter when any item in the list matches.\n\n \n* `filter[configuration.cpu.manufacturer_name]=cont:word` - to filter using a partial match.\n\n","schema":{"type":"string"},"example":"eq:example_value"},{"name":"filter[configuration.cpu.manufacturer_id]","in":"query","description":"Filters records by using a query string on the field `configuration.cpu.manufacturer_id`.\n\nSupports comparison operators: `eq`, `in`.\n\nQuery examples:\n\n\n* `filter[configuration.cpu.manufacturer_id]=example_value` - to filter for exact match.\n\n \n* `filter[configuration.cpu.manufacturer_id]=eq:example_value` - to filter for exact match.\n\n \n* `filter[configuration.cpu.manufacturer_id]=in:example_value_1,example_value_2,example_value_3` - to filter when any item in the list matches.\n\n","schema":{"type":"string"},"example":"eq:example_value"},{"name":"filter[configuration.ram_bytes]","in":"query","description":"Filters records by using a query string on the field `configuration.ram_bytes`.\n\nSupports comparison operators: `eq`, `gt`, `gte`, `lt`, `lte`.\n\nQuery examples:\n\n\n* `filter[configuration.ram_bytes]=42` - to filter for exact match.\n\n \n* `filter[configuration.ram_bytes]=eq:42` - to filter for exact match.\n\n \n* `filter[configuration.ram_bytes]=gt:42` - to filter for greater than\n\n \n* `filter[configuration.ram_bytes]=gte:42` - to filter for greater than or equal to\n\n \n* `filter[configuration.ram_bytes]=lt:42` - to filter for less than\n\n \n* `filter[configuration.ram_bytes]=lte:42` - to filter for less than or equal to\n\n","schema":{"type":"string"},"example":"eq:42"},{"name":"filter[software.operating_system]","in":"query","description":"Filters records by using a query string on the field `software.operating_system`.\n\nSupports comparison operators: `eq`, `in`.\n\nQuery examples:\n\n\n* `filter[software.operating_system]=example_value` - to filter for exact match.\n\n \n* `filter[software.operating_system]=eq:example_value` - to filter for exact match.\n\n \n* `filter[software.operating_system]=in:example_value_1,example_value_2,example_value_3` - to filter when any item in the list matches.\n\n","schema":{"type":"string"},"example":"eq:example_value"},{"name":"filter[software.antivirus_info.status]","in":"query","description":"Filters records by using a query string on the field `software.antivirus_info.status`.\n\n\n\n*Possible values*: `UNKNOWN`, `DISABLED`, `RUNNING`.\n\n\n\nSupports comparison operators: `eq`, `in`.\n\nQuery examples:\n\n\n* `filter[software.antivirus_info.status]=UNKNOWN` - to filter for exact match.\n\n \n* `filter[software.antivirus_info.status]=eq:UNKNOWN` - to filter for exact match.\n\n \n* `filter[software.antivirus_info.status]=in:UNKNOWN,DISABLED,RUNNING` - to filter when any item in the list matches.\n\n","schema":{"type":"string"},"example":"eq:example_value"},{"name":"filter[software.antivirus_info.definition_status]","in":"query","description":"Filters records by using a query string on the field `software.antivirus_info.definition_status`.\n\n\n\n*Possible values*: `OUTOFDATE`, `UNKNOWN`, `UPTODATE`.\n\n\n\nSupports comparison operators: `eq`, `in`.\n\nQuery examples:\n\n\n* `filter[software.antivirus_info.definition_status]=OUTOFDATE` - to filter for exact match.\n\n \n* `filter[software.antivirus_info.definition_status]=eq:OUTOFDATE` - to filter for exact match.\n\n \n* `filter[software.antivirus_info.definition_status]=in:OUTOFDATE,UNKNOWN,UPTODATE` - to filter when any item in the list matches.\n\n","schema":{"type":"string"},"example":"eq:example_value"},{"name":"filter[software.office_suite_info.name]","in":"query","description":"Filters records by using a query string on the field `software.office_suite_info.name`.\n\nSupports comparison operators: `eq`, `in`.\n\nQuery examples:\n\n\n* `filter[software.office_suite_info.name]=example_value` - to filter for exact match.\n\n \n* `filter[software.office_suite_info.name]=eq:example_value` - to filter for exact match.\n\n \n* `filter[software.office_suite_info.name]=in:example_value_1,example_value_2,example_value_3` - to filter when any item in the list matches.\n\n","schema":{"type":"string"},"example":"eq:example_value"},{"name":"filter[software.office_suite_info.version]","in":"query","description":"Filters records by using a query string on the field `software.office_suite_info.version`.\n\nSupports comparison operators: `eq`, `in`.\n\nQuery examples:\n\n\n* `filter[software.office_suite_info.version]=example_value` - to filter for exact match.\n\n \n* `filter[software.office_suite_info.version]=eq:example_value` - to filter for exact match.\n\n \n* `filter[software.office_suite_info.version]=in:example_value_1,example_value_2,example_value_3` - to filter when any item in the list matches.\n\n","schema":{"type":"string"},"example":"eq:example_value"},{"name":"filter[record_created_at]","in":"query","description":"Filters records by using a query string on the field `record_created_at`.\n\nSupports comparison operators: `gt`, `gte`, `lt`, `lte`.\n\nQuery examples:\n\n\n* `filter[record_created_at]=gt:2023-01-01T00:00:00Z` - to filter for dates after\n\n \n* `filter[record_created_at]=gte:2023-01-01T00:00:00Z` - to filter for dates after or on\n\n \n* `filter[record_created_at]=lt:2023-01-01T00:00:00Z` - to filter for dates before\n\n \n* `filter[record_created_at]=lte:2023-01-01T00:00:00Z` - to filter for dates before or on\n\n","schema":{"type":"string"},"example":"gt:2023-01-01T00:00:00Z"},{"name":"filter[record_updated_at]","in":"query","description":"Filters records by using a query string on the field `record_updated_at`.\n\nSupports comparison operators: `gt`, `gte`, `lt`, `lte`.\n\nQuery examples:\n\n\n* `filter[record_updated_at]=gt:2023-01-01T00:00:00Z` - to filter for dates after\n\n \n* `filter[record_updated_at]=gte:2023-01-01T00:00:00Z` - to filter for dates after or on\n\n \n* `filter[record_updated_at]=lt:2023-01-01T00:00:00Z` - to filter for dates before\n\n \n* `filter[record_updated_at]=lte:2023-01-01T00:00:00Z` - to filter for dates before or on\n\n","schema":{"type":"string"},"example":"gt:2023-01-01T00:00:00Z"},{"name":"sort","in":"query","description":"One or more sortable fields, separated by commas. Prefix with '+' to sort ascending or '-' to sort descending.","schema":{"type":"array","items":{"enum":["id","name","client.id","client.name","contact.id","manufacturer.id","manufacturer.name","model.number","type","location_name","configuration.cpu.name","configuration.cpu.manufacturer_name","configuration.cpu.manufacturer_id","configuration.ram_bytes","software.operating_system","software.antivirus_info.status","software.antivirus_info.definition_status","software.office_suite_info.name","software.office_suite_info.version","record_created_at","record_updated_at"],"type":"string"}}},{"name":"page_size","in":"query","description":"The number of records to be returned in a single page","schema":{"maximum":200,"minimum":1,"type":"integer","format":"int32"}},{"name":"cursor","in":"query","description":"The pointer used to fetch a certain page of records","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Model.PaginatedResponse_SpApi.CoreApi.Core.v1.HardwareAssets.Model.HardwareAsset_"}},"text/json":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Model.PaginatedResponse_SpApi.CoreApi.Core.v1.HardwareAssets.Model.HardwareAsset_"}},"text/plain":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Model.PaginatedResponse_SpApi.CoreApi.Core.v1.HardwareAssets.Model.HardwareAsset_"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Errors.Model.BadRequestResponse"}},"text/json":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Errors.Model.BadRequestResponse"}},"text/plain":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Errors.Model.BadRequestResponse"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Errors.Model.InternalServerErrorResponse"}},"text/json":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Errors.Model.InternalServerErrorResponse"}},"text/plain":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Errors.Model.InternalServerErrorResponse"}}}}},"security":[{"apiKey":[]}]}},"/core/v1/assets/hardware/{id}":{"get":{"tags":["Hardware Assets"],"summary":"Get Hardware Asset","description":"This endpoint retrieves a single hardware asset, identified by its unique ID.\r\n            \r\nA hardware asset is an active physical device for a client managed by the MSP, enriched with information such as the associated client, assigned contact and other device-specific details.","operationId":"get-hardware-asset","parameters":[{"name":"id","in":"path","description":"Identifier of the hardware asset","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.v1.HardwareAssets.Model.HardwareAsset"}},"text/json":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.v1.HardwareAssets.Model.HardwareAsset"}},"text/plain":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.v1.HardwareAssets.Model.HardwareAsset"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Errors.Model.BadRequestResponse"}},"text/json":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Errors.Model.BadRequestResponse"}},"text/plain":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Errors.Model.BadRequestResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Errors.Model.NotFoundResponse"}},"text/json":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Errors.Model.NotFoundResponse"}},"text/plain":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Errors.Model.NotFoundResponse"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Errors.Model.InternalServerErrorResponse"}},"text/json":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Errors.Model.InternalServerErrorResponse"}},"text/plain":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Errors.Model.InternalServerErrorResponse"}}}}},"security":[{"apiKey":[]}]}},"/core/v1/assets/saas":{"get":{"tags":["SaaS"],"summary":"List SaaS Assets","description":"This endpoint retrieves a detailed list of SaaS assets. The endpoint supports filtering and sorting based on various criteria.\r\n            \r\nA SaaS asset is a cloud-based software application used by a client organization, tracked and managed by the MSP as part of its service delivery.","operationId":"list-saas-assets","parameters":[{"name":"filter[id]","in":"query","description":"Filters records by using a query string on the field `id`.\n\nSupports comparison operators: `eq`, `in`.\n\nQuery examples:\n\n\n* `filter[id]=example_value` - to filter for exact match.\n\n \n* `filter[id]=eq:example_value` - to filter for exact match.\n\n \n* `filter[id]=in:example_value_1,example_value_2,example_value_3` - to filter when any item in the list matches.\n\n","schema":{"type":"string"},"example":"eq:example_value"},{"name":"filter[client.id]","in":"query","description":"Filters records by using a query string on the field `client.id`.\n\nSupports comparison operators: `eq`, `in`.\n\nQuery examples:\n\n\n* `filter[client.id]=example_value` - to filter for exact match.\n\n \n* `filter[client.id]=eq:example_value` - to filter for exact match.\n\n \n* `filter[client.id]=in:example_value_1,example_value_2,example_value_3` - to filter when any item in the list matches.\n\n","schema":{"type":"string"},"example":"eq:example_value"},{"name":"filter[client.name]","in":"query","description":"Filters records by using a query string on the field `client.name`.\n\nSupports comparison operators: `eq`, `in`, `cont`.\n\nQuery examples:\n\n\n* `filter[client.name]=example_value` - to filter for exact match.\n\n \n* `filter[client.name]=eq:example_value` - to filter for exact match.\n\n \n* `filter[client.name]=in:example_value_1,example_value_2,example_value_3` - to filter when any item in the list matches.\n\n \n* `filter[client.name]=cont:word` - to filter using a partial match.\n\n","schema":{"type":"string"},"example":"eq:example_value"},{"name":"filter[product.manufacturer.id]","in":"query","description":"Filters records by using a query string on the field `product.manufacturer.id`.\n\nSupports comparison operators: `eq`, `in`.\n\nQuery examples:\n\n\n* `filter[product.manufacturer.id]=example_value` - to filter for exact match.\n\n \n* `filter[product.manufacturer.id]=eq:example_value` - to filter for exact match.\n\n \n* `filter[product.manufacturer.id]=in:example_value_1,example_value_2,example_value_3` - to filter when any item in the list matches.\n\n","schema":{"type":"string"},"example":"eq:example_value"},{"name":"filter[product.manufacturer.name]","in":"query","description":"Filters records by using a query string on the field `product.manufacturer.name`.\n\nSupports comparison operators: `eq`, `in`.\n\nQuery examples:\n\n\n* `filter[product.manufacturer.name]=example_value` - to filter for exact match.\n\n \n* `filter[product.manufacturer.name]=eq:example_value` - to filter for exact match.\n\n \n* `filter[product.manufacturer.name]=in:example_value_1,example_value_2,example_value_3` - to filter when any item in the list matches.\n\n","schema":{"type":"string"},"example":"eq:example_value"},{"name":"filter[product.id]","in":"query","description":"Filters records by using a query string on the field `product.id`.\n\nSupports comparison operators: `eq`, `in`.\n\nQuery examples:\n\n\n* `filter[product.id]=example_value` - to filter for exact match.\n\n \n* `filter[product.id]=eq:example_value` - to filter for exact match.\n\n \n* `filter[product.id]=in:example_value_1,example_value_2,example_value_3` - to filter when any item in the list matches.\n\n","schema":{"type":"string"},"example":"eq:example_value"},{"name":"filter[product.name]","in":"query","description":"Filters records by using a query string on the field `product.name`.\n\nSupports comparison operators: `eq`, `in`.\n\nQuery examples:\n\n\n* `filter[product.name]=example_value` - to filter for exact match.\n\n \n* `filter[product.name]=eq:example_value` - to filter for exact match.\n\n \n* `filter[product.name]=in:example_value_1,example_value_2,example_value_3` - to filter when any item in the list matches.\n\n","schema":{"type":"string"},"example":"eq:example_value"},{"name":"filter[product.category]","in":"query","description":"Filters records by using a query string on the field `product.category`.\n\nSupports comparison operators: `eq`, `in`.\n\nQuery examples:\n\n\n* `filter[product.category]=example_value` - to filter for exact match.\n\n \n* `filter[product.category]=eq:example_value` - to filter for exact match.\n\n \n* `filter[product.category]=in:example_value_1,example_value_2,example_value_3` - to filter when any item in the list matches.\n\n","schema":{"type":"string"},"example":"eq:example_value"},{"name":"filter[product.manufacturer_sku.id]","in":"query","description":"Filters records by using a query string on the field `product.manufacturer_sku.id`.\n\nSupports comparison operators: `eq`, `in`.\n\nQuery examples:\n\n\n* `filter[product.manufacturer_sku.id]=example_value` - to filter for exact match.\n\n \n* `filter[product.manufacturer_sku.id]=eq:example_value` - to filter for exact match.\n\n \n* `filter[product.manufacturer_sku.id]=in:example_value_1,example_value_2,example_value_3` - to filter when any item in the list matches.\n\n","schema":{"type":"string"},"example":"eq:example_value"},{"name":"filter[product.manufacturer_sku.name]","in":"query","description":"Filters records by using a query string on the field `product.manufacturer_sku.name`.\n\nSupports comparison operators: `eq`, `in`.\n\nQuery examples:\n\n\n* `filter[product.manufacturer_sku.name]=example_value` - to filter for exact match.\n\n \n* `filter[product.manufacturer_sku.name]=eq:example_value` - to filter for exact match.\n\n \n* `filter[product.manufacturer_sku.name]=in:example_value_1,example_value_2,example_value_3` - to filter when any item in the list matches.\n\n","schema":{"type":"string"},"example":"eq:example_value"},{"name":"filter[status]","in":"query","description":"Filters records by using a query string on the field `status`.\n\nSupports comparison operators: `eq`, `in`.\n\nQuery examples:\n\n\n* `filter[status]=example_value` - to filter for exact match.\n\n \n* `filter[status]=eq:example_value` - to filter for exact match.\n\n \n* `filter[status]=in:example_value_1,example_value_2,example_value_3` - to filter when any item in the list matches.\n\n","schema":{"type":"string"},"example":"eq:example_value"},{"name":"filter[term.starts_at]","in":"query","description":"Filters records by using a query string on the field `term.starts_at`.\n\nSupports comparison operators: `gt`, `gte`, `lt`, `lte`.\n\nQuery examples:\n\n\n* `filter[term.starts_at]=gt:2023-01-01T00:00:00Z` - to filter for dates after\n\n \n* `filter[term.starts_at]=gte:2023-01-01T00:00:00Z` - to filter for dates after or on\n\n \n* `filter[term.starts_at]=lt:2023-01-01T00:00:00Z` - to filter for dates before\n\n \n* `filter[term.starts_at]=lte:2023-01-01T00:00:00Z` - to filter for dates before or on\n\n","schema":{"type":"string"},"example":"gt:2023-01-01T00:00:00Z"},{"name":"filter[term.ends_at]","in":"query","description":"Filters records by using a query string on the field `term.ends_at`.\n\nSupports comparison operators: `gt`, `gte`, `lt`, `lte`.\n\nQuery examples:\n\n\n* `filter[term.ends_at]=gt:2023-01-01T00:00:00Z` - to filter for dates after\n\n \n* `filter[term.ends_at]=gte:2023-01-01T00:00:00Z` - to filter for dates after or on\n\n \n* `filter[term.ends_at]=lt:2023-01-01T00:00:00Z` - to filter for dates before\n\n \n* `filter[term.ends_at]=lte:2023-01-01T00:00:00Z` - to filter for dates before or on\n\n","schema":{"type":"string"},"example":"gt:2023-01-01T00:00:00Z"},{"name":"filter[term.is_auto_renewed]","in":"query","description":"Filters records by using a query string on the field `term.is_auto_renewed`.\n\nSupports comparison operators: `eq`.\n\nQuery examples:\n\n\n* `filter[term.is_auto_renewed]=true` - to filter for exact match.\n\n \n* `filter[term.is_auto_renewed]=eq:true` - to filter for exact match.\n\n","schema":{"type":"string"},"example":"eq:true"},{"name":"filter[pool.type]","in":"query","description":"Filters records by using a query string on the field `pool.type`.\n\n\n\n*Possible values*: `SEAT`.\n\n\n\nSupports comparison operators: `eq`, `in`.\n\nQuery examples:\n\n\n* `filter[pool.type]=SEAT` - to filter for exact match.\n\n \n* `filter[pool.type]=eq:SEAT` - to filter for exact match.\n\n \n* `filter[pool.type]=in:SEAT` - to filter when any item in the list matches.\n\n","schema":{"type":"string"},"example":"eq:example_value"},{"name":"filter[pool.capacity]","in":"query","description":"Filters records by using a query string on the field `pool.capacity`.\n\nSupports comparison operators: `eq`, `gt`, `gte`, `lt`, `lte`.\n\nQuery examples:\n\n\n* `filter[pool.capacity]=42` - to filter for exact match.\n\n \n* `filter[pool.capacity]=eq:42` - to filter for exact match.\n\n \n* `filter[pool.capacity]=gt:42` - to filter for greater than\n\n \n* `filter[pool.capacity]=gte:42` - to filter for greater than or equal to\n\n \n* `filter[pool.capacity]=lt:42` - to filter for less than\n\n \n* `filter[pool.capacity]=lte:42` - to filter for less than or equal to\n\n","schema":{"type":"string"},"example":"eq:42"},{"name":"filter[pool.utilized]","in":"query","description":"Filters records by using a query string on the field `pool.utilized`.\n\nSupports comparison operators: `eq`, `gt`, `gte`, `lt`, `lte`.\n\nQuery examples:\n\n\n* `filter[pool.utilized]=42` - to filter for exact match.\n\n \n* `filter[pool.utilized]=eq:42` - to filter for exact match.\n\n \n* `filter[pool.utilized]=gt:42` - to filter for greater than\n\n \n* `filter[pool.utilized]=gte:42` - to filter for greater than or equal to\n\n \n* `filter[pool.utilized]=lt:42` - to filter for less than\n\n \n* `filter[pool.utilized]=lte:42` - to filter for less than or equal to\n\n","schema":{"type":"string"},"example":"eq:42"},{"name":"filter[pool.active]","in":"query","description":"Filters records by using a query string on the field `pool.active`.\n\nSupports comparison operators: `eq`, `gt`, `gte`, `lt`, `lte`.\n\nQuery examples:\n\n\n* `filter[pool.active]=42` - to filter for exact match.\n\n \n* `filter[pool.active]=eq:42` - to filter for exact match.\n\n \n* `filter[pool.active]=gt:42` - to filter for greater than\n\n \n* `filter[pool.active]=gte:42` - to filter for greater than or equal to\n\n \n* `filter[pool.active]=lt:42` - to filter for less than\n\n \n* `filter[pool.active]=lte:42` - to filter for less than or equal to\n\n","schema":{"type":"string"},"example":"eq:42"},{"name":"filter[pool.suspended]","in":"query","description":"Filters records by using a query string on the field `pool.suspended`.\n\nSupports comparison operators: `eq`, `gt`, `gte`, `lt`, `lte`.\n\nQuery examples:\n\n\n* `filter[pool.suspended]=42` - to filter for exact match.\n\n \n* `filter[pool.suspended]=eq:42` - to filter for exact match.\n\n \n* `filter[pool.suspended]=gt:42` - to filter for greater than\n\n \n* `filter[pool.suspended]=gte:42` - to filter for greater than or equal to\n\n \n* `filter[pool.suspended]=lt:42` - to filter for less than\n\n \n* `filter[pool.suspended]=lte:42` - to filter for less than or equal to\n\n","schema":{"type":"string"},"example":"eq:42"},{"name":"filter[pool.grace_period_warning]","in":"query","description":"Filters records by using a query string on the field `pool.grace_period_warning`.\n\nSupports comparison operators: `eq`, `gt`, `gte`, `lt`, `lte`.\n\nQuery examples:\n\n\n* `filter[pool.grace_period_warning]=42` - to filter for exact match.\n\n \n* `filter[pool.grace_period_warning]=eq:42` - to filter for exact match.\n\n \n* `filter[pool.grace_period_warning]=gt:42` - to filter for greater than\n\n \n* `filter[pool.grace_period_warning]=gte:42` - to filter for greater than or equal to\n\n \n* `filter[pool.grace_period_warning]=lt:42` - to filter for less than\n\n \n* `filter[pool.grace_period_warning]=lte:42` - to filter for less than or equal to\n\n","schema":{"type":"string"},"example":"eq:42"},{"name":"filter[record_created_at]","in":"query","description":"Filters records by using a query string on the field `record_created_at`.\n\nSupports comparison operators: `gt`, `gte`, `lt`, `lte`.\n\nQuery examples:\n\n\n* `filter[record_created_at]=gt:2023-01-01T00:00:00Z` - to filter for dates after\n\n \n* `filter[record_created_at]=gte:2023-01-01T00:00:00Z` - to filter for dates after or on\n\n \n* `filter[record_created_at]=lt:2023-01-01T00:00:00Z` - to filter for dates before\n\n \n* `filter[record_created_at]=lte:2023-01-01T00:00:00Z` - to filter for dates before or on\n\n","schema":{"type":"string"},"example":"gt:2023-01-01T00:00:00Z"},{"name":"filter[record_updated_at]","in":"query","description":"Filters records by using a query string on the field `record_updated_at`.\n\nSupports comparison operators: `gt`, `gte`, `lt`, `lte`.\n\nQuery examples:\n\n\n* `filter[record_updated_at]=gt:2023-01-01T00:00:00Z` - to filter for dates after\n\n \n* `filter[record_updated_at]=gte:2023-01-01T00:00:00Z` - to filter for dates after or on\n\n \n* `filter[record_updated_at]=lt:2023-01-01T00:00:00Z` - to filter for dates before\n\n \n* `filter[record_updated_at]=lte:2023-01-01T00:00:00Z` - to filter for dates before or on\n\n","schema":{"type":"string"},"example":"gt:2023-01-01T00:00:00Z"},{"name":"sort","in":"query","description":"One or more sortable fields, separated by commas. Prefix with '+' to sort ascending or '-' to sort descending.","schema":{"type":"array","items":{"enum":["id","client.id","client.name","product.manufacturer.id","product.manufacturer.name","product.id","product.name","product.category","product.manufacturer_sku.id","product.manufacturer_sku.name","status","term.starts_at","term.ends_at","term.is_auto_renewed","pool.type","pool.capacity","pool.utilized","pool.active","pool.suspended","pool.grace_period_warning","record_created_at","record_updated_at"],"type":"string"}}},{"name":"page_size","in":"query","description":"The number of records to be returned in a single page","schema":{"maximum":200,"minimum":1,"type":"integer","format":"int32"}},{"name":"cursor","in":"query","description":"The pointer used to fetch a certain page of records","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Model.PaginatedResponse_SpApi.CoreApi.Core.v1.SaasAssets.Model.SaasAsset_"}},"text/json":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Model.PaginatedResponse_SpApi.CoreApi.Core.v1.SaasAssets.Model.SaasAsset_"}},"text/plain":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Model.PaginatedResponse_SpApi.CoreApi.Core.v1.SaasAssets.Model.SaasAsset_"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Errors.Model.BadRequestResponse"}},"text/json":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Errors.Model.BadRequestResponse"}},"text/plain":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Errors.Model.BadRequestResponse"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Errors.Model.InternalServerErrorResponse"}},"text/json":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Errors.Model.InternalServerErrorResponse"}},"text/plain":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Errors.Model.InternalServerErrorResponse"}}}}},"security":[{"apiKey":[]}]}},"/core/v1/assets/saas-users":{"get":{"tags":["SaaS"],"summary":"List SaaS Users","description":"This endpoint retrieves a detailed list of SaaS users. The endpoint supports filtering and sorting based on various criteria.\r\n            \r\nA SaaS user is an individual at the client organization who has been assigned access to a SaaS license managed by the MSP.","operationId":"list-saas-users","parameters":[{"name":"filter[id]","in":"query","description":"Filters records by using a query string on the field `id`.\n\nSupports comparison operators: `eq`, `in`.\n\nQuery examples:\n\n\n* `filter[id]=example_value` - to filter for exact match.\n\n \n* `filter[id]=eq:example_value` - to filter for exact match.\n\n \n* `filter[id]=in:example_value_1,example_value_2,example_value_3` - to filter when any item in the list matches.\n\n","schema":{"type":"string"},"example":"eq:example_value"},{"name":"filter[client.id]","in":"query","description":"Filters records by using a query string on the field `client.id`.\n\nSupports comparison operators: `eq`, `in`.\n\nQuery examples:\n\n\n* `filter[client.id]=example_value` - to filter for exact match.\n\n \n* `filter[client.id]=eq:example_value` - to filter for exact match.\n\n \n* `filter[client.id]=in:example_value_1,example_value_2,example_value_3` - to filter when any item in the list matches.\n\n","schema":{"type":"string"},"example":"eq:example_value"},{"name":"filter[client.name]","in":"query","description":"Filters records by using a query string on the field `client.name`.\n\nSupports comparison operators: `eq`, `in`, `cont`.\n\nQuery examples:\n\n\n* `filter[client.name]=example_value` - to filter for exact match.\n\n \n* `filter[client.name]=eq:example_value` - to filter for exact match.\n\n \n* `filter[client.name]=in:example_value_1,example_value_2,example_value_3` - to filter when any item in the list matches.\n\n \n* `filter[client.name]=cont:word` - to filter using a partial match.\n\n","schema":{"type":"string"},"example":"eq:example_value"},{"name":"filter[contact.id]","in":"query","description":"Filters records by using a query string on the field `contact.id`.\n\nSupports comparison operators: `eq`, `in`.\n\nQuery examples:\n\n\n* `filter[contact.id]=example_value` - to filter for exact match.\n\n \n* `filter[contact.id]=eq:example_value` - to filter for exact match.\n\n \n* `filter[contact.id]=in:example_value_1,example_value_2,example_value_3` - to filter when any item in the list matches.\n\n","schema":{"type":"string"},"example":"eq:example_value"},{"name":"filter[asset.id]","in":"query","description":"Filters records by using a query string on the field `asset.id`.\n\nSupports comparison operators: `eq`, `in`.\n\nQuery examples:\n\n\n* `filter[asset.id]=example_value` - to filter for exact match.\n\n \n* `filter[asset.id]=eq:example_value` - to filter for exact match.\n\n \n* `filter[asset.id]=in:example_value_1,example_value_2,example_value_3` - to filter when any item in the list matches.\n\n","schema":{"type":"string"},"example":"eq:example_value"},{"name":"filter[asset.status]","in":"query","description":"Filters records by using a query string on the field `asset.status`.\n\nSupports comparison operators: `eq`, `in`.\n\nQuery examples:\n\n\n* `filter[asset.status]=example_value` - to filter for exact match.\n\n \n* `filter[asset.status]=eq:example_value` - to filter for exact match.\n\n \n* `filter[asset.status]=in:example_value_1,example_value_2,example_value_3` - to filter when any item in the list matches.\n\n","schema":{"type":"string"},"example":"eq:example_value"},{"name":"filter[product.manufacturer.id]","in":"query","description":"Filters records by using a query string on the field `product.manufacturer.id`.\n\nSupports comparison operators: `eq`, `in`.\n\nQuery examples:\n\n\n* `filter[product.manufacturer.id]=example_value` - to filter for exact match.\n\n \n* `filter[product.manufacturer.id]=eq:example_value` - to filter for exact match.\n\n \n* `filter[product.manufacturer.id]=in:example_value_1,example_value_2,example_value_3` - to filter when any item in the list matches.\n\n","schema":{"type":"string"},"example":"eq:example_value"},{"name":"filter[product.manufacturer.name]","in":"query","description":"Filters records by using a query string on the field `product.manufacturer.name`.\n\nSupports comparison operators: `eq`, `in`.\n\nQuery examples:\n\n\n* `filter[product.manufacturer.name]=example_value` - to filter for exact match.\n\n \n* `filter[product.manufacturer.name]=eq:example_value` - to filter for exact match.\n\n \n* `filter[product.manufacturer.name]=in:example_value_1,example_value_2,example_value_3` - to filter when any item in the list matches.\n\n","schema":{"type":"string"},"example":"eq:example_value"},{"name":"filter[product.id]","in":"query","description":"Filters records by using a query string on the field `product.id`.\n\nSupports comparison operators: `eq`, `in`.\n\nQuery examples:\n\n\n* `filter[product.id]=example_value` - to filter for exact match.\n\n \n* `filter[product.id]=eq:example_value` - to filter for exact match.\n\n \n* `filter[product.id]=in:example_value_1,example_value_2,example_value_3` - to filter when any item in the list matches.\n\n","schema":{"type":"string"},"example":"eq:example_value"},{"name":"filter[product.name]","in":"query","description":"Filters records by using a query string on the field `product.name`.\n\nSupports comparison operators: `eq`, `in`.\n\nQuery examples:\n\n\n* `filter[product.name]=example_value` - to filter for exact match.\n\n \n* `filter[product.name]=eq:example_value` - to filter for exact match.\n\n \n* `filter[product.name]=in:example_value_1,example_value_2,example_value_3` - to filter when any item in the list matches.\n\n","schema":{"type":"string"},"example":"eq:example_value"},{"name":"filter[product.category]","in":"query","description":"Filters records by using a query string on the field `product.category`.\n\nSupports comparison operators: `eq`, `in`.\n\nQuery examples:\n\n\n* `filter[product.category]=example_value` - to filter for exact match.\n\n \n* `filter[product.category]=eq:example_value` - to filter for exact match.\n\n \n* `filter[product.category]=in:example_value_1,example_value_2,example_value_3` - to filter when any item in the list matches.\n\n","schema":{"type":"string"},"example":"eq:example_value"},{"name":"filter[product.manufacturer_sku.id]","in":"query","description":"Filters records by using a query string on the field `product.manufacturer_sku.id`.\n\nSupports comparison operators: `eq`, `in`.\n\nQuery examples:\n\n\n* `filter[product.manufacturer_sku.id]=example_value` - to filter for exact match.\n\n \n* `filter[product.manufacturer_sku.id]=eq:example_value` - to filter for exact match.\n\n \n* `filter[product.manufacturer_sku.id]=in:example_value_1,example_value_2,example_value_3` - to filter when any item in the list matches.\n\n","schema":{"type":"string"},"example":"eq:example_value"},{"name":"filter[product.manufacturer_sku.name]","in":"query","description":"Filters records by using a query string on the field `product.manufacturer_sku.name`.\n\nSupports comparison operators: `eq`, `in`.\n\nQuery examples:\n\n\n* `filter[product.manufacturer_sku.name]=example_value` - to filter for exact match.\n\n \n* `filter[product.manufacturer_sku.name]=eq:example_value` - to filter for exact match.\n\n \n* `filter[product.manufacturer_sku.name]=in:example_value_1,example_value_2,example_value_3` - to filter when any item in the list matches.\n\n","schema":{"type":"string"},"example":"eq:example_value"},{"name":"filter[term.starts_at]","in":"query","description":"Filters records by using a query string on the field `term.starts_at`.\n\nSupports comparison operators: `gt`, `gte`, `lt`, `lte`.\n\nQuery examples:\n\n\n* `filter[term.starts_at]=gt:2023-01-01T00:00:00Z` - to filter for dates after\n\n \n* `filter[term.starts_at]=gte:2023-01-01T00:00:00Z` - to filter for dates after or on\n\n \n* `filter[term.starts_at]=lt:2023-01-01T00:00:00Z` - to filter for dates before\n\n \n* `filter[term.starts_at]=lte:2023-01-01T00:00:00Z` - to filter for dates before or on\n\n","schema":{"type":"string"},"example":"gt:2023-01-01T00:00:00Z"},{"name":"filter[term.ends_at]","in":"query","description":"Filters records by using a query string on the field `term.ends_at`.\n\nSupports comparison operators: `gt`, `gte`, `lt`, `lte`.\n\nQuery examples:\n\n\n* `filter[term.ends_at]=gt:2023-01-01T00:00:00Z` - to filter for dates after\n\n \n* `filter[term.ends_at]=gte:2023-01-01T00:00:00Z` - to filter for dates after or on\n\n \n* `filter[term.ends_at]=lt:2023-01-01T00:00:00Z` - to filter for dates before\n\n \n* `filter[term.ends_at]=lte:2023-01-01T00:00:00Z` - to filter for dates before or on\n\n","schema":{"type":"string"},"example":"gt:2023-01-01T00:00:00Z"},{"name":"filter[activity.last_active_at]","in":"query","description":"Filters records by using a query string on the field `activity.last_active_at`.\n\nSupports comparison operators: `gt`, `gte`, `lt`, `lte`.\n\nQuery examples:\n\n\n* `filter[activity.last_active_at]=gt:2023-01-01T00:00:00Z` - to filter for dates after\n\n \n* `filter[activity.last_active_at]=gte:2023-01-01T00:00:00Z` - to filter for dates after or on\n\n \n* `filter[activity.last_active_at]=lt:2023-01-01T00:00:00Z` - to filter for dates before\n\n \n* `filter[activity.last_active_at]=lte:2023-01-01T00:00:00Z` - to filter for dates before or on\n\n","schema":{"type":"string"},"example":"gt:2023-01-01T00:00:00Z"},{"name":"filter[activity.is_active]","in":"query","description":"Filters records by using a query string on the field `activity.is_active`.\n\nSupports comparison operators: `eq`.\n\nQuery examples:\n\n\n* `filter[activity.is_active]=true` - to filter for exact match.\n\n \n* `filter[activity.is_active]=eq:true` - to filter for exact match.\n\n","schema":{"type":"string"},"example":"eq:true"},{"name":"filter[authentication.is_mfa_enabled]","in":"query","description":"Filters records by using a query string on the field `authentication.is_mfa_enabled`.\n\nSupports comparison operators: `eq`.\n\nQuery examples:\n\n\n* `filter[authentication.is_mfa_enabled]=true` - to filter for exact match.\n\n \n* `filter[authentication.is_mfa_enabled]=eq:true` - to filter for exact match.\n\n","schema":{"type":"string"},"example":"eq:true"},{"name":"filter[authentication.default_mfa_method]","in":"query","description":"Filters records by using a query string on the field `authentication.default_mfa_method`.\n\nSupports comparison operators: `eq`, `in`.\n\nQuery examples:\n\n\n* `filter[authentication.default_mfa_method]=example_value` - to filter for exact match.\n\n \n* `filter[authentication.default_mfa_method]=eq:example_value` - to filter for exact match.\n\n \n* `filter[authentication.default_mfa_method]=in:example_value_1,example_value_2,example_value_3` - to filter when any item in the list matches.\n\n","schema":{"type":"string"},"example":"eq:example_value"},{"name":"filter[is_admin]","in":"query","description":"Filters records by using a query string on the field `is_admin`.\n\nSupports comparison operators: `eq`.\n\nQuery examples:\n\n\n* `filter[is_admin]=true` - to filter for exact match.\n\n \n* `filter[is_admin]=eq:true` - to filter for exact match.\n\n","schema":{"type":"string"},"example":"eq:true"},{"name":"filter[record_created_at]","in":"query","description":"Filters records by using a query string on the field `record_created_at`.\n\nSupports comparison operators: `gt`, `gte`, `lt`, `lte`.\n\nQuery examples:\n\n\n* `filter[record_created_at]=gt:2023-01-01T00:00:00Z` - to filter for dates after\n\n \n* `filter[record_created_at]=gte:2023-01-01T00:00:00Z` - to filter for dates after or on\n\n \n* `filter[record_created_at]=lt:2023-01-01T00:00:00Z` - to filter for dates before\n\n \n* `filter[record_created_at]=lte:2023-01-01T00:00:00Z` - to filter for dates before or on\n\n","schema":{"type":"string"},"example":"gt:2023-01-01T00:00:00Z"},{"name":"filter[record_updated_at]","in":"query","description":"Filters records by using a query string on the field `record_updated_at`.\n\nSupports comparison operators: `gt`, `gte`, `lt`, `lte`.\n\nQuery examples:\n\n\n* `filter[record_updated_at]=gt:2023-01-01T00:00:00Z` - to filter for dates after\n\n \n* `filter[record_updated_at]=gte:2023-01-01T00:00:00Z` - to filter for dates after or on\n\n \n* `filter[record_updated_at]=lt:2023-01-01T00:00:00Z` - to filter for dates before\n\n \n* `filter[record_updated_at]=lte:2023-01-01T00:00:00Z` - to filter for dates before or on\n\n","schema":{"type":"string"},"example":"gt:2023-01-01T00:00:00Z"},{"name":"sort","in":"query","description":"One or more sortable fields, separated by commas. Prefix with '+' to sort ascending or '-' to sort descending.","schema":{"type":"array","items":{"enum":["id","client.id","client.name","contact.id","asset.id","asset.status","product.manufacturer.id","product.manufacturer.name","product.id","product.name","product.category","product.manufacturer_sku.id","product.manufacturer_sku.name","term.starts_at","term.ends_at","activity.last_active_at","activity.is_active","authentication.is_mfa_enabled","authentication.default_mfa_method","is_admin","record_created_at","record_updated_at"],"type":"string"}}},{"name":"page_size","in":"query","description":"The number of records to be returned in a single page","schema":{"maximum":200,"minimum":1,"type":"integer","format":"int32"}},{"name":"cursor","in":"query","description":"The pointer used to fetch a certain page of records","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Model.PaginatedResponse_SpApi.CoreApi.Core.v1.SaasUsers.Model.SaasUser_"}},"text/json":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Model.PaginatedResponse_SpApi.CoreApi.Core.v1.SaasUsers.Model.SaasUser_"}},"text/plain":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Model.PaginatedResponse_SpApi.CoreApi.Core.v1.SaasUsers.Model.SaasUser_"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Errors.Model.BadRequestResponse"}},"text/json":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Errors.Model.BadRequestResponse"}},"text/plain":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Errors.Model.BadRequestResponse"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Errors.Model.InternalServerErrorResponse"}},"text/json":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Errors.Model.InternalServerErrorResponse"}},"text/plain":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Errors.Model.InternalServerErrorResponse"}}}}},"security":[{"apiKey":[]}]}},"/core/v1/assets/saas-users/{id}":{"get":{"tags":["SaaS"],"summary":"Get SaaS User","description":"This endpoint retrieves a single SaaS user, identified by its unique ID.\r\n            \r\nA SaaS user is an individual at the client organization who has been assigned access to a SaaS license managed by the MSP.","operationId":"get-saas-user","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.v1.SaasUsers.Model.SaasUser"}},"text/json":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.v1.SaasUsers.Model.SaasUser"}},"text/plain":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.v1.SaasUsers.Model.SaasUser"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Errors.Model.BadRequestResponse"}},"text/json":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Errors.Model.BadRequestResponse"}},"text/plain":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Errors.Model.BadRequestResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Errors.Model.NotFoundResponse"}},"text/json":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Errors.Model.NotFoundResponse"}},"text/plain":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Errors.Model.NotFoundResponse"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Errors.Model.InternalServerErrorResponse"}},"text/json":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Errors.Model.InternalServerErrorResponse"}},"text/plain":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Errors.Model.InternalServerErrorResponse"}}}}},"security":[{"apiKey":[]}]}},"/core/v1/assets/saas/{id}":{"get":{"tags":["SaaS"],"summary":"Get SaaS Asset","description":"This endpoint retrieves a single SaaS asset, identified by its unique ID.\r\n            \r\nA SaaS asset is a cloud-based software application used by a client organization, tracked and managed by the MSP as part of its service delivery.","operationId":"get-saas-asset","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.v1.SaasAssets.Model.SaasAsset"}},"text/json":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.v1.SaasAssets.Model.SaasAsset"}},"text/plain":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.v1.SaasAssets.Model.SaasAsset"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Errors.Model.BadRequestResponse"}},"text/json":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Errors.Model.BadRequestResponse"}},"text/plain":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Errors.Model.BadRequestResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Errors.Model.NotFoundResponse"}},"text/json":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Errors.Model.NotFoundResponse"}},"text/plain":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Errors.Model.NotFoundResponse"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Errors.Model.InternalServerErrorResponse"}},"text/json":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Errors.Model.InternalServerErrorResponse"}},"text/plain":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Errors.Model.InternalServerErrorResponse"}}}}},"security":[{"apiKey":[]}]}},"/core/v1/clients":{"get":{"tags":["Clients"],"summary":"List Clients","description":"This endpoint retrieves a detailed list of clients. The endpoint supports filtering and sorting based on various criteria.\r\n            \r\nA client is an active customer organization managed by the MSP, enriched with data such as employee and device counts, geographic details, and other customer-specific details.","operationId":"list-clients","parameters":[{"name":"filter[id]","in":"query","description":"Filters records by using a query string on the field `id`.\n\nSupports comparison operators: `eq`, `in`.\n\nQuery examples:\n\n\n* `filter[id]=example_value` - to filter for exact match.\n\n \n* `filter[id]=eq:example_value` - to filter for exact match.\n\n \n* `filter[id]=in:example_value_1,example_value_2,example_value_3` - to filter when any item in the list matches.\n\n","schema":{"type":"string"},"example":"eq:example_value"},{"name":"filter[name]","in":"query","description":"Filters records by using a query string on the field `name`.\n\nSupports comparison operators: `eq`, `in`, `cont`.\n\nQuery examples:\n\n\n* `filter[name]=example_value` - to filter for exact match.\n\n \n* `filter[name]=eq:example_value` - to filter for exact match.\n\n \n* `filter[name]=in:example_value_1,example_value_2,example_value_3` - to filter when any item in the list matches.\n\n \n* `filter[name]=cont:word` - to filter using a partial match.\n\n","schema":{"type":"string"},"example":"eq:example_value"},{"name":"filter[lifecycle]","in":"query","description":"Filters records by using a query string on the field `lifecycle`.\n\nSupports comparison operators: `eq`, `in`.\n\nQuery examples:\n\n\n* `filter[lifecycle]=example_value` - to filter for exact match.\n\n \n* `filter[lifecycle]=eq:example_value` - to filter for exact match.\n\n \n* `filter[lifecycle]=in:example_value_1,example_value_2,example_value_3` - to filter when any item in the list matches.\n\n","schema":{"type":"string"},"example":"eq:example_value"},{"name":"filter[num_contacts]","in":"query","description":"Filters records by using a query string on the field `num_contacts`.\n\nSupports comparison operators: `eq`, `gt`, `gte`, `lt`, `lte`.\n\nQuery examples:\n\n\n* `filter[num_contacts]=42` - to filter for exact match.\n\n \n* `filter[num_contacts]=eq:42` - to filter for exact match.\n\n \n* `filter[num_contacts]=gt:42` - to filter for greater than\n\n \n* `filter[num_contacts]=gte:42` - to filter for greater than or equal to\n\n \n* `filter[num_contacts]=lt:42` - to filter for less than\n\n \n* `filter[num_contacts]=lte:42` - to filter for less than or equal to\n\n","schema":{"type":"string"},"example":"eq:42"},{"name":"filter[num_hardware_assets]","in":"query","description":"Filters records by using a query string on the field `num_hardware_assets`.\n\nSupports comparison operators: `eq`, `gt`, `gte`, `lt`, `lte`.\n\nQuery examples:\n\n\n* `filter[num_hardware_assets]=42` - to filter for exact match.\n\n \n* `filter[num_hardware_assets]=eq:42` - to filter for exact match.\n\n \n* `filter[num_hardware_assets]=gt:42` - to filter for greater than\n\n \n* `filter[num_hardware_assets]=gte:42` - to filter for greater than or equal to\n\n \n* `filter[num_hardware_assets]=lt:42` - to filter for less than\n\n \n* `filter[num_hardware_assets]=lte:42` - to filter for less than or equal to\n\n","schema":{"type":"string"},"example":"eq:42"},{"name":"filter[record_created_at]","in":"query","description":"Filters records by using a query string on the field `record_created_at`.\n\nSupports comparison operators: `gt`, `gte`, `lt`, `lte`.\n\nQuery examples:\n\n\n* `filter[record_created_at]=gt:2023-01-01T00:00:00Z` - to filter for dates after\n\n \n* `filter[record_created_at]=gte:2023-01-01T00:00:00Z` - to filter for dates after or on\n\n \n* `filter[record_created_at]=lt:2023-01-01T00:00:00Z` - to filter for dates before\n\n \n* `filter[record_created_at]=lte:2023-01-01T00:00:00Z` - to filter for dates before or on\n\n","schema":{"type":"string"},"example":"gt:2023-01-01T00:00:00Z"},{"name":"filter[record_updated_at]","in":"query","description":"Filters records by using a query string on the field `record_updated_at`.\n\nSupports comparison operators: `gt`, `gte`, `lt`, `lte`.\n\nQuery examples:\n\n\n* `filter[record_updated_at]=gt:2023-01-01T00:00:00Z` - to filter for dates after\n\n \n* `filter[record_updated_at]=gte:2023-01-01T00:00:00Z` - to filter for dates after or on\n\n \n* `filter[record_updated_at]=lt:2023-01-01T00:00:00Z` - to filter for dates before\n\n \n* `filter[record_updated_at]=lte:2023-01-01T00:00:00Z` - to filter for dates before or on\n\n","schema":{"type":"string"},"example":"gt:2023-01-01T00:00:00Z"},{"name":"sort","in":"query","description":"One or more sortable fields, separated by commas. Prefix with '+' to sort ascending or '-' to sort descending.","schema":{"type":"array","items":{"enum":["name","lifecycle","num_contacts","num_hardware_assets","record_created_at","record_updated_at"],"type":"string"}}},{"name":"page_size","in":"query","description":"The number of records to be returned in a single page","schema":{"maximum":200,"minimum":1,"type":"integer","format":"int32"}},{"name":"cursor","in":"query","description":"The pointer used to fetch a certain page of records","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Model.PaginatedResponse_SpApi.CoreApi.Core.v1.Clients.Model.Client_"}},"text/json":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Model.PaginatedResponse_SpApi.CoreApi.Core.v1.Clients.Model.Client_"}},"text/plain":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Model.PaginatedResponse_SpApi.CoreApi.Core.v1.Clients.Model.Client_"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Errors.Model.BadRequestResponse"}},"text/json":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Errors.Model.BadRequestResponse"}},"text/plain":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Errors.Model.BadRequestResponse"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Errors.Model.InternalServerErrorResponse"}},"text/json":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Errors.Model.InternalServerErrorResponse"}},"text/plain":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Errors.Model.InternalServerErrorResponse"}}}}},"security":[{"apiKey":[]}]}},"/core/v1/clients/{id}":{"get":{"tags":["Clients"],"summary":"Get Client","description":"This endpoint retrieves a single client, identified by its unique ID.\r\n            \r\nA client is an active customer organization managed by the MSP, enriched with data such as employee and device counts, geographic details, and other customer-specific details.","operationId":"get-client","parameters":[{"name":"id","in":"path","description":"Identifier of the client","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.v1.Clients.Model.Client"}},"text/json":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.v1.Clients.Model.Client"}},"text/plain":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.v1.Clients.Model.Client"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Errors.Model.BadRequestResponse"}},"text/json":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Errors.Model.BadRequestResponse"}},"text/plain":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Errors.Model.BadRequestResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Errors.Model.NotFoundResponse"}},"text/json":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Errors.Model.NotFoundResponse"}},"text/plain":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Errors.Model.NotFoundResponse"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Errors.Model.InternalServerErrorResponse"}},"text/json":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Errors.Model.InternalServerErrorResponse"}},"text/plain":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Errors.Model.InternalServerErrorResponse"}}}}},"security":[{"apiKey":[]}]}},"/core/v1/contacts":{"post":{"tags":["Contacts"],"summary":"List Contacts","description":"This endpoint retrieves a detailed list of contacts. The endpoint supports filtering and sorting based on various criteria.\r\n            \r\nA contact is an active individual associated with a client of an MSP, enriched with information such as their role, name and other contact-specific details.","operationId":"list-contacts","parameters":[{"name":"filter[id]","in":"query","description":"Filters records by using a query string on the field `id`.\n\nSupports comparison operators: `eq`, `in`.\n\nQuery examples:\n\n\n* `filter[id]=example_value` - to filter for exact match.\n\n \n* `filter[id]=eq:example_value` - to filter for exact match.\n\n \n* `filter[id]=in:example_value_1,example_value_2,example_value_3` - to filter when any item in the list matches.\n\n","schema":{"type":"string"},"example":"eq:example_value"},{"name":"filter[client.id]","in":"query","description":"Filters records by using a query string on the field `client.id`.\n\nSupports comparison operators: `eq`, `in`.\n\nQuery examples:\n\n\n* `filter[client.id]=example_value` - to filter for exact match.\n\n \n* `filter[client.id]=eq:example_value` - to filter for exact match.\n\n \n* `filter[client.id]=in:example_value_1,example_value_2,example_value_3` - to filter when any item in the list matches.\n\n","schema":{"type":"string"},"example":"eq:example_value"},{"name":"filter[client.name]","in":"query","description":"Filters records by using a query string on the field `client.name`.\n\nSupports comparison operators: `eq`, `in`, `cont`.\n\nQuery examples:\n\n\n* `filter[client.name]=example_value` - to filter for exact match.\n\n \n* `filter[client.name]=eq:example_value` - to filter for exact match.\n\n \n* `filter[client.name]=in:example_value_1,example_value_2,example_value_3` - to filter when any item in the list matches.\n\n \n* `filter[client.name]=cont:word` - to filter using a partial match.\n\n","schema":{"type":"string"},"example":"eq:example_value"},{"name":"filter[title]","in":"query","description":"Filters records by using a query string on the field `title`.\n\nSupports comparison operators: `eq`, `in`, `cont`.\n\nQuery examples:\n\n\n* `filter[title]=example_value` - to filter for exact match.\n\n \n* `filter[title]=eq:example_value` - to filter for exact match.\n\n \n* `filter[title]=in:example_value_1,example_value_2,example_value_3` - to filter when any item in the list matches.\n\n \n* `filter[title]=cont:word` - to filter using a partial match.\n\n","schema":{"type":"string"},"example":"eq:example_value"},{"name":"filter[record_created_at]","in":"query","description":"Filters records by using a query string on the field `record_created_at`.\n\nSupports comparison operators: `gt`, `gte`, `lt`, `lte`.\n\nQuery examples:\n\n\n* `filter[record_created_at]=gt:2023-01-01T00:00:00Z` - to filter for dates after\n\n \n* `filter[record_created_at]=gte:2023-01-01T00:00:00Z` - to filter for dates after or on\n\n \n* `filter[record_created_at]=lt:2023-01-01T00:00:00Z` - to filter for dates before\n\n \n* `filter[record_created_at]=lte:2023-01-01T00:00:00Z` - to filter for dates before or on\n\n","schema":{"type":"string"},"example":"gt:2023-01-01T00:00:00Z"},{"name":"filter[record_updated_at]","in":"query","description":"Filters records by using a query string on the field `record_updated_at`.\n\nSupports comparison operators: `gt`, `gte`, `lt`, `lte`.\n\nQuery examples:\n\n\n* `filter[record_updated_at]=gt:2023-01-01T00:00:00Z` - to filter for dates after\n\n \n* `filter[record_updated_at]=gte:2023-01-01T00:00:00Z` - to filter for dates after or on\n\n \n* `filter[record_updated_at]=lt:2023-01-01T00:00:00Z` - to filter for dates before\n\n \n* `filter[record_updated_at]=lte:2023-01-01T00:00:00Z` - to filter for dates before or on\n\n","schema":{"type":"string"},"example":"gt:2023-01-01T00:00:00Z"},{"name":"sort","in":"query","description":"One or more sortable fields, separated by commas. Prefix with '+' to sort ascending or '-' to sort descending.","schema":{"type":"array","items":{"enum":["client.id","client.name","title","contact_info.email","record_created_at","record_updated_at"],"type":"string"}}},{"name":"page_size","in":"query","description":"The number of records to be returned in a single page","schema":{"maximum":200,"minimum":1,"type":"integer","format":"int32"}},{"name":"cursor","in":"query","description":"The pointer used to fetch a certain page of records","schema":{"type":"string"}}],"requestBody":{"description":"\n\n---\n\n**Body-only filter fields (PII):**\n\n- `contact_info.email`\n- `name.full`\n\nThese fields **cannot** be supplied as query parameters (`filter[...]`). Provide them under the request body `filter` dictionary instead.\n\n**Body filter value format:**\n\n- Each entry under `filter` is: `\"<field>\": \"<operator>:<value>\"`\n\n**Quoting / escaping (strings):**\n\n- If a value contains spaces or commas, wrap it in quotes: `eq:\\\"John Smith\\\"`\n- If a value itself contains quotes, escape them: `eq:\\\"Acme \\\\\\\"Corp\\\\\\\"\\\"`\n\n**Examples:**\n\n- `contact_info.email`\n  - Supports comparison operators: `eq`, `in`.\n  - Examples:\n    - `{ \"filter\": { \"contact_info.email\": \"eq:example_value\" } }`\n    - `{ \"filter\": { \"contact_info.email\": \"in:example_value_1,example_value_2,example_value_3\" } }`\n\n- `name.full`\n  - Supports comparison operators: `eq`, `in`, `cont`.\n  - Examples:\n    - `{ \"filter\": { \"name.full\": \"eq:example_value\" } }`\n    - `{ \"filter\": { \"name.full\": \"in:example_value_1,example_value_2,example_value_3\" } }`\n    - `{ \"filter\": { \"name.full\": \"cont:word\" } }`","content":{"application/json":{"schema":{"type":"object","properties":{"filter":{"type":"object","properties":{"contact_info.email":{"type":"string","description":"Body-only filter. Value format: `<operator>:<value>`."},"name.full":{"type":"string","description":"Body-only filter. Value format: `<operator>:<value>`."}},"additionalProperties":{"type":"string","description":"Any other filter field from the query param list. Value format: `<operator>:<value>`."}}}},"example":{"filter":{"contact_info.email":"eq:example_value","name.full":"eq:example_value"}}},"application/*+json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Filters.Model.BodyFilterContainer_SpApi.CoreApi.Core.v1.Contacts.Model.Contact_"}],"description":"Parsed request-body filter container.\r\n\r\nThe request JSON shape is:\r\n{\r\n  \"filter\": {\r\n    \"name.full\": \"cont:\\\"Luke\\\"\",\r\n    \"contact_info.email\": \"eq:\\\"a@b.com\\\"\"\r\n  }\r\n}\r\n\r\nThis container is NOT directly JSON-deserialized.\r\nA custom input formatter reads the JSON, validates/parses it via SpApi.CoreApi.Packages.Core.Packages.Filters.Logic.ICoreFilterParserService,\r\nand produces this type so controllers receive a ready-to-use Wm.Search.Model.Query.Field.Filter.QueryFilter.QueryFilter."}},"text/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Filters.Model.BodyFilterContainer_SpApi.CoreApi.Core.v1.Contacts.Model.Contact_"}],"description":"Parsed request-body filter container.\r\n\r\nThe request JSON shape is:\r\n{\r\n  \"filter\": {\r\n    \"name.full\": \"cont:\\\"Luke\\\"\",\r\n    \"contact_info.email\": \"eq:\\\"a@b.com\\\"\"\r\n  }\r\n}\r\n\r\nThis container is NOT directly JSON-deserialized.\r\nA custom input formatter reads the JSON, validates/parses it via SpApi.CoreApi.Packages.Core.Packages.Filters.Logic.ICoreFilterParserService,\r\nand produces this type so controllers receive a ready-to-use Wm.Search.Model.Query.Field.Filter.QueryFilter.QueryFilter."}},"application/json-patch+json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Filters.Model.BodyFilterContainer_SpApi.CoreApi.Core.v1.Contacts.Model.Contact_"}],"description":"Parsed request-body filter container.\r\n\r\nThe request JSON shape is:\r\n{\r\n  \"filter\": {\r\n    \"name.full\": \"cont:\\\"Luke\\\"\",\r\n    \"contact_info.email\": \"eq:\\\"a@b.com\\\"\"\r\n  }\r\n}\r\n\r\nThis container is NOT directly JSON-deserialized.\r\nA custom input formatter reads the JSON, validates/parses it via SpApi.CoreApi.Packages.Core.Packages.Filters.Logic.ICoreFilterParserService,\r\nand produces this type so controllers receive a ready-to-use Wm.Search.Model.Query.Field.Filter.QueryFilter.QueryFilter."}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Model.PaginatedResponse_SpApi.CoreApi.Core.v1.Contacts.Model.Contact_"}},"text/json":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Model.PaginatedResponse_SpApi.CoreApi.Core.v1.Contacts.Model.Contact_"}},"text/plain":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Model.PaginatedResponse_SpApi.CoreApi.Core.v1.Contacts.Model.Contact_"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Errors.Model.BadRequestResponse"}},"text/json":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Errors.Model.BadRequestResponse"}},"text/plain":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Errors.Model.BadRequestResponse"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Errors.Model.InternalServerErrorResponse"}},"text/json":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Errors.Model.InternalServerErrorResponse"}},"text/plain":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Errors.Model.InternalServerErrorResponse"}}}}},"security":[{"apiKey":[]}]}},"/core/v1/contacts/{id}":{"get":{"tags":["Contacts"],"summary":"Get Contact","description":"This endpoint retrieves a single contact, identified by its unique ID.\r\n            \r\nA contact is an active individual associated with a client of an MSP, enriched with information such as their role, name and other contact-specific details.","operationId":"get-contact","parameters":[{"name":"id","in":"path","description":"Identifier of the contact","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.v1.Contacts.Model.Contact"}},"text/json":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.v1.Contacts.Model.Contact"}},"text/plain":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.v1.Contacts.Model.Contact"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Errors.Model.BadRequestResponse"}},"text/json":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Errors.Model.BadRequestResponse"}},"text/plain":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Errors.Model.BadRequestResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Errors.Model.NotFoundResponse"}},"text/json":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Errors.Model.NotFoundResponse"}},"text/plain":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Errors.Model.NotFoundResponse"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Errors.Model.InternalServerErrorResponse"}},"text/json":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Errors.Model.InternalServerErrorResponse"}},"text/plain":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Errors.Model.InternalServerErrorResponse"}}}}},"security":[{"apiKey":[]}]}},"/core/v1/integrations/configurations":{"get":{"tags":["Integrations"],"summary":"List Integration Configurations","description":"This endpoint returns the list of integration configurations associated with the MSP. It indicates which configurations are the primary integrations associated with specific entities.\r\n            \r\nAn integration configuration is a specific instance of an integration.","operationId":"list-integration-configurations","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.v1.Integrations.Configurations.IntegrationConfigurations"}},"text/json":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.v1.Integrations.Configurations.IntegrationConfigurations"}},"text/plain":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.v1.Integrations.Configurations.IntegrationConfigurations"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Errors.Model.InternalServerErrorResponse"}},"text/json":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Errors.Model.InternalServerErrorResponse"}},"text/plain":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Errors.Model.InternalServerErrorResponse"}}}}},"security":[{"apiKey":[]}]}},"/core/v1/integrations/vendors":{"get":{"tags":["Integrations"],"summary":"List Integration Vendors","description":"This endpoint retrieves a complete list of integration vendors which can be used to identify third-party services and platforms that can be integrated with.","operationId":"list-integration-vendors","parameters":[{"name":"filter[name]","in":"query","description":"Filters records by using a query string on the field `name`.\n\nSupports comparison operators: `eq`, `in`, `cont`.\n\nQuery examples:\n\n\n* `filter[name]=example_value` - to filter for exact match.\n\n \n* `filter[name]=eq:example_value` - to filter for exact match.\n\n \n* `filter[name]=in:example_value_1,example_value_2,example_value_3` - to filter when any item in the list matches.\n\n \n* `filter[name]=cont:word` - to filter using a partial match.\n\n","schema":{"type":"string"},"example":"eq:example_value"},{"name":"filter[vendor_id]","in":"query","description":"Filters records by using a query string on the field `vendor_id`.\n\nSupports comparison operators: `eq`, `in`.\n\nQuery examples:\n\n\n* `filter[vendor_id]=example_value` - to filter for exact match.\n\n \n* `filter[vendor_id]=eq:example_value` - to filter for exact match.\n\n \n* `filter[vendor_id]=in:example_value_1,example_value_2,example_value_3` - to filter when any item in the list matches.\n\n","schema":{"type":"string"},"example":"eq:example_value"},{"name":"filter[category]","in":"query","description":"Filters records by using a query string on the field `category`.\n\n\n\n*Possible values*: `PSA`, `RMM`, `SaaS`, `Network`, `Documentation`, `Backup`, `Customer Satisfaction`, `Cybersecurity`, `PSA & RMM`, `Backup`.\n\n\n\nSupports comparison operators: `eq`, `in`, `cont`.\n\nQuery examples:\n\n\n* `filter[category]=PSA` - to filter for exact match.\n\n \n* `filter[category]=eq:PSA` - to filter for exact match.\n\n \n* `filter[category]=in:PSA,RMM,SaaS` - to filter when any item in the list matches.\n\n \n* `filter[category]=cont:PSA` - to filter using a partial match.\n\n","schema":{"type":"string"},"example":"eq:example_value"},{"name":"filter[data_types_supported]","in":"query","description":"Filters records by using a query string on the field `data_types_supported`.\n\n\n\n*Possible values*: `CLIENT`, `CONTRACT`, `CONTACT`, `HARDWARE_ASSET`, `MEMBER`, `OPPORTUNITY`, `SAAS_ASSET`, `SAAS_USER`, `TICKET`.\n\n\n\nSupports comparison operators: `eq`, `in`.\n\nQuery examples:\n\n\n* `filter[data_types_supported]=CLIENT` - to filter for exact match.\n\n \n* `filter[data_types_supported]=eq:CLIENT` - to filter for exact match.\n\n \n* `filter[data_types_supported]=in:CLIENT,CONTRACT,CONTACT` - to filter when any item in the list matches.\n\n","schema":{"type":"string"},"example":"eq:example_value"},{"name":"page_size","in":"query","description":"The number of records to be returned in a single page","schema":{"maximum":200,"minimum":1,"type":"integer","format":"int32"}},{"name":"cursor","in":"query","description":"The pointer used to fetch a certain page of records","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.v1.Integrations.Model.Vendors"}}},"text/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.v1.Integrations.Model.Vendors"}}},"text/plain":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.v1.Integrations.Model.Vendors"}}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Errors.Model.BadRequestResponse"}},"text/json":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Errors.Model.BadRequestResponse"}},"text/plain":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Errors.Model.BadRequestResponse"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Errors.Model.UnprocessableContentResponse"}},"text/json":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Errors.Model.UnprocessableContentResponse"}},"text/plain":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Errors.Model.UnprocessableContentResponse"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Errors.Model.InternalServerErrorResponse"}},"text/json":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Errors.Model.InternalServerErrorResponse"}},"text/plain":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Errors.Model.InternalServerErrorResponse"}}}}},"security":[{"apiKey":[]}]}},"/core/v1/members":{"post":{"tags":["Members"],"summary":"List Members","description":"This endpoint retrieves a detailed list of members. The endpoint supports filtering and sorting based on various criteria.\r\n            \r\nA member is an active user (employee, contractor, downstream IT, etc.) within the MSP, enriched with details including their roles, access to ScalePad products, and other associated employee attributes.","operationId":"list-members","parameters":[{"name":"filter[id]","in":"query","description":"Filters records by using a query string on the field `id`.\n\nSupports comparison operators: `eq`, `in`.\n\nQuery examples:\n\n\n* `filter[id]=example_value` - to filter for exact match.\n\n \n* `filter[id]=eq:example_value` - to filter for exact match.\n\n \n* `filter[id]=in:example_value_1,example_value_2,example_value_3` - to filter when any item in the list matches.\n\n","schema":{"type":"string"},"example":"eq:example_value"},{"name":"filter[hired_at]","in":"query","description":"Filters records by using a query string on the field `hired_at`.\n\nSupports comparison operators: `gt`, `gte`, `lt`, `lte`.\n\nQuery examples:\n\n\n* `filter[hired_at]=gt:2023-01-01T00:00:00Z` - to filter for dates after\n\n \n* `filter[hired_at]=gte:2023-01-01T00:00:00Z` - to filter for dates after or on\n\n \n* `filter[hired_at]=lt:2023-01-01T00:00:00Z` - to filter for dates before\n\n \n* `filter[hired_at]=lte:2023-01-01T00:00:00Z` - to filter for dates before or on\n\n","schema":{"type":"string"},"example":"gt:2023-01-01T00:00:00Z"},{"name":"filter[title]","in":"query","description":"Filters records by using a query string on the field `title`.\n\nSupports comparison operators: `eq`, `in`, `cont`.\n\nQuery examples:\n\n\n* `filter[title]=example_value` - to filter for exact match.\n\n \n* `filter[title]=eq:example_value` - to filter for exact match.\n\n \n* `filter[title]=in:example_value_1,example_value_2,example_value_3` - to filter when any item in the list matches.\n\n \n* `filter[title]=cont:word` - to filter using a partial match.\n\n","schema":{"type":"string"},"example":"eq:example_value"},{"name":"filter[is_scalepad_user]","in":"query","description":"Filters records by using a query string on the field `is_scalepad_user`.\n\nSupports comparison operators: `eq`.\n\nQuery examples:\n\n\n* `filter[is_scalepad_user]=true` - to filter for exact match.\n\n \n* `filter[is_scalepad_user]=eq:true` - to filter for exact match.\n\n","schema":{"type":"string"},"example":"eq:true"},{"name":"filter[reports_to_member.id]","in":"query","description":"Filters records by using a query string on the field `reports_to_member.id`.\n\nSupports comparison operators: `eq`, `in`.\n\nQuery examples:\n\n\n* `filter[reports_to_member.id]=example_value` - to filter for exact match.\n\n \n* `filter[reports_to_member.id]=eq:example_value` - to filter for exact match.\n\n \n* `filter[reports_to_member.id]=in:example_value_1,example_value_2,example_value_3` - to filter when any item in the list matches.\n\n","schema":{"type":"string"},"example":"eq:example_value"},{"name":"filter[hourly_cost.amount]","in":"query","description":"Filters records by using a query string on the field `hourly_cost.amount`.\n\nSupports comparison operators: `eq`, `gt`, `gte`, `lt`, `lte`.\n\nQuery examples:\n\n\n* `filter[hourly_cost.amount]=42.5` - to filter for exact match.\n\n \n* `filter[hourly_cost.amount]=eq:42.5` - to filter for exact match.\n\n \n* `filter[hourly_cost.amount]=gt:42` - to filter for greater than\n\n \n* `filter[hourly_cost.amount]=gte:42` - to filter for greater than or equal to\n\n \n* `filter[hourly_cost.amount]=lt:42` - to filter for less than\n\n \n* `filter[hourly_cost.amount]=lte:42` - to filter for less than or equal to\n\n","schema":{"type":"string"},"example":"eq:42.5"},{"name":"filter[daily_capacity]","in":"query","description":"Filters records by using a query string on the field `daily_capacity`.\n\nSupports comparison operators: `eq`, `gt`, `gte`, `lt`, `lte`.\n\nQuery examples:\n\n\n* `filter[daily_capacity]=42` - to filter for exact match.\n\n \n* `filter[daily_capacity]=eq:42` - to filter for exact match.\n\n \n* `filter[daily_capacity]=gt:42` - to filter for greater than\n\n \n* `filter[daily_capacity]=gte:42` - to filter for greater than or equal to\n\n \n* `filter[daily_capacity]=lt:42` - to filter for less than\n\n \n* `filter[daily_capacity]=lte:42` - to filter for less than or equal to\n\n","schema":{"type":"string"},"example":"eq:42"},{"name":"filter[record_created_at]","in":"query","description":"Filters records by using a query string on the field `record_created_at`.\n\nSupports comparison operators: `gt`, `gte`, `lt`, `lte`.\n\nQuery examples:\n\n\n* `filter[record_created_at]=gt:2023-01-01T00:00:00Z` - to filter for dates after\n\n \n* `filter[record_created_at]=gte:2023-01-01T00:00:00Z` - to filter for dates after or on\n\n \n* `filter[record_created_at]=lt:2023-01-01T00:00:00Z` - to filter for dates before\n\n \n* `filter[record_created_at]=lte:2023-01-01T00:00:00Z` - to filter for dates before or on\n\n","schema":{"type":"string"},"example":"gt:2023-01-01T00:00:00Z"},{"name":"filter[record_updated_at]","in":"query","description":"Filters records by using a query string on the field `record_updated_at`.\n\nSupports comparison operators: `gt`, `gte`, `lt`, `lte`.\n\nQuery examples:\n\n\n* `filter[record_updated_at]=gt:2023-01-01T00:00:00Z` - to filter for dates after\n\n \n* `filter[record_updated_at]=gte:2023-01-01T00:00:00Z` - to filter for dates after or on\n\n \n* `filter[record_updated_at]=lt:2023-01-01T00:00:00Z` - to filter for dates before\n\n \n* `filter[record_updated_at]=lte:2023-01-01T00:00:00Z` - to filter for dates before or on\n\n","schema":{"type":"string"},"example":"gt:2023-01-01T00:00:00Z"},{"name":"sort","in":"query","description":"One or more sortable fields, separated by commas. Prefix with '+' to sort ascending or '-' to sort descending.","schema":{"type":"array","items":{"enum":["hired_at","title","is_scalepad_user","hourly_cost.amount","daily_capacity","record_created_at","record_updated_at"],"type":"string"}}},{"name":"page_size","in":"query","description":"The number of records to be returned in a single page","schema":{"maximum":200,"minimum":1,"type":"integer","format":"int32"}},{"name":"cursor","in":"query","description":"The pointer used to fetch a certain page of records","schema":{"type":"string"}}],"requestBody":{"description":"\n\n---\n\n**Body-only filter fields (PII):**\n\n- `contact_info.email`\n- `contact_info.phone`\n- `name.full`\n\nThese fields **cannot** be supplied as query parameters (`filter[...]`). Provide them under the request body `filter` dictionary instead.\n\n**Body filter value format:**\n\n- Each entry under `filter` is: `\"<field>\": \"<operator>:<value>\"`\n\n**Quoting / escaping (strings):**\n\n- If a value contains spaces or commas, wrap it in quotes: `eq:\\\"John Smith\\\"`\n- If a value itself contains quotes, escape them: `eq:\\\"Acme \\\\\\\"Corp\\\\\\\"\\\"`\n\n**Examples:**\n\n- `contact_info.email`\n  - Supports comparison operators: `eq`, `in`.\n  - Examples:\n    - `{ \"filter\": { \"contact_info.email\": \"eq:example_value\" } }`\n    - `{ \"filter\": { \"contact_info.email\": \"in:example_value_1,example_value_2,example_value_3\" } }`\n\n- `contact_info.phone`\n  - Supports comparison operators: `eq`, `in`.\n  - Examples:\n    - `{ \"filter\": { \"contact_info.phone\": \"eq:example_value\" } }`\n    - `{ \"filter\": { \"contact_info.phone\": \"in:example_value_1,example_value_2,example_value_3\" } }`\n\n- `name.full`\n  - Supports comparison operators: `eq`, `in`, `cont`.\n  - Examples:\n    - `{ \"filter\": { \"name.full\": \"eq:example_value\" } }`\n    - `{ \"filter\": { \"name.full\": \"in:example_value_1,example_value_2,example_value_3\" } }`\n    - `{ \"filter\": { \"name.full\": \"cont:word\" } }`","content":{"application/json":{"schema":{"type":"object","properties":{"filter":{"type":"object","properties":{"contact_info.email":{"type":"string","description":"Body-only filter. Value format: `<operator>:<value>`."},"contact_info.phone":{"type":"string","description":"Body-only filter. Value format: `<operator>:<value>`."},"name.full":{"type":"string","description":"Body-only filter. Value format: `<operator>:<value>`."}},"additionalProperties":{"type":"string","description":"Any other filter field from the query param list. Value format: `<operator>:<value>`."}}}},"example":{"filter":{"contact_info.email":"eq:example_value","contact_info.phone":"eq:example_value","name.full":"eq:example_value"}}},"application/*+json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Filters.Model.BodyFilterContainer_SpApi.CoreApi.Core.v1.Members.Model.Member_"}],"description":"Parsed request-body filter container.\r\n\r\nThe request JSON shape is:\r\n{\r\n  \"filter\": {\r\n    \"name.full\": \"cont:\\\"Luke\\\"\",\r\n    \"contact_info.email\": \"eq:\\\"a@b.com\\\"\"\r\n  }\r\n}\r\n\r\nThis container is NOT directly JSON-deserialized.\r\nA custom input formatter reads the JSON, validates/parses it via SpApi.CoreApi.Packages.Core.Packages.Filters.Logic.ICoreFilterParserService,\r\nand produces this type so controllers receive a ready-to-use Wm.Search.Model.Query.Field.Filter.QueryFilter.QueryFilter."}},"text/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Filters.Model.BodyFilterContainer_SpApi.CoreApi.Core.v1.Members.Model.Member_"}],"description":"Parsed request-body filter container.\r\n\r\nThe request JSON shape is:\r\n{\r\n  \"filter\": {\r\n    \"name.full\": \"cont:\\\"Luke\\\"\",\r\n    \"contact_info.email\": \"eq:\\\"a@b.com\\\"\"\r\n  }\r\n}\r\n\r\nThis container is NOT directly JSON-deserialized.\r\nA custom input formatter reads the JSON, validates/parses it via SpApi.CoreApi.Packages.Core.Packages.Filters.Logic.ICoreFilterParserService,\r\nand produces this type so controllers receive a ready-to-use Wm.Search.Model.Query.Field.Filter.QueryFilter.QueryFilter."}},"application/json-patch+json":{"schema":{"allOf":[{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Filters.Model.BodyFilterContainer_SpApi.CoreApi.Core.v1.Members.Model.Member_"}],"description":"Parsed request-body filter container.\r\n\r\nThe request JSON shape is:\r\n{\r\n  \"filter\": {\r\n    \"name.full\": \"cont:\\\"Luke\\\"\",\r\n    \"contact_info.email\": \"eq:\\\"a@b.com\\\"\"\r\n  }\r\n}\r\n\r\nThis container is NOT directly JSON-deserialized.\r\nA custom input formatter reads the JSON, validates/parses it via SpApi.CoreApi.Packages.Core.Packages.Filters.Logic.ICoreFilterParserService,\r\nand produces this type so controllers receive a ready-to-use Wm.Search.Model.Query.Field.Filter.QueryFilter.QueryFilter."}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Model.PaginatedResponse_SpApi.CoreApi.Core.v1.Members.Model.Member_"}},"text/json":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Model.PaginatedResponse_SpApi.CoreApi.Core.v1.Members.Model.Member_"}},"text/plain":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Model.PaginatedResponse_SpApi.CoreApi.Core.v1.Members.Model.Member_"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Errors.Model.BadRequestResponse"}},"text/json":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Errors.Model.BadRequestResponse"}},"text/plain":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Errors.Model.BadRequestResponse"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Errors.Model.InternalServerErrorResponse"}},"text/json":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Errors.Model.InternalServerErrorResponse"}},"text/plain":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Errors.Model.InternalServerErrorResponse"}}}}},"security":[{"apiKey":[]}]}},"/core/v1/members/{id}":{"get":{"tags":["Members"],"summary":"Get Member","description":"This endpoint retrieves a single member, identified by its unique ID.\r\n            \r\nA member is an active user (employee, contractor, downstream IT, etc.) within the MSP, enriched with details including their roles, access to ScalePad products, and other associated employee attributes.","operationId":"get-member","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.v1.Members.Model.Member"}},"text/json":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.v1.Members.Model.Member"}},"text/plain":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.v1.Members.Model.Member"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Errors.Model.BadRequestResponse"}},"text/json":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Errors.Model.BadRequestResponse"}},"text/plain":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Errors.Model.BadRequestResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Errors.Model.NotFoundResponse"}},"text/json":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Errors.Model.NotFoundResponse"}},"text/plain":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Errors.Model.NotFoundResponse"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Errors.Model.InternalServerErrorResponse"}},"text/json":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Errors.Model.InternalServerErrorResponse"}},"text/plain":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Errors.Model.InternalServerErrorResponse"}}}}},"security":[{"apiKey":[]}]}},"/core/v1/opportunities":{"get":{"tags":["Opportunities"],"summary":"List Opportunities","description":"This endpoint retrieves a detailed list of opportunities. The endpoint supports filtering and sorting based on various criteria.\r\n            \r\nAn opportunity is a sales opportunity for an active client managed by the MSP, enriched with information such as status, stage, associated contact, and other sales-related information.","operationId":"list-opportunities","parameters":[{"name":"filter[id]","in":"query","description":"Filters records by using a query string on the field `id`.\n\nSupports comparison operators: `eq`, `in`.\n\nQuery examples:\n\n\n* `filter[id]=example_value` - to filter for exact match.\n\n \n* `filter[id]=eq:example_value` - to filter for exact match.\n\n \n* `filter[id]=in:example_value_1,example_value_2,example_value_3` - to filter when any item in the list matches.\n\n","schema":{"type":"string"},"example":"eq:example_value"},{"name":"filter[title]","in":"query","description":"Filters records by using a query string on the field `title`.\n\nSupports comparison operators: `eq`, `in`, `cont`.\n\nQuery examples:\n\n\n* `filter[title]=example_value` - to filter for exact match.\n\n \n* `filter[title]=eq:example_value` - to filter for exact match.\n\n \n* `filter[title]=in:example_value_1,example_value_2,example_value_3` - to filter when any item in the list matches.\n\n \n* `filter[title]=cont:word` - to filter using a partial match.\n\n","schema":{"type":"string"},"example":"eq:example_value"},{"name":"filter[source_status]","in":"query","description":"Filters records by using a query string on the field `source_status`.\n\nSupports comparison operators: `eq`, `in`.\n\nQuery examples:\n\n\n* `filter[source_status]=example_value` - to filter for exact match.\n\n \n* `filter[source_status]=eq:example_value` - to filter for exact match.\n\n \n* `filter[source_status]=in:example_value_1,example_value_2,example_value_3` - to filter when any item in the list matches.\n\n","schema":{"type":"string"},"example":"eq:example_value"},{"name":"filter[source_stage]","in":"query","description":"Filters records by using a query string on the field `source_stage`.\n\nSupports comparison operators: `eq`, `in`.\n\nQuery examples:\n\n\n* `filter[source_stage]=example_value` - to filter for exact match.\n\n \n* `filter[source_stage]=eq:example_value` - to filter for exact match.\n\n \n* `filter[source_stage]=in:example_value_1,example_value_2,example_value_3` - to filter when any item in the list matches.\n\n","schema":{"type":"string"},"example":"eq:example_value"},{"name":"filter[is_active]","in":"query","description":"Filters records by using a query string on the field `is_active`.\n\nSupports comparison operators: `eq`.\n\nQuery examples:\n\n\n* `filter[is_active]=true` - to filter for exact match.\n\n \n* `filter[is_active]=eq:true` - to filter for exact match.\n\n","schema":{"type":"string"},"example":"eq:true"},{"name":"filter[probability]","in":"query","description":"Filters records by using a query string on the field `probability`.\n\nSupports comparison operators: `eq`, `gt`, `gte`, `lt`, `lte`.\n\nQuery examples:\n\n\n* `filter[probability]=42` - to filter for exact match.\n\n \n* `filter[probability]=eq:42` - to filter for exact match.\n\n \n* `filter[probability]=gt:42` - to filter for greater than\n\n \n* `filter[probability]=gte:42` - to filter for greater than or equal to\n\n \n* `filter[probability]=lt:42` - to filter for less than\n\n \n* `filter[probability]=lte:42` - to filter for less than or equal to\n\n","schema":{"type":"string"},"example":"eq:42"},{"name":"filter[client.id]","in":"query","description":"Filters records by using a query string on the field `client.id`.\n\nSupports comparison operators: `eq`, `in`.\n\nQuery examples:\n\n\n* `filter[client.id]=example_value` - to filter for exact match.\n\n \n* `filter[client.id]=eq:example_value` - to filter for exact match.\n\n \n* `filter[client.id]=in:example_value_1,example_value_2,example_value_3` - to filter when any item in the list matches.\n\n","schema":{"type":"string"},"example":"eq:example_value"},{"name":"filter[client.name]","in":"query","description":"Filters records by using a query string on the field `client.name`.\n\nSupports comparison operators: `eq`, `in`, `cont`.\n\nQuery examples:\n\n\n* `filter[client.name]=example_value` - to filter for exact match.\n\n \n* `filter[client.name]=eq:example_value` - to filter for exact match.\n\n \n* `filter[client.name]=in:example_value_1,example_value_2,example_value_3` - to filter when any item in the list matches.\n\n \n* `filter[client.name]=cont:word` - to filter using a partial match.\n\n","schema":{"type":"string"},"example":"eq:example_value"},{"name":"filter[contact.id]","in":"query","description":"Filters records by using a query string on the field `contact.id`.\n\nSupports comparison operators: `eq`, `in`.\n\nQuery examples:\n\n\n* `filter[contact.id]=example_value` - to filter for exact match.\n\n \n* `filter[contact.id]=eq:example_value` - to filter for exact match.\n\n \n* `filter[contact.id]=in:example_value_1,example_value_2,example_value_3` - to filter when any item in the list matches.\n\n","schema":{"type":"string"},"example":"eq:example_value"},{"name":"filter[responsible_member.id]","in":"query","description":"Filters records by using a query string on the field `responsible_member.id`.\n\nSupports comparison operators: `eq`, `in`.\n\nQuery examples:\n\n\n* `filter[responsible_member.id]=example_value` - to filter for exact match.\n\n \n* `filter[responsible_member.id]=eq:example_value` - to filter for exact match.\n\n \n* `filter[responsible_member.id]=in:example_value_1,example_value_2,example_value_3` - to filter when any item in the list matches.\n\n","schema":{"type":"string"},"example":"eq:example_value"},{"name":"filter[record_created_at]","in":"query","description":"Filters records by using a query string on the field `record_created_at`.\n\nSupports comparison operators: `gt`, `gte`, `lt`, `lte`.\n\nQuery examples:\n\n\n* `filter[record_created_at]=gt:2023-01-01T00:00:00Z` - to filter for dates after\n\n \n* `filter[record_created_at]=gte:2023-01-01T00:00:00Z` - to filter for dates after or on\n\n \n* `filter[record_created_at]=lt:2023-01-01T00:00:00Z` - to filter for dates before\n\n \n* `filter[record_created_at]=lte:2023-01-01T00:00:00Z` - to filter for dates before or on\n\n","schema":{"type":"string"},"example":"gt:2023-01-01T00:00:00Z"},{"name":"filter[record_updated_at]","in":"query","description":"Filters records by using a query string on the field `record_updated_at`.\n\nSupports comparison operators: `gt`, `gte`, `lt`, `lte`.\n\nQuery examples:\n\n\n* `filter[record_updated_at]=gt:2023-01-01T00:00:00Z` - to filter for dates after\n\n \n* `filter[record_updated_at]=gte:2023-01-01T00:00:00Z` - to filter for dates after or on\n\n \n* `filter[record_updated_at]=lt:2023-01-01T00:00:00Z` - to filter for dates before\n\n \n* `filter[record_updated_at]=lte:2023-01-01T00:00:00Z` - to filter for dates before or on\n\n","schema":{"type":"string"},"example":"gt:2023-01-01T00:00:00Z"},{"name":"sort","in":"query","description":"One or more sortable fields, separated by commas. Prefix with '+' to sort ascending or '-' to sort descending.","schema":{"type":"array","items":{"enum":["title","source_status","source_stage","is_active","probability","client.id","client.name","contact.id","responsible_member.id","record_created_at","record_updated_at"],"type":"string"}}},{"name":"page_size","in":"query","description":"The number of records to be returned in a single page","schema":{"maximum":200,"minimum":1,"type":"integer","format":"int32"}},{"name":"cursor","in":"query","description":"The pointer used to fetch a certain page of records","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Model.PaginatedResponse_SpApi.CoreApi.Core.v1.Opportunities.Model.Opportunity_"}},"text/json":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Model.PaginatedResponse_SpApi.CoreApi.Core.v1.Opportunities.Model.Opportunity_"}},"text/plain":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Model.PaginatedResponse_SpApi.CoreApi.Core.v1.Opportunities.Model.Opportunity_"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Errors.Model.BadRequestResponse"}},"text/json":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Errors.Model.BadRequestResponse"}},"text/plain":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Errors.Model.BadRequestResponse"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Errors.Model.InternalServerErrorResponse"}},"text/json":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Errors.Model.InternalServerErrorResponse"}},"text/plain":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Errors.Model.InternalServerErrorResponse"}}}}},"security":[{"apiKey":[]}]}},"/core/v1/opportunities/{id}":{"get":{"tags":["Opportunities"],"summary":"Get Opportunity","description":"This endpoint retrieves a single opportunity, identified by its unique ID.\r\n            \r\nAn opportunity is a sales opportunity for an active client managed by the MSP, enriched with information such as status, stage, associated contact, and other sales-related information.","operationId":"get-opportunity","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.v1.Opportunities.Model.Opportunity"}},"text/json":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.v1.Opportunities.Model.Opportunity"}},"text/plain":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.v1.Opportunities.Model.Opportunity"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Errors.Model.BadRequestResponse"}},"text/json":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Errors.Model.BadRequestResponse"}},"text/plain":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Errors.Model.BadRequestResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Errors.Model.NotFoundResponse"}},"text/json":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Errors.Model.NotFoundResponse"}},"text/plain":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Errors.Model.NotFoundResponse"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Errors.Model.InternalServerErrorResponse"}},"text/json":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Errors.Model.InternalServerErrorResponse"}},"text/plain":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Errors.Model.InternalServerErrorResponse"}}}}},"security":[{"apiKey":[]}]}},"/core/v1/service/contracts":{"get":{"tags":["Contracts"],"summary":"List Contracts","description":"This endpoint retrieves a detailed list of contracts. The endpoint supports filtering and sorting based on various criteria.\r\n            \r\nA contract is a formal agreement between the MSP and its active client, enriched with information such as the associated client, contact, and other agreement-specific details.","operationId":"list-contracts","parameters":[{"name":"filter[id]","in":"query","description":"Filters records by using a query string on the field `id`.\n\nSupports comparison operators: `eq`, `in`.\n\nQuery examples:\n\n\n* `filter[id]=example_value` - to filter for exact match.\n\n \n* `filter[id]=eq:example_value` - to filter for exact match.\n\n \n* `filter[id]=in:example_value_1,example_value_2,example_value_3` - to filter when any item in the list matches.\n\n","schema":{"type":"string"},"example":"eq:example_value"},{"name":"filter[name]","in":"query","description":"Filters records by using a query string on the field `name`.\n\nSupports comparison operators: `eq`, `in`, `cont`.\n\nQuery examples:\n\n\n* `filter[name]=example_value` - to filter for exact match.\n\n \n* `filter[name]=eq:example_value` - to filter for exact match.\n\n \n* `filter[name]=in:example_value_1,example_value_2,example_value_3` - to filter when any item in the list matches.\n\n \n* `filter[name]=cont:word` - to filter using a partial match.\n\n","schema":{"type":"string"},"example":"eq:example_value"},{"name":"filter[client.id]","in":"query","description":"Filters records by using a query string on the field `client.id`.\n\nSupports comparison operators: `eq`, `in`.\n\nQuery examples:\n\n\n* `filter[client.id]=example_value` - to filter for exact match.\n\n \n* `filter[client.id]=eq:example_value` - to filter for exact match.\n\n \n* `filter[client.id]=in:example_value_1,example_value_2,example_value_3` - to filter when any item in the list matches.\n\n","schema":{"type":"string"},"example":"eq:example_value"},{"name":"filter[client.name]","in":"query","description":"Filters records by using a query string on the field `client.name`.\n\nSupports comparison operators: `eq`, `in`, `cont`.\n\nQuery examples:\n\n\n* `filter[client.name]=example_value` - to filter for exact match.\n\n \n* `filter[client.name]=eq:example_value` - to filter for exact match.\n\n \n* `filter[client.name]=in:example_value_1,example_value_2,example_value_3` - to filter when any item in the list matches.\n\n \n* `filter[client.name]=cont:word` - to filter using a partial match.\n\n","schema":{"type":"string"},"example":"eq:example_value"},{"name":"filter[contact.id]","in":"query","description":"Filters records by using a query string on the field `contact.id`.\n\nSupports comparison operators: `eq`, `in`.\n\nQuery examples:\n\n\n* `filter[contact.id]=example_value` - to filter for exact match.\n\n \n* `filter[contact.id]=eq:example_value` - to filter for exact match.\n\n \n* `filter[contact.id]=in:example_value_1,example_value_2,example_value_3` - to filter when any item in the list matches.\n\n","schema":{"type":"string"},"example":"eq:example_value"},{"name":"filter[is_recurring]","in":"query","description":"Filters records by using a query string on the field `is_recurring`.\n\nSupports comparison operators: `eq`.\n\nQuery examples:\n\n\n* `filter[is_recurring]=true` - to filter for exact match.\n\n \n* `filter[is_recurring]=eq:true` - to filter for exact match.\n\n","schema":{"type":"string"},"example":"eq:true"},{"name":"filter[type]","in":"query","description":"Filters records by using a query string on the field `type`.\n\n\n\n*Possible values*: `MANAGED_SERVICES`, `BLOCK`, `3RD_PARTY`, `UNASSIGNED`.\n\n\n\nSupports comparison operators: `eq`, `in`.\n\nQuery examples:\n\n\n* `filter[type]=MANAGED_SERVICES` - to filter for exact match.\n\n \n* `filter[type]=eq:MANAGED_SERVICES` - to filter for exact match.\n\n \n* `filter[type]=in:MANAGED_SERVICES,BLOCK,3RD_PARTY` - to filter when any item in the list matches.\n\n","schema":{"type":"string"},"example":"eq:example_value"},{"name":"filter[term.starts_at]","in":"query","description":"Filters records by using a query string on the field `term.starts_at`.\n\nSupports comparison operators: `gt`, `gte`, `lt`, `lte`.\n\nQuery examples:\n\n\n* `filter[term.starts_at]=gt:2023-01-01T00:00:00Z` - to filter for dates after\n\n \n* `filter[term.starts_at]=gte:2023-01-01T00:00:00Z` - to filter for dates after or on\n\n \n* `filter[term.starts_at]=lt:2023-01-01T00:00:00Z` - to filter for dates before\n\n \n* `filter[term.starts_at]=lte:2023-01-01T00:00:00Z` - to filter for dates before or on\n\n","schema":{"type":"string"},"example":"gt:2023-01-01T00:00:00Z"},{"name":"filter[term.ends_at]","in":"query","description":"Filters records by using a query string on the field `term.ends_at`.\n\nSupports comparison operators: `gt`, `gte`, `lt`, `lte`.\n\nQuery examples:\n\n\n* `filter[term.ends_at]=gt:2023-01-01T00:00:00Z` - to filter for dates after\n\n \n* `filter[term.ends_at]=gte:2023-01-01T00:00:00Z` - to filter for dates after or on\n\n \n* `filter[term.ends_at]=lt:2023-01-01T00:00:00Z` - to filter for dates before\n\n \n* `filter[term.ends_at]=lte:2023-01-01T00:00:00Z` - to filter for dates before or on\n\n","schema":{"type":"string"},"example":"gt:2023-01-01T00:00:00Z"},{"name":"filter[term.is_auto_renew]","in":"query","description":"Filters records by using a query string on the field `term.is_auto_renew`.\n\nSupports comparison operators: `eq`.\n\nQuery examples:\n\n\n* `filter[term.is_auto_renew]=true` - to filter for exact match.\n\n \n* `filter[term.is_auto_renew]=eq:true` - to filter for exact match.\n\n","schema":{"type":"string"},"example":"eq:true"},{"name":"filter[term.billing_period]","in":"query","description":"Filters records by using a query string on the field `term.billing_period`.\n\n\n\n*Possible values*: `NOT_BILLED`, `ONE_TIME`, `ANNUAL`, `SEMI_ANNUAL`, `QUARTERLY`, `BI_MONTHLY`, `MONTHLY`, `BI_WEEKLY`, `WEEKLY`.\n\n\n\nSupports comparison operators: `eq`, `in`.\n\nQuery examples:\n\n\n* `filter[term.billing_period]=NOT_BILLED` - to filter for exact match.\n\n \n* `filter[term.billing_period]=eq:NOT_BILLED` - to filter for exact match.\n\n \n* `filter[term.billing_period]=in:NOT_BILLED,ONE_TIME,ANNUAL` - to filter when any item in the list matches.\n\n","schema":{"type":"string"},"example":"eq:example_value"},{"name":"filter[source_type]","in":"query","description":"Filters records by using a query string on the field `source_type`.\n\nSupports comparison operators: `eq`, `in`.\n\nQuery examples:\n\n\n* `filter[source_type]=example_value` - to filter for exact match.\n\n \n* `filter[source_type]=eq:example_value` - to filter for exact match.\n\n \n* `filter[source_type]=in:example_value_1,example_value_2,example_value_3` - to filter when any item in the list matches.\n\n","schema":{"type":"string"},"example":"eq:example_value"},{"name":"filter[is_addendum]","in":"query","description":"Filters records by using a query string on the field `is_addendum`.\n\nSupports comparison operators: `eq`.\n\nQuery examples:\n\n\n* `filter[is_addendum]=true` - to filter for exact match.\n\n \n* `filter[is_addendum]=eq:true` - to filter for exact match.\n\n","schema":{"type":"string"},"example":"eq:true"},{"name":"filter[parent_contract.id]","in":"query","description":"Filters records by using a query string on the field `parent_contract.id`.\n\nSupports comparison operators: `eq`, `in`.\n\nQuery examples:\n\n\n* `filter[parent_contract.id]=example_value` - to filter for exact match.\n\n \n* `filter[parent_contract.id]=eq:example_value` - to filter for exact match.\n\n \n* `filter[parent_contract.id]=in:example_value_1,example_value_2,example_value_3` - to filter when any item in the list matches.\n\n","schema":{"type":"string"},"example":"eq:example_value"},{"name":"filter[parent_contract.name]","in":"query","description":"Filters records by using a query string on the field `parent_contract.name`.\n\nSupports comparison operators: `eq`, `in`, `cont`.\n\nQuery examples:\n\n\n* `filter[parent_contract.name]=example_value` - to filter for exact match.\n\n \n* `filter[parent_contract.name]=eq:example_value` - to filter for exact match.\n\n \n* `filter[parent_contract.name]=in:example_value_1,example_value_2,example_value_3` - to filter when any item in the list matches.\n\n \n* `filter[parent_contract.name]=cont:word` - to filter using a partial match.\n\n","schema":{"type":"string"},"example":"eq:example_value"},{"name":"filter[status]","in":"query","description":"Filters records by using a query string on the field `status`.\n\n\n\n*Possible values*: `SUSPENDED`, `EXPIRED`, `ACTIVE`, `DRAFT`, `SENT`, `SIGNED`, `NOT_EXECUTED`, `CANCELLED`.\n\n\n\nSupports comparison operators: `eq`, `in`.\n\nQuery examples:\n\n\n* `filter[status]=SUSPENDED` - to filter for exact match.\n\n \n* `filter[status]=eq:SUSPENDED` - to filter for exact match.\n\n \n* `filter[status]=in:SUSPENDED,EXPIRED,ACTIVE` - to filter when any item in the list matches.\n\n","schema":{"type":"string"},"example":"eq:example_value"},{"name":"filter[is_billable]","in":"query","description":"Filters records by using a query string on the field `is_billable`.\n\nSupports comparison operators: `eq`.\n\nQuery examples:\n\n\n* `filter[is_billable]=true` - to filter for exact match.\n\n \n* `filter[is_billable]=eq:true` - to filter for exact match.\n\n","schema":{"type":"string"},"example":"eq:true"},{"name":"filter[record_created_at]","in":"query","description":"Filters records by using a query string on the field `record_created_at`.\n\nSupports comparison operators: `gt`, `gte`, `lt`, `lte`.\n\nQuery examples:\n\n\n* `filter[record_created_at]=gt:2023-01-01T00:00:00Z` - to filter for dates after\n\n \n* `filter[record_created_at]=gte:2023-01-01T00:00:00Z` - to filter for dates after or on\n\n \n* `filter[record_created_at]=lt:2023-01-01T00:00:00Z` - to filter for dates before\n\n \n* `filter[record_created_at]=lte:2023-01-01T00:00:00Z` - to filter for dates before or on\n\n","schema":{"type":"string"},"example":"gt:2023-01-01T00:00:00Z"},{"name":"filter[record_updated_at]","in":"query","description":"Filters records by using a query string on the field `record_updated_at`.\n\nSupports comparison operators: `gt`, `gte`, `lt`, `lte`.\n\nQuery examples:\n\n\n* `filter[record_updated_at]=gt:2023-01-01T00:00:00Z` - to filter for dates after\n\n \n* `filter[record_updated_at]=gte:2023-01-01T00:00:00Z` - to filter for dates after or on\n\n \n* `filter[record_updated_at]=lt:2023-01-01T00:00:00Z` - to filter for dates before\n\n \n* `filter[record_updated_at]=lte:2023-01-01T00:00:00Z` - to filter for dates before or on\n\n","schema":{"type":"string"},"example":"gt:2023-01-01T00:00:00Z"},{"name":"sort","in":"query","description":"One or more sortable fields, separated by commas. Prefix with '+' to sort ascending or '-' to sort descending.","schema":{"type":"array","items":{"enum":["name","client.id","client.name","contact.id","is_recurring","type","term.starts_at","term.ends_at","term.is_auto_renew","term.billing_period","source_type","is_addendum","parent_contract.name","status","is_billable","record_created_at","record_updated_at"],"type":"string"}}},{"name":"page_size","in":"query","description":"The number of records to be returned in a single page","schema":{"maximum":200,"minimum":1,"type":"integer","format":"int32"}},{"name":"cursor","in":"query","description":"The pointer used to fetch a certain page of records","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Model.PaginatedResponse_SpApi.CoreApi.Core.v1.Contracts.Model.Contract_"}},"text/json":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Model.PaginatedResponse_SpApi.CoreApi.Core.v1.Contracts.Model.Contract_"}},"text/plain":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Model.PaginatedResponse_SpApi.CoreApi.Core.v1.Contracts.Model.Contract_"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Errors.Model.BadRequestResponse"}},"text/json":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Errors.Model.BadRequestResponse"}},"text/plain":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Errors.Model.BadRequestResponse"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Errors.Model.InternalServerErrorResponse"}},"text/json":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Errors.Model.InternalServerErrorResponse"}},"text/plain":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Errors.Model.InternalServerErrorResponse"}}}}},"security":[{"apiKey":[]}]}},"/core/v1/service/contracts/{id}":{"get":{"tags":["Contracts"],"summary":"Get Contract","description":"This endpoint retrieves a single contract, identified by its unique ID.\r\n            \r\nA contract is a formal agreement between the MSP and its active client, enriched with information such as the associated client, contact, and other agreement-specific details.","operationId":"get-contract","parameters":[{"name":"id","in":"path","description":"Identifier of the contract","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.v1.Contracts.Model.Contract"}},"text/json":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.v1.Contracts.Model.Contract"}},"text/plain":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.v1.Contracts.Model.Contract"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Errors.Model.BadRequestResponse"}},"text/json":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Errors.Model.BadRequestResponse"}},"text/plain":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Errors.Model.BadRequestResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Errors.Model.NotFoundResponse"}},"text/json":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Errors.Model.NotFoundResponse"}},"text/plain":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Errors.Model.NotFoundResponse"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Errors.Model.InternalServerErrorResponse"}},"text/json":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Errors.Model.InternalServerErrorResponse"}},"text/plain":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Errors.Model.InternalServerErrorResponse"}}}}},"security":[{"apiKey":[]}]}},"/core/v1/service/tickets":{"get":{"tags":["Tickets"],"summary":"List Tickets","description":"This endpoint retrieves a detailed list of tickets. The endpoint supports filtering and sorting based on various criteria.\r\n            \r\nA ticket is a service request or an issue raised by a client or an MSP, enriched with details about the requester, the client, issue summary, and other issue-related details.","operationId":"list-tickets","parameters":[{"name":"filter[id]","in":"query","description":"Filters records by using a query string on the field `id`.\n\nSupports comparison operators: `eq`, `in`.\n\nQuery examples:\n\n\n* `filter[id]=example_value` - to filter for exact match.\n\n \n* `filter[id]=eq:example_value` - to filter for exact match.\n\n \n* `filter[id]=in:example_value_1,example_value_2,example_value_3` - to filter when any item in the list matches.\n\n","schema":{"type":"string"},"example":"eq:example_value"},{"name":"filter[owner_member.id]","in":"query","description":"Filters records by using a query string on the field `owner_member.id`.\n\nSupports comparison operators: `eq`, `in`.\n\nQuery examples:\n\n\n* `filter[owner_member.id]=example_value` - to filter for exact match.\n\n \n* `filter[owner_member.id]=eq:example_value` - to filter for exact match.\n\n \n* `filter[owner_member.id]=in:example_value_1,example_value_2,example_value_3` - to filter when any item in the list matches.\n\n","schema":{"type":"string"},"example":"eq:example_value"},{"name":"filter[responsible_member.id]","in":"query","description":"Filters records by using a query string on the field `responsible_member.id`.\n\nSupports comparison operators: `eq`, `in`.\n\nQuery examples:\n\n\n* `filter[responsible_member.id]=example_value` - to filter for exact match.\n\n \n* `filter[responsible_member.id]=eq:example_value` - to filter for exact match.\n\n \n* `filter[responsible_member.id]=in:example_value_1,example_value_2,example_value_3` - to filter when any item in the list matches.\n\n","schema":{"type":"string"},"example":"eq:example_value"},{"name":"filter[client.id]","in":"query","description":"Filters records by using a query string on the field `client.id`.\n\nSupports comparison operators: `eq`, `in`.\n\nQuery examples:\n\n\n* `filter[client.id]=example_value` - to filter for exact match.\n\n \n* `filter[client.id]=eq:example_value` - to filter for exact match.\n\n \n* `filter[client.id]=in:example_value_1,example_value_2,example_value_3` - to filter when any item in the list matches.\n\n","schema":{"type":"string"},"example":"eq:example_value"},{"name":"filter[client.name]","in":"query","description":"Filters records by using a query string on the field `client.name`.\n\nSupports comparison operators: `eq`, `in`, `cont`.\n\nQuery examples:\n\n\n* `filter[client.name]=example_value` - to filter for exact match.\n\n \n* `filter[client.name]=eq:example_value` - to filter for exact match.\n\n \n* `filter[client.name]=in:example_value_1,example_value_2,example_value_3` - to filter when any item in the list matches.\n\n \n* `filter[client.name]=cont:word` - to filter using a partial match.\n\n","schema":{"type":"string"},"example":"eq:example_value"},{"name":"filter[contact.id]","in":"query","description":"Filters records by using a query string on the field `contact.id`.\n\nSupports comparison operators: `eq`, `in`.\n\nQuery examples:\n\n\n* `filter[contact.id]=example_value` - to filter for exact match.\n\n \n* `filter[contact.id]=eq:example_value` - to filter for exact match.\n\n \n* `filter[contact.id]=in:example_value_1,example_value_2,example_value_3` - to filter when any item in the list matches.\n\n","schema":{"type":"string"},"example":"eq:example_value"},{"name":"filter[contract.id]","in":"query","description":"Filters records by using a query string on the field `contract.id`.\n\nSupports comparison operators: `eq`, `in`.\n\nQuery examples:\n\n\n* `filter[contract.id]=example_value` - to filter for exact match.\n\n \n* `filter[contract.id]=eq:example_value` - to filter for exact match.\n\n \n* `filter[contract.id]=in:example_value_1,example_value_2,example_value_3` - to filter when any item in the list matches.\n\n","schema":{"type":"string"},"example":"eq:example_value"},{"name":"filter[contract.name]","in":"query","description":"Filters records by using a query string on the field `contract.name`.\n\nSupports comparison operators: `eq`, `in`, `cont`.\n\nQuery examples:\n\n\n* `filter[contract.name]=example_value` - to filter for exact match.\n\n \n* `filter[contract.name]=eq:example_value` - to filter for exact match.\n\n \n* `filter[contract.name]=in:example_value_1,example_value_2,example_value_3` - to filter when any item in the list matches.\n\n \n* `filter[contract.name]=cont:word` - to filter using a partial match.\n\n","schema":{"type":"string"},"example":"eq:example_value"},{"name":"filter[board.id]","in":"query","description":"Filters records by using a query string on the field `board.id`.\n\nSupports comparison operators: `eq`, `in`.\n\nQuery examples:\n\n\n* `filter[board.id]=example_value` - to filter for exact match.\n\n \n* `filter[board.id]=eq:example_value` - to filter for exact match.\n\n \n* `filter[board.id]=in:example_value_1,example_value_2,example_value_3` - to filter when any item in the list matches.\n\n","schema":{"type":"string"},"example":"eq:example_value"},{"name":"filter[board.name]","in":"query","description":"Filters records by using a query string on the field `board.name`.\n\nSupports comparison operators: `eq`, `in`.\n\nQuery examples:\n\n\n* `filter[board.name]=example_value` - to filter for exact match.\n\n \n* `filter[board.name]=eq:example_value` - to filter for exact match.\n\n \n* `filter[board.name]=in:example_value_1,example_value_2,example_value_3` - to filter when any item in the list matches.\n\n","schema":{"type":"string"},"example":"eq:example_value"},{"name":"filter[category]","in":"query","description":"Filters records by using a query string on the field `category`.\n\n\n\n*Possible values*: `INCIDENT`, `NETWORK_INCIDENT`, `FIREWALL_INCIDENT`, `ROUTER_INCIDENT`, `WIFI_INCIDENT`, `CONNECTIVITY_INCIDENT`, `SERVER_INCIDENT`, `HARDWARE_INCIDENT`, `WORKSTATION_INCIDENT`, `SHARED_PERIPHERAL_INCIDENT`, `MOBILE_DEVICE_INCIDENT`, `STORAGE_INCIDENT`, `SOFTWARE_INCIDENT`, `CLIENT_SOFTWARE_INCIDENT`, `SERVER_SOFTWARE_INCIDENT`, `COMMUNICATION_SYSTEM_INCIDENT`, `PHONE_SYSTEM_INCIDENT`, `MESSAGING_SYSTEM_INCIDENT`, `VIDEO_CONFERENCING_INCIDENT`, `SERVICE_REQUEST`, `NETWORK_REQUEST`, `FIREWALL_REQUEST`, `ROUTER_REQUEST`, `WIFI_REQUEST`, `CONNECTIVITY_REQUEST`, `HARDWARE_REQUEST`, `WORKSTATION_REQUEST`, `SERVER_REQUEST`, `SHARED_PERIPHERAL_REQUEST`, `MOBILE_DEVICE_REQUEST`, `ASSET_DISPOSAL_REQUEST`, `SOFTWARE_REQUEST`, `CLIENT_SOFTWARE_REQUEST`, `SERVER_SOFTWARE_REQUEST`, `COMMUNICATION_SYSTEM_REQUEST`, `PHONE_SYSTEM_REQUEST`, `MESSAGING_SYSTEM_REQUEST`, `VIDEO_CONFERENCING_REQUEST`, `IT_MANAGEMENT`, `CYBERSECURITY_MANAGEMENT`, `BREACH`, `MALWARE`, `DISASTER_RECOVERY`, `BACKUP_FAILURE`, `RESTORATION`, `DISASTER_RECOVERY_PLAN`, `DOCUMENTATION_TRAINING`, `DOCUMENTATION`, `TRAINING`, `USER_MANAGEMENT`, `USER_CREATION`, `USER_DELETION`, `USER_ACCESS_MODIFICATION`, `AUDIT`, `COMPLIANCE_AUDIT`, `FINANCIAL_AUDIT`, `GENERAL_MANAGEMENT`, `PROJECT_MANAGEMENT`, `CHANGE_MANAGEMENT`, `STRATEGIC_PLANNING`, `BUDGETING`, `UNASSIGNED`.\n\n\n\nSupports comparison operators: `eq`, `in`.\n\nQuery examples:\n\n\n* `filter[category]=INCIDENT` - to filter for exact match.\n\n \n* `filter[category]=eq:INCIDENT` - to filter for exact match.\n\n \n* `filter[category]=in:INCIDENT,NETWORK_INCIDENT,FIREWALL_INCIDENT` - to filter when any item in the list matches.\n\n","schema":{"type":"string"},"example":"eq:example_value"},{"name":"filter[timeline.created_at]","in":"query","description":"Filters records by using a query string on the field `timeline.created_at`.\n\nSupports comparison operators: `gt`, `gte`, `lt`, `lte`.\n\nQuery examples:\n\n\n* `filter[timeline.created_at]=gt:2023-01-01T00:00:00Z` - to filter for dates after\n\n \n* `filter[timeline.created_at]=gte:2023-01-01T00:00:00Z` - to filter for dates after or on\n\n \n* `filter[timeline.created_at]=lt:2023-01-01T00:00:00Z` - to filter for dates before\n\n \n* `filter[timeline.created_at]=lte:2023-01-01T00:00:00Z` - to filter for dates before or on\n\n","schema":{"type":"string"},"example":"gt:2023-01-01T00:00:00Z"},{"name":"filter[timeline.updated_at]","in":"query","description":"Filters records by using a query string on the field `timeline.updated_at`.\n\nSupports comparison operators: `gt`, `gte`, `lt`, `lte`.\n\nQuery examples:\n\n\n* `filter[timeline.updated_at]=gt:2023-01-01T00:00:00Z` - to filter for dates after\n\n \n* `filter[timeline.updated_at]=gte:2023-01-01T00:00:00Z` - to filter for dates after or on\n\n \n* `filter[timeline.updated_at]=lt:2023-01-01T00:00:00Z` - to filter for dates before\n\n \n* `filter[timeline.updated_at]=lte:2023-01-01T00:00:00Z` - to filter for dates before or on\n\n","schema":{"type":"string"},"example":"gt:2023-01-01T00:00:00Z"},{"name":"filter[timeline.responded_at]","in":"query","description":"Filters records by using a query string on the field `timeline.responded_at`.\n\nSupports comparison operators: `gt`, `gte`, `lt`, `lte`.\n\nQuery examples:\n\n\n* `filter[timeline.responded_at]=gt:2023-01-01T00:00:00Z` - to filter for dates after\n\n \n* `filter[timeline.responded_at]=gte:2023-01-01T00:00:00Z` - to filter for dates after or on\n\n \n* `filter[timeline.responded_at]=lt:2023-01-01T00:00:00Z` - to filter for dates before\n\n \n* `filter[timeline.responded_at]=lte:2023-01-01T00:00:00Z` - to filter for dates before or on\n\n","schema":{"type":"string"},"example":"gt:2023-01-01T00:00:00Z"},{"name":"filter[timeline.planned_at]","in":"query","description":"Filters records by using a query string on the field `timeline.planned_at`.\n\nSupports comparison operators: `gt`, `gte`, `lt`, `lte`.\n\nQuery examples:\n\n\n* `filter[timeline.planned_at]=gt:2023-01-01T00:00:00Z` - to filter for dates after\n\n \n* `filter[timeline.planned_at]=gte:2023-01-01T00:00:00Z` - to filter for dates after or on\n\n \n* `filter[timeline.planned_at]=lt:2023-01-01T00:00:00Z` - to filter for dates before\n\n \n* `filter[timeline.planned_at]=lte:2023-01-01T00:00:00Z` - to filter for dates before or on\n\n","schema":{"type":"string"},"example":"gt:2023-01-01T00:00:00Z"},{"name":"filter[timeline.resolved_at]","in":"query","description":"Filters records by using a query string on the field `timeline.resolved_at`.\n\nSupports comparison operators: `gt`, `gte`, `lt`, `lte`.\n\nQuery examples:\n\n\n* `filter[timeline.resolved_at]=gt:2023-01-01T00:00:00Z` - to filter for dates after\n\n \n* `filter[timeline.resolved_at]=gte:2023-01-01T00:00:00Z` - to filter for dates after or on\n\n \n* `filter[timeline.resolved_at]=lt:2023-01-01T00:00:00Z` - to filter for dates before\n\n \n* `filter[timeline.resolved_at]=lte:2023-01-01T00:00:00Z` - to filter for dates before or on\n\n","schema":{"type":"string"},"example":"gt:2023-01-01T00:00:00Z"},{"name":"filter[timeline.closed_at]","in":"query","description":"Filters records by using a query string on the field `timeline.closed_at`.\n\nSupports comparison operators: `gt`, `gte`, `lt`, `lte`.\n\nQuery examples:\n\n\n* `filter[timeline.closed_at]=gt:2023-01-01T00:00:00Z` - to filter for dates after\n\n \n* `filter[timeline.closed_at]=gte:2023-01-01T00:00:00Z` - to filter for dates after or on\n\n \n* `filter[timeline.closed_at]=lt:2023-01-01T00:00:00Z` - to filter for dates before\n\n \n* `filter[timeline.closed_at]=lte:2023-01-01T00:00:00Z` - to filter for dates before or on\n\n","schema":{"type":"string"},"example":"gt:2023-01-01T00:00:00Z"},{"name":"filter[sla.is_response_in_sla]","in":"query","description":"Filters records by using a query string on the field `sla.is_response_in_sla`.\n\nSupports comparison operators: `eq`.\n\nQuery examples:\n\n\n* `filter[sla.is_response_in_sla]=true` - to filter for exact match.\n\n \n* `filter[sla.is_response_in_sla]=eq:true` - to filter for exact match.\n\n","schema":{"type":"string"},"example":"eq:true"},{"name":"filter[sla.is_plan_in_sla]","in":"query","description":"Filters records by using a query string on the field `sla.is_plan_in_sla`.\n\nSupports comparison operators: `eq`.\n\nQuery examples:\n\n\n* `filter[sla.is_plan_in_sla]=true` - to filter for exact match.\n\n \n* `filter[sla.is_plan_in_sla]=eq:true` - to filter for exact match.\n\n","schema":{"type":"string"},"example":"eq:true"},{"name":"filter[sla.is_resolution_in_sla]","in":"query","description":"Filters records by using a query string on the field `sla.is_resolution_in_sla`.\n\nSupports comparison operators: `eq`.\n\nQuery examples:\n\n\n* `filter[sla.is_resolution_in_sla]=true` - to filter for exact match.\n\n \n* `filter[sla.is_resolution_in_sla]=eq:true` - to filter for exact match.\n\n","schema":{"type":"string"},"example":"eq:true"},{"name":"filter[status.current]","in":"query","description":"Filters records by using a query string on the field `status.current`.\n\n\n\n*Possible values*: `NEW`, `ASSIGNED`, `SCHEDULED`, `TRIAGE`, `IN_PROGRESS`, `WAITING_CLIENT`, `WAITING_VENDOR`, `CANCELLED`, `COMPLETED`, `CLOSED`, `REOPENED`, `ESCALATED`, `CLIENT_RESPONDED`, `UNASSIGNED`.\n\n\n\nSupports comparison operators: `eq`, `in`.\n\nQuery examples:\n\n\n* `filter[status.current]=NEW` - to filter for exact match.\n\n \n* `filter[status.current]=eq:NEW` - to filter for exact match.\n\n \n* `filter[status.current]=in:NEW,ASSIGNED,SCHEDULED` - to filter when any item in the list matches.\n\n","schema":{"type":"string"},"example":"eq:example_value"},{"name":"filter[priority.current]","in":"query","description":"Filters records by using a query string on the field `priority.current`.\n\n\n\n*Possible values*: `1`, `2`, `3`, `4`, `5`, `UNASSIGNED`.\n\n\n\nSupports comparison operators: `eq`, `in`.\n\nQuery examples:\n\n\n* `filter[priority.current]=1` - to filter for exact match.\n\n \n* `filter[priority.current]=eq:1` - to filter for exact match.\n\n \n* `filter[priority.current]=in:1,2,3` - to filter when any item in the list matches.\n\n","schema":{"type":"string"},"example":"eq:example_value"},{"name":"filter[impact]","in":"query","description":"Filters records by using a query string on the field `impact`.\n\nSupports comparison operators: `eq`, `in`.\n\nQuery examples:\n\n\n* `filter[impact]=example_value` - to filter for exact match.\n\n \n* `filter[impact]=eq:example_value` - to filter for exact match.\n\n \n* `filter[impact]=in:example_value_1,example_value_2,example_value_3` - to filter when any item in the list matches.\n\n","schema":{"type":"string"},"example":"eq:example_value"},{"name":"filter[severity]","in":"query","description":"Filters records by using a query string on the field `severity`.\n\nSupports comparison operators: `eq`, `in`.\n\nQuery examples:\n\n\n* `filter[severity]=example_value` - to filter for exact match.\n\n \n* `filter[severity]=eq:example_value` - to filter for exact match.\n\n \n* `filter[severity]=in:example_value_1,example_value_2,example_value_3` - to filter when any item in the list matches.\n\n","schema":{"type":"string"},"example":"eq:example_value"},{"name":"filter[record_created_at]","in":"query","description":"Filters records by using a query string on the field `record_created_at`.\n\nSupports comparison operators: `gt`, `gte`, `lt`, `lte`.\n\nQuery examples:\n\n\n* `filter[record_created_at]=gt:2023-01-01T00:00:00Z` - to filter for dates after\n\n \n* `filter[record_created_at]=gte:2023-01-01T00:00:00Z` - to filter for dates after or on\n\n \n* `filter[record_created_at]=lt:2023-01-01T00:00:00Z` - to filter for dates before\n\n \n* `filter[record_created_at]=lte:2023-01-01T00:00:00Z` - to filter for dates before or on\n\n","schema":{"type":"string"},"example":"gt:2023-01-01T00:00:00Z"},{"name":"filter[record_updated_at]","in":"query","description":"Filters records by using a query string on the field `record_updated_at`.\n\nSupports comparison operators: `gt`, `gte`, `lt`, `lte`.\n\nQuery examples:\n\n\n* `filter[record_updated_at]=gt:2023-01-01T00:00:00Z` - to filter for dates after\n\n \n* `filter[record_updated_at]=gte:2023-01-01T00:00:00Z` - to filter for dates after or on\n\n \n* `filter[record_updated_at]=lt:2023-01-01T00:00:00Z` - to filter for dates before\n\n \n* `filter[record_updated_at]=lte:2023-01-01T00:00:00Z` - to filter for dates before or on\n\n","schema":{"type":"string"},"example":"gt:2023-01-01T00:00:00Z"},{"name":"sort","in":"query","description":"One or more sortable fields, separated by commas. Prefix with '+' to sort ascending or '-' to sort descending.","schema":{"type":"array","items":{"enum":["id","client.name","timeline.created_at","timeline.updated_at","timeline.responded_at","timeline.planned_at","timeline.resolved_at","timeline.closed_at","sla.is_response_in_sla","sla.is_plan_in_sla","sla.is_resolution_in_sla","status.current","priority.current","impact","severity","record_created_at","record_updated_at"],"type":"string"}}},{"name":"page_size","in":"query","description":"The number of records to be returned in a single page","schema":{"maximum":200,"minimum":1,"type":"integer","format":"int32"}},{"name":"cursor","in":"query","description":"The pointer used to fetch a certain page of records","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Model.PaginatedResponse_SpApi.CoreApi.Core.v1.Tickets.Model.Ticket_"}},"text/json":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Model.PaginatedResponse_SpApi.CoreApi.Core.v1.Tickets.Model.Ticket_"}},"text/plain":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Model.PaginatedResponse_SpApi.CoreApi.Core.v1.Tickets.Model.Ticket_"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Errors.Model.BadRequestResponse"}},"text/json":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Errors.Model.BadRequestResponse"}},"text/plain":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Errors.Model.BadRequestResponse"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Errors.Model.InternalServerErrorResponse"}},"text/json":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Errors.Model.InternalServerErrorResponse"}},"text/plain":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Errors.Model.InternalServerErrorResponse"}}}}},"security":[{"apiKey":[]}]}},"/core/v1/service/tickets/{id}":{"get":{"tags":["Tickets"],"summary":"Get Ticket","description":"This endpoint retrieves a single ticket, identified by its unique ID.\r\n            \r\nA ticket is a service request or an issue raised by a client or an MSP, enriched with details about the requester, the client, issue summary, and other issue-related details.","operationId":"get-ticket","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.v1.Tickets.Model.Ticket"}},"text/json":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.v1.Tickets.Model.Ticket"}},"text/plain":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.v1.Tickets.Model.Ticket"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Errors.Model.BadRequestResponse"}},"text/json":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Errors.Model.BadRequestResponse"}},"text/plain":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Errors.Model.BadRequestResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Errors.Model.NotFoundResponse"}},"text/json":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Errors.Model.NotFoundResponse"}},"text/plain":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Errors.Model.NotFoundResponse"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Errors.Model.InternalServerErrorResponse"}},"text/json":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Errors.Model.InternalServerErrorResponse"}},"text/plain":{"schema":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Errors.Model.InternalServerErrorResponse"}}}}},"security":[{"apiKey":[]}]}}},"components":{"schemas":{"SpApi.CoreApi.Core.Errors.Model.BadRequestErrorDetail":{"type":"object","properties":{"code":{"type":"string","description":"The unique textual code for the error","readOnly":true,"example":"BAD_REQUEST"},"title":{"type":"string","description":"A brief human-readable title for the error","example":"The field 'cursor' has an invalid format."},"detail":{"type":"string","description":"A detailed human-readable description of the error, with suggestions for resolution","example":"The field 'cursor' has an invalid format. Please ensure that the request follows the API specification in the documentation."}},"additionalProperties":false},"SpApi.CoreApi.Core.Errors.Model.BadRequestResponse":{"type":"object","properties":{"errors":{"type":"array","items":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Errors.Model.BadRequestErrorDetail"},"description":"A list of error details that include a code, title, and detail for each error that occurred during the request"}},"additionalProperties":false},"SpApi.CoreApi.Core.Errors.Model.InternalServerErrorErrorDetail":{"type":"object","properties":{"code":{"type":"string","description":"The unique textual code for the error","readOnly":true,"example":"INTERNAL_SERVER_ERROR"},"title":{"type":"string","description":"A brief human-readable title for the error","example":"The server was unable to process the request."},"detail":{"type":"string","description":"A detailed human-readable description of the error, with suggestions for resolution","example":"The server was unable to process the request. Please try again later. If this reoccurs, please contact support for further resolution."}},"additionalProperties":false},"SpApi.CoreApi.Core.Errors.Model.InternalServerErrorResponse":{"type":"object","properties":{"errors":{"type":"array","items":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Errors.Model.InternalServerErrorErrorDetail"},"description":"A list of error details that include a code, title, and detail for each error that occurred during the request"}},"additionalProperties":false},"SpApi.CoreApi.Core.Errors.Model.NotFoundErrorDetail":{"type":"object","properties":{"code":{"type":"string","description":"The unique textual code for the error","example":"NOT_FOUND"},"title":{"type":"string","description":"A brief human-readable title for the error","example":"The requested resource could not be found."},"detail":{"type":"string","description":"A detailed human-readable description of the error, with suggestions for resolution","example":"The requested resource could not be found. Please check the API documentation to ensure the correct URL and version have been used."}},"additionalProperties":false},"SpApi.CoreApi.Core.Errors.Model.NotFoundResponse":{"type":"object","properties":{"errors":{"type":"array","items":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Errors.Model.NotFoundErrorDetail"},"description":"A list of error details that include a code, title, and detail for each error that occurred during the request"}},"additionalProperties":false},"SpApi.CoreApi.Core.Errors.Model.UnprocessableContentErrorDetail":{"type":"object","properties":{"code":{"type":"string","description":"The unique textual code for the error","readOnly":true,"example":"UNPROCESSABLE_CONTENT"},"title":{"type":"string","description":"A brief human-readable title for the error","example":"No primary PSA was found for this account."},"detail":{"type":"string","description":"A detailed human-readable description of the error, with suggestions for resolution","example":"No primary PSA was found for this account. Please ensure a PSA that supports this feature has been integrated."}},"additionalProperties":false},"SpApi.CoreApi.Core.Errors.Model.UnprocessableContentResponse":{"type":"object","properties":{"errors":{"type":"array","items":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Errors.Model.UnprocessableContentErrorDetail"},"description":"A list of error details that include a code, title, and detail for each error that occurred during the request"}},"additionalProperties":false},"SpApi.CoreApi.Core.Filters.Model.BodyFilterContainer_SpApi.CoreApi.Core.v1.Contacts.Model.Contact_":{"type":"object","properties":{"filter":{"allOf":[{"$ref":"#/components/schemas/Wm.Search.Model.Query.Field.Filter.QueryFilter.QueryFilter"}],"description":"Parsed filter tree produced by M:SpApi.CoreApi.Packages.Core.Packages.Filters.Logic.ICoreFilterParserService.ParseFilters(System.Type,System.Collections.Generic.Dictionary{System.String,System.String})."},"filterDictionary":{"type":"object","additionalProperties":{"type":"string"},"description":"Raw body filter dictionary (same structure as query-string filter binding)."}},"additionalProperties":false,"description":"Parsed request-body filter container.\r\n\r\nThe request JSON shape is:\r\n{\r\n  \"filter\": {\r\n    \"name.full\": \"cont:\\\"Luke\\\"\",\r\n    \"contact_info.email\": \"eq:\\\"a@b.com\\\"\"\r\n  }\r\n}\r\n\r\nThis container is NOT directly JSON-deserialized.\r\nA custom input formatter reads the JSON, validates/parses it via SpApi.CoreApi.Packages.Core.Packages.Filters.Logic.ICoreFilterParserService,\r\nand produces this type so controllers receive a ready-to-use Wm.Search.Model.Query.Field.Filter.QueryFilter.QueryFilter."},"SpApi.CoreApi.Core.Filters.Model.BodyFilterContainer_SpApi.CoreApi.Core.v1.Members.Model.Member_":{"type":"object","properties":{"filter":{"allOf":[{"$ref":"#/components/schemas/Wm.Search.Model.Query.Field.Filter.QueryFilter.QueryFilter"}],"description":"Parsed filter tree produced by M:SpApi.CoreApi.Packages.Core.Packages.Filters.Logic.ICoreFilterParserService.ParseFilters(System.Type,System.Collections.Generic.Dictionary{System.String,System.String})."},"filterDictionary":{"type":"object","additionalProperties":{"type":"string"},"description":"Raw body filter dictionary (same structure as query-string filter binding)."}},"additionalProperties":false,"description":"Parsed request-body filter container.\r\n\r\nThe request JSON shape is:\r\n{\r\n  \"filter\": {\r\n    \"name.full\": \"cont:\\\"Luke\\\"\",\r\n    \"contact_info.email\": \"eq:\\\"a@b.com\\\"\"\r\n  }\r\n}\r\n\r\nThis container is NOT directly JSON-deserialized.\r\nA custom input formatter reads the JSON, validates/parses it via SpApi.CoreApi.Packages.Core.Packages.Filters.Logic.ICoreFilterParserService,\r\nand produces this type so controllers receive a ready-to-use Wm.Search.Model.Query.Field.Filter.QueryFilter.QueryFilter."},"SpApi.CoreApi.Core.Model.PaginatedResponse_SpApi.CoreApi.Core.v1.Clients.Model.Client_":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.v1.Clients.Model.Client"},"description":"The records that match the query"},"total_count":{"type":"integer","description":"The total number of records that match the query","format":"int64","example":"24"},"next_cursor":{"type":"string","description":"The cursor used to fetch the next page of records, if more records are available","nullable":true,"example":"WyJ0aWNrZXQiXQ"}},"additionalProperties":false},"SpApi.CoreApi.Core.Model.PaginatedResponse_SpApi.CoreApi.Core.v1.Contacts.Model.Contact_":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.v1.Contacts.Model.Contact"},"description":"The records that match the query"},"total_count":{"type":"integer","description":"The total number of records that match the query","format":"int64","example":"24"},"next_cursor":{"type":"string","description":"The cursor used to fetch the next page of records, if more records are available","nullable":true,"example":"WyJ0aWNrZXQiXQ"}},"additionalProperties":false},"SpApi.CoreApi.Core.Model.PaginatedResponse_SpApi.CoreApi.Core.v1.Contracts.Model.Contract_":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.v1.Contracts.Model.Contract"},"description":"The records that match the query"},"total_count":{"type":"integer","description":"The total number of records that match the query","format":"int64","example":"24"},"next_cursor":{"type":"string","description":"The cursor used to fetch the next page of records, if more records are available","nullable":true,"example":"WyJ0aWNrZXQiXQ"}},"additionalProperties":false},"SpApi.CoreApi.Core.Model.PaginatedResponse_SpApi.CoreApi.Core.v1.HardwareAssets.Model.HardwareAsset_":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.v1.HardwareAssets.Model.HardwareAsset"},"description":"The records that match the query"},"total_count":{"type":"integer","description":"The total number of records that match the query","format":"int64","example":"24"},"next_cursor":{"type":"string","description":"The cursor used to fetch the next page of records, if more records are available","nullable":true,"example":"WyJ0aWNrZXQiXQ"}},"additionalProperties":false},"SpApi.CoreApi.Core.Model.PaginatedResponse_SpApi.CoreApi.Core.v1.Members.Model.Member_":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.v1.Members.Model.Member"},"description":"The records that match the query"},"total_count":{"type":"integer","description":"The total number of records that match the query","format":"int64","example":"24"},"next_cursor":{"type":"string","description":"The cursor used to fetch the next page of records, if more records are available","nullable":true,"example":"WyJ0aWNrZXQiXQ"}},"additionalProperties":false},"SpApi.CoreApi.Core.Model.PaginatedResponse_SpApi.CoreApi.Core.v1.Opportunities.Model.Opportunity_":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.v1.Opportunities.Model.Opportunity"},"description":"The records that match the query"},"total_count":{"type":"integer","description":"The total number of records that match the query","format":"int64","example":"24"},"next_cursor":{"type":"string","description":"The cursor used to fetch the next page of records, if more records are available","nullable":true,"example":"WyJ0aWNrZXQiXQ"}},"additionalProperties":false},"SpApi.CoreApi.Core.Model.PaginatedResponse_SpApi.CoreApi.Core.v1.SaasAssets.Model.SaasAsset_":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.v1.SaasAssets.Model.SaasAsset"},"description":"The records that match the query"},"total_count":{"type":"integer","description":"The total number of records that match the query","format":"int64","example":"24"},"next_cursor":{"type":"string","description":"The cursor used to fetch the next page of records, if more records are available","nullable":true,"example":"WyJ0aWNrZXQiXQ"}},"additionalProperties":false},"SpApi.CoreApi.Core.Model.PaginatedResponse_SpApi.CoreApi.Core.v1.SaasUsers.Model.SaasUser_":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.v1.SaasUsers.Model.SaasUser"},"description":"The records that match the query"},"total_count":{"type":"integer","description":"The total number of records that match the query","format":"int64","example":"24"},"next_cursor":{"type":"string","description":"The cursor used to fetch the next page of records, if more records are available","nullable":true,"example":"WyJ0aWNrZXQiXQ"}},"additionalProperties":false},"SpApi.CoreApi.Core.Model.PaginatedResponse_SpApi.CoreApi.Core.v1.Tickets.Model.Ticket_":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.v1.Tickets.Model.Ticket"},"description":"The records that match the query"},"total_count":{"type":"integer","description":"The total number of records that match the query","format":"int64","example":"24"},"next_cursor":{"type":"string","description":"The cursor used to fetch the next page of records, if more records are available","nullable":true,"example":"WyJ0aWNrZXQiXQ"}},"additionalProperties":false},"SpApi.CoreApi.Core.Model.RecordLineage":{"type":"object","properties":{"source_record_id":{"type":"string","description":"ID of this record in the source system.","nullable":true,"example":"123"},"integration_configuration":{"allOf":[{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Model.RecordLineageIntegrationConfiguration"}],"description":"Details about the integration setup that sourced this record.","nullable":true}},"additionalProperties":false,"description":"Provenance metadata indicating the record's identifier in the source system and the integration vendor and configuration that sourced it."},"SpApi.CoreApi.Core.Model.RecordLineageIntegrationConfiguration":{"type":"object","properties":{"id":{"type":"string","description":"ID of the integration setup this record was sourced from.","nullable":true,"example":"TAxitIYnxnQP"},"vendor":{"allOf":[{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Model.RecordLineageIntegrationConfigurationVendor"}],"description":"Details about the integration vendor that sourced this record.","nullable":true}},"additionalProperties":false,"description":"Details about the integration setup that sourced this record."},"SpApi.CoreApi.Core.Model.RecordLineageIntegrationConfigurationVendor":{"type":"object","properties":{"id":{"type":"string","description":"ID of the integration vendor that sourced this record.","nullable":true,"example":"1"},"brand_name":{"type":"string","description":"Name of the integration vendor that sourced this record. Note: A vendor’s name may change if the vendor rebrands.","nullable":true,"example":"ConnectWise Manage"}},"additionalProperties":false,"description":"Details about the integration vendor that sourced this record."},"SpApi.CoreApi.Core.v1.Clients.Model.Client":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier of the client organization in ScalePad.","example":"00006dab0f9f5d117124aade71a2ah6a"},"name":{"type":"string","description":"Name of the client organization.","example":"Space Sprockets, Inc"},"lifecycle":{"type":"string","description":"Classification of the client organization based on its relationship with the MSP.","example":"CUSTOMER"},"primary_domain":{"type":"string","description":"Internet domain name associated with the client, derived from their contacts.","nullable":true,"example":"scalepad.com"},"num_contacts":{"type":"integer","description":"Number of active contacts existing for that client organization.","format":"int64","example":"100"},"num_hardware_assets":{"type":"integer","description":"Number of active hardware assets assigned to the client organization.","format":"int64","example":"509"},"record_lineage":{"type":"array","items":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Model.RecordLineage"},"nullable":true},"address":{"allOf":[{"$ref":"#/components/schemas/SpApi.CoreApi.Core.v1.Clients.Model.ClientAddress"}],"description":"Geographic information relating to the client's billing location with ISO-standardized country and state information where possible.","nullable":true},"record_created_at":{"type":"string","description":"Timestamp of when this record was created","format":"date-time","example":"2019-09-30T15:28:17.354Z"},"record_updated_at":{"type":"string","description":"Timestamp of when this record was last updated","format":"date-time","example":"2019-09-30T15:28:17.354Z"}},"additionalProperties":false,"description":"An active customer organization managed by the MSP, enriched with data such as employee and device counts, geographic details, and other customer-specific details."},"SpApi.CoreApi.Core.v1.Clients.Model.ClientAddress":{"type":"object","properties":{"address_line_1":{"type":"string","description":"Address line 1 of the client organization.","nullable":true,"example":"123 Main St"},"address_line_2":{"type":"string","description":"Address line 2 of the client organization.","nullable":true,"example":"Apt 1"},"address_line_3":{"type":"string","description":"Address line 3 of the client organization.","nullable":true,"example":"Building A"},"city":{"type":"string","description":"City of the client organization.","nullable":true,"example":"San Francisco"},"state_prov_code":{"type":"string","description":"Province or state code of the client organization.","nullable":true,"example":"CA"},"state_prov_name":{"type":"string","description":"Province or state name of the client organization.","nullable":true,"example":"California"},"country_code":{"type":"string","description":"ISO country code of the client organization.","nullable":true,"example":"US"},"country_name":{"type":"string","description":"Official displayable name of the country of the client organization.","nullable":true,"example":"United States"},"is_eu":{"type":"boolean","description":"Flag indicating if the client is located in the European Union for compliance and regulatory purposes.","nullable":true,"example":"false"},"postal_code":{"type":"string","description":"Postal service code of the client organization.","nullable":true,"example":"12345"},"geo_spatial_coordinates":{"allOf":[{"$ref":"#/components/schemas/SpApi.CoreApi.Core.v1.Clients.Model.ClientAddressGeoSpatialCoordinates"}],"description":"Geospatial information relating to the client organization.","nullable":true}},"additionalProperties":false,"description":"Geographic information relating to the client's billing location with ISO-standardized country and state information where possible."},"SpApi.CoreApi.Core.v1.Clients.Model.ClientAddressGeoSpatialCoordinates":{"type":"object","properties":{"longitude":{"type":"number","description":"Longitude to a 2 km precision for the location of the client organization.","format":"double","nullable":true,"example":"38.82"},"latitude":{"type":"number","description":"Latitude to a 2 km precision for the location of the client organization.","format":"double","nullable":true,"example":"40.71"},"h3_cell_id":{"type":"integer","description":"Geospatial cell using the H3 coding system with a 2 km precision for the location of the client organization.","format":"int64","example":"1234567890"}},"additionalProperties":false,"description":"Geospatial information relating to the client organization."},"SpApi.CoreApi.Core.v1.Contacts.Model.Contact":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier of the contact in ScalePad.","example":"1g4123ty-4er6-4g3t-a345-wfe5e5234rfd"},"client":{"allOf":[{"$ref":"#/components/schemas/SpApi.CoreApi.Core.v1.Contacts.Model.ContactClient"}],"description":"Client organization that the contact is associated with."},"title":{"type":"string","description":"Professional job title or role of the contact within their client organization.","nullable":true,"example":"IT Manager"},"contact_info":{"allOf":[{"$ref":"#/components/schemas/SpApi.CoreApi.Core.v1.Contacts.Model.ContactContactInfo"}],"description":"Primary communication details of the contact.","nullable":true},"name":{"allOf":[{"$ref":"#/components/schemas/SpApi.CoreApi.Core.v1.Contacts.Model.ContactName"}],"description":"Name of the contact.","nullable":true},"record_lineage":{"type":"array","items":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Model.RecordLineage"},"nullable":true},"record_created_at":{"type":"string","description":"Timestamp of when this record was created","format":"date-time","example":"2019-09-30T15:28:17.354Z"},"record_updated_at":{"type":"string","description":"Timestamp of when this record was last updated","format":"date-time","example":"2019-09-30T15:28:17.354Z"}},"additionalProperties":false,"description":"An active individual associated with a client of an MSP, enriched with information such as their role, name and other contact-specific details."},"SpApi.CoreApi.Core.v1.Contacts.Model.ContactClient":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier of the client in ScalePad.","example":"00000ae5-h3r7-6468-er45-wiuynj9c0d23"},"name":{"type":"string","description":"Name of the client organization.","example":"ABC Manufacturing Inc."}},"additionalProperties":false,"description":"Client organization that the contact is associated with."},"SpApi.CoreApi.Core.v1.Contacts.Model.ContactContactInfo":{"type":"object","properties":{"email":{"type":"string","description":"Email address of the contact.","nullable":true,"example":"john.smith@abcmanufacturing.com"},"phone":{"type":"string","description":"Phone number of the contact.","nullable":true,"example":"6013789938"}},"additionalProperties":false,"description":"Primary communication details of the contact."},"SpApi.CoreApi.Core.v1.Contacts.Model.ContactName":{"type":"object","properties":{"first":{"type":"string","description":"First name of the contact.","nullable":true,"example":"John"},"middle":{"type":"string","description":"Middle name of the contact.","nullable":true,"example":"Michael"},"last":{"type":"string","description":"Last name of the contact.","nullable":true,"example":"Smith"},"full":{"type":"string","description":"Complete name of the contact.","nullable":true,"example":"John Michael Smith"}},"additionalProperties":false,"description":"Name of the contact."},"SpApi.CoreApi.Core.v1.Contracts.Model.Contract":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier of the contract in ScalePad.","example":"1g4123ty-4er6-4g3t-a345-wfe5e5234rfd"},"name":{"type":"string","description":"Name of the contract.","example":"Managed IT Services Agreement"},"client":{"allOf":[{"$ref":"#/components/schemas/SpApi.CoreApi.Core.v1.Contracts.Model.ContractClient"}],"description":"Client organization that is receiving the services and/or products from the MSP under this contract."},"contact":{"allOf":[{"$ref":"#/components/schemas/SpApi.CoreApi.Core.v1.Contracts.Model.ContractContact"}],"description":"Contact who is responsible for the contract.","nullable":true},"is_recurring":{"type":"boolean","description":"Flag indicating whether the contract represents recurring services.","nullable":true,"example":"false"},"type":{"enum":["MANAGED_SERVICES","BLOCK","3RD_PARTY","UNASSIGNED"],"type":"string","description":"ScalePad standardized type value, mapped from the source system's native contract type, representing the classification of the contract.","nullable":true,"example":"UNASSIGNED"},"term":{"allOf":[{"$ref":"#/components/schemas/SpApi.CoreApi.Core.v1.Contracts.Model.ContractTerm"}],"description":"Defines active period of the contract including duration, renewal settings, and billing frequency.","nullable":true},"source_type":{"type":"string","description":"Original contract type value from the source system before ScalePad standardization.","nullable":true,"example":"MSA - RECURRING"},"is_addendum":{"type":"boolean","description":"Flag indicating whether this contract is an extension or modification to an existing contract. This is currently only supported by ConnectWise (Bill Amount). All other source systems default to null.","nullable":true,"example":"false"},"parent_contract":{"allOf":[{"$ref":"#/components/schemas/SpApi.CoreApi.Core.v1.Contracts.Model.ContractParentContract"}],"description":"Reference to the primary or original contract to which the current contract is related.","nullable":true},"status":{"enum":["SUSPENDED","EXPIRED","ACTIVE","DRAFT","SENT","SIGNED","NOT_EXECUTED","CANCELLED"],"type":"string","description":"ScalePad standardized value indicating the current state of the contract within its lifecycle.","example":"EXPIRED"},"total_price":{"allOf":[{"$ref":"#/components/schemas/SpApi.CoreApi.Core.v1.Contracts.Model.ContractTotalPrice"}],"description":"Total price for the contract. This is currently only supported by ConnectWise (Bill Amount). All other source systems default to null.","nullable":true},"total_cost":{"allOf":[{"$ref":"#/components/schemas/SpApi.CoreApi.Core.v1.Contracts.Model.ContractTotalCost"}],"description":"Total cost for the contract. This is currently only supported by ConnectWise (Bill Amount). All other source systems default to null.","nullable":true},"is_billable":{"type":"boolean","description":"Flag indicating whether the pricing item is billable. Currently, only ConnectWise supports this flag. All other source systems return true if any of the contract pricing items is billable.","nullable":true,"example":"true"},"pricing_item_total_price":{"allOf":[{"$ref":"#/components/schemas/SpApi.CoreApi.Core.v1.Contracts.Model.ContractPricingItemTotalPrice"}],"description":"Sum of the total price for all active pricing items in the contract.","nullable":true},"pricing_item_total_cost":{"allOf":[{"$ref":"#/components/schemas/SpApi.CoreApi.Core.v1.Contracts.Model.ContractPricingItemTotalCost"}],"description":"Sum of the total cost for all active pricing items in the contract.","nullable":true},"contract_pricings":{"type":"array","items":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.v1.Contracts.Model.ContractContractPricings"}},"record_lineage":{"type":"array","items":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Model.RecordLineage"},"nullable":true},"record_created_at":{"type":"string","description":"Timestamp of when this record was created","format":"date-time","example":"2019-09-30T15:28:17.354Z"},"record_updated_at":{"type":"string","description":"Timestamp of when this record was last updated","format":"date-time","example":"2019-09-30T15:28:17.354Z"}},"additionalProperties":false,"description":"A formal agreement between the MSP and its active client, enriched with information such as the associated client, contact, and other agreement-specific details."},"SpApi.CoreApi.Core.v1.Contracts.Model.ContractClient":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier of the client organization in ScalePad.","example":"00000ae5-h3r7-6468-er45-wiuynj9c0d23"},"name":{"type":"string","description":"Name of the client organization.","example":"ABC Manufacturing Inc."}},"additionalProperties":false,"description":"Client organization that is receiving the services and/or products from the MSP under this contract."},"SpApi.CoreApi.Core.v1.Contracts.Model.ContractContact":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier of the contact in ScalePad.","example":"1g4123ty-4er6-4g3t-a345-wfe5e5234rfd"}},"additionalProperties":false,"description":"Contact who is responsible for the contract."},"SpApi.CoreApi.Core.v1.Contracts.Model.ContractContractPricings":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier of the contract pricing item.","example":"1243"},"status":{"enum":["ACTIVE","INACTIVE","CANCELLED","EXPIRED"],"type":"string","description":"ScalePad standardized value indicating the current state of the contract pricing item.","nullable":true,"example":"ACTIVE"},"is_billable":{"type":"boolean","description":"Flag indicating whether the pricing item is billable. Currently, only ConnectWise supports this flag. All other source systems default to true.","nullable":true,"example":"true"},"term":{"allOf":[{"$ref":"#/components/schemas/SpApi.CoreApi.Core.v1.Contracts.Model.ContractContractPricingsTerm"}],"description":"Billing period for this specific pricing item, defining when the item is active and billable.","nullable":true},"is_rollover_allowed":{"type":"boolean","description":"Flag indicating whether unused quantities or amounts can roll over to the next billing period.","nullable":true,"example":"false"},"description":{"type":"string","description":"Detailed description of the service or product being billed.","nullable":true,"example":"Monthly managed services support"},"recurrent_charge_frequency":{"enum":["NOT_CHARGED","ONE_TIME","ANNUAL","SEMI_ANNUAL","QUARTERLY","BI_MONTHLY","MONTHLY","BI_WEEKLY"],"type":"string","description":"Billing frequency for this pricing item.","nullable":true,"example":"MONTHLY"},"unit_price":{"allOf":[{"$ref":"#/components/schemas/SpApi.CoreApi.Core.v1.Contracts.Model.ContractContractPricingsUnitPrice"}],"description":"Price per unit for this service or product item.","nullable":true},"unit_cost":{"allOf":[{"$ref":"#/components/schemas/SpApi.CoreApi.Core.v1.Contracts.Model.ContractContractPricingsUnitCost"}],"description":"Cost incurred by the MSP per unit of the service or product item.","nullable":true},"quantity":{"type":"number","description":"Number of units sold or used.","format":"double","nullable":true,"example":"10.9"},"total_price":{"allOf":[{"$ref":"#/components/schemas/SpApi.CoreApi.Core.v1.Contracts.Model.ContractContractPricingsTotalPrice"}],"description":"Total price for this pricing item.","nullable":true},"total_cost":{"allOf":[{"$ref":"#/components/schemas/SpApi.CoreApi.Core.v1.Contracts.Model.ContractContractPricingsTotalCost"}],"description":"Total cost incurred by the MSP for this pricing item.","nullable":true},"pricing_type":{"enum":["UNKNOWN","UNIT","ALLOCATION"],"type":"string","description":"Type of pricing model for this item.","nullable":true,"example":"UNIT"},"unit_type":{"enum":["TICKET","HOURS","PRODUCT","RECURRING"],"type":"string","description":"Pricing item type that is being billed, defining what each quantity represents.","nullable":true,"example":"PRODUCT"},"items":{"type":"array","items":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.v1.Contracts.Model.ContractContractPricingsItems"},"nullable":true}},"additionalProperties":false,"description":"List of pricing line items associated with the contract."},"SpApi.CoreApi.Core.v1.Contracts.Model.ContractContractPricingsItems":{"type":"object","properties":{"product":{"allOf":[{"$ref":"#/components/schemas/SpApi.CoreApi.Core.v1.Contracts.Model.ContractContractPricingsItemsProduct"}],"description":"Product details for items within this pricing structure.","nullable":true}},"additionalProperties":false,"description":"List of products or services associated with this pricing item."},"SpApi.CoreApi.Core.v1.Contracts.Model.ContractContractPricingsItemsProduct":{"type":"object","properties":{"id":{"type":"string","description":"Source system identifier for the product.","example":"1234"},"name":{"type":"string","description":"Name of the product.","nullable":true,"example":"ACME - STARTER PACK"}},"additionalProperties":false,"description":"Product details for items within this pricing structure."},"SpApi.CoreApi.Core.v1.Contracts.Model.ContractContractPricingsTerm":{"type":"object","properties":{"starts_at":{"type":"string","description":"Start date for this pricing item's billing period.","format":"date-time","example":"2024-05-01"},"ends_at":{"type":"string","description":"End date for this pricing item's billing period.","format":"date-time","nullable":true,"example":"2024-12-31"}},"additionalProperties":false,"description":"Billing period for this specific pricing item, defining when the item is active and billable."},"SpApi.CoreApi.Core.v1.Contracts.Model.ContractContractPricingsTotalCost":{"type":"object","properties":{"amount":{"type":"number","description":"Total cost incurred by the MSP for this pricing item.","format":"double","example":"75.00"},"iso_currency_code":{"type":"string","description":"Three letter ISO code for currency.","example":"USD"}},"additionalProperties":false,"description":"Total cost incurred by the MSP for this pricing item."},"SpApi.CoreApi.Core.v1.Contracts.Model.ContractContractPricingsTotalPrice":{"type":"object","properties":{"amount":{"type":"number","description":"Total price for this pricing item.","format":"double","example":"150.00"},"iso_currency_code":{"type":"string","description":"Three letter ISO code for currency.","example":"USD"}},"additionalProperties":false,"description":"Total price for this pricing item."},"SpApi.CoreApi.Core.v1.Contracts.Model.ContractContractPricingsUnitCost":{"type":"object","properties":{"amount":{"type":"number","description":"Cost incurred by the MSP.","format":"double","example":"75.00"},"iso_currency_code":{"type":"string","description":"Three letter ISO code for currency.","example":"USD"}},"additionalProperties":false,"description":"Cost incurred by the MSP per unit of the service or product item."},"SpApi.CoreApi.Core.v1.Contracts.Model.ContractContractPricingsUnitPrice":{"type":"object","properties":{"amount":{"type":"number","description":"Price per unit for this service or product item.","format":"double","example":"150.00"},"iso_currency_code":{"type":"string","description":"Three letter ISO code for currency.","example":"USD"}},"additionalProperties":false,"description":"Price per unit for this service or product item."},"SpApi.CoreApi.Core.v1.Contracts.Model.ContractParentContract":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier of the parent contract in ScalePad.","example":"1g4123ty-4er6-4g3t-a345-wfe5e5234rfd"},"name":{"type":"string","description":"Name of the parent contract. This is currently only supported by ConnectWise (Bill Amount). All other source systems default to null.","nullable":true,"example":"Master Service Agreement - ABC Manufacturing"}},"additionalProperties":false,"description":"Reference to the primary or original contract to which the current contract is related."},"SpApi.CoreApi.Core.v1.Contracts.Model.ContractPricingItemTotalCost":{"type":"object","properties":{"amount":{"type":"number","description":"Sum of the total cost for all active pricing items in the contract.","format":"double","nullable":true,"example":"150.00"},"iso_currency_code":{"type":"string","description":"Three letter ISO code for currency.","nullable":true,"example":"USD"}},"additionalProperties":false,"description":"Sum of the total cost for all active pricing items in the contract."},"SpApi.CoreApi.Core.v1.Contracts.Model.ContractPricingItemTotalPrice":{"type":"object","properties":{"amount":{"type":"number","description":"Sum of the total price for all active pricing items in the contract.","format":"double","nullable":true,"example":"150.00"},"iso_currency_code":{"type":"string","description":"Three letter ISO code for currency.","nullable":true,"example":"USD"}},"additionalProperties":false,"description":"Sum of the total price for all active pricing items in the contract."},"SpApi.CoreApi.Core.v1.Contracts.Model.ContractTerm":{"type":"object","properties":{"starts_at":{"type":"string","description":"The date when the contract goes into effect.","format":"date-time","example":"2025-01-01"},"ends_at":{"type":"string","description":"The date when the contract is set to expire.","format":"date-time","nullable":true,"example":"2099-12-31"},"is_auto_renew":{"type":"boolean","description":"Flag indicating whether the contract automatically renews upon expiration.","nullable":true,"example":"true"},"billing_period":{"enum":["NOT_BILLED","ONE_TIME","ANNUAL","SEMI_ANNUAL","QUARTERLY","BI_MONTHLY","MONTHLY","BI_WEEKLY","WEEKLY"],"type":"string","description":"Billing frequency for the contract.","nullable":true,"example":"MONTHLY"}},"additionalProperties":false,"description":"Defines active period of the contract including duration, renewal settings, and billing frequency."},"SpApi.CoreApi.Core.v1.Contracts.Model.ContractTotalCost":{"type":"object","properties":{"amount":{"type":"number","description":"Total cost for the contract. This is currently only supported by ConnectWise (Bill Amount). All other source systems default to null.","format":"double","nullable":true,"example":"150.00"},"iso_currency_code":{"type":"string","description":"Three letter ISO code for currency.","nullable":true,"example":"USD"}},"additionalProperties":false,"description":"Total cost for the contract. This is currently only supported by ConnectWise (Bill Amount). All other source systems default to null."},"SpApi.CoreApi.Core.v1.Contracts.Model.ContractTotalPrice":{"type":"object","properties":{"amount":{"type":"number","description":"Total price for the contract. This is currently only supported by ConnectWise (Bill Amount). All other source systems default to null.","format":"double","nullable":true,"example":"150.00"},"iso_currency_code":{"type":"string","description":"Three letter ISO code for currency.","nullable":true,"example":"USD"}},"additionalProperties":false,"description":"Total price for the contract. This is currently only supported by ConnectWise (Bill Amount). All other source systems default to null."},"SpApi.CoreApi.Core.v1.HardwareAssets.Model.HardwareAsset":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier of the hardware asset in ScalePad.","example":"1g4123ty-4er6-4g3t-a345-wfe5e5234rfd"},"name":{"type":"string","description":"Name of the hardware asset.","nullable":true,"example":"TYUIAJHEVI014"},"client":{"allOf":[{"$ref":"#/components/schemas/SpApi.CoreApi.Core.v1.HardwareAssets.Model.HardwareAssetClient"}],"description":"Client organization that uses the hardware asset."},"contact":{"allOf":[{"$ref":"#/components/schemas/SpApi.CoreApi.Core.v1.HardwareAssets.Model.HardwareAssetContact"}],"description":"Contact who uses the hardware asset."},"manufacturer":{"allOf":[{"$ref":"#/components/schemas/SpApi.CoreApi.Core.v1.HardwareAssets.Model.HardwareAssetManufacturer"}],"description":"ScalePad standardized manufacturer details of the hardware asset."},"model":{"allOf":[{"$ref":"#/components/schemas/SpApi.CoreApi.Core.v1.HardwareAssets.Model.HardwareAssetModel"}],"description":"Model information of the hardware asset provided by the manufacturer."},"serial_number":{"type":"string","description":"Unique number assigned by the manufacturer to the hardware asset.","nullable":true,"example":"PF4WERG4"},"type":{"enum":["WORKSTATION","IMAGING","SERVER","NETWORK","MOBILE","VIRTUAL"],"type":"string","description":"ScalePad standardized classification that identifies the category of the hardware asset.","nullable":true,"example":"Desktop"},"last_login_user":{"type":"string","description":"Last user to log into the hardware asset.","nullable":true,"example":"sarah.johnson"},"location_name":{"type":"string","description":"Physical location of the hardware asset in the client's organization.","nullable":true,"example":"Main Office - Floor 2"},"mac_addresses":{"type":"array","items":{"type":"string"},"description":"List of MAC addresses associated with the hardware asset.","nullable":true,"example":"[\"00-1B-44-11-3A-B7\", \"00-1B-44-11-3A-B8\"]"},"configuration":{"allOf":[{"$ref":"#/components/schemas/SpApi.CoreApi.Core.v1.HardwareAssets.Model.HardwareAssetConfiguration"}],"description":"Hardware configuration details including CPU, memory, and storage specifications."},"software":{"allOf":[{"$ref":"#/components/schemas/SpApi.CoreApi.Core.v1.HardwareAssets.Model.HardwareAssetSoftware"}],"description":"Information about critical software installed on the hardware asset."},"address":{"allOf":[{"$ref":"#/components/schemas/SpApi.CoreApi.Core.v1.HardwareAssets.Model.HardwareAssetAddress"}],"description":"Geographic information relating to the hardware asset's location with ISO-standardized country and state information where possible."},"record_lineage":{"type":"array","items":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Model.RecordLineage"},"nullable":true},"record_created_at":{"type":"string","description":"Timestamp of when this record was created","format":"date-time","example":"2019-09-30T15:28:17.354Z"},"record_updated_at":{"type":"string","description":"Timestamp of when this record was last updated","format":"date-time","example":"2019-09-30T15:28:17.354Z"}},"additionalProperties":false,"description":"An active physical device for a client managed by the MSP, enriched with information such as the associated client, assigned contact and other device-specific details."},"SpApi.CoreApi.Core.v1.HardwareAssets.Model.HardwareAssetAddress":{"type":"object","properties":{"address_line_1":{"type":"string","description":"Address line 1 of the hardware asset.","nullable":true,"example":"123 Business Park Drive"},"address_line_2":{"type":"string","description":"Address line 2 of the hardware asset.","nullable":true,"example":"Suite 200"},"address_line_3":{"type":"string","description":"Address line 3 of the hardware asset.","nullable":true,"example":"Building A"},"city":{"type":"string","description":"City of the hardware asset.","nullable":true,"example":"San Francisco"},"state_prov_code":{"type":"string","description":"Province or state code of the hardware asset.","nullable":true,"example":"CA"},"state_prov_name":{"type":"string","description":"Province or state name of the hardware asset.","nullable":true,"example":"California"},"country_code":{"type":"string","description":"ISO country code of the hardware asset.","nullable":true,"example":"US"},"country_name":{"type":"string","description":"Official displayable name of the country of the hardware asset.","nullable":true,"example":"United States"},"is_eu":{"type":"boolean","description":"Flag indicating if the hardware asset is located in the European Union for compliance and regulatory purposes.","nullable":true,"example":"false"},"postal_code":{"type":"string","description":"Postal service code of the hardware asset.","nullable":true,"example":"94105"},"geo_spatial_coordinates":{"allOf":[{"$ref":"#/components/schemas/SpApi.CoreApi.Core.v1.HardwareAssets.Model.HardwareAssetAddressGeoSpatialCoordinates"}],"description":"Geospatial information relating to the hardware asset."}},"additionalProperties":false,"description":"Geographic information relating to the hardware asset's location with ISO-standardized country and state information where possible."},"SpApi.CoreApi.Core.v1.HardwareAssets.Model.HardwareAssetAddressGeoSpatialCoordinates":{"type":"object","properties":{"latitude":{"type":"number","description":"Latitude to a 2 km precision for the location of the hardware asset.","format":"double","example":"37.7749"},"longitude":{"type":"number","description":"Longitude to a 2 km precision for the location of the hardware asset.","format":"double","example":"-122.4194"},"h3_cell_id":{"type":"integer","description":"Geospatial cell using the H3 coding system with a 2 km precision for the location of the hardware asset.","format":"int64","example":"592540628193968127"}},"additionalProperties":false,"description":"Geospatial information relating to the hardware asset."},"SpApi.CoreApi.Core.v1.HardwareAssets.Model.HardwareAssetClient":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier of the client organization in ScalePad.","example":"1g4123ty-4er6-4g3t-a345-wfe5e5234rfd"},"name":{"type":"string","description":"Name of the client organization.","example":"TechCorp Solutions LLC"}},"additionalProperties":false,"description":"Client organization that uses the hardware asset."},"SpApi.CoreApi.Core.v1.HardwareAssets.Model.HardwareAssetConfiguration":{"type":"object","properties":{"cpu":{"allOf":[{"$ref":"#/components/schemas/SpApi.CoreApi.Core.v1.HardwareAssets.Model.HardwareAssetConfigurationCpu"}],"description":"CPU specifications for the hardware asset."},"ram_bytes":{"type":"integer","description":"Total installed system memory (RAM) on the hardware asset, measured in bytes.","format":"int64","nullable":true,"example":"17179869184"},"disks":{"type":"array","items":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.v1.HardwareAssets.Model.HardwareAssetConfigurationDisks"},"nullable":true}},"additionalProperties":false,"description":"Hardware configuration details including CPU, memory, and storage specifications."},"SpApi.CoreApi.Core.v1.HardwareAssets.Model.HardwareAssetConfigurationCpu":{"type":"object","properties":{"name":{"type":"string","description":"CPU model name.","nullable":true,"example":"Intel Core i7-11700"},"manufacturer_name":{"type":"string","description":"CPU manufacturer name in ScalePad.","nullable":true,"example":"Intel"},"manufacturer_id":{"type":"string","description":"CPU manufacturer identifier in ScalePad.","nullable":true,"example":"INTEL"}},"additionalProperties":false,"description":"CPU specifications for the hardware asset."},"SpApi.CoreApi.Core.v1.HardwareAssets.Model.HardwareAssetConfigurationDisks":{"type":"object","properties":{"name":{"type":"string","description":"Name of the disk.","nullable":true,"example":"C:"},"total_bytes":{"type":"integer","description":"Total storage capacity of the disk, measured in bytes.","format":"int64","nullable":true,"example":"4306093056"},"used_bytes":{"type":"integer","description":"Amount of storage space that is currently in use on the disk, measured in bytes.","format":"int64","nullable":true,"example":"645879"}},"additionalProperties":false,"description":"List of disks and their storage information including capacity and usage. Note that usage data is updated based on periodic syncs and may be subject to delays ranging from 24 hours to several days."},"SpApi.CoreApi.Core.v1.HardwareAssets.Model.HardwareAssetContact":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier of the contact in ScalePad.","example":"4k9678ty-4rt8-8g3e-a789-wfe5e6789rfd"}},"additionalProperties":false,"description":"Contact who uses the hardware asset."},"SpApi.CoreApi.Core.v1.HardwareAssets.Model.HardwareAssetManufacturer":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier of the manufacturer in ScalePad.","nullable":true,"example":"HPINC"},"name":{"type":"string","description":"Name of the manufacturer in ScalePad.","nullable":true,"example":"HP Inc."}},"additionalProperties":false,"description":"ScalePad standardized manufacturer details of the hardware asset."},"SpApi.CoreApi.Core.v1.HardwareAssets.Model.HardwareAssetModel":{"type":"object","properties":{"number":{"type":"string","description":"Number of the model.","nullable":true,"example":"OptiPlex 7090"},"description":{"type":"string","description":"Description of the model.","nullable":true,"example":"Dell OptiPlex 7090 Desktop Computer"}},"additionalProperties":false,"description":"Model information of the hardware asset provided by the manufacturer."},"SpApi.CoreApi.Core.v1.HardwareAssets.Model.HardwareAssetSoftware":{"type":"object","properties":{"operating_system":{"type":"string","description":"Information about the operating system.","nullable":true,"example":"Windows 11 Pro"},"antivirus_info":{"allOf":[{"$ref":"#/components/schemas/SpApi.CoreApi.Core.v1.HardwareAssets.Model.HardwareAssetSoftwareAntivirusInfo"}],"description":"Information about the antivirus software."},"office_suite_info":{"allOf":[{"$ref":"#/components/schemas/SpApi.CoreApi.Core.v1.HardwareAssets.Model.HardwareAssetSoftwareOfficeSuiteInfo"}],"description":"Information about the office suite software."}},"additionalProperties":false,"description":"Information about critical software installed on the hardware asset."},"SpApi.CoreApi.Core.v1.HardwareAssets.Model.HardwareAssetSoftwareAntivirusInfo":{"type":"object","properties":{"status":{"enum":["UNKNOWN","DISABLED","RUNNING"],"type":"string","description":"Current state of the antivirus software.","nullable":true,"example":"Active"},"definition_status":{"enum":["OUTOFDATE","UNKNOWN","UPTODATE"],"type":"string","description":"Current state of the antivirus software configuration.","nullable":true,"example":"Up to Date"}},"additionalProperties":false,"description":"Information about the antivirus software."},"SpApi.CoreApi.Core.v1.HardwareAssets.Model.HardwareAssetSoftwareOfficeSuiteInfo":{"type":"object","properties":{"name":{"type":"string","description":"Name of the office suite software.","nullable":true,"example":"Microsoft Office 365"},"version":{"type":"string","description":"Version of the office suite software.","nullable":true,"example":"16.0.14326.20404"}},"additionalProperties":false,"description":"Information about the office suite software."},"SpApi.CoreApi.Core.v1.Integrations.Configurations.IntegrationConfigurations":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.v1.Integrations.Configurations.IntegrationConfigurations_IntegrationConfigurationItem"}}},"additionalProperties":false},"SpApi.CoreApi.Core.v1.Integrations.Configurations.IntegrationConfigurations_IntegrationConfigurationItem":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier of this integration instance in ScalePad.","example":"5Vprq5VpwWGS"},"vendor":{"allOf":[{"$ref":"#/components/schemas/SpApi.CoreApi.Core.v1.Integrations.Configurations.IntegrationConfigurations_IntegrationVendor"}],"description":"Details about the integration vendor this integration instance belongs to."},"nickname":{"type":"string","description":"Human-readable integration setup name for system identification and operational monitoring. Used by MSP teams to distinguish between multiple instances of the same PSA vendor.","nullable":true,"example":"GLOBAL ConnectWise Manage (TEST)"},"primary":{"enum":["CLIENT","CONTRACT","CONTACT","HARDWARE_ASSET","MEMBER","OPPORTUNITY","SAAS_ASSET","SAAS_USER","TICKET"],"type":"array","items":{"type":"string"},"description":"List of datatypes for which this integration is the primary. Items of those datatypes will be created in this integration when create actions are called. The list will be empty if this integration is not the primary for any datatype.","example":"[\"TICKET\",\"OPPORTUNITY\"]"}},"additionalProperties":false},"SpApi.CoreApi.Core.v1.Integrations.Configurations.IntegrationConfigurations_IntegrationVendor":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier of the vendor in ScalePad.","example":"2"},"brand_name":{"type":"string","description":"Human-readable name of the vendor (not unique). Note: A vendor’s name may change if the vendor rebrands.","example":"Kaseya VSA"}},"additionalProperties":false},"SpApi.CoreApi.Core.v1.Integrations.Model.Vendors":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.v1.Integrations.Model.Vendors_Vendor"}}},"additionalProperties":false},"SpApi.CoreApi.Core.v1.Integrations.Model.Vendors_Vendor":{"type":"object","properties":{"name":{"type":"string","example":"Autotask PSA"},"vendor_id":{"type":"string","example":"40"},"category":{"enum":["PSA","RMM","SaaS","Network","Documentation","Backup","Customer Satisfaction","Cybersecurity","PSA & RMM","Backup"],"type":"string","example":"PSA & RMM"},"data_types_supported":{"enum":["CLIENT","CONTRACT","CONTACT","HARDWARE_ASSET","MEMBER","OPPORTUNITY","SAAS_ASSET","SAAS_USER","TICKET"],"type":"array","items":{"type":"string"},"example":"[\"HARDWARE_ASSET\",\"CONTACT\"]"}},"additionalProperties":false},"SpApi.CoreApi.Core.v1.Members.Model.Member":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier of the member in ScalePad.","example":"1g9876ty-4er6-4g3t-a123-wfe5e5234rfd"},"name":{"allOf":[{"$ref":"#/components/schemas/SpApi.CoreApi.Core.v1.Members.Model.MemberName"}],"description":"Name of the member."},"hired_at":{"type":"string","description":"Date when the member was hired by the MSP.","format":"date-time","nullable":true,"example":"2024-02-05T00:00:00.000Z"},"title":{"type":"string","description":"Professional job title or role of the member within MSP.","nullable":true,"example":"Technician"},"is_scalepad_user":{"type":"boolean","description":"Flag indicating whether the member is a ScalePad platform user.","example":"true"},"contact_info":{"allOf":[{"$ref":"#/components/schemas/SpApi.CoreApi.Core.v1.Members.Model.MemberContactInfo"}],"description":"Communication details of the member."},"reports_to_member":{"allOf":[{"$ref":"#/components/schemas/SpApi.CoreApi.Core.v1.Members.Model.MemberReportsToMember"}],"description":"Identifies who this member reports to.","nullable":true},"work_roles":{"type":"array","items":{"type":"string"},"description":"List of responsibilities or functional roles assigned to the member within an MSP.","nullable":true,"example":"[\"Analyst\",\"Engineer\"]"},"hourly_cost":{"allOf":[{"$ref":"#/components/schemas/SpApi.CoreApi.Core.v1.Members.Model.MemberHourlyCost"}],"description":"Cost incurred by the MSP per hour of work performed by the member. This is the default hourly cost for the member.","nullable":true},"daily_capacity":{"type":"integer","description":"Number of working hours the member is available per day.","format":"int32","nullable":true,"example":"8"},"record_lineage":{"type":"array","items":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Model.RecordLineage"},"nullable":true},"address":{"allOf":[{"$ref":"#/components/schemas/SpApi.CoreApi.Core.v1.Members.Model.MemberAddress"}],"description":"Geographic information of the location where the member is based, with ISO-standardized country and state information where possible.","nullable":true},"record_created_at":{"type":"string","description":"Timestamp of when this record was created","format":"date-time","example":"2019-09-30T15:28:17.354Z"},"record_updated_at":{"type":"string","description":"Timestamp of when this record was last updated","format":"date-time","example":"2019-09-30T15:28:17.354Z"}},"additionalProperties":false,"description":"An active user (employee, contractor, downstream IT, etc.) within the MSP, enriched with details including their roles, access to ScalePad products, and other associated employee attributes."},"SpApi.CoreApi.Core.v1.Members.Model.MemberAddress":{"type":"object","properties":{"address_line_1":{"type":"string","description":"Address line 1 of the member.","nullable":true,"example":"123 Main Street"},"address_line_2":{"type":"string","description":"Address line 2 of the member.","nullable":true,"example":"Suite 200"},"address_line_3":{"type":"string","description":"Address line 3 of the member.","nullable":true},"city":{"type":"string","description":"City of the member.","nullable":true,"example":"New York"},"state_prov_code":{"type":"string","description":"Province or state code of the member.","nullable":true,"example":"NY"},"state_prov_name":{"type":"string","description":"Province or state name of the member.","nullable":true,"example":"New York"},"country_code":{"type":"string","description":"ISO country code of the member.","nullable":true,"example":"US"},"country_name":{"type":"string","description":"Official displayable name of the country of the member.","nullable":true,"example":"United States"},"is_eu":{"type":"boolean","description":"Flag indicating if the member is located in the European Union for compliance and regulatory purposes.","nullable":true,"example":"false"},"postal_code":{"type":"string","description":"Postal service code of the member.","nullable":true,"example":"10001"},"geo_spatial_coordinates":{"allOf":[{"$ref":"#/components/schemas/SpApi.CoreApi.Core.v1.Members.Model.MemberAddressGeoSpatialCoordinates"}],"description":"Geospatial information relating to the member.","nullable":true}},"additionalProperties":false,"description":"Geographic information of the location where the member is based, with ISO-standardized country and state information where possible."},"SpApi.CoreApi.Core.v1.Members.Model.MemberAddressGeoSpatialCoordinates":{"type":"object","properties":{"latitude":{"type":"number","description":"Latitude to a 2 km precision for the location of the member.","format":"double","nullable":true,"example":"40.71"},"longitude":{"type":"number","description":"Longitude to a 2 km precision for the location of the member.","format":"double","nullable":true,"example":"74.06"},"h3_cell_id":{"type":"integer","description":"Geospatial cell using the H3 coding system with a 2 km precision for the location of the member.","format":"int64","nullable":true,"example":"1234567890"}},"additionalProperties":false,"description":"Geospatial information relating to the member."},"SpApi.CoreApi.Core.v1.Members.Model.MemberContactInfo":{"type":"object","properties":{"email":{"type":"string","description":"Email address of the member.","example":"john.smith@company.com"},"ext":{"type":"string","description":"Phone extension of the member.","nullable":true,"example":"1234"},"phone":{"type":"string","description":"Phone number of the member.","nullable":true,"example":"6013789938"}},"additionalProperties":false,"description":"Communication details of the member."},"SpApi.CoreApi.Core.v1.Members.Model.MemberHourlyCost":{"type":"object","properties":{"iso_currency_code":{"type":"string","description":"Three letter ISO code for currency.","nullable":true,"example":"USD"},"amount":{"type":"number","description":"Cost incurred by the MSP per hour of work performed by the member.","format":"double","nullable":true,"example":"85.50"}},"additionalProperties":false,"description":"Cost incurred by the MSP per hour of work performed by the member. This is the default hourly cost for the member."},"SpApi.CoreApi.Core.v1.Members.Model.MemberName":{"type":"object","properties":{"first":{"type":"string","description":"First name of the member.","example":"John"},"last":{"type":"string","description":"Last name of the member.","example":"Smith"},"middle":{"type":"string","description":"Middle name of the member.","nullable":true,"example":"Michael"},"full":{"type":"string","description":"Complete name of the member.","nullable":true,"example":"John Michael Smith"}},"additionalProperties":false,"description":"Name of the member."},"SpApi.CoreApi.Core.v1.Members.Model.MemberReportsToMember":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier of the member this person reports to in ScalePad.","example":"1g4123ty-4er6-4g3t-a345-wfe5e5234rfd"}},"additionalProperties":false,"description":"Identifies who this member reports to."},"SpApi.CoreApi.Core.v1.Opportunities.Model.Opportunity":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier of the opportunity in ScalePad.","example":"1g4123ty-4er6-4g3t-a345-wfe5e5234rfd"},"title":{"type":"string","description":"Short, descriptive name that identifies the nature of the opportunity.","nullable":true,"example":"Managed IT Services - ABC Corp"},"description":{"type":"string","description":"Detailed explanation of the opportunity.","nullable":true,"example":"Comprehensive managed IT services including help desk, network monitoring, and cybersecurity for 150-user manufacturing company"},"source_status":{"type":"string","description":"Original opportunity state value from the source system before ScalePad standardization.","nullable":true,"example":"Open"},"source_stage":{"type":"string","description":"Original opportunity stage value from the source system before ScalePad standardization.","nullable":true,"example":"Stage 2: Technical Review"},"is_active":{"type":"boolean","description":"Boolean flag indicating whether the opportunity is active.","nullable":true,"example":"true"},"probability":{"type":"integer","description":"Likelihood that the opportunity will be successfully closed (won), expressed as a percentage from 0 to 100.","format":"int32","nullable":true,"example":"75"},"client":{"allOf":[{"$ref":"#/components/schemas/SpApi.CoreApi.Core.v1.Opportunities.Model.OpportunityClient"}],"description":"Client organization associated with the opportunity."},"contact":{"allOf":[{"$ref":"#/components/schemas/SpApi.CoreApi.Core.v1.Opportunities.Model.OpportunityContact"}],"description":"Contact associated with the opportunity.","nullable":true},"responsible_member":{"allOf":[{"$ref":"#/components/schemas/SpApi.CoreApi.Core.v1.Opportunities.Model.OpportunityResponsibleMember"}],"description":"Member at the MSP who is responsible for managing the opportunity.","nullable":true},"record_lineage":{"type":"array","items":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Model.RecordLineage"},"nullable":true},"record_created_at":{"type":"string","description":"Timestamp of when this record was created","format":"date-time","example":"2019-09-30T15:28:17.354Z"},"record_updated_at":{"type":"string","description":"Timestamp of when this record was last updated","format":"date-time","example":"2019-09-30T15:28:17.354Z"}},"additionalProperties":false,"description":"A sales opportunity for an active client managed by the MSP, enriched with information such as status, stage, associated contact, and other sales-related information."},"SpApi.CoreApi.Core.v1.Opportunities.Model.OpportunityClient":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier of the client organization in ScalePad.","example":"00000ae5-h3r7-6468-er45-wiuynj9c0d23"},"name":{"type":"string","description":"Name of the client organization.","example":"ABC Manufacturing Inc."}},"additionalProperties":false,"description":"Client organization associated with the opportunity."},"SpApi.CoreApi.Core.v1.Opportunities.Model.OpportunityContact":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier of the contact in ScalePad.","example":"1g4123ty-4er6-5h3h-a234-wfe5e5234rfd"}},"additionalProperties":false,"description":"Contact associated with the opportunity."},"SpApi.CoreApi.Core.v1.Opportunities.Model.OpportunityResponsibleMember":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier of the member in ScalePad.","example":"1g4123ty-4er6-4g3t-a345-wfe5e5234rfd"}},"additionalProperties":false,"description":"Member at the MSP who is responsible for managing the opportunity."},"SpApi.CoreApi.Core.v1.SaasAssets.Model.SaasAsset":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier of the SaaS asset in ScalePad.","example":"1g4123ty-4er6-4g3t-a345-wfe5e5234rfd"},"client":{"allOf":[{"$ref":"#/components/schemas/SpApi.CoreApi.Core.v1.SaasAssets.Model.SaasAssetClient"}],"description":"Client organization that uses the SaaS asset."},"product":{"allOf":[{"$ref":"#/components/schemas/SpApi.CoreApi.Core.v1.SaasAssets.Model.SaasAssetProduct"}],"description":"SaaS product information.","nullable":true},"status":{"type":"string","description":"Source status value representing current lifecycle or availability state of the SaaS license.","nullable":true,"example":"Enabled"},"term":{"allOf":[{"$ref":"#/components/schemas/SpApi.CoreApi.Core.v1.SaasAssets.Model.SaasAssetTerm"}],"description":"Represents the active subscription or term duration of the SaaS asset.","nullable":true},"pool":{"allOf":[{"$ref":"#/components/schemas/SpApi.CoreApi.Core.v1.SaasAssets.Model.SaasAssetPool"}],"description":"Total number of SaaS licenses or entitlements available under a subscription.","nullable":true},"record_lineage":{"type":"array","items":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Model.RecordLineage"},"nullable":true},"record_created_at":{"type":"string","description":"Timestamp of when this record was created","format":"date-time","example":"2019-09-30T15:28:17.354Z"},"record_updated_at":{"type":"string","description":"Timestamp of when this record was last updated","format":"date-time","example":"2019-09-30T15:28:17.354Z"}},"additionalProperties":false,"description":"A cloud-based software application used by a client organization, tracked and managed by the MSP as part of its service delivery."},"SpApi.CoreApi.Core.v1.SaasAssets.Model.SaasAssetClient":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier of the client organization in ScalePad.","example":"00000ae5-h3r7-6468-er45-wiuynj9c0d23"},"name":{"type":"string","description":"Name of the client organization.","example":"ABC Manufacturing Inc."}},"additionalProperties":false,"description":"Client organization that uses the SaaS asset."},"SpApi.CoreApi.Core.v1.SaasAssets.Model.SaasAssetPool":{"type":"object","properties":{"type":{"enum":["SEAT"],"type":"string","description":"Describes the pool type.","nullable":true,"example":"SEAT"},"capacity":{"type":"integer","description":"Maximum number of licenses purchased or allocated under the pool.","format":"int64","nullable":true,"example":"100"},"utilized":{"type":"integer","description":"Number of licenses currently assigned or in use.","format":"int64","nullable":true,"example":"75"},"active":{"type":"integer","description":"Number of licenses that are actively in use.","format":"int64","nullable":true,"example":"70"},"suspended":{"type":"integer","description":"Number of licenses that are temporarily disabled or on hold.","format":"int64","nullable":true,"example":"5"},"grace_period_warning":{"type":"integer","description":"Number of licenses nearing their expiration or in a grace period.","format":"int64","nullable":true,"example":"3"}},"additionalProperties":false,"description":"Total number of SaaS licenses or entitlements available under a subscription."},"SpApi.CoreApi.Core.v1.SaasAssets.Model.SaasAssetProduct":{"type":"object","properties":{"manufacturer":{"allOf":[{"$ref":"#/components/schemas/SpApi.CoreApi.Core.v1.SaasAssets.Model.SaasAssetProductManufacturer"}],"description":"Manufacturer information of the SaaS product.","nullable":true},"id":{"type":"string","description":"Unique identifier of the SaaS product in ScalePad.","nullable":true,"example":"1234g43b06d130vcf4b3d523573q3g8l"},"name":{"type":"string","description":"Name of the SaaS product.","nullable":true,"example":"Amazing Product"},"category":{"type":"string","description":"Classification of the SaaS product representing its utility.","nullable":true,"example":"Productivity"},"manufacturer_sku":{"allOf":[{"$ref":"#/components/schemas/SpApi.CoreApi.Core.v1.SaasAssets.Model.SaasAssetProductManufacturerSku"}],"description":"SKU code of the SaaS product provided by the manufacturer.","nullable":true}},"additionalProperties":false,"description":"SaaS product information."},"SpApi.CoreApi.Core.v1.SaasAssets.Model.SaasAssetProductManufacturer":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier of the manufacturer.","nullable":true,"example":"MS"},"name":{"type":"string","description":"Name of the manufacturer.","nullable":true,"example":"Microsoft"}},"additionalProperties":false,"description":"Manufacturer information of the SaaS product."},"SpApi.CoreApi.Core.v1.SaasAssets.Model.SaasAssetProductManufacturerSku":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier of the SKU code.","nullable":true,"example":"42345ae5-h3r7-8569-er45-qertjn9c0d23"},"name":{"type":"string","description":"Name of the SKU code.","nullable":true,"example":"Microsoft 365 Business Basic"}},"additionalProperties":false,"description":"SKU code of the SaaS product provided by the manufacturer."},"SpApi.CoreApi.Core.v1.SaasAssets.Model.SaasAssetTerm":{"type":"object","properties":{"starts_at":{"type":"string","description":"Date when the SaaS asset became (or will become) active.","format":"date-time","nullable":true,"example":"2025-03-01"},"ends_at":{"type":"string","description":"Scheduled end date of the license or subscription term.","format":"date-time","nullable":true,"example":"2025-03-31"},"is_auto_renewed":{"type":"boolean","description":"Flag indicating whether the license will automatically renew at the end of the current term.","nullable":true,"example":"true"}},"additionalProperties":false,"description":"Represents the active subscription or term duration of the SaaS asset."},"SpApi.CoreApi.Core.v1.SaasUsers.Model.SaasUser":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier of the SaaS user in ScalePad.","example":"1g9876ty-4er6-4g3t-a123-wfe5e5234rfd"},"client":{"allOf":[{"$ref":"#/components/schemas/SpApi.CoreApi.Core.v1.SaasUsers.Model.SaasUserClient"}],"description":"Client organization that the SaaS user is associated with."},"contact":{"allOf":[{"$ref":"#/components/schemas/SpApi.CoreApi.Core.v1.SaasUsers.Model.SaasUserContact"}],"description":"Contact who is assigned to the license for the SaaS asset.","nullable":true},"asset":{"allOf":[{"$ref":"#/components/schemas/SpApi.CoreApi.Core.v1.SaasUsers.Model.SaasUserAsset"}],"description":"SaaS asset information associated with the user.","nullable":true},"product":{"allOf":[{"$ref":"#/components/schemas/SpApi.CoreApi.Core.v1.SaasUsers.Model.SaasUserProduct"}],"description":"SaaS product information.","nullable":true},"term":{"allOf":[{"$ref":"#/components/schemas/SpApi.CoreApi.Core.v1.SaasUsers.Model.SaasUserTerm"}],"description":"Represents the active subscription or term duration of the SaaS asset.","nullable":true},"activity":{"allOf":[{"$ref":"#/components/schemas/SpApi.CoreApi.Core.v1.SaasUsers.Model.SaasUserActivity"}],"description":"Activity information of the SaaS user, if provided by the vendor.","nullable":true},"authentication":{"allOf":[{"$ref":"#/components/schemas/SpApi.CoreApi.Core.v1.SaasUsers.Model.SaasUserAuthentication"}],"description":"Multi-factor authentication information for user.","nullable":true},"is_admin":{"type":"boolean","description":"Flag indicating whether the user has admin privileges.","nullable":true,"example":"false"},"record_lineage":{"type":"array","items":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Model.RecordLineage"},"nullable":true},"record_created_at":{"type":"string","description":"Timestamp of when this record was created","format":"date-time","example":"2019-09-30T15:28:17.354Z"},"record_updated_at":{"type":"string","description":"Timestamp of when this record was last updated","format":"date-time","example":"2019-09-30T15:28:17.354Z"}},"additionalProperties":false,"description":"An individual at the client organization who has been assigned access to a SaaS license managed by the MSP."},"SpApi.CoreApi.Core.v1.SaasUsers.Model.SaasUserActivity":{"type":"object","properties":{"last_active_at":{"type":"string","description":"Most recent time the user was active in the system.","format":"date-time","nullable":true,"example":"2025-01-15T14:30:25.123"},"is_active":{"type":"boolean","description":"Flag indicating whether the user is considered active in the system.","nullable":true,"example":"true"}},"additionalProperties":false,"description":"Activity information of the SaaS user, if provided by the vendor."},"SpApi.CoreApi.Core.v1.SaasUsers.Model.SaasUserAsset":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier of the SaaS asset in ScalePad.","nullable":true,"example":"12345a0c-4aqa-40fd-aqaw-eq3f03ge1579"},"status":{"type":"string","description":"Source status value representing current lifecycle or availability state of the SaaS license.","nullable":true,"example":"Enabled"}},"additionalProperties":false,"description":"SaaS asset information associated with the user."},"SpApi.CoreApi.Core.v1.SaasUsers.Model.SaasUserAuthentication":{"type":"object","properties":{"is_mfa_enabled":{"type":"boolean","description":"Flag indicating whether multi-factor authentication is enabled for the user.","nullable":true,"example":"true"},"mfa_methods":{"type":"array","items":{"type":"string"},"description":"List of multi-factor authentication methods enabled for the user.","nullable":true,"example":"[\"SMS\", \"Authenticator App\"]"},"default_mfa_method":{"type":"string","description":"Default multi-factor authentication method for user.","nullable":true,"example":"Authenticator App"}},"additionalProperties":false,"description":"Multi-factor authentication information for user."},"SpApi.CoreApi.Core.v1.SaasUsers.Model.SaasUserClient":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier of the client organization in ScalePad.","example":"00000ae5-h3r7-6468-er45-wiuynj9c0d23"},"name":{"type":"string","description":"Name of the client organization.","example":"ABC Manufacturing Inc."}},"additionalProperties":false,"description":"Client organization that the SaaS user is associated with."},"SpApi.CoreApi.Core.v1.SaasUsers.Model.SaasUserContact":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier of the contact in ScalePad.","nullable":true,"example":"1g4123ty-4er6-4g3t-a345-wfe5e5234rfd"}},"additionalProperties":false,"description":"Contact who is assigned to the license for the SaaS asset."},"SpApi.CoreApi.Core.v1.SaasUsers.Model.SaasUserProduct":{"type":"object","properties":{"manufacturer":{"allOf":[{"$ref":"#/components/schemas/SpApi.CoreApi.Core.v1.SaasUsers.Model.SaasUserProductManufacturer"}],"description":"Manufacturer information of the SaaS product.","nullable":true},"id":{"type":"string","description":"Unique identifier of the SaaS product in ScalePad.","nullable":true,"example":"-123456789123456789"},"name":{"type":"string","description":"Name of the SaaS product.","nullable":true,"example":"Amazing Product"},"category":{"type":"string","description":"Classification of the SaaS product representing its utility.","nullable":true,"example":"Productivity"},"manufacturer_sku":{"allOf":[{"$ref":"#/components/schemas/SpApi.CoreApi.Core.v1.SaasUsers.Model.SaasUserProductManufacturerSku"}],"description":"SKU code of the SaaS product provided by the manufacturer.","nullable":true}},"additionalProperties":false,"description":"SaaS product information."},"SpApi.CoreApi.Core.v1.SaasUsers.Model.SaasUserProductManufacturer":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier of the manufacturer.","nullable":true,"example":"MS"},"name":{"type":"string","description":"Name of the manufacturer.","nullable":true,"example":"Microsoft"}},"additionalProperties":false,"description":"Manufacturer information of the SaaS product."},"SpApi.CoreApi.Core.v1.SaasUsers.Model.SaasUserProductManufacturerSku":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier of the SKU code.","nullable":true,"example":"26abc4ww-1gg5-12ee-1234-12345as12e06"},"name":{"type":"string","description":"Name of the SKU code.","nullable":true,"example":"Microsoft 365 Business Basic"}},"additionalProperties":false,"description":"SKU code of the SaaS product provided by the manufacturer."},"SpApi.CoreApi.Core.v1.SaasUsers.Model.SaasUserTerm":{"type":"object","properties":{"starts_at":{"type":"string","description":"Date when the SaaS asset became (or will become) active.","format":"date-time","nullable":true,"example":"2025-01-01T00:00:00.000"},"ends_at":{"type":"string","description":"Scheduled end date of the license or subscription term.","format":"date-time","nullable":true,"example":"2025-12-31T23:59:59.999"}},"additionalProperties":false,"description":"Represents the active subscription or term duration of the SaaS asset."},"SpApi.CoreApi.Core.v1.Tickets.Model.Ticket":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier of the ticket in ScalePad.","example":"1g4123ty-4er6-4g3t-a345-wfe5e5234rfd"},"owner_member":{"allOf":[{"$ref":"#/components/schemas/SpApi.CoreApi.Core.v1.Tickets.Model.TicketOwnerMember"}],"description":"Member of an MSP who is accountable for the ticket.","nullable":true},"responsible_member":{"allOf":[{"$ref":"#/components/schemas/SpApi.CoreApi.Core.v1.Tickets.Model.TicketResponsibleMember"}],"description":"Member of an MSP who resolved the ticket. For a lot of tickets, this will be the same as the owner member.","nullable":true},"client":{"allOf":[{"$ref":"#/components/schemas/SpApi.CoreApi.Core.v1.Tickets.Model.TicketClient"}],"description":"Client organization associated with the ticket."},"contact":{"allOf":[{"$ref":"#/components/schemas/SpApi.CoreApi.Core.v1.Tickets.Model.TicketContact"}],"description":"Contact who submitted the ticket or serves as the main point of communication at the client organization for the ticket.","nullable":true},"contract":{"allOf":[{"$ref":"#/components/schemas/SpApi.CoreApi.Core.v1.Tickets.Model.TicketContract"}],"description":"Contract associated with the ticket.","nullable":true},"board":{"allOf":[{"$ref":"#/components/schemas/SpApi.CoreApi.Core.v1.Tickets.Model.TicketBoard"}],"description":"Represents a workflow queue or service category of the ticket.","nullable":true},"summary":{"type":"string","description":"Description that briefly explains the issue, the purpose of the ticket and other relevant details.","nullable":true,"example":"Email server connectivity issues affecting multiple users"},"category":{"enum":["INCIDENT","NETWORK_INCIDENT","FIREWALL_INCIDENT","ROUTER_INCIDENT","WIFI_INCIDENT","CONNECTIVITY_INCIDENT","SERVER_INCIDENT","HARDWARE_INCIDENT","WORKSTATION_INCIDENT","SHARED_PERIPHERAL_INCIDENT","MOBILE_DEVICE_INCIDENT","STORAGE_INCIDENT","SOFTWARE_INCIDENT","CLIENT_SOFTWARE_INCIDENT","SERVER_SOFTWARE_INCIDENT","COMMUNICATION_SYSTEM_INCIDENT","PHONE_SYSTEM_INCIDENT","MESSAGING_SYSTEM_INCIDENT","VIDEO_CONFERENCING_INCIDENT","SERVICE_REQUEST","NETWORK_REQUEST","FIREWALL_REQUEST","ROUTER_REQUEST","WIFI_REQUEST","CONNECTIVITY_REQUEST","HARDWARE_REQUEST","WORKSTATION_REQUEST","SERVER_REQUEST","SHARED_PERIPHERAL_REQUEST","MOBILE_DEVICE_REQUEST","ASSET_DISPOSAL_REQUEST","SOFTWARE_REQUEST","CLIENT_SOFTWARE_REQUEST","SERVER_SOFTWARE_REQUEST","COMMUNICATION_SYSTEM_REQUEST","PHONE_SYSTEM_REQUEST","MESSAGING_SYSTEM_REQUEST","VIDEO_CONFERENCING_REQUEST","IT_MANAGEMENT","CYBERSECURITY_MANAGEMENT","BREACH","MALWARE","DISASTER_RECOVERY","BACKUP_FAILURE","RESTORATION","DISASTER_RECOVERY_PLAN","DOCUMENTATION_TRAINING","DOCUMENTATION","TRAINING","USER_MANAGEMENT","USER_CREATION","USER_DELETION","USER_ACCESS_MODIFICATION","AUDIT","COMPLIANCE_AUDIT","FINANCIAL_AUDIT","GENERAL_MANAGEMENT","PROJECT_MANAGEMENT","CHANGE_MANAGEMENT","STRATEGIC_PLANNING","BUDGETING","UNASSIGNED"],"type":"string","description":"ScalePad standardized classification value, mapped from the source system's native category of the ticket. In the event that the ticket cateogries have not been mapped to Scalepad standards, the ticket category will fallback to the ones found in the MSP. The fallbacks will not have code descriptions.","nullable":true,"example":"Network Infrastructure"},"timeline":{"allOf":[{"$ref":"#/components/schemas/SpApi.CoreApi.Core.v1.Tickets.Model.TicketTimeline"}],"description":"A set of key timestamps that represent the lifecycle stages of a ticket.","nullable":true},"duration":{"allOf":[{"$ref":"#/components/schemas/SpApi.CoreApi.Core.v1.Tickets.Model.TicketDuration"}],"description":"Structured set of time-based metrics, measured in minutes, that represent how long it takes to progress through different stages of a ticket's lifecycle. These durations are adjusted to exclude account time-off, non-working days, and wait times to reflect true working time.","nullable":true},"sla":{"allOf":[{"$ref":"#/components/schemas/SpApi.CoreApi.Core.v1.Tickets.Model.TicketSla"}],"description":"A set of boolean indicators showing whether milestones on the ticket were met according to the ticket's agreed Service Level Agreement (SLA), if one exists.","nullable":true},"status":{"allOf":[{"$ref":"#/components/schemas/SpApi.CoreApi.Core.v1.Tickets.Model.TicketStatus"}],"description":"ScalePad standardized status value, mapped from the source system's native ticket status, represeting the state of the ticket in the service workflow, along with a historical log of all past status transitions.","nullable":true},"priority":{"allOf":[{"$ref":"#/components/schemas/SpApi.CoreApi.Core.v1.Tickets.Model.TicketPriority"}],"description":"Represents the urgency level assigned to a ticket, indicating how quickly it should be addressed. Includes both the current priority and a historical log of past priority changes with timestamps.","nullable":true},"impact":{"type":"string","description":"Categorizes the scope of the issue's effect on the client's business operations.","nullable":true,"example":"MEDIUM"},"severity":{"type":"string","description":"Categorizes how technically serious or urgent the issue is.","nullable":true,"example":"HIGH"},"num_notes":{"type":"integer","description":"Total number of notes associated with the ticket.","format":"int32","nullable":true,"example":"12"},"record_lineage":{"type":"array","items":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.Model.RecordLineage"},"nullable":true},"record_created_at":{"type":"string","description":"Timestamp of when this record was created","format":"date-time","example":"2019-09-30T15:28:17.354Z"},"record_updated_at":{"type":"string","description":"Timestamp of when this record was last updated","format":"date-time","example":"2019-09-30T15:28:17.354Z"}},"additionalProperties":false,"description":"A service request or an issue raised by a client or an MSP, enriched with details about the requester, the client, issue summary, and other issue-related details."},"SpApi.CoreApi.Core.v1.Tickets.Model.TicketBoard":{"type":"object","properties":{"id":{"type":"string","description":"Source system identifier of the board.","nullable":true,"example":"78"},"name":{"type":"string","description":"Name of the board.","nullable":true,"example":"Backup Alerts"}},"additionalProperties":false,"description":"Represents a workflow queue or service category of the ticket."},"SpApi.CoreApi.Core.v1.Tickets.Model.TicketClient":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier of the client organization associated with the ticket in ScalePad.","example":"00000ae5-h3r7-6468-er45-wiuynj9c0d23"},"name":{"type":"string","description":"Name of the client organization associated with the ticket.","example":"ABC Manufacturing Inc."}},"additionalProperties":false,"description":"Client organization associated with the ticket."},"SpApi.CoreApi.Core.v1.Tickets.Model.TicketContact":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier of the contact associated with the ticket in ScalePad.","nullable":true,"example":"1g4123ty-4er6-4g3t-a345-wfe5e5234rfd"}},"additionalProperties":false,"description":"Contact who submitted the ticket or serves as the main point of communication at the client organization for the ticket."},"SpApi.CoreApi.Core.v1.Tickets.Model.TicketContract":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier of the contract in ScalePad.","nullable":true,"example":"00000ae5-h3r7-6468-er45-wiuynj9c0d23"},"name":{"type":"string","description":"Name of the contract.","nullable":true,"example":"Premium Support Agreement"}},"additionalProperties":false,"description":"Contract associated with the ticket."},"SpApi.CoreApi.Core.v1.Tickets.Model.TicketDuration":{"type":"object","properties":{"minutes_to_respond":{"type":"integer","description":"Time (in minutes) between ticket creation and the first technician response.","format":"int32","nullable":true,"example":"8"},"minutes_to_plan":{"type":"integer","description":"Time (in minutes) from ticket creation to when work was scheduled or planned.","format":"int32","nullable":true,"example":"9"},"minutes_to_resolve":{"type":"integer","description":"Time (in minutes) from ticket creation to when the issue was marked as resolved.","format":"int32","nullable":true,"example":"15"},"minutes_to_close":{"type":"integer","description":"Time (in minutes) from ticket creation to when the ticket was formally closed.","format":"int32","nullable":true,"example":"3618"},"minutes_worked":{"type":"integer","description":"Total actual time (in minutes) spent by the technician(s) working on the ticket.","format":"int32","nullable":true,"example":"240"}},"additionalProperties":false,"description":"Structured set of time-based metrics, measured in minutes, that represent how long it takes to progress through different stages of a ticket's lifecycle. These durations are adjusted to exclude account time-off, non-working days, and wait times to reflect true working time."},"SpApi.CoreApi.Core.v1.Tickets.Model.TicketOwnerMember":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier of the member assigned to the ticket in ScalePad.","nullable":true,"example":"00000ae5-h3r7-6468-er45-wiuynj9c0d23"}},"additionalProperties":false,"description":"Member of an MSP who is accountable for the ticket."},"SpApi.CoreApi.Core.v1.Tickets.Model.TicketPriority":{"type":"object","properties":{"current":{"enum":["1","2","3","4","5","UNASSIGNED"],"type":"string","description":"The ticket's active priority level.","nullable":true,"example":"P2: HIGH Escalated"},"history":{"type":"array","items":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.v1.Tickets.Model.TicketPriorityHistory"},"nullable":true}},"additionalProperties":false,"description":"Represents the urgency level assigned to a ticket, indicating how quickly it should be addressed. Includes both the current priority and a historical log of past priority changes with timestamps."},"SpApi.CoreApi.Core.v1.Tickets.Model.TicketPriorityHistory":{"type":"object","properties":{"started_at":{"type":"string","description":"Date when the ticket was assigned this priority.","format":"date-time","nullable":true,"example":"2025-08-20T15:22:05.000Z"},"ended_at":{"type":"string","description":"Date when the ticket exited this priority state.","format":"date-time","nullable":true,"example":"2025-08-20T15:22:05.000Z"},"priority":{"enum":["1","2","3","4","5","UNASSIGNED"],"type":"string","description":"The priority level that was active during this time period.","nullable":true,"example":"HIGH"}},"additionalProperties":false,"description":"List of all previous priority states the ticket went through, including the time periods when each was active. Priority states shown here is based on the most recent 24-hour snapshot and may not reflect the real-time priority of the ticket."},"SpApi.CoreApi.Core.v1.Tickets.Model.TicketResponsibleMember":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier of the member who resolved the ticket in ScalePad.","nullable":true,"example":"00000ae5-h3r7-6468-er45-wiuynj9c0d23"}},"additionalProperties":false,"description":"Member of an MSP who resolved the ticket. For a lot of tickets, this will be the same as the owner member."},"SpApi.CoreApi.Core.v1.Tickets.Model.TicketSla":{"type":"object","properties":{"is_response_in_sla":{"type":"boolean","description":"True if the ticket was responded to within the SLA-defined response time.","nullable":true,"example":"true"},"is_plan_in_sla":{"type":"boolean","description":"True if the ticket was scheduled or planned within the agreed SLA timeframe.","nullable":true,"example":"true"},"is_resolution_in_sla":{"type":"boolean","description":"True if the ticket was resolved within the SLA-defined resolution time.","nullable":true,"example":"false"}},"additionalProperties":false,"description":"A set of boolean indicators showing whether milestones on the ticket were met according to the ticket's agreed Service Level Agreement (SLA), if one exists."},"SpApi.CoreApi.Core.v1.Tickets.Model.TicketStatus":{"type":"object","properties":{"current":{"enum":["NEW","ASSIGNED","SCHEDULED","TRIAGE","IN_PROGRESS","WAITING_CLIENT","WAITING_VENDOR","CANCELLED","COMPLETED","CLOSED","REOPENED","ESCALATED","CLIENT_RESPONDED","UNASSIGNED"],"type":"string","description":"ScalePad standardized current status value of the ticket in the service workflow.","nullable":true,"example":"UNASSIGNED"},"history":{"type":"array","items":{"$ref":"#/components/schemas/SpApi.CoreApi.Core.v1.Tickets.Model.TicketStatusHistory"},"nullable":true}},"additionalProperties":false,"description":"ScalePad standardized status value, mapped from the source system's native ticket status, represeting the state of the ticket in the service workflow, along with a historical log of all past status transitions."},"SpApi.CoreApi.Core.v1.Tickets.Model.TicketStatusHistory":{"type":"object","properties":{"started_at":{"type":"string","description":"Timestamp of when the ticket entered this status. Marks the beginning of this status period.","format":"date-time","nullable":true,"example":"2025-08-20T15:22:05.000Z"},"ended_at":{"type":"string","description":"Timestamp of when the ticket exited this status. Marks the end of this status period.","format":"date-time","nullable":true,"example":"2025-08-20T15:22:05.000Z"},"status":{"enum":["NEW","ASSIGNED","SCHEDULED","TRIAGE","IN_PROGRESS","WAITING_CLIENT","WAITING_VENDOR","CANCELLED","COMPLETED","CLOSED","REOPENED","ESCALATED","CLIENT_RESPONDED","UNASSIGNED"],"type":"string","description":"ScalePad standardized status value during this time period. Represents the state of the ticket at that moment.","nullable":true,"example":"ASSIGNED"}},"additionalProperties":false,"description":"List of status change events, showing when the ticket entered and exited each status. Statuses shown here is based on the most recent 24-hour snapshot and may not reflect the real-time status of the ticket."},"SpApi.CoreApi.Core.v1.Tickets.Model.TicketTimeline":{"type":"object","properties":{"created_at":{"type":"string","description":"Timestamp of when the ticket was created.","format":"date-time","nullable":true,"example":"2025-08-27T13:32:12.000Z"},"updated_at":{"type":"string","description":"Timestamp of when the ticket was last updated.","format":"date-time","nullable":true,"example":"2025-08-27T13:32:12.000Z"},"responded_at":{"type":"string","description":"Timestamp of when the ticket was first responded to.","format":"date-time","nullable":true,"example":"2025-08-27T13:32:12.000Z"},"planned_at":{"type":"string","description":"Timestamp of when the ticket was planned.","format":"date-time","nullable":true,"example":"2025-08-27T13:32:12.000Z"},"resolved_at":{"type":"string","description":"Timestamp of when the ticket was resolved.","format":"date-time","nullable":true,"example":"2025-08-27T13:32:12.000Z"},"closed_at":{"type":"string","description":"Timestamp of when the ticket was closed.","format":"date-time","nullable":true,"example":"2025-08-27T13:32:12.000Z"}},"additionalProperties":false,"description":"A set of key timestamps that represent the lifecycle stages of a ticket."},"Wm.Search.Model.Query.Field.Filter.QueryFilter.QueryFilter":{"type":"object","additionalProperties":false}},"securitySchemes":{"apiKey":{"type":"apiKey","description":"The API key generated from ScalePad application.<br> Example: 'c4d67eca-3b32ed26-b2412e47-2f634617-7e91a0f4-5c8d2b67-e3a19f0b-46d7c582'<br>","name":"x-api-key","in":"header"}}}}