openapi: 3.2.0 info: title: Purplebricks Threads API version: '1.0' description: 'Operations tagged Threads across 2 of this provider''s published API definitions: purplebricks-messaging-v1-openapi.yml, purplebricks-messaging-v2-openapi.yml. Each path carries the servers of the definition it was published in.' servers: - url: https://api.purplebricks.co.uk/messaging-api security: - Bearer: [] tags: - name: Threads paths: /v1/threads: get: tags: - Threads parameters: - name: propertyId in: query schema: type: integer format: int32 - name: fromDate in: query schema: type: string format: date-time - name: includeSystemMessages in: query schema: type: boolean default: false - name: limit in: query schema: type: integer format: int32 default: 50 - name: cursor in: query schema: type: string - name: page in: query schema: $ref: '#/components/schemas/Purplebricks.Messaging.Business.Messages.Models.CursorPaginationType' - name: userId in: query schema: type: integer format: int32 responses: '200': description: Success content: text/plain: schema: $ref: '#/components/schemas/Purplebricks.Messaging.Business.Messages.Models.ThreadListResponseModel' application/json: schema: $ref: '#/components/schemas/Purplebricks.Messaging.Business.Messages.Models.ThreadListResponseModel' text/json: schema: $ref: '#/components/schemas/Purplebricks.Messaging.Business.Messages.Models.ThreadListResponseModel' '403': description: Forbidden 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' '401': description: Unauthorized 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' servers: - url: https://api.purplebricks.co.uk/messaging-api /v1/threads/{threadId}: get: tags: - Threads parameters: - name: threadId in: path required: true schema: type: string format: uuid responses: '200': description: Success content: text/plain: schema: $ref: '#/components/schemas/Purplebricks.Messaging.Business.Messages.Models.ThreadResponseModel' application/json: schema: $ref: '#/components/schemas/Purplebricks.Messaging.Business.Messages.Models.ThreadResponseModel' text/json: schema: $ref: '#/components/schemas/Purplebricks.Messaging.Business.Messages.Models.ThreadResponseModel' '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' '401': description: Unauthorized 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' servers: - url: https://api.purplebricks.co.uk/messaging-api /v1/threads/{threadId}/messages: get: tags: - Threads parameters: - name: threadId in: path required: true schema: type: string format: uuid - name: propertyId in: query schema: type: integer format: int32 - name: isRead in: query schema: type: boolean - name: includeSystemMessages in: query schema: type: boolean - name: limit in: query schema: type: integer format: int32 default: 50 - name: cursor in: query schema: type: string - name: page in: query schema: $ref: '#/components/schemas/Purplebricks.Messaging.Business.Messages.Models.CursorPaginationType' - name: ascending in: query schema: type: boolean default: true - name: userId in: query schema: type: integer format: int32 responses: '200': description: Success content: text/plain: schema: $ref: '#/components/schemas/Purplebricks.Messaging.Business.Messages.Models.MessagesListResponseModel' application/json: schema: $ref: '#/components/schemas/Purplebricks.Messaging.Business.Messages.Models.MessagesListResponseModel' text/json: schema: $ref: '#/components/schemas/Purplebricks.Messaging.Business.Messages.Models.MessagesListResponseModel' '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' '401': description: Unauthorized 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' servers: - url: https://api.purplebricks.co.uk/messaging-api /v1/threads/{threadId}/messages/count: get: tags: - Threads parameters: - name: threadId in: path required: true schema: type: string format: uuid - name: propertyId in: query schema: type: integer format: int32 - name: isRead in: query schema: type: boolean - name: includeSystemMessages in: query schema: type: boolean - name: userId in: query schema: type: integer format: int32 responses: '200': description: Success content: text/plain: schema: type: string application/json: schema: type: string text/json: schema: type: string '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' '401': description: Unauthorized 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' servers: - url: https://api.purplebricks.co.uk/messaging-api /v1/threads/{threadId}/read: patch: tags: - Threads parameters: - name: threadId in: path required: true schema: type: string format: uuid responses: '204': description: No Content '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' '401': description: Unauthorized 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' servers: - url: https://api.purplebricks.co.uk/messaging-api /v2/threads: get: tags: - Threads parameters: - name: propertyId in: query schema: type: integer format: int32 - name: fromDate in: query schema: type: string format: date-time - name: includeSystemMessages in: query schema: type: boolean default: false - name: limit in: query schema: type: integer format: int32 default: 50 - name: cursor in: query schema: type: string - name: page in: query schema: $ref: '#/components/schemas/Purplebricks.Messaging.Business.Messages.Models.CursorPaginationType' - name: userId in: query schema: type: integer format: int32 responses: '200': description: Success content: text/plain: schema: $ref: '#/components/schemas/Purplebricks.Messaging.Business.Messages.Models.ThreadListResponseModel' application/json: schema: $ref: '#/components/schemas/Purplebricks.Messaging.Business.Messages.Models.ThreadListResponseModel' text/json: schema: $ref: '#/components/schemas/Purplebricks.Messaging.Business.Messages.Models.ThreadListResponseModel' '403': description: Forbidden 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' '401': description: Unauthorized 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' servers: - url: https://api.purplebricks.co.uk/messaging-api /v2/threads/{threadId}: get: tags: - Threads parameters: - name: threadId in: path required: true schema: type: string format: uuid - name: includeSystemMessages in: query schema: type: boolean default: false responses: '200': description: Success content: text/plain: schema: $ref: '#/components/schemas/Purplebricks.Messaging.Business.Messages.Models.ThreadResponseModel' application/json: schema: $ref: '#/components/schemas/Purplebricks.Messaging.Business.Messages.Models.ThreadResponseModel' text/json: schema: $ref: '#/components/schemas/Purplebricks.Messaging.Business.Messages.Models.ThreadResponseModel' '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' '401': description: Unauthorized 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' servers: - url: https://api.purplebricks.co.uk/messaging-api components: schemas: Purplebricks.Messaging.Business.Messages.Models.MessagesListResponseModel: type: object properties: messages: type: - array - 'null' items: $ref: '#/components/schemas/Purplebricks.Messaging.Business.Messages.Models.MessageResponseModel' pageInfo: $ref: '#/components/schemas/Purplebricks.Messaging.Business.Messages.Models.PageInfoResponseModel' additionalProperties: false Purplebricks.Messaging.Business.Messages.Models.ThreadListResponseModel: type: object properties: threads: type: - array - 'null' items: $ref: '#/components/schemas/Purplebricks.Messaging.Business.Messages.Models.ThreadResponseModel' pageInfo: $ref: '#/components/schemas/Purplebricks.Messaging.Business.Messages.Models.PageInfoResponseModel' additionalProperties: false Microsoft.AspNetCore.Mvc.ProblemDetails: type: object properties: type: type: - string - 'null' title: type: - string - 'null' status: type: - integer - 'null' format: int32 detail: type: - string - 'null' instance: type: - string - 'null' additionalProperties: {} Purplebricks.Messaging.Business.Messages.Models.AddressDetail: type: object properties: line1: type: - string - 'null' line2: type: - string - 'null' town: type: - string - 'null' county: type: - string - 'null' postcode: type: - string - 'null' additionalProperties: false Purplebricks.Messaging.Business.Messages.Models.CursorPaginationType: enum: - Previous - Next type: string Purplebricks.Messaging.Business.Messages.Models.PageInfoResponseModel: type: object properties: requestedPageSize: type: integer format: int32 totalItemCount: type: integer format: int32 hasNextPage: type: boolean hasPreviousPage: type: boolean additionalProperties: false Purplebricks.Messaging.Business.Messages.Models.ParticipantDetail: type: object properties: userId: type: integer format: int32 title: type: - string - 'null' forename: type: - string - 'null' surname: type: - string - 'null' additionalProperties: false Purplebricks.Messaging.Business.Messages.Models.ThreadResponseModel: type: object properties: id: type: string format: uuid propertyId: type: - integer - 'null' format: int32 address: $ref: '#/components/schemas/Purplebricks.Messaging.Business.Messages.Models.AddressDetail' participants: type: - array - 'null' items: type: integer format: int32 participantsDetails: type: - array - 'null' items: $ref: '#/components/schemas/Purplebricks.Messaging.Business.Messages.Models.ParticipantDetail' date: type: string format: date-time lastMessage: $ref: '#/components/schemas/Purplebricks.Messaging.Business.Messages.Models.MessageResponseModel' cursor: type: - string - 'null' additionalProperties: false Purplebricks.Messaging.Business.Messages.Models.MessageResponseModel: type: object properties: id: type: integer format: int32 threadId: type: string format: uuid senderId: type: - integer - 'null' format: int32 recipientId: type: integer format: int32 propertyId: type: - integer - 'null' format: int32 subject: type: - string - 'null' body: type: - string - 'null' read: type: boolean date: type: string format: date-time cursor: type: - string - 'null' isSystemMessage: type: boolean readOnly: true additionalProperties: false securitySchemes: Bearer: type: apiKey description: Authorization header using Bearer scheme name: Authorization in: header x-refined-from: - purplebricks-messaging-v1-openapi.yml - purplebricks-messaging-v2-openapi.yml