openapi: 3.0.1 info: title: Purplebricks Account API 1 - Platform description: '### All Ex Uber Account related controllers are here. ### [Purplebricks Account API Git Repository](https://dev.azure.com/purplebricks/BackEnd/_git/account-api)' version: '1' servers: - url: https://api.purplebricks.co.uk/account-api paths: /v1/auth: get: tags: - Auth parameters: - name: Url in: query schema: type: string responses: '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' '200': description: Success '500': description: Server Error default: description: Error 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' /v1/emailconfirmation/getemailconfirmationdata/{token}: get: tags: - EmailConfirmation parameters: - name: token in: path required: true schema: type: string responses: '200': description: Success '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' '500': description: Server Error /v1/expertcreated: post: tags: - ExpertCreated requestBody: content: application/json: schema: $ref: '#/components/schemas/Purplebricks.Account.Api.Models.ExpertCreatedInputModel' text/json: schema: $ref: '#/components/schemas/Purplebricks.Account.Api.Models.ExpertCreatedInputModel' application/*+json: schema: $ref: '#/components/schemas/Purplebricks.Account.Api.Models.ExpertCreatedInputModel' responses: '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' '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: type: string application/json: schema: type: string text/json: schema: type: string '404': description: Not Found content: text/plain: schema: type: integer format: int32 application/json: schema: type: integer format: int32 text/json: schema: type: integer format: int32 '409': description: Conflict content: text/plain: schema: type: string application/json: schema: type: string text/json: schema: type: string '200': description: Success /v1/marketingpreferences/{publicUserId}: get: tags: - MarketingPreferences parameters: - name: publicUserId in: path required: true schema: type: string format: uuid responses: '200': description: Success content: text/plain: schema: type: array items: $ref: '#/components/schemas/Purplebricks.Account.Business.Models.MarketingPreferencesResponseModel' application/json: schema: type: array items: $ref: '#/components/schemas/Purplebricks.Account.Business.Models.MarketingPreferencesResponseModel' text/json: schema: type: array items: $ref: '#/components/schemas/Purplebricks.Account.Business.Models.MarketingPreferencesResponseModel' '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' '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' /v1/marketingpreferences: put: tags: - MarketingPreferences requestBody: content: application/json: schema: $ref: '#/components/schemas/Purplebricks.Account.Common.Models.MarketingPreferencesUpdateInputModel' text/json: schema: $ref: '#/components/schemas/Purplebricks.Account.Common.Models.MarketingPreferencesUpdateInputModel' application/*+json: schema: $ref: '#/components/schemas/Purplebricks.Account.Common.Models.MarketingPreferencesUpdateInputModel' responses: default: description: Error 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' '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' '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' '204': description: Success /v1/phoneverification/status: get: tags: - PhoneVerification responses: '200': description: Success content: text/plain: schema: $ref: '#/components/schemas/Purplebricks.Account.Api.V1.Controllers.PhoneVerificationStatusResponse' application/json: schema: $ref: '#/components/schemas/Purplebricks.Account.Api.V1.Controllers.PhoneVerificationStatusResponse' text/json: schema: $ref: '#/components/schemas/Purplebricks.Account.Api.V1.Controllers.PhoneVerificationStatusResponse' '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' /v1/phoneverification/send: post: tags: - PhoneVerification requestBody: content: application/json: schema: $ref: '#/components/schemas/Purplebricks.Account.Api.V1.Controllers.SendOtpRequest' text/json: schema: $ref: '#/components/schemas/Purplebricks.Account.Api.V1.Controllers.SendOtpRequest' application/*+json: schema: $ref: '#/components/schemas/Purplebricks.Account.Api.V1.Controllers.SendOtpRequest' responses: '200': description: Success '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' '409': description: Conflict 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' '429': description: Client Error 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' '500': description: Server Error '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' /v1/phoneverification/manual-verify/{userId}: post: tags: - PhoneVerification parameters: - name: userId in: path required: true schema: type: integer format: int32 responses: '200': description: Success '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' /v1/phoneverification/verify: post: tags: - PhoneVerification requestBody: content: application/json: schema: $ref: '#/components/schemas/Purplebricks.Account.Api.V1.Controllers.VerifyOtpRequest' text/json: schema: $ref: '#/components/schemas/Purplebricks.Account.Api.V1.Controllers.VerifyOtpRequest' application/*+json: schema: $ref: '#/components/schemas/Purplebricks.Account.Api.V1.Controllers.VerifyOtpRequest' responses: '200': description: Success '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' /v1/user/isusernametaken: get: tags: - User parameters: - name: Email in: query schema: type: string format: email responses: '200': description: Success content: text/plain: schema: type: boolean application/json: schema: type: boolean text/json: schema: type: boolean /v1/user/sendpasswordreset: post: tags: - User requestBody: content: application/json: schema: $ref: '#/components/schemas/Purplebricks.Account.Api.Models.EmailInputModel' text/json: schema: $ref: '#/components/schemas/Purplebricks.Account.Api.Models.EmailInputModel' application/*+json: schema: $ref: '#/components/schemas/Purplebricks.Account.Api.Models.EmailInputModel' responses: '200': description: Success '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' /v1/user/resendemailconfirmation: post: tags: - User requestBody: content: application/json: schema: $ref: '#/components/schemas/Purplebricks.Account.Api.Models.EmailInputModel' text/json: schema: $ref: '#/components/schemas/Purplebricks.Account.Api.Models.EmailInputModel' application/*+json: schema: $ref: '#/components/schemas/Purplebricks.Account.Api.Models.EmailInputModel' responses: '200': description: Success '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' '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' '409': description: Conflict 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' /v1/user/requestaccountdeletion: post: tags: - User requestBody: content: application/json: schema: $ref: '#/components/schemas/Purplebricks.Account.Api.Models.RequestDeletionInputModel' text/json: schema: $ref: '#/components/schemas/Purplebricks.Account.Api.Models.RequestDeletionInputModel' application/*+json: schema: $ref: '#/components/schemas/Purplebricks.Account.Api.Models.RequestDeletionInputModel' responses: '204': description: Success '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' '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' /v1/user/changeemail: post: tags: - User requestBody: content: application/json: schema: $ref: '#/components/schemas/Purplebricks.Account.Business.Models.InputModels.ChangeEmailInputModel' text/json: schema: $ref: '#/components/schemas/Purplebricks.Account.Business.Models.InputModels.ChangeEmailInputModel' application/*+json: schema: $ref: '#/components/schemas/Purplebricks.Account.Business.Models.InputModels.ChangeEmailInputModel' responses: '204': description: Success '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' '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' '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' /v1/user: post: tags: - User requestBody: content: application/json: schema: $ref: '#/components/schemas/Purplebricks.Account.Common.Models.CreateUserInputModel' text/json: schema: $ref: '#/components/schemas/Purplebricks.Account.Common.Models.CreateUserInputModel' application/*+json: schema: $ref: '#/components/schemas/Purplebricks.Account.Common.Models.CreateUserInputModel' responses: default: description: Error 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' '200': description: Success content: text/plain: schema: $ref: '#/components/schemas/Purplebricks.Account.Common.Models.ViewModels.CreateCustomerViewModel' application/json: schema: $ref: '#/components/schemas/Purplebricks.Account.Common.Models.ViewModels.CreateCustomerViewModel' text/json: schema: $ref: '#/components/schemas/Purplebricks.Account.Common.Models.ViewModels.CreateCustomerViewModel' '500': description: Server Error components: schemas: 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: {} Purplebricks.Account.Api.Models.EmailInputModel: type: object properties: email: type: string format: email nullable: true additionalProperties: false Purplebricks.Account.Api.Models.ExpertCreatedInputModel: type: object properties: userId: type: integer format: int32 additionalProperties: false Purplebricks.Account.Api.Models.RequestDeletionInputModel: type: object properties: reasonNumber: type: integer format: int32 reasonText: maxLength: 1000 type: string nullable: true additionalProperties: false Purplebricks.Account.Api.V1.Controllers.PhoneVerificationStatusResponse: type: object properties: isVerified: type: boolean verifiedAt: type: string format: date-time nullable: true additionalProperties: false Purplebricks.Account.Api.V1.Controllers.SendOtpRequest: type: object properties: channel: type: string nullable: true additionalProperties: false Purplebricks.Account.Api.V1.Controllers.VerifyOtpRequest: type: object properties: code: type: string nullable: true additionalProperties: false Purplebricks.Account.Business.Models.CustomerPreference: type: object properties: records: type: array items: $ref: '#/components/schemas/Purplebricks.Account.Business.Models.CustomerPreferenceRecord' nullable: true additionalProperties: false Purplebricks.Account.Business.Models.CustomerPreferenceRecord: type: object properties: customerPreferenceId: type: string nullable: true channel: type: string nullable: true status: type: string nullable: true type: type: string nullable: true code: type: string nullable: true description: type: string nullable: true label: type: string nullable: true ordering: type: integer format: int32 nullable: true additionalProperties: false Purplebricks.Account.Business.Models.InputModels.ChangeEmailInputModel: required: - newEmail - oldEmail type: object properties: newEmail: maxLength: 254 type: string format: email oldEmail: maxLength: 254 type: string format: email confirmPassword: maxLength: 50 type: string nullable: true additionalProperties: false Purplebricks.Account.Business.Models.MarketingPreferencesResponseModel: type: object properties: customerPreference: $ref: '#/components/schemas/Purplebricks.Account.Business.Models.CustomerPreference' additionalProperties: false Purplebricks.Account.Common.Enums.AddressType: enum: - Home - Business - Company - Property - Order - Lead - BookValuationAttempt - Billing type: string Purplebricks.Account.Common.Models.CreateUserAddressInputModel: type: object properties: line1: type: string nullable: true line2: type: string nullable: true town: type: string nullable: true county: type: string nullable: true postcode: type: string nullable: true country: type: string nullable: true addressType: $ref: '#/components/schemas/Purplebricks.Account.Common.Enums.AddressType' additionalProperties: false Purplebricks.Account.Common.Models.CreateUserInputModel: type: object properties: title: type: string nullable: true forename: type: string nullable: true surname: type: string nullable: true email: type: string nullable: true source: type: string nullable: true phone: type: string nullable: true dateOfBirth: type: string nullable: true address: $ref: '#/components/schemas/Purplebricks.Account.Common.Models.CreateUserAddressInputModel' additionalProperties: false Purplebricks.Account.Common.Models.CustomerPreferenceRecordInputModel: type: object properties: customerPreferenceId: type: string nullable: true channel: type: string nullable: true status: type: string nullable: true code: type: string nullable: true additionalProperties: false Purplebricks.Account.Common.Models.MarketingPreferencesUpdateInputModel: type: object properties: publicUserId: type: string format: uuid updatedCustomerPreferenceRecords: type: array items: $ref: '#/components/schemas/Purplebricks.Account.Common.Models.CustomerPreferenceRecordInputModel' nullable: true additionalProperties: false Purplebricks.Account.Common.Models.ViewModels.CreateCustomerViewModel: type: object properties: newCustomerId: type: integer format: int32 additionalProperties: false securitySchemes: Bearer: type: apiKey description: Authorization header using Bearer scheme name: Authorization in: header security: - Bearer: []