Landmark Document Vault API

API behind Contract Pack Vault — creates a secure, shareable container of transaction documents, adds and removes files (virus-scanned and analysed asynchronously, status Pending then Available or Quarantined), maintains property and reference details, manages the recipient organisation and its recipients, and reads the vault activity audit trail. Ten paths, version 1.0.1, OpenAPI 3.0.4. Sharing itself happens in the Contract Pack Vault web app, not the API. Billed per vault on first document added; documented rate limit 1,000 calls per minute per caller.

OpenAPI Specification

landmark-information-document-vault-api-openapi.yml Raw ↑
openapi: 3.0.4
info:
  version: 1.0.1
  title: Document Vault API
  description: "The Document Vault API lets you create a secure, shareable container of documents — a **Document Vault** — and manage its contents programmatically. It lets you exchange the right paperwork with the other side of the transaction without rekeying or trading email attachments.\n\nUsed with **Contract Pack Vault** for conveyancing firms (see [Contract Pack Vault](#section/Contract-Pack-Vault)).\n\n# Overview\n\nUse this API from your case management system to assemble a contract pack, then open **Contract Pack Vault** to check it and share it with the buyer's conveyancer. The API builds and maintains the vault; reviewing and sharing happen in the web app.\n\n1. **Create a Document Vault** — supply the property address and as much detail as you have. You get back a vault `id`; use it in every follow-up call and to open the vault in the web app. Optionally set a `reference` (your case reference), which must be unique within your account.\n2. **Add documents**, one per call. Each file is virus-scanned and analysed in the background. Its `status` is `Pending` while that runs, then `Available` or `Quarantined` if it failed the virus scan.\n3. **Keep details current** — update the reference, property, or recipient organisation, and add or remove recipients. Setting up recipients is not the same as sharing; you share the vault from the web app.\n4. **Check progress** with `Get Document Vault` or `Get Activities` for the audit history.\n5. **Open the web app** to review the analysis and share the vault. See [Contract Pack Vault](#section/Contract-Pack-Vault).\n\n# Getting started\n\nREST API over HTTPS with JSON responses; file uploads use `multipart/form-data`.\n\n**UAT** (building and testing): `https://uat-api.landmarkcloudservices.com/document-vaults`\n\n**Auth:** `https://lmkmaster-uat.eu.auth0.com/oauth/token`\n\n**Production** (live integration only; vaults are real and may incur a cost): `https://api.landmarkcloudservices.com/document-vaults`\n\n**Auth:** `https://lmkmaster.eu.auth0.com/oauth/token`\n\n## Authentication\n\nOAuth 2.0 client credentials. Each conveyancing firm is onboarded individually with Landmark and receives its own client ID, secret, and `Account-Id` (sent as a header on every request). Credentials are issued separately for **UAT** (building and testing; not charged) and **Production** (live integration only). If you integrate via a case management system, that system typically holds the firm's credentials on its behalf.\n\nAudience is fixed per environment:\n\n- UAT: `https://uat-api.landmarkcloudservices.com`\n- Production: `https://api.landmarkcloudservices.com`\n\n**1. Get an access token** by POSTing to the auth endpoint for your environment:\n\n```json\n{\n  \"client_id\": \"your-client-id\",\n  \"client_secret\": \"your-client-secret\",\n  \"audience\": \"https://uat-api.landmarkcloudservices.com\",\n  \"grant_type\": \"client_credentials\"\n}\n```\n\nUse the Production audience when calling the Production auth endpoint.\n\nThe response contains an `access_token` (a JWT) and an `expires_in` value. Cache and reuse the token until it is close to expiry.\n\n**2. Send on every API request:**\n- `Authorization: Bearer <access_token>`\n- `Account-Id: <your account id>`\n\nA `403` means your credentials are not entitled to that operation; contact support.\n\n## Billing\n\nA charge applies per vault when the first document is added to it.\n\n## Limits, errors and support\n\nOne document per upload; up to 60 per vault; PDF, DOC, DOCX, JPEG, PNG; 25 MB per file. API rate limits: up to 1,000 calls per minute per caller.\n\nStandard HTTP status codes apply (`400` validation, `401`/`403` authentication, `404` not found, `409` conflict, `413` too large, `429` rate limited, `5xx` server error). Error bodies use `problem+json`. Include the `lgsTraceResponse` header value when contacting support.\n\n**Support:** support@ochresoft.com | +44 (0)3300 366 700\n\n# Contract Pack Vault\n\n**Contract Pack Vault** is a conveyancing product on LandmarkConnect. You assemble a contract pack from your CMS and share it securely with the buyer's conveyancer. The API handles the building; the web app is where you review the pack and share it.\n\n## AI-assisted checking\n\nAs each document is added, it is automatically analysed so you can spot problems before the pack goes out. The checks include:\n\n- identifying and tagging each document by type,\n- flagging missing pages,\n- checking signatures are present where expected,\n- cross-checking addresses, names, dates and title/reference numbers against the case.\n\nThe results appear as a checklist in the web app for you to review and act on. They are not currently returned by the API.\n\n## Reviewing and sharing\n\nIn the web app you can review the checklist and analysis, preview, download or remove documents, update vault details, and share the vault with the buyer's conveyancer. The buyer's conveyancer receives secure access through a link once they have verified their email address.\n\n## Opening a vault from your CMS\n\nLink straight to a vault from your CMS using the vault `id` from `Create Document Vault`, so your team does not have to search for it in the web app. Open the relevant URL in a browser, replacing `{documentVaultId}`:\n\n- UAT: `https://uat-connect.landmark.co.uk/case/{documentVaultId}`\n- PRD: `https://connect.landmark.co.uk/case/{documentVaultId}`\n\n## API Specification Versions\n- **1.0.1** (16/07/2026)\n  - Added `filename` property to `Add Document` endpoint body to show file name restrictions\n  - Added `minLength` values to various schemas for clarity\n- **1.0.0** (08/07/2026)\n  - Initial release\n"
  contact:
    name: API Support
    email: support@ochresoft.com
    x-phone-number: +44 (0)3300 366 700
tags:
- name: Activities
  description: Read a vault's audit history.
- name: Document Vaults
  description: Create a vault and manage its details and recipients.
- name: Documents
  description: Add and remove the files held in a vault.
x-tagGroups:
- name: Document Vault API
  tags:
  - Document Vaults
  - Documents
  - Activities
servers:
- url: https://api.landmarkcloudservices.com/
  description: Production API
- url: https://uat-api.landmarkcloudservices.com/
  description: UAT API
paths:
  /:
    post:
      tags:
      - Document Vaults
      summary: Create Document Vault
      description: Creates a new Document Vault and returns its `id`. The more detail you provide upfront (property details, tenure, registered status, selling capacity, and the buyer's conveyancer's organisation and recipients), the more the vault will reflect the case from the start. Everything can be added or updated later.
      operationId: document-vault-vaults-create
      x-external-entitlement: external:document-vault:vaults:create
      parameters:
      - name: Account-Id
        in: header
        required: true
        schema:
          $ref: '#/components/schemas/accountId'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/createDocumentVaultRequest'
        required: true
      responses:
        '200':
          description: 200 OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/createDocumentVaultResponse'
          headers:
            lgsTraceResponse:
              $ref: '#/components/headers/lgsTraceResponse'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        '413':
          $ref: '#/components/responses/413PayloadTooLarge'
        '429':
          $ref: '#/components/responses/429TooManyRequests'
        '500':
          $ref: '#/components/responses/500InternalServerError'
  /{documentVaultId}:
    get:
      tags:
      - Document Vaults
      summary: Get Document Vault
      description: Returns a vault's current details, including each document and its `status`.
      operationId: document-vault-vaults-read
      x-external-entitlement: external:document-vault:vaults:read
      parameters:
      - name: Account-Id
        in: header
        required: true
        schema:
          $ref: '#/components/schemas/accountId'
      - name: documentVaultId
        in: path
        description: The Document Vault ID
        required: true
        schema:
          $ref: '#/components/schemas/lgsUuid'
      responses:
        '200':
          description: 200 OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/getDocumentVaultResponse'
          headers:
            lgsTraceResponse:
              $ref: '#/components/headers/lgsTraceResponse'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        '429':
          $ref: '#/components/responses/429TooManyRequests'
        '500':
          $ref: '#/components/responses/500InternalServerError'
  /{documentVaultId}/documents:
    post:
      tags:
      - Documents
      summary: Add Document
      description: Adds one document to the vault. Supported file types are PDF, DOC, DOCX, JPEG and PNG; maximum 25 MB per file and 60 documents per vault. Returns a document `id`.
      operationId: document-vault-documents-create
      x-external-entitlement: external:document-vault:documents:create
      parameters:
      - name: Account-Id
        in: header
        required: true
        schema:
          $ref: '#/components/schemas/accountId'
      - name: documentVaultId
        in: path
        description: The Document Vault ID
        required: true
        schema:
          $ref: '#/components/schemas/lgsUuid'
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              description: Each property will be a subpart of the multipart body.
              type: object
              additionalProperties: false
              required:
              - file
              properties:
                file:
                  description: File content transferred as binary. Content-Type and filename should be sent within this sub-part of the multi-part body.
                  type: string
                  format: binary
                  maxLength: 26214400
                filename:
                  description: This property should be sent as part of the file sub-part of the multi-part body; this is present only to show the filename restrictions
                  type: string
                  minLength: 5
                  maxLength: 250
                  pattern: ^(?!.*\.\..*)[^\:\/\*""\<\>\|]+?\.[a-zA-Z\d]{1,10}$
            encoding:
              file:
                contentType: application/pdf, application/msword, application/vnd.openxmlformats-officedocument.wordprocessingml.document, image/jpeg, image/png
      responses:
        '200':
          description: 200 OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/addDocumentToDocumentVaultResponse'
          headers:
            lgsTraceResponse:
              $ref: '#/components/headers/lgsTraceResponse'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        '413':
          $ref: '#/components/responses/413PayloadTooLarge'
        '429':
          $ref: '#/components/responses/429TooManyRequests'
        '500':
          $ref: '#/components/responses/500InternalServerError'
  /{documentVaultId}/documents/{documentId}:
    delete:
      tags:
      - Documents
      summary: Delete Document
      description: Permanently removes a document from the vault.
      operationId: document-vault-documents-delete
      x-external-entitlement: external:document-vault:documents:delete
      parameters:
      - name: Account-Id
        in: header
        required: true
        schema:
          $ref: '#/components/schemas/accountId'
      - name: documentVaultId
        in: path
        description: The Document Vault ID
        required: true
        schema:
          $ref: '#/components/schemas/lgsUuid'
      - name: documentId
        in: path
        description: The Document ID
        required: true
        schema:
          $ref: '#/components/schemas/lgsUuid'
      responses:
        '200':
          description: 200 OK
          headers:
            lgsTraceResponse:
              $ref: '#/components/headers/lgsTraceResponse'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        '429':
          $ref: '#/components/responses/429TooManyRequests'
        '500':
          $ref: '#/components/responses/500InternalServerError'
  /{documentVaultId}/activities:
    get:
      tags:
      - Activities
      summary: Get Activities
      description: Returns all audit events for a vault, the same history shown in the web app activity log.
      operationId: document-vault-activities-list
      x-external-entitlement: external:document-vault:activities:list
      parameters:
      - name: Account-Id
        in: header
        required: true
        schema:
          $ref: '#/components/schemas/accountId'
      - name: documentVaultId
        in: path
        description: The Document Vault ID
        required: true
        schema:
          $ref: '#/components/schemas/lgsUuid'
      responses:
        '200':
          description: 200 OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/getActivitiesResponse'
              examples:
                Document Vault Created:
                  value:
                    activities:
                    - action: Case created
                      createdBy: John Michael Smith
                      createdDate: '2026-06-17T12:10:14.222813Z'
                Reference Updated:
                  value:
                    activities:
                    - action: Reference updated
                      detail: Reference updated to NEW/REF
                      createdBy: John Michael Smith
                      createdDate: '2026-06-17T12:10:14.222813Z'
                Document Added:
                  value:
                    activities:
                    - action: Document added
                      detail: test-document.pdf (40.06 KB)
                      createdBy: John Michael Smith
                      createdDate: '2026-06-17T12:10:14.222813Z'
                      metadata:
                        documentId: 52ece8cc-ec3a-4e78-907b-ba7d7f977ea8
                Document Deleted:
                  value:
                    activities:
                    - action: Document deleted
                      detail: test-document.pdf (40.06 KB)
                      createdBy: John Michael Smith
                      createdDate: '2026-06-17T14:03:59.999076Z'
                      metadata:
                        documentId: 52ece8cc-ec3a-4e78-907b-ba7d7f977ea8
                Property Details - All Fields Updated:
                  value:
                    activities:
                    - action: Property updated
                      createdBy: Jane Elizabeth Smith
                      createdDate: '2026-06-17T14:07:00.716564Z'
                      metadata:
                        previousAddress: 21 Test Street, Reading, RG2 0TD
                        updatedAddress: 22 Test Street, Reading, Berkshire, RG2 0TD
                        previousRegistered: false
                        updatedRegistered: true
                        previousSellingCapacity: Trustee
                        updatedSellingCapacity: LegalAndBeneficialOwner
                        previousTenure: Leasehold
                        updatedTenure: Freehold
                Property Details - Single Field Updated:
                  value:
                    activities:
                    - action: Property updated
                      createdBy: Jane Elizabeth Smith
                      createdDate: '2026-06-17T14:07:00.716564Z'
                      metadata:
                        previousSellingCapacity: Attorney
                        updatedSellingCapacity: PersonalRepresentative
                Property Details - Field Updated From No Previous Data:
                  value:
                    activities:
                    - action: Property updated
                      createdBy: Jane Elizabeth Smith
                      createdDate: '2026-06-17T14:07:00.716564Z'
                      metadata:
                        updatedTenure: Commonhold
                Recipient Organisation Details - All Fields Updated:
                  value:
                    activities:
                    - action: Recipient Organisation updated
                      createdBy: Jane Elizabeth Smith
                      createdDate: '2026-06-17T14:07:00.716564Z'
                      metadata:
                        previousName: Test Organisation 123 Ltd
                        updatedName: Test Organisation 456 Ltd
                        previousReference: OLD/REF
                        updatedReference: NEW/REF
                Recipient Organisation Details - Single Field Updated:
                  value:
                    activities:
                    - action: Recipient Organisation updated
                      createdBy: Jane Elizabeth Smith
                      createdDate: '2026-06-17T14:07:00.716564Z'
                      metadata:
                        previousReference: Some-Ref
                        updatedReference: SOME-REF
                Recipient Organisation Details - Field Updated From No Previous Data:
                  value:
                    activities:
                    - action: Recipient Organisation updated
                      createdBy: Jane Elizabeth Smith
                      createdDate: '2026-06-17T14:07:00.716564Z'
                      metadata:
                        updatedName: Example Organisation Name
          headers:
            lgsTraceResponse:
              $ref: '#/components/headers/lgsTraceResponse'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        '429':
          $ref: '#/components/responses/429TooManyRequests'
        '500':
          $ref: '#/components/responses/500InternalServerError'
  /{documentVaultId}/reference:
    put:
      tags:
      - Document Vaults
      summary: Update Reference
      description: Updates your reference for the vault.
      operationId: document-vault-reference-update
      x-external-entitlement: external:document-vault:reference:update
      parameters:
      - name: Account-Id
        in: header
        required: true
        schema:
          $ref: '#/components/schemas/accountId'
      - name: documentVaultId
        in: path
        description: The Document Vault ID
        required: true
        schema:
          $ref: '#/components/schemas/lgsUuid'
      requestBody:
        content:
          application/json:
            schema:
              type: object
              additionalProperties: false
              required:
              - reference
              properties:
                reference:
                  $ref: '#/components/schemas/documentVaultReference'
      responses:
        '200':
          description: Reference updated
          headers:
            lgsTraceResponse:
              $ref: '#/components/headers/lgsTraceResponse'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        '409':
          $ref: '#/components/responses/409Conflict'
        '429':
          $ref: '#/components/responses/429TooManyRequests'
        '500':
          $ref: '#/components/responses/500InternalServerError'
  /{documentVaultId}/property:
    patch:
      tags:
      - Document Vaults
      summary: Update Property
      description: 'Updates fields associated with the Property.


        At least one top-level field (address, tenure, registered or sellingCapacity) must be supplied.


        Omitted top-level fields are left unchanged.


        Omitted nested fields (the fields within address) will have their existing values removed.

        '
      operationId: document-vault-property-update
      x-external-entitlement: external:document-vault:property:update
      parameters:
      - name: Account-Id
        in: header
        required: true
        schema:
          $ref: '#/components/schemas/accountId'
      - name: documentVaultId
        in: path
        description: The Document Vault ID
        required: true
        schema:
          $ref: '#/components/schemas/lgsUuid'
      requestBody:
        content:
          application/json:
            schema:
              type: object
              additionalProperties: false
              minProperties: 1
              properties:
                address:
                  $ref: '#/components/schemas/lgsAddressPAFPlus'
                tenure:
                  $ref: '#/components/schemas/tenure'
                registered:
                  $ref: '#/components/schemas/registered'
                sellingCapacity:
                  $ref: '#/components/schemas/sellingCapacity'
      responses:
        '200':
          description: Supplied fields updated
          headers:
            lgsTraceResponse:
              $ref: '#/components/headers/lgsTraceResponse'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        '409':
          $ref: '#/components/responses/409Conflict'
        '429':
          $ref: '#/components/responses/429TooManyRequests'
        '500':
          $ref: '#/components/responses/500InternalServerError'
  /{documentVaultId}/recipient-organisation:
    patch:
      tags:
      - Document Vaults
      summary: Update Recipient Organisation
      description: Updates fields associated with the Recipient Organisation. At least one of name or reference must be supplied. Omitted fields are left unchanged.
      operationId: document-vault-recipient-organisation-update
      x-external-entitlement: external:document-vault:recipient-organisation:update
      parameters:
      - name: Account-Id
        in: header
        required: true
        schema:
          $ref: '#/components/schemas/accountId'
      - name: documentVaultId
        in: path
        description: The Document Vault ID
        required: true
        schema:
          $ref: '#/components/schemas/lgsUuid'
      requestBody:
        content:
          application/json:
            schema:
              type: object
              additionalProperties: false
              minProperties: 1
              properties:
                name:
                  $ref: '#/components/schemas/organisationName'
                reference:
                  $ref: '#/components/schemas/buyerConveyancerReference'
      responses:
        '200':
          description: Supplied fields updated
          headers:
            lgsTraceResponse:
              $ref: '#/components/headers/lgsTraceResponse'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        '409':
          $ref: '#/components/responses/409Conflict'
        '429':
          $ref: '#/components/responses/429TooManyRequests'
        '500':
          $ref: '#/components/responses/500InternalServerError'
  /{documentVaultId}/recipient-organisation/recipients:
    post:
      tags:
      - Document Vaults
      summary: Add Recipient
      description: 'Adds a person or team to the buyer''s-side recipient organisation. This sets up who can receive the vault; sharing itself is done from the web app.


        A maximum of 4 recipients can be added to a Document Vault.

        '
      operationId: document-vault-recipients-create
      x-external-entitlement: external:document-vault:recipients:create
      parameters:
      - name: Account-Id
        in: header
        required: true
        schema:
          $ref: '#/components/schemas/accountId'
      - name: documentVaultId
        in: path
        description: The Document Vault ID
        required: true
        schema:
          $ref: '#/components/schemas/lgsUuid'
      requestBody:
        content:
          application/json:
            schema:
              oneOf:
              - $ref: '#/components/schemas/individualRecipient'
              - $ref: '#/components/schemas/teamRecipient'
      responses:
        '200':
          description: Recipient added
          content:
            application/json:
              schema:
                type: object
                required:
                - id
                properties:
                  id:
                    description: An ID representing the added recipient
                    allOf:
                    - $ref: '#/components/schemas/lgsUuid'
          headers:
            lgsTraceResponse:
              $ref: '#/components/headers/lgsTraceResponse'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        '429':
          $ref: '#/components/responses/429TooManyRequests'
        '500':
          $ref: '#/components/responses/500InternalServerError'
  /{documentVaultId}/recipient-organisation/recipients/{recipientId}:
    delete:
      tags:
      - Document Vaults
      summary: Delete Recipient
      description: Removes a recipient from the vault.
      operationId: document-vault-recipients-delete
      x-external-entitlement: external:document-vault:recipients:delete
      parameters:
      - name: Account-Id
        in: header
        required: true
        schema:
          $ref: '#/components/schemas/accountId'
      - name: documentVaultId
        in: path
        description: The Document Vault ID
        required: true
        schema:
          $ref: '#/components/schemas/lgsUuid'
      - name: recipientId
        in: path
        description: The Recipient ID
        required: true
        schema:
          $ref: '#/components/schemas/lgsUuid'
      responses:
        '200':
          description: Recipient deleted
          headers:
            lgsTraceResponse:
              $ref: '#/components/headers/lgsTraceResponse'
        '400':
          $ref: '#/components/responses/400BadRequest'
        '401':
          $ref: '#/components/responses/401Unauthorized'
        '403':
          $ref: '#/components/responses/403Forbidden'
        '404':
          $ref: '#/components/responses/404NotFound'
        '429':
          $ref: '#/components/responses/429TooManyRequests'
        '500':
          $ref: '#/components/responses/500InternalServerError'
components:
  schemas:
    createDocumentVaultRequest:
      type: object
      additionalProperties: false
      required:
      - property
      properties:
        reference:
          $ref: '#/components/schemas/documentVaultReference'
        property:
          $ref: '#/components/schemas/propertyDetails'
        recipientOrganisation:
          $ref: '#/components/schemas/recipientOrganisation'
    createDocumentVaultResponse:
      description: Reference data that can be used to retrieve a Document
      type: object
      additionalProperties: false
      required:
      - id
      properties:
        id:
          $ref: '#/components/schemas/lgsUuid'
    getDocumentVaultResponse:
      description: The details stored about the Document Vault
      type: object
      required:
      - id
      - createdDate
      - createdBy
      - updatedDate
      - property
      - documents
      additionalProperties: false
      properties:
        id:
          $ref: '#/components/schemas/lgsUuid'
        reference:
          $ref: '#/components/schemas/documentVaultReference'
        createdDate:
          type: string
          format: date-time
          maxLength: 38
        createdBy:
          $ref: '#/components/schemas/lgsUuid'
        updatedDate:
          type: string
          format: date-time
          maxLength: 38
        property:
          $ref: '#/components/schemas/propertyDetails'
        recipientOrganisation:
          $ref: '#/components/schemas/recipientOrganisationResponse'
        documents:
          type: array
          maxItems: 60
          items:
            $ref: '#/components/schemas/document'
    addDocumentToDocumentVaultResponse:
      type: object
      additionalProperties: false
      required:
      - id
      properties:
        id:
          $ref: '#/components/schemas/lgsUuid'
    getActivitiesResponse:
      description: The activities relating to the associated document vault
      type: object
      required:
      - activities
      additionalProperties: false
      properties:
        activities:
          type: array
          items:
            $ref: '#/components/schemas/activity'
    activity:
      type: object
      required:
      - action
      - createdBy
      - createdDate
      additionalProperties: false
      properties:
        action:
          type: string
          description: The context of the activity
        detail:
          type: string
          description: The activity message
        createdBy:
          type: string
          description: The full name of the person who created the activity
        createdDate:
          type: string
          format: date-time
          maxLength: 38
        metadata:
          type: object
          description: Additional metadata for the activity
          additionalProperties: true
    lgsUuid:
      type: string
      format: uuid
      minLength: 36
      maxLength: 36
      pattern: ^[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[4][0-9A-Fa-f]{3}-[89ABab][0-9A-Fa-f]{3}-[0-9A-Fa-f]{12}$
    lgsUprn:
      type: integer
      format: int64
      minimum: 0
      maximum: 9223372036854775000
    lgsAddressPAFPlus:
      description: Either `buildingNumber` or `buildingName` must be provided (both may be present).
      type: object
      required:
      - thoroughfare
      - postTown
      - country
      - postcode
      additionalProperties: false
      properties:
        uprn:
          $ref: '#/components/schemas/lgsUprn'
        udprn:
          type: integer
          description: Royal Mail's Unique Delivery Point Reference Number (UDPRN)
          minimum: 0
          maximum: 99999999
        departmentName:
          type: string
          minLength: 1
          maxLength: 60
          pattern: ^(?!(&lt;[^&gt;].*&gt;|%3c[^%3e].*%3e|<[^>].*>)).*$
          example: Customer Service Department
        organisationName:
          type: string
          minLength: 1
          maxLength: 60
          pattern: ^(?!(&lt;[^&gt;].*&gt;|%3c[^%3e].*%3e|<[^>].*>)).*$
          example: JW Simpsons Ltd
        subBuildingName:
          type: string
          minLength: 1
          maxLength: 30
          pattern: ^(?!(&lt;[^&gt;].*&gt;|%3c[^%3e].*%3e|<[^>]

# --- truncated at 32 KB (47 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/landmark-information/refs/heads/main/openapi/landmark-information-document-vault-api-openapi.yml