{
  "openapi": "3.0.4",
  "info": {
    "title": "Alto API",
    "version": "1.0"
  },
  "servers": [
    {
      "url": "https://api.alto.zoopladev.co.uk",
      "description": "Sandbox"
    },
    {
      "url": "https://api.alto.zoopla.co.uk",
      "description": "Production"
    }
  ],
  "paths": {
    "/appointments/{appointmentId}/{instanceId}": {
      "get": {
        "tags": [
          "Appointments"
        ],
        "summary": "Retrieves an appointment by their unique identifier and numeric instance",
        "description": "Retrieves an appointment by their unique identifier and numeric instance.\n            \nRequired scope: alto/read:appointments",
        "parameters": [
          {
            "name": "appointmentId",
            "in": "path",
            "description": "The unique identifier of the appointment",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "instanceId",
            "in": "path",
            "description": "The numeric instance of an appointment; this value is only greater than zero for general appointment types that are marked as recurring and represents the xth instance of a given appointment in a recurring series.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "AgencyRef",
            "in": "header",
            "description": "",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Appointment retrieved for requested appointment id and instance.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ExternalPartnerAppointment"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExternalPartnerAppointment"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExternalPartnerAppointment"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Invalid scope or AgencyRef for request.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Appointment not found within the scope of the AgencyRef's authorised group and branches",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error"
          },
          "400": {
            "description": "Validation error e.g. invalid format for appointment identifier or instance"
          }
        }
      }
    },
    "/appointments/general": {
      "post": {
        "tags": [
          "Appointments"
        ],
        "summary": "Create a general appointment.",
        "description": "Creates an appointment with the requested contacts and properties for the given negotiators.\nRequired scope: alto/write:appointments_general",
        "parameters": [
          {
            "name": "diary-Date-Handling",
            "in": "header",
            "schema": {
              "enum": [
                "Default",
                "Legacy"
              ],
              "type": "string",
              "default": "Default"
            }
          },
          {
            "name": "AgencyRef",
            "in": "header",
            "description": "",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The object containing the appointment details.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/GeneralAppointmentRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/GeneralAppointmentRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/GeneralAppointmentRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Returns an object containing the newly created appointment's unique identifier",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/CreateAppointmentData"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreateAppointmentData"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreateAppointmentData"
                }
              }
            }
          },
          "400": {
            "description": "Validation error e.g. invalid date range selection.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Invalid scope or AgencyRef for request.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error"
          }
        }
      }
    },
    "/appointments/general/{appointmentId}": {
      "patch": {
        "tags": [
          "Appointments"
        ],
        "summary": "Updates an existing general appointment",
        "description": "Updates a general appointment with any of the following fields supported for update:\n- /startDate ie. The start date and time in ISO 8601 format to update against the requested general appointment\n- /endDate ie. The end date and time in ISO 8601 format to update against the requested general appointment\n- /negotiatorIds ie. An array of all negotiators' unique identifiers to be associated against the requested general appointment\n            \nRequired scope: alto/write:appointments_general",
        "parameters": [
          {
            "name": "appointmentId",
            "in": "path",
            "description": "The appointment's unique identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "diary-Date-Handling",
            "in": "header",
            "schema": {
              "enum": [
                "Default",
                "Legacy"
              ],
              "type": "string",
              "default": "Default"
            }
          },
          {
            "name": "AgencyRef",
            "in": "header",
            "description": "",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/GeneralAppointmentPatchJsonPatchDocument"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/GeneralAppointmentPatchJsonPatchDocument"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/GeneralAppointmentPatchJsonPatchDocument"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Returns an object with a flag indicating a successful update"
          },
          "400": {
            "description": "Validation error e.g. invalid date range selection or unsupported patch path/value.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Invalid scope or AgencyRef for request.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Appointment requesting to be updated does not exist against the requested AgencyRef",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error"
          }
        }
      }
    },
    "/appointments/negotiators": {
      "get": {
        "tags": [
          "Appointments"
        ],
        "summary": "Get negotiator's appointments within a selected time range.",
        "description": "Retrieves a paginated list of the requested negotiator's appointments within the selected time range, grouped by negotiator.\nRequired scope: alto/read:appointments",
        "parameters": [
          {
            "name": "start-date",
            "in": "query",
            "description": "Required: The start date and time in ISO 8601 format for filtering negotiator's appointments",
            "required": true,
            "schema": {
              "type": "string",
              "format": "date-time",
              "example": "2023-01-01T00:00:00.0000000+00:00"
            },
            "example": "2023-01-01T00:00:00.0000000+00:00"
          },
          {
            "name": "end-date",
            "in": "query",
            "description": "Required: The end date and time in ISO 8601 format for filtering negotiator's appointments",
            "required": true,
            "schema": {
              "type": "string",
              "format": "date-time",
              "example": "2023-01-01T00:00:00.0000000+00:00"
            },
            "example": "2023-01-01T00:00:00.0000000+00:00"
          },
          {
            "name": "type-id",
            "in": "query",
            "description": "Optional: The appointment type for filtering negotiator appointments;\nNOTE: If not set, this will return all appointment types",
            "schema": {
              "enum": [
                "Unspecified",
                "General",
                "Valuation",
                "Viewing",
                "Communication",
                "InternalMessage",
                "Offer",
                "AgreedOffer",
                "Note",
                "AuditedChange",
                "StickyNote",
                "FinancialTransaction",
                "Marketing",
                "Creation",
                "SyncedEmail",
                "AccountingTransaction",
                "WorkOrderEvent",
                "TenancyEvent",
                "FollowUp",
                "PersonalInformationRequest",
                "TdsEvent",
                "SigningRequest",
                "MaintenanceRequest",
                "DocumentSharing",
                "ConveyancerReferral"
              ],
              "type": "string",
              "example": "General"
            },
            "example": "General"
          },
          {
            "name": "next-token",
            "in": "query",
            "description": "The token for the next page of results.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "max-results",
            "in": "query",
            "description": "The maximum number of results to return. The default value is 50, and the maximum value is 250.",
            "schema": {
              "maximum": 250,
              "minimum": 1,
              "type": "integer",
              "format": "int32",
              "example": 50
            },
            "example": 50
          },
          {
            "name": "negotiator-id",
            "in": "query",
            "required": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          },
          {
            "name": "diary-Date-Handling",
            "in": "header",
            "schema": {
              "enum": [
                "Default",
                "Legacy"
              ],
              "type": "string",
              "default": "Default"
            }
          },
          {
            "name": "AgencyRef",
            "in": "header",
            "description": "",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Appointments retrieved for negotiator.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ExternalPartnerUserAppointmentsPagedResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExternalPartnerUserAppointmentsPagedResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExternalPartnerUserAppointmentsPagedResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation error e.g. invalid date range selection.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Invalid scope or AgencyRef for request.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error"
          }
        }
      }
    },
    "/appointments/valuations": {
      "get": {
        "tags": [
          "Appointments"
        ],
        "summary": "Get valuations within a selected time range.",
        "description": "Retrieves a paged collection of valuations per the search criteria, which must include at least a Created Date range.",
        "parameters": [
          {
            "name": "created-from",
            "in": "query",
            "description": "Required: The lower limit for created date and time in ISO 8601 format for filtering appointments",
            "schema": {
              "type": "string",
              "format": "date-time",
              "example": "2023-01-01T00:00:00.0000000+00:00"
            },
            "example": "2023-01-01T00:00:00.0000000+00:00"
          },
          {
            "name": "created-to",
            "in": "query",
            "description": "Required: The upper limit for created date and time in ISO 8601 format for filtering appointments",
            "schema": {
              "type": "string",
              "format": "date-time",
              "example": "2023-01-01T00:00:00.0000000+00:00"
            },
            "example": "2023-01-01T00:00:00.0000000+00:00"
          },
          {
            "name": "negotiator-ids",
            "in": "query",
            "description": "Optional: A comma-separated list of negotiator ids for filtering appointments\nNOTE: If not set, this will default to all negotiators in the searched branches",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          },
          {
            "name": "branch-ids",
            "in": "query",
            "description": "Optional: A comma-separated list of branch ids for filtering appointments\nNOTE: If not set, this will default to all branches",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          },
          {
            "name": "next-token",
            "in": "query",
            "description": "The token for the next page of results.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "max-results",
            "in": "query",
            "description": "The maximum number of results to return. The default value is 50, and the maximum value is 250.",
            "schema": {
              "maximum": 250,
              "minimum": 1,
              "type": "integer",
              "format": "int32",
              "example": 50
            },
            "example": 50
          },
          {
            "name": "AgencyRef",
            "in": "header",
            "description": "",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Valuations retrieved.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ExternalPartnerAppointmentPagedResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExternalPartnerAppointmentPagedResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExternalPartnerAppointmentPagedResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation error e.g. invalid date range selection.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Invalid scope or AgencyRef for request.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/appointments/viewings": {
      "post": {
        "tags": [
          "Appointments"
        ],
        "summary": "Create a viewing appointment.",
        "description": "Creates a viewing appointment with the requested applicant and property in a negotiator's calender.\nRequired scope: alto/write:appointments_viewings",
        "parameters": [
          {
            "name": "diary-Date-Handling",
            "in": "header",
            "schema": {
              "enum": [
                "Default",
                "Legacy"
              ],
              "type": "string",
              "default": "Default"
            }
          },
          {
            "name": "AgencyRef",
            "in": "header",
            "description": "",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The object containing the viewing details.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ViewingRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ViewingRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ViewingRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Returns an object containing the newly created viewing appointment's unique identifier",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/CreateAppointmentData"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreateAppointmentData"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreateAppointmentData"
                }
              }
            }
          },
          "400": {
            "description": "Validation error e.g. invalid date range selection.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Invalid scope or AgencyRef for request.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error"
          }
        }
      }
    },
    "/appointments/viewings/{appointmentId}": {
      "patch": {
        "tags": [
          "Appointments"
        ],
        "summary": "Updates an existing viewing",
        "description": "Updates a viewing with any of the following fields supported for update:\n- /startDate ie. The start date and time in ISO 8601 format to update against the requested viewing\n- /endDate ie. The end date and time in ISO 8601 format to update against the requested viewing\n- /negotiatorId ie. The unique identifier of the negotiator to be associated with the requested viewing\n- /status ie. When cancelling, the status the requested viewing should be set to\n- /notes ie. The notes to be associated with the requested viewing\n- /internalNotes ie. The internal notes to be associated with the requested viewing\n- /applicantFeedback ie. The applicant feedback to be associated with the requested viewing\n            \nRequired scope: alto/write:appointments_viewings",
        "parameters": [
          {
            "name": "appointmentId",
            "in": "path",
            "description": "The appointment's unique identifier",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "diary-Date-Handling",
            "in": "header",
            "schema": {
              "enum": [
                "Default",
                "Legacy"
              ],
              "type": "string",
              "default": "Default"
            }
          },
          {
            "name": "AgencyRef",
            "in": "header",
            "description": "",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ViewingPatchJsonPatchDocument"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ViewingPatchJsonPatchDocument"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ViewingPatchJsonPatchDocument"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Returns an object with a flag indicating a successful update"
          },
          "400": {
            "description": "Validation error e.g. invalid date range selection or unsupported patch path/value.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Invalid scope or AgencyRef for request.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Appointment requesting to be updated does not exist against the requested AgencyRef",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error"
          }
        }
      }
    },
    "/parameters/appointment-subtypes": {
      "get": {
        "tags": [
          "Parameters"
        ],
        "summary": "Get general appointment sub-types.",
        "description": "Retrieves a list of all the general appointment sub-types supported by the group.\nRequired scope: alto/read:appointments",
        "parameters": [
          {
            "name": "AgencyRef",
            "in": "header",
            "description": "",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Sub types have been retrieved for general appointments",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/DiaryEventSubType"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/DiaryEventSubType"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/DiaryEventSubType"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Invalid scope or AgencyRef for request.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error"
          }
        }
      }
    },
    "/appraisals": {
      "post": {
        "tags": [
          "Appraisals"
        ],
        "summary": "Create an appraisal",
        "description": "Creates an appraisal associated to the requested property",
        "operationId": "CreateAppraisal",
        "parameters": [
          {
            "name": "AgencyRef",
            "in": "header",
            "description": "A GUID required in the header of all API requests that grants access to an agent's data",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The object containing the appraisal request details",
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/Alto.Appraisal.Api.Models.Requests.CreateAppraisalRequest"
                  }
                ]
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Returns the unique identifier of the newly created appraisal",
            "content": {
              "application/json": {
                "schema": {
                  "type": "integer",
                  "format": "int64"
                }
              }
            }
          },
          "400": {
            "description": "When the request does not contain the expected information"
          },
          "401": {
            "description": "When access has not been granted"
          }
        }
      }
    },
    "/inventory/{propertyId}/appraisal": {
      "patch": {
        "tags": [
          "Appraisals"
        ],
        "summary": "Update an appraisal",
        "description": "Update the appraisal associated with the requested property",
        "operationId": "PatchAppraisal",
        "parameters": [
          {
            "name": "propertyId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "AgencyRef",
            "in": "header",
            "description": "A GUID required in the header of all API requests that grants access to an agent's data",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The object containing the appraisal request details",
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/SystemTextJsonPatch.JsonPatchDocument1_Alto.Appraisal.Api.Models.Requests.PatchAppraisalRequest"
                  }
                ]
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": "The appraisal was updated"
          },
          "400": {
            "description": "When the request does not contain the expected information"
          },
          "401": {
            "description": "When access has not been granted"
          },
          "404": {
            "description": "Not Found"
          }
        }
      }
    },
    "/clients": {
      "get": {
        "tags": [
          "Clients"
        ],
        "summary": "This endpoint is now obsolete. Use /contacts endpoint instead.",
        "parameters": [
          {
            "name": "clientId",
            "in": "query",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          },
          {
            "name": "AgencyRef",
            "in": "header",
            "description": "A GUID required in the header of all API requests that grants access to an agent's data",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ClientDataItemCollection"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ClientDataItemCollection"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ClientDataItemCollection"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "deprecated": true
      }
    },
    "/branches": {
      "get": {
        "tags": [
          "Branches"
        ],
        "summary": "Get Branches",
        "description": "Get a paginated list of branches",
        "parameters": [
          {
            "name": "next-token",
            "in": "query",
            "description": "The token for the next page of results.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "max-results",
            "in": "query",
            "description": "The maximum number of results to return. The default value is 50, and the maximum value is 250.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "activeOnly",
            "in": "query",
            "description": "Set whether active branches only are returned.",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "AgencyRef",
            "in": "header",
            "description": "A GUID required in the header of all API requests that grants access to an agent's data",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns a paginated list of branches.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BranchPagedResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          }
        }
      }
    },
    "/branches/{branchId}": {
      "get": {
        "tags": [
          "Branches"
        ],
        "summary": "Get Branch By Id",
        "parameters": [
          {
            "name": "branchId",
            "in": "path",
            "description": "The unique identifier for the branch.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "AgencyRef",
            "in": "header",
            "description": "A GUID required in the header of all API requests that grants access to an agent's data",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the branch.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Branch"
                }
              }
            }
          },
          "400": {
            "description": "When the request does not contain the expected information."
          },
          "401": {
            "description": "When access to the branch has not been granted."
          },
          "404": {
            "description": "When the branch is not found."
          }
        }
      }
    },
    "/negotiators": {
      "get": {
        "tags": [
          "Negotiators"
        ],
        "summary": "Get Negotiators",
        "description": "Get a paginated list of negotiators",
        "parameters": [
          {
            "name": "next-token",
            "in": "query",
            "description": "The token for the next page of results.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "max-results",
            "in": "query",
            "description": "The maximum number of results to return. The default value is 50, and the maximum value is 250.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "AgencyRef",
            "in": "header",
            "description": "A GUID required in the header of all API requests that grants access to an agent's data",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns a paginated list of negotiators",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NegotiatorPagedResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          }
        }
      }
    },
    "/negotiators/{negotiatorId}": {
      "get": {
        "tags": [
          "Negotiators"
        ],
        "summary": "Get Negotiator By Id",
        "parameters": [
          {
            "name": "negotiatorId",
            "in": "path",
            "description": "The unique identifier for the negotiator",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "AgencyRef",
            "in": "header",
            "description": "A GUID required in the header of all API requests that grants access to an agent's data",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the negotiator",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Negotiator"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "404": {
            "description": "The negotiator was not found"
          }
        }
      }
    },
    "/contacts": {
      "get": {
        "tags": [
          "Contacts"
        ],
        "summary": "Get Contact(s) by Id(s)",
        "description": "See glossary for definition of <a href=\"https://developers.zoopla.co.uk/docs/glossary#person\">Person</a> and <a href=\"https://developers.zoopla.co.uk/docs/glossary#contact\">Contact</a>.",
        "operationId": "GetContactsById",
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "description": "The IDs for the Contacts being requested.",
            "schema": {
              "maxItems": 50,
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "AgencyRef",
            "in": "header",
            "description": "",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Contact returned for Contact Id.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Alto.Contacts.Api.Models.Responses.Contact"
                }
              }
            }
          },
          "400": {
            "description": "Validation error e.g. invalid Contact Id.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Alto.Api.Material.Models.Responses.ErrorsResponse"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Contacts"
        ],
        "summary": "Create Contact",
        "operationId": "CreateContact",
        "parameters": [
          {
            "name": "AgencyRef",
            "in": "header",
            "description": "",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/Alto.Contacts.Api.Models.Requests.PostContactRequest"
                  }
                ]
              }
            },
            "text/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/Alto.Contacts.Api.Models.Requests.PostContactRequest"
                  }
                ]
              }
            },
            "application/*+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/Alto.Contacts.Api.Models.Requests.PostContactRequest"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Contact created.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Alto.Contacts.Api.Models.Responses.Contact"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Alto.Api.Material.Models.Responses.ErrorsResponse"
                }
              }
            }
          },
          "409": {
            "description": "Duplicate contacts found. Check Location response headers for URI.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Alto.Api.Material.Models.Responses.ErrorsResponse"
                }
              }
            }
          }
        }
      }
    },
    "/contacts/{contactId}": {
      "get": {
        "tags": [
          "Contacts"
        ],
        "summary": "Get Person(s) by Contact Id",
        "description": "See glossary for definition of <a href=\"https://developers.zoopla.co.uk/docs/glossary#person\">Person</a> and <a href=\"https://developers.zoopla.co.uk/docs/glossary#contact\">Contact</a>.",
        "operationId": "GetContact",
        "parameters": [
          {
            "name": "contactId",
            "in": "path",
            "description": "The unique identifier for the Contact.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "AgencyRef",
            "in": "header",
            "description": "",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Contact returned for Contact Id.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Alto.Contacts.Api.Models.Responses.Contact"
                }
              }
            }
          },
          "400": {
            "description": "Validation error e.g. invalid Contact Id.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Alto.Api.Material.Models.Responses.ErrorsResponse"
                }
              }
            }
          },
          "404": {
            "description": "Contact not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Alto.Api.Material.Models.Responses.ErrorsResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Contacts"
        ],
        "summary": "Update Contact by Id",
        "description": "See glossary for definition of <a href=\"https://developers.zoopla.co.uk/docs/glossary#contact\">Contact</a>.",
        "operationId": "UpdateContact",
        "parameters": [
          {
            "name": "contactId",
            "in": "path",
            "description": "The unique identifier for the Contact.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "AgencyRef",
            "in": "header",
            "description": "",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "ContactPatchDocument payload with the intended changes.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/SystemTextJsonPatch.JsonPatchDocument1_Alto.Contacts.Api.Models.Requests.PatchContactRequest"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Returns the updated Contact.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Alto.Contacts.Api.Models.Responses.Contact"
                }
              }
            }
          },
          "400": {
            "description": "Invalid Patch request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Alto.Api.Material.Models.Responses.ErrorsResponse"
                }
              }
            }
          },
          "404": {
            "description": "Contact not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Alto.Api.Material.Models.Responses.ErrorsResponse"
                }
              }
            }
          }
        }
      }
    },
    "/contacts/{contactId}/applicant-requirements": {
      "post": {
        "tags": [
          "Contacts"
        ],
        "summary": "Create Applicant Requirement",
        "operationId": "CreateApplicantRequirement",
        "parameters": [
          {
            "name": "contactId",
            "in": "path",
            "description": "The unique identifier for the Contact.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "AgencyRef",
            "in": "header",
            "description": "",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The payload describing the requirements.",
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/Alto.Contacts.Api.Models.Requests.PostApplicantRequirementRequest"
                  }
                ]
              }
            },
            "text/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/Alto.Contacts.Api.Models.Requests.PostApplicantRequirementRequest"
                  }
                ]
              }
            },
            "application/*+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/Alto.Contacts.Api.Models.Requests.PostApplicantRequirementRequest"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Contact created.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Alto.Contacts.Api.Models.Responses.ApplicantRequirement"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Alto.Api.Material.Models.Responses.ErrorsResponse"
                }
              }
            }
          },
          "404": {
            "description": "Applicant not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Alto.Api.Material.Models.Responses.ErrorsResponse"
                }
              }
            }
          }
        }
      }
    },
    "/contacts/{contactId}/applicant-requirements/{requirementId}": {
      "patch": {
        "tags": [
          "Contacts"
        ],
        "summary": "Update Applicant Requirement by Id",
        "operationId": "UpdateApplicantRequirement",
        "parameters": [
          {
            "name": "contactId",
            "in": "path",
            "description": "The unique identifier for the Contact.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "requirementId",
            "in": "path",
            "description": "The unique identifier for the Applicant Requirement.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "AgencyRef",
            "in": "header",
            "description": "",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "ApplicantRequirement patch request payload with the intended changes.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/SystemTextJsonPatch.JsonPatchDocument1_Alto.Contacts.Api.Models.Requests.PatchApplicantRequirement"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Returns the updated Applicant Requirement.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Alto.Contacts.Api.Models.Responses.PatchApplicantRequirement"
                }
              }
            }
          },
          "400": {
            "description": "Invalid Patch request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Alto.Api.Material.Models.Responses.ErrorsResponse"
                }
              }
            }
          },
          "404": {
            "description": "Applicant not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Alto.Api.Material.Models.Responses.ErrorsResponse"
                }
              }
            }
          }
        }
      }
    },
    "/contacts/{contactId}/bank-accounts": {
      "get": {
        "tags": [
          "Contacts"
        ],
        "summary": "Get Bank Accounts by Contact Id",
        "operationId": "ListBankAccounts",
        "parameters": [
          {
            "name": "contactId",
            "in": "path",
            "description": "The unique identifier for the Contact.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "AgencyRef",
            "in": "header",
            "description": "",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Bank accounts returned for Contact Id.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Alto.Contacts.Core.Models.Domain.BankAccount"
                  }
                }
              }
            }
          },
          "204": {
            "description": "No bank accounts found for Contact Id.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Alto.Contacts.Core.Models.Domain.BankAccount"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Validation error e.g. invalid Contact Id.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Alto.Api.Material.Models.Responses.ErrorsResponse"
                }
              }
            }
          },
          "404": {
            "description": "Contact not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Alto.Api.Material.Models.Responses.ErrorsResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "appAuth": [
              "alto/read:contact_bank_accounts",
              "alto/route:get-contacts-contactid-bank-accounts"
            ]
          }
        ]
      }
    },
    "/contacts/{contactId}/forwarding-address": {
      "post": {
        "tags": [
          "Contacts"
        ],
        "summary": "Create Contact Forwarding Address",
        "operationId": "CreateForwardingAddress",
        "parameters": [
          {
            "name": "contactId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "AgencyRef",
            "in": "header",
            "description": "",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/Alto.Contacts.Api.Models.Requests.PostForwardingAddressRequest"
                  }
                ]
              }
            },
            "text/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/Alto.Contacts.Api.Models.Requests.PostForwardingAddressRequest"
                  }
                ]
              }
            },
            "application/*+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/Alto.Contacts.Api.Models.Requests.PostForwardingAddressRequest"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Contact forwarding address created.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "integer",
                  "format": "int32"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Alto.Api.Material.Models.Responses.ErrorsResponse"
                }
              }
            }
          }
        }
      }
    },
    "/contacts/{contactId}/persons": {
      "get": {
        "tags": [
          "Contacts"
        ],
        "summary": "Get Person(s) by Contact Id",
        "description": "See glossary for definition of <a href=\"https://developers.zoopla.co.uk/docs/glossary#person\">Person</a> and <a href=\"https://developers.zoopla.co.uk/docs/glossary#contact\">Contact</a>.",
        "operationId": "GetPersons",
        "parameters": [
          {
            "name": "contactId",
            "in": "path",
            "description": "The unique identifier for the Contact.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "AgencyRef",
            "in": "header",
            "description": "",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Contact returned for Contact Id.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Alto.Contacts.Api.Models.Responses.Contact"
                }
              }
            }
          },
          "400": {
            "description": "Validation error e.g. invalid Contact Id.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Alto.Api.Material.Models.Responses.ErrorsResponse"
                }
              }
            }
          },
          "404": {
            "description": "Contact not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Alto.Api.Material.Models.Responses.ErrorsResponse"
                }
              }
            }
          }
        }
      }
    },
    "/contacts/{contactId}/persons/{personId}": {
      "patch": {
        "tags": [
          "Contacts"
        ],
        "summary": "Update Person by Contact Id",
        "description": "See glossary for definition of <a href=\"https://developers.zoopla.co.uk/docs/glossary#person\">Person</a>.",
        "operationId": "UpdatePerson",
        "parameters": [
          {
            "name": "contactId",
            "in": "path",
            "description": "The unique identifier for the Contact.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "personId",
            "in": "path",
            "description": "The Person identifier within the Contact.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "AgencyRef",
            "in": "header",
            "description": "",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "PersonPatchDocument payload with the intended changes.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/SystemTextJsonPatch.JsonPatchDocument1_Alto.Contacts.Api.Models.Requests.PatchPersonRequest"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Returns the updated Person.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Alto.Contacts.Api.Models.Responses.PatchPersonResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid Patch request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Alto.Api.Material.Models.Responses.ErrorsResponse"
                }
              }
            }
          },
          "404": {
            "description": "Contact or Person not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Alto.Api.Material.Models.Responses.ErrorsResponse"
                }
              }
            }
          }
        }
      },
      "get": {
        "tags": [
          "Contacts"
        ],
        "summary": "Get Person by Contact Id",
        "description": "See glossary for definition of <a href=\"https://developers.zoopla.co.uk/docs/glossary#person\">Person</a>.",
        "operationId": "GetPerson",
        "parameters": [
          {
            "name": "contactId",
            "in": "path",
            "description": "The unique identifier for the Contact.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "personId",
            "in": "path",
            "description": "The Person identifier within the Contact.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "AgencyRef",
            "in": "header",
            "description": "",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Person returned for Contact Id.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Alto.Contacts.Api.Models.Responses.PersonSingle"
                }
              }
            }
          },
          "400": {
            "description": "Validation error e.g. invalid Contact Id.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Alto.Api.Material.Models.Responses.ErrorsResponse"
                }
              }
            }
          },
          "404": {
            "description": "Person not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Alto.Api.Material.Models.Responses.ErrorsResponse"
                }
              }
            }
          }
        }
      }
    },
    "/contacts/{contactId}/preferences": {
      "get": {
        "tags": [
          "Contacts"
        ],
        "summary": "Get Marketing Preferences by Contact Id",
        "description": "See glossary for definition of <a href=\"https://developers.zoopla.co.uk/docs/glossary#person\">Person</a> and <a href=\"https://developers.zoopla.co.uk/docs/glossary#contact\">Contact</a>.",
        "operationId": "GetPreferences",
        "parameters": [
          {
            "name": "contactId",
            "in": "path",
            "description": "The unique identifier for the Contact.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "AgencyRef",
            "in": "header",
            "description": "",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Contact Consent Preferences returned for ContactId.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Alto.Internal.DomainModels.Contacts.ContactConsentPreference"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Validation error e.g. invalid ContactId.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Alto.Api.Material.Models.Responses.ErrorsResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Alto.Api.Material.Models.Responses.ErrorsResponse"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Contacts"
        ],
        "summary": "Update Contact Marketing Preferences",
        "description": "Update contact marketing preferences, changing the opt-in status for each preference type and optionally setting notes.",
        "parameters": [
          {
            "name": "contactId",
            "in": "path",
            "description": "The unique identifier for the Contact.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "AgencyRef",
            "in": "header",
            "description": "",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "JSON array of preference changes.",
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/Alto.Contacts.Api.Models.Requests.PostContactConsentPreferencesRequest"
                  }
                ]
              }
            },
            "text/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/Alto.Contacts.Api.Models.Requests.PostContactConsentPreferencesRequest"
                  }
                ]
              }
            },
            "application/*+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/Alto.Contacts.Api.Models.Requests.PostContactConsentPreferencesRequest"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Alto.Api.Material.Models.Responses.ErrorsResponse"
                }
              }
            }
          }
        }
      }
    },
    "/contacts/{contactId}/relationship": {
      "get": {
        "tags": [
          "Contacts"
        ],
        "summary": "Get Relationships by Contact Id",
        "description": "Get all relationships for a contact, such as guarantors and forwarding addresses.",
        "operationId": "GetContactRelationship",
        "parameters": [
          {
            "name": "contactId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "relationshipType",
            "in": "query",
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "AgencyRef",
            "in": "header",
            "description": "",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Relationship returned for Contact Id.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Alto.Contacts.Api.Models.Responses.GetContactRelationshipResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Alto.Api.Material.Models.Responses.ErrorsResponse"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Contacts"
        ],
        "summary": "Create Contact Relationship",
        "description": "Create a relationship between a contact and a non-marketable relationship contact, such as a guarantor.",
        "operationId": "CreateContactRelationship",
        "parameters": [
          {
            "name": "contactId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "AgencyRef",
            "in": "header",
            "description": "",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/Alto.Contacts.Api.Models.Requests.PostContactRelationshipRequest"
                  }
                ]
              }
            },
            "text/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/Alto.Contacts.Api.Models.Requests.PostContactRelationshipRequest"
                  }
                ]
              }
            },
            "application/*+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/Alto.Contacts.Api.Models.Requests.PostContactRelationshipRequest"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Contact relationship created.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Alto.Contacts.Api.Models.Responses.ContactRelationshipResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Alto.Api.Material.Models.Responses.ErrorsResponse"
                }
              }
            }
          },
          "409": {
            "description": "Duplicate contact relationships found. Check Location response headers for URI.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Alto.Api.Material.Models.Responses.ErrorsResponse"
                }
              }
            }
          }
        }
      }
    },
    "/contacts/{contactId}/relationship/{contactRelationshipId}": {
      "delete": {
        "tags": [
          "Contacts"
        ],
        "summary": "Delete Contact Relationship",
        "description": "Delete a relationship between a contact and a non-marketable relationship contact, such as a guarantor.",
        "operationId": "DeleteContactRelationship",
        "parameters": [
          {
            "name": "contactId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "contactRelationshipId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "AgencyRef",
            "in": "header",
            "description": "",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Contact relationship deleted.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Alto.Contacts.Api.Models.Responses.ContactRelationshipResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Alto.Api.Material.Models.Responses.ErrorsResponse"
                }
              }
            }
          }
        }
      }
    },
    "/contacts/all": {
      "get": {
        "tags": [
          "Contacts"
        ],
        "summary": "Get All Contacts",
        "operationId": "GetAllContacts",
        "parameters": [
          {
            "name": "active",
            "in": "query",
            "description": "Filter only active or non-active contacts.",
            "schema": {
              "type": "boolean",
              "example": true
            },
            "example": true
          },
          {
            "name": "category",
            "in": "query",
            "description": "Filters contacts by the category of the contact.",
            "schema": {
              "enum": [
                "Unknown",
                "Client",
                "Solicitor",
                "BuildingSociety",
                "Bank",
                "Publication",
                "EstateAgent",
                "ManagingAgent",
                "Developer",
                "Builder",
                "Utility",
                "Service",
                "PreviousClient",
                "Miscellaneous",
                "FinancialAdvisor",
                "Maintenance",
                "OnSiteSales",
                "ExternalPrinter",
                "OtherCategory1",
                "EstateAgentLocal",
                "Surveyor",
                "Supplier",
                "ContactRelationship",
                "Accountant"
              ],
              "type": "string",
              "example": "Client"
            },
            "example": "Client"
          },
          {
            "name": "persona",
            "in": "query",
            "description": "Filters contacts by persona within the Contact category of Client.\nA contact is included in the response if they match any of the specified personas.",
            "schema": {
              "type": "array",
              "items": {
                "enum": [
                  "Applicant",
                  "Vendor",
                  "Landlord",
                  "Tenant"
                ],
                "type": "string"
              }
            }
          },
          {
            "name": "next-token",
            "in": "query",
            "description": "The token for the next page of results.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "max-results",
            "in": "query",
            "description": "The maximum number of results to return. The default value is 50, and the maximum value is 250",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "created-from",
            "in": "query",
            "description": "The start date for by created date.",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "created-to",
            "in": "query",
            "description": "The end date for by created date.",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "modified-from",
            "in": "query",
            "description": "The start date for by modified date.",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "modified-to",
            "in": "query",
            "description": "The end date for by modified date.",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "AgencyRef",
            "in": "header",
            "description": "",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Contacts matching the query returned.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Alto.Services.SDK.Pagination.PagedResponse1_Alto.Contacts.Api.Models.Responses.ContactListItem"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Alto.Api.Material.Models.Responses.ErrorsResponse"
                }
              }
            }
          }
        }
      }
    },
    "/contacts/search": {
      "get": {
        "tags": [
          "Contacts"
        ],
        "summary": "Search All Contacts",
        "description": "Search for all matching contacts and return a paginated list of results.",
        "parameters": [
          {
            "name": "query",
            "in": "query",
            "description": "The query term to search for contacts. This can match on names, addresses, email addresses, phone numbers,\nunique identifiers, reference codes, and company names where applicable.",
            "required": true,
            "schema": {
              "type": "string",
              "example": "07700 900000"
            },
            "example": "07700 900000"
          },
          {
            "name": "archived",
            "in": "query",
            "description": "Optional filter to only show or exclude archived contacts.",
            "schema": {
              "type": "boolean",
              "example": false
            },
            "example": false
          },
          {
            "name": "contact-type",
            "in": "query",
            "description": "Optional filter to only search a single contact type.",
            "schema": {
              "enum": [
                "Unknown",
                "Client",
                "Solicitor",
                "BuildingSociety",
                "Bank",
                "Publication",
                "EstateAgent",
                "ManagingAgent",
                "Developer",
                "Builder",
                "Utility",
                "Service",
                "PreviousClient",
                "Miscellaneous",
                "FinancialAdvisor",
                "Maintenance",
                "OnSiteSales",
                "ExternalPrinter",
                "OtherCategory1",
                "EstateAgentLocal",
                "Surveyor",
                "Supplier",
                "Accountant"
              ],
              "type": "string",
              "example": "Client"
            },
            "example": "Client"
          },
          {
            "name": "next-token",
            "in": "query",
            "description": "The token for the next page of results.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "max-results",
            "in": "query",
            "description": "The maximum number of results to return. The default value is 50, and the maximum value is 250",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "created-from",
            "in": "query",
            "description": "The start date for by created date.",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "created-to",
            "in": "query",
            "description": "The end date for by created date.",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "modified-from",
            "in": "query",
            "description": "The start date for by modified date.",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "modified-to",
            "in": "query",
            "description": "The end date for by modified date.",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "AgencyRef",
            "in": "header",
            "description": "",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Alto.Services.SDK.Pagination.PagedResponse1_Alto.Contacts.Api.Models.Responses.ContactSearchItemResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Alto.Api.Material.Models.Responses.ErrorsResponse"
                }
              }
            }
          }
        }
      }
    },
    "/owners": {
      "get": {
        "tags": [
          "Owners"
        ],
        "summary": "Get Owners",
        "description": "Required scope: alto/read:contacts. \nSee glossary for definition of <a href=\"https://developers.vebraalto.com/guides/glossary\">Owner</a>.",
        "operationId": "GetOwners",
        "parameters": [
          {
            "name": "active",
            "in": "query",
            "description": "Filter only active or non-active owners.",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "property-id",
            "in": "query",
            "description": "Only return owners where the propertyId matches one of the values provided",
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "contact-id",
            "in": "query",
            "description": "Only return owners where the contactId matches one of the values provided",
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "next-token",
            "in": "query",
            "description": "The token for the next page of results.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "max-results",
            "in": "query",
            "description": "The maximum number of results to return. The default value is 50, and the maximum value is 250",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "created-from",
            "in": "query",
            "description": "The start date for by created date.",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "created-to",
            "in": "query",
            "description": "The end date for by created date.",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "modified-from",
            "in": "query",
            "description": "The start date for by modified date.",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "modified-to",
            "in": "query",
            "description": "The end date for by modified date.",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "AgencyRef",
            "in": "header",
            "description": "",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Owners matching the query returned.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Alto.Services.SDK.Pagination.PagedResponse1_Alto.Contacts.Api.Models.Responses.Owner"
                }
              }
            }
          }
        }
      }
    },
    "/parameters/client-disposal-statuses": {
      "get": {
        "tags": [
          "Parameters"
        ],
        "summary": "Get Client Disposal Statuses",
        "description": "See glossary for definition of <a href=\"https://developers.vebraalto.com/guides/glossary\">Parameter</a>.",
        "operationId": "GetClientDisposalStatuses",
        "parameters": [
          {
            "name": "AgencyRef",
            "in": "header",
            "description": "",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Client disposal statuses returned for the given AgencyRef",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Alto.Contacts.Api.Models.Responses.ParameterValue"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/parameters/client-intentions": {
      "get": {
        "tags": [
          "Parameters"
        ],
        "summary": "Get Client Intentions",
        "description": "See glossary for definition of <a href=\"https://developers.vebraalto.com/guides/glossary\">Parameter</a>.",
        "operationId": "GetIntentions",
        "parameters": [
          {
            "name": "AgencyRef",
            "in": "header",
            "description": "",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "client intentions returned for the given AgencyRef",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Alto.Contacts.Api.Models.Responses.ParameterValue"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/parameters/client-positions": {
      "get": {
        "tags": [
          "Parameters"
        ],
        "summary": "Get Client Positions",
        "description": "See glossary for definition of <a href=\"https://developers.vebraalto.com/guides/glossary\">Parameter</a>.",
        "operationId": "GetPositions",
        "parameters": [
          {
            "name": "AgencyRef",
            "in": "header",
            "description": "",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "client positions returned for the given AgencyRef",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Alto.Contacts.Api.Models.Responses.ParameterValue"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/parameters/lead-sources": {
      "get": {
        "tags": [
          "Parameters"
        ],
        "summary": "Get Lead Sources",
        "description": "See glossary for definition of <a href=\"https://developers.vebraalto.com/guides/glossary\">Parameter</a>.",
        "operationId": "GetLeadSources",
        "parameters": [
          {
            "name": "AgencyRef",
            "in": "header",
            "description": "",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Lead sources returned for the given AgencyRef",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Alto.Contacts.Api.Models.Responses.ParameterValue"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/documents": {
      "get": {
        "tags": [
          "Documents"
        ],
        "summary": "Get documents by document type.",
        "description": "Returns a paginated list of documents that match the given parameters",
        "operationId": "GetDocumentsByType",
        "parameters": [
          {
            "name": "linkedType",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "linkedId",
            "in": "query",
            "description": "Id of the document association e.g. PropertyId, ContactId, TenancyId, WorkOrderId, HistoryEventId (or FileNoteId)",
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "mediaType",
            "in": "query",
            "description": "Type of document e.g. File, Image",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "nextToken",
            "in": "query",
            "description": "Token to get next set of results",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "maxResults",
            "in": "query",
            "description": "Number of maximum items to be returned",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "AgencyRef",
            "in": "header",
            "description": "A GUID required in the header of all API requests that grants access to an agent's data",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/DocumentPagedResults"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DocumentPagedResults"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/DocumentPagedResults"
                }
              }
            }
          },
          "400": {
            "description": "Validation errors e.g. LinkedType must be set",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/documents/{documentId}/content": {
      "get": {
        "tags": [
          "Documents"
        ],
        "summary": "Get document content by DocumentId.",
        "description": "Get the contents of a document with the given id",
        "parameters": [
          {
            "name": "documentId",
            "in": "path",
            "description": "The documentId to download document contents",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "AgencyRef",
            "in": "header",
            "description": "A GUID required in the header of all API requests that grants access to an agent's data",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Validation errors e.g. Document Id must be provided",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/documents/post": {
      "post": {
        "tags": [
          "Documents"
        ],
        "summary": "Upload a new document",
        "description": "Upload documents for Property, Contact, Tenancy or Works Order. A Maximum of 30MB file size is supported\nThe images posted are not for Listing/Marketing purposes. Images are posted to the document section In Alto as below:\n    Property > Media > Other Files\n    Contact > Documents\n    Tenancy > Documents\n    Works Order > Documents",
        "parameters": [
          {
            "name": "AgencyRef",
            "in": "header",
            "description": "A GUID required in the header of all API requests that grants access to an agent's data",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "properties": {
                  "fileToUpload": {
                    "type": "string",
                    "description": "The file to upload",
                    "format": "binary"
                  },
                  "linkedType": {
                    "type": "string"
                  },
                  "linkedId": {
                    "type": "integer",
                    "description": "Id of the document association e.g. PropertyId, ContactId, TenancyId, WorkOrderId, HistoryEventId (or FileNoteId)",
                    "format": "int64"
                  }
                }
              },
              "encoding": {
                "fileToUpload": {
                  "style": "form"
                },
                "linkedType": {
                  "style": "form"
                },
                "linkedId": {
                  "style": "form"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/CreateDocumentResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreateDocumentResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreateDocumentResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation errors e.g. Missing LinkedType",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/inventory/{inventoryId}/documents": {
      "get": {
        "tags": [
          "Documents"
        ],
        "summary": "Get documents by PropertyId.",
        "description": "Returns a paginated list of documents for the given PropertyId",
        "parameters": [
          {
            "name": "inventoryId",
            "in": "path",
            "description": "The PropertyId to filter documents",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "type",
            "in": "query",
            "description": "Type of file to filter the results by. E.g. File, Image",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/components/schemas/MediaType"
              }
            }
          },
          {
            "name": "fileType",
            "in": "query",
            "description": "Filter results for a specific file type. E.g. PDF, JPG",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/components/schemas/FileType"
              }
            }
          },
          {
            "name": "nextToken",
            "in": "query",
            "description": "Token to get next set of results",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "maxResults",
            "in": "query",
            "description": "Number of maximum items to be returned",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "AgencyRef",
            "in": "header",
            "description": "A GUID required in the header of all API requests that grants access to an agent's data",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/DocumentPagedResults"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DocumentPagedResults"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/DocumentPagedResults"
                }
              }
            }
          },
          "400": {
            "description": "Validation errors e.g. The MaxResults must be greater than 0",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/work-orders/{workOrderId}/documents": {
      "get": {
        "tags": [
          "Documents"
        ],
        "summary": "Get documents by WorkOrderId.",
        "description": "Returns a paginated list of documents for the given WorkOrderId",
        "parameters": [
          {
            "name": "workOrderId",
            "in": "path",
            "description": "The WorkOrderId to filter documents",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "nextToken",
            "in": "query",
            "description": "Token to get next set of results",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "maxResults",
            "in": "query",
            "description": "Number of maximum items to be returned",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "AgencyRef",
            "in": "header",
            "description": "A GUID required in the header of all API requests that grants access to an agent's data",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/DocumentPagedResults"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DocumentPagedResults"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/DocumentPagedResults"
                }
              }
            }
          },
          "400": {
            "description": "Validation errors e.g. The MaxResults must be greater than 0",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/file-notes": {
      "post": {
        "tags": [
          "FileNotes"
        ],
        "summary": "Create a file note",
        "description": "Create a file note associated to the requested property, owners/contacts.\nAs a minimum a file note must be associated to either a property or a contact(s).",
        "operationId": "CreateFileNote",
        "parameters": [
          {
            "name": "AgencyRef",
            "in": "header",
            "description": "A GUID required in the header of all API requests that grants access to an agent's data",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The object containing the file note request details",
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/CreateFileNoteRequest"
                  }
                ]
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Returns the unique identifier of the newly created file note",
            "content": {
              "application/json": {
                "schema": {
                  "type": "integer",
                  "format": "int64"
                }
              }
            }
          },
          "400": {
            "description": "When the request does not contain the expected information"
          },
          "401": {
            "description": "When access has not been granted"
          }
        }
      }
    },
    "/file-notes/{fileNoteId}": {
      "get": {
        "tags": [
          "FileNotes"
        ],
        "summary": "Get a file note",
        "description": "Get a file note by file note id",
        "operationId": "GetFileNote",
        "parameters": [
          {
            "name": "fileNoteId",
            "in": "path",
            "description": "The unique identifier for the File Note",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "AgencyRef",
            "in": "header",
            "description": "A GUID required in the header of all API requests that grants access to an agent's data",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the file note",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetFileNoteResponse"
                }
              }
            }
          },
          "400": {
            "description": "When the request does not contain the expected information"
          },
          "404": {
            "description": "The file note was not found"
          },
          "401": {
            "description": "When access has not been granted"
          }
        }
      },
      "patch": {
        "tags": [
          "FileNotes"
        ],
        "summary": "Patch a file note",
        "description": "Patch a file note by ID, updating the title or notes text.",
        "operationId": "PatchFileNote",
        "parameters": [
          {
            "name": "fileNoteId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "AgencyRef",
            "in": "header",
            "description": "A GUID required in the header of all API requests that grants access to an agent's data",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/FileNotePatchJsonPatchDocument"
                  }
                ]
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad Request"
          },
          "404": {
            "description": "Not Found"
          },
          "401": {
            "description": "Unauthorized"
          }
        }
      }
    },
    "/file-notes/search": {
      "get": {
        "tags": [
          "FileNotes"
        ],
        "summary": "Retrieves file notes by criteria",
        "description": "Retrieves file notes matching the search criteria",
        "operationId": "SearchFileNotes",
        "parameters": [
          {
            "name": "contact-id",
            "in": "query",
            "description": "The unique identifier of the contact",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "AgencyRef",
            "in": "header",
            "description": "A GUID required in the header of all API requests that grants access to an agent's data",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the file notes associated with the specified contact",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/GetFileNoteResponse"
                  }
                }
              }
            }
          },
          "400": {
            "description": "When the request does not contain the expected information"
          },
          "401": {
            "description": "When access has not been granted"
          },
          "404": {
            "description": "When the query addresses data which is not available"
          }
        }
      }
    },
    "/inventory/{propertyId}/file-notes": {
      "get": {
        "tags": [
          "FileNotes"
        ],
        "summary": "Get file notes by property ID",
        "description": "Get all file notes relating to the specified property ID",
        "operationId": "GetFileNotesByProperty",
        "parameters": [
          {
            "name": "propertyId",
            "in": "path",
            "description": "The unique identifier for the property",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "AgencyRef",
            "in": "header",
            "description": "A GUID required in the header of all API requests that grants access to an agent's data",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the file notes associated with the specified property",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetFileNoteResponse"
                }
              }
            }
          },
          "400": {
            "description": "When the request does not contain the expected information or access has not been granted to the property"
          },
          "404": {
            "description": "When the property specified does not exist"
          },
          "401": {
            "description": "When access has not been granted to the API"
          }
        }
      }
    },
    "/inventory": {
      "get": {
        "tags": [
          "Inventory"
        ],
        "parameters": [
          {
            "name": "nextToken",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "maxResults",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "address",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "category",
            "in": "query",
            "schema": {
              "allOf": [
                {
                  "$ref": "#/components/schemas/Alto.Inventory.Api.Enums.PropertyCategoryType"
                }
              ]
            }
          },
          {
            "name": "recordType",
            "in": "query",
            "schema": {
              "allOf": [
                {
                  "$ref": "#/components/schemas/Alto.Inventory.Api.Enums.PropertyRecordType"
                }
              ]
            }
          },
          {
            "name": "archived",
            "in": "query",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "AgencyRef",
            "in": "header",
            "description": "A GUID required in the header of all API requests that grants access to an agent's data",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/Alto.Inventory.Api.Models.Responses.InventoryPagedResults"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Alto.Inventory.Api.Models.Responses.InventoryPagedResults"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Alto.Inventory.Api.Models.Responses.InventoryPagedResults"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/inventory/{inventoryId}": {
      "get": {
        "tags": [
          "Inventory"
        ],
        "summary": "Get an inventory item",
        "description": "Get an inventory item by id",
        "parameters": [
          {
            "name": "inventoryId",
            "in": "path",
            "description": "The unique identifier for the inventory item",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "AgencyRef",
            "in": "header",
            "description": "A GUID required in the header of all API requests that grants access to an agent's data",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the inventory item",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Alto.Inventory.Api.Models.Responses.InventoryDetailItem"
                }
              }
            }
          },
          "400": {
            "description": "When the request does not contain the expected information"
          },
          "401": {
            "description": "When access has not been granted"
          },
          "404": {
            "description": "The inventory item was not found"
          }
        }
      },
      "patch": {
        "tags": [
          "Inventory"
        ],
        "parameters": [
          {
            "name": "inventoryId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "AgencyRef",
            "in": "header",
            "description": "A GUID required in the header of all API requests that grants access to an agent's data",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/SystemTextJsonPatch.JsonPatchDocument1_Alto.Inventory.Api.Models.Responses.InventoryPatch"
                  }
                ]
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request"
          },
          "404": {
            "description": "Not Found"
          }
        }
      }
    },
    "/inventory/{inventoryId}/keyset": {
      "post": {
        "tags": [
          "Inventory"
        ],
        "summary": "Create a key set for an inventory item",
        "parameters": [
          {
            "name": "inventoryId",
            "in": "path",
            "description": "The unique identifier for the inventory",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "AgencyRef",
            "in": "header",
            "description": "A GUID required in the header of all API requests that grants access to an agent's data",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The key set to create",
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/Alto.Inventory.Api.Models.Requests.AddKeySetRequest"
                  }
                ]
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Returns the created key set",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Alto.Inventory.Api.Domain.AltoKeySet"
                }
              }
            }
          },
          "400": {
            "description": "When the request does not contain the expected information"
          },
          "401": {
            "description": "When access has not been granted"
          },
          "404": {
            "description": "The inventory was not found"
          }
        }
      }
    },
    "/inventory/{inventoryId}/keyset/{keySetId}": {
      "patch": {
        "tags": [
          "Inventory"
        ],
        "summary": "Update a key set for an inventory item",
        "parameters": [
          {
            "name": "inventoryId",
            "in": "path",
            "description": "The unique identifier for the inventory",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "keySetId",
            "in": "path",
            "description": "The unique identifier for the key set",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "AgencyRef",
            "in": "header",
            "description": "A GUID required in the header of all API requests that grants access to an agent's data",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "JSON Patch operations to apply",
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/SystemTextJsonPatch.JsonPatchDocument1_Alto.Inventory.Api.Models.Responses.KeySetPatch"
                  }
                ]
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": "The key set was updated"
          },
          "400": {
            "description": "When the request does not contain valid information"
          },
          "401": {
            "description": "When access has not been granted"
          },
          "404": {
            "description": "The inventory or key set was not found"
          }
        }
      },
      "delete": {
        "tags": [
          "Inventory"
        ],
        "summary": "Delete a key set for an inventory item",
        "parameters": [
          {
            "name": "inventoryId",
            "in": "path",
            "description": "The unique identifier for the inventory",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "keySetId",
            "in": "path",
            "description": "The unique identifier for the key set",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "AgencyRef",
            "in": "header",
            "description": "A GUID required in the header of all API requests that grants access to an agent's data",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "The key set was deleted, or did not exist"
          },
          "401": {
            "description": "When access has not been granted"
          },
          "404": {
            "description": "The inventory was not found"
          }
        }
      }
    },
    "/inventory/{inventoryId}/keysets": {
      "get": {
        "tags": [
          "Inventory"
        ],
        "summary": "Get key sets by inventoryId",
        "parameters": [
          {
            "name": "inventoryId",
            "in": "path",
            "description": "The unique identifier for the inventory",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "AgencyRef",
            "in": "header",
            "description": "A GUID required in the header of all API requests that grants access to an agent's data",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the key sets",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Alto.Inventory.Api.Domain.AltoKeySet"
                  }
                }
              }
            }
          },
          "400": {
            "description": "When the request does not contain the expected information"
          },
          "401": {
            "description": "When access has not been granted"
          },
          "404": {
            "description": "The inventory was not found"
          }
        }
      }
    },
    "/inventory/{inventoryId}/owner": {
      "post": {
        "tags": [
          "Inventory"
        ],
        "summary": "Associates a Contact with an Inventory item as its Owner",
        "description": "Associates a Contact with an Inventory item as its Owner",
        "parameters": [
          {
            "name": "inventoryId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "AgencyRef",
            "in": "header",
            "description": "A GUID required in the header of all API requests that grants access to an agent's data",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/Alto.Inventory.Api.Models.Requests.AddInventoryOwner"
                  }
                ]
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Created"
          },
          "400": {
            "description": "When the request does not contain the expected information"
          },
          "404": {
            "description": "Not Found"
          },
          "401": {
            "description": "When access has not been granted"
          },
          "409": {
            "description": "When there is a conflict with current data"
          }
        }
      }
    },
    "/inventory/filter": {
      "get": {
        "tags": [
          "Inventory"
        ],
        "summary": "Filter inventory items",
        "description": "Get a paginated list of filtered inventory items, which can contain properties for lettings, sales, or both depending on the query parameters used.",
        "parameters": [
          {
            "name": "categoryType",
            "in": "query",
            "description": "The category type to filter inventory items.\n\n[Note] If you use a value of \"Unspecified\" this field will be ignored.",
            "schema": {
              "allOf": [
                {
                  "$ref": "#/components/schemas/Alto.Inventory.Api.Enums.PropertyCategoryType"
                }
              ]
            }
          },
          {
            "name": "recordType",
            "in": "query",
            "description": "The record type to filter inventory items.\n\n[Note] If you use a value of \"Unspecified\" or omit this field then both lettings and sales properties will be returned, unless you specify values for management type and / or maintenance type in which case only lettings properties will be returned.",
            "schema": {
              "allOf": [
                {
                  "$ref": "#/components/schemas/Alto.Inventory.Api.Enums.PropertyRecordType"
                }
              ]
            }
          },
          {
            "name": "managementType",
            "in": "query",
            "description": "The rental management type to filter inventory items.\n\n[Note] If you use a record type value of \"Sale\" this field will be ignored.",
            "schema": {
              "allOf": [
                {
                  "$ref": "#/components/schemas/Alto.Inventory.Api.Enums.RentalManagementType"
                }
              ]
            }
          },
          {
            "name": "maintenance-type",
            "in": "query",
            "description": "The rental maintenance type to filter inventory items.\n\n[Note] If you use a record type value of \"Sale\" this field will be ignored.",
            "schema": {
              "allOf": [
                {
                  "$ref": "#/components/schemas/Alto.Inventory.Api.Enums.MaintenanceType"
                }
              ]
            }
          },
          {
            "name": "archived",
            "in": "query",
            "description": "The archived status to filter inventory items.",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "inventory-status",
            "in": "query",
            "description": "The status to filter inventory items.\n\n[Note] If you use a value of \"Unspecified\" this field will be ignored.",
            "schema": {
              "allOf": [
                {
                  "$ref": "#/components/schemas/Alto.Services.SDK.InventoryStatus"
                }
              ]
            }
          },
          {
            "name": "instruction-date-from",
            "in": "query",
            "description": "The start date for filtering inventory items by instruction date.",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "instruction-date-to",
            "in": "query",
            "description": "The end date for filtering inventory items by instruction date.",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "owner-id",
            "in": "query",
            "description": "The ID of the property owner to filter inventory items.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "next-token",
            "in": "query",
            "description": "The token for the next page of results.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "max-results",
            "in": "query",
            "description": "The maximum number of results to return. The maximum number of results to return. The default value is 50, and the maximum value is 250.",
            "schema": {
              "maximum": 250,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "branchIds",
            "in": "query",
            "description": "The list of branch unique identifiers for filtering inventory items.",
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "created-from",
            "in": "query",
            "description": "The start date for filtering inventory items by created date.",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "created-to",
            "in": "query",
            "description": "The end date for filtering inventory items by created date.",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "modified-from",
            "in": "query",
            "description": "The start date for filtering inventory items by modified date.",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "modified-to",
            "in": "query",
            "description": "The end date for filtering inventory items by modified date.",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "AgencyRef",
            "in": "header",
            "description": "A GUID required in the header of all API requests that grants access to an agent's data",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the paginated list of filtered inventory items",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/Alto.Inventory.Api.Models.Responses.Search.InventorySearchResults"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Alto.Inventory.Api.Models.Responses.Search.InventorySearchResults"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Alto.Inventory.Api.Models.Responses.Search.InventorySearchResults"
                }
              }
            }
          },
          "400": {
            "description": "When the request does not contain the expected information",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "When access has not been granted"
          }
        }
      }
    },
    "/inventory/items": {
      "get": {
        "tags": [
          "Inventory"
        ],
        "summary": "Get multiple inventory items",
        "description": "Get inventory items for multiple inventory ids",
        "parameters": [
          {
            "name": "inventory-id",
            "in": "query",
            "required": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "AgencyRef",
            "in": "header",
            "description": "A GUID required in the header of all API requests that grants access to an agent's data",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the inventory items",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Alto.Services.SDK.Models.ItemCollection1_Alto.Inventory.Api.Models.Responses.InventoryDetailItem"
                }
              }
            }
          },
          "400": {
            "description": "When the request does not contain the expected information"
          },
          "401": {
            "description": "When access has not been granted"
          },
          "404": {
            "description": "Not Found"
          }
        }
      }
    },
    "/inventory/new": {
      "post": {
        "tags": [
          "Inventory"
        ],
        "summary": "Creates an inventory item",
        "description": "Creates an inventory item",
        "parameters": [
          {
            "name": "AgencyRef",
            "in": "header",
            "description": "A GUID required in the header of all API requests that grants access to an agent's data",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The object containing the inventory item request details",
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/Alto.Inventory.Api.Models.Requests.AddInventory"
                  }
                ]
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Returns the inventory item created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Alto.Inventory.Api.Models.Responses.InventoryItem"
                }
              }
            }
          },
          "400": {
            "description": "When the request does not contain the expected information"
          },
          "401": {
            "description": "When access has not been granted"
          }
        }
      }
    },
    "/inventory/search": {
      "get": {
        "tags": [
          "Inventory"
        ],
        "summary": "Search inventory items",
        "description": "Get a paginated list of inventory items by searching property",
        "parameters": [
          {
            "name": "query",
            "in": "query",
            "description": "The query term to filter inventory items. Based on specific fields such as address, postcode, contact name, etc.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "archived",
            "in": "query",
            "description": "The archived status to search inventory items.",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "recordType",
            "in": "query",
            "description": "The record type to search inventory items.",
            "schema": {
              "allOf": [
                {
                  "$ref": "#/components/schemas/Alto.Inventory.Api.Enums.PropertyRecordType"
                }
              ]
            }
          },
          {
            "name": "next-token",
            "in": "query",
            "description": "The token for the next page of results.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "max-results",
            "in": "query",
            "description": "The maximum number of results to return. The maximum number of results to return. The default value is 50, and the maximum value is 250.",
            "schema": {
              "maximum": 250,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "branchIds",
            "in": "query",
            "description": "The list of branch unique identifiers for filtering inventory items.",
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "created-from",
            "in": "query",
            "description": "The start date for filtering inventory items by created date.",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "created-to",
            "in": "query",
            "description": "The end date for filtering inventory items by created date.",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "modified-from",
            "in": "query",
            "description": "The start date for filtering inventory items by modified date.",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "modified-to",
            "in": "query",
            "description": "The end date for filtering inventory items by modified date.",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "AgencyRef",
            "in": "header",
            "description": "A GUID required in the header of all API requests that grants access to an agent's data",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the paginated list of searched inventory items",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/Alto.Inventory.Api.Models.Responses.Search.InventorySearchResults"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Alto.Inventory.Api.Models.Responses.Search.InventorySearchResults"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Alto.Inventory.Api.Models.Responses.Search.InventorySearchResults"
                }
              }
            }
          },
          "400": {
            "description": "When the request does not contain the expected information",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "When access has not been granted"
          }
        }
      }
    },
    "/leads": {
      "get": {
        "tags": [
          "Leads"
        ],
        "summary": "Gets a paginated list of Leads",
        "description": "Retrieves a paginated list of leads in the requested state of processing for a given AgencyRef and all permissible branches.\nRequired scope: alto/read:leads",
        "parameters": [
          {
            "name": "modified-from",
            "in": "query",
            "description": "Required: The modified date and time in ISO 8601 format from which Leads should be retrieved from.",
            "schema": {
              "type": "string",
              "format": "date-time",
              "example": "2023-01-01T00:00:00.0000000+00:00"
            },
            "example": "2023-01-01T00:00:00.0000000+00:00"
          },
          {
            "name": "modified-to",
            "in": "query",
            "description": "Required: The modified date and time in ISO 8601 format from which Leads should be retrieved up until.",
            "schema": {
              "type": "string",
              "format": "date-time",
              "example": "2023-12-31T23:59:59.0000000+00:00"
            },
            "example": "2023-12-31T23:59:59.0000000+00:00"
          },
          {
            "name": "lead-status",
            "in": "query",
            "description": "Optional: The LeadStatus type for filtering leads. Permitted values are:\n- Unspecified: Leads that have not been able to be processed after import\n- Unprocessed: Leads that are queued up for processing after import\n- Processed: Leads that are ready for triage\n- Rejected: Leads that have been triaged and rejected by the agent or party acting on behalf of the agent\n- Accepted: Leads that have been triaged and accepted by the agent or party acting on behalf of the agent\n            \nNOTE: If not set, this will default to Accepted",
            "schema": {
              "allOf": [
                {
                  "$ref": "#/components/schemas/LeadStatus"
                }
              ],
              "example": "Accepted"
            },
            "example": "Accepted"
          },
          {
            "name": "enquiry-from",
            "in": "query",
            "description": "Required: The enquiry date and time in ISO 8601 format from which Leads should be retrieved from.",
            "schema": {
              "type": "string",
              "format": "date-time",
              "example": "2023-01-01T00:00:00.0000000+00:00"
            },
            "example": "2023-01-01T00:00:00.0000000+00:00"
          },
          {
            "name": "enquiry-to",
            "in": "query",
            "description": "Required: The enquiry date and time in ISO 8601 format from which Leads should be retrieved up until.",
            "schema": {
              "type": "string",
              "format": "date-time",
              "example": "2023-12-31T23:59:59.0000000+00:00"
            },
            "example": "2023-12-31T23:59:59.0000000+00:00"
          },
          {
            "name": "next-token",
            "in": "query",
            "description": "Sets the token for the next page of resultss.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "max-results",
            "in": "query",
            "description": "Sets the maximum number of results to return. The maximum number of results to return. The default value is 50, and the maximum value is 250",
            "schema": {
              "maximum": 250,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "AgencyRef",
            "in": "header",
            "description": "A GUID required in the header of all API requests that grants access to an agent's data",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/LeadPagedResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LeadPagedResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/LeadPagedResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation error i.e. invalid date range or missing branch level activation.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorsResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorsResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorsResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorsResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorsResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorsResponse"
                }
              }
            }
          },
          "403": {
            "description": "Invalid scope or AgencyRef for request.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorsResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorsResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorsResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorsResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorsResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorsResponse"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Leads"
        ],
        "summary": "Create Lead",
        "description": "Creates a new lead within Alto",
        "parameters": [
          {
            "name": "AgencyRef",
            "in": "header",
            "description": "A GUID required in the header of all API requests that grants access to an agent's data",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/PostLeadRequest"
                  }
                ]
              }
            },
            "text/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/PostLeadRequest"
                  }
                ]
              }
            },
            "application/*+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/PostLeadRequest"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "A new lead has been created",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/Lead"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Lead"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Lead"
                }
              }
            }
          },
          "400": {
            "description": "A lead could not be created from the request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorsResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorsResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorsResponse"
                }
              }
            }
          },
          "409": {
            "description": "A lead already exists for the source identifier value in the request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorsResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorsResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorsResponse"
                }
              }
            }
          },
          "422": {
            "description": "A lead could not be created for the specified branch",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorsResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorsResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorsResponse"
                }
              }
            }
          }
        }
      }
    },
    "/leads/{leadId}": {
      "get": {
        "tags": [
          "Leads"
        ],
        "summary": "Get Lead by Id",
        "description": "Get a lead item by id",
        "operationId": "GetById",
        "parameters": [
          {
            "name": "leadId",
            "in": "path",
            "description": "The unique identifier of the lead",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "AgencyRef",
            "in": "header",
            "description": "A GUID required in the header of all API requests that grants access to an agent's data",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Lead returned for LeadId.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/Lead"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Lead"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Lead"
                }
              }
            }
          },
          "400": {
            "description": "Validation error e.g. invalid LeadId.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorsResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorsResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorsResponse"
                }
              }
            }
          },
          "404": {
            "description": "Lead not found for LeadId.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorsResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorsResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorsResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Leads"
        ],
        "summary": "Update Lead by Id",
        "description": "Updates a lead by leadId with any of the following fields supported for update:\n- /contactId ie. The id of the contact associated with the lead\n- /leadStatus ie. Set the new status of a Processed lead to either Accepted/Rejected. Only leads with a status of Processed can be updated\n            \nRequired scope: alto/update:leads",
        "operationId": "UpdateLead",
        "parameters": [
          {
            "name": "leadId",
            "in": "path",
            "description": "The unique identifier for the Lead.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "AgencyRef",
            "in": "header",
            "description": "A GUID required in the header of all API requests that grants access to an agent's data",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "JsonPatchDocument payload with the intended changes.",
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/LeadPatchJsonPatchDocument"
                  }
                ]
              }
            },
            "text/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/LeadPatchJsonPatchDocument"
                  }
                ]
              }
            },
            "application/*+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/LeadPatchJsonPatchDocument"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Returns the updated Lead.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/Lead"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Lead"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Lead"
                }
              }
            }
          },
          "400": {
            "description": "Invalid Patch request.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Lead not found.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/guarantorIds": {
      "get": {
        "tags": [
          "LettingsProgression"
        ],
        "parameters": [
          {
            "name": "tenantId",
            "in": "query",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          },
          {
            "name": "AgencyRef",
            "in": "header",
            "description": "",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TenantGuarantorDataItemCollection"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TenantGuarantorDataItemCollection"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TenantGuarantorDataItemCollection"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/ReferenceChecks": {
      "get": {
        "tags": [
          "ReferenceChecks"
        ],
        "parameters": [
          {
            "name": "NextToken",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "MaxResults",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "CreatedFrom",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "CreatedTo",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "AgencyRef",
            "in": "header",
            "description": "",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ReferenceCheckPagedResultsDto"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReferenceCheckPagedResultsDto"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReferenceCheckPagedResultsDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/ReferenceChecks/{referenceCheckId}": {
      "patch": {
        "tags": [
          "ReferenceChecks"
        ],
        "parameters": [
          {
            "name": "referenceCheckId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "ClientId",
            "in": "header",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "AgencyRef",
            "in": "header",
            "description": "",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchReferenceCheckRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchReferenceCheckRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PatchReferenceCheckRequest"
              }
            }
          }
        },
        "responses": {
          "202": {
            "description": "Accepted"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/listing/filter": {
      "get": {
        "tags": [
          "Listing"
        ],
        "summary": "Filter property listings",
        "description": "Get a paginated list of filtered property listings",
        "parameters": [
          {
            "name": "status",
            "in": "query",
            "description": "[Optional] Set the status to filter results.",
            "schema": {
              "allOf": [
                {
                  "$ref": "#/components/schemas/InventoryStatus"
                }
              ]
            }
          },
          {
            "name": "auction",
            "in": "query",
            "description": "[Optional] Set whether to include auction listings or not.",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "auction-closing-date-from",
            "in": "query",
            "description": "[Optional] The date from which you wish to consider the results to return. Compliments the auction-closing-date-to filter. If both fields are empty, no consideration of the auction date is applied.",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "auction-closing-date-to",
            "in": "query",
            "description": "[Optional] The date to which you wish to consider the results to return. Compliments the auction-closing-date-from filter. If both fields are empty, no consideration of the auction date is applied.",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "owner-id",
            "in": "query",
            "description": "[Optional] The UserId of the owner/negotiator for the property.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "next-token",
            "in": "query",
            "description": "[Optional] Set the token for the next page of results.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "max-results",
            "in": "query",
            "description": "[Optional] Set the maximum number of results to return. The default value is 50, and the maximum value is 250.",
            "schema": {
              "maximum": 250,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "created-from",
            "in": "query",
            "description": "[Optional] The date from which you wish to consider the results to return. Compliments the created-to filter. If both fields are empty, no consideration of the created date is applied.",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "created-to",
            "in": "query",
            "description": "[Optional] The date to which you wish to consider the results to return. Compliments the created-from filter. If both fields are empty, no consideration of the created date is applied.",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "modified-from",
            "in": "query",
            "description": "[Optional] The date from which you wish to consider the results to return. Compliments the modified-to filter. If both fields are empty, no consideration of the modified date is applied.",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "modified-to",
            "in": "query",
            "description": "[Optional] The date to which you wish to consider the results to return. Compliments the modified-from filter. If both fields are empty, no consideration of the modified date is applied.",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "sort-by",
            "in": "query",
            "description": "[Optional] The field to order the results by. Complements sort-order. Default is to order by modified then by id in a descending manner.",
            "schema": {
              "allOf": [
                {
                  "$ref": "#/components/schemas/SortBy"
                }
              ]
            }
          },
          {
            "name": "sort-order",
            "in": "query",
            "description": "[Optional] The ordering regime of the results returned. Complements sort-by. Default is Descending.",
            "schema": {
              "allOf": [
                {
                  "$ref": "#/components/schemas/SortOrder"
                }
              ]
            }
          },
          {
            "name": "branch-id",
            "in": "query",
            "description": "[Optional] A list of branch ids to restrict the filter by. An empty list will return all results in all branches.",
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "AgencyRef",
            "in": "header",
            "description": "A GUID required in the header of all API requests that grants access to an agent's data",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the paginated list of filtered property listings",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/FilterListingResponsePagedResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FilterListingResponsePagedResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/FilterListingResponsePagedResponse"
                }
              }
            }
          },
          "400": {
            "description": "When the request does not contain the expected information"
          },
          "401": {
            "description": "When access has not been granted"
          }
        }
      }
    },
    "/listing/property/{propertyId}": {
      "get": {
        "tags": [
          "Listing"
        ],
        "summary": "Get a property listing",
        "description": "Get a property listing by property id",
        "parameters": [
          {
            "name": "propertyId",
            "in": "path",
            "description": "The unique identifier for the Property",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "AgencyRef",
            "in": "header",
            "description": "A GUID required in the header of all API requests that grants access to an agent's data",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the property listing",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ListingResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListingResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListingResponse"
                }
              }
            }
          },
          "400": {
            "description": "When the request does not contain the expected information"
          },
          "401": {
            "description": "When access has not been granted"
          },
          "404": {
            "description": "The property listing was not found"
          }
        }
      }
    },
    "/listing/property/{propertyId}/images": {
      "get": {
        "tags": [
          "Listing"
        ],
        "summary": "Get property images metadata",
        "description": "Get image metadata for a property listing",
        "parameters": [
          {
            "name": "propertyId",
            "in": "path",
            "description": "The unique identifier for the Property",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "x-Image-Client",
            "in": "header",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "AgencyRef",
            "in": "header",
            "description": "A GUID required in the header of all API requests that grants access to an agent's data",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the image metadata for a property listing",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ListingImagesResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListingImagesResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListingImagesResponse"
                }
              }
            }
          },
          "400": {
            "description": "When the request does not contain the expected information"
          },
          "401": {
            "description": "When access has not been granted"
          }
        }
      }
    },
    "/listing/property/{propertyId}/images/{imageId}": {
      "get": {
        "tags": [
          "Listing"
        ],
        "summary": "Get a property listing image",
        "description": "Get a property listing image by property id and image id",
        "parameters": [
          {
            "name": "propertyId",
            "in": "path",
            "description": "The unique identifier for the Property",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "imageId",
            "in": "path",
            "description": "The unique identifier for the Image",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "image-size",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "imageSize",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "AgencyRef",
            "in": "header",
            "description": "A GUID required in the header of all API requests that grants access to an agent's data",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the property listing image content as a stream"
          },
          "400": {
            "description": "When the request does not contain the expected information",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "The property listing image was not found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "When access has not been granted"
          }
        }
      }
    },
    "/listing/property/{propertyId}/rooms": {
      "patch": {
        "tags": [
          "Listing"
        ],
        "summary": "Partially update a property listing rooms",
        "description": "Apply JSON Patch operations to update lead-in text, lead-out text, and rooms for a property.",
        "operationId": "PatchListingRooms",
        "parameters": [
          {
            "name": "propertyId",
            "in": "path",
            "description": "The unique identifier for the Property",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "AgencyRef",
            "in": "header",
            "description": "A GUID required in the header of all API requests that grants access to an agent's data",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "JSON Patch document containing operations to apply",
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/PatchListingRoomsRequestJsonPatchDocument"
                  }
                ]
              }
            },
            "text/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/PatchListingRoomsRequestJsonPatchDocument"
                  }
                ]
              }
            },
            "application/*+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/PatchListingRoomsRequestJsonPatchDocument"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "The listing rooms were updated"
          },
          "400": {
            "description": "When the request or patch document is invalid",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "When access has not been granted",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "When access to the property is forbidden",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "The listing was not found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/listing/property/{propertyId}/summary": {
      "patch": {
        "tags": [
          "Listing"
        ],
        "summary": "Partially update a property listing summary",
        "description": "Apply JSON Patch operations to update the listing summary and bullets for a property.",
        "operationId": "PatchListingSummary",
        "parameters": [
          {
            "name": "propertyId",
            "in": "path",
            "description": "The unique identifier for the Property",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "AgencyRef",
            "in": "header",
            "description": "A GUID required in the header of all API requests that grants access to an agent's data",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "JSON Patch document containing operations to apply",
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/PutListingSummaryJsonPatchDocument"
                  }
                ]
              }
            },
            "text/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/PutListingSummaryJsonPatchDocument"
                  }
                ]
              }
            },
            "application/*+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/PutListingSummaryJsonPatchDocument"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "The listing summary was updated"
          },
          "400": {
            "description": "When the request or patch document is invalid",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "When access has not been granted",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "When access to the property is forbidden",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "The listing was not found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/listing/property/items": {
      "get": {
        "tags": [
          "Listing"
        ],
        "summary": "Get multiple property listings",
        "description": "Get property listings for multiple property ids",
        "parameters": [
          {
            "name": "property-id",
            "in": "query",
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "AgencyRef",
            "in": "header",
            "description": "A GUID required in the header of all API requests that grants access to an agent's data",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the property listings",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ListingResponseItemCollection"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListingResponseItemCollection"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListingResponseItemCollection"
                }
              }
            }
          },
          "400": {
            "description": "When the request does not contain the expected information"
          },
          "401": {
            "description": "When access has not been granted"
          }
        }
      }
    },
    "/inventory/{inventoryId}/media-link": {
      "post": {
        "tags": [
          "Media"
        ],
        "summary": "Create new link media item (VirtualTour or WebLink).",
        "parameters": [
          {
            "name": "inventoryId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "AgencyRef",
            "in": "header",
            "description": "A GUID required in the header of all API requests that grants access to an agent's data",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "required": [
                  "request"
                ],
                "type": "object",
                "properties": {
                  "request": {
                    "allOf": [
                      {
                        "$ref": "#/components/schemas/PostLinkMediaItemRequest"
                      }
                    ]
                  }
                }
              },
              "encoding": {
                "request": {
                  "style": "form"
                }
              }
            },
            "application/x-www-form-urlencoded": {
              "schema": {
                "required": [
                  "request"
                ],
                "type": "object",
                "properties": {
                  "request": {
                    "allOf": [
                      {
                        "$ref": "#/components/schemas/PostLinkMediaItemRequest"
                      }
                    ]
                  }
                }
              },
              "encoding": {
                "request": {
                  "style": "form"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The id of the new media",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostLinkMediaItemResponse"
                }
              }
            }
          },
          "401": {
            "description": "When access has not been granted"
          },
          "400": {
            "description": "When the request is invalid or MediaType is not VirtualTour or WebLink"
          },
          "404": {
            "description": "The property is not found"
          }
        }
      }
    },
    "/media-item": {
      "post": {
        "tags": [
          "Media"
        ],
        "summary": "Create new media item",
        "parameters": [
          {
            "name": "AgencyRef",
            "in": "header",
            "description": "A GUID required in the header of all API requests that grants access to an agent's data",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "required": [
                  "request"
                ],
                "type": "object",
                "properties": {
                  "request": {
                    "allOf": [
                      {
                        "$ref": "#/components/schemas/PostMediaItemRequest"
                      }
                    ]
                  }
                }
              },
              "encoding": {
                "request": {
                  "style": "form"
                }
              }
            },
            "application/x-www-form-urlencoded": {
              "schema": {
                "required": [
                  "request"
                ],
                "type": "object",
                "properties": {
                  "request": {
                    "allOf": [
                      {
                        "$ref": "#/components/schemas/PostMediaItemRequest"
                      }
                    ]
                  }
                }
              },
              "encoding": {
                "request": {
                  "style": "form"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The id of the new media",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostMediaItemResponse"
                }
              }
            }
          },
          "401": {
            "description": "When access has not been granted"
          },
          "400": {
            "description": "When the request does not contain the expected information"
          },
          "404": {
            "description": "The entity is not found"
          }
        }
      }
    },
    "/media-item/{mediaItemId}": {
      "delete": {
        "tags": [
          "Media"
        ],
        "summary": "Delete a media item",
        "parameters": [
          {
            "name": "mediaItemId",
            "in": "path",
            "description": "The unique identifier for the media item",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "AgencyRef",
            "in": "header",
            "description": "A GUID required in the header of all API requests that grants access to an agent's data",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "The media item has been deleted"
          },
          "401": {
            "description": "When access has not been granted"
          },
          "404": {
            "description": "The media item or its property is not found"
          }
        }
      }
    },
    "/offers/sales-offer/{offerId}": {
      "get": {
        "tags": [
          "Offers"
        ],
        "summary": "Gets a sales offer by offerId",
        "parameters": [
          {
            "name": "offerId",
            "in": "path",
            "description": "OfferId to retrieve sales offer for",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "AgencyRef",
            "in": "header",
            "description": "",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/Offer"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Offer"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Offer"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/Offer"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Offer"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Offer"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorsResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorsResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorsResponse"
                }
              }
            }
          }
        }
      }
    },
    "/referrals/{referralId}": {
      "get": {
        "tags": [
          "Referrals"
        ],
        "parameters": [
          {
            "name": "referralId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "AgencyRef",
            "in": "header",
            "description": "",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/GetReferralResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetReferralResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetReferralResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Referrals"
        ],
        "summary": "Updates a referral using JSON Patch",
        "parameters": [
          {
            "name": "referralId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "AgencyRef",
            "in": "header",
            "description": "",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ReferralPatchJsonPatchDocument"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ReferralPatchJsonPatchDocument"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ReferralPatchJsonPatchDocument"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error"
          }
        }
      }
    },
    "/opt-out-status/{linkedType}/{linkedId}": {
      "get": {
        "tags": [
          "Partners"
        ],
        "summary": "Get the integration opt-out status",
        "description": "Returns the opt-out status for a linked entity. The linked entity is identified by its type and id. Currently only Property entities are supported.",
        "operationId": "GetIntegrationOptOutStatus",
        "parameters": [
          {
            "name": "linkedType",
            "in": "path",
            "description": "The type of the linked entity (e.g. Property)",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "linkedId",
            "in": "path",
            "description": "The id of the linked entity",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "AgencyRef",
            "in": "header",
            "description": "A GUID required in the header of all API requests that grants access to an agent's data",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the opt-out status for the linked entity",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OptOutResponse"
                }
              }
            }
          },
          "400": {
            "description": "When the request does not contain the expected information"
          },
          "401": {
            "description": "When access has not been granted"
          },
          "404": {
            "description": "The linked entity is not found"
          }
        }
      }
    },
    "/partners/integration": {
      "get": {
        "tags": [
          "Partners"
        ],
        "summary": "Get the integration activation state",
        "description": "Get the current integration activation state for the authenticated partner and agency.",
        "parameters": [
          {
            "name": "AgencyRef",
            "in": "header",
            "description": "A GUID required in the header of all API requests that grants access to an agent's data",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the integration activation state",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/IntegrationStateResponse"
                }
              }
            }
          },
          "401": {
            "description": "When access has not been granted"
          },
          "404": {
            "description": "When the integration is not enabled for the agency"
          }
        }
      }
    },
    "/partners/integration/status": {
      "post": {
        "tags": [
          "Partners"
        ],
        "summary": "Update the integration activation state",
        "description": "Update the provider status for the calling partner's integrated services on the requested branches.",
        "parameters": [
          {
            "name": "AgencyRef",
            "in": "header",
            "description": "A GUID required in the header of all API requests that grants access to an agent's data",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/UpdateIntegrationStatusRequest"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Returns the applied provider status and the affected records",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdateIntegrationStatusResponse"
                }
              }
            }
          },
          "400": {
            "description": "When the request does not contain a recognised provider status"
          },
          "401": {
            "description": "When access has not been granted"
          },
          "404": {
            "description": "When no integrated services were found for the partner and requested branches"
          }
        }
      }
    },
    "/inventory/{inventoryId}/landlords": {
      "get": {
        "tags": [
          "Landlords"
        ],
        "parameters": [
          {
            "name": "inventoryId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "AgencyRef",
            "in": "header",
            "description": "A GUID required in the header of all API requests that grants access to an agent's data",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/Alto.PropertyManagement.Api.Models.DTOs.ItemCollection1_Alto.PropertyManagement.Api.Models.Responses.Landlord"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Alto.PropertyManagement.Api.Models.DTOs.ItemCollection1_Alto.PropertyManagement.Api.Models.Responses.Landlord"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Alto.PropertyManagement.Api.Models.DTOs.ItemCollection1_Alto.PropertyManagement.Api.Models.Responses.Landlord"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/inventory/{inventoryId}/management-events": {
      "get": {
        "tags": [
          "ManagementEvents"
        ],
        "summary": "Gets management events for a specific inventory item",
        "description": "Retrieves a paginated list of management events for a specific inventory item for a given AgencyRef and all permissible branches.",
        "parameters": [
          {
            "name": "inventoryId",
            "in": "path",
            "description": "ID of the inventory item",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "createdFrom",
            "in": "query",
            "description": "The start date for filtering management events by created date.",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "createdTo",
            "in": "query",
            "description": "The end date for filtering management events by created date.",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "modifiedFrom",
            "in": "query",
            "description": "The start date for filtering management events by modified date.",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "modifiedTo",
            "in": "query",
            "description": "The end date for filtering management events by modified date.",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "nextToken",
            "in": "query",
            "description": "Token used to retrieve the next page of results. This is returned in the response of the previous page.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "maxResults",
            "in": "query",
            "description": "Maximum number of results to return per page. Defaults to 100 if not specified.",
            "schema": {
              "maximum": 100,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "upcoming",
            "in": "query",
            "description": "When true, filters events to show only those that are either overdue or due within the period defined by their reminderDays field from today's date",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "status",
            "in": "query",
            "description": "List of event statuses to filter by. If not provided, events of all statuses will be returned.",
            "schema": {
              "type": "array",
              "items": {
                "enum": [
                  "Unspecified",
                  "Pending",
                  "InProgress",
                  "Complete",
                  "Cancelled",
                  "Expired"
                ],
                "type": "string"
              }
            }
          },
          {
            "name": "AgencyRef",
            "in": "header",
            "description": "A GUID required in the header of all API requests that grants access to an agent's data",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Alto.PropertyManagement.Api.Models.Responses.PagedResults1_Alto.PropertyManagement.Api.Models.Responses.ManagementEvent"
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Alto.PropertyManagement.Api.Models.Responses.ErrorsResponse"
                }
              }
            }
          }
        }
      }
    },
    "/inventory/{inventoryId}/suppliers": {
      "get": {
        "tags": [
          "Suppliers"
        ],
        "parameters": [
          {
            "name": "inventoryId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "nextToken",
            "in": "query",
            "description": "Token used to retrieve the next page of results. This is returned in the response of the previous page.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "maxResults",
            "in": "query",
            "description": "Maximum number of results to return per page. Defaults to 100 if not specified.",
            "schema": {
              "maximum": 100,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "AgencyRef",
            "in": "header",
            "description": "A GUID required in the header of all API requests that grants access to an agent's data",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Alto.PropertyManagement.Api.Models.Responses.PagedResults1_Alto.PropertyManagement.Api.Models.Responses.Supplier"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/inventory/{inventoryId}/tenancies": {
      "get": {
        "tags": [
          "Tenancies"
        ],
        "parameters": [
          {
            "name": "inventoryId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "nextToken",
            "in": "query",
            "description": "Token used to retrieve the next page of results. This is returned in the response of the previous page.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "maxResults",
            "in": "query",
            "description": "Maximum number of results to return per page. Defaults to 100 if not specified.",
            "schema": {
              "maximum": 100,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "AgencyRef",
            "in": "header",
            "description": "A GUID required in the header of all API requests that grants access to an agent's data",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/Alto.PropertyManagement.Api.Models.Responses.PagedResults1_Alto.PropertyManagement.Api.Models.Responses.Tenancy"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Alto.PropertyManagement.Api.Models.Responses.PagedResults1_Alto.PropertyManagement.Api.Models.Responses.Tenancy"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Alto.PropertyManagement.Api.Models.Responses.PagedResults1_Alto.PropertyManagement.Api.Models.Responses.Tenancy"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Tenancies"
        ],
        "summary": "Create a tenancy",
        "description": "Asynchronously creates a proposed tenancy. Use the returned TenancyId to poll /tenancies/{tenancyId} to check if the tenancy is created.",
        "parameters": [
          {
            "name": "inventoryId",
            "in": "path",
            "description": "The property Id",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "AgencyRef",
            "in": "header",
            "description": "A GUID required in the header of all API requests that grants access to an agent's data",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "Json request body containing the tenancy details.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Alto.PropertyManagement.Api.Models.Requests.CreateProposedTenancyRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Alto.PropertyManagement.Api.Models.Requests.CreateProposedTenancyRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/Alto.PropertyManagement.Api.Models.Requests.CreateProposedTenancyRequest"
              }
            }
          }
        },
        "responses": {
          "202": {
            "description": "Accepted"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/Alto.PropertyManagement.Api.Models.Responses.ErrorsResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Alto.PropertyManagement.Api.Models.Responses.ErrorsResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Alto.PropertyManagement.Api.Models.Responses.ErrorsResponse"
                }
              }
            }
          }
        }
      }
    },
    "/inventory/{inventoryId}/work-orders": {
      "get": {
        "tags": [
          "WorkOrders"
        ],
        "summary": "Get Work Orders for a specific inventory item by Property Id",
        "description": "Retrieves a Work Order by Id for a given AgencyRef and all permissable branches.",
        "parameters": [
          {
            "name": "inventoryId",
            "in": "path",
            "description": "The unique identity for the property",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "AgencyRef",
            "in": "header",
            "description": "A GUID required in the header of all API requests that grants access to an agent's data",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Alto.PropertyManagement.Api.Models.Responses.WorkOrder"
                }
              }
            }
          },
          "404": {
            "description": "Work Order not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Alto.PropertyManagement.Api.Models.Responses.ErrorsResponse"
                }
              }
            }
          }
        }
      }
    },
    "/inventory/{propertyId}/charges": {
      "post": {
        "tags": [
          "Charges"
        ],
        "parameters": [
          {
            "name": "propertyId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "AgencyRef",
            "in": "header",
            "description": "A GUID required in the header of all API requests that grants access to an agent's data",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "required": [
                  "chargeType"
                ],
                "type": "object",
                "properties": {
                  "chargeType": {
                    "enum": [
                      "Maintenance",
                      "Deposit",
                      "DepositToLandlord",
                      "ReferencingFee",
                      "AdministrationFee",
                      "CheckInFee",
                      "CheckOutFee",
                      "TenancyAgreementFee",
                      "CapitalExpenditure",
                      "Cleaning",
                      "Electrical",
                      "Gardening",
                      "Plumbing",
                      "GasSafetyCheck",
                      "EPC",
                      "MaintenanceExpense",
                      "InsuranceBuildings",
                      "InsuranceContents",
                      "InsuranceRentProtection",
                      "UtilitiesWater",
                      "UtilitiesCouncilTax",
                      "UtilitiesElectricity",
                      "UtilitiesGas",
                      "Decorating",
                      "BankCharges",
                      "ServiceCharge",
                      "GroundRent",
                      "ElectricalSafetyCheck",
                      "Appliances",
                      "KeysLocksmith",
                      "Inventory",
                      "Furniture",
                      "PortableApplianceTest",
                      "LeadTest"
                    ],
                    "type": "string"
                  },
                  "supplierId": {
                    "type": "string"
                  },
                  "invoiceReference": {
                    "type": "string"
                  },
                  "totalNet": {
                    "minimum": 0.0,
                    "type": "number",
                    "format": "float"
                  },
                  "totalVat": {
                    "minimum": 0,
                    "type": "number",
                    "format": "float"
                  },
                  "vatRateType": {
                    "enum": [
                      "Exempt",
                      "Standard",
                      "Reduced",
                      "Zero",
                      "StandardROI"
                    ],
                    "type": "string"
                  },
                  "workOrderId": {
                    "type": "string"
                  },
                  "invoiceDocument": {
                    "type": "string",
                    "format": "binary"
                  },
                  "description": {
                    "type": "string"
                  },
                  "raiseImmediately": {
                    "type": "boolean"
                  },
                  "chargeDate": {
                    "type": "string",
                    "format": "date-time"
                  }
                }
              },
              "encoding": {
                "chargeType": {
                  "style": "form"
                },
                "supplierId": {
                  "style": "form"
                },
                "invoiceReference": {
                  "style": "form"
                },
                "totalNet": {
                  "style": "form"
                },
                "totalVat": {
                  "style": "form"
                },
                "vatRateType": {
                  "style": "form"
                },
                "workOrderId": {
                  "style": "form"
                },
                "invoiceDocument": {
                  "style": "form"
                },
                "description": {
                  "style": "form"
                },
                "raiseImmediately": {
                  "style": "form"
                },
                "chargeDate": {
                  "style": "form"
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Alto.PropertyManagement.Api.Models.Responses.PropertyCharge"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Alto.PropertyManagement.Api.Models.Responses.ErrorsResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Alto.PropertyManagement.Api.Models.Responses.ErrorsResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Alto.PropertyManagement.Api.Models.Responses.ErrorsResponse"
                }
              }
            }
          }
        }
      }
    },
    "/landlords": {
      "get": {
        "tags": [
          "Landlords"
        ],
        "summary": "List Landlords",
        "description": "Retrieves a paginated list of landlord contacts with optional filtering.",
        "parameters": [
          {
            "name": "next-token",
            "in": "query",
            "description": "Token used to retrieve the next page of results. This is returned in the response of the previous page.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "max-results",
            "in": "query",
            "description": "Maximum number of results to return per page. Defaults to 100 if not specified.",
            "schema": {
              "maximum": 100,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "created-from",
            "in": "query",
            "description": "The start date for filtering landlords by created date.",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "created-to",
            "in": "query",
            "description": "The end date for filtering landlords by created date.",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "modified-from",
            "in": "query",
            "description": "The start date for filtering landlords by modified date.",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "modified-to",
            "in": "query",
            "description": "The end date for filtering landlords by modified date.",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "active-status",
            "in": "query",
            "description": "Optionally filter landlords by their active status. By default only active landlords will be returned.",
            "schema": {
              "enum": [
                "Active",
                "Archived",
                "All"
              ],
              "type": "string"
            }
          },
          {
            "name": "AgencyRef",
            "in": "header",
            "description": "A GUID required in the header of all API requests that grants access to an agent's data",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/Alto.PropertyManagement.Api.Models.Responses.PagedResults1_Alto.PropertyManagement.Api.Models.Responses.LandlordListItem"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Alto.PropertyManagement.Api.Models.Responses.PagedResults1_Alto.PropertyManagement.Api.Models.Responses.LandlordListItem"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Alto.PropertyManagement.Api.Models.Responses.PagedResults1_Alto.PropertyManagement.Api.Models.Responses.LandlordListItem"
                }
              }
            }
          }
        }
      }
    },
    "/management-events": {
      "get": {
        "tags": [
          "ManagementEvents"
        ],
        "summary": "Gets a list of management events",
        "description": "Retrieves a paginated list of management events for a given AgencyRef and all permissible branches.",
        "parameters": [
          {
            "name": "createdFrom",
            "in": "query",
            "description": "The start date for filtering management events by created date.",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "createdTo",
            "in": "query",
            "description": "The end date for filtering management events by created date.",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "modifiedFrom",
            "in": "query",
            "description": "The start date for filtering management events by modified date.",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "modifiedTo",
            "in": "query",
            "description": "The end date for filtering management events by modified date.",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "nextToken",
            "in": "query",
            "description": "Token used to retrieve the next page of results. This is returned in the response of the previous page.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "maxResults",
            "in": "query",
            "description": "Maximum number of results to return per page. Defaults to 100 if not specified.",
            "schema": {
              "maximum": 100,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "upcoming",
            "in": "query",
            "description": "When true, filters events to show only those that are either overdue or due within the period defined by their reminderDays field from today's date",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "status",
            "in": "query",
            "description": "List of event statuses to filter by. If not provided, events of all statuses will be returned.",
            "schema": {
              "type": "array",
              "items": {
                "enum": [
                  "Unspecified",
                  "Pending",
                  "InProgress",
                  "Complete",
                  "Cancelled",
                  "Expired"
                ],
                "type": "string"
              }
            }
          },
          {
            "name": "AgencyRef",
            "in": "header",
            "description": "A GUID required in the header of all API requests that grants access to an agent's data",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Alto.PropertyManagement.Api.Models.Responses.PagedResults1_Alto.PropertyManagement.Api.Models.Responses.ManagementEvent"
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Alto.PropertyManagement.Api.Models.Responses.ErrorsResponse"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "ManagementEvents"
        ],
        "summary": "Creates a new management event",
        "description": "Creates a new management event for the specified entity.",
        "parameters": [
          {
            "name": "AgencyRef",
            "in": "header",
            "description": "A GUID required in the header of all API requests that grants access to an agent's data",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Alto.PropertyManagement.Api.Models.Requests.CreateManagementEventRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Alto.PropertyManagement.Api.Models.Requests.CreateManagementEventRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/Alto.PropertyManagement.Api.Models.Requests.CreateManagementEventRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Success. Returns the newly created management event",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Alto.PropertyManagement.Api.Models.Responses.ManagementEvent"
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Alto.PropertyManagement.Api.Models.Responses.ErrorsResponse"
                }
              }
            }
          }
        }
      }
    },
    "/management-events/{eventId}": {
      "get": {
        "tags": [
          "ManagementEvents"
        ],
        "summary": "Gets a single management event by ID",
        "description": "Retrieves a specific management event by its ID for a given AgencyRef and all permissible branches.",
        "parameters": [
          {
            "name": "eventId",
            "in": "path",
            "description": "ID of the management event",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "AgencyRef",
            "in": "header",
            "description": "A GUID required in the header of all API requests that grants access to an agent's data",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Alto.PropertyManagement.Api.Models.Responses.ManagementEvent"
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Alto.PropertyManagement.Api.Models.Responses.ErrorsResponse"
                }
              }
            }
          },
          "404": {
            "description": "Management event not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Alto.PropertyManagement.Api.Models.Responses.ErrorsResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "ManagementEvents"
        ],
        "parameters": [
          {
            "name": "eventId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "AgencyRef",
            "in": "header",
            "description": "A GUID required in the header of all API requests that grants access to an agent's data",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SystemTextJsonPatch.JsonPatchDocument1_Alto.PropertyManagement.Api.Models.ManagementEventPatch"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/SystemTextJsonPatch.JsonPatchDocument1_Alto.PropertyManagement.Api.Models.ManagementEventPatch"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/SystemTextJsonPatch.JsonPatchDocument1_Alto.PropertyManagement.Api.Models.ManagementEventPatch"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Alto.PropertyManagement.Api.Models.Responses.ErrorsResponse"
                }
              }
            }
          }
        }
      }
    },
    "/suppliers": {
      "get": {
        "tags": [
          "Suppliers"
        ],
        "parameters": [
          {
            "name": "nextToken",
            "in": "query",
            "description": "Token used to retrieve the next page of results. This is returned in the response of the previous page.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "maxResults",
            "in": "query",
            "description": "Maximum number of results to return per page. Defaults to 100 if not specified.",
            "schema": {
              "maximum": 100,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "AgencyRef",
            "in": "header",
            "description": "A GUID required in the header of all API requests that grants access to an agent's data",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Alto.PropertyManagement.Api.Models.Responses.PagedResults1_Alto.PropertyManagement.Api.Models.Responses.Supplier"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Alto.PropertyManagement.Api.Models.Responses.ErrorsResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Alto.PropertyManagement.Api.Models.Responses.ErrorsResponse"
                }
              }
            }
          }
        }
      }
    },
    "/suppliers/{supplierId}": {
      "get": {
        "tags": [
          "Suppliers"
        ],
        "parameters": [
          {
            "name": "supplierId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "AgencyRef",
            "in": "header",
            "description": "A GUID required in the header of all API requests that grants access to an agent's data",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Alto.PropertyManagement.Api.Models.Responses.Supplier"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Alto.PropertyManagement.Api.Models.Responses.ErrorsResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Alto.PropertyManagement.Api.Models.Responses.ErrorsResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Alto.PropertyManagement.Api.Models.Responses.ErrorsResponse"
                }
              }
            }
          }
        }
      }
    },
    "/tenancies": {
      "get": {
        "tags": [
          "Tenancies"
        ],
        "summary": "List Tenancies",
        "description": "Retrieves a paginated list of tenancies, with optional filtering and inclusion of tenant data.",
        "parameters": [
          {
            "name": "next-token",
            "in": "query",
            "description": "Token used to retrieve the next page of results. This is returned in the response of the previous page.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "max-results",
            "in": "query",
            "description": "Maximum number of results to return per page. Defaults to 100 if not specified.",
            "schema": {
              "maximum": 100,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "created-from",
            "in": "query",
            "description": "The start date for filtering tenancies by created date.",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "created-to",
            "in": "query",
            "description": "The end date for filtering tenancies by created date.",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "modified-from",
            "in": "query",
            "description": "The start date for filtering tenancies by modified date.",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "modified-to",
            "in": "query",
            "description": "The end date for filtering tenancies by modified date.",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "start-date-from",
            "in": "query",
            "description": "The start date for filtering tenancies by start date.",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "start-date-to",
            "in": "query",
            "description": "The end date for filtering tenancies by start date.",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "target-vacate-date-from",
            "in": "query",
            "description": "The start date for filtering tenancies by target vacate date.",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "target-vacate-date-to",
            "in": "query",
            "description": "The end date for filtering tenancies by target vacate date.",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "first-full-rent-date-from",
            "in": "query",
            "description": "The start date for filtering tenancies by first full rent date.",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "first-full-rent-date-to",
            "in": "query",
            "description": "The end date for filtering tenancies by first full rent date.",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "notice-to-quit-date-from",
            "in": "query",
            "description": "The start date for filtering tenancies by notice to quit date.",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "notice-to-quit-date-to",
            "in": "query",
            "description": "The end date for filtering tenancies by notice to quit date.",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "end-date-from",
            "in": "query",
            "description": "The start date for filtering tenancies by end date.",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "end-date-to",
            "in": "query",
            "description": "The end date for filtering tenancies by end date.",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "renewal-date-from",
            "in": "query",
            "description": "The start date for filtering tenancies by renewal date.",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "renewal-date-to",
            "in": "query",
            "description": "The end date for filtering tenancies by renewal date.",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "include-tenants",
            "in": "query",
            "description": "Controls whether tenants should be included in the response for each tenancy result. By default tenants will not be included.",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "AgencyRef",
            "in": "header",
            "description": "A GUID required in the header of all API requests that grants access to an agent's data",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/Alto.PropertyManagement.Api.Models.Responses.PagedResults1_Alto.PropertyManagement.Api.Models.Responses.TenancyListItem"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Alto.PropertyManagement.Api.Models.Responses.PagedResults1_Alto.PropertyManagement.Api.Models.Responses.TenancyListItem"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Alto.PropertyManagement.Api.Models.Responses.PagedResults1_Alto.PropertyManagement.Api.Models.Responses.TenancyListItem"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/tenancies/{tenancyId}": {
      "get": {
        "tags": [
          "Tenancies"
        ],
        "parameters": [
          {
            "name": "tenancyId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "AgencyRef",
            "in": "header",
            "description": "A GUID required in the header of all API requests that grants access to an agent's data",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/Alto.PropertyManagement.Api.Models.Responses.TenancyLight"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Alto.PropertyManagement.Api.Models.Responses.TenancyLight"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Alto.PropertyManagement.Api.Models.Responses.TenancyLight"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Tenancies"
        ],
        "summary": "Updates a tenancy using JSON Patch",
        "parameters": [
          {
            "name": "tenancyId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "AgencyRef",
            "in": "header",
            "description": "A GUID required in the header of all API requests that grants access to an agent's data",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SystemTextJsonPatch.JsonPatchDocument1_Alto.PropertyManagement.Api.Models.TenancyPatch"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/SystemTextJsonPatch.JsonPatchDocument1_Alto.PropertyManagement.Api.Models.TenancyPatch"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/SystemTextJsonPatch.JsonPatchDocument1_Alto.PropertyManagement.Api.Models.TenancyPatch"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "No Content"
          },
          "404": {
            "description": "Not Found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/tenancies/{tenancyId}/charges": {
      "post": {
        "tags": [
          "Charges"
        ],
        "parameters": [
          {
            "name": "tenancyId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "AgencyRef",
            "in": "header",
            "description": "A GUID required in the header of all API requests that grants access to an agent's data",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "required": [
                  "chargeType"
                ],
                "type": "object",
                "properties": {
                  "tenantId": {
                    "type": "string",
                    "description": "The unique identifier for the tenant.",
                    "example": "123"
                  },
                  "excludeFromArrears": {
                    "type": "boolean",
                    "description": "Excludes the tenancy from arrears. If this is true then Alto.PropertyManagement.Api.Models.Requests.TenancyChargeRequest.ShowInArrearsAfterDays cannot be set. Defaults to false.",
                    "example": true
                  },
                  "showInArrearsAfterDays": {
                    "type": "integer",
                    "description": "The tenancy will only show in arrears after so many days. Can only receive a positive value if Alto.PropertyManagement.Api.Models.Requests.TenancyChargeRequest.ExcludeFromArrears is false or null. Defaults to 0.",
                    "format": "int32",
                    "example": 5
                  },
                  "sendDocs": {
                    "type": "boolean",
                    "description": "Should the docs be sent. Defaults to false.",
                    "example": true
                  },
                  "paymentMethod": {
                    "enum": [
                      "Unknown",
                      "Bacs",
                      "Cheque",
                      "Cash",
                      "StandingOrder",
                      "DirectDebit",
                      "Internet",
                      "CreditCard",
                      "DebitCard",
                      "Transfer",
                      "Journal",
                      "ReceiptImport"
                    ],
                    "type": "string",
                    "description": "Payment method.",
                    "example": "DirectDebit"
                  },
                  "paymentReference": {
                    "type": "string",
                    "description": "The payment reference.",
                    "example": "12345"
                  },
                  "raiseInAdvanceDays": {
                    "type": "integer",
                    "description": "Raise the payment in advance by this many days. Defaults to 0.",
                    "format": "int32",
                    "example": 3
                  },
                  "raiseEndDate": {
                    "type": "string",
                    "description": "Raise the charge up to and including this date.",
                    "format": "date-time",
                    "example": "2024-06-01T00:00:00.0000000+00:00"
                  },
                  "chargeType": {
                    "enum": [
                      "Maintenance",
                      "Deposit",
                      "DepositToLandlord",
                      "ReferencingFee",
                      "AdministrationFee",
                      "CheckInFee",
                      "CheckOutFee",
                      "TenancyAgreementFee",
                      "CapitalExpenditure",
                      "Cleaning",
                      "Electrical",
                      "Gardening",
                      "Plumbing",
                      "GasSafetyCheck",
                      "EPC",
                      "MaintenanceExpense",
                      "InsuranceBuildings",
                      "InsuranceContents",
                      "InsuranceRentProtection",
                      "UtilitiesWater",
                      "UtilitiesCouncilTax",
                      "UtilitiesElectricity",
                      "UtilitiesGas",
                      "Decorating",
                      "BankCharges",
                      "ServiceCharge",
                      "GroundRent",
                      "ElectricalSafetyCheck",
                      "Appliances",
                      "KeysLocksmith",
                      "Inventory",
                      "Furniture",
                      "PortableApplianceTest",
                      "LeadTest"
                    ],
                    "type": "string"
                  },
                  "supplierId": {
                    "type": "string"
                  },
                  "invoiceReference": {
                    "type": "string"
                  },
                  "totalNet": {
                    "minimum": 0.0,
                    "type": "number",
                    "format": "float"
                  },
                  "totalVat": {
                    "minimum": 0,
                    "type": "number",
                    "format": "float"
                  },
                  "vatRateType": {
                    "enum": [
                      "Exempt",
                      "Standard",
                      "Reduced",
                      "Zero",
                      "StandardROI"
                    ],
                    "type": "string"
                  },
                  "workOrderId": {
                    "type": "string"
                  },
                  "invoiceDocument": {
                    "type": "string",
                    "format": "binary"
                  },
                  "description": {
                    "type": "string"
                  },
                  "raiseImmediately": {
                    "type": "boolean"
                  },
                  "chargeDate": {
                    "type": "string",
                    "format": "date-time"
                  }
                }
              },
              "encoding": {
                "tenantId": {
                  "style": "form"
                },
                "excludeFromArrears": {
                  "style": "form"
                },
                "showInArrearsAfterDays": {
                  "style": "form"
                },
                "sendDocs": {
                  "style": "form"
                },
                "paymentMethod": {
                  "style": "form"
                },
                "paymentReference": {
                  "style": "form"
                },
                "raiseInAdvanceDays": {
                  "style": "form"
                },
                "raiseEndDate": {
                  "style": "form"
                },
                "chargeType": {
                  "style": "form"
                },
                "supplierId": {
                  "style": "form"
                },
                "invoiceReference": {
                  "style": "form"
                },
                "totalNet": {
                  "style": "form"
                },
                "totalVat": {
                  "style": "form"
                },
                "vatRateType": {
                  "style": "form"
                },
                "workOrderId": {
                  "style": "form"
                },
                "invoiceDocument": {
                  "style": "form"
                },
                "description": {
                  "style": "form"
                },
                "raiseImmediately": {
                  "style": "form"
                },
                "chargeDate": {
                  "style": "form"
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Alto.PropertyManagement.Api.Models.Responses.TenancyCharge"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Alto.PropertyManagement.Api.Models.Responses.ErrorsResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Alto.PropertyManagement.Api.Models.Responses.ErrorsResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Alto.PropertyManagement.Api.Models.Responses.ErrorsResponse"
                }
              }
            }
          }
        }
      }
    },
    "/tenancies/{tenancyId}/meter-readings": {
      "get": {
        "tags": [
          "Tenancies"
        ],
        "summary": "Get Meter Readings by Tenancy Id",
        "parameters": [
          {
            "name": "tenancyId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "AgencyRef",
            "in": "header",
            "description": "A GUID required in the header of all API requests that grants access to an agent's data",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Alto.PropertyManagement.Api.Models.Responses.TenancyUtilityReading"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Alto.PropertyManagement.Api.Models.Responses.TenancyUtilityReading"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Alto.PropertyManagement.Api.Models.Responses.TenancyUtilityReading"
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Tenancies"
        ],
        "summary": "Post tenancy meter reading",
        "parameters": [
          {
            "name": "tenancyId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "AgencyRef",
            "in": "header",
            "description": "A GUID required in the header of all API requests that grants access to an agent's data",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Alto.PropertyManagement.Api.Models.Requests.PostTenancyMeterReadingRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Alto.PropertyManagement.Api.Models.Requests.PostTenancyMeterReadingRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/Alto.PropertyManagement.Api.Models.Requests.PostTenancyMeterReadingRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/Alto.PropertyManagement.Api.Models.Responses.TenancyUtilityReading"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Alto.PropertyManagement.Api.Models.Responses.TenancyUtilityReading"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Alto.PropertyManagement.Api.Models.Responses.TenancyUtilityReading"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/Alto.PropertyManagement.Api.Models.Responses.ErrorsResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Alto.PropertyManagement.Api.Models.Responses.ErrorsResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Alto.PropertyManagement.Api.Models.Responses.ErrorsResponse"
                }
              }
            }
          },
          "409": {
            "description": "Conflict",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/Alto.PropertyManagement.Api.Models.Responses.ErrorsResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Alto.PropertyManagement.Api.Models.Responses.ErrorsResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Alto.PropertyManagement.Api.Models.Responses.ErrorsResponse"
                }
              }
            }
          }
        }
      }
    },
    "/tenancies/{tenancyId}/meter-readings/{utilityType}": {
      "patch": {
        "tags": [
          "Tenancies"
        ],
        "summary": "Patch tenancy meter reading by type of utility.",
        "parameters": [
          {
            "name": "tenancyId",
            "in": "path",
            "description": "The id of the tenancy whose meter reading is being set.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "utilityType",
            "in": "path",
            "description": "One of the types provided by the UtilityType on a retrieved meter reading or returned in the response when POSTing a new value.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "AgencyRef",
            "in": "header",
            "description": "A GUID required in the header of all API requests that grants access to an agent's data",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SystemTextJsonPatch.JsonPatchDocument1_Alto.PropertyManagement.Api.Models.TenancyUtilityReadingPatch"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/SystemTextJsonPatch.JsonPatchDocument1_Alto.PropertyManagement.Api.Models.TenancyUtilityReadingPatch"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/SystemTextJsonPatch.JsonPatchDocument1_Alto.PropertyManagement.Api.Models.TenancyUtilityReadingPatch"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "Returns no content on a successful update to a tenancy's meter reading for the specified utilityType."
          },
          "404": {
            "description": "The tenancy or utility type was not found.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "400": {
            "description": "Invalid parameters provided.",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/tenancies/{tenancyId}/tenantIds": {
      "get": {
        "tags": [
          "Tenancies"
        ],
        "parameters": [
          {
            "name": "tenancyId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "AgencyRef",
            "in": "header",
            "description": "A GUID required in the header of all API requests that grants access to an agent's data",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/Alto.PropertyManagement.Api.Models.DTOs.ItemCollection1_Alto.PropertyManagement.Api.Models.Responses.TenantIdData"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Alto.PropertyManagement.Api.Models.DTOs.ItemCollection1_Alto.PropertyManagement.Api.Models.Responses.TenantIdData"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Alto.PropertyManagement.Api.Models.DTOs.ItemCollection1_Alto.PropertyManagement.Api.Models.Responses.TenantIdData"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/work-orders": {
      "post": {
        "tags": [
          "WorkOrders"
        ],
        "summary": "Post Work Order",
        "description": "Create a new Work Order in Alto",
        "parameters": [
          {
            "name": "AgencyRef",
            "in": "header",
            "description": "A GUID required in the header of all API requests that grants access to an agent's data",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "Request for the new Work Order",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Alto.PropertyManagement.Api.Models.Requests.CreateWorkOrderRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Alto.PropertyManagement.Api.Models.Requests.CreateWorkOrderRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/Alto.PropertyManagement.Api.Models.Requests.CreateWorkOrderRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Returns the new Work Order",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Alto.PropertyManagement.Api.Models.Responses.WorkOrder"
                }
              }
            }
          },
          "400": {
            "description": "Validation errors e.g. \"Invalid ReportedDate\"",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Alto.PropertyManagement.Api.Models.Responses.ErrorsResponse"
                }
              }
            }
          }
        }
      }
    },
    "/work-orders/{id}": {
      "get": {
        "tags": [
          "WorkOrders"
        ],
        "summary": "Gets Work Order by Id",
        "description": "Retrieves a Work Order by id for a given AgencyRef and all permissable branches.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Id of the Work Order",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "AgencyRef",
            "in": "header",
            "description": "A GUID required in the header of all API requests that grants access to an agent's data",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Alto.PropertyManagement.Api.Models.Responses.WorkOrder"
                }
              }
            }
          },
          "404": {
            "description": "Work Order not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Alto.PropertyManagement.Api.Models.Responses.ErrorsResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "WorkOrders"
        ],
        "summary": "Patch Work Order by Id",
        "description": "Update selected fields in the Work Order with the given id",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "Id of the Work Order",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "AgencyRef",
            "in": "header",
            "description": "A GUID required in the header of all API requests that grants access to an agent's data",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SystemTextJsonPatch.JsonPatchDocument1_Alto.PropertyManagement.Api.Models.WorkOrderPatch"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/SystemTextJsonPatch.JsonPatchDocument1_Alto.PropertyManagement.Api.Models.WorkOrderPatch"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/SystemTextJsonPatch.JsonPatchDocument1_Alto.PropertyManagement.Api.Models.WorkOrderPatch"
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "Work Order updated"
          },
          "400": {
            "description": "Validation errors e.g. \"Invalid Priority\"",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Alto.PropertyManagement.Api.Models.Responses.ErrorsResponse"
                }
              }
            }
          },
          "404": {
            "description": "Work Order not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Alto.PropertyManagement.Api.Models.Responses.ErrorsResponse"
                }
              }
            }
          }
        }
      }
    },
    "/sales-progressions": {
      "get": {
        "tags": [
          "SalesProgression"
        ],
        "parameters": [
          {
            "name": "PropertyId",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "BranchId",
            "in": "query",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              }
            }
          },
          {
            "name": "ConveyancerId",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "NegotiatorId",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "Sort",
            "in": "query",
            "schema": {
              "$ref": "#/components/schemas/SortType"
            }
          },
          {
            "name": "StatusId",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "FTSQuery",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "NextToken",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "MaxResults",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/AgreedOfferPagedResults"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AgreedOfferPagedResults"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/AgreedOfferPagedResults"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error"
          }
        }
      }
    },
    "/sales-progressions/{offerId}": {
      "get": {
        "tags": [
          "SalesProgression"
        ],
        "parameters": [
          {
            "name": "offerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/AgreedOfferWithMilestones"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AgreedOfferWithMilestones"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/AgreedOfferWithMilestones"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error"
          }
        }
      }
    },
    "/voidswitching/referrals/{referralId}": {
      "patch": {
        "tags": [
          "Referral"
        ],
        "parameters": [
          {
            "name": "referralId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "AgencyRef",
            "in": "header",
            "description": "",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchReferralRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchReferralRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PatchReferralRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "CreateAppointmentData": {
        "type": "object",
        "properties": {
          "appointmentId": {
            "type": "integer",
            "description": "The unique identifier of the viewing appointment that has been created",
            "format": "int64",
            "example": 123456
          }
        },
        "additionalProperties": false
      },
      "DiaryEventSubType": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "The unique identifier of the general appointment sub-type",
            "format": "int32"
          },
          "displayName": {
            "type": "string",
            "description": "The name of the general appointment sub-type",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ExternalPartnerAppointment": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "The unique identifier of the appointment",
            "format": "int64",
            "example": 76543
          },
          "instanceId": {
            "type": "integer",
            "description": "The numeric instance of an appointment; this value is only greater than zero for general appointment types that are marked as recurring and represents the xth instance of a given appointment in a recurring series.",
            "format": "int32",
            "example": 0
          },
          "type": {
            "enum": [
              "Unspecified",
              "General",
              "Valuation",
              "Viewing",
              "Communication",
              "InternalMessage",
              "Offer",
              "AgreedOffer",
              "Note",
              "AuditedChange",
              "StickyNote",
              "FinancialTransaction",
              "Marketing",
              "Creation",
              "SyncedEmail",
              "AccountingTransaction",
              "WorkOrderEvent",
              "TenancyEvent",
              "FollowUp",
              "PersonalInformationRequest",
              "TdsEvent",
              "SigningRequest",
              "MaintenanceRequest",
              "DocumentSharing",
              "ConveyancerReferral"
            ],
            "type": "string",
            "description": "The type of the appointment",
            "example": "Viewing"
          },
          "startDate": {
            "type": "string",
            "description": "The appointment start date and time in ISO 8601 format",
            "format": "date-time",
            "example": "2024-11-01T14:07:17.0000000+00:00"
          },
          "endDate": {
            "type": "string",
            "description": "The appointment end date and time in ISO 8601 format",
            "format": "date-time",
            "example": "2024-11-01T14:07:17.0000000+00:00"
          },
          "createdDate": {
            "type": "string",
            "description": "The appointment's creation date and time in ISO 8601 format",
            "format": "date-time",
            "example": "2024-11-01T14:07:17.0000000+00:00"
          },
          "modifiedDate": {
            "type": "string",
            "description": "The appointment's last modified date and time in ISO 8601 format",
            "format": "date-time",
            "example": "2024-11-01T14:07:17.0000000+00:00"
          },
          "title": {
            "type": "string",
            "description": "The title of the appointment. For general appointments this refers to the appointment entry type",
            "nullable": true,
            "example": "FS appointment"
          },
          "status": {
            "enum": [
              "Unspecified",
              "NotYetBooked",
              "Active",
              "CancelledByOffice",
              "CancelledByOwner",
              "CancelledByApplicant",
              "CancelledByContact"
            ],
            "type": "string",
            "description": "The status of the appointment",
            "example": "Active"
          },
          "isCancelled": {
            "type": "boolean",
            "description": "Indicates whether the appointment has a cancelled status; An appointment is only cancelled if the appointment status is not set to either Active or NotYetBooked",
            "example": false
          },
          "negotiators": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ExternalPartnerNegotiator"
            },
            "description": "A collection of negotiators associated with the appointment; if there are no negotiators, then returns an empty collection",
            "nullable": true
          },
          "properties": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ExternalPartnerProperty"
            },
            "description": "A collection of properties that are associated with the appointment; if there are no properties, then returns an empty collection",
            "nullable": true
          },
          "contacts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ExternalPartnerContact"
            },
            "description": "A collection of contacts that are associated with the appointment; if there are no contacts, then returns an empty collection",
            "nullable": true
          },
          "viewingDetails": {
            "$ref": "#/components/schemas/ExternalPartnerViewingDetails"
          }
        },
        "additionalProperties": false
      },
      "ExternalPartnerAppointmentPagedResponse": {
        "type": "object",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/Meta"
          },
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ExternalPartnerAppointment"
            },
            "description": "The collection of items in the response.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents a paged response containing metadata and a collection of items."
      },
      "ExternalPartnerContact": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "The unique identifier of the contact",
            "nullable": true,
            "example": "123456"
          },
          "links": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Link"
            },
            "description": "Links to related contact.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ExternalPartnerNegotiator": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "The unique identifier of the negotiator",
            "nullable": true,
            "example": "45678"
          },
          "links": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Link"
            },
            "description": "Links to related negotiator;\nNOTE: This is currently set to an empty collection as no api is currently available for retrieving negotiator details",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ExternalPartnerProperty": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "The unique identifier of the property",
            "nullable": true,
            "example": "112233"
          },
          "links": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Link"
            },
            "description": "Links to related property.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ExternalPartnerUserAppointments": {
        "type": "object",
        "properties": {
          "negotiatorId": {
            "type": "integer",
            "description": "The unique identifier of the negotiator",
            "format": "int32",
            "example": 67890
          },
          "appointments": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ExternalPartnerAppointment"
            },
            "description": "A collection of appointments belonging to the negotiator; if there are no appointments, then returns an empty collection",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ExternalPartnerUserAppointmentsPagedResponse": {
        "type": "object",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/Meta"
          },
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ExternalPartnerUserAppointments"
            },
            "description": "The collection of items in the response.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents a paged response containing metadata and a collection of items."
      },
      "ExternalPartnerViewingDetails": {
        "type": "object",
        "properties": {
          "internalNotes": {
            "type": "string",
            "description": "The internal notes of the appointment.",
            "nullable": true,
            "example": "Internal notes"
          },
          "applicantFeedback": {
            "type": "string",
            "description": "The feedback of the appointment.",
            "nullable": true,
            "example": "Feedback"
          }
        },
        "additionalProperties": false
      },
      "GeneralAppointmentPatchJsonPatchDocument": {
        "type": "array",
        "items": {
          "$ref": "#/components/schemas/GeneralAppointmentPatchOperation"
        },
        "description": "Array of operations to perform"
      },
      "GeneralAppointmentPatchOperation": {
        "type": "object",
        "properties": {
          "op": {
            "enum": [
              "replace"
            ],
            "type": "string"
          },
          "value": {
            "type": "string"
          },
          "path": {
            "enum": [
              "/startDate",
              "/endDate",
              "/negotiatorIds",
              "/status"
            ],
            "type": "string"
          }
        },
        "example": "[ { \"path\": \"/startDate\", \"op\": \"replace\", \"value\": \"2024-05-27T10:30:00\" }, { \"path\": \"/negotiatorIds\", \"op\": \"replace\", \"value\": [47141, 48734] }, { \"path\": \"/status\", \"op\": \"replace\", \"value\": \"CancelledByOffice\" } ]"
      },
      "GeneralAppointmentRequest": {
        "required": [
          "endDate",
          "negotiatorIds",
          "startDate",
          "subTypeId"
        ],
        "type": "object",
        "properties": {
          "negotiatorIds": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "description": "Required: The unique identifer of the negotiator(s)",
            "example": [
              356773,
              356912
            ]
          },
          "branchId": {
            "type": "integer",
            "description": "Optional: The branch in which to record the appointment diary event.\nWhen omitted, defaults to the first negotiator's default branch.",
            "format": "int32",
            "nullable": true,
            "example": 12345
          },
          "contactIds": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "description": "Optional: The unique identifer of the applicant(s)",
            "nullable": true,
            "example": [
              7891011,
              7891025
            ]
          },
          "propertyIds": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "description": "Optional: The unique identifer of the property(s)",
            "nullable": true,
            "example": [
              1244589,
              1244676
            ]
          },
          "urgent": {
            "type": "boolean",
            "description": "Optional: Set the Urgent flag for the appointment being created. If ommitted this will default to false.",
            "example": false
          },
          "startDate": {
            "type": "string",
            "description": "Required: The start date and time in ISO 8601 format of the appointment being created.",
            "format": "date-time",
            "example": "2023-01-01T10:15:00.0000000+00:00"
          },
          "endDate": {
            "type": "string",
            "description": "Required: The end date and time in ISO 8601 format of the appointment being created.",
            "format": "date-time",
            "example": "2023-01-01T10:30:00.0000000+00:00"
          },
          "subTypeId": {
            "type": "integer",
            "description": "Required: The sub type of the appointment being created.",
            "format": "int32",
            "example": 123
          },
          "location": {
            "type": "string",
            "description": "Optional: The location where the appointment being created will be held.",
            "nullable": true,
            "example": "Meeting room A"
          },
          "notes": {
            "type": "string",
            "description": "Optional: Additional notes to accompany the appointment being created.",
            "nullable": true,
            "example": "Here are some optional notes"
          }
        },
        "additionalProperties": false
      },
      "Link": {
        "type": "object",
        "properties": {
          "href": {
            "type": "string",
            "nullable": true
          },
          "rel": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Meta": {
        "type": "object",
        "properties": {
          "nextToken": {
            "type": "string",
            "nullable": true
          },
          "previousToken": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ProblemDetails": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "nullable": true
          },
          "title": {
            "type": "string",
            "nullable": true
          },
          "status": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "detail": {
            "type": "string",
            "nullable": true
          },
          "instance": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": { }
      },
      "ViewingPatchJsonPatchDocument": {
        "type": "array",
        "items": {
          "$ref": "#/components/schemas/ViewingPatchOperation"
        },
        "description": "Array of operations to perform"
      },
      "ViewingPatchOperation": {
        "type": "object",
        "properties": {
          "op": {
            "enum": [
              "replace"
            ],
            "type": "string"
          },
          "value": {
            "type": "string"
          },
          "path": {
            "enum": [
              "/status",
              "/startDate",
              "/endDate",
              "/negotiatorId",
              "/notes",
              "/applicantFeedback",
              "/internalNotes"
            ],
            "type": "string"
          }
        },
        "example": "[ { \"path\": \"/status\", \"op\": \"replace\", \"value\": \"CancelledByOffice\" }, { \"path\": \"/startDate\", \"op\": \"replace\", \"value\": \"2024-05-27T10:30:00\" }, { \"path\": \"/negotiatorId\", \"op\": \"replace\", \"value\": 47141 } ]"
      },
      "ViewingRequest": {
        "required": [
          "applicantIds",
          "endDate",
          "negotiatorId",
          "propertyId",
          "startDate"
        ],
        "type": "object",
        "properties": {
          "negotiatorId": {
            "maximum": 2147483647,
            "minimum": 0,
            "type": "integer",
            "description": "Required: The unique identifer of the negotiator",
            "format": "int32",
            "example": 123456
          },
          "branchId": {
            "type": "integer",
            "description": "Optional: The branch in which to record the viewing diary event.\nWhen omitted, defaults to the negotiator's default branch.",
            "format": "int32",
            "nullable": true,
            "example": 12345
          },
          "applicantIds": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "description": "Required: The unique identifer of the applicant(s)",
            "example": [
              7891011,
              7891025
            ]
          },
          "propertyId": {
            "maximum": 2147483647,
            "minimum": 0,
            "type": "integer",
            "description": "Required: The unique identifer of the property",
            "format": "int32",
            "example": 121314
          },
          "startDate": {
            "type": "string",
            "description": "Required: The start date and time in ISO 8601 format of the viewing appointment to be created.",
            "format": "date-time",
            "example": "2023-01-01T10:15:00.0000000+00:00"
          },
          "endDate": {
            "type": "string",
            "description": "Required: The end date and time in ISO 8601 format of the viewing appointment to be created.",
            "format": "date-time",
            "example": "2023-01-01T10:30:00.0000000+00:00"
          },
          "notes": {
            "type": "string",
            "description": "Optional: Additional notes to accompany the viewing appointment being created.",
            "nullable": true,
            "example": "Here are some optional notes"
          },
          "isConfirmed": {
            "type": "boolean",
            "description": "Optional: Marks viewing as confirmed; this will NOT send out confirmation emails and texts\nDefault if not set: false",
            "example": true
          },
          "meetingPlaceType": {
            "enum": [
              "Unspecified",
              "AtTheOffice",
              "AtTheProperty"
            ],
            "type": "string",
            "description": "Optional: Sets where the negotiator will meet for the viewing;\nDefault if not set: AtTheProperty",
            "example": "Unspecified"
          }
        },
        "additionalProperties": false
      },
      "Alto.Appraisal.Api.Models.Requests.CreateAppraisalRequest": {
        "type": "object",
        "properties": {
          "propertyId": {
            "type": "string",
            "description": "[Required] The unique identifier of the property to associate to the appraisal",
            "nullable": true
          },
          "startDate": {
            "type": "string",
            "description": "[Required] The start date and time of the appraisal",
            "default": "2023-12-11T15:15:40",
            "nullable": true
          },
          "endDate": {
            "type": "string",
            "description": "[Required] The end date and time of the appraisal",
            "default": "2023-12-11T15:45:40",
            "nullable": true
          },
          "appraiserIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "[Required] The unique identifiers of the appraisers, maximum of two appraisers",
            "nullable": true
          },
          "type": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Alto.Services.SDK.Enums.DiaryEvent.Valuation.ValuationType"
              }
            ],
            "description": "[Required] The valuation type, please see <a href=\"https://developers.vebraalto.com/alto-data/appraisal-types\">Appraisal Types</a>"
          },
          "notes": {
            "type": "string",
            "description": "[Optional] Diary notes for the appraisal",
            "nullable": true
          },
          "reminderMinutes": {
            "type": "integer",
            "description": "[Optional] Reminder minutes prior to the appraisal",
            "format": "int32"
          },
          "reminderDeliveryType": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Alto.Services.SDK.Enums.DiaryEvent.DiaryReminderDeliveryType"
              }
            ],
            "description": "[Optional] Type of reminder when reminder minutes provided"
          },
          "requestingUserId": {
            "type": "string",
            "description": "[Required] The unique identifier of the requesting user",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Alto.Services.SDK.Enums.DiaryEvent.DiaryReminderDeliveryType": {
        "enum": [
          "Unspecified",
          "Screen",
          "SMS",
          "Both"
        ],
        "type": "string"
      },
      "Alto.Services.SDK.Enums.DiaryEvent.Valuation.ValuationType": {
        "enum": [
          "Unspecified",
          "FreeMarketAppraisal",
          "BuildingSociety",
          "ABIData",
          "AgencyScheme",
          "Agricultural",
          "InsuranceCompany",
          "Bank",
          "ChargeableValuation",
          "Commercial",
          "CompulsoryPurchaseOrder",
          "Development",
          "Divorce",
          "FamilyDivision",
          "FormalMarketValuation",
          "HomebuyersPrivate",
          "HomebuyersReport",
          "Industrial",
          "Matrimonial",
          "PartExchange",
          "Probate",
          "ReMortgage",
          "Rental",
          "Repossession",
          "RevenueAndCustoms",
          "RightToBuy"
        ],
        "type": "string"
      },
      "SystemTextJsonPatch.JsonPatchDocument1_Alto.Appraisal.Api.Models.Requests.PatchAppraisalRequest": {
        "type": "array",
        "items": {
          "$ref": "#/components/schemas/SystemTextJsonPatch.Operations.Operation1_Alto.Appraisal.Api.Models.Requests.PatchAppraisalRequest"
        },
        "description": "Array of operations to perform"
      },
      "SystemTextJsonPatch.Operations.Operation1_Alto.Appraisal.Api.Models.Requests.PatchAppraisalRequest": {
        "anyOf": [
          {
            "title": "Sale Upper Amount",
            "type": "object",
            "properties": {
              "op": {
                "enum": [
                  "replace",
                  "test"
                ],
                "type": "string"
              },
              "value": {
                "type": "number",
                "example": "100000"
              },
              "path": {
                "type": "string",
                "default": "/SaleUpperAmount"
              }
            },
            "description": "The valuer's upper estimated sale amount. For property sales only.",
            "example": "\n{ \n    \"path\": \"/SaleUpperAmount\", \n    \"op\": \"replace\", \n    \"value\": 100000\n}"
          },
          {
            "title": "Sale Lower Amount",
            "type": "object",
            "properties": {
              "op": {
                "enum": [
                  "replace",
                  "test"
                ],
                "type": "string"
              },
              "value": {
                "type": "number",
                "example": "100000"
              },
              "path": {
                "type": "string",
                "default": "/SaleLowerAmount"
              }
            },
            "description": "The valuer's lower estimated sale amount. For property sales only.",
            "example": "\n{ \n    \"path\": \"/SaleLowerAmount\", \n    \"op\": \"replace\", \n    \"value\": 100000\n}"
          },
          {
            "title": "Sale Owner Amount",
            "type": "object",
            "properties": {
              "op": {
                "enum": [
                  "replace",
                  "test"
                ],
                "type": "string"
              },
              "value": {
                "type": "number",
                "example": "100000"
              },
              "path": {
                "type": "string",
                "default": "/SaleOwnerAmount"
              }
            },
            "description": "The vendor's target sale amount. For property sales only.",
            "example": "\n{ \n    \"path\": \"/SaleOwnerAmount\", \n    \"op\": \"replace\", \n    \"value\": 100000\n}"
          },
          {
            "title": "Sale Proposed Amount",
            "type": "object",
            "properties": {
              "op": {
                "enum": [
                  "replace",
                  "test"
                ],
                "type": "string"
              },
              "value": {
                "type": "number",
                "example": "100000"
              },
              "path": {
                "type": "string",
                "default": "/SaleProposedAmount"
              }
            },
            "description": "The valuer's proposed sale amount. For property sales only.",
            "example": "\n{ \n    \"path\": \"/SaleProposedAmount\", \n    \"op\": \"replace\", \n    \"value\": 100000\n}"
          },
          {
            "title": "Sale Fee Quoted",
            "type": "object",
            "properties": {
              "op": {
                "enum": [
                  "replace",
                  "test"
                ],
                "type": "string"
              },
              "value": {
                "type": "string",
                "example": "\"2000\""
              },
              "path": {
                "type": "string",
                "default": "/SaleFeeQuoted"
              }
            },
            "description": "The fee expressed as an amount. For property sales only.",
            "example": "\n{ \n    \"path\": \"/SaleFeeQuoted\", \n    \"op\": \"replace\", \n    \"value\": \"2000\"\n}"
          },
          {
            "title": "Sale Commission",
            "type": "object",
            "properties": {
              "op": {
                "enum": [
                  "replace",
                  "test"
                ],
                "type": "string"
              },
              "value": {
                "type": "number",
                "example": "2.0"
              },
              "path": {
                "type": "string",
                "default": "/SaleCommission"
              }
            },
            "description": "The fee expressed as a sale price percentage. For property sales only.",
            "example": "\n{ \n    \"path\": \"/SaleCommission\", \n    \"op\": \"replace\", \n    \"value\": 2.0\n}"
          },
          {
            "title": "Sale Price Qualifier",
            "type": "object",
            "properties": {
              "op": {
                "enum": [
                  "replace",
                  "test"
                ],
                "type": "string"
              },
              "value": {
                "enum": [
                  "Unknown",
                  "OffersInTheRegionOf",
                  "NoOffers",
                  "AskingPrice",
                  "OffersOver",
                  "AuctionGuide",
                  "PriceGuide",
                  "InformalTender",
                  "OffersInExcessOf",
                  "PerSqFoot",
                  "Price",
                  "PricesFrom",
                  "GuidePrice"
                ],
                "type": "string",
                "example": "Unknown"
              },
              "path": {
                "type": "string",
                "default": "/SalePriceQualifier"
              }
            },
            "description": "The Sale Price Qualifier. For property sales only.",
            "example": "\n{ \n    \"path\": \"/SalePriceQualifier\", \n    \"op\": \"add\", \n    \"value\": \"Unknown\" \n}"
          },
          {
            "title": "Rent Frequency",
            "type": "object",
            "properties": {
              "op": {
                "enum": [
                  "replace",
                  "test"
                ],
                "type": "string"
              },
              "value": {
                "enum": [
                  "Unknown",
                  "Weekly",
                  "Monthly",
                  "Quarterly",
                  "Yearly",
                  "AdHoc",
                  "Daily",
                  "Fortnightly",
                  "FourWeekly",
                  "MonthlyOnLastDay",
                  "QuarterlyOnQuarterDays",
                  "HalfYearly",
                  "HalfYearlyOnQuarterDays"
                ],
                "type": "string",
                "example": "0"
              },
              "path": {
                "type": "string",
                "default": "/RentFrequency"
              }
            },
            "description": "The rent frequency. For property rentals only.",
            "example": "\n{ \n    \"path\": \"/RentFrequency\", \n    \"op\": \"add\", \n    \"value\": \"0\" \n}"
          },
          {
            "title": "Rent Lower Amount",
            "type": "object",
            "properties": {
              "op": {
                "enum": [
                  "replace",
                  "test"
                ],
                "type": "string"
              },
              "value": {
                "type": "number",
                "example": "1000"
              },
              "path": {
                "type": "string",
                "default": "/RentLowerAmount"
              }
            },
            "description": "The valuer's lower estimated rent amount. For property rentals only.",
            "example": "\n{ \n    \"path\": \"/RentLowerAmount\", \n    \"op\": \"replace\", \n    \"value\": 1000\n}"
          },
          {
            "title": "Rent Upper Amount",
            "type": "object",
            "properties": {
              "op": {
                "enum": [
                  "replace",
                  "test"
                ],
                "type": "string"
              },
              "value": {
                "type": "number",
                "example": "1000"
              },
              "path": {
                "type": "string",
                "default": "/RentUpperAmount"
              }
            },
            "description": "The valuer's upper estimated rent amount. For property rentals only.",
            "example": "\n{ \n    \"path\": \"/RentUpperAmount\", \n    \"op\": \"replace\", \n    \"value\": 1000\n}"
          },
          {
            "title": "Rent Owner Amount",
            "type": "object",
            "properties": {
              "op": {
                "enum": [
                  "replace",
                  "test"
                ],
                "type": "string"
              },
              "value": {
                "type": "number",
                "example": "1000"
              },
              "path": {
                "type": "string",
                "default": "/RentOwnerAmount"
              }
            },
            "description": "The landlord's target rent amount. For property rentals only.",
            "example": "\n{ \n    \"path\": \"/RentOwnerAmount\", \n    \"op\": \"replace\", \n    \"value\": 1000\n}"
          },
          {
            "title": "Rent Proposed Amount",
            "type": "object",
            "properties": {
              "op": {
                "enum": [
                  "replace",
                  "test"
                ],
                "type": "string"
              },
              "value": {
                "type": "number",
                "example": "1000"
              },
              "path": {
                "type": "string",
                "default": "/RentProposedAmount"
              }
            },
            "description": "The valuer's proposed rent amount. For property rentals only.",
            "example": "\n{ \n    \"path\": \"/RentProposedAmount\", \n    \"op\": \"replace\", \n    \"value\": 1000\n}"
          },
          {
            "title": "Rent Management Commission",
            "type": "object",
            "properties": {
              "op": {
                "enum": [
                  "replace",
                  "test"
                ],
                "type": "string"
              },
              "value": {
                "type": "number",
                "example": "2.0"
              },
              "path": {
                "type": "string",
                "default": "/RentManagementCommission"
              }
            },
            "description": "The recurring management fee expressed as a rent amount percentage. For property rentals only.",
            "example": "\n{ \n    \"path\": \"/RentManagementCommission\", \n    \"op\": \"replace\", \n    \"value\": 2.0\n}"
          },
          {
            "title": "Rent Recurring Fee Fixed",
            "type": "object",
            "properties": {
              "op": {
                "enum": [
                  "replace",
                  "test"
                ],
                "type": "string"
              },
              "value": {
                "type": "number",
                "example": "2.0"
              },
              "path": {
                "type": "string",
                "default": "/RentRecurringFeeFixed"
              }
            },
            "description": "The recurring management fee expressed as a rent amount. For property rentals only.",
            "example": "\n{ \n    \"path\": \"/RentRecurringFeeFixed\", \n    \"op\": \"replace\", \n    \"value\": 2.0\n}"
          },
          {
            "title": "Rent Recurring Fee Fixed Frequency",
            "type": "object",
            "properties": {
              "op": {
                "enum": [
                  "replace",
                  "test"
                ],
                "type": "string"
              },
              "value": {
                "enum": [
                  "Unknown",
                  "Weekly",
                  "Monthly",
                  "Quarterly",
                  "Yearly",
                  "AdHoc",
                  "Daily",
                  "Fortnightly",
                  "FourWeekly",
                  "MonthlyOnLastDay",
                  "QuarterlyOnQuarterDays",
                  "HalfYearly",
                  "HalfYearlyOnQuarterDays"
                ],
                "type": "string",
                "example": "Unknown"
              },
              "path": {
                "type": "string",
                "default": "/RentRecurringFeeFixedFrequency"
              }
            },
            "description": "The management fee payment frequency. For property rentals only.",
            "example": "\n{ \n    \"path\": \"/RentRecurringFeeFixedFrequency\", \n    \"op\": \"add\", \n    \"value\": \"Unknown\" \n}"
          },
          {
            "title": "Rent Price Qualifier",
            "type": "object",
            "properties": {
              "op": {
                "enum": [
                  "replace",
                  "test"
                ],
                "type": "string"
              },
              "value": {
                "enum": [
                  "Unspecified",
                  "PerWeek",
                  "PerMonth",
                  "PerAnnum"
                ],
                "type": "string",
                "example": "Unspecified"
              },
              "path": {
                "type": "string",
                "default": "/RentPriceQualifier"
              }
            },
            "description": "The Rent Price Qualifier. For property rentals only.",
            "example": "\n{ \n    \"path\": \"/RentPriceQualifier\", \n    \"op\": \"add\", \n    \"value\": \"Unspecified\" \n}"
          }
        ]
      },
      "Address": {
        "type": "object",
        "properties": {
          "subDwelling": {
            "type": "string",
            "nullable": true
          },
          "nameNumber": {
            "type": "string",
            "nullable": true
          },
          "street": {
            "type": "string",
            "nullable": true
          },
          "locality": {
            "type": "string",
            "nullable": true
          },
          "town": {
            "type": "string",
            "nullable": true
          },
          "county": {
            "type": "string",
            "nullable": true
          },
          "postcode": {
            "type": "string",
            "nullable": true
          },
          "countryCode": {
            "type": "string",
            "nullable": true
          },
          "uprn": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ClientData": {
        "type": "object",
        "properties": {
          "contactId": {
            "type": "integer",
            "format": "int32"
          },
          "groupId": {
            "type": "integer",
            "format": "int32"
          },
          "branchId": {
            "type": "integer",
            "format": "int32"
          },
          "people": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Person"
            },
            "nullable": true
          },
          "address": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Address"
              }
            ],
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ClientDataItemCollection": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ClientData"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "EmailAddress": {
        "type": "object",
        "properties": {
          "preferenceOrder": {
            "type": "integer",
            "format": "int32"
          },
          "address": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Name": {
        "type": "object",
        "properties": {
          "title": {
            "type": "string",
            "nullable": true
          },
          "forename": {
            "type": "string",
            "nullable": true
          },
          "surname": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Person": {
        "type": "object",
        "properties": {
          "personNo": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Name"
              }
            ],
            "nullable": true
          },
          "phoneNumbers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Phone"
            },
            "nullable": true
          },
          "emailAddresses": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EmailAddress"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Phone": {
        "type": "object",
        "properties": {
          "preferenceOrder": {
            "type": "integer",
            "format": "int32"
          },
          "type": {
            "type": "string",
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "number": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Branch": {
        "type": "object",
        "properties": {
          "branchId": {
            "type": "string",
            "description": "The ID of the branch.",
            "nullable": true
          },
          "createdAt": {
            "type": "string",
            "description": "The date and time the branch was created.",
            "format": "date-time",
            "nullable": true
          },
          "modifiedAt": {
            "type": "string",
            "description": "The date and time the branch was last modified.",
            "format": "date-time",
            "nullable": true
          },
          "name": {
            "type": "string",
            "description": "The name of the branch.",
            "nullable": true
          },
          "address": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Address"
              }
            ],
            "description": "The branch address.",
            "nullable": true
          },
          "status": {
            "allOf": [
              {
                "$ref": "#/components/schemas/BranchStatus"
              }
            ],
            "description": "The status of the branch."
          },
          "defaultMarket": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PropertyRecordType"
              }
            ],
            "description": "The default market of the branch."
          }
        },
        "additionalProperties": false,
        "description": "Represents a branch."
      },
      "BranchPagedResponse": {
        "type": "object",
        "properties": {
          "meta": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ],
            "nullable": true
          },
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Branch"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "BranchStatus": {
        "enum": [
          "Unknown",
          "Active",
          "Inactive"
        ],
        "type": "string"
      },
      "Negotiator": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "The id of the negotiator.",
            "nullable": true
          },
          "title": {
            "type": "string",
            "description": "The title of the negotiator.",
            "nullable": true
          },
          "name": {
            "type": "string",
            "description": "The name of the negotiator.",
            "nullable": true
          },
          "email": {
            "type": "string",
            "description": "The email of the negotiator.",
            "nullable": true
          },
          "loginName": {
            "type": "string",
            "description": "The login name of the negotiator. It usually (but not always) contains the individual user's email address.",
            "nullable": true
          },
          "phoneNumber": {
            "type": "string",
            "description": "All the phone numbers of the negotiator.",
            "nullable": true
          },
          "role": {
            "type": "string",
            "description": "The role or job title of the negotiator.",
            "nullable": true
          },
          "authorisedSignatory": {
            "type": "boolean",
            "description": "Whether the negotiator is an authorised signatory."
          }
        },
        "additionalProperties": false,
        "description": "Represents an negotiator."
      },
      "NegotiatorPagedResponse": {
        "type": "object",
        "properties": {
          "meta": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ],
            "nullable": true
          },
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Negotiator"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "PropertyRecordType": {
        "enum": [
          "Unspecified",
          "Sale",
          "Rent"
        ],
        "type": "string"
      },
      "Alto.Api.Material.Hateoas.Link": {
        "type": "object",
        "properties": {
          "href": {
            "type": "string",
            "nullable": true
          },
          "rel": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Alto.Api.Material.Models.Responses.Error": {
        "type": "object",
        "properties": {
          "code": {
            "type": "string",
            "nullable": true
          },
          "message": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Alto.Api.Material.Models.Responses.ErrorsResponse": {
        "type": "object",
        "properties": {
          "errors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Alto.Api.Material.Models.Responses.Error"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Alto.Contacts.Api.Models.Requests.Address": {
        "type": "object",
        "properties": {
          "subDwelling": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "The sub-dwelling of the address, such as a flat or apartment number.",
            "nullable": true,
            "example": "The Flats"
          },
          "nameNumber": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "The name or number of the building or property.",
            "nullable": true,
            "example": "12"
          },
          "street": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "The name of the street.",
            "nullable": true,
            "example": "Fulham Road"
          },
          "locality": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "The locality, such as a village or neighborhood.",
            "nullable": true,
            "example": "Fulham"
          },
          "town": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "The town or city of the address.",
            "nullable": true,
            "example": "London"
          },
          "county": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "The county or region of the address.",
            "nullable": true,
            "example": "Greater London"
          },
          "postcode": {
            "maxLength": 20,
            "minLength": 0,
            "type": "string",
            "description": "The postal code of the address.",
            "nullable": true,
            "example": "SW10 0BF"
          },
          "countryCode": {
            "maxLength": 2,
            "minLength": 0,
            "type": "string",
            "description": "The country code of the address.\nDefault if not set: GB",
            "nullable": true,
            "example": "GB"
          },
          "uprn": {
            "maxLength": 12,
            "minLength": 0,
            "type": "string",
            "description": "The Unique Property Reference Number (UPRN) for the address.\nThis is an optional field for backward compatibility.",
            "nullable": true,
            "example": "100123456789"
          }
        },
        "additionalProperties": false
      },
      "Alto.Contacts.Api.Models.Requests.EmailAddress": {
        "required": [
          "address"
        ],
        "type": "object",
        "properties": {
          "address": {
            "minLength": 1,
            "type": "string",
            "description": "The email address.",
            "format": "email",
            "example": "john.doe@business.com"
          }
        },
        "additionalProperties": false
      },
      "Alto.Contacts.Api.Models.Requests.Lead": {
        "required": [
          "source"
        ],
        "type": "object",
        "properties": {
          "source": {
            "minLength": 1,
            "type": "string",
            "description": "The Id for this AgencyRef chosen from /parameters/lead-sources"
          },
          "id": {
            "type": "string",
            "description": "The numeric Id of the lead record that is being converted into a contact",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Alto.Contacts.Api.Models.Requests.Person": {
        "required": [
          "surname"
        ],
        "type": "object",
        "properties": {
          "title": {
            "maxLength": 20,
            "minLength": 0,
            "type": "string",
            "description": "The formal title of the Person.",
            "nullable": true,
            "example": "Ms"
          },
          "forename": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "The first or given name of the Person.",
            "nullable": true,
            "example": "Jane"
          },
          "surname": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "The surname of the Person.",
            "example": "Doe"
          },
          "phoneNumbers": {
            "maxItems": 4,
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Alto.Contacts.Api.Models.Requests.Phone"
            },
            "description": "A list of the Person's phone numbers.",
            "nullable": true
          },
          "emailAddresses": {
            "maxItems": 2,
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Alto.Contacts.Api.Models.Requests.EmailAddress"
            },
            "description": "A list of the Person's email addresses",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Alto.Contacts.Api.Models.Requests.Phone": {
        "required": [
          "number"
        ],
        "type": "object",
        "properties": {
          "type": {
            "enum": [
              "Unspecified",
              "Home",
              "Business",
              "Mobile",
              "Fax",
              "Work",
              "ISDN"
            ],
            "type": "string",
            "description": "The type of phone number. Default if not set: \"Home\".",
            "example": "Mobile"
          },
          "number": {
            "minLength": 1,
            "pattern": "^[\\+]?[0-9\\s]{10,20}$",
            "type": "string",
            "description": "The telephone number for the Person.",
            "example": "+44 7 267 789 134"
          },
          "description": {
            "maxLength": 50,
            "type": "string",
            "description": "The description of the telephone number.",
            "nullable": true,
            "example": "Evenings and weekends only!"
          }
        },
        "additionalProperties": false
      },
      "Alto.Contacts.Api.Models.Requests.PostApplicantRequirementRequest": {
        "required": [
          "profileIntention"
        ],
        "type": "object",
        "properties": {
          "profileIntention": {
            "enum": [
              "Buy",
              "Rent"
            ],
            "type": "string",
            "description": "The Applicant's intention.",
            "example": "Buy"
          },
          "isNewBuild": {
            "type": "boolean",
            "description": "Whether the Applicant requires a new build Property.",
            "nullable": true,
            "example": true
          },
          "isActiveProfile": {
            "type": "boolean",
            "description": "Whether the Requirement is active in the Applicant's profile.",
            "nullable": true,
            "example": true
          },
          "priceFrom": {
            "maximum": 2147483647,
            "minimum": 0,
            "type": "integer",
            "description": "The minimum price of the Property.",
            "format": "int32",
            "nullable": true,
            "example": 50000
          },
          "priceTo": {
            "maximum": 2147483647,
            "minimum": 0,
            "type": "integer",
            "description": "The maximum price of the Property.",
            "format": "int32",
            "nullable": true,
            "example": 100000
          },
          "bedsMin": {
            "maximum": 10,
            "minimum": 0,
            "type": "integer",
            "description": "The minimum number of bedrooms of the Property.",
            "format": "int32",
            "nullable": true,
            "example": 2
          },
          "rentalPriceQualifier": {
            "enum": [
              "Weekly",
              "Monthly"
            ],
            "type": "string",
            "description": "The frequency of the rental payment.",
            "nullable": true,
            "example": "Monthly"
          },
          "rentalFurnishing": {
            "enum": [
              "Furnished",
              "PartFurnished",
              "Unfurnished",
              "Unspecified"
            ],
            "type": "string",
            "description": "The furnishing requirement of the desired property.",
            "nullable": true,
            "example": "Furnished"
          },
          "tenureType": {
            "enum": [
              "Freehold",
              "Leasehold",
              "Unspecified"
            ],
            "type": "string",
            "description": "The tenure the Applicant is looking for.",
            "nullable": true,
            "example": "Freehold"
          },
          "notes": {
            "type": "string",
            "description": "Free-text notes for the Requirement.",
            "nullable": true,
            "example": "Looking for a garden and off-street parking."
          }
        },
        "additionalProperties": false
      },
      "Alto.Contacts.Api.Models.Requests.PostContactConsentPreferencesRequest": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Alto.Contacts.Api.Models.Requests.PostContactConsentPreferencesRequestItem"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Alto.Contacts.Api.Models.Requests.PostContactConsentPreferencesRequestItem": {
        "type": "object",
        "properties": {
          "type": {
            "enum": [
              "PropertyMatching",
              "GeneralMarketing",
              "FinancialServices",
              "ConveyancingServices",
              "RelocationAgentNetwork",
              "KeyfloViewingNotifications"
            ],
            "type": "string",
            "nullable": true
          },
          "optIn": {
            "enum": [
              "Denied",
              "Granted"
            ],
            "type": "string",
            "nullable": true
          },
          "notes": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Alto.Contacts.Api.Models.Requests.PostContactRelationshipRequest": {
        "required": [
          "relatedContactId",
          "relationshipType"
        ],
        "type": "object",
        "properties": {
          "relationshipType": {
            "enum": [
              "TenantGuarantor",
              "ForwardingAddress"
            ],
            "type": "string",
            "description": "The Relationship's type",
            "example": "TenantGuarantor"
          },
          "relatedContactId": {
            "minLength": 1,
            "type": "string",
            "description": "The ID of the contact we will create a relationship with. This will have to be created\nusing POST /contact with a Category - ContactRelationship",
            "example": "1234"
          }
        },
        "additionalProperties": false
      },
      "Alto.Contacts.Api.Models.Requests.PostContactRequest": {
        "required": [
          "branchId",
          "people"
        ],
        "type": "object",
        "properties": {
          "negotiatorId": {
            "type": "string",
            "description": "The unique identifier of the negotiator",
            "nullable": true,
            "example": "1234"
          },
          "branchId": {
            "minLength": 1,
            "type": "string",
            "description": "The Contact's BranchId.",
            "example": "1234"
          },
          "address": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Alto.Contacts.Api.Models.Requests.Address"
              }
            ],
            "description": "The Contact's Address details.",
            "nullable": true
          },
          "people": {
            "maxItems": 2,
            "minItems": 1,
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Alto.Contacts.Api.Models.Requests.Person"
            },
            "description": "The Person(s) on the Contact. Each Contact must have at least one Person but no more than two People."
          },
          "lead": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Alto.Contacts.Api.Models.Requests.Lead"
              }
            ],
            "description": "This contact originated from a lead (enquiry)",
            "nullable": true
          },
          "position": {
            "type": "string",
            "description": "The position of the contact, defined as the Id for this AgencyRef chosen from /parameters/client-positions",
            "nullable": true
          },
          "intention": {
            "type": "string",
            "description": "The intention of the contact, defined as the Id for this AgencyRef chosen from /parameters/client-intentions",
            "nullable": true
          },
          "disposal": {
            "type": "string",
            "description": "The disposal of the contact, defined as the Id for this AgencyRef chosen from /parameters/client-disposal-status",
            "nullable": true
          },
          "notes": {
            "type": "string",
            "description": "The notes for the contact",
            "nullable": true
          },
          "companyName": {
            "type": "string",
            "description": "The company name associated with the contact",
            "nullable": true
          },
          "category": {
            "enum": [
              "Unknown",
              "Client",
              "ContactRelationship"
            ],
            "type": "string",
            "description": "The contact's category type",
            "example": "Client, ContactRelationship"
          },
          "potentialVendor": {
            "type": "boolean",
            "description": "Indicates whether the contact is a potential vendor.",
            "nullable": true,
            "example": true
          },
          "potentialLandlord": {
            "type": "boolean",
            "description": "Indicates whether the contact is a potential landlord.",
            "nullable": true,
            "example": true
          }
        },
        "additionalProperties": false
      },
      "Alto.Contacts.Api.Models.Requests.PostForwardingAddressRequest": {
        "required": [
          "address",
          "branchId"
        ],
        "type": "object",
        "properties": {
          "negotiatorId": {
            "type": "string",
            "description": "The unique identifier of the negotiator",
            "nullable": true,
            "example": "1234"
          },
          "branchId": {
            "minLength": 1,
            "type": "string",
            "description": "The Contact's BranchId.",
            "example": "1234"
          },
          "address": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Alto.Contacts.Api.Models.Requests.Address"
              }
            ],
            "description": "The Contact's Address details."
          }
        },
        "additionalProperties": false
      },
      "Alto.Contacts.Api.Models.Responses.ApplicantRequirement": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "The unique identifier for the resource.",
            "nullable": true
          },
          "links": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Alto.Api.Material.Hateoas.Link"
            },
            "description": "Links to related entities.",
            "nullable": true
          },
          "profileIntention": {
            "type": "string",
            "nullable": true
          },
          "isNewBuild": {
            "type": "boolean",
            "nullable": true
          },
          "priceFrom": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "priceTo": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "bedsMin": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "isActiveProfile": {
            "type": "boolean"
          },
          "rentalIntention": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Alto.Contacts.Api.Models.Responses.RentalIntention"
              }
            ],
            "nullable": true
          },
          "tenureType": {
            "enum": [
              "Unspecified",
              "Freehold",
              "Leasehold",
              "LeaseholdWithShareOfFreehold",
              "FlyingFreehold",
              "Commonhold",
              "ShareOfFreehold"
            ],
            "type": "string",
            "nullable": true
          },
          "notes": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Alto.Contacts.Api.Models.Responses.Contact": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "The unique identifier for the resource.",
            "nullable": true
          },
          "links": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Alto.Api.Material.Hateoas.Link"
            },
            "description": "Links to related entities.",
            "nullable": true
          },
          "address": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Alto.Services.SDK.Models.Address"
              }
            ],
            "nullable": true
          },
          "branch": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Alto.Contacts.Core.Models.Domain.Branch"
              }
            ],
            "nullable": true
          },
          "people": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Alto.Contacts.Api.Models.Responses.Person"
            },
            "nullable": true
          },
          "category": {
            "enum": [
              "Unknown",
              "Client",
              "Solicitor",
              "BuildingSociety",
              "Bank",
              "Publication",
              "EstateAgent",
              "ManagingAgent",
              "Developer",
              "Builder",
              "Utility",
              "Service",
              "PreviousClient",
              "Miscellaneous",
              "FinancialAdvisor",
              "Maintenance",
              "OnSiteSales",
              "ExternalPrinter",
              "OtherCategory1",
              "EstateAgentLocal",
              "Surveyor",
              "Supplier",
              "Accountant"
            ],
            "type": "string"
          },
          "lead": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Alto.Contacts.Api.Models.Responses.Lead"
              }
            ],
            "description": "This contact originated from a lead (enquiry)",
            "nullable": true
          },
          "position": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Alto.Contacts.Api.Models.Responses.ParameterValue"
              }
            ],
            "description": "The position of the contact, defined as the Id for this AgencyRef chosen from /parameters/client-positions",
            "nullable": true
          },
          "intention": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Alto.Contacts.Api.Models.Responses.ParameterValue"
              }
            ],
            "description": "The intention of the contact, defined as the Id for this AgencyRef chosen from /parameters/client-intentions",
            "nullable": true
          },
          "disposal": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Alto.Contacts.Api.Models.Responses.ParameterValue"
              }
            ],
            "description": "The disposal of the contact, defined as the Id for this AgencyRef chosen from /parameters/client-disposal-status",
            "nullable": true
          },
          "notes": {
            "type": "string",
            "description": "The notes for the contact",
            "nullable": true
          },
          "archived": {
            "type": "boolean",
            "description": "The archived status of the contact."
          },
          "companyName": {
            "type": "string",
            "description": "The company name associated with the contact.",
            "nullable": true
          },
          "potentialVendor": {
            "type": "boolean",
            "description": "Indicates whether the contact has been flagged as a potential vendor."
          },
          "potentialLandlord": {
            "type": "boolean",
            "description": "Indicates whether the contact has been flagged as a potential landlord."
          },
          "applicantRequirements": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Alto.Contacts.Api.Models.Responses.ApplicantRequirement"
            },
            "nullable": true
          },
          "modifiedDate": {
            "type": "string",
            "description": "When the contact was last modified.",
            "format": "date-time",
            "example": "2017-12-25T15:03:30.0000000+00:00"
          }
        },
        "additionalProperties": false
      },
      "Alto.Contacts.Api.Models.Responses.ContactInformation": {
        "type": "object",
        "properties": {
          "title": {
            "type": "string",
            "nullable": true
          },
          "foreName": {
            "type": "string",
            "nullable": true
          },
          "surname": {
            "type": "string",
            "nullable": true
          },
          "phoneNumber": {
            "type": "string",
            "nullable": true
          },
          "emailAddress": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Alto.Contacts.Api.Models.Responses.ContactListItem": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "The unique identifier for the resource.",
            "nullable": true
          },
          "links": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Alto.Api.Material.Hateoas.Link"
            },
            "description": "Links to related entities.",
            "nullable": true
          },
          "contactType": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Alto.Contacts.Api.Models.Responses.ContactType"
              }
            ],
            "description": "The Category and persona for the contact",
            "nullable": true,
            "example": {
              "category": "Client",
              "persona": [
                "Applicant"
              ]
            }
          },
          "contactInformation": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Alto.Contacts.Api.Models.Responses.ContactInformation"
            },
            "description": "A list of contact information, with one entry per person associated with the contact.\nOnly the first phone number and email address (as recorded in Alto) are included for each person.",
            "nullable": true,
            "example": [
              {
                "title": "Mr",
                "foreName": "T",
                "surname": "Potter",
                "phoneNumber": "07972846284",
                "emailAddress": "23705219_test@propertysoftwaregroup.local"
              }
            ]
          },
          "position": {
            "type": "string",
            "description": "The position of the contact, defined as the Id for this AgencyRef chosen from /parameters/client-positions",
            "nullable": true,
            "example": "\"In Rented\""
          },
          "intention": {
            "type": "string",
            "description": "The intention of the contact, defined as the Id for this AgencyRef chosen from /parameters/client-intentions",
            "nullable": true,
            "example": "\"Buy\""
          },
          "disposal": {
            "type": "string",
            "description": "The disposal of the contact, defined as the Id for this AgencyRef chosen from /parameters/client-disposal-status",
            "nullable": true,
            "example": "\"Not applicable\""
          },
          "branch": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Alto.Contacts.Core.Models.Domain.Branch"
              }
            ],
            "description": "The branch of the contact.",
            "nullable": true,
            "example": {
              "id": "3156"
            }
          },
          "leadSource": {
            "type": "string",
            "description": "This contact originated from a lead (enquiry)",
            "nullable": true,
            "example": "Publication - newspaper"
          },
          "isActive": {
            "type": "boolean",
            "description": "Whether the contact is active or archived.",
            "example": true
          },
          "potentialVendor": {
            "type": "boolean",
            "description": "Indicates whether the contact has been flagged as a potential vendor.",
            "example": false
          },
          "potentialLandlord": {
            "type": "boolean",
            "description": "Indicates whether the contact has been flagged as a potential landlord.",
            "example": false
          },
          "createdAt": {
            "type": "string",
            "description": "When the contact was created.",
            "format": "date-time",
            "example": "2016-12-14T15:03:30.0000000+00:00"
          },
          "modifiedAt": {
            "type": "string",
            "description": "When the contact was last modified.",
            "format": "date-time",
            "example": "2017-12-25T15:03:30.0000000+00:00"
          },
          "notes": {
            "type": "string",
            "description": "The notes for the contact.",
            "nullable": true
          },
          "companyName": {
            "type": "string",
            "description": "The company name associated with the contact.",
            "nullable": true,
            "example": "Acme Corporation"
          },
          "applicantRequirements": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Alto.Contacts.Api.Models.Responses.ApplicantRequirement"
            },
            "description": "The applicant requirements associated with the contact.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Alto.Contacts.Api.Models.Responses.ContactRelationship": {
        "type": "object",
        "properties": {
          "relationshipId": {
            "type": "integer",
            "format": "int32"
          },
          "relationshipType": {
            "enum": [
              "TenantGuarantor",
              "ForwardingAddress"
            ],
            "type": "string"
          },
          "relatedContactId": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "Alto.Contacts.Api.Models.Responses.ContactRelationshipResponse": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "The unique identifier for the resource.",
            "nullable": true
          },
          "links": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Alto.Api.Material.Hateoas.Link"
            },
            "description": "Links to related entities.",
            "nullable": true
          },
          "relationshipType": {
            "enum": [
              "TenantGuarantor",
              "ForwardingAddress"
            ],
            "type": "string",
            "description": "The Relationship's type",
            "example": "TenantGuarantor"
          },
          "contactId": {
            "type": "string",
            "description": "The identifier of the Contact we added a relationship to",
            "nullable": true
          },
          "relatedContactId": {
            "type": "string",
            "description": "The ID of the contact we will create a relationship with. This will have to be created\nusing POST /contact with a Category - ContactRelationship",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Alto.Contacts.Api.Models.Responses.ContactSearchApplicantRequirementResponse": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "The unique identifier for the resource.",
            "nullable": true
          },
          "links": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Alto.Api.Material.Hateoas.Link"
            },
            "description": "Links to related entities.",
            "nullable": true
          },
          "profileIntention": {
            "enum": [
              "Unspecified",
              "Buy",
              "Rent"
            ],
            "type": "string"
          },
          "isNewBuild": {
            "type": "boolean",
            "nullable": true
          },
          "priceFrom": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "priceTo": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "bedsMin": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "isActiveProfile": {
            "type": "boolean"
          },
          "rentalIntention": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Alto.Contacts.Api.Models.Responses.ContactSearchRentalIntention"
              }
            ],
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Alto.Contacts.Api.Models.Responses.ContactSearchEmailResponse": {
        "type": "object",
        "properties": {
          "emailAddressId": {
            "type": "string",
            "description": "The unique identifier for the email address.",
            "nullable": true
          },
          "emailAddress": {
            "type": "string",
            "description": "The email address for the person.",
            "nullable": true,
            "example": "john.doe@business.com"
          }
        },
        "additionalProperties": false
      },
      "Alto.Contacts.Api.Models.Responses.ContactSearchItemResponse": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "The unique identifier for the resource.",
            "nullable": true
          },
          "links": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Alto.Api.Material.Hateoas.Link"
            },
            "description": "Links to related entities.",
            "nullable": true
          },
          "contactId": {
            "type": "string",
            "description": "The unique identifier for the contact.",
            "nullable": true
          },
          "displayName": {
            "type": "string",
            "description": "The display name for the contact.",
            "nullable": true
          },
          "archived": {
            "type": "boolean",
            "description": "Indicates whether the contact is archived or not."
          },
          "potentialVendor": {
            "type": "boolean",
            "description": "Indicates whether the contact has been flagged as a potential vendor."
          },
          "potentialLandlord": {
            "type": "boolean",
            "description": "Indicates whether the contact has been flagged as a potential landlord."
          },
          "notes": {
            "type": "string",
            "description": "The notes for the contact.",
            "nullable": true
          },
          "category": {
            "enum": [
              "Unknown",
              "Client",
              "Solicitor",
              "BuildingSociety",
              "Bank",
              "Publication",
              "EstateAgent",
              "ManagingAgent",
              "Developer",
              "Builder",
              "Utility",
              "Service",
              "PreviousClient",
              "Miscellaneous",
              "FinancialAdvisor",
              "Maintenance",
              "OnSiteSales",
              "ExternalPrinter",
              "OtherCategory1",
              "EstateAgentLocal",
              "Surveyor",
              "Supplier",
              "Accountant"
            ],
            "type": "string",
            "description": "The category type of the contact."
          },
          "registeredOn": {
            "type": "string",
            "description": "The date and time when the contact was registered.",
            "format": "date-time",
            "nullable": true
          },
          "lastContactedOn": {
            "type": "string",
            "description": "The date and time when the contact was last contacted.",
            "format": "date-time",
            "nullable": true
          },
          "address": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Alto.Services.SDK.Models.Address"
              }
            ],
            "description": "The postal address of the contact.",
            "nullable": true
          },
          "people": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Alto.Contacts.Api.Models.Responses.ContactSearchPersonResponse"
            },
            "description": "People associated to the contact.",
            "nullable": true
          },
          "properties": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Alto.Contacts.Api.Models.Responses.ContactSearchPropertyResponse"
            },
            "description": "Properties owned by the contact.",
            "nullable": true
          },
          "applicantRequirements": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Alto.Contacts.Api.Models.Responses.ContactSearchApplicantRequirementResponse"
            },
            "description": "Applicant requirements for the contact.",
            "nullable": true
          },
          "modifiedDate": {
            "type": "string",
            "description": "The date and time when the contact was last modified.",
            "format": "date-time",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Alto.Contacts.Api.Models.Responses.ContactSearchPersonResponse": {
        "type": "object",
        "properties": {
          "personId": {
            "type": "string",
            "description": "The unique identifier for the person within the contact.",
            "nullable": true,
            "example": "1"
          },
          "title": {
            "type": "string",
            "description": "The formal title of the Person.",
            "nullable": true,
            "example": "Mr"
          },
          "forename": {
            "type": "string",
            "description": "The first or given name of the Person.",
            "nullable": true,
            "example": "John"
          },
          "surname": {
            "type": "string",
            "description": "The surname of the Person.",
            "nullable": true,
            "example": "Doe"
          },
          "emails": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Alto.Contacts.Api.Models.Responses.ContactSearchEmailResponse"
            },
            "description": "The email addresses for the Person.",
            "nullable": true
          },
          "phoneNumbers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Alto.Contacts.Api.Models.Responses.ContactSearchPhoneResponse"
            },
            "description": "The phone numbers for the Person.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Alto.Contacts.Api.Models.Responses.ContactSearchPhoneResponse": {
        "type": "object",
        "properties": {
          "phoneNumberId": {
            "type": "string",
            "description": "The unique identifier for the phone number.",
            "nullable": true
          },
          "phoneNumber": {
            "type": "string",
            "description": "The telephone number for the Person.",
            "nullable": true,
            "example": "01234567891"
          }
        },
        "additionalProperties": false
      },
      "Alto.Contacts.Api.Models.Responses.ContactSearchPropertyResponse": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "The unique identifier for the resource.",
            "nullable": true
          },
          "links": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Alto.Api.Material.Hateoas.Link"
            },
            "description": "Links to related entities.",
            "nullable": true
          },
          "propertyId": {
            "type": "string",
            "description": "The unique identifier for the property.",
            "nullable": true
          },
          "displayAddress": {
            "type": "string",
            "description": "The display address for the property.",
            "nullable": true
          },
          "market": {
            "enum": [
              "Unspecified",
              "Sale",
              "Rent"
            ],
            "type": "string",
            "description": "The market type for the property."
          }
        },
        "additionalProperties": false
      },
      "Alto.Contacts.Api.Models.Responses.ContactSearchRentalIntention": {
        "type": "object",
        "properties": {
          "priceQualifier": {
            "enum": [
              "Unknown",
              "Weekly",
              "Monthly",
              "Quarterly",
              "Yearly",
              "AdHoc",
              "Daily",
              "Fortnightly",
              "FourWeekly",
              "MonthlyOnLastDay",
              "QuarterlyOnQuarterDays",
              "HalfYearly",
              "HalfYearlyOnQuarterDays"
            ],
            "type": "string"
          },
          "furnishing": {
            "enum": [
              "Unspecified",
              "Unfurnished",
              "PartFurnished",
              "Furnished",
              "FurnishedOrUnfurnished"
            ],
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Alto.Contacts.Api.Models.Responses.ContactType": {
        "type": "object",
        "properties": {
          "category": {
            "enum": [
              "Unknown",
              "Client",
              "Solicitor",
              "BuildingSociety",
              "Bank",
              "Publication",
              "EstateAgent",
              "ManagingAgent",
              "Developer",
              "Builder",
              "Utility",
              "Service",
              "PreviousClient",
              "Miscellaneous",
              "FinancialAdvisor",
              "Maintenance",
              "OnSiteSales",
              "ExternalPrinter",
              "OtherCategory1",
              "EstateAgentLocal",
              "Surveyor",
              "Supplier",
              "ContactRelationship",
              "Accountant"
            ],
            "type": "string",
            "description": "The Category of the contact",
            "example": "\"Client\""
          },
          "persona": {
            "type": "array",
            "items": {
              "enum": [
                "Applicant",
                "Vendor",
                "Landlord",
                "Tenant"
              ],
              "type": "string"
            },
            "description": "The Persona(s) of the contact",
            "nullable": true,
            "example": [
              "Landlord",
              "Vendor"
            ]
          }
        },
        "additionalProperties": false
      },
      "Alto.Contacts.Api.Models.Responses.EmailAddress": {
        "type": "object",
        "properties": {
          "preferenceOrder": {
            "type": "integer",
            "description": "The numerical order in which email addresses are to be selected.",
            "format": "int32",
            "example": 2
          },
          "type": {
            "enum": [
              "Unknown",
              "Personal",
              "Business"
            ],
            "type": "string",
            "description": "The type of email address.",
            "example": "Business"
          },
          "address": {
            "type": "string",
            "description": "The email address.",
            "nullable": true,
            "example": "john.doe@business.com"
          }
        },
        "additionalProperties": false
      },
      "Alto.Contacts.Api.Models.Responses.GetContactRelationshipResponse": {
        "type": "object",
        "properties": {
          "contactId": {
            "type": "integer",
            "format": "int32"
          },
          "relationships": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Alto.Contacts.Api.Models.Responses.ContactRelationship"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Alto.Contacts.Api.Models.Responses.Lead": {
        "type": "object",
        "properties": {
          "source": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Alto.Contacts.Api.Models.Responses.ParameterValue"
              }
            ],
            "nullable": true
          },
          "id": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Alto.Contacts.Api.Models.Responses.Owner": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "The unique identifier for the resource.",
            "nullable": true
          },
          "links": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Alto.Api.Material.Hateoas.Link"
            },
            "description": "Links to related entities.",
            "nullable": true
          },
          "property": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Alto.Contacts.Api.Models.Responses.OwnerProperty"
              }
            ],
            "description": "Details of the property owned by the contact.",
            "nullable": true
          },
          "contact": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Alto.Contacts.Api.Models.Responses.OwnerContact"
              }
            ],
            "description": "Represents the contact details of the owner.",
            "nullable": true
          },
          "active": {
            "type": "boolean",
            "description": "Indicates whether the owner is currently active."
          },
          "type": {
            "enum": [
              "Unknown",
              "Vendor",
              "Landlord"
            ],
            "type": "string",
            "description": "Represents the type of the owner."
          },
          "percentageShare": {
            "type": "number",
            "description": "Represents the owner's share or interest as a percentage.",
            "format": "double"
          },
          "createdAt": {
            "type": "string",
            "description": "The date and time when the contact owner was created.",
            "format": "date-time"
          },
          "modifiedAt": {
            "type": "string",
            "description": "The date and time when the owner's details were last modified.",
            "format": "date-time"
          }
        },
        "additionalProperties": false
      },
      "Alto.Contacts.Api.Models.Responses.OwnerContact": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "The unique identifier for the resource.",
            "nullable": true
          },
          "links": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Alto.Api.Material.Hateoas.Link"
            },
            "description": "Links to related entities.",
            "nullable": true
          },
          "branchId": {
            "type": "string",
            "description": "Represents the branch identifier associated with the contact owner.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents a contact that owns a property."
      },
      "Alto.Contacts.Api.Models.Responses.OwnerProperty": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "The unique identifier for the resource.",
            "nullable": true
          },
          "links": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Alto.Api.Material.Hateoas.Link"
            },
            "description": "Links to related entities.",
            "nullable": true
          },
          "branchId": {
            "type": "string",
            "description": "Represents the branch identifier associated with the property.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents a property belonging to a contact."
      },
      "Alto.Contacts.Api.Models.Responses.ParameterValue": {
        "type": "object",
        "properties": {
          "code": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Alto.Contacts.Api.Models.Responses.PatchApplicantRequirement": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "The unique identifier for the resource.",
            "nullable": true
          },
          "links": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Alto.Api.Material.Hateoas.Link"
            },
            "description": "Links to related entities.",
            "nullable": true
          },
          "profileIntention": {
            "enum": [
              "Unspecified",
              "Buy",
              "Rent"
            ],
            "type": "string",
            "description": "The Applicant's intention.",
            "example": "Buy"
          },
          "isNewBuild": {
            "type": "boolean",
            "description": "Whether the Applicant requires a new build Property.",
            "nullable": true,
            "example": true
          },
          "isActiveProfile": {
            "type": "boolean",
            "description": "Whether the Requirement is active in the Applicant's profile."
          },
          "priceFrom": {
            "type": "integer",
            "description": "The minimum price of the Property.",
            "format": "int32",
            "nullable": true,
            "example": 50000
          },
          "priceTo": {
            "type": "integer",
            "description": "The maximum price of the Property.",
            "format": "int32",
            "nullable": true,
            "example": 100000
          },
          "bedsMin": {
            "type": "integer",
            "description": "The minimum number of bedrooms of the Property.",
            "format": "int32",
            "nullable": true,
            "example": 2
          },
          "rentalIntention": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Alto.Contacts.Api.Models.Responses.RentalIntention"
              }
            ],
            "description": "The rental intention of the requirement.",
            "nullable": true,
            "example": {
              "PriceQualifier": "Monthly",
              "Furnishing": "Furnished"
            }
          },
          "tenureType": {
            "enum": [
              "Unspecified",
              "Freehold",
              "Leasehold",
              "LeaseholdWithShareOfFreehold",
              "FlyingFreehold",
              "Commonhold",
              "ShareOfFreehold"
            ],
            "type": "string",
            "description": "The tenure the Applicant is looking for.",
            "nullable": true,
            "example": "Freehold"
          },
          "notes": {
            "type": "string",
            "description": "Free-text notes for the Requirement.",
            "nullable": true,
            "example": "Looking for a garden and off-street parking."
          }
        },
        "additionalProperties": false
      },
      "Alto.Contacts.Api.Models.Responses.PatchPersonResponse": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "The unique identifier for the resource.",
            "nullable": true
          },
          "links": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Alto.Api.Material.Hateoas.Link"
            },
            "description": "Links to related entities.",
            "nullable": true
          },
          "title": {
            "type": "string",
            "description": "The formal title of the Person.",
            "nullable": true,
            "example": "Ms"
          },
          "forename": {
            "type": "string",
            "description": "The first or given name of the Person.",
            "nullable": true,
            "example": "Jane"
          },
          "surname": {
            "type": "string",
            "description": "The surname of the Person.",
            "nullable": true,
            "example": "Doe"
          },
          "phoneNumbers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Alto.Contacts.Api.Models.Responses.Phone"
            },
            "description": "A list of the Person's phone numbers.",
            "nullable": true
          },
          "emailAddresses": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Alto.Contacts.Api.Models.Responses.EmailAddress"
            },
            "description": "A list of the Person's email addresses",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Alto.Contacts.Api.Models.Responses.Person": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "The unique identifier for the resource.",
            "nullable": true
          },
          "links": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Alto.Api.Material.Hateoas.Link"
            },
            "description": "Links to related entities.",
            "nullable": true
          },
          "title": {
            "type": "string",
            "description": "The formal title of the Person.",
            "nullable": true,
            "example": "Ms"
          },
          "forename": {
            "type": "string",
            "description": "The first or given name of the Person.",
            "nullable": true,
            "example": "Jane"
          },
          "surname": {
            "type": "string",
            "description": "The surname of the Person.",
            "nullable": true,
            "example": "Doe"
          },
          "phoneNumbers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Alto.Contacts.Api.Models.Responses.Phone"
            },
            "nullable": true
          },
          "emailAddresses": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Alto.Contacts.Api.Models.Responses.EmailAddress"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Alto.Contacts.Api.Models.Responses.PersonSingle": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "The unique identifier for the resource.",
            "nullable": true
          },
          "links": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Alto.Api.Material.Hateoas.Link"
            },
            "description": "Links to related entities.",
            "nullable": true
          },
          "title": {
            "type": "string",
            "description": "The formal title of the Person.",
            "nullable": true,
            "example": "Ms"
          },
          "forename": {
            "type": "string",
            "description": "The first or given name of the Person.",
            "nullable": true,
            "example": "Jane"
          },
          "surname": {
            "type": "string",
            "description": "The surname of the Person.",
            "nullable": true,
            "example": "Doe"
          },
          "phoneNumbers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Alto.Contacts.Api.Models.Responses.Phone"
            },
            "nullable": true
          },
          "emailAddresses": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Alto.Contacts.Api.Models.Responses.EmailAddress"
            },
            "nullable": true
          },
          "isContactArchived": {
            "type": "boolean",
            "description": "The archived status of the contact this person belongs to."
          }
        },
        "additionalProperties": false
      },
      "Alto.Contacts.Api.Models.Responses.Phone": {
        "type": "object",
        "properties": {
          "preferenceOrder": {
            "type": "integer",
            "description": "The numerical order in which phone numbers are to be selected.",
            "format": "int32",
            "example": 1
          },
          "type": {
            "enum": [
              "Unspecified",
              "Home",
              "Business",
              "Mobile",
              "Fax",
              "Work",
              "ISDN"
            ],
            "type": "string",
            "description": "The type of phone number.",
            "example": "Mobile"
          },
          "number": {
            "type": "string",
            "description": "The telephone number for the Contact.",
            "nullable": true,
            "example": "01234567891"
          },
          "description": {
            "type": "string",
            "description": "The description of the phone number",
            "nullable": true,
            "example": "John's mobile"
          }
        },
        "additionalProperties": false
      },
      "Alto.Contacts.Api.Models.Responses.RentalIntention": {
        "type": "object",
        "properties": {
          "priceQualifier": {
            "enum": [
              "Unknown",
              "Weekly",
              "Monthly",
              "Quarterly",
              "Yearly",
              "AdHoc",
              "Daily",
              "Fortnightly",
              "FourWeekly",
              "MonthlyOnLastDay",
              "QuarterlyOnQuarterDays",
              "HalfYearly",
              "HalfYearlyOnQuarterDays"
            ],
            "type": "string"
          },
          "furnishing": {
            "enum": [
              "Unspecified",
              "Unfurnished",
              "PartFurnished",
              "Furnished",
              "FurnishedOrUnfurnished"
            ],
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Alto.Contacts.Core.Models.Domain.BankAccount": {
        "type": "object",
        "properties": {
          "accountHolderName": {
            "type": "string",
            "nullable": true
          },
          "accountName": {
            "type": "string",
            "nullable": true
          },
          "accountNumber": {
            "type": "string",
            "nullable": true
          },
          "bicNumber": {
            "type": "string",
            "nullable": true
          },
          "branchCode": {
            "type": "string",
            "nullable": true
          },
          "branchName": {
            "type": "string",
            "nullable": true
          },
          "ibanNumber": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Alto.Contacts.Core.Models.Domain.Branch": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Alto.Internal.DomainModels.Contacts.ContactConsentPreference": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "recordId": {
            "type": "integer",
            "format": "int32"
          },
          "groupId": {
            "type": "integer",
            "format": "int32"
          },
          "versionNumber": {
            "type": "integer",
            "format": "int32"
          },
          "contactId": {
            "type": "integer",
            "format": "int32"
          },
          "dateActioned": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "optInStatus": {
            "enum": [
              "Denied",
              "Granted",
              "Unknown",
              "GrantedOrUnknown"
            ],
            "type": "string"
          },
          "type": {
            "enum": [
              "PropertyMatching",
              "GeneralMarketing",
              "FinancialServices",
              "ConveyancingServices",
              "MoveIt",
              "RelocationAgentNetwork",
              "KeyfloViewingNotifications"
            ],
            "type": "string"
          },
          "actionedBy": {
            "type": "string",
            "nullable": true
          },
          "additionalInformation": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Alto.Services.SDK.Models.Address": {
        "type": "object",
        "properties": {
          "subDwelling": {
            "type": "string",
            "nullable": true
          },
          "nameNumber": {
            "type": "string",
            "nullable": true
          },
          "street": {
            "type": "string",
            "nullable": true
          },
          "locality": {
            "type": "string",
            "nullable": true
          },
          "town": {
            "type": "string",
            "nullable": true
          },
          "county": {
            "type": "string",
            "nullable": true
          },
          "postcode": {
            "type": "string",
            "nullable": true
          },
          "countryCode": {
            "type": "string",
            "nullable": true
          },
          "uprn": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Alto.Services.SDK.Pagination.Meta": {
        "type": "object",
        "properties": {
          "nextToken": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Alto.Services.SDK.Pagination.PagedResponse1_Alto.Contacts.Api.Models.Responses.ContactListItem": {
        "type": "object",
        "properties": {
          "meta": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Alto.Services.SDK.Pagination.Meta"
              }
            ],
            "nullable": true
          },
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Alto.Contacts.Api.Models.Responses.ContactListItem"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Alto.Services.SDK.Pagination.PagedResponse1_Alto.Contacts.Api.Models.Responses.ContactSearchItemResponse": {
        "type": "object",
        "properties": {
          "meta": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Alto.Services.SDK.Pagination.Meta"
              }
            ],
            "nullable": true
          },
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Alto.Contacts.Api.Models.Responses.ContactSearchItemResponse"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Alto.Services.SDK.Pagination.PagedResponse1_Alto.Contacts.Api.Models.Responses.Owner": {
        "type": "object",
        "properties": {
          "meta": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Alto.Services.SDK.Pagination.Meta"
              }
            ],
            "nullable": true
          },
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Alto.Contacts.Api.Models.Responses.Owner"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "SystemTextJsonPatch.JsonPatchDocument1_Alto.Contacts.Api.Models.Requests.PatchApplicantRequirement": {
        "type": "array",
        "items": {
          "$ref": "#/components/schemas/SystemTextJsonPatch.Operations.Operation1_Alto.Contacts.Api.Models.Requests.PatchApplicantRequirement"
        },
        "description": "Array of operations to perform"
      },
      "SystemTextJsonPatch.JsonPatchDocument1_Alto.Contacts.Api.Models.Requests.PatchContactRequest": {
        "type": "array",
        "items": {
          "$ref": "#/components/schemas/SystemTextJsonPatch.Operations.Operation1_Alto.Contacts.Api.Models.Requests.PatchContactRequest"
        },
        "description": "Array of operations to perform"
      },
      "SystemTextJsonPatch.JsonPatchDocument1_Alto.Contacts.Api.Models.Requests.PatchPersonRequest": {
        "type": "array",
        "items": {
          "$ref": "#/components/schemas/SystemTextJsonPatch.Operations.Operation1_Alto.Contacts.Api.Models.Requests.PatchPersonRequest"
        },
        "description": "Array of operations to perform"
      },
      "SystemTextJsonPatch.Operations.Operation1_Alto.Contacts.Api.Models.Requests.PatchApplicantRequirement": {
        "anyOf": [
          {
            "title": "Profile Intention",
            "type": "object",
            "properties": {
              "op": {
                "enum": [
                  "replace"
                ],
                "type": "string"
              },
              "value": {
                "enum": [
                  "Buy",
                  "Rent"
                ],
                "type": "string",
                "example": "Buy"
              },
              "path": {
                "type": "string",
                "default": "/ProfileIntention",
                "example": "/ProfileIntention"
              }
            },
            "description": "\n            The Applicant's intention.\n            ",
            "example": "\n{ \n    \"path\": \"/ProfileIntention\", \n    \"op\": \"add\", \n    \"value\": \"Buy\" \n}"
          },
          {
            "title": "Is New Build",
            "type": "object",
            "properties": {
              "op": {
                "enum": [
                  "replace"
                ],
                "type": "string"
              },
              "value": {
                "type": "string",
                "example": "true"
              },
              "path": {
                "type": "string",
                "default": "/IsNewBuild",
                "example": "/IsNewBuild"
              }
            },
            "description": "\n            Whether the Applicant requires a new build Property.\n            ",
            "example": "\n{ \n    \"path\": \"/IsNewBuild\", \n    \"op\": \"replace\", \n    \"value\": true\n}"
          },
          {
            "title": "Is Active Profile",
            "type": "object",
            "properties": {
              "op": {
                "enum": [
                  "replace"
                ],
                "type": "string"
              },
              "value": {
                "type": "string",
                "example": "true"
              },
              "path": {
                "type": "string",
                "default": "/IsActiveProfile",
                "example": "/IsActiveProfile"
              }
            },
            "description": "\n            Whether the Requirement is active in the Applicant's profile.\n            ",
            "example": "\n{ \n    \"path\": \"/IsActiveProfile\", \n    \"op\": \"replace\", \n    \"value\": true\n}"
          },
          {
            "title": "Price From",
            "type": "object",
            "properties": {
              "op": {
                "enum": [
                  "replace"
                ],
                "type": "string"
              },
              "value": {
                "type": "integer",
                "example": "50000"
              },
              "path": {
                "type": "string",
                "default": "/PriceFrom",
                "example": "/PriceFrom"
              }
            },
            "description": "\n            The minimum price of the Property.\n            ",
            "example": "\n{ \n    \"path\": \"/PriceFrom\", \n    \"op\": \"replace\", \n    \"value\": 50000\n}"
          },
          {
            "title": "Price To",
            "type": "object",
            "properties": {
              "op": {
                "enum": [
                  "replace"
                ],
                "type": "string"
              },
              "value": {
                "type": "integer",
                "example": "100000"
              },
              "path": {
                "type": "string",
                "default": "/PriceTo",
                "example": "/PriceTo"
              }
            },
            "description": "\n            The maximum price of the Property.\n            ",
            "example": "\n{ \n    \"path\": \"/PriceTo\", \n    \"op\": \"replace\", \n    \"value\": 100000\n}"
          },
          {
            "title": "Beds Min",
            "type": "object",
            "properties": {
              "op": {
                "enum": [
                  "replace"
                ],
                "type": "string"
              },
              "value": {
                "type": "integer",
                "example": "2"
              },
              "path": {
                "type": "string",
                "default": "/BedsMin",
                "example": "/BedsMin"
              }
            },
            "description": "\n            The minimum number of bedrooms of the Property.\n            ",
            "example": "\n{ \n    \"path\": \"/BedsMin\", \n    \"op\": \"replace\", \n    \"value\": 2\n}"
          },
          {
            "title": "Rental Price Qualifier",
            "type": "object",
            "properties": {
              "op": {
                "enum": [
                  "replace"
                ],
                "type": "string"
              },
              "value": {
                "enum": [
                  "Weekly",
                  "Monthly"
                ],
                "type": "string",
                "example": "Monthly"
              },
              "path": {
                "type": "string",
                "default": "/RentalPriceQualifier",
                "example": "/RentalPriceQualifier"
              }
            },
            "description": "\n            The frequency of the rental payment.\n            ",
            "example": "\n{ \n    \"path\": \"/RentalPriceQualifier\", \n    \"op\": \"add\", \n    \"value\": \"Monthly\" \n}"
          },
          {
            "title": "Rental Furnishing",
            "type": "object",
            "properties": {
              "op": {
                "enum": [
                  "replace"
                ],
                "type": "string"
              },
              "value": {
                "enum": [
                  "Furnished",
                  "PartFurnished",
                  "Unfurnished",
                  "Unspecified"
                ],
                "type": "string",
                "example": "Furnished"
              },
              "path": {
                "type": "string",
                "default": "/RentalFurnishing",
                "example": "/RentalFurnishing"
              }
            },
            "description": "\n            The furnishing requirement of the desired property.\n            ",
            "example": "\n{ \n    \"path\": \"/RentalFurnishing\", \n    \"op\": \"add\", \n    \"value\": \"Furnished\" \n}"
          },
          {
            "title": "Tenure Type",
            "type": "object",
            "properties": {
              "op": {
                "enum": [
                  "replace"
                ],
                "type": "string"
              },
              "value": {
                "enum": [
                  "Freehold",
                  "Leasehold",
                  "Unspecified"
                ],
                "type": "string",
                "example": "Freehold"
              },
              "path": {
                "type": "string",
                "default": "/TenureType",
                "example": "/TenureType"
              }
            },
            "description": "\n            The tenure the Applicant is looking for.\n            ",
            "example": "\n{ \n    \"path\": \"/TenureType\", \n    \"op\": \"add\", \n    \"value\": \"Freehold\" \n}"
          },
          {
            "title": "Notes",
            "type": "object",
            "properties": {
              "op": {
                "enum": [
                  "replace"
                ],
                "type": "string"
              },
              "value": {
                "type": "string",
                "example": "\"Looking for a garden and off-street parking.\""
              },
              "path": {
                "type": "string",
                "default": "/Notes",
                "example": "/Notes"
              }
            },
            "description": "\n            Free-text notes for the Requirement.\n            ",
            "example": "\n{ \n    \"path\": \"/Notes\", \n    \"op\": \"replace\", \n    \"value\": \"Looking for a garden and off-street parking.\"\n}"
          }
        ]
      },
      "SystemTextJsonPatch.Operations.Operation1_Alto.Contacts.Api.Models.Requests.PatchContactRequest": {
        "anyOf": [
          {
            "title": "Active",
            "type": "object",
            "properties": {
              "op": {
                "enum": [
                  "replace"
                ],
                "type": "string"
              },
              "value": {
                "type": "string",
                "example": "true"
              },
              "path": {
                "type": "string",
                "default": "/Active",
                "example": "/Active"
              }
            },
            "description": "\n            The contact's active status.\n            ",
            "example": "\n{ \n    \"path\": \"/Active\", \n    \"op\": \"replace\", \n    \"value\": true\n}"
          },
          {
            "title": "Position Id",
            "type": "object",
            "properties": {
              "op": {
                "enum": [
                  "replace"
                ],
                "type": "string"
              },
              "value": {
                "type": "string",
                "example": "\"267\""
              },
              "path": {
                "type": "string",
                "default": "/PositionId",
                "example": "/PositionId"
              }
            },
            "description": "\n            The code for the contact's position.\n            ",
            "example": "\n{ \n    \"path\": \"/PositionId\", \n    \"op\": \"replace\", \n    \"value\": \"267\"\n}"
          },
          {
            "title": "Intention Id",
            "type": "object",
            "properties": {
              "op": {
                "enum": [
                  "replace"
                ],
                "type": "string"
              },
              "value": {
                "type": "string",
                "example": "\"89\""
              },
              "path": {
                "type": "string",
                "default": "/IntentionId",
                "example": "/IntentionId"
              }
            },
            "description": "\n            The code for the contact's intention.\n            ",
            "example": "\n{ \n    \"path\": \"/IntentionId\", \n    \"op\": \"replace\", \n    \"value\": \"89\"\n}"
          },
          {
            "title": "Potential Vendor",
            "type": "object",
            "properties": {
              "op": {
                "enum": [
                  "replace"
                ],
                "type": "string"
              },
              "value": {
                "type": "string",
                "example": "true"
              },
              "path": {
                "type": "string",
                "default": "/PotentialVendor",
                "example": "/PotentialVendor"
              }
            },
            "description": "\n            Indicates whether the contact is a potential vendor.\n            ",
            "example": "\n{ \n    \"path\": \"/PotentialVendor\", \n    \"op\": \"replace\", \n    \"value\": true\n}"
          },
          {
            "title": "Potential Landlord",
            "type": "object",
            "properties": {
              "op": {
                "enum": [
                  "replace"
                ],
                "type": "string"
              },
              "value": {
                "type": "string",
                "example": "true"
              },
              "path": {
                "type": "string",
                "default": "/PotentialLandlord",
                "example": "/PotentialLandlord"
              }
            },
            "description": "\n            Indicates whether the contact is a potential landlord.\n            ",
            "example": "\n{ \n    \"path\": \"/PotentialLandlord\", \n    \"op\": \"replace\", \n    \"value\": true\n}"
          }
        ]
      },
      "SystemTextJsonPatch.Operations.Operation1_Alto.Contacts.Api.Models.Requests.PatchPersonRequest": {
        "anyOf": [
          {
            "title": "Title",
            "type": "object",
            "properties": {
              "op": {
                "enum": [
                  "replace"
                ],
                "type": "string"
              },
              "value": {
                "type": "string",
                "example": "\"Ms\""
              },
              "path": {
                "type": "string",
                "default": "/Title",
                "example": "/Title"
              }
            },
            "description": "The formal title of the Person.",
            "example": "\n{ \n    \"path\": \"/Title\", \n    \"op\": \"replace\", \n    \"value\": \"Ms\"\n}"
          },
          {
            "title": "Forename",
            "type": "object",
            "properties": {
              "op": {
                "enum": [
                  "replace"
                ],
                "type": "string"
              },
              "value": {
                "type": "string",
                "example": "\"Jane\""
              },
              "path": {
                "type": "string",
                "default": "/Forename",
                "example": "/Forename"
              }
            },
            "description": "The first or given name of the Person.",
            "example": "\n{ \n    \"path\": \"/Forename\", \n    \"op\": \"replace\", \n    \"value\": \"Jane\"\n}"
          },
          {
            "title": "Surname",
            "type": "object",
            "properties": {
              "op": {
                "enum": [
                  "replace"
                ],
                "type": "string"
              },
              "value": {
                "type": "string",
                "example": "\"Smith\""
              },
              "path": {
                "type": "string",
                "default": "/Surname",
                "example": "/Surname"
              }
            },
            "description": "The surname of the Person.",
            "example": "\n{ \n    \"path\": \"/Surname\", \n    \"op\": \"replace\", \n    \"value\": \"Smith\"\n}"
          },
          {
            "title": "Phone Numbers",
            "type": "object",
            "properties": {
              "op": {
                "enum": [
                  "replace"
                ],
                "type": "string"
              },
              "value": {
                "type": "string",
                "example": "{\"Type\": 1,\"Number\": \"07800123456\",\"Description\": \"Home\"}"
              },
              "path": {
                "type": "string",
                "default": "/PhoneNumbers",
                "example": "/PhoneNumbers/-"
              }
            },
            "description": "A list of the Person's phone numbers.",
            "example": "\n{ \n    \"path\": \"/PhoneNumbers/-\", \n    \"op\": \"add\", \n    \"value\": {\"Type\": 1,\"Number\": \"07800123456\",\"Description\": \"Home\"}\n}"
          },
          {
            "title": "Email Addresses",
            "type": "object",
            "properties": {
              "op": {
                "enum": [
                  "replace"
                ],
                "type": "string"
              },
              "value": {
                "type": "string",
                "example": "{\"Address\": \"testingtester@testingtester.test\"}"
              },
              "path": {
                "type": "string",
                "default": "/EmailAddresses",
                "example": "/EmailAddresses/-"
              }
            },
            "description": "A list of the Person's email addresses.",
            "example": "\n{ \n    \"path\": \"/EmailAddresses/-\", \n    \"op\": \"add\", \n    \"value\": {\"Address\": \"testingtester@testingtester.test\"}\n}"
          }
        ]
      },
      "CreateDocumentResponse": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "The unique identifier of the new document.",
            "format": "int64",
            "example": 12345
          }
        },
        "additionalProperties": false,
        "description": "Response describing a newly created document."
      },
      "Document": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "The unique identifier of the document",
            "nullable": true
          },
          "type": {
            "type": "string",
            "description": "The type of the document e.g. Property, Tenancy, Contact or Work Order",
            "nullable": true
          },
          "fileName": {
            "type": "string",
            "description": "The file name of the document",
            "nullable": true
          },
          "fileType": {
            "type": "string",
            "description": "The file type of the document",
            "nullable": true
          },
          "url": {
            "type": "string",
            "description": "The URL for the document, if applicable",
            "nullable": true
          },
          "caption": {
            "type": "string",
            "description": "The caption of the document",
            "nullable": true
          },
          "createdDate": {
            "type": "string",
            "description": "The date the document was created",
            "format": "date-time",
            "nullable": true
          },
          "modifiedDate": {
            "type": "string",
            "description": "The date the document was modified",
            "format": "date-time",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "DocumentPagedResults": {
        "type": "object",
        "properties": {
          "meta": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ],
            "nullable": true
          },
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Document"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "FileType": {
        "enum": [
          "JPG",
          "PDF",
          "PNG",
          "GIF",
          "TXT",
          "DOC",
          "DOCX",
          "XLSX",
          "XLS",
          "CSV"
        ],
        "type": "string"
      },
      "MediaType": {
        "enum": [
          "Photo",
          "Floorplan",
          "VirtualTour",
          "File",
          "Document",
          "Brochure",
          "EPC",
          "WebLink"
        ],
        "type": "string"
      },
      "CreateFileNoteRequest": {
        "type": "object",
        "properties": {
          "negotiatorId": {
            "type": "string",
            "description": "[Optional] The unique identifier of a negotiator",
            "nullable": true
          },
          "propertyId": {
            "type": "string",
            "description": "[Optional] The unique identifier of the property to associate to the file note",
            "nullable": true
          },
          "tenancyId": {
            "type": "string",
            "description": "[Optional] The unique identifier of the tenancy to associate to the file note",
            "nullable": true
          },
          "ownerIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "[Optional] The unique identifiers (contact id) of the property owner(s) to associate to the file note",
            "nullable": true
          },
          "contactIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "[Optional] The unique identifiers of additional contact(s) to associate to the file note",
            "nullable": true
          },
          "title": {
            "type": "string",
            "description": "[Optional] Title of the file note - not currently visible to users",
            "nullable": true
          },
          "notes": {
            "type": "string",
            "description": "[Required] The body/content of the file note",
            "nullable": true
          },
          "updateLastContactedDate": {
            "type": "boolean",
            "description": "When set to true the Last Contacted Date of Owners and Contacts will be updated"
          },
          "fileNoteType": {
            "enum": [
              "Unspecified",
              "DetailsToVendor",
              "DetailsApproved",
              "FileNote",
              "PhoneCall",
              "EMail"
            ],
            "type": "string",
            "description": "[Optional] The type of file note to create",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "FileNotePatchJsonPatchDocument": {
        "type": "array",
        "items": {
          "$ref": "#/components/schemas/FileNotePatchOperation"
        },
        "description": "Array of operations to perform"
      },
      "FileNotePatchOperation": {
        "anyOf": [
          {
            "title": "Title",
            "type": "object",
            "properties": {
              "op": {
                "enum": [
                  "replace"
                ],
                "type": "string"
              },
              "value": {
                "type": "string",
                "example": "\"\""
              },
              "path": {
                "type": "string",
                "default": "/Title"
              }
            },
            "description": "\n             Title of the file note\n            \n             [Note] This field is not currently visible to users, and cannot be longer than 50 characters.\n             ",
            "example": "\n{ \n    \"path\": \"/Title\", \n    \"op\": \"replace\", \n    \"value\": \"\"\n}"
          },
          {
            "title": "Notes",
            "type": "object",
            "properties": {
              "op": {
                "enum": [
                  "replace"
                ],
                "type": "string"
              },
              "value": {
                "type": "string",
                "example": "\"\""
              },
              "path": {
                "type": "string",
                "default": "/Notes"
              }
            },
            "description": "\n             The body/content of the file note.\n            \n             [Note] This endpoint only supports fully replacing the notes text, if you need to append you must first load the existing value via the GET file note by ID endpoint, update the notes value returned, and then PATCH the updated value.\n             ",
            "example": "\n{ \n    \"path\": \"/Notes\", \n    \"op\": \"replace\", \n    \"value\": \"\"\n}"
          }
        ]
      },
      "GetFileNoteResponse": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "The unique identifier of the file note",
            "format": "int64"
          },
          "title": {
            "type": "string",
            "description": "Title of the file note if available",
            "nullable": true
          },
          "notes": {
            "type": "string",
            "description": "The body/content of the file note",
            "nullable": true
          },
          "contactIds": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "description": "The unique identifiers of contacts associated to the file note",
            "nullable": true
          },
          "propertyId": {
            "type": "integer",
            "description": "The unique identifier of the property if one is associated to the file note",
            "format": "int32",
            "nullable": true
          },
          "createdDate": {
            "type": "string",
            "description": "Date/time when file note was created",
            "format": "date-time"
          },
          "updatedDate": {
            "type": "string",
            "description": "Date/time when file note was modified",
            "format": "date-time",
            "nullable": true
          },
          "negotiatorId": {
            "type": "integer",
            "description": "The unique identifier of the negotiator",
            "format": "int32",
            "nullable": true
          },
          "fileNoteType": {
            "enum": [
              "Unspecified",
              "PropertyAvailable1",
              "PropertyWithdrawn",
              "PropertyUnderOffer",
              "ContractsExchanged",
              "PropertySaleCompleted",
              "PropertySoldExternally",
              "PropertyArchived",
              "PropertyLet",
              "PropertyAvailableAgain",
              "PropertyUnarchived",
              "PropertySuspended",
              "PropertyInstructed",
              "PropertyImported",
              "LetAgreed",
              "ExternallyLet",
              "PropertyBranchTransfer",
              "TermsSigned",
              "DetailsToVendor",
              "DetailsApproved",
              "HIPOrder",
              "HIPReady",
              "LogEPCOrder",
              "LogEPCReady",
              "SalePriceChange",
              "MarketingStatus",
              "SentOutSub",
              "SentOutCO",
              "RentalPriceChange",
              "FileNote",
              "PhoneCall",
              "TextMessage",
              "EMail",
              "Letter",
              "Labels",
              "MSReferra",
              "LeadNote",
              "ConversionNote",
              "ViewingFollowUp",
              "OfferMade",
              "OfferRevised",
              "OfferWithdrawn",
              "OfferAccepted",
              "OfferRejected",
              "OfferMadeRental",
              "OfferRevisedRental",
              "SaleNegotiated",
              "SaleWithdrawalByVendor",
              "SaleWithdrawalByPurchaser",
              "SaleLostExternalSale",
              "FailedToComplete",
              "ContractRaceLost",
              "LettingsWithdrawalByLandlord",
              "LettingsWithdrawalByApplicant",
              "KeyHandOver",
              "InvoiceRaised",
              "DepositTaken",
              "DepositReturned",
              "KeysOut",
              "KeysIn",
              "AccountPayment",
              "BoardChange",
              "Advertisement",
              "MoneyLaunderingIDRequest",
              "MoneyLaunderingIDVerified",
              "GasSafetyCheckOK",
              "ElectricalCheckOK",
              "FireAndFurnishingsCheckOK",
              "NoticeServed",
              "RecurringDiaryEntry",
              "GeneralDiaryEntry",
              "MarketAppraisal",
              "Viewing",
              "Match",
              "Disbursement",
              "MarketAppraisalFellThrough",
              "VendorReport",
              "MarketingSent",
              "ChangeOfPropertyNegotiator",
              "ChangeOfContactNegotiator",
              "ContactArchived",
              "PersonRegistered",
              "TOBSent",
              "TOBReturned",
              "ExportToCFP",
              "PropertyUploaded",
              "MarketingPrinted",
              "MarketingProduced",
              "MarketingViewed",
              "OtherMarketing",
              "MarketingFollowUp",
              "ReinstatePerson",
              "AllocateLogin",
              "PropertyOwnershipChanged",
              "TodoFollowUpNoteChanged",
              "DocumentSharedWithTenant",
              "DocumentUnsharedWithTenant",
              "DocumentSharedWithLandlord",
              "DocumentUnsharedWithLandlord",
              "FSReferral",
              "SolicitorReferral",
              "ConveyancerReferral",
              "ConveyancerQuote",
              "ConveyancerCaseOpened",
              "KeySetLost",
              "KeySetAdded",
              "KeySetRemoved",
              "KeySetAmended",
              "GeneralDiaryEntryCancelled",
              "AppraisalCancelled",
              "ViewingCancelled",
              "ExternalSaleAdded",
              "PropertySaleOtherStatusChange",
              "PropertyRentalOtherStatusChange",
              "ContractsExchangedReversed",
              "PropertySaleCompletedReversed",
              "SMSInvalidNumber",
              "PropertyBrochureSentViaEmail",
              "PropertyDetailsSentInEmail",
              "PropertyDetailsSentInSMS",
              "PropertyBrochurePrinted",
              "AdvertRunSentViaEmail",
              "PropertyUploadedFirstTime",
              "PropertyUploadedAsDeletion",
              "PropertyBrochureSentWithLetter",
              "PropertyBrowseSheetSentWithLetter",
              "ContactUnarchived",
              "GeneralDiaryEntryReinstated",
              "ViewingReinstated",
              "AppraisalReinstated",
              "ContactBranchTransfer",
              "CreditNoteIssued",
              "PropertyLetReversed",
              "ViewingReminder",
              "AppraisalReminder",
              "ClientDataChangeNote",
              "SigningRequestCopyEmail",
              "SigningRequest",
              "ViewingFeedbackReceived",
              "ViewingFeedbackRequested",
              "AmlCheckRequest",
              "SalesCommissionDue",
              "LettingsFeeDue",
              "DepositDue",
              "DisbursementRechargeDue",
              "RentDue",
              "ContractorExpenseDue",
              "SalesCommissionDueReversal",
              "LettingsFeeDueReversal",
              "DepositDueReversal",
              "DisbursementRechargeDueReversal",
              "RentDueReversal",
              "ContractorExpenseDueReversal",
              "TaskExpired",
              "SubjectAccessRequest",
              "DataPortabilityRequest",
              "SubjectAccessRequestPerson2",
              "DataPortabilityRequestPerson2",
              "PropertyAdded",
              "VacateTenancy",
              "RenewTenancy",
              "VacatedTenancy",
              "RenewedTenancy",
              "PeriodicTenancy",
              "RenewalCancelled",
              "VacateCancelled",
              "TenantAdded",
              "TenantRemoved",
              "TenancyStarted",
              "TenantLeft",
              "FailedToLet",
              "TenancyAdded",
              "VacateTenancyReverted",
              "RenewedTenancyReverted",
              "ReferencingCheckRequested",
              "ReferencingTenantStatusUpdated",
              "TenancyDepositSchemeUpdated",
              "WorkOrderCreated",
              "WorkOrderStatusChanged",
              "WorkOrderQuoteRequest",
              "WorkOrderInstructSupplier",
              "ManagementDateProgressChanged",
              "PropertyFileMaintenanceRequestReceived",
              "ForcedPasswordReset",
              "ForgottenPassword",
              "TwoStepSecurityCode",
              "ExportTenancy",
              "ContactCreatedFromLead",
              "TermsSent",
              "UpdateSalesFees",
              "PropertyCloned",
              "ContactCreatedFromBookingRequest",
              "PmInvoice",
              "PmReceipt",
              "PmRefund",
              "PmLandlordPayment",
              "PmSupplierPayment",
              "PmAgencyPayment",
              "PmBankReconciliation",
              "PmBacsPayment",
              "PmBankTransfer",
              "PmOverseasPayment",
              "pmBacsDownloadRequest",
              "PmPeriodStatement",
              "PmReceiptImportFile",
              "PmReceiptImportUpdate",
              "PmReceiptImportFileDownload",
              "TdsCertificateReceived",
              "TdsUploadBlocked",
              "SelfBillingInvoiceEmailed",
              "ConveyancerReferralFinanceReportEmailed"
            ],
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Alto.Internal.Nts.Accessibility": {
        "enum": [
          "LateralLiving",
          "StepFreeAccess",
          "WetRoom",
          "WheelchairAccessible",
          "DisabledFeatures",
          "LevelAccess",
          "RampedAccess",
          "LiftAccess",
          "StairLift",
          "WideDoorways",
          "LevelAccessShower",
          "VariableHeightKitchenSurfaces"
        ],
        "type": "string"
      },
      "Alto.Internal.Nts.AccessibilityRequirements": {
        "type": "object",
        "properties": {
          "accessibility": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Alto.Internal.Nts.Accessibility"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Alto.Internal.Nts.Broadband": {
        "type": "object",
        "properties": {
          "supply": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Alto.Internal.Nts.BroadbandSupply"
            },
            "nullable": true
          },
          "speed": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Alto.Internal.Nts.BroadbandSupply": {
        "enum": [
          "Adsl",
          "Cable",
          "FixedWireless",
          "Fttc",
          "Fttp",
          "Mobile",
          "None",
          "Other",
          "Satellite"
        ],
        "type": "string"
      },
      "Alto.Internal.Nts.BuildingSafety": {
        "type": "object",
        "properties": {
          "issue": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Alto.Internal.Nts.Construction": {
        "type": "object",
        "properties": {
          "material": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Alto.Internal.Nts.Electricity": {
        "type": "object",
        "properties": {
          "supply": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Alto.Internal.Nts.ElectricitySupply"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Alto.Internal.Nts.ElectricitySupply": {
        "enum": [
          "MainsSupply",
          "PrivateSupply",
          "SolarPvPanels",
          "WindTurbine",
          "Generator",
          "Other"
        ],
        "type": "string"
      },
      "Alto.Internal.Nts.FloodingRisks": {
        "type": "object",
        "properties": {
          "sourcesOfFlooding": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Alto.Internal.Nts.FloodingSources"
              }
            ],
            "nullable": true
          },
          "floodedWithinLast5Years": {
            "type": "boolean",
            "nullable": true
          },
          "floodDefensesPresent": {
            "type": "boolean",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Alto.Internal.Nts.FloodingSources": {
        "type": "object",
        "properties": {
          "source": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Alto.Internal.Nts.SourceOfFlooding"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Alto.Internal.Nts.Heating": {
        "type": "object",
        "properties": {
          "source": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Alto.Internal.Nts.HeatingSource"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Alto.Internal.Nts.HeatingSource": {
        "enum": [
          "BiomassBoiler",
          "Communal",
          "ElectricMains",
          "ElectricRoomHeaters",
          "GasMains",
          "HeatPumpAirSource",
          "HeatPumpGroundSource",
          "Lpg",
          "NightStorageHeaters",
          "Oil",
          "Other",
          "SolarPanels",
          "SolarPhotovoltaicThermal",
          "SolarThermal",
          "UnderFloorHeating",
          "WoodBurner",
          "OpenFire"
        ],
        "type": "string"
      },
      "Alto.Internal.Nts.MiningRisks": {
        "type": "object",
        "properties": {
          "coalfields": {
            "type": "boolean",
            "nullable": true
          },
          "otherMiningActivities": {
            "type": "boolean",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Alto.Internal.Nts.Parking": {
        "type": "object",
        "properties": {
          "parkingType": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Alto.Internal.Nts.ParkingType"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Alto.Internal.Nts.ParkingType": {
        "enum": [
          "DoubleGarage",
          "OffStreetParking",
          "ResidentsParking",
          "SingleGarage",
          "Underground",
          "CommunalCarParkAllocatedSpace",
          "CommunalCarParkNoAllocatedSpace",
          "DisabledParkingAvailable",
          "DisabledParkingNotAvailable",
          "DrivewayPrivate",
          "DrivewayShared",
          "EvChargingPrivate",
          "EvChargingShared",
          "Garage",
          "GarageBloc",
          "GarageCarport",
          "GarageDetached",
          "GarageIntegral",
          "GatedParking",
          "NoParkingAvailable",
          "RearOfProperty",
          "StreetParkingPermitNotRequired",
          "StreetParkingPermitRequired",
          "Undercroft",
          "UndergroundParkingAllocatedSpace",
          "UndergroundParkingNoAllocatedSpace",
          "Other"
        ],
        "type": "string"
      },
      "Alto.Internal.Nts.Restrictions": {
        "type": "object",
        "properties": {
          "conservationArea": {
            "type": "boolean",
            "nullable": true
          },
          "leaseRestrictions": {
            "type": "boolean",
            "nullable": true
          },
          "listedBuilding": {
            "type": "boolean",
            "nullable": true
          },
          "permittedDevelopment": {
            "type": "boolean",
            "nullable": true
          },
          "realBurdens": {
            "type": "boolean",
            "nullable": true
          },
          "holidayHomeRental": {
            "type": "boolean",
            "nullable": true
          },
          "restrictiveCovenant": {
            "type": "boolean",
            "nullable": true
          },
          "businessFromProperty": {
            "type": "boolean",
            "nullable": true
          },
          "propertySubletting": {
            "type": "boolean",
            "nullable": true
          },
          "treePreservationOrder": {
            "type": "boolean",
            "nullable": true
          },
          "other": {
            "type": "boolean",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Alto.Internal.Nts.RightsAndEasements": {
        "type": "object",
        "properties": {
          "rightOfWayPublic": {
            "type": "boolean",
            "nullable": true
          },
          "rightOfWayPrivate": {
            "type": "boolean",
            "nullable": true
          },
          "registeredEasementsHmlr": {
            "type": "boolean",
            "nullable": true
          },
          "servitudes": {
            "type": "boolean",
            "nullable": true
          },
          "sharedDriveway": {
            "type": "boolean",
            "nullable": true
          },
          "loftAccess": {
            "type": "boolean",
            "nullable": true
          },
          "drainAccess": {
            "type": "boolean",
            "nullable": true
          },
          "other": {
            "type": "boolean",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Alto.Internal.Nts.Sewerage": {
        "type": "object",
        "properties": {
          "supply": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Alto.Internal.Nts.SewerageSupply"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Alto.Internal.Nts.SewerageSupply": {
        "enum": [
          "Mains",
          "SepticTank",
          "DomesticSmallSewageTreatmentPlants",
          "Cesspit",
          "Cesspool",
          "Other"
        ],
        "type": "string"
      },
      "Alto.Internal.Nts.SourceOfFlooding": {
        "enum": [
          "River",
          "Sea",
          "Groundwater",
          "Lake",
          "Reservoir",
          "Other"
        ],
        "type": "string"
      },
      "Alto.Internal.Nts.Water": {
        "type": "object",
        "properties": {
          "supply": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Alto.Internal.Nts.WaterSupply"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Alto.Internal.Nts.WaterSupply": {
        "enum": [
          "Mains",
          "PrivateWell",
          "PrivateSpring",
          "PrivateBorehole",
          "PublicWell",
          "PublicSpring",
          "PublicBorehole",
          "Other"
        ],
        "type": "string"
      },
      "Alto.Inventory.Api.Domain.AltoKeySet": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "propertyId": {
            "type": "integer",
            "format": "int32"
          },
          "referenceCode": {
            "type": "string",
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "keyCount": {
            "type": "integer",
            "format": "int32"
          },
          "status": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Alto.Services.SDK.Enums.Property.KeySetStatus"
              }
            ]
          },
          "notes": {
            "type": "string",
            "nullable": true
          },
          "dateOut": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "expectedDateIn": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "holderType": {
            "enum": [
              "Contact",
              "User"
            ],
            "type": "string",
            "nullable": true
          },
          "holderId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "holderName": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Alto.Inventory.Api.Enums.MaintenanceType": {
        "enum": [
          "Unspecified",
          "MaintainedByLandlord",
          "MaintainedByUs"
        ],
        "type": "string"
      },
      "Alto.Inventory.Api.Enums.PropertyCategoryType": {
        "enum": [
          "Unspecified",
          "Residential",
          "Commercial"
        ],
        "type": "string"
      },
      "Alto.Inventory.Api.Enums.PropertyRecordType": {
        "enum": [
          "Unspecified",
          "Sale",
          "Rent"
        ],
        "type": "string"
      },
      "Alto.Inventory.Api.Enums.RentalManagementType": {
        "enum": [
          "Unspecified",
          "NotManaged",
          "PartManaged",
          "Managed",
          "FullyManaged",
          "RentCollectionService",
          "LetOnly"
        ],
        "type": "string"
      },
      "Alto.Inventory.Api.Models.Owner": {
        "type": "object",
        "properties": {
          "contactId": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "Alto.Inventory.Api.Models.Requests.AddInventory": {
        "type": "object",
        "properties": {
          "market": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Alto.Services.SDK.PropertyRecordType"
              }
            ],
            "description": "[Required] The market in which the property is being advertised."
          },
          "address": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Alto.Services.SDK.Models.Address"
              }
            ],
            "description": "[Required] The address of the property.",
            "nullable": true
          },
          "owners": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Alto.Inventory.Api.Models.Owner"
            },
            "description": "[Required] The owner(s) of the property.",
            "nullable": true
          },
          "negotiatorId": {
            "type": "integer",
            "description": "[Required] The unique identifier of the negotiator with whom the new property will be associated.",
            "format": "int32"
          },
          "branchId": {
            "type": "integer",
            "description": "[Required] The unique identifier of the branch where the negotiator works.",
            "format": "int32"
          },
          "lease": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Alto.Inventory.Api.Models.Requests.Lease"
              }
            ],
            "description": "The long lease on leasehold property.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Alto.Inventory.Api.Models.Requests.AddInventoryOwner": {
        "type": "object",
        "properties": {
          "contactId": {
            "type": "integer",
            "description": "[Required] The contact id to associate with the property",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "Alto.Inventory.Api.Models.Requests.AddKeySetRequest": {
        "type": "object",
        "properties": {
          "referenceCode": {
            "type": "string",
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "keyCount": {
            "type": "integer",
            "format": "int32"
          },
          "status": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Alto.Services.SDK.Enums.Property.KeySetStatus"
              }
            ]
          },
          "notes": {
            "type": "string",
            "nullable": true
          },
          "expectedDateIn": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "holderType": {
            "enum": [
              "Contact",
              "User"
            ],
            "type": "string",
            "nullable": true
          },
          "holderId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Alto.Inventory.Api.Models.Requests.Lease": {
        "type": "object",
        "properties": {
          "tenure": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Alto.Services.SDK.PropertyTenureType"
              }
            ],
            "description": "The tenure of the long lease."
          },
          "remainingTerm": {
            "type": "integer",
            "description": "The remaining term in years of the long lease. You must supply either this or and end date.",
            "format": "int32",
            "nullable": true
          },
          "endDate": {
            "type": "string",
            "description": "The end date of the long lease. You must supply either this or a remaining term.",
            "format": "date-time",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Alto.Inventory.Api.Models.Responses.Address": {
        "type": "object",
        "properties": {
          "subDwelling": {
            "type": "string",
            "nullable": true
          },
          "nameNo": {
            "type": "string",
            "nullable": true
          },
          "street": {
            "type": "string",
            "nullable": true
          },
          "locality": {
            "type": "string",
            "nullable": true
          },
          "town": {
            "type": "string",
            "nullable": true
          },
          "county": {
            "type": "string",
            "nullable": true
          },
          "postcode": {
            "type": "string",
            "nullable": true
          },
          "countryCode": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Alto.Inventory.Api.Models.Responses.EmailAddress": {
        "type": "object",
        "properties": {
          "preferenceOrder": {
            "type": "integer",
            "format": "int32"
          },
          "address": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Alto.Inventory.Api.Models.Responses.Epc": {
        "type": "object",
        "properties": {
          "energyEfficiencyRatingCurrent": {
            "type": "integer",
            "description": "Current energy efficiency rating",
            "format": "int32",
            "nullable": true,
            "example": 31
          },
          "energyEfficiencyRatingPotential": {
            "type": "integer",
            "description": "Potential energy efficiency rating",
            "format": "int32",
            "nullable": true,
            "example": 37
          },
          "exempt": {
            "type": "boolean",
            "description": "Whether listing has an EPC Exemption"
          },
          "exemptionReason": {
            "type": "string",
            "description": "Reason for an EPC Exemption",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Energy Performance Certificate"
      },
      "Alto.Inventory.Api.Models.Responses.InventoryDetailItem": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "nullable": true
          },
          "branchId": {
            "type": "string",
            "nullable": true
          },
          "category": {
            "type": "string",
            "nullable": true
          },
          "recordType": {
            "type": "string",
            "nullable": true
          },
          "address": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Alto.Inventory.Api.Models.Responses.Address"
              }
            ],
            "nullable": true
          },
          "priceQualifier": {
            "type": "string",
            "nullable": true
          },
          "currency": {
            "type": "string",
            "nullable": true
          },
          "yearBuilt": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "newBuild": {
            "type": "boolean",
            "nullable": true
          },
          "floorAreaInSquareFeet": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "landAreaInAcres": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "price": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "bedrooms": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "receptions": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "bathrooms": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "propertySubTypeId": {
            "type": "integer",
            "format": "int32"
          },
          "propertyType": {
            "type": "string",
            "nullable": true
          },
          "status": {
            "type": "string",
            "nullable": true
          },
          "inventoryStatus": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Alto.Services.SDK.InventoryStatus"
              }
            ]
          },
          "archived": {
            "type": "boolean"
          },
          "isAtActiveStatus": {
            "type": "boolean"
          },
          "tenureId": {
            "type": "integer",
            "format": "int32"
          },
          "tenure": {
            "type": "string",
            "nullable": true
          },
          "rentalFrequency": {
            "type": "string",
            "nullable": true
          },
          "tenancyType": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Alto.Services.SDK.Enums.Property.Rental.PropertyContractType"
              }
            ]
          },
          "owners": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Alto.Inventory.Api.Models.Responses.Owner"
            },
            "nullable": true
          },
          "taxBand": {
            "type": "string",
            "nullable": true
          },
          "taxBandExemptReason": {
            "type": "string",
            "nullable": true
          },
          "serviceCharge": {
            "type": "string",
            "nullable": true
          },
          "groundRent": {
            "type": "string",
            "nullable": true
          },
          "localAuthority": {
            "type": "string",
            "nullable": true
          },
          "leaseRemainingYears": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "leaseTerm": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "leaseEndDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "groundRentReviewPeriod": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "groundRentPercentageIncrease": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "sharedOwnership": {
            "type": "boolean",
            "nullable": true
          },
          "sharedOwnershipPercentageShare": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "sharedOwnershipRent": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "sharedOwnershipRentFrequencyId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "leaseNotes": {
            "type": "string",
            "nullable": true
          },
          "privateViewingNotes": {
            "type": "string",
            "nullable": true
          },
          "displayAddress": {
            "type": "string",
            "nullable": true
          },
          "hasAsbestos": {
            "type": "boolean",
            "nullable": true
          },
          "rentalDateAvailable": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "groundRentFixedForTerm": {
            "type": "boolean",
            "nullable": true
          },
          "groundRentNotes": {
            "type": "string",
            "nullable": true
          },
          "serviceChargeNotes": {
            "type": "string",
            "nullable": true
          },
          "negotiator": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Alto.Inventory.Api.Models.SecurityUser"
              }
            ],
            "nullable": true
          },
          "negotiatorName": {
            "type": "string",
            "nullable": true,
            "deprecated": true
          },
          "instructionDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "managementType": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Alto.Inventory.Api.Enums.RentalManagementType"
              }
            ]
          },
          "maintenanceType": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Alto.Inventory.Api.Enums.MaintenanceType"
              }
            ]
          },
          "accessibilityRequirements": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Alto.Internal.Nts.AccessibilityRequirements"
              }
            ],
            "nullable": true
          },
          "broadband": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Alto.Internal.Nts.Broadband"
              }
            ],
            "nullable": true
          },
          "buildingSafety": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Alto.Internal.Nts.BuildingSafety"
              }
            ],
            "nullable": true
          },
          "construction": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Alto.Internal.Nts.Construction"
              }
            ],
            "nullable": true
          },
          "coastalErosion": {
            "type": "boolean",
            "nullable": true
          },
          "electricity": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Alto.Internal.Nts.Electricity"
              }
            ],
            "nullable": true
          },
          "floodingRisks": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Alto.Internal.Nts.FloodingRisks"
              }
            ],
            "nullable": true
          },
          "heating": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Alto.Internal.Nts.Heating"
              }
            ],
            "nullable": true
          },
          "knownPlanningConsiderations": {
            "type": "string",
            "nullable": true
          },
          "miningRisks": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Alto.Internal.Nts.MiningRisks"
              }
            ],
            "nullable": true
          },
          "mobileCoverage": {
            "type": "string",
            "nullable": true
          },
          "parking": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Alto.Internal.Nts.Parking"
              }
            ],
            "nullable": true
          },
          "restrictions": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Alto.Internal.Nts.Restrictions"
              }
            ],
            "nullable": true
          },
          "rightsAndEasements": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Alto.Internal.Nts.RightsAndEasements"
              }
            ],
            "nullable": true
          },
          "sewerage": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Alto.Internal.Nts.Sewerage"
              }
            ],
            "nullable": true
          },
          "water": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Alto.Internal.Nts.Water"
              }
            ],
            "nullable": true
          },
          "epc": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Alto.Inventory.Api.Models.Responses.Epc"
              }
            ],
            "description": "Energy Performance Certificate",
            "nullable": true
          },
          "uprn": {
            "type": "string",
            "nullable": true
          },
          "createdDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "modifiedDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "propertyManager": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Alto.Inventory.Api.Models.SecurityUser"
              }
            ],
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Alto.Inventory.Api.Models.Responses.InventoryItem": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "nullable": true
          },
          "address": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Alto.Inventory.Api.Models.Responses.Address"
              }
            ],
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Alto.Inventory.Api.Models.Responses.InventoryPagedResults": {
        "type": "object",
        "properties": {
          "meta": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Alto.Inventory.Api.Models.Responses.Meta"
              }
            ],
            "nullable": true
          },
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Alto.Inventory.Api.Models.Responses.InventoryItem"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Alto.Inventory.Api.Models.Responses.Meta": {
        "type": "object",
        "properties": {
          "nextToken": {
            "type": "string",
            "nullable": true
          },
          "previousToken": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Alto.Inventory.Api.Models.Responses.Name": {
        "type": "object",
        "properties": {
          "title": {
            "type": "string",
            "nullable": true
          },
          "forename": {
            "type": "string",
            "nullable": true
          },
          "surname": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Alto.Inventory.Api.Models.Responses.Owner": {
        "type": "object",
        "properties": {
          "ownerId": {
            "type": "string",
            "nullable": true
          },
          "contactId": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Alto.Inventory.Api.Models.Responses.Name"
              }
            ],
            "nullable": true
          },
          "phoneNumbers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Alto.Inventory.Api.Models.Responses.Phone"
            },
            "nullable": true
          },
          "emailAddresses": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Alto.Inventory.Api.Models.Responses.EmailAddress"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Alto.Inventory.Api.Models.Responses.Phone": {
        "type": "object",
        "properties": {
          "preferenceOrder": {
            "type": "integer",
            "format": "int32"
          },
          "type": {
            "type": "string",
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "number": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Alto.Inventory.Api.Models.Responses.Search.InventoryItem": {
        "type": "object",
        "properties": {
          "inventoryId": {
            "type": "string",
            "description": "The ID of the inventory record.",
            "nullable": true
          },
          "branchId": {
            "type": "string",
            "description": "The ID of the branch.",
            "nullable": true
          },
          "createdAt": {
            "type": "string",
            "description": "The date and time the inventory record was created.",
            "format": "date-time",
            "nullable": true
          },
          "modifiedAt": {
            "type": "string",
            "description": "The date and time the inventory record was last modified.",
            "format": "date-time",
            "nullable": true
          },
          "categoryType": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Alto.Inventory.Api.Enums.PropertyCategoryType"
              }
            ],
            "description": "The category type of the inventory record."
          },
          "recordType": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Alto.Inventory.Api.Enums.PropertyRecordType"
              }
            ],
            "description": "The record type of the property in inventory."
          },
          "archived": {
            "type": "boolean",
            "description": "boolean value indicating whether inventory record has been archived"
          },
          "status": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Alto.Services.SDK.InventoryStatus"
              }
            ],
            "description": "The status type of the inventory record."
          },
          "address": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Alto.Inventory.Api.Models.Responses.Address"
              }
            ],
            "description": "The address of the inventory record.",
            "nullable": true
          },
          "managementType": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Alto.Inventory.Api.Enums.RentalManagementType"
              }
            ]
          },
          "maintenanceType": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Alto.Inventory.Api.Enums.MaintenanceType"
              }
            ],
            "description": "Where the responsibility lies for the maintenance of a rental property."
          },
          "instructionDate": {
            "type": "string",
            "description": "The date and time the inventory record was instructed.",
            "format": "date-time",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Alto.Inventory.Api.Models.Responses.Search.InventorySearchResults": {
        "type": "object",
        "properties": {
          "meta": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Alto.Inventory.Api.Models.Responses.Search.Meta"
              }
            ],
            "nullable": true
          },
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Alto.Inventory.Api.Models.Responses.Search.InventoryItem"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Alto.Inventory.Api.Models.Responses.Search.Meta": {
        "type": "object",
        "properties": {
          "nextToken": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Alto.Inventory.Api.Models.SecurityUser": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "links": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Alto.Api.Material.Hateoas.Link"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Alto.Services.SDK.Enums.Property.KeySetStatus": {
        "enum": [
          "Unspecified",
          "In",
          "Out",
          "Lost",
          "Returned"
        ],
        "type": "string"
      },
      "Alto.Services.SDK.Enums.Property.Rental.PropertyContractType": {
        "enum": [
          "Unspecified",
          "AssuredShortholdTenancy",
          "AssuredTenancy",
          "PublicSector",
          "HousingAssociation",
          "AssuredPeriodicTenancy"
        ],
        "type": "string"
      },
      "Alto.Services.SDK.InventoryStatus": {
        "enum": [
          "Unspecified",
          "Appraisal",
          "Available",
          "UnderOffer",
          "Completed",
          "Let",
          "LetAgreed",
          "LetMarketing",
          "Archived",
          "Suspended",
          "Withdrawn",
          "Instructed",
          "NotInstructed",
          "ExternallyLet",
          "UnderOfferMarketing",
          "UnderOfferAvailable",
          "Exchanged",
          "ExternallySold",
          "Reserved"
        ],
        "type": "string"
      },
      "Alto.Services.SDK.Models.ItemCollection1_Alto.Inventory.Api.Models.Responses.InventoryDetailItem": {
        "type": "object",
        "properties": {
          "totalCount": {
            "type": "integer",
            "format": "int32"
          },
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Alto.Inventory.Api.Models.Responses.InventoryDetailItem"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Alto.Services.SDK.PropertyRecordType": {
        "enum": [
          "Unspecified",
          "Sale",
          "Rent"
        ],
        "type": "string"
      },
      "Alto.Services.SDK.PropertyTenureType": {
        "enum": [
          "Unspecified",
          "Freehold",
          "Leasehold",
          "LeaseholdWithShareOfFreehold",
          "FlyingFreehold",
          "Commonhold",
          "ShareOfFreehold"
        ],
        "type": "string"
      },
      "Microsoft.AspNetCore.Mvc.ProblemDetails": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "nullable": true
          },
          "title": {
            "type": "string",
            "nullable": true
          },
          "status": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "detail": {
            "type": "string",
            "nullable": true
          },
          "instance": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": { }
      },
      "SystemTextJsonPatch.JsonPatchDocument1_Alto.Inventory.Api.Models.Responses.InventoryPatch": {
        "type": "array",
        "items": {
          "$ref": "#/components/schemas/SystemTextJsonPatch.Operations.Operation1_Alto.Inventory.Api.Models.Responses.InventoryPatch"
        },
        "description": "Array of operations to perform"
      },
      "SystemTextJsonPatch.JsonPatchDocument1_Alto.Inventory.Api.Models.Responses.KeySetPatch": {
        "type": "array",
        "items": {
          "$ref": "#/components/schemas/SystemTextJsonPatch.Operations.Operation1_Alto.Inventory.Api.Models.Responses.KeySetPatch"
        },
        "description": "Array of operations to perform"
      },
      "SystemTextJsonPatch.Operations.Operation1_Alto.Inventory.Api.Models.Responses.InventoryPatch": {
        "anyOf": [
          {
            "title": "Display Address",
            "type": "object",
            "properties": {
              "op": {
                "enum": [
                  "replace",
                  "test"
                ],
                "type": "string"
              },
              "value": {
                "type": "string",
                "example": "\"Bluebellwood Close, Luton\""
              },
              "path": {
                "type": "string",
                "default": "/DisplayAddress"
              }
            },
            "description": "The displayable address.",
            "example": "\n{ \n    \"path\": \"/DisplayAddress\", \n    \"op\": \"replace\", \n    \"value\": \"Bluebellwood Close, Luton\"\n}"
          },
          {
            "title": "Tax Band",
            "type": "object",
            "properties": {
              "op": {
                "enum": [
                  "replace",
                  "test"
                ],
                "type": "string"
              },
              "value": {
                "type": "string",
                "example": "\"E\""
              },
              "path": {
                "type": "string",
                "default": "/TaxBand"
              }
            },
            "description": "The council tax band of the building or property.",
            "example": "\n{ \n    \"path\": \"/TaxBand\", \n    \"op\": \"replace\", \n    \"value\": \"E\"\n}"
          },
          {
            "title": "Tax Band Exempt Reason",
            "type": "object",
            "properties": {
              "op": {
                "enum": [
                  "replace",
                  "test"
                ],
                "type": "string"
              },
              "value": {
                "type": "string",
                "example": "\"Not a house\""
              },
              "path": {
                "type": "string",
                "default": "/TaxBandExemptReason"
              }
            },
            "description": "The reason for a tax exemption on a building or property.",
            "example": "\n{ \n    \"path\": \"/TaxBandExemptReason\", \n    \"op\": \"replace\", \n    \"value\": \"Not a house\"\n}"
          },
          {
            "title": "Local Authority",
            "type": "object",
            "properties": {
              "op": {
                "enum": [
                  "replace",
                  "test"
                ],
                "type": "string"
              },
              "value": {
                "type": "string",
                "example": "\"Cornwall County Council\""
              },
              "path": {
                "type": "string",
                "default": "/LocalAuthority"
              }
            },
            "description": "The unitary authority in governance of the building or property.",
            "example": "\n{ \n    \"path\": \"/LocalAuthority\", \n    \"op\": \"replace\", \n    \"value\": \"Cornwall County Council\"\n}"
          },
          {
            "title": "Service Charge",
            "type": "object",
            "properties": {
              "op": {
                "enum": [
                  "replace",
                  "test"
                ],
                "type": "string"
              },
              "value": {
                "type": "string",
                "example": "\"1250 pa\""
              },
              "path": {
                "type": "string",
                "default": "/ServiceCharge"
              }
            },
            "description": "The service charge summary for a building or property.",
            "example": "\n{ \n    \"path\": \"/ServiceCharge\", \n    \"op\": \"replace\", \n    \"value\": \"1250 pa\"\n}"
          },
          {
            "title": "Service Charge Notes",
            "type": "object",
            "properties": {
              "op": {
                "enum": [
                  "replace",
                  "test"
                ],
                "type": "string"
              },
              "value": {
                "type": "string",
                "example": "\"A note regarding the service charge\""
              },
              "path": {
                "type": "string",
                "default": "/ServiceChargeNotes"
              }
            },
            "description": "Any additional notes pertaining to the service charge for a leasehold building or property.",
            "example": "\n{ \n    \"path\": \"/ServiceChargeNotes\", \n    \"op\": \"replace\", \n    \"value\": \"A note regarding the service charge\"\n}"
          },
          {
            "title": "Ground Rent",
            "type": "object",
            "properties": {
              "op": {
                "enum": [
                  "replace",
                  "test"
                ],
                "type": "string"
              },
              "value": {
                "type": "string",
                "example": "\"1500 pa\""
              },
              "path": {
                "type": "string",
                "default": "/GroundRent"
              }
            },
            "description": "The ground rent summary for a building or property.",
            "example": "\n{ \n    \"path\": \"/GroundRent\", \n    \"op\": \"replace\", \n    \"value\": \"1500 pa\"\n}"
          },
          {
            "title": "Lease Remaining Term",
            "type": "object",
            "properties": {
              "op": {
                "enum": [
                  "replace",
                  "test"
                ],
                "type": "string"
              },
              "value": {
                "type": "integer",
                "example": "32"
              },
              "path": {
                "type": "string",
                "default": "/LeaseRemainingTerm"
              }
            },
            "description": "The remaining term in months of the lease for a leasehold building or property.",
            "example": "\n{ \n    \"path\": \"/LeaseRemainingTerm\", \n    \"op\": \"replace\", \n    \"value\": 32\n}"
          },
          {
            "title": "Lease Term",
            "type": "object",
            "properties": {
              "op": {
                "enum": [
                  "replace",
                  "test"
                ],
                "type": "string"
              },
              "value": {
                "type": "integer",
                "example": "99"
              },
              "path": {
                "type": "string",
                "default": "/LeaseTerm"
              }
            },
            "description": "The term of the lease for a leasehold building or property.",
            "example": "\n{ \n    \"path\": \"/LeaseTerm\", \n    \"op\": \"replace\", \n    \"value\": 99\n}"
          },
          {
            "title": "Lease End Date",
            "type": "object",
            "properties": {
              "op": {
                "enum": [
                  "replace",
                  "test"
                ],
                "type": "string"
              },
              "value": {
                "type": "object",
                "example": "\"2024-06-15T13:45:30Z\""
              },
              "path": {
                "type": "string",
                "default": "/LeaseEndDate"
              }
            },
            "description": "The end date of the lease for a leasehold building or property.",
            "example": "\n{ \n    \"path\": \"/LeaseEndDate\", \n    \"op\": \"replace\", \n    \"value\": \"2024-06-15T13:45:30Z\"\n}"
          },
          {
            "title": "Ground Rent Review Period",
            "type": "object",
            "properties": {
              "op": {
                "enum": [
                  "replace",
                  "test"
                ],
                "type": "string"
              },
              "value": {
                "type": "number",
                "example": "5"
              },
              "path": {
                "type": "string",
                "default": "/GroundRentReviewPeriod"
              }
            },
            "description": "The review period of the ground rent for a leasehold building or property.",
            "example": "\n{ \n    \"path\": \"/GroundRentReviewPeriod\", \n    \"op\": \"replace\", \n    \"value\": 5\n}"
          },
          {
            "title": "Ground Rent Percentage Increase",
            "type": "object",
            "properties": {
              "op": {
                "enum": [
                  "replace",
                  "test"
                ],
                "type": "string"
              },
              "value": {
                "type": "number",
                "example": "5.5"
              },
              "path": {
                "type": "string",
                "default": "/GroundRentPercentageIncrease"
              }
            },
            "description": "The percentage increase of the ground rent for a leasehold building or property.",
            "example": "\n{ \n    \"path\": \"/GroundRentPercentageIncrease\", \n    \"op\": \"replace\", \n    \"value\": 5.5\n}"
          },
          {
            "title": "Ground Rent Fixed For Term",
            "type": "object",
            "properties": {
              "op": {
                "enum": [
                  "replace",
                  "test"
                ],
                "type": "string"
              },
              "value": {
                "type": "boolean",
                "example": "true"
              },
              "path": {
                "type": "string",
                "default": "/GroundRentFixedForTerm"
              }
            },
            "description": "The flag to indicate whether the ground rent is fixed for the duration of the lease.",
            "example": "\n{ \n    \"path\": \"/GroundRentFixedForTerm\", \n    \"op\": \"replace\", \n    \"value\": true\n}"
          },
          {
            "title": "Ground Rent Notes",
            "type": "object",
            "properties": {
              "op": {
                "enum": [
                  "replace",
                  "test"
                ],
                "type": "string"
              },
              "value": {
                "type": "string",
                "example": "\"A note regarding the ground rent\""
              },
              "path": {
                "type": "string",
                "default": "/GroundRentNotes"
              }
            },
            "description": "Any additional notes pertaining to the ground rent for a leasehold building or property.",
            "example": "\n{ \n    \"path\": \"/GroundRentNotes\", \n    \"op\": \"replace\", \n    \"value\": \"A note regarding the ground rent\"\n}"
          },
          {
            "title": "Shared Ownership",
            "type": "object",
            "properties": {
              "op": {
                "enum": [
                  "replace",
                  "test"
                ],
                "type": "string"
              },
              "value": {
                "type": "boolean",
                "example": "true"
              },
              "path": {
                "type": "string",
                "default": "/SharedOwnership"
              }
            },
            "description": "The flag to indicate whether there is shared ownership on a leasehold building or property.",
            "example": "\n{ \n    \"path\": \"/SharedOwnership\", \n    \"op\": \"replace\", \n    \"value\": true\n}"
          },
          {
            "title": "Shared Ownership Percentage Share",
            "type": "object",
            "properties": {
              "op": {
                "enum": [
                  "replace",
                  "test"
                ],
                "type": "string"
              },
              "value": {
                "type": "number",
                "example": "45.5"
              },
              "path": {
                "type": "string",
                "default": "/SharedOwnershipPercentageShare"
              }
            },
            "description": "The percentage share of ownership for a leasehold building or property.",
            "example": "\n{ \n    \"path\": \"/SharedOwnershipPercentageShare\", \n    \"op\": \"replace\", \n    \"value\": 45.5\n}"
          },
          {
            "title": "Shared Ownership Rent",
            "type": "object",
            "properties": {
              "op": {
                "enum": [
                  "replace",
                  "test"
                ],
                "type": "string"
              },
              "value": {
                "type": "number",
                "example": "1050.50"
              },
              "path": {
                "type": "string",
                "default": "/SharedOwnershipRent"
              }
            },
            "description": "The rent value of shared ownership for a leasehold building or property.",
            "example": "\n{ \n    \"path\": \"/SharedOwnershipRent\", \n    \"op\": \"replace\", \n    \"value\": 1050.50\n}"
          },
          {
            "title": "Shared Ownership Rent Frequency",
            "type": "object",
            "properties": {
              "op": {
                "enum": [
                  "replace",
                  "test"
                ],
                "type": "string"
              },
              "value": {
                "enum": [
                  "Yearly",
                  "Quarterly",
                  "Monthly",
                  "Weekly",
                  "Daily"
                ],
                "type": "string",
                "example": "Monthly"
              },
              "path": {
                "type": "string",
                "default": "/SharedOwnershipRentFrequency"
              }
            },
            "description": "The frequency of rent income on a shared ownership leasehold building or property.",
            "example": "\n{ \n    \"path\": \"/SharedOwnershipRentFrequency\", \n    \"op\": \"add\", \n    \"value\": \"Monthly\" \n}"
          },
          {
            "title": "Lease Notes",
            "type": "object",
            "properties": {
              "op": {
                "enum": [
                  "replace",
                  "test"
                ],
                "type": "string"
              },
              "value": {
                "type": "string",
                "example": "\"A note regarding the lease\""
              },
              "path": {
                "type": "string",
                "default": "/LeaseNotes"
              }
            },
            "description": "Any additional notes pertaining to the lease for a leasehold building or property.",
            "example": "\n{ \n    \"path\": \"/LeaseNotes\", \n    \"op\": \"replace\", \n    \"value\": \"A note regarding the lease\"\n}"
          },
          {
            "title": "Private Viewing Notes",
            "type": "object",
            "properties": {
              "op": {
                "enum": [
                  "replace",
                  "test"
                ],
                "type": "string"
              },
              "value": {
                "type": "string",
                "example": "\"A note regarding property viewing\""
              },
              "path": {
                "type": "string",
                "default": "/PrivateViewingNotes"
              }
            },
            "description": "Any private notes pertaining to the viewing",
            "example": "\n{ \n    \"path\": \"/PrivateViewingNotes\", \n    \"op\": \"replace\", \n    \"value\": \"A note regarding property viewing\"\n}"
          },
          {
            "title": "Status",
            "type": "object",
            "properties": {
              "op": {
                "enum": [
                  "replace",
                  "test"
                ],
                "type": "string"
              },
              "value": {
                "enum": [
                  "LetAgreed"
                ],
                "type": "string",
                "example": "LetAgreed"
              },
              "path": {
                "type": "string",
                "default": "/Status"
              }
            },
            "description": "The status to set for a building or property from a restricted set of values.",
            "example": "\n{ \n    \"path\": \"/Status\", \n    \"op\": \"add\", \n    \"value\": \"LetAgreed\" \n}"
          },
          {
            "title": "Property Sub Type",
            "type": "object",
            "properties": {
              "op": {
                "enum": [
                  "replace",
                  "test"
                ],
                "type": "string"
              },
              "value": {
                "enum": [
                  "NotSpecified",
                  "HouseDetached",
                  "HouseSemiDetached",
                  "HouseTownhouse",
                  "HouseMews",
                  "HouseTerraced",
                  "HouseEndTerrace",
                  "Flat",
                  "FlatPenthouse",
                  "LandBuildingPlot",
                  "Farm",
                  "Apartment",
                  "CottageDetached",
                  "ApartmentAboveShop",
                  "BungalowSemiDetached",
                  "BungalowDetached",
                  "BarnConversion",
                  "HouseLowBuild",
                  "ApartmentLoft",
                  "ChaletSemiDetached",
                  "Shop",
                  "Maisonette",
                  "HouseVilla",
                  "BarnConversionBungalow",
                  "Land",
                  "ApartmentBasement",
                  "ChaletDetached",
                  "ApartmentConversion",
                  "ApartmentDoubleUpper",
                  "ApartmentDuplex",
                  "ApartmentGarden",
                  "MobileHome",
                  "ParkHome",
                  "Hotel",
                  "ApartmentMansionBlock",
                  "ApartmentPenthouse",
                  "ApartmentPurposeBuilt",
                  "ApartmentRetirement",
                  "ApartmentStudio",
                  "ApartmentSheltered",
                  "ApartmentTriplex",
                  "BarnConversionHouse",
                  "BarnConversionUnconverted",
                  "Bungalow",
                  "BungalowDormerTerrace",
                  "BungalowDormerDetached",
                  "BungalowDormerSemiDetached",
                  "BungalowLodge",
                  "BungalowSheltered",
                  "BungalowTerrace",
                  "Cabana",
                  "ChapelConverted",
                  "ChapelUnconverted",
                  "CottageSemiDetached",
                  "CottageTerraced",
                  "CountryHome",
                  "CountryHomeEstate",
                  "DevelopmentProperty",
                  "FarmCommercial",
                  "FarmResidential",
                  "FlatAboveShop",
                  "FlatBasement",
                  "FlatConversion",
                  "FlatDoubleUpper",
                  "FlatDuplex",
                  "FlatGarden",
                  "FlatLoft",
                  "FlatMansionBlock",
                  "FlatPurposeBuilt",
                  "FlatRetirement",
                  "FlatStudio",
                  "FlatSheltered",
                  "FlatTriplex",
                  "Garage",
                  "GarageLockup",
                  "House",
                  "HouseBackToBack",
                  "HouseEndMews",
                  "HouseLinkDetached",
                  "HouseLodge",
                  "HouseMidQuasi",
                  "HouseMidTerrace",
                  "HouseQuasi",
                  "HouseQuasiSemi",
                  "HouseRetirement",
                  "HouseSheltered",
                  "HouseTerraceInnerThrough",
                  "HouseEndTownhouse",
                  "LandDevelopment",
                  "LandGrazing",
                  "LandPaddock",
                  "LandArable",
                  "LandPasture",
                  "LandSmallholding",
                  "LandWoodland",
                  "MaisonetteDuplex",
                  "MaisonetteGarden",
                  "MaisonetteLower",
                  "MaisonetteUpper",
                  "Studio",
                  "StudioConversion",
                  "StudioPurposeBuilt",
                  "BedandBreakfast",
                  "Business",
                  "BusinessAsGoingConcern",
                  "Care",
                  "Catering",
                  "Commercial",
                  "Equestrian",
                  "Factory",
                  "GaragePetrolStation",
                  "GuestHouse",
                  "IndustrialUnit",
                  "Office",
                  "PublicHouse",
                  "Retail",
                  "Warehouse",
                  "Coachhouse",
                  "ShopWithLivingAccommodation",
                  "ParkingSpace",
                  "CottageEndTerraced",
                  "BlockOfFlats",
                  "Room",
                  "BungalowLinkDetached",
                  "HouseAttached",
                  "HolidayComplex",
                  "Sporting",
                  "OpenStorageYard",
                  "InvestmentLet",
                  "Leisure",
                  "Estate",
                  "Croft",
                  "HouseLinkSemiDetached",
                  "Educational",
                  "Medical",
                  "SelfBuild",
                  "ServicedOffice",
                  "A1Retail",
                  "A2FinancialAndProfessional",
                  "A3RestaurantsAndCafes",
                  "D1NonResidentInstitutions",
                  "D2AssemblyAndLeisure",
                  "Nash",
                  "Stucco",
                  "MixedUse",
                  "RoomToRent",
                  "Renovation",
                  "Villa",
                  "Investment",
                  "Workshop",
                  "ManorHouse",
                  "CountryResidence",
                  "VictorianResidence",
                  "CharacterProperty",
                  "HouseWithLand",
                  "Smallholding2To50Acres",
                  "CountryHouse",
                  "Paddock",
                  "AmenityLand",
                  "GrassField",
                  "LandWithBuildings",
                  "Allotments",
                  "ArableLand",
                  "Woodland",
                  "HousesWithland",
                  "Farm50PlusAcres",
                  "DormerDetached",
                  "DormerSemi",
                  "HolidayChalet",
                  "HouseWithAnnexe",
                  "LodgingHouse",
                  "Cottage",
                  "ExLocalAuthority",
                  "BeachHut",
                  "StudentProperty",
                  "CharacterPropertyDetached",
                  "CharacterPropertySemiDetached",
                  "CharacterPropertyTerrace",
                  "FlatApartment",
                  "Wing",
                  "ChaletBungalowDetached",
                  "ChaletBungalowSemiDetached",
                  "Fishing",
                  "FarmHouse",
                  "DevelopmentOpportunity",
                  "Other",
                  "HouseBoat",
                  "PropertyWithLand",
                  "HouseCountryLessThan2",
                  "HouseSmallholding2to25Acres",
                  "HouseFarm25Acres",
                  "HouseDerelictForConversion"
                ],
                "type": "string",
                "example": "Flat, Land, Shop"
              },
              "path": {
                "type": "string",
                "default": "/PropertySubType"
              }
            },
            "description": "The sub type of the building or property.",
            "example": "\n{ \n    \"path\": \"/PropertySubType\", \n    \"op\": \"add\", \n    \"value\": \"Flat, Land, Shop\" \n}"
          },
          {
            "title": "Tenure",
            "type": "object",
            "properties": {
              "op": {
                "enum": [
                  "replace",
                  "test"
                ],
                "type": "string"
              },
              "value": {
                "enum": [
                  "LetAgreed"
                ],
                "type": "string",
                "example": "Freehold, Leasehold"
              },
              "path": {
                "type": "string",
                "default": "/Tenure"
              }
            },
            "description": "The tenure of the building or property.",
            "example": "\n{ \n    \"path\": \"/Tenure\", \n    \"op\": \"add\", \n    \"value\": \"Freehold, Leasehold\" \n}"
          },
          {
            "title": "Year Built",
            "type": "object",
            "properties": {
              "op": {
                "enum": [
                  "replace",
                  "test"
                ],
                "type": "string"
              },
              "value": {
                "type": "integer",
                "example": "2000"
              },
              "path": {
                "type": "string",
                "default": "/YearBuilt"
              }
            },
            "description": "The year build of a building or property.",
            "example": "\n{ \n    \"path\": \"/YearBuilt\", \n    \"op\": \"replace\", \n    \"value\": 2000\n}"
          },
          {
            "title": "New Build",
            "type": "object",
            "properties": {
              "op": {
                "enum": [
                  "replace",
                  "test"
                ],
                "type": "string"
              },
              "value": {
                "type": "boolean",
                "example": "true"
              },
              "path": {
                "type": "string",
                "default": "/NewBuild"
              }
            },
            "description": "The flag to indicate if building or property is new build.",
            "example": "\n{ \n    \"path\": \"/NewBuild\", \n    \"op\": \"replace\", \n    \"value\": true\n}"
          },
          {
            "title": "Bedrooms",
            "type": "object",
            "properties": {
              "op": {
                "enum": [
                  "replace",
                  "test"
                ],
                "type": "string"
              },
              "value": {
                "type": "integer",
                "example": "2"
              },
              "path": {
                "type": "string",
                "default": "/Bedrooms"
              }
            },
            "description": "The number of bedrooms in the building or property.",
            "example": "\n{ \n    \"path\": \"/Bedrooms\", \n    \"op\": \"replace\", \n    \"value\": 2\n}"
          },
          {
            "title": "Bathrooms",
            "type": "object",
            "properties": {
              "op": {
                "enum": [
                  "replace",
                  "test"
                ],
                "type": "string"
              },
              "value": {
                "type": "integer",
                "example": "2"
              },
              "path": {
                "type": "string",
                "default": "/Bathrooms"
              }
            },
            "description": "The number of bathrooms in the building or property.",
            "example": "\n{ \n    \"path\": \"/Bathrooms\", \n    \"op\": \"replace\", \n    \"value\": 2\n}"
          },
          {
            "title": "Receptions",
            "type": "object",
            "properties": {
              "op": {
                "enum": [
                  "replace",
                  "test"
                ],
                "type": "string"
              },
              "value": {
                "type": "integer",
                "example": "1"
              },
              "path": {
                "type": "string",
                "default": "/Receptions"
              }
            },
            "description": "The number of receptions in the building or property.",
            "example": "\n{ \n    \"path\": \"/Receptions\", \n    \"op\": \"replace\", \n    \"value\": 1\n}"
          },
          {
            "title": "Land Area In Acres",
            "type": "object",
            "properties": {
              "op": {
                "enum": [
                  "replace",
                  "test"
                ],
                "type": "string"
              },
              "value": {
                "type": "number",
                "example": "1.0"
              },
              "path": {
                "type": "string",
                "default": "/LandAreaInAcres"
              }
            },
            "description": "The land area in acres in the building or property.",
            "example": "\n{ \n    \"path\": \"/LandAreaInAcres\", \n    \"op\": \"replace\", \n    \"value\": 1.0\n}"
          },
          {
            "title": "Floor Area In Square Feet",
            "type": "object",
            "properties": {
              "op": {
                "enum": [
                  "replace",
                  "test"
                ],
                "type": "string"
              },
              "value": {
                "type": "number",
                "example": "1.0"
              },
              "path": {
                "type": "string",
                "default": "/FloorAreaInSquareFeet"
              }
            },
            "description": "The floor area in square feet of the building or property..",
            "example": "\n{ \n    \"path\": \"/FloorAreaInSquareFeet\", \n    \"op\": \"replace\", \n    \"value\": 1.0\n}"
          },
          {
            "title": "Has Asbestos",
            "type": "object",
            "properties": {
              "op": {
                "enum": [
                  "replace",
                  "test"
                ],
                "type": "string"
              },
              "value": {
                "type": "boolean",
                "example": "true"
              },
              "path": {
                "type": "string",
                "default": "/HasAsbestos"
              }
            },
            "description": "The flag to indicate if asbestos is present in the building or property.",
            "example": "\n{ \n    \"path\": \"/HasAsbestos\", \n    \"op\": \"replace\", \n    \"value\": true\n}"
          },
          {
            "title": "Rental Date Available",
            "type": "object",
            "properties": {
              "op": {
                "enum": [
                  "replace",
                  "test"
                ],
                "type": "string"
              },
              "value": {
                "type": "object",
                "example": "\"2024-06-15T13:45:30Z\""
              },
              "path": {
                "type": "string",
                "default": "/RentalDateAvailable"
              }
            },
            "description": "The date that a rental property becomes available.",
            "example": "\n{ \n    \"path\": \"/RentalDateAvailable\", \n    \"op\": \"replace\", \n    \"value\": \"2024-06-15T13:45:30Z\"\n}"
          },
          {
            "title": "Accessibility Requirements - Accessibility",
            "type": "object",
            "properties": {
              "op": {
                "enum": [
                  "replace",
                  "test",
                  "add",
                  "remove"
                ],
                "type": "string"
              },
              "value": {
                "enum": [
                  "LateralLiving",
                  "StepFreeAccess",
                  "WetRoom",
                  "WheelchairAccessible",
                  "DisabledFeatures",
                  "LevelAccess",
                  "RampedAccess",
                  "LiftAccess",
                  "StairLift",
                  "WideDoorways",
                  "LevelAccessShower",
                  "VariableHeightKitchenSurfaces"
                ],
                "type": "string",
                "example": "LateralLiving"
              },
              "path": {
                "type": "string",
                "default": "/AccessibilityRequirements/Accessibility"
              }
            },
            "description": "\n            Accessibility features of the property, such as step-free access\n            ",
            "example": "\n{ \n    \"path\": \"/AccessibilityRequirements/Accessibility/-\", \n    \"op\": \"add\", \n    \"value\": \"LateralLiving\" \n}"
          },
          {
            "title": "Broadband - Supply",
            "type": "object",
            "properties": {
              "op": {
                "enum": [
                  "replace",
                  "test",
                  "add",
                  "remove"
                ],
                "type": "string"
              },
              "value": {
                "enum": [
                  "Adsl",
                  "Cable",
                  "FixedWireless",
                  "Fttc",
                  "Fttp",
                  "Mobile",
                  "None",
                  "Other",
                  "Satellite"
                ],
                "type": "string",
                "example": "Adsl"
              },
              "path": {
                "type": "string",
                "default": "/Broadband/Supply"
              }
            },
            "description": "\n            Details of the broadband provision for the property including speed\n            ",
            "example": "\n{ \n    \"path\": \"/Broadband/Supply/-\", \n    \"op\": \"add\", \n    \"value\": \"Adsl\" \n}"
          },
          {
            "title": "Broadband - Speed",
            "type": "object",
            "properties": {
              "op": {
                "enum": [
                  "replace",
                  "test",
                  "add",
                  "remove"
                ],
                "type": "string"
              },
              "value": {
                "type": "string",
                "example": "\"\""
              },
              "path": {
                "type": "string",
                "default": "/Broadband/Speed"
              }
            },
            "description": "\n            Details of the broadband provision for the property including speed\n            ",
            "example": "\n{ \n    \"path\": \"/Broadband/Speed\", \n    \"op\": \"replace\", \n    \"value\": \"\"\n}"
          },
          {
            "title": "Building Safety - Issue",
            "type": "object",
            "properties": {
              "op": {
                "enum": [
                  "replace",
                  "test",
                  "add",
                  "remove"
                ],
                "type": "string"
              },
              "value": {
                "type": "string",
                "example": "\"\""
              },
              "path": {
                "type": "string",
                "default": "/BuildingSafety/Issue"
              }
            },
            "description": "\n            Issues with the property's safety\n            ",
            "example": "\n{ \n    \"path\": \"/BuildingSafety/Issue/-\", \n    \"op\": \"add\", \n    \"value\": \"\"\n}"
          },
          {
            "title": "Coastal Erosion",
            "type": "object",
            "properties": {
              "op": {
                "enum": [
                  "replace",
                  "test"
                ],
                "type": "string"
              },
              "value": {
                "type": "boolean",
                "example": "true"
              },
              "path": {
                "type": "string",
                "default": "/CoastalErosion"
              }
            },
            "description": "\n            Whether the property is subject to the risk of coastal erosion\n            ",
            "example": "\n{ \n    \"path\": \"/CoastalErosion\", \n    \"op\": \"replace\", \n    \"value\": true\n}"
          },
          {
            "title": "Construction - Material",
            "type": "object",
            "properties": {
              "op": {
                "enum": [
                  "replace",
                  "test",
                  "add",
                  "remove"
                ],
                "type": "string"
              },
              "value": {
                "type": "string",
                "example": "\"brick\""
              },
              "path": {
                "type": "string",
                "default": "/Construction/Material"
              }
            },
            "description": "\n            Types of construction of the property, eg tile, brick.\n            ",
            "example": "\n{ \n    \"path\": \"/Construction/Material/-\", \n    \"op\": \"add\", \n    \"value\": \"brick\"\n}"
          },
          {
            "title": "Electricity - Supply",
            "type": "object",
            "properties": {
              "op": {
                "enum": [
                  "replace",
                  "test",
                  "add",
                  "remove"
                ],
                "type": "string"
              },
              "value": {
                "enum": [
                  "MainsSupply",
                  "PrivateSupply",
                  "SolarPvPanels",
                  "WindTurbine",
                  "Generator",
                  "Other"
                ],
                "type": "string",
                "example": "MainsSupply"
              },
              "path": {
                "type": "string",
                "default": "/Electricity/Supply"
              }
            },
            "description": "\n            The types of electricity supply available to the property\n            ",
            "example": "\n{ \n    \"path\": \"/Electricity/Supply/-\", \n    \"op\": \"add\", \n    \"value\": \"MainsSupply\" \n}"
          },
          {
            "title": "Flooding Risks - Sources Of Flooding - Source",
            "type": "object",
            "properties": {
              "op": {
                "enum": [
                  "replace",
                  "test",
                  "add",
                  "remove"
                ],
                "type": "string"
              },
              "value": {
                "enum": [
                  "River",
                  "Sea",
                  "Groundwater",
                  "Lake",
                  "Reservoir",
                  "Other"
                ],
                "type": "string",
                "example": "River"
              },
              "path": {
                "type": "string",
                "default": "/FloodingRisks/SourcesOfFlooding/Source"
              }
            },
            "description": "\n            Details of any flooding risks to the property including their source\n            ",
            "example": "\n{ \n    \"path\": \"/FloodingRisks/SourcesOfFlooding/Source/-\", \n    \"op\": \"add\", \n    \"value\": \"River\" \n}"
          },
          {
            "title": "Flooding Risks - Flooded Within Last 5 Years",
            "type": "object",
            "properties": {
              "op": {
                "enum": [
                  "replace",
                  "test",
                  "add",
                  "remove"
                ],
                "type": "string"
              },
              "value": {
                "type": "boolean",
                "example": "true"
              },
              "path": {
                "type": "string",
                "default": "/FloodingRisks/FloodedWithinLast5Years"
              }
            },
            "description": "\n            Details of any flooding risks to the property including their source\n            ",
            "example": "\n{ \n    \"path\": \"/FloodingRisks/FloodedWithinLast5Years\", \n    \"op\": \"replace\", \n    \"value\": true\n}"
          },
          {
            "title": "Flooding Risks - Flood Defenses Present",
            "type": "object",
            "properties": {
              "op": {
                "enum": [
                  "replace",
                  "test",
                  "add",
                  "remove"
                ],
                "type": "string"
              },
              "value": {
                "type": "boolean",
                "example": "true"
              },
              "path": {
                "type": "string",
                "default": "/FloodingRisks/FloodDefensesPresent"
              }
            },
            "description": "\n            Details of any flooding risks to the property including their source\n            ",
            "example": "\n{ \n    \"path\": \"/FloodingRisks/FloodDefensesPresent\", \n    \"op\": \"replace\", \n    \"value\": true\n}"
          },
          {
            "title": "Known Planning Considerations",
            "type": "object",
            "properties": {
              "op": {
                "enum": [
                  "replace",
                  "test"
                ],
                "type": "string"
              },
              "value": {
                "type": "string",
                "example": "\"\""
              },
              "path": {
                "type": "string",
                "default": "/KnownPlanningConsiderations"
              }
            },
            "description": "\n            Any planning considerations that are known\n            ",
            "example": "\n{ \n    \"path\": \"/KnownPlanningConsiderations\", \n    \"op\": \"replace\", \n    \"value\": \"\"\n}"
          },
          {
            "title": "Heating - Source",
            "type": "object",
            "properties": {
              "op": {
                "enum": [
                  "replace",
                  "test",
                  "add",
                  "remove"
                ],
                "type": "string"
              },
              "value": {
                "enum": [
                  "BiomassBoiler",
                  "Communal",
                  "ElectricMains",
                  "ElectricRoomHeaters",
                  "GasMains",
                  "HeatPumpAirSource",
                  "HeatPumpGroundSource",
                  "Lpg",
                  "NightStorageHeaters",
                  "Oil",
                  "Other",
                  "SolarPanels",
                  "SolarPhotovoltaicThermal",
                  "SolarThermal",
                  "UnderFloorHeating",
                  "WoodBurner",
                  "OpenFire"
                ],
                "type": "string",
                "example": "BiomassBoiler"
              },
              "path": {
                "type": "string",
                "default": "/Heating/Source"
              }
            },
            "description": "\n            How the property can be heated\n            ",
            "example": "\n{ \n    \"path\": \"/Heating/Source/-\", \n    \"op\": \"add\", \n    \"value\": \"BiomassBoiler\" \n}"
          },
          {
            "title": "Mining Risks - Coalfields",
            "type": "object",
            "properties": {
              "op": {
                "enum": [
                  "replace",
                  "test",
                  "add",
                  "remove"
                ],
                "type": "string"
              },
              "value": {
                "type": "boolean",
                "example": "true"
              },
              "path": {
                "type": "string",
                "default": "/MiningRisks/Coalfields"
              }
            },
            "description": "\n            What mining risks the property is exposed to \n            ",
            "example": "\n{ \n    \"path\": \"/MiningRisks/Coalfields\", \n    \"op\": \"replace\", \n    \"value\": true\n}"
          },
          {
            "title": "Mining Risks - Other Mining Activities",
            "type": "object",
            "properties": {
              "op": {
                "enum": [
                  "replace",
                  "test",
                  "add",
                  "remove"
                ],
                "type": "string"
              },
              "value": {
                "type": "boolean",
                "example": "true"
              },
              "path": {
                "type": "string",
                "default": "/MiningRisks/OtherMiningActivities"
              }
            },
            "description": "\n            What mining risks the property is exposed to \n            ",
            "example": "\n{ \n    \"path\": \"/MiningRisks/OtherMiningActivities\", \n    \"op\": \"replace\", \n    \"value\": true\n}"
          },
          {
            "title": "Mobile Coverage",
            "type": "object",
            "properties": {
              "op": {
                "enum": [
                  "replace",
                  "test"
                ],
                "type": "string"
              },
              "value": {
                "type": "string",
                "example": "\"\""
              },
              "path": {
                "type": "string",
                "default": "/MobileCoverage"
              }
            },
            "description": "\n            The mobile coverage for the property\n            ",
            "example": "\n{ \n    \"path\": \"/MobileCoverage\", \n    \"op\": \"replace\", \n    \"value\": \"\"\n}"
          },
          {
            "title": "Parking - Parking Type",
            "type": "object",
            "properties": {
              "op": {
                "enum": [
                  "replace",
                  "test",
                  "add",
                  "remove"
                ],
                "type": "string"
              },
              "value": {
                "enum": [
                  "DoubleGarage",
                  "OffStreetParking",
                  "ResidentsParking",
                  "SingleGarage",
                  "Underground",
                  "CommunalCarParkAllocatedSpace",
                  "CommunalCarParkNoAllocatedSpace",
                  "DisabledParkingAvailable",
                  "DisabledParkingNotAvailable",
                  "DrivewayPrivate",
                  "DrivewayShared",
                  "EvChargingPrivate",
                  "EvChargingShared",
                  "Garage",
                  "GarageBloc",
                  "GarageCarport",
                  "GarageDetached",
                  "GarageIntegral",
                  "GatedParking",
                  "NoParkingAvailable",
                  "RearOfProperty",
                  "StreetParkingPermitNotRequired",
                  "StreetParkingPermitRequired",
                  "Undercroft",
                  "UndergroundParkingAllocatedSpace",
                  "UndergroundParkingNoAllocatedSpace",
                  "Other"
                ],
                "type": "string",
                "example": "DoubleGarage"
              },
              "path": {
                "type": "string",
                "default": "/Parking/ParkingType"
              }
            },
            "description": "\n            The parking facilities available to the property\n            ",
            "example": "\n{ \n    \"path\": \"/Parking/ParkingType/-\", \n    \"op\": \"add\", \n    \"value\": \"DoubleGarage\" \n}"
          },
          {
            "title": "Restrictions - Conservation Area",
            "type": "object",
            "properties": {
              "op": {
                "enum": [
                  "replace",
                  "test",
                  "add",
                  "remove"
                ],
                "type": "string"
              },
              "value": {
                "type": "boolean",
                "example": "true"
              },
              "path": {
                "type": "string",
                "default": "/Restrictions/ConservationArea"
              }
            },
            "description": "\n            Any restrictions on the property's use\n            ",
            "example": "\n{ \n    \"path\": \"/Restrictions/ConservationArea\", \n    \"op\": \"replace\", \n    \"value\": true\n}"
          },
          {
            "title": "Restrictions - Lease Restrictions",
            "type": "object",
            "properties": {
              "op": {
                "enum": [
                  "replace",
                  "test",
                  "add",
                  "remove"
                ],
                "type": "string"
              },
              "value": {
                "type": "boolean",
                "example": "true"
              },
              "path": {
                "type": "string",
                "default": "/Restrictions/LeaseRestrictions"
              }
            },
            "description": "\n            Any restrictions on the property's use\n            ",
            "example": "\n{ \n    \"path\": \"/Restrictions/LeaseRestrictions\", \n    \"op\": \"replace\", \n    \"value\": true\n}"
          },
          {
            "title": "Restrictions - Listed Building",
            "type": "object",
            "properties": {
              "op": {
                "enum": [
                  "replace",
                  "test",
                  "add",
                  "remove"
                ],
                "type": "string"
              },
              "value": {
                "type": "boolean",
                "example": "true"
              },
              "path": {
                "type": "string",
                "default": "/Restrictions/ListedBuilding"
              }
            },
            "description": "\n            Any restrictions on the property's use\n            ",
            "example": "\n{ \n    \"path\": \"/Restrictions/ListedBuilding\", \n    \"op\": \"replace\", \n    \"value\": true\n}"
          },
          {
            "title": "Restrictions - Permitted Development",
            "type": "object",
            "properties": {
              "op": {
                "enum": [
                  "replace",
                  "test",
                  "add",
                  "remove"
                ],
                "type": "string"
              },
              "value": {
                "type": "boolean",
                "example": "true"
              },
              "path": {
                "type": "string",
                "default": "/Restrictions/PermittedDevelopment"
              }
            },
            "description": "\n            Any restrictions on the property's use\n            ",
            "example": "\n{ \n    \"path\": \"/Restrictions/PermittedDevelopment\", \n    \"op\": \"replace\", \n    \"value\": true\n}"
          },
          {
            "title": "Restrictions - Real Burdens",
            "type": "object",
            "properties": {
              "op": {
                "enum": [
                  "replace",
                  "test",
                  "add",
                  "remove"
                ],
                "type": "string"
              },
              "value": {
                "type": "boolean",
                "example": "true"
              },
              "path": {
                "type": "string",
                "default": "/Restrictions/RealBurdens"
              }
            },
            "description": "\n            Any restrictions on the property's use\n            ",
            "example": "\n{ \n    \"path\": \"/Restrictions/RealBurdens\", \n    \"op\": \"replace\", \n    \"value\": true\n}"
          },
          {
            "title": "Restrictions - Holiday Home Rental",
            "type": "object",
            "properties": {
              "op": {
                "enum": [
                  "replace",
                  "test",
                  "add",
                  "remove"
                ],
                "type": "string"
              },
              "value": {
                "type": "boolean",
                "example": "true"
              },
              "path": {
                "type": "string",
                "default": "/Restrictions/HolidayHomeRental"
              }
            },
            "description": "\n            Any restrictions on the property's use\n            ",
            "example": "\n{ \n    \"path\": \"/Restrictions/HolidayHomeRental\", \n    \"op\": \"replace\", \n    \"value\": true\n}"
          },
          {
            "title": "Restrictions - Restrictive Covenant",
            "type": "object",
            "properties": {
              "op": {
                "enum": [
                  "replace",
                  "test",
                  "add",
                  "remove"
                ],
                "type": "string"
              },
              "value": {
                "type": "boolean",
                "example": "true"
              },
              "path": {
                "type": "string",
                "default": "/Restrictions/RestrictiveCovenant"
              }
            },
            "description": "\n            Any restrictions on the property's use\n            ",
            "example": "\n{ \n    \"path\": \"/Restrictions/RestrictiveCovenant\", \n    \"op\": \"replace\", \n    \"value\": true\n}"
          },
          {
            "title": "Restrictions - Business From Property",
            "type": "object",
            "properties": {
              "op": {
                "enum": [
                  "replace",
                  "test",
                  "add",
                  "remove"
                ],
                "type": "string"
              },
              "value": {
                "type": "boolean",
                "example": "true"
              },
              "path": {
                "type": "string",
                "default": "/Restrictions/BusinessFromProperty"
              }
            },
            "description": "\n            Any restrictions on the property's use\n            ",
            "example": "\n{ \n    \"path\": \"/Restrictions/BusinessFromProperty\", \n    \"op\": \"replace\", \n    \"value\": true\n}"
          },
          {
            "title": "Restrictions - Property Subletting",
            "type": "object",
            "properties": {
              "op": {
                "enum": [
                  "replace",
                  "test",
                  "add",
                  "remove"
                ],
                "type": "string"
              },
              "value": {
                "type": "boolean",
                "example": "true"
              },
              "path": {
                "type": "string",
                "default": "/Restrictions/PropertySubletting"
              }
            },
            "description": "\n            Any restrictions on the property's use\n            ",
            "example": "\n{ \n    \"path\": \"/Restrictions/PropertySubletting\", \n    \"op\": \"replace\", \n    \"value\": true\n}"
          },
          {
            "title": "Restrictions - Tree Preservation Order",
            "type": "object",
            "properties": {
              "op": {
                "enum": [
                  "replace",
                  "test",
                  "add",
                  "remove"
                ],
                "type": "string"
              },
              "value": {
                "type": "boolean",
                "example": "true"
              },
              "path": {
                "type": "string",
                "default": "/Restrictions/TreePreservationOrder"
              }
            },
            "description": "\n            Any restrictions on the property's use\n            ",
            "example": "\n{ \n    \"path\": \"/Restrictions/TreePreservationOrder\", \n    \"op\": \"replace\", \n    \"value\": true\n}"
          },
          {
            "title": "Restrictions - Other",
            "type": "object",
            "properties": {
              "op": {
                "enum": [
                  "replace",
                  "test",
                  "add",
                  "remove"
                ],
                "type": "string"
              },
              "value": {
                "type": "boolean",
                "example": "true"
              },
              "path": {
                "type": "string",
                "default": "/Restrictions/Other"
              }
            },
            "description": "\n            Any restrictions on the property's use\n            ",
            "example": "\n{ \n    \"path\": \"/Restrictions/Other\", \n    \"op\": \"replace\", \n    \"value\": true\n}"
          },
          {
            "title": "Rights And Easements - Right Of Way Public",
            "type": "object",
            "properties": {
              "op": {
                "enum": [
                  "replace",
                  "test"
                ],
                "type": "string"
              },
              "value": {
                "type": "boolean",
                "example": "true"
              },
              "path": {
                "type": "string",
                "default": "/RightsAndEasements/RightOfWayPublic"
              }
            },
            "description": "\n            Any rights or easements over the property\n            ",
            "example": "\n{ \n    \"path\": \"/RightsAndEasements/RightOfWayPublic\", \n    \"op\": \"replace\", \n    \"value\": true\n}"
          },
          {
            "title": "Rights And Easements - Right Of Way Private",
            "type": "object",
            "properties": {
              "op": {
                "enum": [
                  "replace",
                  "test"
                ],
                "type": "string"
              },
              "value": {
                "type": "boolean",
                "example": "true"
              },
              "path": {
                "type": "string",
                "default": "/RightsAndEasements/RightOfWayPrivate"
              }
            },
            "description": "\n            Any rights or easements over the property\n            ",
            "example": "\n{ \n    \"path\": \"/RightsAndEasements/RightOfWayPrivate\", \n    \"op\": \"replace\", \n    \"value\": true\n}"
          },
          {
            "title": "Rights And Easements - Registered Easements Hmlr",
            "type": "object",
            "properties": {
              "op": {
                "enum": [
                  "replace",
                  "test"
                ],
                "type": "string"
              },
              "value": {
                "type": "boolean",
                "example": "true"
              },
              "path": {
                "type": "string",
                "default": "/RightsAndEasements/RegisteredEasementsHmlr"
              }
            },
            "description": "\n            Any rights or easements over the property\n            ",
            "example": "\n{ \n    \"path\": \"/RightsAndEasements/RegisteredEasementsHmlr\", \n    \"op\": \"replace\", \n    \"value\": true\n}"
          },
          {
            "title": "Rights And Easements - Servitudes",
            "type": "object",
            "properties": {
              "op": {
                "enum": [
                  "replace",
                  "test"
                ],
                "type": "string"
              },
              "value": {
                "type": "boolean",
                "example": "true"
              },
              "path": {
                "type": "string",
                "default": "/RightsAndEasements/Servitudes"
              }
            },
            "description": "\n            Any rights or easements over the property\n            ",
            "example": "\n{ \n    \"path\": \"/RightsAndEasements/Servitudes\", \n    \"op\": \"replace\", \n    \"value\": true\n}"
          },
          {
            "title": "Rights And Easements - Shared Driveway",
            "type": "object",
            "properties": {
              "op": {
                "enum": [
                  "replace",
                  "test"
                ],
                "type": "string"
              },
              "value": {
                "type": "boolean",
                "example": "true"
              },
              "path": {
                "type": "string",
                "default": "/RightsAndEasements/SharedDriveway"
              }
            },
            "description": "\n            Any rights or easements over the property\n            ",
            "example": "\n{ \n    \"path\": \"/RightsAndEasements/SharedDriveway\", \n    \"op\": \"replace\", \n    \"value\": true\n}"
          },
          {
            "title": "Rights And Easements - Loft Access",
            "type": "object",
            "properties": {
              "op": {
                "enum": [
                  "replace",
                  "test"
                ],
                "type": "string"
              },
              "value": {
                "type": "boolean",
                "example": "true"
              },
              "path": {
                "type": "string",
                "default": "/RightsAndEasements/LoftAccess"
              }
            },
            "description": "\n            Any rights or easements over the property\n            ",
            "example": "\n{ \n    \"path\": \"/RightsAndEasements/LoftAccess\", \n    \"op\": \"replace\", \n    \"value\": true\n}"
          },
          {
            "title": "Rights And Easements - Drain Access",
            "type": "object",
            "properties": {
              "op": {
                "enum": [
                  "replace",
                  "test"
                ],
                "type": "string"
              },
              "value": {
                "type": "boolean",
                "example": "true"
              },
              "path": {
                "type": "string",
                "default": "/RightsAndEasements/DrainAccess"
              }
            },
            "description": "\n            Any rights or easements over the property\n            ",
            "example": "\n{ \n    \"path\": \"/RightsAndEasements/DrainAccess\", \n    \"op\": \"replace\", \n    \"value\": true\n}"
          },
          {
            "title": "Rights And Easements - Other",
            "type": "object",
            "properties": {
              "op": {
                "enum": [
                  "replace",
                  "test"
                ],
                "type": "string"
              },
              "value": {
                "type": "boolean",
                "example": "true"
              },
              "path": {
                "type": "string",
                "default": "/RightsAndEasements/Other"
              }
            },
            "description": "\n            Any rights or easements over the property\n            ",
            "example": "\n{ \n    \"path\": \"/RightsAndEasements/Other\", \n    \"op\": \"replace\", \n    \"value\": true\n}"
          },
          {
            "title": "Sewerage - Supply",
            "type": "object",
            "properties": {
              "op": {
                "enum": [
                  "replace",
                  "test",
                  "add",
                  "remove"
                ],
                "type": "string"
              },
              "value": {
                "enum": [
                  "Mains",
                  "SepticTank",
                  "DomesticSmallSewageTreatmentPlants",
                  "Cesspit",
                  "Cesspool",
                  "Other"
                ],
                "type": "string",
                "example": "Mains"
              },
              "path": {
                "type": "string",
                "default": "/Sewerage/Supply"
              }
            },
            "description": "\n            Details of the property's sewerage\n            ",
            "example": "\n{ \n    \"path\": \"/Sewerage/Supply/-\", \n    \"op\": \"add\", \n    \"value\": \"Mains\" \n}"
          },
          {
            "title": "Water - Supply",
            "type": "object",
            "properties": {
              "op": {
                "enum": [
                  "replace",
                  "test",
                  "add",
                  "remove"
                ],
                "type": "string"
              },
              "value": {
                "enum": [
                  "Mains",
                  "PrivateWell",
                  "PrivateSpring",
                  "PrivateBorehole",
                  "PublicWell",
                  "PublicSpring",
                  "PublicBorehole",
                  "Other"
                ],
                "type": "string",
                "example": "Mains"
              },
              "path": {
                "type": "string",
                "default": "/Water/Supply"
              }
            },
            "description": "\n            The water supplies available to the property\n            ",
            "example": "\n{ \n    \"path\": \"/Water/Supply/-\", \n    \"op\": \"add\", \n    \"value\": \"Mains\" \n}"
          },
          {
            "title": "Epc - Energy Efficiency Rating Current",
            "type": "object",
            "properties": {
              "op": {
                "enum": [
                  "replace",
                  "test"
                ],
                "type": "string"
              },
              "value": {
                "type": "integer",
                "example": "31"
              },
              "path": {
                "type": "string",
                "default": "/Epc/EnergyEfficiencyRatingCurrent"
              }
            },
            "description": "\n            Current energy efficiency rating\n            ",
            "example": "\n{ \n    \"path\": \"/Epc/EnergyEfficiencyRatingCurrent\", \n    \"op\": \"replace\", \n    \"value\": 31\n}"
          },
          {
            "title": "Epc - Energy Efficiency Rating Potential",
            "type": "object",
            "properties": {
              "op": {
                "enum": [
                  "replace",
                  "test"
                ],
                "type": "string"
              },
              "value": {
                "type": "integer",
                "example": "37"
              },
              "path": {
                "type": "string",
                "default": "/Epc/EnergyEfficiencyRatingPotential"
              }
            },
            "description": "\n            Potential energy efficiency rating\n            ",
            "example": "\n{ \n    \"path\": \"/Epc/EnergyEfficiencyRatingPotential\", \n    \"op\": \"replace\", \n    \"value\": 37\n}"
          },
          {
            "title": "Epc - Exempt",
            "type": "object",
            "properties": {
              "op": {
                "enum": [
                  "replace",
                  "test"
                ],
                "type": "string"
              },
              "value": {
                "type": "boolean",
                "example": "true"
              },
              "path": {
                "type": "string",
                "default": "/Epc/Exempt"
              }
            },
            "description": "\n            Whether listing has an EPC Exemption\n            ",
            "example": "\n{ \n    \"path\": \"/Epc/Exempt\", \n    \"op\": \"replace\", \n    \"value\": true\n}"
          },
          {
            "title": "Epc - Exemption Reason",
            "type": "object",
            "properties": {
              "op": {
                "enum": [
                  "replace",
                  "test"
                ],
                "type": "string"
              },
              "value": {
                "type": "string",
                "example": "\"\""
              },
              "path": {
                "type": "string",
                "default": "/Epc/ExemptionReason"
              }
            },
            "description": "\n            Reason for an EPC Exemption\n            ",
            "example": "\n{ \n    \"path\": \"/Epc/ExemptionReason\", \n    \"op\": \"replace\", \n    \"value\": \"\"\n}"
          },
          {
            "title": "UPRN",
            "type": "object",
            "properties": {
              "op": {
                "enum": [
                  "replace",
                  "test"
                ],
                "type": "string"
              },
              "value": {
                "type": "string",
                "example": "\"123456789012\""
              },
              "path": {
                "type": "string",
                "default": "/UPRN"
              }
            },
            "description": "\n            The UPRN for the property\n            ",
            "example": "\n{ \n    \"path\": \"/UPRN\", \n    \"op\": \"replace\", \n    \"value\": \"123456789012\"\n}"
          },
          {
            "title": "Price",
            "type": "object",
            "properties": {
              "op": {
                "enum": [
                  "replace",
                  "test"
                ],
                "type": "string"
              },
              "value": {
                "type": "number",
                "example": "300000.0"
              },
              "path": {
                "type": "string",
                "default": "/Price"
              }
            },
            "description": "\n            The inventory price, either sale or rental price depending on the property type\n            ",
            "example": "\n{ \n    \"path\": \"/Price\", \n    \"op\": \"replace\", \n    \"value\": 300000.0\n}"
          },
          {
            "title": "Advert Details",
            "type": "object",
            "properties": {
              "op": {
                "enum": [
                  "replace",
                  "test"
                ],
                "type": "string"
              },
              "value": {
                "type": "string",
                "example": "\"Advert text\""
              },
              "path": {
                "type": "string",
                "default": "/AdvertDetails"
              }
            },
            "description": "\n            The Property Advert Summary\n            ",
            "example": "\n{ \n    \"path\": \"/AdvertDetails\", \n    \"op\": \"replace\", \n    \"value\": \"Advert text\"\n}"
          }
        ]
      },
      "SystemTextJsonPatch.Operations.Operation1_Alto.Inventory.Api.Models.Responses.KeySetPatch": {
        "anyOf": [
          {
            "title": "Description",
            "type": "object",
            "properties": {
              "op": {
                "enum": [
                  "replace",
                  "test"
                ],
                "type": "string"
              },
              "value": {
                "type": "string",
                "example": "\"Front door keys\""
              },
              "path": {
                "type": "string",
                "default": "/Description"
              }
            },
            "description": "The description of the key set.",
            "example": "\n{ \n    \"path\": \"/Description\", \n    \"op\": \"replace\", \n    \"value\": \"Front door keys\"\n}"
          },
          {
            "title": "Key Count",
            "type": "object",
            "properties": {
              "op": {
                "enum": [
                  "replace",
                  "test"
                ],
                "type": "string"
              },
              "value": {
                "type": "integer",
                "example": "2"
              },
              "path": {
                "type": "string",
                "default": "/KeyCount"
              }
            },
            "description": "The number of keys in the set.",
            "example": "\n{ \n    \"path\": \"/KeyCount\", \n    \"op\": \"replace\", \n    \"value\": 2\n}"
          },
          {
            "title": "Status",
            "type": "object",
            "properties": {
              "op": {
                "enum": [
                  "replace",
                  "test"
                ],
                "type": "string"
              },
              "value": {
                "enum": [
                  "Unspecified",
                  "In",
                  "Out",
                  "Lost",
                  "Returned"
                ],
                "type": "string",
                "example": "In"
              },
              "path": {
                "type": "string",
                "default": "/Status"
              }
            },
            "description": "The status of the key set.",
            "example": "\n{ \n    \"path\": \"/Status\", \n    \"op\": \"add\", \n    \"value\": \"In\" \n}"
          },
          {
            "title": "Notes",
            "type": "object",
            "properties": {
              "op": {
                "enum": [
                  "replace",
                  "test"
                ],
                "type": "string"
              },
              "value": {
                "type": "string",
                "example": "\"Spare set held at branch\""
              },
              "path": {
                "type": "string",
                "default": "/Notes"
              }
            },
            "description": "Notes for the key set.",
            "example": "\n{ \n    \"path\": \"/Notes\", \n    \"op\": \"replace\", \n    \"value\": \"Spare set held at branch\"\n}"
          },
          {
            "title": "Expected Date In",
            "type": "object",
            "properties": {
              "op": {
                "enum": [
                  "replace",
                  "test"
                ],
                "type": "string"
              },
              "value": {
                "type": "object",
                "example": "\"2026-06-15T13:45:30Z\""
              },
              "path": {
                "type": "string",
                "default": "/ExpectedDateIn"
              }
            },
            "description": "The expected date the keys will be returned.",
            "example": "\n{ \n    \"path\": \"/ExpectedDateIn\", \n    \"op\": \"replace\", \n    \"value\": \"2026-06-15T13:45:30Z\"\n}"
          },
          {
            "title": "Holder Type",
            "type": "object",
            "properties": {
              "op": {
                "enum": [
                  "replace",
                  "test"
                ],
                "type": "string"
              },
              "value": {
                "enum": [
                  "Contact",
                  "User"
                ],
                "type": "string",
                "example": "Contact"
              },
              "path": {
                "type": "string",
                "default": "/HolderType"
              }
            },
            "description": "The type of holder when keys are out.",
            "example": "\n{ \n    \"path\": \"/HolderType\", \n    \"op\": \"add\", \n    \"value\": \"Contact\" \n}"
          },
          {
            "title": "Holder Id",
            "type": "object",
            "properties": {
              "op": {
                "enum": [
                  "replace",
                  "test"
                ],
                "type": "string"
              },
              "value": {
                "type": "integer",
                "example": "12345"
              },
              "path": {
                "type": "string",
                "default": "/HolderId"
              }
            },
            "description": "The identifier of the holder when keys are out.",
            "example": "\n{ \n    \"path\": \"/HolderId\", \n    \"op\": \"replace\", \n    \"value\": 12345\n}"
          }
        ]
      },
      "Contact": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "The unique identifier of the contact",
            "nullable": true,
            "example": "123456"
          },
          "links": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Link"
            },
            "description": "Links to related contact.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "A contact that has been associated to the lead; if no contact has been associated to a lead, then will return null"
      },
      "EnquirerAddress": {
        "type": "object",
        "properties": {
          "houseName": {
            "type": "string",
            "description": "The house or flat name of the enquirer's address",
            "nullable": true,
            "example": "Oak Lodge"
          },
          "houseNumber": {
            "type": "string",
            "description": "The house or flat number of the enquirer's address",
            "nullable": true,
            "example": "14"
          },
          "street": {
            "type": "string",
            "description": "The street of the enquirer's address",
            "nullable": true,
            "example": "Oak Street"
          },
          "locality": {
            "type": "string",
            "description": "The locality of the enquirer's address",
            "nullable": true,
            "example": "St Clement"
          },
          "area": {
            "type": "string",
            "description": "The area of the enquirer's address",
            "nullable": true
          },
          "town": {
            "type": "string",
            "description": "The town or city of the enquirer's address",
            "nullable": true,
            "example": "London"
          },
          "county": {
            "type": "string",
            "description": "The county of the enquirer's address",
            "nullable": true,
            "example": "Hampshire"
          },
          "country": {
            "type": "string",
            "description": "The country of the enquirer's address",
            "nullable": true,
            "example": "UK"
          },
          "postcode": {
            "type": "string",
            "description": "The postal code of the enquirer's addres",
            "nullable": true,
            "example": "SW45 3AP"
          }
        },
        "additionalProperties": false,
        "description": "Represents a physical address of the enqurier"
      },
      "EnquirerAddressRequest": {
        "type": "object",
        "properties": {
          "houseName": {
            "maxLength": 20,
            "minLength": 0,
            "type": "string",
            "description": "The house or flat name of the enquirer's address",
            "nullable": true,
            "example": "Oak Lodge"
          },
          "houseNumber": {
            "maxLength": 20,
            "minLength": 0,
            "type": "string",
            "description": "The house or flat number of the enquirer's address",
            "nullable": true,
            "example": "14"
          },
          "street": {
            "maxLength": 200,
            "minLength": 0,
            "type": "string",
            "description": "The street of the enquirer's address",
            "nullable": true,
            "example": "Oak Street"
          },
          "locality": {
            "maxLength": 200,
            "minLength": 0,
            "type": "string",
            "description": "The locality of the enquirer's address",
            "nullable": true,
            "example": "St Clement"
          },
          "area": {
            "maxLength": 200,
            "minLength": 0,
            "type": "string",
            "description": "The area of the enquirer's address",
            "nullable": true
          },
          "town": {
            "maxLength": 200,
            "minLength": 0,
            "type": "string",
            "description": "The town or city of the enquirer's address",
            "nullable": true,
            "example": "London"
          },
          "county": {
            "maxLength": 200,
            "minLength": 0,
            "type": "string",
            "description": "The county of the enquirer's address",
            "nullable": true,
            "example": "Hampshire"
          },
          "country": {
            "maxLength": 200,
            "minLength": 0,
            "type": "string",
            "description": "The country of the enquirer's address",
            "nullable": true,
            "example": "UK"
          },
          "postcode": {
            "maxLength": 200,
            "minLength": 0,
            "type": "string",
            "description": "The postal code of the enquirer's addres",
            "nullable": true,
            "example": "SW45 3AP"
          }
        },
        "additionalProperties": false
      },
      "EnquirerDetails": {
        "type": "object",
        "properties": {
          "title": {
            "type": "string",
            "description": "The formal title of the enquirer",
            "nullable": true,
            "example": "Ms"
          },
          "forename": {
            "type": "string",
            "description": "The first or given name of the enquirer",
            "nullable": true,
            "example": "Jane"
          },
          "surname": {
            "type": "string",
            "description": "The surname of the enquirer",
            "nullable": true,
            "example": "Smith"
          },
          "phoneNumberDay": {
            "type": "string",
            "description": "The day time phone number of the enquirer",
            "nullable": true,
            "example": "07683726192"
          },
          "phoneNumberEve": {
            "type": "string",
            "description": "The evening phone number of the enquirer",
            "nullable": true,
            "example": "07683726192"
          },
          "email": {
            "type": "string",
            "description": "The email address of the enquirer",
            "nullable": true,
            "example": "jane.smith@enquirer.com"
          },
          "address": {
            "allOf": [
              {
                "$ref": "#/components/schemas/EnquirerAddress"
              }
            ],
            "description": "Represents a physical address of the enqurier",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "The lead's enquirer contact details that have been submitted as part of the enquiry;"
      },
      "EnquirerDetailsRequest": {
        "required": [
          "forename"
        ],
        "type": "object",
        "properties": {
          "title": {
            "maxLength": 20,
            "minLength": 0,
            "type": "string",
            "description": "The formal title of the enquirer",
            "nullable": true,
            "example": "Ms"
          },
          "forename": {
            "maxLength": 200,
            "minLength": 0,
            "type": "string",
            "description": "The first or given name of the enquirer",
            "example": "Jane"
          },
          "surname": {
            "maxLength": 200,
            "minLength": 0,
            "type": "string",
            "description": "The surname of the enquirer",
            "nullable": true,
            "example": "Smith"
          },
          "phoneNumberDay": {
            "maxLength": 200,
            "minLength": 0,
            "type": "string",
            "description": "The day time phone number of the enquirer",
            "nullable": true,
            "example": "07683726192"
          },
          "phoneNumberEve": {
            "maxLength": 200,
            "minLength": 0,
            "type": "string",
            "description": "The evening phone number of the enquirer",
            "nullable": true,
            "example": "07683726192"
          },
          "email": {
            "maxLength": 200,
            "minLength": 0,
            "type": "string",
            "description": "The email address of the enquirer",
            "format": "email",
            "nullable": true,
            "example": "jane.smith@enquirer.com"
          },
          "address": {
            "allOf": [
              {
                "$ref": "#/components/schemas/EnquirerAddressRequest"
              }
            ],
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "EnquiryType": {
        "enum": [
          "Unspecified",
          "LookingToBuy",
          "LookingToLet",
          "LookingToRent",
          "LookingToSell",
          "Other"
        ],
        "type": "string"
      },
      "Error": {
        "type": "object",
        "properties": {
          "code": {
            "type": "string",
            "nullable": true
          },
          "message": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ErrorsResponse": {
        "type": "object",
        "properties": {
          "errors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Error"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Lead": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "The unique identifier of the lead",
            "nullable": true,
            "example": "76543"
          },
          "branchId": {
            "type": "string",
            "description": "The identifier of the branch the lead belongs to",
            "nullable": true,
            "example": "11"
          },
          "leadStatus": {
            "allOf": [
              {
                "$ref": "#/components/schemas/LeadStatus"
              }
            ],
            "description": "The processing state of the lead",
            "example": "Accepted"
          },
          "leadSource": {
            "allOf": [
              {
                "$ref": "#/components/schemas/LeadSource"
              }
            ],
            "description": "The denotes where the lead's enquiry was submitted",
            "example": "Zoopla"
          },
          "enquiryDate": {
            "type": "string",
            "description": "The date and time in ISO 8601 format that the lead enquired",
            "format": "date-time",
            "example": "2024-11-01T14:07:17.0000000+00:00"
          },
          "createdDate": {
            "type": "string",
            "description": "The date and time in ISO 8601 format that the lead was imported into Alto eg. the status of the lead has changed to \"Processed\"",
            "format": "date-time",
            "example": "2024-11-01T14:07:17.0000000+00:00"
          },
          "modifiedDate": {
            "type": "string",
            "description": "The date and time in ISO 8601 format that the lead was last modified eg. the status of the lead has changed from \"Processed\" to \"Accepted\"",
            "format": "date-time",
            "example": "2024-11-01T14:07:17.0000000+00:00"
          },
          "enquiryType": {
            "allOf": [
              {
                "$ref": "#/components/schemas/EnquiryType"
              }
            ],
            "description": "The type of enquiry the lead has made",
            "example": "LookingToBuy"
          },
          "enquirerDetails": {
            "allOf": [
              {
                "$ref": "#/components/schemas/EnquirerDetails"
              }
            ],
            "description": "The lead's enquirer contact details that have been submitted as part of the enquiry;",
            "nullable": true
          },
          "contact": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Contact"
              }
            ],
            "description": "A contact that has been associated to the lead; if no contact has been associated to a lead, then will return null",
            "nullable": true
          },
          "properties": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Property"
            },
            "description": "A collection of properties that the lead has enquired against; if no properties have been enquired against, then returns an empty collection",
            "nullable": true
          },
          "comment": {
            "type": "string",
            "description": "Comment or note for the lead",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "LeadPagedResponse": {
        "type": "object",
        "properties": {
          "meta": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ],
            "description": "The metadata for the response.",
            "nullable": true
          },
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Lead"
            },
            "description": "The collection of items in the response.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents a paged response containing metadata and a collection of items."
      },
      "LeadPatchJsonPatchDocument": {
        "type": "array",
        "items": {
          "$ref": "#/components/schemas/LeadPatchOperation"
        },
        "description": "Array of operations to perform"
      },
      "LeadPatchOperation": {
        "type": "object",
        "properties": {
          "op": {
            "enum": [
              "replace"
            ],
            "type": "string"
          },
          "value": {
            "type": "string"
          },
          "path": {
            "enum": [
              "/contactId",
              "/leadStatus"
            ],
            "type": "string"
          }
        },
        "example": "{ \"path\": \"/leadStatus\", \"op\": \"replace\", \"value\": \"Rejected\" }"
      },
      "LeadPropertyEnquiry": {
        "type": "object",
        "properties": {
          "propertyId": {
            "type": "string",
            "description": "Unique identifier of the property.",
            "nullable": true
          },
          "price": {
            "type": "number",
            "description": "The price of the property.",
            "format": "double"
          },
          "postcode": {
            "type": "string",
            "description": "The postcode of the property.",
            "nullable": true
          },
          "bedrooms": {
            "type": "integer",
            "description": "The number of bedrooms.",
            "format": "int32",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "LeadSource": {
        "enum": [
          "Unspecified",
          "Agent",
          "RightMove",
          "Vebra",
          "Zoopla",
          "Api",
          "ZooplaAdReachExpress",
          "ZooplaAudienceConnect"
        ],
        "type": "string"
      },
      "LeadStatus": {
        "enum": [
          "Unspecified",
          "Unprocessed",
          "Processed",
          "Rejected",
          "Accepted"
        ],
        "type": "string"
      },
      "PostLeadRequest": {
        "required": [
          "branchId",
          "enquirerDetails",
          "sourceIdentifier"
        ],
        "type": "object",
        "properties": {
          "branchId": {
            "maximum": 2147483647,
            "minimum": 1,
            "type": "integer",
            "description": "Unique identifier for the Alto branch receiving the lead.",
            "format": "int32"
          },
          "enquiryType": {
            "allOf": [
              {
                "$ref": "#/components/schemas/EnquiryType"
              }
            ],
            "description": "Type of enquiry."
          },
          "preferredContactMethod": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PreferredContactMethod"
              }
            ],
            "description": "The enquirer's preferred contact method."
          },
          "preferredContactTime": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PreferredContactTime"
              }
            ],
            "description": "The enquirer's preferred contact time."
          },
          "sourceIdentifier": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "Unique identifier for this lead."
          },
          "enquiryDate": {
            "type": "string",
            "description": "Enquiry date.",
            "format": "date-time",
            "nullable": true
          },
          "enquirerDetails": {
            "allOf": [
              {
                "$ref": "#/components/schemas/EnquirerDetailsRequest"
              }
            ],
            "description": "The enquirer's contact details."
          },
          "propertyEnquiries": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/LeadPropertyEnquiry"
            },
            "description": "Collection of property enquiries",
            "nullable": true
          },
          "comment": {
            "maxLength": 2000,
            "type": "string",
            "description": "Comment from the enquirer.",
            "nullable": true,
            "example": "I am looking for a rental property that allows pets"
          }
        },
        "additionalProperties": false
      },
      "PreferredContactMethod": {
        "enum": [
          "Unspecified",
          "Email",
          "Phone",
          "Post"
        ],
        "type": "string"
      },
      "PreferredContactTime": {
        "enum": [
          "Unspecified",
          "Afternoon",
          "Anytime",
          "Evening",
          "Morning"
        ],
        "type": "string"
      },
      "Property": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "The unique identifier of the property",
            "nullable": true,
            "example": "123456"
          },
          "links": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Link"
            },
            "description": "Links to related property.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "GuarantorIdData": {
        "type": "object",
        "properties": {
          "guarantorContactId": {
            "type": "integer",
            "format": "int32"
          },
          "guarantorId": {
            "type": "integer",
            "format": "int32",
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "PatchReferenceCheckRequest": {
        "type": "object",
        "properties": {
          "status": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ReferenceCheckDto": {
        "type": "object",
        "properties": {
          "referenceCheckId": {
            "type": "string",
            "format": "uuid"
          },
          "tenancyId": {
            "type": "integer",
            "format": "int32"
          },
          "tenantId": {
            "type": "string",
            "nullable": true
          },
          "status": {
            "$ref": "#/components/schemas/ReferenceCheckStatus"
          },
          "createdDate": {
            "type": "string",
            "format": "date-time"
          },
          "createdById": {
            "type": "integer",
            "format": "int32"
          },
          "modifiedDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "modifiedBy": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ReferenceCheckPagedResultsDto": {
        "type": "object",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/Meta"
          },
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReferenceCheckDto"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ReferenceCheckStatus": {
        "enum": [
          "Pending",
          "Completed"
        ],
        "type": "string"
      },
      "TenantGuarantorData": {
        "type": "object",
        "properties": {
          "tenantId": {
            "type": "integer",
            "format": "int32"
          },
          "guarantorIds": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GuarantorIdData"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "TenantGuarantorDataItemCollection": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TenantGuarantorData"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "FilterListingResponse": {
        "type": "object",
        "properties": {
          "propertyId": {
            "type": "integer",
            "description": "The unique identifier of the property.",
            "format": "int32"
          },
          "branchId": {
            "type": "string",
            "description": "The unique identifier of the branch.",
            "nullable": true
          },
          "status": {
            "allOf": [
              {
                "$ref": "#/components/schemas/InventoryStatus"
              }
            ],
            "description": "The status of the property."
          },
          "bedrooms": {
            "type": "integer",
            "description": "The number of bedrooms in the property.",
            "format": "int32",
            "nullable": true
          },
          "priceQualifier": {
            "type": "string",
            "description": "The price qualifier on the property.",
            "nullable": true
          },
          "currency": {
            "type": "string",
            "description": "The currency associated with the price.",
            "nullable": true
          },
          "price": {
            "type": "number",
            "description": "The price of the property.",
            "format": "double",
            "nullable": true
          },
          "auction": {
            "type": "boolean",
            "description": "Whether the property is for auction.",
            "nullable": true
          },
          "auctionClosingDate": {
            "type": "string",
            "description": "The closing date of the auction.",
            "format": "date-time",
            "nullable": true
          },
          "createdDate": {
            "type": "string",
            "description": "The date and time the property was created.",
            "format": "date-time",
            "nullable": true
          },
          "modifiedDate": {
            "type": "string",
            "description": "The date and time the property was last modified.",
            "format": "date-time",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "FilterListingResponsePagedResponse": {
        "type": "object",
        "properties": {
          "meta": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Meta"
              }
            ],
            "nullable": true
          },
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FilterListingResponse"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "InventoryStatus": {
        "enum": [
          "Unspecified",
          "Appraisal",
          "Available",
          "UnderOffer",
          "Completed",
          "Let",
          "LetAgreed",
          "LetMarketing",
          "Archived",
          "Suspended",
          "Withdrawn",
          "Instructed",
          "NotInstructed",
          "ExternallyLet",
          "UnderOfferMarketing",
          "UnderOfferAvailable",
          "Exchanged",
          "ExternallySold",
          "Reserved"
        ],
        "type": "string"
      },
      "ListingAuctionResponse": {
        "type": "object",
        "properties": {
          "auction": {
            "type": "boolean",
            "description": "Whether the property is for auction.",
            "nullable": true
          },
          "auctionClosingDate": {
            "type": "string",
            "description": "The closing date of the auction.",
            "format": "date-time",
            "nullable": true
          },
          "auctionReserve": {
            "type": "number",
            "description": "The reserve amount for the auction.",
            "format": "double",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ListingBrochureResponse": {
        "type": "object",
        "properties": {
          "description": {
            "type": "string",
            "nullable": true
          },
          "url": {
            "type": "string",
            "nullable": true
          },
          "modifiedDate": {
            "type": "string",
            "format": "date-time"
          },
          "defaultPropertyBrochure": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "ListingBulletResponse": {
        "type": "object",
        "properties": {
          "orderIndex": {
            "type": "integer",
            "format": "int32"
          },
          "content": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ListingEpcResponse": {
        "type": "object",
        "properties": {
          "energyEfficiencyRatingCurrent": {
            "type": "integer",
            "description": "Current energy efficiency rating",
            "format": "int32",
            "nullable": true
          },
          "energyEfficiencyRatingPotential": {
            "type": "integer",
            "description": "Potential energy efficiency rating",
            "format": "int32",
            "nullable": true
          },
          "energyEfficiencyBandCurrent": {
            "type": "string",
            "description": "Current energy efficiency band",
            "nullable": true,
            "readOnly": true
          },
          "energyEfficiencyBandPotential": {
            "type": "string",
            "description": "Potential energy efficiency band",
            "nullable": true,
            "readOnly": true
          },
          "exempt": {
            "type": "boolean",
            "description": "Whether listing has an EPC Exemption"
          },
          "exemptionReason": {
            "type": "string",
            "description": "Reason for an EPC Exemption",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ListingImageDetailResponse": {
        "type": "object",
        "properties": {
          "src": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ListingImageResponse": {
        "type": "object",
        "properties": {
          "order": {
            "type": "integer",
            "format": "int32"
          },
          "main": {
            "type": "boolean"
          },
          "modifiedDate": {
            "type": "string",
            "format": "date-time"
          },
          "sizes": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ListingSizesResponse"
              }
            ],
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ListingImagesResponse": {
        "type": "object",
        "properties": {
          "galleryImages": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ListingImageResponse"
            },
            "nullable": true
          },
          "virtualTourImages": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ListingImageResponse"
            },
            "nullable": true
          },
          "virtualTourLinks": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ListingLinkResponse"
            },
            "nullable": true
          },
          "floorplanImages": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ListingImageResponse"
            },
            "nullable": true
          },
          "webLinks": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ListingLinkResponse"
            },
            "nullable": true
          },
          "externalBrochures": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ListingBrochureResponse"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ListingLeaseResponse": {
        "type": "object",
        "properties": {
          "yearsRemaining": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "endDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "sharedOwnership": {
            "type": "boolean",
            "nullable": true
          },
          "sharedOwnershipPercentageShare": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "sharedOwnershipRent": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "sharedOwnershipFrequency": {
            "type": "string",
            "nullable": true
          },
          "serviceCharge": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "annualGroundRent": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "groundRentReviewPeriod": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "groundRentPercentageIncrease": {
            "type": "number",
            "format": "double",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ListingLinkResponse": {
        "type": "object",
        "properties": {
          "description": {
            "type": "string",
            "nullable": true
          },
          "url": {
            "type": "string",
            "nullable": true
          },
          "modifiedDate": {
            "type": "string",
            "format": "date-time"
          }
        },
        "additionalProperties": false
      },
      "ListingMapLocationResponse": {
        "type": "object",
        "properties": {
          "latitude": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "longitude": {
            "type": "number",
            "format": "double",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ListingMappingResponse": {
        "type": "object",
        "properties": {
          "mapLocation": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ListingMapLocationResponse"
              }
            ],
            "nullable": true
          },
          "streetView": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ListingStreetViewResponse"
              }
            ],
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ListingRentalResponse": {
        "type": "object",
        "properties": {
          "frequency": {
            "type": "string",
            "nullable": true
          },
          "availableFrom": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "deposit": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "furnishing": {
            "type": "string",
            "nullable": true
          },
          "lettingType": {
            "type": "string",
            "nullable": true
          },
          "children": {
            "type": "boolean",
            "description": "Whether children are allowed"
          },
          "pets": {
            "type": "boolean",
            "description": "Whether pets are allowed"
          },
          "smokers": {
            "type": "boolean",
            "description": "Whether smokers are allowed"
          },
          "termLengthMonths": {
            "type": "integer",
            "description": "Term Length (months)",
            "format": "int32",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ListingResponse": {
        "type": "object",
        "properties": {
          "propertyId": {
            "type": "integer",
            "format": "int32"
          },
          "market": {
            "type": "string",
            "nullable": true
          },
          "displayAddress": {
            "type": "string",
            "nullable": true
          },
          "priceQualifier": {
            "type": "string",
            "nullable": true
          },
          "currency": {
            "type": "string",
            "nullable": true
          },
          "price": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "bedrooms": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "bathrooms": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "receptions": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "floorAreaInSquareFeet": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "landAreaInAcres": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "propertyType": {
            "type": "string",
            "nullable": true
          },
          "taxBand": {
            "type": "string",
            "nullable": true
          },
          "taxBandExemptReason": {
            "type": "string",
            "nullable": true
          },
          "summary": {
            "type": "string",
            "nullable": true
          },
          "includeLeadInOutText": {
            "type": "boolean"
          },
          "leadInText": {
            "type": "string",
            "nullable": true
          },
          "leadOutText": {
            "type": "string",
            "nullable": true
          },
          "publicViewingNotes": {
            "type": "string",
            "nullable": true
          },
          "epcCurrent": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "deprecated": true
          },
          "epcPotential": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "deprecated": true
          },
          "epc": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ListingEpcResponse"
              }
            ],
            "nullable": true
          },
          "rental": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ListingRentalResponse"
              }
            ],
            "nullable": true
          },
          "sale": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ListingSaleResponse"
              }
            ],
            "nullable": true
          },
          "isLeasehold": {
            "type": "boolean",
            "readOnly": true
          },
          "lease": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ListingLeaseResponse"
              }
            ],
            "nullable": true
          },
          "auction": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ListingAuctionResponse"
              }
            ],
            "nullable": true
          },
          "bullets": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ListingBulletResponse"
            },
            "nullable": true
          },
          "rooms": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ListingRoomResponse"
            },
            "nullable": true
          },
          "age": {
            "type": "string",
            "nullable": true
          },
          "yearBuilt": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "newBuild": {
            "type": "boolean",
            "nullable": true
          },
          "parkingTotal": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "uprn": {
            "type": "string",
            "nullable": true
          },
          "mapping": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ListingMappingResponse"
              }
            ],
            "nullable": true
          },
          "createdDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "modifiedDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ListingResponseItemCollection": {
        "type": "object",
        "properties": {
          "totalCount": {
            "type": "integer",
            "format": "int32"
          },
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ListingResponse"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ListingRoomResponse": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "orderIndex": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "size": {
            "type": "string",
            "nullable": true
          },
          "sizeMetric": {
            "type": "string",
            "nullable": true
          },
          "sizeImperial": {
            "type": "string",
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "roomRecordType": {
            "allOf": [
              {
                "$ref": "#/components/schemas/RoomRecordType"
              }
            ]
          }
        },
        "additionalProperties": false
      },
      "ListingSaleResponse": {
        "type": "object",
        "properties": {
          "tenure": {
            "type": "string",
            "nullable": true
          },
          "newHome": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "ListingSizesResponse": {
        "type": "object",
        "properties": {
          "screen": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ListingImageDetailResponse"
              }
            ],
            "nullable": true
          },
          "thumbnail": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ListingImageDetailResponse"
              }
            ],
            "nullable": true
          },
          "tile": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ListingImageDetailResponse"
              }
            ],
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ListingStreetViewResponse": {
        "type": "object",
        "properties": {
          "latitude": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "longitude": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "heading": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "pitch": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "zoom": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "PatchListingRoomsRequestJsonPatchDocument": {
        "type": "object",
        "properties": {
          "operations": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PatchListingRoomsRequestOperation"
            },
            "nullable": true,
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "PatchListingRoomsRequestOperation": {
        "type": "object",
        "properties": {
          "path": {
            "type": "string",
            "nullable": true
          },
          "op": {
            "type": "string",
            "nullable": true
          },
          "from": {
            "type": "string",
            "nullable": true
          },
          "value": {
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "PutListingSummaryJsonPatchDocument": {
        "type": "object",
        "properties": {
          "operations": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PutListingSummaryOperation"
            },
            "nullable": true,
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "PutListingSummaryOperation": {
        "type": "object",
        "properties": {
          "path": {
            "type": "string",
            "nullable": true
          },
          "op": {
            "type": "string",
            "nullable": true
          },
          "from": {
            "type": "string",
            "nullable": true
          },
          "value": {
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "RoomRecordType": {
        "enum": [
          "Unspecified",
          "Room",
          "Paragraph"
        ],
        "type": "string"
      },
      "SortBy": {
        "enum": [
          "Modified",
          "Created",
          "Id"
        ],
        "type": "string"
      },
      "SortOrder": {
        "enum": [
          "Ascending",
          "Descending"
        ],
        "type": "string"
      },
      "PostLinkMediaItemRequest": {
        "type": "object",
        "properties": {
          "mediaType": {
            "enum": [
              "VirtualTour",
              "WebLink"
            ],
            "type": "string"
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "url": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "PostLinkMediaItemResponse": {
        "type": "object",
        "properties": {
          "mediaId": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "PostMediaItemRequest": {
        "type": "object",
        "properties": {
          "linkedType": {
            "enum": [
              "Property"
            ],
            "type": "string"
          },
          "linkedId": {
            "minimum": 1,
            "type": "integer",
            "format": "int64"
          },
          "mediaType": {
            "enum": [
              "Photo",
              "Floorplan",
              "VirtualTour",
              "File",
              "Document",
              "Brochure",
              "EPC",
              "WebLink"
            ],
            "type": "string",
            "nullable": true
          },
          "fileToUpload": {
            "type": "string",
            "format": "binary",
            "nullable": true
          },
          "filename": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "PostMediaItemResponse": {
        "type": "object",
        "properties": {
          "mediaId": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "Offer": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "nullable": true
          },
          "branchId": {
            "type": "string",
            "nullable": true
          },
          "propertyId": {
            "type": "string",
            "nullable": true
          },
          "ownerId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "insertDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "modifiedDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "effectiveDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "currencyCode": {
            "type": "string",
            "nullable": true
          },
          "offerAmount": {
            "type": "number",
            "format": "double"
          },
          "status": {
            "$ref": "#/components/schemas/OfferStatus"
          },
          "recordType": {
            "$ref": "#/components/schemas/PropertyRecordType"
          },
          "salesProgressorName": {
            "type": "string",
            "nullable": true
          },
          "contactsJson": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "OfferStatus": {
        "enum": [
          "Unspecified",
          "Received",
          "Accepted",
          "Rejected",
          "Withdrawn",
          "Revised"
        ],
        "type": "string"
      },
      "GetReferralResponse": {
        "type": "object",
        "properties": {
          "propertyId": {
            "type": "integer",
            "format": "int32"
          },
          "refereeId": {
            "type": "integer",
            "format": "int32"
          },
          "tenancyId": {
            "type": "integer",
            "format": "int32"
          },
          "offerId": {
            "type": "integer",
            "format": "int32"
          },
          "status": {
            "type": "string",
            "nullable": true
          },
          "agentEmail": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ReferralPatchJsonPatchDocument": {
        "type": "array",
        "items": {
          "$ref": "#/components/schemas/ReferralPatchOperation"
        },
        "description": "Array of operations to perform"
      },
      "ReferralPatchOperation": {
        "anyOf": [
          {
            "title": "/status",
            "type": "object",
            "properties": {
              "op": {
                "enum": [
                  "replace"
                ],
                "type": "string",
                "example": "replace"
              },
              "value": {
                "type": "string",
                "example": "\"InProgress,Lost, PaymentDue, CommissionPaid\""
              },
              "path": {
                "type": "string",
                "example": "/status"
              }
            },
            "description": "\n            The status of the referral\n            ",
            "example": "\n        {\n            \"path\": \"/status\",\n            \"op\": \"replace\",\n            \"value\": \"InProgress,Lost, PaymentDue, CommissionPaid\"\n        }"
          },
          {
            "title": "/fees",
            "type": "object",
            "properties": {
              "op": {
                "enum": [
                  "replace"
                ],
                "type": "string",
                "example": "replace"
              },
              "value": {
                "type": "number",
                "example": "100.00"
              },
              "path": {
                "type": "string",
                "example": "/fees"
              }
            },
            "description": "\n            The fees amount of the referral\n            ",
            "example": "\n        {\n            \"path\": \"/fees\",\n            \"op\": \"replace\",\n            \"value\": 100.00\n        }"
          }
        ]
      },
      "BranchAddressResponse": {
        "type": "object",
        "properties": {
          "subDwelling": {
            "type": "string",
            "nullable": true
          },
          "nameNumber": {
            "type": "string",
            "nullable": true
          },
          "street": {
            "type": "string",
            "nullable": true
          },
          "locality": {
            "type": "string",
            "nullable": true
          },
          "town": {
            "type": "string",
            "nullable": true
          },
          "county": {
            "type": "string",
            "nullable": true
          },
          "postCode": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "EntityOptOutStatus": {
        "enum": [
          "OptedIn",
          "OptedOut"
        ],
        "type": "string"
      },
      "IntegrationBranchResponse": {
        "type": "object",
        "properties": {
          "branchRef": {
            "type": "string",
            "nullable": true
          },
          "branchId": {
            "type": "integer",
            "format": "int32"
          },
          "branchName": {
            "type": "string",
            "nullable": true
          },
          "branchAddress": {
            "allOf": [
              {
                "$ref": "#/components/schemas/BranchAddressResponse"
              }
            ],
            "nullable": true
          },
          "overridesAgencyIntegrationData": {
            "type": "boolean"
          },
          "integrationData": {
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "IntegrationStateResponse": {
        "type": "object",
        "properties": {
          "integrationId": {
            "type": "string",
            "format": "uuid"
          },
          "integrationName": {
            "type": "string",
            "nullable": true
          },
          "agencyName": {
            "type": "string",
            "nullable": true
          },
          "requestedBy": {
            "type": "string",
            "nullable": true
          },
          "agencyIntegrationData": {
            "nullable": true
          },
          "branches": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/IntegrationBranchResponse"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ModelType": {
        "enum": [
          "Unknown",
          "Group",
          "User",
          "Role",
          "Product",
          "Transaction",
          "SecurityRelationship",
          "OtherSecurityResource",
          "UserCode",
          "ProductRole",
          "Code",
          "CodeText",
          "Company",
          "Brand",
          "Branch",
          "BranchUser",
          "BranchBankAccount",
          "BranchBrand",
          "MatchArea",
          "BranchMatchArea",
          "CustomLocation",
          "RecurringEvent",
          "BatchList",
          "BatchListItem",
          "BatchTask",
          "BatchTaskSchedule",
          "BatchRun",
          "BatchCounter",
          "BatchError",
          "BatchRunTask",
          "GroupLock",
          "GroupLockHistory",
          "GroupReport",
          "ServiceRequestHistory",
          "SecuritySessionHistory",
          "ValueDomain",
          "Parameter",
          "ParameterList",
          "ParameterTable",
          "ValueDomainItem",
          "CodeList",
          "ParameterValue",
          "GroupCodeList",
          "ParameterListValue",
          "ParameterTableKey",
          "ParameterTableKeyValue",
          "ParameterTableValue",
          "ReportStructure",
          "ReportSection",
          "ReportColumn",
          "ReportFilter",
          "Applicant",
          "Property",
          "Contact",
          "PropertySale",
          "PropertyRental",
          "Room",
          "Media",
          "PostalAddress",
          "Phone",
          "EmailAddress",
          "GroupBankAccount",
          "GroupBankBranch",
          "Vendor",
          "Landlord",
          "Tenant",
          "Guarantor",
          "Supplier",
          "Tenancy",
          "ThirdParty",
          "ClientBankAccount",
          "DefaultFee",
          "FeeInstruction",
          "DiaryEvent",
          "DiaryEventParty",
          "Viewing",
          "PropertyValuation",
          "PropertyMatchArea",
          "PropertyFeature",
          "RoomMedia",
          "PropertyContact",
          "ContactRelationship",
          "Offer",
          "AgreedOffer",
          "Communication",
          "DiaryEventRecurringSchedule",
          "DiaryEventRecurringException",
          "HistoryEvent",
          "HistoryEventParty",
          "ComparableProperty",
          "PropertyBullet",
          "PropertyLease",
          "Requirement",
          "RequirementItem",
          "DiaryEventReminder",
          "AuditedChange",
          "CommunicationError",
          "DocumentTemplate",
          "FollowUp",
          "MediaFile",
          "PropertyInsurance",
          "PropertyUploadIndex",
          "SavedSearch",
          "UploadRequest",
          "KeySet",
          "ReportConfiguration",
          "ReportSchedule",
          "Report",
          "LetterRackItem",
          "Timeline",
          "FinancialTransaction",
          "CashBookItem",
          "Charge",
          "PurchaseInvoice",
          "PurchaseInvoiceItem",
          "SalesInvoice",
          "SalesInvoiceItem",
          "PropertyRelationship",
          "ReportConfigurationItem",
          "PendingDocument",
          "PendingDocumentParty",
          "MarketingEvent",
          "MarketingEventProperty",
          "Help",
          "ChainLink",
          "ChainLinkParty",
          "UnknownProperty",
          "UnknownContact",
          "Progression",
          "ManyToMany",
          "ManyToManyItem",
          "SMSRequest",
          "PropertyTemplate",
          "AdvertRun",
          "AdvertRunProperty",
          "BoardManagement",
          "StandardParagraph",
          "LocalCacheItemContainer",
          "ChainLinkSolicitor",
          "DefaultExpense",
          "MatchAreaGroup",
          "GroupData",
          "Lead",
          "PropertyWebStatistic",
          "ProductDocumentation",
          "WebStatisticsProvider",
          "PropertyMatchOn",
          "ExternalEmailAttachment",
          "Email",
          "SavedMatchList",
          "SavedMatchListRow",
          "ImportExternalKeyMapping",
          "EmailTemplate",
          "SelfBillingInvoice",
          "PropertyUtility",
          "PaymentGroup",
          "PaymentGroupProperty",
          "TaxExemptionPeriod",
          "LinkedAccount",
          "TenancyUtilityReading",
          "TenancyEvent",
          "TenancyDepositProtection",
          "TenancyMarketing",
          "WorkOrder",
          "WorkOrderEvent",
          "PaymentMethod",
          "ManagementDateAttribute",
          "DepositScheme",
          "BranchSequenceNumber",
          "FrequencyAttribute",
          "Accounts",
          "SupplierService",
          "ChargeToPost",
          "AccountTransaction",
          "BacsFileExtension",
          "BacsFileContent",
          "DestinationBankAccount",
          "TransactionHistory",
          "DefaultPMFee",
          "OpeningBalance",
          "HeldMoney",
          "Retention",
          "AuditItem",
          "OpeningBalanceHistory",
          "AccountingDocumentRequest",
          "EffectivePermission",
          "AccountingDocumentGenerationRun",
          "ChargeTemplate",
          "PropertyOwnership",
          "FollowUpEvent",
          "ReviewNotes",
          "PendingReportRequest",
          "SendGridEvent",
          "BookingRequest",
          "TdsCommunicationState",
          "SigningRequest",
          "ContactOwnedPropertiesCollection",
          "MaintenanceRequest",
          "AccountsExportProfile",
          "AccountsDataExport",
          "SecurityAttribute"
        ],
        "type": "string"
      },
      "OptOutResponse": {
        "type": "object",
        "properties": {
          "linkedType": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ModelType"
              }
            ]
          },
          "linkedId": {
            "type": "integer",
            "format": "int64"
          },
          "optOutStatus": {
            "allOf": [
              {
                "$ref": "#/components/schemas/EntityOptOutStatus"
              }
            ]
          },
          "optedOutAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "optedOutBy": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "PartnerIntegrationStatus": {
        "enum": [
          "Pending",
          "Active"
        ],
        "type": "string"
      },
      "UpdateIntegrationStatusRequest": {
        "type": "object",
        "properties": {
          "partnerIntegrationStatus": {
            "type": "string",
            "nullable": true
          },
          "partnerIntegrationStatusDescription": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "UpdateIntegrationStatusResponse": {
        "type": "object",
        "properties": {
          "partnerIntegrationStatus": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PartnerIntegrationStatus"
              }
            ]
          },
          "partnerIntegrationStatusDescription": {
            "type": "string",
            "nullable": true
          },
          "partnerIntegrationStatusUpdatedOn": {
            "type": "string",
            "format": "date-time"
          },
          "updatedRecordCount": {
            "type": "integer",
            "format": "int32"
          },
          "updatedBranchIds": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Alto.PropertyManagement.Api.Models.DTOs.ItemCollection1_Alto.PropertyManagement.Api.Models.Responses.Landlord": {
        "type": "object",
        "properties": {
          "totalCount": {
            "type": "integer",
            "format": "int32"
          },
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Alto.PropertyManagement.Api.Models.Responses.Landlord"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Alto.PropertyManagement.Api.Models.DTOs.ItemCollection1_Alto.PropertyManagement.Api.Models.Responses.TenantIdData": {
        "type": "object",
        "properties": {
          "totalCount": {
            "type": "integer",
            "format": "int32"
          },
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Alto.PropertyManagement.Api.Models.Responses.TenantIdData"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Alto.PropertyManagement.Api.Models.Requests.CreateManagementEventRequest": {
        "required": [
          "eventType",
          "linkedId",
          "linkedType",
          "negotiatorId"
        ],
        "type": "object",
        "properties": {
          "eventType": {
            "minLength": 1,
            "type": "string",
            "description": "The type of management event."
          },
          "linkedType": {
            "minLength": 1,
            "type": "string",
            "description": "The entity associated with the management event."
          },
          "linkedId": {
            "type": "integer",
            "description": "The id of the entity associated with the management event.",
            "format": "int32"
          },
          "negotiatorId": {
            "type": "integer",
            "description": "The id of the negotiator associated with the management event.",
            "format": "int32"
          },
          "dueDate": {
            "type": "string",
            "description": "The date the management event is due to be completed.",
            "format": "date-time",
            "nullable": true
          },
          "notes": {
            "maxLength": 2000,
            "type": "string",
            "description": "Additional notes for the management event.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request model for creating a new management event"
      },
      "Alto.PropertyManagement.Api.Models.Requests.CreateProposedTenancyRequest": {
        "type": "object",
        "properties": {
          "rentalAmount": {
            "minimum": 0,
            "type": "number",
            "format": "double"
          },
          "applicantContactIds": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "description": "The ids of all the applicants for the proposed tenancy.",
            "nullable": true
          },
          "tenancyStartDate": {
            "type": "string",
            "description": "The Start Date of the proposed tenancy.",
            "format": "date-time",
            "nullable": true
          },
          "tenancyTermMonths": {
            "type": "integer",
            "description": "The term of the proposed tenancy in months.",
            "format": "int32",
            "nullable": true
          },
          "tenancyTermYears": {
            "type": "integer",
            "description": "The term of the proposed tenancy in years.",
            "format": "int32",
            "nullable": true
          },
          "sendDefaultLetters": {
            "type": "boolean",
            "description": "Whether to send default letters for the proposed tenancy."
          }
        },
        "additionalProperties": false
      },
      "Alto.PropertyManagement.Api.Models.Requests.CreateWorkOrderRequest": {
        "required": [
          "priority",
          "propertyId",
          "reportedDate",
          "summary"
        ],
        "type": "object",
        "properties": {
          "propertyId": {
            "minLength": 1,
            "type": "string",
            "description": "The unique identifier for the property associated with the work order."
          },
          "summary": {
            "maxLength": 150,
            "minLength": 1,
            "type": "string",
            "description": "The title of the work order."
          },
          "description": {
            "type": "string",
            "description": "A detailed description of the work order.",
            "nullable": true
          },
          "notes": {
            "type": "string",
            "description": "Additional notes.",
            "nullable": true
          },
          "priority": {
            "minLength": 1,
            "type": "string",
            "description": "The priority level of the work order."
          },
          "reporterDetails": {
            "$ref": "#/components/schemas/Alto.PropertyManagement.Api.Models.WorkOrderActor"
          },
          "accessDetails": {
            "$ref": "#/components/schemas/Alto.PropertyManagement.Api.Models.WorkOrderActor"
          },
          "chargeDetails": {
            "$ref": "#/components/schemas/Alto.PropertyManagement.Api.Models.WorkOrderActor"
          },
          "reportedDate": {
            "minLength": 1,
            "type": "string",
            "description": "The date the work order was reported."
          },
          "startDate": {
            "type": "string",
            "description": "The preferred start date for the works to be carried out.",
            "nullable": true
          },
          "supplierContactId": {
            "type": "string",
            "description": "The unique identifier for the supplier (recorded in Alto) who will carry out the works.",
            "nullable": true
          },
          "quote": {
            "type": "number",
            "description": "The estimated cost of the works.",
            "format": "double",
            "nullable": true
          },
          "negotiatorId": {
            "type": "string",
            "description": "The unique identifier of the negotiator",
            "nullable": true,
            "example": "1234"
          }
        },
        "additionalProperties": false,
        "description": "Represents a work order"
      },
      "Alto.PropertyManagement.Api.Models.Requests.PostTenancyMeterReadingRequest": {
        "required": [
          "propertyId",
          "utilityType"
        ],
        "type": "object",
        "properties": {
          "utilityType": {
            "enum": [
              "Unspecified",
              "Gas",
              "Electricity",
              "Oil",
              "Water",
              "BulkLPG",
              "Council",
              "Sewerage"
            ],
            "type": "string",
            "description": "The type of utility (e.g., electricity, water, gas) for which the reading is recorded.\nThis is represented by the UtilityType enum and is required"
          },
          "propertyId": {
            "minLength": 1,
            "type": "string",
            "description": "The property Id for which the reading is recorded against.\nThis is required"
          },
          "inHighValue": {
            "type": "integer",
            "description": "The initial (move-in) high-value meter reading. This may capture peak usage rates or other high-end metrics.\nIt's nullable to handle cases where this data might not be available or applicable.",
            "format": "int32",
            "nullable": true
          },
          "inLowValue": {
            "type": "integer",
            "description": "The initial (move-in) low-value meter reading. This typically represents off-peak or lower usage rates.\nNullable to account for situations where this reading is not applicable or available.",
            "format": "int32",
            "nullable": true
          },
          "outHighValue": {
            "type": "integer",
            "description": "The final (move-out) high-value meter reading. Similar to InHighValue but recorded at the end of the tenancy.\nNullable for cases where the reading isn't available or needed.",
            "format": "int32",
            "nullable": true
          },
          "outLowValue": {
            "type": "integer",
            "description": "The final (move-out) low-value meter reading. Similar to InLowValue, but for the end of the tenancy period.\nNullable for cases where this data is not available or relevant.",
            "format": "int32",
            "nullable": true
          },
          "inValue": {
            "type": "integer",
            "description": "The overall move-in meter reading. This is a general reading, not specifically high or low value.\nNullable to accommodate situations where it might not be available.",
            "format": "int32",
            "nullable": true
          },
          "outValue": {
            "type": "integer",
            "description": "The overall move-out meter reading. Like InValue, but for when the tenancy ends.\nNullable to handle cases where the reading is not obtained.",
            "format": "int32",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Alto.PropertyManagement.Api.Models.Responses.Address": {
        "type": "object",
        "properties": {
          "subDwelling": {
            "type": "string",
            "nullable": true
          },
          "nameNo": {
            "type": "string",
            "nullable": true
          },
          "street": {
            "type": "string",
            "nullable": true
          },
          "locality": {
            "type": "string",
            "nullable": true
          },
          "town": {
            "type": "string",
            "nullable": true
          },
          "county": {
            "type": "string",
            "nullable": true
          },
          "postcode": {
            "type": "string",
            "nullable": true
          },
          "country": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Alto.PropertyManagement.Api.Models.Responses.Error": {
        "type": "object",
        "properties": {
          "code": {
            "type": "string",
            "nullable": true
          },
          "message": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Alto.PropertyManagement.Api.Models.Responses.ErrorsResponse": {
        "type": "object",
        "properties": {
          "errors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Alto.PropertyManagement.Api.Models.Responses.Error"
            },
            "nullable": true,
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "Alto.PropertyManagement.Api.Models.Responses.Landlord": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "nullable": true
          },
          "title": {
            "type": "string",
            "nullable": true
          },
          "forename": {
            "type": "string",
            "nullable": true
          },
          "surname": {
            "type": "string",
            "nullable": true
          },
          "phone": {
            "type": "string",
            "nullable": true
          },
          "email": {
            "type": "string",
            "nullable": true
          },
          "address": {
            "$ref": "#/components/schemas/Alto.PropertyManagement.Api.Models.Responses.Address"
          },
          "createdDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "modifiedDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "links": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Alto.Api.Material.Hateoas.Link"
            },
            "nullable": true,
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "Alto.PropertyManagement.Api.Models.Responses.LandlordListItem": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "branchId": {
            "type": "integer",
            "format": "int32"
          },
          "address": {
            "$ref": "#/components/schemas/Alto.PropertyManagement.Api.Models.Responses.Address"
          },
          "people": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Alto.PropertyManagement.Api.Models.Responses.Person"
            },
            "nullable": true
          },
          "properties": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Alto.PropertyManagement.Api.Models.Responses.LandlordProperty"
            },
            "nullable": true
          },
          "active": {
            "type": "boolean"
          },
          "createdDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "modifiedDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "links": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Alto.Api.Material.Hateoas.Link"
            },
            "nullable": true,
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "Alto.PropertyManagement.Api.Models.Responses.LandlordProperty": {
        "type": "object",
        "properties": {
          "subDwelling": {
            "type": "string",
            "nullable": true
          },
          "nameNo": {
            "type": "string",
            "nullable": true
          },
          "street": {
            "type": "string",
            "nullable": true
          },
          "locality": {
            "type": "string",
            "nullable": true
          },
          "town": {
            "type": "string",
            "nullable": true
          },
          "county": {
            "type": "string",
            "nullable": true
          },
          "postcode": {
            "type": "string",
            "nullable": true
          },
          "country": {
            "type": "string",
            "nullable": true
          },
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "links": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Alto.Api.Material.Hateoas.Link"
            },
            "nullable": true,
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "Alto.PropertyManagement.Api.Models.Responses.ManagementEvent": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "nullable": true
          },
          "propertyId": {
            "type": "string",
            "nullable": true
          },
          "tenancyId": {
            "type": "string",
            "nullable": true
          },
          "branchId": {
            "type": "string",
            "nullable": true
          },
          "eventType": {
            "$ref": "#/components/schemas/Alto.PropertyManagement.Api.Models.Responses.ManagementEventType"
          },
          "status": {
            "enum": [
              "Unspecified",
              "Pending",
              "InProgress",
              "Complete",
              "Cancelled",
              "Expired"
            ],
            "type": "string"
          },
          "priority": {
            "enum": [
              "Unspecified",
              "High",
              "Normal",
              "Low"
            ],
            "type": "string"
          },
          "critical": {
            "type": "boolean"
          },
          "dueDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "completionDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "reminderDays": {
            "type": "integer",
            "format": "int32"
          },
          "recurring": {
            "type": "boolean"
          },
          "rescheduledForDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "notes": {
            "type": "string",
            "nullable": true
          },
          "createdDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "modifiedDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Alto.PropertyManagement.Api.Models.Responses.ManagementEventType": {
        "type": "object",
        "properties": {
          "key": {
            "type": "string",
            "nullable": true
          },
          "label": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Alto.PropertyManagement.Api.Models.Responses.Meta": {
        "type": "object",
        "properties": {
          "nextToken": {
            "type": "string",
            "nullable": true
          },
          "totalItems": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "Alto.PropertyManagement.Api.Models.Responses.PagedResults1_Alto.PropertyManagement.Api.Models.Responses.LandlordListItem": {
        "type": "object",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/Alto.PropertyManagement.Api.Models.Responses.Meta"
          },
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Alto.PropertyManagement.Api.Models.Responses.LandlordListItem"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Alto.PropertyManagement.Api.Models.Responses.PagedResults1_Alto.PropertyManagement.Api.Models.Responses.ManagementEvent": {
        "type": "object",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/Alto.PropertyManagement.Api.Models.Responses.Meta"
          },
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Alto.PropertyManagement.Api.Models.Responses.ManagementEvent"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Alto.PropertyManagement.Api.Models.Responses.PagedResults1_Alto.PropertyManagement.Api.Models.Responses.Supplier": {
        "type": "object",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/Alto.PropertyManagement.Api.Models.Responses.Meta"
          },
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Alto.PropertyManagement.Api.Models.Responses.Supplier"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Alto.PropertyManagement.Api.Models.Responses.PagedResults1_Alto.PropertyManagement.Api.Models.Responses.Tenancy": {
        "type": "object",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/Alto.PropertyManagement.Api.Models.Responses.Meta"
          },
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Alto.PropertyManagement.Api.Models.Responses.Tenancy"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Alto.PropertyManagement.Api.Models.Responses.PagedResults1_Alto.PropertyManagement.Api.Models.Responses.TenancyListItem": {
        "type": "object",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/Alto.PropertyManagement.Api.Models.Responses.Meta"
          },
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Alto.PropertyManagement.Api.Models.Responses.TenancyListItem"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Alto.PropertyManagement.Api.Models.Responses.Person": {
        "type": "object",
        "properties": {
          "title": {
            "type": "string",
            "nullable": true
          },
          "forename": {
            "type": "string",
            "nullable": true
          },
          "surname": {
            "type": "string",
            "nullable": true
          },
          "emailAddresses": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "telephoneNumbers": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Alto.PropertyManagement.Api.Models.Responses.PropertyCharge": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "nullable": true
          },
          "supplierId": {
            "type": "string",
            "nullable": true
          },
          "chargeType": {
            "enum": [
              "Maintenance",
              "Deposit",
              "DepositToLandlord",
              "ReferencingFee",
              "AdministrationFee",
              "CheckInFee",
              "CheckOutFee",
              "TenancyAgreementFee",
              "CapitalExpenditure",
              "Cleaning",
              "Electrical",
              "Gardening",
              "Plumbing",
              "GasSafetyCheck",
              "EPC",
              "MaintenanceExpense",
              "InsuranceBuildings",
              "InsuranceContents",
              "InsuranceRentProtection",
              "UtilitiesWater",
              "UtilitiesCouncilTax",
              "UtilitiesElectricity",
              "UtilitiesGas",
              "Decorating",
              "BankCharges",
              "ServiceCharge",
              "GroundRent",
              "ElectricalSafetyCheck",
              "Appliances",
              "KeysLocksmith",
              "Inventory",
              "Furniture",
              "PortableApplianceTest",
              "LeadTest"
            ],
            "type": "string"
          },
          "totalNet": {
            "type": "number",
            "format": "float"
          },
          "totalVat": {
            "type": "number",
            "format": "float"
          },
          "vatRateType": {
            "enum": [
              "Exempt",
              "Standard",
              "Reduced",
              "Zero",
              "StandardROI"
            ],
            "type": "string"
          },
          "invoiceReference": {
            "type": "string",
            "nullable": true
          },
          "invoiceDocumentId": {
            "type": "string",
            "nullable": true
          },
          "workOrderId": {
            "type": "string",
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "chargeDate": {
            "type": "string",
            "format": "date-time"
          },
          "propertyId": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Alto.PropertyManagement.Api.Models.Responses.Supplier": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "nullable": true
          },
          "branchId": {
            "type": "string",
            "nullable": true
          },
          "companyName": {
            "type": "string",
            "nullable": true
          },
          "providedServices": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "address": {
            "$ref": "#/components/schemas/Alto.PropertyManagement.Api.Models.Responses.Address"
          },
          "people": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Alto.PropertyManagement.Api.Models.Responses.Person"
            },
            "nullable": true
          },
          "notes": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Alto.PropertyManagement.Api.Models.Responses.Tenancy": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "rent": {
            "type": "number",
            "format": "double"
          },
          "currencyCode": {
            "type": "string",
            "nullable": true
          },
          "rentalFrequency": {
            "type": "string",
            "nullable": true
          },
          "startDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "endDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "targetVacateDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "status": {
            "type": "string",
            "nullable": true
          },
          "occupantCount": {
            "type": "integer",
            "format": "int32"
          },
          "tenants": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Alto.PropertyManagement.Api.Models.Responses.Tenant"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Alto.PropertyManagement.Api.Models.Responses.TenancyCharge": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "nullable": true
          },
          "supplierId": {
            "type": "string",
            "nullable": true
          },
          "chargeType": {
            "enum": [
              "Maintenance",
              "Deposit",
              "DepositToLandlord",
              "ReferencingFee",
              "AdministrationFee",
              "CheckInFee",
              "CheckOutFee",
              "TenancyAgreementFee",
              "CapitalExpenditure",
              "Cleaning",
              "Electrical",
              "Gardening",
              "Plumbing",
              "GasSafetyCheck",
              "EPC",
              "MaintenanceExpense",
              "InsuranceBuildings",
              "InsuranceContents",
              "InsuranceRentProtection",
              "UtilitiesWater",
              "UtilitiesCouncilTax",
              "UtilitiesElectricity",
              "UtilitiesGas",
              "Decorating",
              "BankCharges",
              "ServiceCharge",
              "GroundRent",
              "ElectricalSafetyCheck",
              "Appliances",
              "KeysLocksmith",
              "Inventory",
              "Furniture",
              "PortableApplianceTest",
              "LeadTest"
            ],
            "type": "string"
          },
          "totalNet": {
            "type": "number",
            "format": "float"
          },
          "totalVat": {
            "type": "number",
            "format": "float"
          },
          "vatRateType": {
            "enum": [
              "Exempt",
              "Standard",
              "Reduced",
              "Zero",
              "StandardROI"
            ],
            "type": "string"
          },
          "invoiceReference": {
            "type": "string",
            "nullable": true
          },
          "invoiceDocumentId": {
            "type": "string",
            "nullable": true
          },
          "workOrderId": {
            "type": "string",
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "chargeDate": {
            "type": "string",
            "format": "date-time"
          },
          "tenantId": {
            "type": "string",
            "nullable": true
          },
          "tenancyId": {
            "type": "string",
            "nullable": true
          },
          "propertyId": {
            "type": "string",
            "nullable": true
          },
          "excludeFromArrears": {
            "type": "boolean"
          },
          "showInArrearsAfterDays": {
            "type": "integer",
            "format": "int32"
          },
          "sendDocs": {
            "type": "boolean"
          },
          "paymentMethod": {
            "enum": [
              "Unknown",
              "Bacs",
              "Cheque",
              "Cash",
              "StandingOrder",
              "DirectDebit",
              "Internet",
              "CreditCard",
              "DebitCard",
              "Transfer",
              "Journal",
              "ReceiptImport"
            ],
            "type": "string",
            "nullable": true
          },
          "paymentReference": {
            "type": "string",
            "nullable": true
          },
          "raiseInAdvanceDays": {
            "type": "integer",
            "format": "int32"
          },
          "raiseEndDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Alto.PropertyManagement.Api.Models.Responses.TenancyLight": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "groupId": {
            "type": "integer",
            "format": "int32"
          },
          "branchId": {
            "type": "integer",
            "format": "int32"
          },
          "propertyId": {
            "type": "integer",
            "format": "int32"
          },
          "termYears": {
            "type": "integer",
            "format": "int32"
          },
          "termMonths": {
            "type": "integer",
            "format": "int32"
          },
          "occupantCount": {
            "type": "integer",
            "format": "int32"
          },
          "rent": {
            "type": "number",
            "format": "double"
          },
          "rentalFrequency": {
            "type": "string",
            "nullable": true
          },
          "depositRequested": {
            "type": "number",
            "format": "double"
          },
          "depositSchemeType": {
            "type": "string",
            "nullable": true
          },
          "currencyCode": {
            "type": "string",
            "nullable": true
          },
          "rentalAddress": {
            "$ref": "#/components/schemas/Alto.PropertyManagement.Api.Models.Responses.Address"
          },
          "startDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "targetVacateDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "firstFullRentDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "noticeToQuitDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "endDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "renewalDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "nextTermTenancyId": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "Alto.PropertyManagement.Api.Models.Responses.TenancyListItem": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "groupId": {
            "type": "integer",
            "format": "int32"
          },
          "branchId": {
            "type": "integer",
            "format": "int32"
          },
          "propertyId": {
            "type": "integer",
            "format": "int32"
          },
          "termYears": {
            "type": "integer",
            "format": "int32"
          },
          "termMonths": {
            "type": "integer",
            "format": "int32"
          },
          "occupantCount": {
            "type": "integer",
            "format": "int32"
          },
          "rent": {
            "type": "number",
            "format": "double"
          },
          "rentalFrequency": {
            "type": "string",
            "nullable": true
          },
          "depositRequested": {
            "type": "number",
            "format": "double"
          },
          "depositSchemeType": {
            "type": "string",
            "nullable": true
          },
          "currencyCode": {
            "type": "string",
            "nullable": true
          },
          "rentalAddress": {
            "$ref": "#/components/schemas/Alto.PropertyManagement.Api.Models.Responses.Address"
          },
          "startDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "targetVacateDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "firstFullRentDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "noticeToQuitDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "endDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "renewalDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "status": {
            "type": "string",
            "nullable": true
          },
          "nextTermTenancyId": {
            "type": "integer",
            "format": "int32"
          },
          "createdDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "modifiedDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "tenants": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Alto.PropertyManagement.Api.Models.Responses.Tenant"
            },
            "nullable": true
          },
          "links": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Alto.Api.Material.Hateoas.Link"
            },
            "nullable": true,
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "Alto.PropertyManagement.Api.Models.Responses.TenancyUtilityReading": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "The unique identifier for a specific utility reading within a tenancy.",
            "nullable": true
          },
          "utilityType": {
            "enum": [
              "Unspecified",
              "Gas",
              "Electricity",
              "Oil",
              "Water",
              "BulkLPG",
              "Council",
              "Sewerage"
            ],
            "type": "string",
            "description": "The type of utility (e.g., electricity, water, gas) for which the reading is recorded.\nThis is represented by the UtilityType enum.\nUse the name of type of the utility as the 'id' when you need to update a meter reading"
          },
          "inHighValue": {
            "type": "integer",
            "description": "The initial (move-in) high-value meter reading. This may capture peak usage rates or other high-end metrics.\nIt's nullable to handle cases where this data might not be available or applicable.",
            "format": "int32",
            "nullable": true
          },
          "inLowValue": {
            "type": "integer",
            "description": "The initial (move-in) low-value meter reading. This typically represents off-peak or lower usage rates.\nNullable to account for situations where this reading is not applicable or available.",
            "format": "int32",
            "nullable": true
          },
          "outHighValue": {
            "type": "integer",
            "description": "The final (move-out) high-value meter reading. Similar to InHighValue but recorded at the end of the tenancy.\nNullable for cases where the reading isn't available or needed.",
            "format": "int32",
            "nullable": true
          },
          "outLowValue": {
            "type": "integer",
            "description": "The final (move-out) low-value meter reading. Similar to InLowValue, but for the end of the tenancy period.\nNullable for cases where this data is not available or relevant.",
            "format": "int32",
            "nullable": true
          },
          "inValue": {
            "type": "integer",
            "description": "The overall move-in meter reading. This is a general reading, not specifically high or low value.\nNullable to accommodate situations where it might not be available.",
            "format": "int32",
            "nullable": true
          },
          "outValue": {
            "type": "integer",
            "description": "The overall move-out meter reading. Like InValue, but for when the tenancy ends.\nNullable to handle cases where the reading is not obtained.",
            "format": "int32",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Alto.PropertyManagement.Api.Models.Responses.Tenant": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "nullable": true
          },
          "title": {
            "type": "string",
            "nullable": true
          },
          "forename": {
            "type": "string",
            "nullable": true
          },
          "surname": {
            "type": "string",
            "nullable": true
          },
          "phone": {
            "type": "string",
            "nullable": true
          },
          "email": {
            "type": "string",
            "nullable": true
          },
          "address": {
            "$ref": "#/components/schemas/Alto.PropertyManagement.Api.Models.Responses.Address"
          },
          "createdDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "modifiedDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "links": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Alto.Api.Material.Hateoas.Link"
            },
            "nullable": true,
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "Alto.PropertyManagement.Api.Models.Responses.TenantIdData": {
        "type": "object",
        "properties": {
          "tenantId": {
            "type": "integer",
            "format": "int32"
          },
          "contactId": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "Alto.PropertyManagement.Api.Models.Responses.WorkOrder": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Id of the Work Order",
            "nullable": true
          },
          "propertyId": {
            "type": "string",
            "description": "The unique identifier for the Property associated with the Work Order.",
            "nullable": true
          },
          "supplierContactId": {
            "type": "string",
            "description": "The unique identifier for the Supplier associated with the Work Order.",
            "nullable": true
          },
          "accessDetails": {
            "$ref": "#/components/schemas/Alto.PropertyManagement.Api.Models.WorkOrderActor"
          },
          "reporterDetails": {
            "$ref": "#/components/schemas/Alto.PropertyManagement.Api.Models.WorkOrderActor"
          },
          "chargeDetails": {
            "$ref": "#/components/schemas/Alto.PropertyManagement.Api.Models.WorkOrderActor"
          },
          "reportedDate": {
            "type": "string",
            "description": "The date the Work Order was reported.",
            "format": "date-time"
          },
          "startDate": {
            "type": "string",
            "description": "The preferred start date for the work to be carried out.",
            "format": "date-time",
            "nullable": true
          },
          "quote": {
            "type": "number",
            "description": "The estimated cost of the work",
            "format": "double",
            "nullable": true
          },
          "workOrderNumber": {
            "type": "string",
            "description": "Unique Work Order reference number",
            "nullable": true
          },
          "status": {
            "type": "string",
            "description": "Current status of the Work Order",
            "nullable": true
          },
          "summary": {
            "type": "string",
            "description": "The title of the Work Order.",
            "nullable": true
          },
          "description": {
            "type": "string",
            "description": "A detailed description of the Work Order.",
            "nullable": true
          },
          "notes": {
            "type": "string",
            "description": "Additional notes.",
            "nullable": true
          },
          "priority": {
            "type": "string",
            "description": "The priority level of the Work Order.",
            "nullable": true
          },
          "modifiedDate": {
            "type": "string",
            "description": "The date the Work Order was last modified.",
            "format": "date-time",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Alto.PropertyManagement.Api.Models.WorkOrderActor": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "description": "A string description of the related party",
            "nullable": true
          },
          "id": {
            "type": "string",
            "description": "The unique identifier for the related party, or null for Agency",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "SystemTextJsonPatch.JsonPatchDocument1_Alto.PropertyManagement.Api.Models.ManagementEventPatch": {
        "type": "array",
        "items": {
          "$ref": "#/components/schemas/SystemTextJsonPatch.Operations.Operation1_Alto.PropertyManagement.Api.Models.ManagementEventPatch"
        },
        "description": "Array of operations to perform"
      },
      "SystemTextJsonPatch.JsonPatchDocument1_Alto.PropertyManagement.Api.Models.TenancyPatch": {
        "type": "array",
        "items": {
          "$ref": "#/components/schemas/SystemTextJsonPatch.Operations.Operation1_Alto.PropertyManagement.Api.Models.TenancyPatch"
        },
        "description": "Array of operations to perform"
      },
      "SystemTextJsonPatch.JsonPatchDocument1_Alto.PropertyManagement.Api.Models.TenancyUtilityReadingPatch": {
        "type": "array",
        "items": {
          "$ref": "#/components/schemas/SystemTextJsonPatch.Operations.Operation1_Alto.PropertyManagement.Api.Models.TenancyUtilityReadingPatch"
        },
        "description": "Array of operations to perform"
      },
      "SystemTextJsonPatch.JsonPatchDocument1_Alto.PropertyManagement.Api.Models.WorkOrderPatch": {
        "type": "array",
        "items": {
          "$ref": "#/components/schemas/SystemTextJsonPatch.Operations.Operation1_Alto.PropertyManagement.Api.Models.WorkOrderPatch"
        },
        "description": "Array of operations to perform"
      },
      "SystemTextJsonPatch.Operations.Operation1_Alto.PropertyManagement.Api.Models.ManagementEventPatch": {
        "anyOf": [
          {
            "title": "/status",
            "type": "object",
            "properties": {
              "op": {
                "enum": [
                  "replace"
                ],
                "type": "string",
                "example": "replace"
              },
              "value": {
                "type": "string",
                "example": "\"InProgress\""
              },
              "path": {
                "type": "string",
                "example": "/status"
              }
            },
            "description": "\n            The status of the management event within Alto. Supported values are InProgress, Pending, Complete, Cancelled.\n            ",
            "example": "\n        {\n            \"path\": \"/status\",\n            \"op\": \"replace\",\n            \"value\": \"InProgress\"\n        }"
          },
          {
            "title": "/completiondate",
            "type": "object",
            "properties": {
              "op": {
                "enum": [
                  "replace"
                ],
                "type": "string",
                "example": "replace"
              },
              "value": {
                "type": "string",
                "example": "\"2025-05-08T00:00:00\""
              },
              "path": {
                "type": "string",
                "example": "/completiondate"
              }
            },
            "description": "\n            The date the event was completed. This value will be ignored if the status is not set to Complete. If no\n            value is provided it will default to today's date.\n            ",
            "example": "\n        {\n            \"path\": \"/completiondate\",\n            \"op\": \"replace\",\n            \"value\": \"2025-05-08T00:00:00\"\n        }"
          },
          {
            "title": "/duedate",
            "type": "object",
            "properties": {
              "op": {
                "enum": [
                  "replace"
                ],
                "type": "string",
                "example": "replace"
              },
              "value": {
                "type": "string",
                "example": "\"2025-04-02T00:00:00\""
              },
              "path": {
                "type": "string",
                "example": "/duedate"
              }
            },
            "description": "\n            The date the event is due to be completed.\n            ",
            "example": "\n        {\n            \"path\": \"/duedate\",\n            \"op\": \"replace\",\n            \"value\": \"2025-04-02T00:00:00\"\n        }"
          },
          {
            "title": "/rescheduleddate",
            "type": "object",
            "properties": {
              "op": {
                "enum": [
                  "replace"
                ],
                "type": "string",
                "example": "replace"
              },
              "value": {
                "type": "string",
                "example": "\"2026-04-02T00:00:00\""
              },
              "path": {
                "type": "string",
                "example": "/rescheduleddate"
              }
            },
            "description": "\n            The due date for the next iteration of this event, after the current one is completed. This is is only\n            applicable to repeating events, and will be ignored if the status is not Complete. If no value is\n            provided it will default to the due date plus the months and days attributes of the event.\n            ",
            "example": "\n        {\n            \"path\": \"/rescheduleddate\",\n            \"op\": \"replace\",\n            \"value\": \"2026-04-02T00:00:00\"\n        }"
          },
          {
            "title": "/notes",
            "type": "object",
            "properties": {
              "op": {
                "enum": [
                  "replace"
                ],
                "type": "string",
                "example": "replace"
              },
              "value": {
                "type": "string",
                "example": "\"Gas safety certificate requested from engineer.\""
              },
              "path": {
                "type": "string",
                "example": "/notes"
              }
            },
            "description": "\n            Agent defined notes for the event.\n            ",
            "example": "\n        {\n            \"path\": \"/notes\",\n            \"op\": \"replace\",\n            \"value\": \"Gas safety certificate requested from engineer.\"\n        }"
          }
        ]
      },
      "SystemTextJsonPatch.Operations.Operation1_Alto.PropertyManagement.Api.Models.TenancyPatch": {
        "anyOf": [
          {
            "title": "/rent",
            "type": "object",
            "properties": {
              "op": {
                "enum": [
                  "add",
                  "replace",
                  "remove",
                  "test"
                ],
                "type": "string",
                "example": "add"
              },
              "value": {
                "type": "number",
                "example": "500.000"
              },
              "path": {
                "type": "string",
                "example": "/rent"
              }
            },
            "description": "\n            The rent amount of the tenancy\n            ",
            "example": "\n        {\n            \"path\": \"/rent\",\n            \"op\": \"replace\",\n            \"value\": 500.000\n        }"
          },
          {
            "title": "/rentalfrequency",
            "type": "object",
            "properties": {
              "op": {
                "enum": [
                  "add",
                  "replace",
                  "remove",
                  "test"
                ],
                "type": "string",
                "example": "add"
              },
              "value": {
                "type": "string",
                "example": "\"Monthly\""
              },
              "path": {
                "type": "string",
                "example": "/rentalfrequency"
              }
            },
            "description": "\n            The rent frequency of the tenancy\n            ",
            "example": "\n        {\n            \"path\": \"/rentalfrequency\",\n            \"op\": \"replace\",\n            \"value\": \"Monthly\"\n        }"
          },
          {
            "title": "/depositrequested",
            "type": "object",
            "properties": {
              "op": {
                "enum": [
                  "add",
                  "replace",
                  "remove",
                  "test"
                ],
                "type": "string",
                "example": "add"
              },
              "value": {
                "type": "number",
                "example": "100.000"
              },
              "path": {
                "type": "string",
                "example": "/depositrequested"
              }
            },
            "description": "\n            The requested deposit of the tenancy\n            ",
            "example": "\n        {\n            \"path\": \"/depositrequested\",\n            \"op\": \"replace\",\n            \"value\": 100.000\n        }"
          },
          {
            "title": "/startdate",
            "type": "object",
            "properties": {
              "op": {
                "enum": [
                  "add",
                  "replace",
                  "remove",
                  "test"
                ],
                "type": "string",
                "example": "add"
              },
              "value": {
                "type": "string",
                "example": "2020-01-01T00:00:00+00:00"
              },
              "path": {
                "type": "string",
                "example": "/startdate"
              }
            },
            "description": "\n            The start date of the tenancy\n            ",
            "example": "\n        {\n            \"path\": \"/startdate\",\n            \"op\": \"replace\",\n            \"value\": 2020-01-01T00:00:00+00:00\n        }"
          },
          {
            "title": "/termyears",
            "type": "object",
            "properties": {
              "op": {
                "enum": [
                  "add",
                  "replace",
                  "remove",
                  "test"
                ],
                "type": "string",
                "example": "add"
              },
              "value": {
                "type": "integer",
                "example": "2"
              },
              "path": {
                "type": "string",
                "example": "/termyears"
              }
            },
            "description": "\n            The term years of the tenancy\n            ",
            "example": "\n        {\n            \"path\": \"/termyears\",\n            \"op\": \"replace\",\n            \"value\": 2\n        }"
          },
          {
            "title": "/termmonths",
            "type": "object",
            "properties": {
              "op": {
                "enum": [
                  "add",
                  "replace",
                  "remove",
                  "test"
                ],
                "type": "string",
                "example": "add"
              },
              "value": {
                "type": "integer",
                "example": "12"
              },
              "path": {
                "type": "string",
                "example": "/termmonths"
              }
            },
            "description": "\n            The term months of the tenancy\n            ",
            "example": "\n        {\n            \"path\": \"/termmonths\",\n            \"op\": \"replace\",\n            \"value\": 12\n        }"
          },
          {
            "title": "/targetvacatedate",
            "type": "object",
            "properties": {
              "op": {
                "enum": [
                  "add",
                  "replace",
                  "remove",
                  "test"
                ],
                "type": "string",
                "example": "add"
              },
              "value": {
                "type": "string",
                "example": "2020-01-01T00:00:00+00:00"
              },
              "path": {
                "type": "string",
                "example": "/targetvacatedate"
              }
            },
            "description": "\n            The target vacate date of the tenancy\n            ",
            "example": "\n        {\n            \"path\": \"/targetvacatedate\",\n            \"op\": \"replace\",\n            \"value\": 2020-01-01T00:00:00+00:00\n        }"
          },
          {
            "title": "/firstfullrentdate",
            "type": "object",
            "properties": {
              "op": {
                "enum": [
                  "add",
                  "replace",
                  "remove",
                  "test"
                ],
                "type": "string",
                "example": "add"
              },
              "value": {
                "type": "string",
                "example": "2020-01-01T00:00:00+00:00"
              },
              "path": {
                "type": "string",
                "example": "/firstfullrentdate"
              }
            },
            "description": "\n            The first full rent date of the tenancy\n            ",
            "example": "\n        {\n            \"path\": \"/firstfullrentdate\",\n            \"op\": \"replace\",\n            \"value\": 2020-01-01T00:00:00+00:00\n        }"
          },
          {
            "title": "/noticetoquitdate",
            "type": "object",
            "properties": {
              "op": {
                "enum": [
                  "add",
                  "replace",
                  "remove",
                  "test"
                ],
                "type": "string",
                "example": "add"
              },
              "value": {
                "type": "string",
                "example": "2020-01-01T00:00:00+00:00"
              },
              "path": {
                "type": "string",
                "example": "/noticetoquitdate"
              }
            },
            "description": "\n            The notice to quit date of the tenancy\n            ",
            "example": "\n        {\n            \"path\": \"/noticetoquitdate\",\n            \"op\": \"replace\",\n            \"value\": 2020-01-01T00:00:00+00:00\n        }"
          },
          {
            "title": "/enddate",
            "type": "object",
            "properties": {
              "op": {
                "enum": [
                  "add",
                  "replace",
                  "remove",
                  "test"
                ],
                "type": "string",
                "example": "add"
              },
              "value": {
                "type": "string",
                "example": "2020-01-01T00:00:00+00:00"
              },
              "path": {
                "type": "string",
                "example": "/enddate"
              }
            },
            "description": "\n            The end date of the tenancy\n            ",
            "example": "\n        {\n            \"path\": \"/enddate\",\n            \"op\": \"replace\",\n            \"value\": 2020-01-01T00:00:00+00:00\n        }"
          },
          {
            "title": "/renewaldate",
            "type": "object",
            "properties": {
              "op": {
                "enum": [
                  "add",
                  "replace",
                  "remove",
                  "test"
                ],
                "type": "string",
                "example": "add"
              },
              "value": {
                "type": "string",
                "example": "2020-01-01T00:00:00+00:00"
              },
              "path": {
                "type": "string",
                "example": "/renewaldate"
              }
            },
            "description": "\n            The renewal date of the tenancy\n            ",
            "example": "\n        {\n            \"path\": \"/renewaldate\",\n            \"op\": \"replace\",\n            \"value\": 2020-01-01T00:00:00+00:00\n        }"
          },
          {
            "title": "/tenants",
            "type": "object",
            "properties": {
              "op": {
                "enum": [
                  "add",
                  "replace",
                  "remove",
                  "test"
                ],
                "type": "string",
                "example": "add"
              },
              "value": {
                "type": "integer",
                "example": "[123]"
              },
              "path": {
                "type": "string",
                "example": "/tenants"
              }
            },
            "description": "\n            The tenants Ids of the tenancy\n            ",
            "example": "\n        {\n            \"path\": \"/tenants\",\n            \"op\": \"replace\",\n            \"value\": [123]\n        }"
          },
          {
            "title": "/depositschemetype",
            "type": "object",
            "properties": {
              "op": {
                "enum": [
                  "replace"
                ],
                "type": "string",
                "example": "replace"
              },
              "value": {
                "type": "string",
                "example": "\"DisputeServiceCustodial\""
              },
              "path": {
                "type": "string",
                "example": "/depositschemetype"
              }
            },
            "description": "\n            Current DepositSchemeType of the Tenancy\n            ",
            "example": "\n        {\n            \"path\": \"/depositschemetype\",\n            \"op\": \"replace\",\n            \"value\": \"DisputeServiceCustodial\"\n        }"
          },
          {
            "title": "/occupantcount",
            "type": "object",
            "properties": {
              "op": {
                "enum": [
                  "add",
                  "replace",
                  "remove",
                  "test"
                ],
                "type": "string",
                "example": "add"
              },
              "value": {
                "type": "integer",
                "example": "2"
              },
              "path": {
                "type": "string",
                "example": "/occupantcount"
              }
            },
            "description": "\n            The occupants count of the tenancy\n            ",
            "example": "\n        {\n            \"path\": \"/occupantcount\",\n            \"op\": \"replace\",\n            \"value\": 2\n        }"
          },
          {
            "title": "/occupantdetails",
            "type": "object",
            "properties": {
              "op": {
                "enum": [
                  "add",
                  "replace",
                  "remove",
                  "test"
                ],
                "type": "string",
                "example": "add"
              },
              "value": {
                "type": "string",
                "example": "\"Name Surname\""
              },
              "path": {
                "type": "string",
                "example": "/occupantdetails"
              }
            },
            "description": "\n            The occupant names of the tenancy\n            ",
            "example": "\n        {\n            \"path\": \"/occupantdetails\",\n            \"op\": \"replace\",\n            \"value\": \"Name Surname\"\n        }"
          },
          {
            "title": "/depositregistrationnumber",
            "type": "object",
            "properties": {
              "op": {
                "enum": [
                  "replace"
                ],
                "type": "string",
                "example": "replace"
              },
              "value": {
                "type": "string",
                "example": "\"0123456\""
              },
              "path": {
                "type": "string",
                "example": "/depositregistrationnumber"
              }
            },
            "description": "\n            The Registration Number of the tenancy deposit\n            ",
            "example": "\n        {\n            \"path\": \"/depositregistrationnumber\",\n            \"op\": \"replace\",\n            \"value\": \"0123456\"\n        }"
          }
        ]
      },
      "SystemTextJsonPatch.Operations.Operation1_Alto.PropertyManagement.Api.Models.TenancyUtilityReadingPatch": {
        "anyOf": [
          {
            "title": "/inhighvalue",
            "type": "object",
            "properties": {
              "op": {
                "enum": [
                  "replace",
                  "remove"
                ],
                "type": "string",
                "example": "replace"
              },
              "value": {
                "type": "integer",
                "example": "100"
              },
              "path": {
                "type": "string",
                "example": "/inhighvalue"
              }
            },
            "description": "\n            The initial (move-in) high-value meter reading. This may capture peak usage rates or other high-end metrics.\n            It's nullable to handle cases where this data might not be available or applicable.\n            ",
            "example": "\n        {\n            \"path\": \"/inhighvalue\",\n            \"op\": \"replace\",\n            \"value\": 100\n        }"
          },
          {
            "title": "/inlowvalue",
            "type": "object",
            "properties": {
              "op": {
                "enum": [
                  "replace",
                  "remove"
                ],
                "type": "string",
                "example": "replace"
              },
              "value": {
                "type": "integer",
                "example": "100"
              },
              "path": {
                "type": "string",
                "example": "/inlowvalue"
              }
            },
            "description": "\n            The initial (move-in) low-value meter reading. This typically represents off-peak or lower usage rates.\n            Nullable to account for situations where this reading is not applicable or available.\n            ",
            "example": "\n        {\n            \"path\": \"/inlowvalue\",\n            \"op\": \"replace\",\n            \"value\": 100\n        }"
          },
          {
            "title": "/outhighvalue",
            "type": "object",
            "properties": {
              "op": {
                "enum": [
                  "replace",
                  "remove"
                ],
                "type": "string",
                "example": "replace"
              },
              "value": {
                "type": "integer",
                "example": "100"
              },
              "path": {
                "type": "string",
                "example": "/outhighvalue"
              }
            },
            "description": "\n            The final (move-out) high-value meter reading. Similar to InHighValue but recorded at the end of the tenancy.\n            Nullable for cases where the reading isn't available or needed.\n            ",
            "example": "\n        {\n            \"path\": \"/outhighvalue\",\n            \"op\": \"replace\",\n            \"value\": 100\n        }"
          },
          {
            "title": "/outlowvalue",
            "type": "object",
            "properties": {
              "op": {
                "enum": [
                  "replace",
                  "remove"
                ],
                "type": "string",
                "example": "replace"
              },
              "value": {
                "type": "integer",
                "example": "100"
              },
              "path": {
                "type": "string",
                "example": "/outlowvalue"
              }
            },
            "description": "\n            The final (move-out) low-value meter reading. Similar to InLowValue, but for the end of the tenancy period.\n            Nullable for cases where this data is not available or relevant.\n            ",
            "example": "\n        {\n            \"path\": \"/outlowvalue\",\n            \"op\": \"replace\",\n            \"value\": 100\n        }"
          },
          {
            "title": "/invalue",
            "type": "object",
            "properties": {
              "op": {
                "enum": [
                  "replace",
                  "remove"
                ],
                "type": "string",
                "example": "replace"
              },
              "value": {
                "type": "integer",
                "example": "100"
              },
              "path": {
                "type": "string",
                "example": "/invalue"
              }
            },
            "description": "\n            The overall move-in meter reading. This is a general reading, not specifically high or low value.\n            Nullable to accommodate situations where it might not be available.\n            ",
            "example": "\n        {\n            \"path\": \"/invalue\",\n            \"op\": \"replace\",\n            \"value\": 100\n        }"
          },
          {
            "title": "/outvalue",
            "type": "object",
            "properties": {
              "op": {
                "enum": [
                  "replace",
                  "remove"
                ],
                "type": "string",
                "example": "replace"
              },
              "value": {
                "type": "integer",
                "example": "100"
              },
              "path": {
                "type": "string",
                "example": "/outvalue"
              }
            },
            "description": "\n            The overall move-out meter reading. Like InValue, but for when the tenancy ends.\n            Nullable to handle cases where the reading is not obtained.\n            ",
            "example": "\n        {\n            \"path\": \"/outvalue\",\n            \"op\": \"replace\",\n            \"value\": 100\n        }"
          }
        ]
      },
      "SystemTextJsonPatch.Operations.Operation1_Alto.PropertyManagement.Api.Models.WorkOrderPatch": { },
      "AddressResponse": {
        "type": "object",
        "properties": {
          "subDwelling": {
            "type": "string",
            "nullable": true
          },
          "nameNumber": {
            "type": "string",
            "nullable": true
          },
          "street": {
            "type": "string",
            "nullable": true
          },
          "locality": {
            "type": "string",
            "nullable": true
          },
          "town": {
            "type": "string",
            "nullable": true
          },
          "county": {
            "type": "string",
            "nullable": true
          },
          "postcode": {
            "type": "string",
            "nullable": true
          },
          "countryCode": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "AgreedOffer": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "nullable": true
          },
          "branchId": {
            "type": "string",
            "nullable": true
          },
          "propertyId": {
            "type": "string",
            "nullable": true
          },
          "vendorSolicitor": {
            "$ref": "#/components/schemas/CompanyResponse"
          },
          "buyerSolicitor": {
            "$ref": "#/components/schemas/CompanyResponse"
          },
          "salesProgressor": {
            "$ref": "#/components/schemas/SecurityUserResponse"
          },
          "status": {
            "type": "string",
            "nullable": true
          },
          "offerAmount": {
            "type": "number",
            "format": "double"
          },
          "currencyCode": {
            "type": "string",
            "nullable": true
          },
          "contacts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ContactResponse"
            },
            "nullable": true
          },
          "offerAgreedDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "estimatedExchangeDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "completionDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "exchangeDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "AgreedOfferPagedResults": {
        "type": "object",
        "properties": {
          "meta": {
            "$ref": "#/components/schemas/Meta"
          },
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AgreedOffer"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "AgreedOfferWithMilestones": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "nullable": true
          },
          "branchId": {
            "type": "string",
            "nullable": true
          },
          "propertyId": {
            "type": "string",
            "nullable": true
          },
          "vendorSolicitor": {
            "$ref": "#/components/schemas/CompanyResponse"
          },
          "buyerSolicitor": {
            "$ref": "#/components/schemas/CompanyResponse"
          },
          "salesProgressor": {
            "$ref": "#/components/schemas/SecurityUserResponse"
          },
          "status": {
            "type": "string",
            "nullable": true
          },
          "offerAmount": {
            "type": "number",
            "format": "double"
          },
          "currencyCode": {
            "type": "string",
            "nullable": true
          },
          "offerAgreedDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "estimatedExchangeDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "completionDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "exchangeDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "milestones": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Milestone"
            },
            "nullable": true
          },
          "contacts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ContactResponse"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "CompanyResponse": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "nullable": true
          },
          "companyName": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "phone": {
            "type": "string",
            "nullable": true
          },
          "email": {
            "type": "string",
            "nullable": true
          },
          "address": {
            "$ref": "#/components/schemas/AddressResponse"
          }
        },
        "additionalProperties": false
      },
      "ContactResponse": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "nullable": true
          },
          "links": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Link"
            },
            "nullable": true
          },
          "type": {
            "type": "string",
            "nullable": true
          },
          "broker": {
            "$ref": "#/components/schemas/CompanyResponse"
          }
        },
        "additionalProperties": false
      },
      "Milestone": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "status": {
            "type": "string",
            "nullable": true
          },
          "targetDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "completedDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "notes": {
            "type": "string",
            "nullable": true
          },
          "branchId": {
            "type": "string",
            "nullable": true
          },
          "priority": {
            "type": "string",
            "nullable": true
          },
          "type": {
            "type": "string",
            "nullable": true
          },
          "customization": {
            "type": "string",
            "nullable": true
          },
          "ordering": {
            "type": "integer",
            "format": "int32"
          },
          "subTypeId": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "SecurityUserResponse": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "phone": {
            "type": "string",
            "nullable": true
          },
          "email": {
            "type": "string",
            "nullable": true
          },
          "address": {
            "$ref": "#/components/schemas/AddressResponse"
          }
        },
        "additionalProperties": false
      },
      "SortType": {
        "enum": [
          "CompletionDate",
          "EstimatedExchangeDate",
          "OfferAcceptedDate",
          "Negotiator",
          "Milestone",
          "OldestToNewest"
        ],
        "type": "string"
      },
      "PatchReferralRequest": {
        "type": "object",
        "properties": {
          "status": {
            "type": "string",
            "nullable": true
          },
          "fees": {
            "type": "number",
            "format": "double"
          }
        },
        "additionalProperties": false
      }
    },
    "securitySchemes": {
      "Bearer": {
        "type": "apiKey",
        "description": "Please enter JWT with Bearer into field",
        "name": "Authorization",
        "in": "header"
      }
    }
  },
  "security": [
    {
      "Bearer": [ ]
    }
  ]
}