TrustLayer Parties API
The Parties API from TrustLayer — 20 operation(s) for parties.
The Parties API from TrustLayer — 20 operation(s) for parties.
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