TrustLayer Projects API
The Projects API from TrustLayer — 9 operation(s) for projects.
The Projects API from TrustLayer — 9 operation(s) for projects.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/trustlayer-projects-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: TrustLayer Platform Auth Projects 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: Projects
paths:
/projects/{id}/external-ids:
parameters:
- schema:
type: string
name: id
in: path
required: true
put:
summary: Update project external IDs
operationId: put-projects-:id-external-ids
deprecated: true
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
status:
$ref: '#/components/schemas/response-status'
data:
$ref: '#/components/schemas/project'
requestBody:
content:
application/json:
schema:
type: object
properties:
externalIds:
type: array
x-stoplight:
id: 2pkejdal5p5gq
items:
x-stoplight:
id: 93pbk6htcs4v3
type: string
description: 'Update the list of external IDs for this project. 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.'
tags:
- Projects
/projects:
get:
summary: List projects
tags:
- Projects
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
status:
$ref: '#/components/schemas/response-status'
data:
type: array
items:
$ref: '#/components/schemas/project'
meta:
$ref: '#/components/schemas/collection-meta'
operationId: get-projects
deprecated: true
description: 'Available filters:
* `name`
* `status` ("compliant", "non_compliant", others?)
* `active`
* `createdAt`
* `updatedAt`
* `startDate`
* `endDate`
* `customField`
* `externalId`
* `active`
Available sort keys:
* `name`
* `createdAt`
* `updatedAt`
* `startDate`
* `endDate`
Available include options:
* `parties`
* `customFields`
Notes:
* 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`.
'
parameters:
- $ref: '#/components/parameters/sort'
- $ref: '#/components/parameters/page-number'
- $ref: '#/components/parameters/page-size'
- $ref: '#/components/parameters/filter'
- $ref: '#/components/parameters/include'
x-internal: false
post:
summary: Create a new project
operationId: post-projects
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:
- Projects
description: The only required attribute is `name`.
requestBody:
content:
application/json:
schema:
type: object
properties:
project:
$ref: '#/components/schemas/project-create'
/projects/{projectId}:
parameters:
- schema:
type: string
name: projectId
in: path
required: true
description: Project ID
get:
summary: Fetch a project
tags:
- Projects
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
status:
$ref: '#/components/schemas/response-status'
data:
$ref: '#/components/schemas/project'
operationId: get-projects-id
deprecated: true
description: 'Available include options:
* `parties`
* `customFields`
'
parameters:
- $ref: '#/components/parameters/include'
delete:
summary: Delete a project
operationId: delete-projects-projectId
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: Soft-deletes a project
tags:
- Projects
x-internal: false
/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:
- Projects
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:
- Projects
/projects/{projectId}/relationships/documents:
parameters:
- schema:
type: string
name: projectId
in: path
required: true
description: Project ID
post:
summary: Attach documents to a project
operationId: post-projects-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/project'
tags:
- Projects
description: 'A document can be attached to any number of projects.
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
delete:
summary: Detach documents from a project
operationId: delete-projects-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/project'
description: All documents _must_ exist, otherwise a 404 response will be returned and no document will be detached.
requestBody:
content:
application/json:
schema:
type: object
properties:
documents:
$ref: '#/components/schemas/reference-list-input'
required:
- documents
tags:
- Projects
/projects/{projectId}/relationships/documents/{documentId}:
parameters:
- schema:
type: string
name: projectId
in: path
required: true
description: Project ID
- schema:
type: string
name: documentId
in: path
required: true
description: Document ID
delete:
summary: Remove a document from a project
operationId: delete-projects-projectId-relationships-documents-documentId
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:
- Projects
description: If you need to remove multiple documents at once you can use the alternative endpoint `DELETE /projects/{projectId}/relationships/documents`
/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:
- Projects
description: If you need to remove multiple parties at once you can use the alternative endpoint `DELETE /projects/{projectId}/relationships/parties`
/projects/{projectId}/compliance-profile:
parameters:
- schema:
type: string
name: projectId
in: path
required: true
get:
summary: Fetch compliance profile for project
tags:
- Projects
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-projects-projectId-compliance-profile
deprecated: true
parameters:
- $ref: '#/components/parameters/scope-type'
- $ref: '#/components/parameters/scope-id'
description: 'This will return the project-specific compliance profile relative to the given scope.
NOTE: it is _mandatory_ to specify a `scope`, which can be either a `party` (belonging to a project) or a `complianceProfile`.'
x-internal: true
/documents/{documentId}/relationships/projects:
parameters:
- schema:
type: string
name: documentId
in: path
required: true
post:
summary: Associate a document to multiple projects
operationId: post-documents-documentId-relationships-projects
deprecated: true
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
status:
$ref: '#/components/schemas/response-status'
data:
$ref: '#/components/schemas/document'
tags:
- Projects
description: TBD
requestBody:
content:
application/json:
schema:
type: object
properties:
projects:
type: array
items:
$ref: '#/components/schemas/reference-input'
components:
schemas:
reference:
title: Reference
type: object
properties:
id:
type: string
type:
type: string
description: Generic object reference
x-internal: false
x-examples:
Generic reference example:
id: 60896067dd86e01e90199f43
type: widgets
compliance-profile:
title: Compliance Profile
type: object
x-examples:
Example compliance profile:
id: 60a27c51fcd891823568ed27
type: compliance-profiles
name: Default compliance profile
rules:
- moduleId: evidenceOfInsurance
moduleLabel: Evidence of Insurance
subjectId: commercialGeneralLiability
subjectLabel: Commercial General Liability
attributeId: evidenceOfInsuranceCommercialGeneralLiabilityEachOccurrence
attributeLabel: Each Occurrence
attributeType: number
attributeDescription: ''
masterDocumentAttributeId: commercialGeneralLiabilityLimitsGeneralAggregate
operator: must be greater or equal to
targetValue: '2000000'
context: global
properties:
id:
type: string
type:
type: string
default: compliance-profiles
name:
type: string
example: Default compliance profile
rules:
type: array
items:
type: object
properties:
moduleId:
type: string
minLength: 1
example: evidenceOfInsurance
moduleLabel:
type: string
minLength: 1
example: Evidence of Insurance
subjectId:
type: string
minLength: 1
example: commercialGeneralLiability
subjectLabel:
type: string
minLength: 1
example: Commercial General Liability
attributeId:
type: string
minLength: 1
example: evidenceOfInsuranceCommercialGeneralLiabilityEachOccurrence
attributeLabel:
type: string
minLength: 1
example: Each Occurrence
attributeType:
type: string
minLength: 1
example: number
attributeDescription:
type: string
masterDocumentAttributeId:
type: string
minLength: 1
example: commercialGeneralLiabilityLimitsGeneralAggregate
operator:
type: string
minLength: 1
example: must be greater or equal to
targetValue:
type: string
minLength: 1
example: '2000000'
context:
type: string
enum:
- global
- project
- custom-field
documentChecklists:
type: array
items:
type: object
properties:
attributeId:
type: string
attributeLabel:
type: string
active:
type: boolean
collection-meta:
title: collection-meta
type: object
properties:
count:
type: number
description: The number of documents according to the specified filters
pages:
type: number
totalCount:
type: number
description: The total number of documents in the collection
totalPages:
type: number
x-internal: true
project-create:
title: project-create
type: object
x-internal: true
x-tags:
- input
properties:
name:
type: string
description: The project name
description:
type: string
description: An optional description
startDate:
type: string
format: date
endDate:
type: string
format: date
customData:
type: array
items:
type: object
properties:
customField:
$ref: '#/components/schemas/reference-input'
value:
type: string
required:
- customField
- value
externalIds:
type: array
x-stoplight:
id: tla0kkdm08jk4
items:
x-stoplight:
id: utre6jd713rg1
type: string
required:
- name
reference-list-input:
type: array
title: reference-list-input
x-tags:
- input
minItems: 1
items:
type: object
properties:
id:
type: string
pattern: ^[a-z0-9]{24}$
minLength: 24
maxLength: 24
required:
- id
x-internal: true
compliance-document:
x-internal: true
title: Compliance Document
type: object
properties:
id:
type: string
origin:
type: string
enum:
- upload
- makeCompliant
- connectedDocument
- fillableForm
- webForm
complianceStatus:
type: string
enum:
- compliant
- non_compliant
reference-input:
title: reference-input
type: object
properties:
id:
type: string
minLength: 24
maxLength: 24
pattern: ^[a-z0-9]{24}$
required:
- id
x-internal: true
x-tags:
- input
taggging-full:
title: Tagging (full data)
type: object
properties:
type:
type: string
default: tags
id:
type: string
name:
type: string
color:
type: string
addedAt:
type: string
format: date
addedBy:
type: string
custom-field:
title: Custom Field
type: object
properties:
id:
type: string
type:
type: string
default: custom-fields
name:
type: string
description: Custom field label
'description ':
type: string
description: Optional description
color:
type: string
pattern: ^#[a-f0-9]{6}$
description: 'Field color in #rrggbb format'
fieldType:
type: string
default: text
enum:
- text
- number
- dropdown
options:
type: array
description: List of options for the dropdown
items:
type: object
properties:
key:
type: string
description: Unique identifier for the option
value:
type: string
description: Option label
complianceProfile:
oneOf:
- $ref: '#/components/schemas/reference'
- $ref: '#/components/schemas/compliance-profile'
associatedEntities:
type: array
enum:
- party
- project
description: List of entity types that can use this custom field
items:
type: string
party-type:
title: Party Type
type: object
properties:
id:
type: string
type:
type: string
default: party-types
name:
type: string
pluralName:
type: string
defaultComplianceProfile:
oneOf:
- $ref: '#/components/schemas/reference'
- $ref: '#/components/schemas/compliance-profile'
x-examples:
Vendor:
id: 60a27c51fcd891823568ed28
type: party-types
name: Vendor
pluralName: Vendors
defaultComplianceProfile:
id: 60a27c51fcd891823568ed27
type: compliance-profiles
user:
description: ''
type: object
properties:
id:
type: string
profile:
type: object
properties:
name:
type: string
minLength: 1
phone:
type: string
title:
type: string
avatar:
type: string
role:
type: string
department:
type: string
timezone:
type: string
email:
type: string
minLength: 1
isActive:
type: boolean
type:
type: string
default: users
readOnly: true
title: User
taggging:
title: Tagging
type: object
properties:
type:
type: string
default: tags
id:
type: string
addedAt:
type: string
format: date
addedBy:
type: string
expiresAt:
type: string
x-stoplight:
id: 8xpna1blern8o
format: date
party:
title: Party
type: object
x-examples:
Example Party:
id: 60896067dd86e01e90199f42
name: Test Party
address:
line1: 123 Main Street
line2: ''
city: Pleasantville
postalCode: '10200'
region: NY
country: US
type: Vendor
status: new
customData:
- value: '123'
customField:
type: customFields
id: 60896067dd86e01e90199f42
externalIds:
procore:
- id: '49843945'
properties:
type:
type: string
default: parties
readOnly: true
id:
type: string
readOnly: true
name:
type: string
address:
$ref: '#/components/schemas/address'
status:
type: string
enum:
- new
- compliant
- non_compliant
- inactive
readOnly: true
contacts:
type: array
items:
$ref: '#/components/schemas/contact'
website:
type:
- string
- 'null'
active:
type: boolean
notes:
type:
- string
- 'null'
complianceStatus:
$ref: '#/components/schemas/compliance-status'
projects:
type: array
items:
oneOf:
- $ref: '#/components/schemas/reference'
- $ref: '#/components/schemas/project'
projectStats:
type: object
properties:
compliantProjectsCount:
type: number
totalProjectsCount:
type: number
documents:
type: array
items:
oneOf:
- $ref: '#/components/schemas/reference'
- $ref: '#/components/schemas/document'
partyType:
oneOf:
- $ref: '#/components/schemas/reference'
- $ref: '#/components/schemas/party-type'
tags:
type: array
items:
oneOf:
- $ref: '#/components/schemas/taggging'
- $ref: '#/components/schemas/taggging-full'
complianceProfile:
oneOf:
- $ref: '#/components/schemas/reference'
- $ref: '#/components/schemas/compliance-profile'
- {}
customData:
type: array
items:
type: object
properties:
value:
type: string
customField:
oneOf:
- $ref: '#/components/schemas/reference'
- $ref: '#/components/schemas/custom-field'
deletedAt:
type:
- string
- 'null'
format: date-time
deletedBy:
oneOf:
- {}
- $ref: '#/components/schemas/reference'
externalIds:
type: object
x-stoplight:
id: zk87opteuie3w
response-status:
type: string
title: Response Status
enum:
- success
- fail
- error
readOnly: true
x-examples:
Success: success
description: The possible values are "success", "fail", and "error".
x-internal: true
contact:
title: Contact
type: object
x-examples:
Example Contact:
type: contacts
id: 60896067dd86e01e90199f43
name: Jane Smith
company: Acme Inc
email: jane.smith@example.com
phone: (555) 555-5555
fax: ''
title: Director
primary: true
defaultRequestRecipient: false
avatar: ''
party:
type: parties
id: 60896067dd86e01e90199f43
properties:
type:
type: string
default: contacts
readOnly: true
id:
type: string
readOnly: true
name:
type: string
company:
type: string
email:
type: string
phone:
type: string
fax:
type: string
title:
type: string
primary:
type: boolean
default: false
defaultRequestRecipient:
type: boolean
default: false
avatar:
type: string
party:
oneOf:
- $ref: '#/components/schemas/reference'
- $ref: '#/components/schemas/party'
externalId:
type: string
x-stoplight:
id: 07yyrzkup5tdk
document:
type: object
title: Document
x-examples:
Example document:
type: documents
id: 60a27c51fcd891823568ed35
issuedBy:
name: ''
address: ''
contactName: ''
phone: ''
email: ''
reviewedAt: '2019-08-24T14:15:22Z'
archivedAt: '2019-08-24T14:15:22Z'
notes: ''
status: processed
types:
- type: document-types
id: 60a27c517fd4e152a9642347
flag:
addedOn: '2019-08-24T14:15:22Z'
severityLevel: low
affectedSubjects:
- string
notes: ''
user:
id: 60a27c51fcd891823568ed24
type: users
appliesToAllProjects: true
expirationDate: '2019-08-24'
friendlyName: Acord25.pdf
data: {}
metadata: {}
updatedAt: '2019-08-24T14:15:22Z'
createdAt: '2019-08-24T14:15:22Z'
archivedBy:
id: 60a27c51fcd891823568ed24
type: users
reviewedBy: null
url: https://trustlayer-documents.s3.us-west-1.amazonaws.com/...
issueDate: '2019-01-22'
properties:
type:
type: string
default: documents
readOnly: true
id:
type: string
readOnly: true
issuedBy:
type: object
properties:
name:
type: string
address:
type: string
contactName:
type: string
phone:
type: string
email:
type: string
reviewedAt:
type: string
format: date-time
readOnly: true
archivedAt:
type: string
format: date-time
readOnly: true
notes:
type: string
status:
type: string
minLength: 1
readOnly: true
types:
type: array
uniqueItems: true
minItems: 0
items:
oneOf:
- $ref: '#/components/schemas/reference'
- $ref: '#/components/schemas/document-type'
flag:
type: object
properties:
addedOn:
type: string
format: date-time
severityLevel:
type: string
minLength: 1
enum:
- low
- medium
- high
affectedSubjects:
type: array
uniqueItems: true
items:
type: string
notes:
type: string
user:
oneOf:
- $ref: '#/components/schemas/reference'
- $ref: '#/components/schemas/user'
appliesToAllProjects:
type: boolean
expirationDate:
type: string
format: date
name:
type: string
minLength: 1
data:
type: object
metadata:
type: object
updatedAt:
type: string
format: date-time
readOnly: true
createdAt:
type: string
format: date-time
readOnly: true
archivedBy:
oneOf:
- $ref: '#/components/schemas/reference'
- $ref: '#/components/schemas/user'
- {}
reviewedBy:
# --- truncated at 32 KB (49 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/trustlayer/refs/heads/main/openapi/trustlayer-projects-api-openapi.yml