{ "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" } }, "security": [ { "appAuth": [ "alto/route:get-appointments-appointmentid-instanceid" ] } ] } }, "/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": "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" } }, "security": [ { "appAuth": [ "alto/route:post-appointments-general" ] } ] } }, "/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": "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" } }, "security": [ { "appAuth": [ "alto/route:patch-appointments-general-appointmentid" ] } ] } }, "/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.\nInterpreted as UK local diary time: a value with a UTC marker (a trailing `Z`) or an explicit offset\nis converted to UK local time (Europe/London); a plain local value with no offset is taken as-is.", "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.\nInterpreted as UK local diary time: a value with a UTC marker (a trailing `Z`) or an explicit offset\nis converted to UK local time (Europe/London); a plain local value with no offset is taken as-is.", "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": "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" } }, "security": [ { "appAuth": [ "alto/route:get-appointments-negotiators" ] } ] } }, "/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" } } } } }, "security": [ { "appAuth": [ "alto/route:get-appointments-valuations" ] } ] } }, "/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": "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" } }, "security": [ { "appAuth": [ "alto/route:post-appointments-viewings" ] } ] } }, "/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": "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" } }, "security": [ { "appAuth": [ "alto/route:patch-appointments-viewings-appointmentid" ] } ] } }, "/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" } }, "security": [ { "appAuth": [ "alto/route:get-parameters-appointment-subtypes" ] } ] } }, "/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" } }, "security": [ { "appAuth": [ "alto/route:post-appraisals" ] } ] } }, "/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" } }, "security": [ { "appAuth": [ "alto/route:patch-inventory-propertyid-appraisal" ] } ] } }, "/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, "security": [ { "appAuth": [ "alto/route:get-clients" ] } ] } }, "/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" } }, "security": [ { "appAuth": [ "alto/route:get-branches" ] } ] } }, "/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." } }, "security": [ { "appAuth": [ "alto/route:get-branches-branchid" ] } ] } }, "/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" } }, "security": [ { "appAuth": [ "alto/route:get-negotiators" ] } ] } }, "/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" } }, "security": [ { "appAuth": [ "alto/route:get-negotiators-negotiatorid" ] } ] } }, "/contacts": { "get": { "tags": [ "Contacts" ], "summary": "Get Contact(s) by Id(s)", "description": "See glossary for definition of Person and Contact.", "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" } } } } }, "security": [ { "appAuth": [ "alto/route:get-contacts" ] } ] }, "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" } } } } }, "security": [ { "appAuth": [ "alto/route:get-contacts" ] } ] } }, "/contacts/{contactId}": { "get": { "tags": [ "Contacts" ], "summary": "Get Person(s) by Contact Id", "description": "See glossary for definition of Person and Contact.", "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" } } } } }, "security": [ { "appAuth": [ "alto/route:get-contacts-contactid" ] } ] }, "patch": { "tags": [ "Contacts" ], "summary": "Update Contact by Id", "description": "See glossary for definition of Contact.", "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" } } } } }, "security": [ { "appAuth": [ "alto/route:get-contacts-contactid" ] } ] } }, "/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" } } } } }, "security": [ { "appAuth": [ "alto/route:post-contacts-contactid-applicant-requirements" ] } ] } }, "/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" } } } } }, "security": [ { "appAuth": [ "alto/route:patch-contacts-contactid-applicant-requirements-requirementid" ] } ] } }, "/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" } } } } }, "security": [ { "appAuth": [ "alto/route:post-contacts-contactid-forwarding-address" ] } ] } }, "/contacts/{contactId}/persons": { "get": { "tags": [ "Contacts" ], "summary": "Get Person(s) by Contact Id", "description": "See glossary for definition of Person and Contact.", "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" } } } } }, "security": [ { "appAuth": [ "alto/route:get-contacts-contactid-persons" ] } ] } }, "/contacts/{contactId}/persons/{personId}": { "patch": { "tags": [ "Contacts" ], "summary": "Update Person by Contact Id", "description": "See glossary for definition of Person.", "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" } } } } }, "security": [ { "appAuth": [ "alto/route:patch-contacts-contactid-persons-personid" ] } ] }, "get": { "tags": [ "Contacts" ], "summary": "Get Person by Contact Id", "description": "See glossary for definition of Person.", "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" } } } } }, "security": [ { "appAuth": [ "alto/route:patch-contacts-contactid-persons-personid" ] } ] } }, "/contacts/{contactId}/preferences": { "get": { "tags": [ "Contacts" ], "summary": "Get Marketing Preferences by Contact Id", "description": "See glossary for definition of Person and Contact.", "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" } } } } }, "security": [ { "appAuth": [ "alto/route:post-contacts-contactid-preferences" ] } ] }, "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" } } } } }, "security": [ { "appAuth": [ "alto/route:post-contacts-contactid-preferences" ] } ] } }, "/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" } } } } }, "security": [ { "appAuth": [ "alto/route:get-contacts-contactid-relationship" ] } ] }, "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" } } } } }, "security": [ { "appAuth": [ "alto/route:get-contacts-contactid-relationship" ] } ] } }, "/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" } } } } }, "security": [ { "appAuth": [ "alto/route:delete-contacts-contactid-relationship-contactrelationshipid" ] } ] } }, "/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" } } } } }, "security": [ { "appAuth": [ "alto/route:get-contacts-all" ] } ] } }, "/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" } } } } }, "security": [ { "appAuth": [ "alto/route:get-contacts-search" ] } ] } }, "/owners": { "get": { "tags": [ "Owners" ], "summary": "Get Owners", "description": "Required scope: alto/read:contacts. \nSee glossary for definition of Owner.", "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" } } } } }, "security": [ { "appAuth": [ "alto/route:get-owners" ] } ] } }, "/parameters/client-disposal-statuses": { "get": { "tags": [ "Parameters" ], "summary": "Get Client Disposal Statuses", "description": "See glossary for definition of Parameter.", "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" } } } } } }, "security": [ { "appAuth": [ "alto/route:get-parameters-client-disposal-statuses" ] } ] } }, "/parameters/client-intentions": { "get": { "tags": [ "Parameters" ], "summary": "Get Client Intentions", "description": "See glossary for definition of Parameter.", "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" } } } } } }, "security": [ { "appAuth": [ "alto/route:get-parameters-client-intentions" ] } ] } }, "/parameters/client-positions": { "get": { "tags": [ "Parameters" ], "summary": "Get Client Positions", "description": "See glossary for definition of Parameter.", "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" } } } } } }, "security": [ { "appAuth": [ "alto/route:get-parameters-client-positions" ] } ] } }, "/parameters/lead-sources": { "get": { "tags": [ "Parameters" ], "summary": "Get Lead Sources", "description": "See glossary for definition of Parameter.", "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" } } } } } }, "security": [ { "appAuth": [ "alto/route:get-parameters-lead-sources" ] } ] } }, "/parameters/property-types": { "get": { "tags": [ "Parameters" ], "summary": "Get Property Types", "description": "Returns the property types available to the caller's group. Use the returned `code`s when specifying\nan applicant requirement's property types. Property types are defined per Group, so the list is scoped\nto the group context of the request.", "operationId": "GetPropertyTypes", "parameters": [ { "name": "AgencyRef", "in": "header", "description": "", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "Property types returned for the given AgencyRef", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/Alto.Contacts.Api.Models.Responses.ParameterValue" } } } } } }, "security": [ { "appAuth": [ "alto/route:get-parameters-property-types" ] } ] } }, "/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" } } } } }, "security": [ { "appAuth": [ "alto/route:get-documents" ] } ] } }, "/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" } } } } }, "security": [ { "appAuth": [ "alto/route:get-documents-documentid-content" ] } ] } }, "/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" } } } } }, "security": [ { "appAuth": [ "alto/route:post-documents-post" ] } ] } }, "/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" } } } } }, "security": [ { "appAuth": [ "alto/route:get-inventory-inventoryid-documents" ] } ] } }, "/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" } } } } }, "security": [ { "appAuth": [ "alto/route:get-work-orders-workorderid-documents" ] } ] } }, "/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" } }, "security": [ { "appAuth": [ "alto/route:post-file-notes" ] } ] } }, "/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" } }, "security": [ { "appAuth": [ "alto/route:get-file-notes-filenoteid" ] } ] }, "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" } }, "security": [ { "appAuth": [ "alto/route:get-file-notes-filenoteid" ] } ] } }, "/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" } }, "security": [ { "appAuth": [ "alto/route:get-file-notes-search" ] } ] } }, "/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" } }, "security": [ { "appAuth": [ "alto/route:get-inventory-propertyid-file-notes" ] } ] } }, "/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" } } } } }, "security": [ { "appAuth": [ "alto/route:get-inventory" ] } ] } }, "/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" } }, "security": [ { "appAuth": [ "alto/route:get-inventory-inventoryid" ] } ] }, "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" } }, "security": [ { "appAuth": [ "alto/route:get-inventory-inventoryid" ] } ] } }, "/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" } }, "security": [ { "appAuth": [ "alto/route:post-inventory-inventoryid-keyset" ] } ] } }, "/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" } }, "security": [ { "appAuth": [ "alto/route:delete-inventory-inventoryid-keyset-keysetid" ] } ] }, "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" } }, "security": [ { "appAuth": [ "alto/route:delete-inventory-inventoryid-keyset-keysetid" ] } ] } }, "/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" } }, "security": [ { "appAuth": [ "alto/route:get-inventory-inventoryid-keysets" ] } ] } }, "/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" } }, "security": [ { "appAuth": [ "alto/route:post-inventory-inventoryid-owner" ] } ] } }, "/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" } }, "security": [ { "appAuth": [ "alto/route:get-inventory-filter" ] } ] } }, "/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" } }, "security": [ { "appAuth": [ "alto/route:get-inventory-items" ] } ] } }, "/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" } }, "security": [ { "appAuth": [ "alto/route:post-inventory-new" ] } ] } }, "/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" } }, "security": [ { "appAuth": [ "alto/route:get-inventory-search" ] } ] } }, "/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" } } } } }, "security": [ { "appAuth": [ "alto/route:get-leads" ] } ] }, "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" } } } } }, "security": [ { "appAuth": [ "alto/route:get-leads" ] } ] } }, "/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" } } } } }, "security": [ { "appAuth": [ "alto/route:get-leads-leadid" ] } ] }, "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" } } } } }, "security": [ { "appAuth": [ "alto/route:get-leads-leadid" ] } ] } }, "/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" } } } } }, "security": [ { "appAuth": [ "alto/route:get-guarantorids" ] } ] } }, "/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" } } } } }, "security": [ { "appAuth": [ "alto/route:get-referencechecks" ] } ] } }, "/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" } } } } }, "security": [ { "appAuth": [ "alto/route:patch-referencechecks-referencecheckid" ] } ] } }, "/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" } }, "security": [ { "appAuth": [ "alto/route:get-listing-filter" ] } ] } }, "/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" } }, "security": [ { "appAuth": [ "alto/route:get-listing-property-propertyid" ] } ] } }, "/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" } }, "security": [ { "appAuth": [ "alto/route:get-listing-property-propertyid-images" ] } ] } }, "/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" } }, "security": [ { "appAuth": [ "alto/route:get-listing-property-propertyid-images-imageid" ] } ] } }, "/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" } } } } }, "security": [ { "appAuth": [ "alto/route:patch-listing-property-propertyid-rooms" ] } ] } }, "/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" } } } } }, "security": [ { "appAuth": [ "alto/route:patch-listing-property-propertyid-summary" ] } ] } }, "/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" } }, "security": [ { "appAuth": [ "alto/route:get-listing-property-items" ] } ] } }, "/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" } }, "security": [ { "appAuth": [ "alto/route:post-inventory-inventoryid-media-link" ] } ] } }, "/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" } }, "security": [ { "appAuth": [ "alto/route:post-media-item" ] } ] } }, "/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" } }, "security": [ { "appAuth": [ "alto/route:delete-media-item-mediaitemid" ] } ] } }, "/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": "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/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" } } } } }, "security": [ { "appAuth": [ "alto/route:get-offers-sales-offer-offerid" ] } ] } }, "/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" } } } } }, "security": [ { "appAuth": [ "alto/route:get-referrals-referralid" ] } ] }, "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" } }, "security": [ { "appAuth": [ "alto/route:get-referrals-referralid" ] } ] } }, "/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" } }, "security": [ { "appAuth": [ "alto/route:get-opt-out-status-linkedtype-linkedid" ] } ] } }, "/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" } }, "security": [ { "appAuth": [ "alto/route:get-partners-integration" ] } ] } }, "/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" } }, "security": [ { "appAuth": [ "alto/route:post-partners-integration-status" ] } ] } }, "/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" } } } } }, "security": [ { "appAuth": [ "alto/route:get-inventory-inventoryid-landlords" ] } ] } }, "/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" } } } } }, "security": [ { "appAuth": [ "alto/route:get-inventory-inventoryid-management-events" ] } ] } }, "/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" } } } } }, "security": [ { "appAuth": [ "alto/route:get-inventory-inventoryid-suppliers" ] } ] } }, "/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" } } } } }, "security": [ { "appAuth": [ "alto/route:post-inventory-inventoryid-tenancies" ] } ] }, "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" } } } } }, "security": [ { "appAuth": [ "alto/route:post-inventory-inventoryid-tenancies" ] } ] } }, "/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" } } } } }, "security": [ { "appAuth": [ "alto/route:get-inventory-inventoryid-work-orders" ] } ] } }, "/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" } } } } }, "security": [ { "appAuth": [ "alto/route:post-inventory-propertyid-charges" ] } ] } }, "/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" } } } } }, "security": [ { "appAuth": [ "alto/route:get-landlords" ] } ] } }, "/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" } } } } }, "security": [ { "appAuth": [ "alto/route:get-management-events" ] } ] }, "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" } } } } }, "security": [ { "appAuth": [ "alto/route:get-management-events" ] } ] } }, "/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" } } } } }, "security": [ { "appAuth": [ "alto/route:get-management-events-eventid" ] } ] }, "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" } } } } }, "security": [ { "appAuth": [ "alto/route:get-management-events-eventid" ] } ] } }, "/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" } } } } }, "security": [ { "appAuth": [ "alto/route:get-suppliers" ] } ] } }, "/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" } } } } }, "security": [ { "appAuth": [ "alto/route:get-suppliers-supplierid" ] } ] } }, "/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" } } } } }, "security": [ { "appAuth": [ "alto/route:get-tenancies" ] } ] } }, "/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" } } } } }, "security": [ { "appAuth": [ "alto/route:get-tenancies-tenancyid" ] } ] }, "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" } } } } }, "security": [ { "appAuth": [ "alto/route:get-tenancies-tenancyid" ] } ] } }, "/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" } } } } }, "security": [ { "appAuth": [ "alto/route:post-tenancies-tenancyid-charges" ] } ] } }, "/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" } } } } } }, "security": [ { "appAuth": [ "alto/route:get-tenancies-tenancyid-meter-readings" ] } ] }, "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" } } } } }, "security": [ { "appAuth": [ "alto/route:get-tenancies-tenancyid-meter-readings" ] } ] } }, "/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" } } } } }, "security": [ { "appAuth": [ "alto/route:patch-tenancies-tenancyid-meter-readings-utilitytype" ] } ] } }, "/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" } } } } }, "security": [ { "appAuth": [ "alto/route:get-tenancies-tenancyid-tenantids" ] } ] } }, "/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" } } } } }, "security": [ { "appAuth": [ "alto/route:post-work-orders" ] } ] } }, "/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" } } } } }, "security": [ { "appAuth": [ "alto/route:get-work-orders-id" ] } ] }, "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" } } } } }, "security": [ { "appAuth": [ "alto/route:get-work-orders-id" ] } ] } }, "/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" } }, "security": [ { "appAuth": [ "alto/route:get-sales-progressions" ] } ] } }, "/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" } }, "security": [ { "appAuth": [ "alto/route:get-sales-progressions-offerid" ] } ] } }, "/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, returned as a local (UK) diary time with no timezone offset.", "format": "date-time", "example": "2024-11-01T14:07:17.0000000+00:00" }, "endDate": { "type": "string", "description": "The appointment end date and time, returned as a local (UK) diary time with no timezone offset.", "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.\nInterpreted as UK local diary time: a value with a UTC marker (a trailing `Z`) or an explicit offset\nis converted to UK local time (Europe/London); a plain local value with no offset is taken as-is.", "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.\nInterpreted as UK local diary time: a value with a UTC marker (a trailing `Z`) or an explicit offset\nis converted to UK local time (Europe/London); a plain local value with no offset is taken as-is.", "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.\nInterpreted as UK local diary time: a value with a UTC marker (a trailing `Z`) or an explicit offset\nis converted to UK local time (Europe/London); a plain local value with no offset is taken as-is.", "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.\nInterpreted as UK local diary time: a value with a UTC marker (a trailing `Z`) or an explicit offset\nis converted to UK local time (Europe/London); a plain local value with no offset is taken as-is.", "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 Appraisal Types" }, "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": "Disposal Id", "type": "object", "properties": { "op": { "enum": [ "replace" ], "type": "string" }, "value": { "type": "string", "example": "\"271\"" }, "path": { "type": "string", "default": "/DisposalId", "example": "/DisposalId" } }, "description": "\n The code for the contact's disposal status.\n ", "example": "\n{ \n \"path\": \"/DisposalId\", \n \"op\": \"replace\", \n \"value\": \"271\"\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": { "enum": [ "Unspecified", "Received", "Accepted", "Rejected", "Withdrawn", "Revised" ], "type": "string" }, "recordType": { "enum": [ "Unspecified", "Sale", "Rent" ], "type": "string" }, "salesProgressorName": { "type": "string", "nullable": true }, "contactsJson": { "type": "string", "nullable": true } }, "additionalProperties": false }, "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": [ ] } ] }