openapi: 3.2.0 info: title: Projects Workspaces API description: 'PEXA Projects External Client API for Projects

This API uses the OAuth 2.0 protocol for authentication and authorization. It supports the following OAuth 2.0 flows:
- Client Credentials
- Authorization Code

Scopes are used to grant an application different levels of access to data. Each API endpoint will require specific scopes.
The scopes are listed against each API endpoint.

For more information, see the following guides:
- [Authentication](../../../Exchange/docs/documentation/) ' version: v4 x-api-version: 4.0.0 contact: name: PEXA Projects email: pexaprojects-prdsupport@pexa.com.au x-pexa-products: - pexa-projects servers: - url: '{{ service.url }}' tags: - name: Workspaces paths: /v4/projects/{projectId}/workspaces: post: operationId: createWorkspace security: - oauth2: - au:projects:workspaces:write tags: - Workspaces description: Create a new workspace for an existing Project
Scopes:
au:projects:workspaces:write parameters: - $ref: '#/components/parameters/RequestCorrelationIdHeader' - name: projectId in: path required: true description: Id of the project to create a workspace for example: 1234 schema: type: integer format: int64 requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/Workspace' responses: '201': description: Workspace created content: application/json: schema: $ref: '#/components/schemas/Workspace' '400': description: Invalid request content: application/json: schema: type: object properties: exceptionList: type: array items: type: object properties: code: type: string message: type: string example: exceptionList: - code: OB0001.000 message: The request is invalid /v4/projects/{projectId}/workspaces/{pexaWorkspaceId}: put: operationId: updateWorkspace security: - oauth2: - au:projects:workspaces:write summary: Update a workspace description: Updates a workspace of a given project with parameters 'projectId', 'pexaWorkspaceId' and 'payload'
Scopes:
au:projects:workspaces:write tags: - Workspaces parameters: - $ref: '#/components/parameters/RequestCorrelationIdHeader' - name: projectId in: path required: true description: Id of the project to update workspaces for example: 1234 schema: type: integer format: int64 - name: pexaWorkspaceId in: path required: true description: The workspace update example: PEXA12345 schema: type: string requestBody: description: workspaceUpdate Response content: application/json: schema: $ref: '#/components/schemas/UpdateWorkspaceRequest' required: true responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/UpdateWorkspaceResponse' '401': $ref: '#/components/responses/ErrorResponse' '403': $ref: '#/components/responses/ErrorResponse' '404': $ref: '#/components/responses/ErrorResponse' '500': $ref: '#/components/responses/ErrorResponse' deprecated: false /v4/projects/{projectId}/workspaces/{workspaceId}/financials: post: operationId: createFinancials security: - oauth2: - au:projects:workspaces:write summary: Create Financial Settlement Line Items description: Add financial settlement line items to an existing workspace
Scopes:
au:projects:workspaces:write tags: - Workspaces parameters: - $ref: '#/components/parameters/RequestCorrelationIdHeader' - name: projectId in: path required: true description: Id of the project to upload financials for example: 1234 schema: type: integer format: int64 - name: workspaceId in: path required: true description: The workspace to upload financials for example: PEXA12345 schema: type: string requestBody: description: settlementUploadRequest content: application/json: schema: $ref: '#/components/schemas/SettlementUploadRequest' required: true responses: '201': description: OK content: application/json: schema: $ref: '#/components/schemas/SettlementUploadResponse' '401': $ref: '#/components/responses/ErrorResponse' '403': $ref: '#/components/responses/ErrorResponse' '404': $ref: '#/components/responses/ErrorResponse' '500': $ref: '#/components/responses/ErrorResponse' deprecated: false x-codegen-request-body-name: settlementUploadRequest /v4/projects/{projectId}/workspaces/{workspaceId}/parties: post: operationId: addParties security: - oauth2: - au:projects:workspaces:write summary: Add Parties description: Add parties to an existing workspace
Scopes:
au:projects:workspaces:write tags: - Workspaces parameters: - $ref: '#/components/parameters/RequestCorrelationIdHeader' - name: projectId in: path required: true description: Id of the project to add parties for example: 1234 schema: type: integer format: int64 - name: workspaceId in: path required: true description: Id of the workspace to add parties for example: PEXA12345 schema: type: string requestBody: description: Create parties request body content: application/json: schema: $ref: '#/components/schemas/AddPartiesRequest' required: true responses: '201': description: OK content: application/json: schema: $ref: '#/components/schemas/AddPartiesResponse' '401': $ref: '#/components/responses/ErrorResponse' '403': $ref: '#/components/responses/ErrorResponse' '404': $ref: '#/components/responses/ErrorResponse' '500': $ref: '#/components/responses/ErrorResponse' deprecated: false x-codegen-request-body-name: createPartiesRequest put: operationId: updateParties security: - oauth2: - au:projects:workspaces:write summary: Update Parties description: Update parties on an existing workspace
Scopes:
au:projects:workspaces:write tags: - Workspaces parameters: - $ref: '#/components/parameters/RequestCorrelationIdHeader' - name: projectId in: path required: true description: Id of the project to update parties for example: 1234 schema: type: integer format: int64 - name: workspaceId in: path required: true description: Id of the workspace to update parties for example: PEXA12345 schema: type: string requestBody: description: Update parties request body content: application/json: schema: $ref: '#/components/schemas/UpdatePartiesRequest' required: true responses: '204': description: NO CONTENT '401': $ref: '#/components/responses/ErrorResponse' '403': $ref: '#/components/responses/ErrorResponse' '404': $ref: '#/components/responses/ErrorResponse' '500': $ref: '#/components/responses/ErrorResponse' deprecated: false x-codegen-request-body-name: updatePartiesRequest delete: operationId: deleteParties security: - oauth2: - au:projects:workspaces:write summary: Delete Parties description: Delete parties on an existing workspace
Scopes:
au:projects:workspaces:write tags: - Workspaces parameters: - $ref: '#/components/parameters/RequestCorrelationIdHeader' - name: projectId in: path required: true description: Id of the project to remove parties for example: 1234 schema: type: integer format: int64 - name: workspaceId in: path required: true description: Id of the workspace to remove parties for example: PEXA12345 schema: type: string requestBody: description: Delete parties request body content: application/json: schema: $ref: '#/components/schemas/DeletePartiesRequest' required: true responses: '204': description: NO CONTENT '401': $ref: '#/components/responses/ErrorResponse' '403': $ref: '#/components/responses/ErrorResponse' '404': $ref: '#/components/responses/ErrorResponse' '500': $ref: '#/components/responses/ErrorResponse' deprecated: false x-codegen-request-body-name: deletePartiesRequest /v4/projects/{projectId}/workspaces/{workspaceId}/participants: post: operationId: addParticipants security: - oauth2: - au:projects:workspaces:write summary: Add Participants description: Add participants to an existing workspace
Scopes:
au:projects:workspaces:write tags: - Workspaces parameters: - $ref: '#/components/parameters/RequestCorrelationIdHeader' - name: projectId in: path required: true description: Id of the project that the workspace resides in example: 1234 schema: type: integer format: int64 - name: workspaceId in: path required: true description: The workspace to add participants to example: PEXA12345 schema: type: string requestBody: description: Add participants request body content: application/json: schema: $ref: '#/components/schemas/AddParticipantsRequest' required: true responses: '201': description: OK content: application/json: schema: $ref: '#/components/schemas/AddParticipantsResponse' '401': $ref: '#/components/responses/ErrorResponse' '403': $ref: '#/components/responses/ErrorResponse' '404': $ref: '#/components/responses/ErrorResponse' '500': $ref: '#/components/responses/ErrorResponse' deprecated: false x-codegen-request-body-name: addParticipantsRequest delete: operationId: deleteParticipants security: - oauth2: - au:projects:workspaces:write summary: Delete Participants description: Delete participants in an existing workspace
Scopes:
au:projects:workspaces:write tags: - Workspaces parameters: - $ref: '#/components/parameters/RequestCorrelationIdHeader' - name: projectId in: path required: true description: Id of the project that the workspace resides in example: 1234 schema: type: integer format: int64 - name: workspaceId in: path required: true description: The workspace to delete participants from example: PEXA12345 schema: type: string requestBody: description: Delete participants request body content: application/json: schema: $ref: '#/components/schemas/DeleteParticipantsRequest' required: true responses: '204': description: No Content '401': $ref: '#/components/responses/ErrorResponse' '403': $ref: '#/components/responses/ErrorResponse' '404': $ref: '#/components/responses/ErrorResponse' '500': $ref: '#/components/responses/ErrorResponse' deprecated: false /v4/projects/{projectId}/workspaces/{pexaWorkspaceId}/settlementDates: post: operationId: proposeSettlement security: - oauth2: - au:projects:workspaces:write summary: Propose Settlement Date description: Propose a settlement date to an existing workspace
Scopes:
au:projects:workspaces:write tags: - Workspaces parameters: - $ref: '#/components/parameters/RequestCorrelationIdHeader' - name: projectId in: path required: true description: Id of the project that the workspace resides in example: 1234 schema: type: integer format: int64 - name: pexaWorkspaceId in: path required: true description: The workspace to propose settlement date for example: PEXA12345 schema: type: string requestBody: description: Propose Settlement request body content: application/json: schema: $ref: '#/components/schemas/ProposeSettlementRequest' required: true responses: '204': description: No Content '401': $ref: '#/components/responses/ErrorResponse' '403': $ref: '#/components/responses/ErrorResponse' '404': $ref: '#/components/responses/ErrorResponse' '500': $ref: '#/components/responses/ErrorResponse' deprecated: false components: schemas: Schedule.LineItem: title: Schedule.LineItem type: object properties: accountDetails: $ref: '#/components/schemas/Schedule.LineItem.AccountDetails' associatedSubscriber: type: string category: type: string customCategory: type: string clientName: type: string transactionDescription: type: string verified: type: string verifiedBy: type: string type: type: string value: type: number UpdateParty: type: object description: A party required: - partyId - role - partyType - name properties: partyId: description: Id of party to update type: integer example: 1337 format: int64 minimum: 1 role: description: Role of the party type: string example: Incoming Proprietor partyType: description: Party type of the party type: string example: Individual acn: type: string description: Australian Company Number example: '1040085616' acln: type: string description: Australian Credit Licence Number example: '111111' name: type: string description: Name of the party example: Business Name arbn: type: string description: Australian Registered Body Number example: '123456789' abn: type: string description: Australian Business Number example: '12345678912' administrationStatuses: type: array maxItems: 2 items: type: string description: The administration status example: Administrator appointed organisationType: type: string description: The type of organisation example: Incorporated Association Schedule.LineItem.AccountDetails.Source: title: Schedule.LineItem.AccountDetails.Source type: object properties: defaultAccount: type: string preverifiedAccount: type: string UpdateWorkspaceResponse: type: object description: Response to updating a workspace properties: workspaceId: type: string description: The id of the updated workspace example: PEXA1234 subscriberReference: type: string description: The updated subscriber reference childTitles: type: array description: List of child titles used in the workspace items: description: Child title type: string example: '1001' WarningResponseType: title: WarningResponseType type: object properties: code: type: string message: type: string PartyResponse: type: object description: Response object for a party properties: name: type: string description: The name of the individual or organisation example: Business Name partyId: type: string description: The id of the party example: '1234' role: type: string description: Role of the party example: Incoming Proprietor partyType: type: string description: The type of party example: Organisation ProposeSettlementRequest: title: ProposeSettlementRequest description: Request to propose settlement dates type: object properties: settlementDateAndTime: type: string example: '2024-03-25T22:20:52.681Z' description: The date time to propose settlement at in ISO8601 format reason: type: string example: Time chosen for settlement description: The reason to propose settlement at this time DeleteParty: type: object description: Party to be deleted required: - partyId properties: partyId: type: integer description: Id of party to be deleted format: int64 minimum: 1 example: 123 Schedule.LineItem.AccountDetails.Destination.BPay: title: Schedule.LineItem.AccountDetails.Destination.BPay type: object properties: billerCode: type: string reference: type: string UpdatePartiesRequest: title: UpdatePartiesRequest type: object description: Request to update parties on an existing workspace required: - parties properties: parties: type: array items: $ref: '#/components/schemas/UpdateParty' Workspace: type: object description: Object with all required details for a workspace required: - subscriberReference - unregisteredLotNumbers properties: subscriberReference: description: Reference for the subscriber to refer to the workspace type: string example: test_workspace_001 unregisteredLotNumbers: type: array description: Unregistered lot numbers to be used in the workspace minItems: 1 maxItems: 333 items: description: An unregistered lot number type: string example: '1001' childTitles: type: array description: Child titles to be used in the workspace items: description: A child title type: string example: 01/1001 grossConsiderationAmount: type: number format: decimal description: The gross consideration amount for the workspace example: 1000000.0 incomingProprietors: type: array description: Details for any Incoming Proprietors items: $ref: '#/components/schemas/IncomingProprietor' qldWorkspaceDetails: $ref: '#/components/schemas/QldWorkspaceDetails' workspaceId: type: string description: The workspace id example: PEXA123456789 readOnly: true workspaceStatus: type: string description: The current status of the workspace example: In Preparation readOnly: true QldWorkspaceDetails: type: object description: Workspace details for the QLD jurisdiction properties: cashAmount: type: number format: decimal description: The cash amount for the transaction minimum: 0 example: 50000.0 depositPaid: type: number format: decimal description: The deposit amount paid minimum: 0 example: 25000.0 vendorTermsAmount: type: number format: decimal description: The vendor terms amount minimum: 0 example: 10000.0 liabilitiesAmount: type: number format: decimal description: The liabilities amount minimum: 0 example: 5000.0 contractRebateAmount: type: number description: The contract rebate amount minimum: 0 example: 2000.0 agreementDate: type: string format: date description: The agreement/contract of sale date example: '2024-01-15' dateOfPossession: type: string format: date description: The date of possession example: '2024-12-29' IncomingProprietor: type: object description: Details for an Incoming Proprietor required: - subscriberId - subscriberName properties: subscriberId: description: The subscriber id of the Incoming Proprietor type: integer format: int64 example: 1000 subscriberName: description: The name of the Incoming Proprietor type: string example: Example Bank SettlementUploadResponse: title: SettlementUploadResponse type: object properties: warning: $ref: '#/components/schemas/WarningResponseType' AddParticipantsResponse: title: AddParticipantsResponse description: Response when adding participants type: object properties: pexaWorkspaceId: type: string example: PEXA12345 participants: type: array items: $ref: '#/components/schemas/ResponseParticipant' Error: description: Error related to the API type: object properties: code: description: Error code type: string example: OB0001.000 message: description: Error message type: string example: The request is invalid details: description: Optional list of error details type: array items: type: string description: Error details Party: type: object description: A party required: - role - partyType - name properties: role: description: Role of the party type: string example: Incoming Proprietor partyType: description: Party type of the party type: string example: Individual acn: type: string description: Australian Company Number example: '1240085616' acln: type: string description: Australian Credit Licence Number example: '111111' name: type: string description: Name of the party example: Business Name arbn: type: string description: Australian Registered Body Number example: '123456789' abn: type: string description: Australian Business Number example: '12345678912' administrationStatuses: type: array maxItems: 2 items: type: string description: The administration status example: Administrator appointed organisationType: type: string description: The type of organisation example: Incorporated Association DeletePartiesRequest: title: DeletePartiesRequest type: object description: Request to delete parties on an existing workspace required: - parties properties: parties: type: array items: $ref: '#/components/schemas/DeleteParty' UpdateWorkspaceRequest: type: object description: Request to update a workspace properties: newSubscriberReference: type: string description: New subscriber reference to use for the workspace example: Workspace123 childTitles: type: array description: List of child titles to add to the workspace items: description: Child title type: string example: '1001' Schedule.LineItem.AccountDetails.Destination.Account: title: Schedule.LineItem.AccountDetails.Destination.Account type: object properties: accountBsb: type: string accountName: type: string accountNumber: type: string SettlementUploadRequest: title: SettlementUploadRequest type: object properties: role: type: string schedule: $ref: '#/components/schemas/Schedule' DeleteParticipantsRequest: title: DeleteParticipantsRequest description: Request to delete participants type: object properties: participants: type: array items: $ref: '#/components/schemas/IncomingProprietor' AddPartiesResponse: title: CreatePartiesRequest description: Response when adding parties type: object properties: pexaWorkspaceId: type: string example: PEXA12345 description: Workspace Id as used in Exchange parties: type: array description: A list of parties in the workspace items: $ref: '#/components/schemas/PartyResponse' Schedule: title: Schedule type: object properties: lineItems: type: array items: $ref: '#/components/schemas/Schedule.LineItem' Errors: description: List of errors related to the API type: object properties: exceptionList: type: array items: allOf: - $ref: '#/components/schemas/Error' AddParticipantsRequest: title: AddParticipantsRequest type: object description: Request to add participants to an existing workspace properties: participants: type: array items: $ref: '#/components/schemas/IncomingProprietor' AddPartiesRequest: title: AddPartiesRequest type: object description: Request to add parties to an existing workspace properties: parties: type: array items: $ref: '#/components/schemas/Party' Schedule.LineItem.AccountDetails.Destination: title: Schedule.LineItem.AccountDetails.Destination type: object properties: account: $ref: '#/components/schemas/Schedule.LineItem.AccountDetails.Destination.Account' bpay: $ref: '#/components/schemas/Schedule.LineItem.AccountDetails.Destination.BPay' officeAccount: type: string preverifiedAccount: type: string Schedule.LineItem.AccountDetails: title: Schedule.LineItem.AccountDetails type: object properties: destination: $ref: '#/components/schemas/Schedule.LineItem.AccountDetails.Destination' source: $ref: '#/components/schemas/Schedule.LineItem.AccountDetails.Source' ResponseParticipant: type: object description: Response object when adding a participant properties: role: type: string description: Role of the participant example: Incoming Proprietor subscriberId: type: integer format: int64 description: Subscriber id of the participant example: 1087 reference: type: string description: Reference for the participant example: Reference1 status: type: string description: Status of the participant example: Invited prCreated: type: boolean description: Has the Participant Request been created? example: false prAccepted: type: boolean description: Has the Participation Request been accepted? example: false responses: ErrorResponse: description: Error Response content: application/json: schema: $ref: '#/components/schemas/Errors' parameters: RequestCorrelationIdHeader: description: A unique request id provided by api caller to support end-to-end troubleshooting and tracing in: header name: X-Request-Correlation-Id schema: type: string format: UUID example: 123e4567-e89b-12d3-a456-426614174000 securitySchemes: oauth2: type: oauth2 flows: authorizationCode: authorizationUrl: https://host.kubernetes.internal/auth/realms/pexa/protocol/openid-connect/auth tokenUrl: https://host.kubernetes.internal/auth/realms/pexa/protocol/openid-connect/token scopes: au:projects:project:write: Grant project write access au:projects:status:read: Grant project status read access au:projects:workspaces:read: Grant project workspaces read access clientCredentials: tokenUrl: https://host.kubernetes.internal/auth/realms/pexa/protocol/openid-connect/token scopes: au:projects:project:write: Grant project write access au:projects:status:read: Grant project status read access au:projects:workspaces:read: Grant project workspaces read access x-idp-config: consumer-claim: azp scopes-claim: scope x-disable-subscription: 'off' x-protected-view: 'off' x-rate-limits: limit: 200 window_size: 60 window_type: sliding x-service-limits: limit: 200 window_size: 60 window_type: sliding x-apim-hosts: - '{{ host }}'