TrustLayer Parties API

The Parties API from TrustLayer — 20 operation(s) for parties.

OpenAPI Specification

trustlayer-parties-api-openapi.yml Raw ↑
openapi: 3.0.0
info:
  title: TrustLayer Platform Auth Parties API
  version: '1.0'
  contact:
    name: TrustLayer Support
    email: support@trustlayer.io
  termsOfService: https://trustlayer.io/terms-of-service
  externalDocs:
    description: OpenAPI specification
    url: /v1/platform-api.yaml
  description: '3rd-party API for the TrustLayer platform.


    **Deprecated.** Platform API v1 is deprecated as of 01 June 2026 and is

    scheduled for sunset (end-of-life) on 31 March 2027. It remains fully

    available until the sunset date but will not receive new features. Please

    migrate to Platform API v2 for new integrations.


    All v1 responses carry the standard deprecation response headers

    ([RFC 8594](https://www.rfc-editor.org/rfc/rfc8594)):


    ```http

    Deprecation: @1780272000

    Sunset: Wed, 31 Mar 2027 23:59:59 GMT

    Link: <https://developers.trustlayer.io/>; rel="deprecation", <https://developers.trustlayer.io/>; rel="sunset"

    ```


    `Deprecation: @1780272000` is the Unix timestamp for 2026-06-01T00:00:00Z;

    sunset (end-of-life) is 2027-03-31T23:59:59 GMT.'
  x-deprecated: true
  x-deprecation-date: '2026-06-01'
  x-sunset: '2027-03-31'
  license:
    name: Apache 2.0
    url: https://apache.org/licenses/LICENSE-2.0
servers:
- url: http://localhost:4000/v1
  description: Local
- url: https://api.trustlayer.io/v1
  description: Production
security:
- API Key: []
tags:
- name: Parties
paths:
  /parties/{partyId}/external-ids:
    parameters:
    - schema:
        type: string
      name: partyId
      in: path
      required: true
    put:
      summary: Update party external IDs
      operationId: put-parties-partyId-external-ids
      deprecated: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                    x-stoplight:
                      id: mw0f1krerzazl
                  data:
                    $ref: '#/components/schemas/party'
      description: 'Update the list of external IDs for this party. The passed values will replace the current ones.

        External IDs are in the format `source/id` or `source:instance/id`, where `instance` can be used to differentiate multiple instances of the same `source`.


        Note that if the workspace is already integrated with one or more external systems, this endpoint should _not_ be used.'
      requestBody:
        content:
          application/json:
            schema:
              type: array
              items:
                x-stoplight:
                  id: q64zlg3vm1r2v
                type: string
          application/xml:
            schema:
              type: object
              properties:
                externalIds:
                  type: array
                  x-stoplight:
                    id: ttvioxricz1ci
                  items:
                    x-stoplight:
                      id: 38k8raaok2122
                    type: string
      tags:
      - Parties
  /parties/{id}/waive-requirement:
    parameters:
    - schema:
        type: string
      name: id
      in: path
      required: true
      description: Party ID
    post:
      summary: Waive or override a requirement
      operationId: post-parties-partyId-waive-requirement
      deprecated: true
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/response-status'
                  party:
                    $ref: '#/components/schemas/party'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/waive-requirement'
      parameters:
      - $ref: '#/components/parameters/scope-type'
      - $ref: '#/components/parameters/scope-id'
      description: 'Apply a waiver or an override to a requirement, identified by its full attribute ID (e.g. `evidenceOfInsuranceCommercialGeneralLiabilityGeneralAggregate`).


        By passing in the query string a `scope[type]` of "projects" and a project ID which the party belongs to as `scope[id]`, the waiver will be applied only at the project level.


        It''s possible to apply the waiver automatically to all present and future projects by setting `applyToAllProjects` in the request body.'
      tags:
      - Parties
  /parties/{id}/waive-subject:
    parameters:
    - schema:
        type: string
      name: id
      in: path
      required: true
      description: Party ID
    post:
      summary: Waive or override a subject
      operationId: post-parties-partyId-waive-requirement
      deprecated: true
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/response-status'
                  party:
                    $ref: '#/components/schemas/party'
        ? ''
        : content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/response-status'
                  data:
                    $ref: '#/components/schemas/party'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/waive-subject'
      description: 'Apply a waiver or an override to a whole subject, identified by its full ID (e.g. `commercialGeneralLiability`).


        By passing in the query string a `scope[type]` of "projects" and a project ID which the party belongs to as `scope[id]`, the waiver will be applied only at the project level.


        It''s possible to apply the waiver automatically to all present and future projects by setting `applyToAllProjects` in the request body.'
      tags:
      - Parties
  /parties/{partyId}/comments:
    parameters:
    - schema:
        type: string
      name: partyId
      in: path
      required: true
    post:
      summary: Post a comment on a party's timeline
      operationId: post-parties-partyId-comments
      deprecated: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/response-status'
                  data:
                    $ref: '#/components/schemas/party-comment'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/party-comment-input'
      tags:
      - Parties
  /parties:
    get:
      summary: List parties
      tags:
      - Parties
      operationId: get-parties
      deprecated: true
      parameters:
      - $ref: '#/components/parameters/sort'
      - $ref: '#/components/parameters/page-number'
      - $ref: '#/components/parameters/page-size'
      - $ref: '#/components/parameters/filter'
      - $ref: '#/components/parameters/include'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/response-status'
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/party'
                  meta:
                    $ref: '#/components/schemas/collection-meta'
              examples: {}
      description: 'Available filters:

        * `project`

        * `name`

        * `type`

        * `status`

        * `createdAt`

        * `updatedAt`

        * `customField`

        * `externalId`

        * `active`


        Available sort keys:

        * `name`

        * `createdAt`

        * `updatedAt`

        * `status`


        Available include options:

        * `projects`

        * `documents`

        * `tags`

        * `complianceProfile`

        * `customFields`


        Pagination is enabled.


        Notes:


        * the `type` filter takes either the singular or plural version of the type (e.g. "Vendor", "Vendors")

        * valid values for the `status` filter: "non_compliant", "compliant".

        * valid values for the `active` filter: "true", "false"

        * by default both active and inactive parties are returned

        * when filtering by `project`, the parties compliance data will be relative to the selected project

        * the value of the `externalId` filter must be in the format `<provider name>/<external id>`, e.g. `procore/1234`

        * the value of the `customField` filter must be in the format `<custom field id>;<field value>`. The only supported operator is `eq` (exact match, case-sensitive).

        '
    post:
      summary: Create a new party
      operationId: post-parties
      deprecated: true
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/response-status'
                  data:
                    $ref: '#/components/schemas/party'
      tags:
      - Parties
      description: 'Note that a placeholder primary contact will be created with the name "Anonymous" if no contact information is provided.


        The compliance profile will be assigned based on the party type.'
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                party:
                  $ref: '#/components/schemas/party-create'
      x-internal: false
  /parties/{partyId}:
    parameters:
    - schema:
        type: string
      name: partyId
      in: path
      required: true
      description: Party ID
    get:
      summary: Fetch a party
      tags:
      - Parties
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                additionalProperties: false
                properties:
                  status:
                    $ref: '#/components/schemas/response-status'
                  data:
                    $ref: '#/components/schemas/party'
                required:
                - status
                - data
                readOnly: true
      operationId: get-parties-:id
      deprecated: true
      description: 'Available include options:

        * `projects`

        * `documents`

        * `tags`

        * `complianceProfile`

        * `customFields`


        Available scope options:

        * `projects`


        If `scope[type]=project`, the compliance information in the resulting response will be relative to the selected project.

        If a project scope is specified _and_ documents are included, only documents associated to the project will be returned.

        '
      parameters:
      - $ref: '#/components/parameters/include'
      - $ref: '#/components/parameters/scope-type'
      - $ref: '#/components/parameters/scope-id'
    patch:
      summary: Update a party
      operationId: patch-parties-partyId
      deprecated: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/response-status'
                  data:
                    $ref: '#/components/schemas/party'
      description: 'The compliance profile can be either turned on/off by assigning `true` or `false` to `complianceProfile`, or it can be changed to another global compliance profile.

        Note: if compliance tracking is turned back on (with `{"complianceProfile": true}`), the party will _not_ have a compliance profile assigned.'
      tags:
      - Parties
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                party:
                  $ref: '#/components/schemas/party-update'
      x-internal: false
    delete:
      summary: Delete a party
      operationId: delete-parties-partyId
      deprecated: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/response-status'
                  data:
                    $ref: '#/components/schemas/party'
      description: TBD
      x-internal: false
      tags:
      - Parties
  /parties/{partyId}/contacts:
    parameters:
    - schema:
        type: string
      name: partyId
      in: path
      required: true
      description: Party ID
    post:
      summary: Create a party contact
      operationId: post-parties-id-contacts
      deprecated: true
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/response-status'
                  data:
                    $ref: '#/components/schemas/party'
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                contact:
                  $ref: '#/components/schemas/contact-create'
      description: '* `name` is required.

        * setting the `primary` flag to `true` will unset it from the current primary contact.

        '
      x-internal: false
      tags:
      - Parties
    get:
      summary: List a party's contacts
      operationId: get-parties-id-contacts
      deprecated: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/response-status'
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/contact'
                  meta:
                    $ref: '#/components/schemas/collection-meta'
      description: Returns all the contacts for a party. Note that pagination is not available, so the meta information will always return the number of contacts in `totalCount` and 1 in `totalPages`.
      tags:
      - Parties
  /parties/{partyId}/compliance-certificate:
    parameters:
    - schema:
        type: string
      name: partyId
      in: path
      required: true
      description: Party ID
    post:
      summary: Create a party compliance certificate
      operationId: post-parties-id-compliance-certificate-create
      deprecated: true
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/response-status'
                  data:
                    $ref: '#/components/schemas/document'
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                complianceCertificate:
                  $ref: '#/components/schemas/compliance-certificate-create'
          multipart/form-data:
            schema:
              type: object
              properties: null
              effectiveDate:
                type: string
                format: date-time
              expirationDate:
                type: string
                format: date-time
              document:
                type: string
                format: binary
      description: '* if `effectiveDate` is not provided, it will default to the current moment

        * if `expirationDate` is not provided, it will default to the earliest expiration date found in currently active documents; if no document is present, it will default to 1 year from the effective date

        * if `document` is provided (only for multipart/form-data), it will be uploaded to the party and used as the compliance certificate


        Available `scope` options:


        * `projects`

        '
      x-internal: false
      tags:
      - Parties
    get:
      summary: Fetch a party's compliance certificate
      operationId: get-parties-id-compliance-certificate
      deprecated: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/response-status'
                  data:
                    $ref: '#/components/schemas/document'
      description: 'Returns the currently valid compliance certificate for a party, if it exists; otherwise it responds with a 404 status.


        Available `scope` options:


        * `projects`

        '
      tags:
      - Parties
  /parties/{partyId}/relationships/documents:
    parameters:
    - schema:
        type: string
      name: partyId
      in: path
      required: true
      description: Party ID
    post:
      summary: Attach documents to a party
      operationId: post-parties-id-relationships-documents
      deprecated: true
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/response-status'
                  data:
                    $ref: '#/components/schemas/party'
      description: 'Note that at any given time, a document can only be attached to one party.

        If the document is already attached to another party, it will be ignored.


        All documents _must_ exist, otherwise a 404 response will be returned and no document will be attached.

        '
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                documents:
                  type: array
                  items:
                    $ref: '#/components/schemas/reference-input'
              required:
              - documents
      tags:
      - Parties
      parameters: []
    delete:
      summary: Detach a document from a party
      operationId: delete-parties-id-relationships-documents
      deprecated: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/response-status'
                  data:
                    $ref: '#/components/schemas/party'
      tags:
      - Parties
      description: 'Once the document has been detached from its party, it can be reattached to a different party.


        All documents _must_ exist, otherwise a 404 response will be returned and no document will be attached.'
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                documents:
                  $ref: '#/components/schemas/reference-list-input'
              required:
              - documents
  /projects/{projectId}/relationships/parties:
    parameters:
    - schema:
        type: string
      name: projectId
      in: path
      required: true
      description: Project ID
    post:
      summary: Add parties to a project
      operationId: post-projects-id-relationships-parties
      deprecated: true
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/response-status'
                  data:
                    $ref: '#/components/schemas/project'
      tags:
      - Parties
      description: 'Parties that are already associated with the project are ignored.


        All parties _must_ exist, otherwise a 404 response will be returned and no party will be added.'
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                parties:
                  $ref: '#/components/schemas/reference-list-input'
              required:
              - parties
    delete:
      summary: Remove a party from a project
      operationId: delete-projects-id-relationships-parties
      deprecated: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/response-status'
                  data:
                    $ref: '#/components/schemas/project'
      description: All parties _must_ exist, otherwise a 404 response will be returned and no party will be removed.
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                parties:
                  $ref: '#/components/schemas/reference-list-input'
              required:
              - parties
      tags:
      - Parties
  /parties/{partyId}/documents:
    parameters:
    - schema:
        type: string
      name: partyId
      in: path
      required: true
      description: Party ID
    post:
      summary: Upload a document to a party
      operationId: post-parties-id-documents
      deprecated: true
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/response-status'
                  data:
                    $ref: '#/components/schemas/document'
      tags:
      - Parties
      description: This will simultaneusly upload a document and attach it to the party.
      requestBody:
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                document:
                  type: string
                  format: binary
                documentType:
                  type: string
                  x-stoplight:
                    id: 8w8io4y2eiiha
                  description: Document type name or ID
              required:
              - document
  /parties/{partyId}/relationships/tags:
    parameters:
    - schema:
        type: string
      name: partyId
      in: path
      required: true
      description: Party ID
    post:
      summary: Tag a party
      operationId: post-parties-:id-tags
      deprecated: true
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/response-status'
                  data:
                    $ref: '#/components/schemas/party'
      tags:
      - Parties
      description: Add one or more tags to a party. If an expiration date is passed, it will be applied to all the tags.
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                tags:
                  $ref: '#/components/schemas/reference-list-input'
                expiresAt:
                  type: string
                  x-stoplight:
                    id: igcouna7q1x73
                  format: date
              required:
              - tags
    delete:
      summary: ''
      operationId: delete-parties-:id-tags
      deprecated: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/response-status'
                  data:
                    $ref: '#/components/schemas/party'
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                tags:
                  $ref: '#/components/schemas/reference-list-input'
      description: Remove one or more tags from a party.
      tags:
      - Parties
  /parties/{partyId}/relationships/documents/{documentId}:
    parameters:
    - schema:
        type: string
      name: partyId
      in: path
      required: true
      description: Party ID
    - schema:
        type: string
      name: documentId
      in: path
      required: true
      description: Document ID
    delete:
      summary: Remove a document from a party
      tags:
      - Parties
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/response-status'
                  data:
                    $ref: '#/components/schemas/party'
      operationId: get-parties-partyId-relationships-documents-documentId
      deprecated: true
      description: If you need to remove multiple documents at once you can use the alternative endpoint `DELETE /parties/{partyId}/relationships/documents`
  /parties/{partyId}/relationships/tags/{tagId}:
    parameters:
    - schema:
        type: string
      name: partyId
      in: path
      required: true
    - schema:
        type: string
      name: tagId
      in: path
      required: true
    delete:
      summary: Remove a tag from a party
      operationId: delete-parties-partyId-relationships-tags-tagId
      deprecated: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/response-status'
                  data:
                    $ref: '#/components/schemas/party'
      tags:
      - Parties
      description: If you need to remove multiple tags at once you can use the alternative endpoint `DELETE /parties/{partyId}/relationships/tags`
  /projects/{projectId}/relationships/parties/{partyId}:
    parameters:
    - schema:
        type: string
      name: projectId
      in: path
      required: true
      description: Project ID
    - schema:
        type: string
      name: partyId
      in: path
      required: true
      description: Party ID
    delete:
      summary: Remove a party from a project
      operationId: delete-projects-projectId-relationships-parties-partyId
      deprecated: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/response-status'
                  data:
                    $ref: '#/components/schemas/project'
      tags:
      - Parties
      description: If you need to remove multiple parties at once you can use the alternative endpoint `DELETE /projects/{projectId}/relationships/parties`
  /parties/{partyId}/document-request:
    parameters:
    - schema:
        type: string
      name: partyId
      in: path
      required: true
      description: Party ID
    get:
      summary: Fetch the current document request
      tags:
      - Parties
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/response-status'
                  data:
                    $ref: '#/components/schemas/document-request'
      operationId: get-parties-:id-document-request
      deprecated: true
      description: 'This will return the latest document request sent for the party.


        Available include options:

        * `party`'
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                status:
                  $ref: '#/components/schemas/response-status'
                data:
                  type: object
      parameters:
      - $ref: '#/components/parameters/include'
      x-internal: false
    post:
      summary: Send a new document request
      operationId: post-parties-partyId-document-request
      deprecated: true
      tags:
      - Parties
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/response-status'
                  data:
                    $ref: '#/components/schemas/document-request'
      description: If a request already exists for this party, this will send a reminder.
      x-internal: false
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                request:
                  $ref: '#/components/schemas/document-request-input'
  /import-parties:
    parameters: []
    post:
      summary: Bulk upload parties
      operationId: post-bulk-uploads-parties
      deprecated: true
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/response-status'
                  data:
                    type: array
                    items:
                      oneOf:
                      - properties:
                          id:
                            type: string
                      - properties:
                          error:
                            type: string
                      type: object
      tags:
      - Parties
      x-internal: false
      description: 'This endpoint allows you to bulk upload parties via a CSV file.

        '
      requestBody:
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                parties:
                  type: string
        description: File data
  /parties/{partyId}/compliance-profile:
    parameters:
    - schema:
        type: string
      name: partyId
      in: path
      required: true
    get:
      summary: Fetch a party's compliance profile
      tags:
      - Parties
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/response-status'
                  data:
                    $ref: '#/components/schemas/compliance-profile'
      operationId: get-parties-partyId-compliance-profile
      deprecated: true
      description: 'This will return the compliance profile associated to the party. If the party is not tracking compliance you will get a 404 response.

        By specifying a `scope` of type `projects`, the project-specific compliance profile will be returned.

        '
      parameters:
      - $ref: '#/components/parameters/scope-type'
      

# --- truncated at 32 KB (79 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/trustlayer/refs/heads/main/openapi/trustlayer-parties-api-openapi.yml