TrustLayer Platform APIv1.0
3rd-party API for the TrustLayer platform.
| Contact | TrustLayer API Services api@trustlayer.io |
|---|---|
| License | Apache 2.0 https://apache.org/licenses/LICENSE-2.0 |
| Terms of Service | https://trustlayer.io/api/terms-of-service |
| OpenAPI specification | /v1/platform-api.yaml |
Overview
NOTE: By using the TrustLayer API you agree to the TrustLayer terms of service: https://trustlayer.io/terms-of-use/
The following documentation sets out to provide everything you need to build your solutions using the TrustLayer API. This outlines all you should need from getting started to details on the calls and responses. As the API evolves, so will this space. Not every release will include updates to the API so keep an eye out for changes made and be sure to check out our whats new guides for the details of all the of changes each month.
The TrustLayer API allows for you to connect to the TrustLayer platform through external applications, from here you’ll be able to work with data stored and transact your account. The TrustLayer API is built on REST principles and returns a JSON payload. Each endpoint’s documentation will show the expected parameters and details of the payload for each call you make.
What is TrustLayer:
NOTE: In order to use the TrustLayer API, you need to have a TrustLayer account. If you don’t currently have an account you should talk to our sales team at sales@trustlayer.io
TrustLayer is a collaborative risk management application that helps reduce friction between businesses. The company allows users to automate the verification of insurance, licenses, and compliance documents of their business partners (i.e., vendors, subcontractors, suppliers, borrowers, tenants, ridesharing and franchisees). TrustLayer uses robotic process automation (RPA) and AI to automate this manual process. This allows companies to automatically verify the insurance and licenses of their partners. TrustLayer’s pioneering solution is recognized by the industry and is a member of the BrokerTech Ventures (BTV) accelerator, BrushCreek Tech Insurance accelerator, winner of the 2019 R3 CordaCon Global Insurtech Challenge, and received top honors at The Institutes 2020 annual convention.
Learn about TrustLayer
The TrustLayer development API has exposed a number of entities which allows for you to extract and manipulate resources. The page seeks to explain them at a very high level and match them to the business workflows where possible.
Compliance Profile
The compliance profile entity houses the compliance requirements which a party is expected to meet. The profile is made up of a number of modules which details the requirements in a systematic way; such as General Liability, Licenses, etc. Creating the compliance profile is the basis of many actions on TrustLayer as each party type is given a default compliance profile.
Party Types
The core function of the party type entity is to match a compliance profile to the party by the { defaultComplianceProfile } parameter. The provides a set of default compliance requirements which are then passed to the party when it is created. Once associated these requirements can be customised to the party.
Parties
The party entity oversees how a party interacts with each party of TrustLayer. It stores information such as its projects’, documents and contacts. The party can be assigned to multiple projects and have multiple sets of compliance requirements to meet via each of these. A party will be assigned its compliance requirements by the assigned party type and assigned projects.
Projects
The project entity creates a space to assign parties to compliance requirements without impacting the existing compliance profile. Each project has its own compliance score based on how many parties have met the compliance requirements set in the project space. An organisation can create an unlimited amount of projects and every party can have a relationship with every project with no limitation.
Documents
The documents entity stores metadata, flags, and some extracted information after it has been uploaded and processed. When uploaded a document can exist at the Party and project level and is used to meet the compliance criteria defined in either the project or the base level compliance profile. The content of the document entity is used to evidence compliance to the requirments which is then used to measure the compliance score. When a document is uploaded an automated processing of its contents will be queued.
Document Types
When uploaded, a document is flagged by its document type, for example: Certificate of Insurance, W-9 etc. The document types are stored in the document type entity which each document is then associated to.
Contacts
The contacts of a party are stored in the contacts entity. The contacts are associated with the party and are called during actions such as sending document requests.
Tags
Tags are applied to parties and are stored in the tags entity. When applied to the PARTY they are not linked to a party in a project setting so these will not change based on any project.
Obtaining an API token
To use the API you’ll need to generate an access token. To do this go to Settings > API Tokens and create a new token by selecting ‘generate new token’.
When generating your token you will need to assign a name to it and select the permission level. The permission level can be:
- Read only
- Read and write
From the API tokens screen on the TrustLayer platform you will be able to view and manage the generated tokens
When you generate a token make sure to write it down because you won’t be able to see it again!
You can create as many tokens as you want.
The token needs to be included in all API calls using the Authorization header:
GET /v1/parties
Authorization: Bearer <your token>
Failing to send a token, or using a token with an insufficient permission level (i.e. a read-only token used for a POST operation) will result in a 403 response.
Webhooks Overview
Webhooks allow third-party developers to be notified whenever a specific event occurs on the TrustLayer platform. Notifications are performed via HTTP POST calls to a provided endpoint URL, carrying with them a payload with the relevant data.
You can set up webhooks either via the UI (in the Settings→TrustLayer API pane), or via API calls (with more precise control).
The payload that is sent with each webhook notification will have some common attributes:
{
"organizationId": "The id of your organization",
"eventType": "The type identifier of the event (see list below)"
}
Most webhooks are relative either to a party or a project (or both). In this case the payload will carry these properties:
{
"partyId": "Id of the affected party",
"partyName": "Name of the party",
"projectId": "Id of the affected project",
"projectName": "Name of the project"
}
For tag-related events, these attributes are included:
{
"tagId": "Id of the affected tag",
"tagName": "Name of the tag"
}
For document-related events, these attributes are supported (not all of them will be present at all times):
{
"documentId": "Id of the affected document",
"documentName": "Name of the document",
"documentReviewed": "Boolean flag, true if the document was reviewed",
"flagSeverityLevel": "Either 'low', 'medium' or 'high'",
"flagNotes": "Text entered in the flag notes",
"verificationNotes": "Text entered in the verification notes"
}
Compliance-related events always carry this attribute:
{
"complianceScore": "Numeric value representing the score of the compliance status (0-100)"
}
Currently, these events are supported:
| Identifier | Description |
|---|---|
| comment:created | A new comment was added to the activity timeline |
| party:created | A new party was created |
| party:updated | A change was made to an existing party |
| party:deleted | A party was deleted |
| party:tag:added | A tag was added to a party |
| party:tag:removed | A tag was removed from a party |
| project:created | A new project was created |
| project:updated | A change was made to an existing project |
| project:deleted | A project was deleted |
| project_compliance:lost | Project-level compliance is no longer satisfied |
| project:activated | A project was activated |
| project:inactivated | A project was inactivated |
| project:party_added | A party was added to a project |
| project:party_removed | A party was removed from a project |
| party_compliance:changed | The compliance score of a party changed |
| party_compliance:reached | A party’s global compliance is satisfied |
| party_compliance:lost | A party’s global compliance is no longer satisfied |
| project_compliance:changed | A party’s project-level compliance score changed |
| project_compliance:reached | A party’s project-level compliance is satisfied |
| document:uploaded | A document was uploaded |
| document:processed | A document was processed |
| document:reviewed | A document was reviewed |
| document:archived | A document was archived |
| document:flagged | A flag was added to a document |
| document:verified | A document was verified |
| document:flag_removed | A flag was removed from a document |
| document:verification_removed | A verification was removed from a document |
| document:deleted | A document was deleted |
Managing webhooks
You can create a webhook via the public API:
curl -XPOST -H"Authorization: Bearer ${token}" \
--data '{ \
"id": "webhook_id", \
"namespace": "my_app", \
"url": "https://my-app.example.com/notify", \
"events": ["party:created", "party:updated"], \
"enabled": true
}' \
https://api.trustlayer.io/v1/webhooks
- The
namespaceparameter can be whatever you want, but the"trustlayer"value is reserved for internal use. - The
urlparameter needs to be unique relative to thenamespace; if you perform a second POST request using the same values, you will overwrite the existing webhook - The
eventsparameter is a list of the events you’re interested in; they can also be specified using wildcards (e.g."party:*") to express interest for a whole class of events. Finally, if you specify an empty list, your endpoint will be notified for all events. - The
enabledparameter can be omitted, and it will default totrue.
Note that webhooks created via the API will not be displayed in the platform Settings page. You can list these webhooks via a GET request:
curl -XGET -H "Authorization: Bearer ${token}" https://api.trustlayer.io/v1/webhooks
You can also delete a webhook via the API:
curl -XDELETE
-H "Authorization: Bearer ${token}" \
https://api.trustlayer.io/v1/webhooks/webhook_id
Where webhook_id is the unique identifier of the webhook you want to delete as defined in the POST response:
{
"id": "webhook_id",
"namespace": "my_app",
"url": "https://my-app.example.com/notify",
"events": ["party:created", "party:updated"],
"enabled": true
}
General Concepts
Hostname and version
All API requests must be sent to api.trustlayer.io. The path is always prefixed by the API version, which is currently v1:
GET https://api.trustlayer.io/v1/parties
Response format
All responses contain two keys:
status: eithersuccess(for successful responses, status codes 2xx),fail(for invalid requests, status codes 4xx), orerror(for internal errors, status code 500)data: the actual payload. It can be either a single object or a collection of same-type objects.
Optionally, a response can also include a meta key with more information. For example, collection endpoints include information about the number of documents and pages based on the requested filters and page size:
GET /v1/parties?filter[name]=foo
{
"status": "success",
"data": [...],
"meta": {
"count": 1,
"pages": 1,
"totalCount": 42,
"totalPages": 3
}
}
NOTE: the Accept header is ignored (the only available response format is JSON). If you really need to send it, please only set it to application/json and don’t include any q parameter.
For fail/error responses the data key will be null, and the meta key will contain the details of the error: an error key with the error kind, and a message key with the error details.
Common query parameters
Pagination
Pagination is done with page[number] and page[size].
Page size is by default 20, with an upper limit of 100. Page numbering starts from 1.
Filtering
Filtering is done with filter[<name>]=<value>. Both name and value are endpoint-specific. Typically, name filters are case-insensitive and perform a search by substring.
Some examples:
GET /parties?filter[name]=foo&filter[project]=123
Will return parties with a name containing the string "foo" (case-insensitive) that are associated with project 123.
Some filter support different operators; the syntax is “operator:value”. Possible operators are:
gt: greater thangte: greater than or equal tolt: less thanlte: less than or equal toeq: equal tone: not equal to
Name filters only support the eq (default) and ne operators.
For date filters, the default operator is gte.
Examples:
GET /documents?filter[createdAt]=lt:2021-01-01
Fetch all documents that were created before January 1st 2021.
GET /compliance-profiles?filter[name]=ne:vendor
Fetch all compliance profiles that don’t include the string “vendor”.
Sorting
Sorting is done with sort=<key1>,<key2>. If a key is prefixed by - the sort direction is reversed. There are no defaults. Some collection endpoints have a fixed, non-customizable sorting.
Scoping
Some entities can present different attributes and data depending on the scope under which they’re viewed. For example, when a party is viewed in the scope of a project, it can have a different compliance profile and status.
Scoping is specified with scope[type] and scope[id]. Note that both parameters are required to be specified together.
Including related entities
For entities that have to-one or to-many relationships, it’s possible to include the full related entities in the response payload by specifying them in the include parameter (comma-separated)
Without specifying the inclusion, the only data returned are the type and id of the related entities:
GET /parties/1
{
"status": "success",
"data": {
"type": "parties",
"id": "1",
"name": "A party",
"projects": [
{
"type": "projects",
"id": "2"
},
{
"type": "projects",
"id": "3"
}
]
}
}
GET /parties/1?include=projects
{
"status": "success",
"data": {
"type": "parties",
"id": "1",
"name": "A party",
"projects": [
{
"type": "projects",
"id": "2",
"name": "Project A",
[other project fields...]
},
{
"type": "projects",
"id": "3"
"name: "Project B",
[other project fields...]
}
]
}
}
External IDs
Some entities (e.g. parties, projects) can be linked to one or more corresponding entities that live in integrated third-party systems (like Procore or Vista).
The entity payload includes an externalIds property which contains all the external IDs for that entity, keyed by the system’s identifier.
For example:
{
"externalIds": {
"procore": [
{ "id": "49304934" }
]
}
}
Since multiple instances of the same provider can be linked to the same TL account, an array is used to contain the IDs. When there are mutiple instances of the same provider,
an instance attribute is used to disambiguate the values:
{
"externalIds": {
"vista": [
{
"id": "44058945"
"instance": "ABX13"
},
{
"id": "694903"
"instance": "NJL90"
}
]
}
}
Parties
GET /parties
List parties
Available filters:
projectnametypestatuscreatedAtupdatedAtcustomFieldexternalIdactive
Available sort keys:
namecreatedAtupdatedAtstatus
Available include options:
projectsdocumentstagscomplianceProfilecustomFields
Pagination is enabled.
Notes:
- the
typefilter takes either the singular or plural version of the type (e.g. “Vendor”, “Vendors”) - valid values for the
statusfilter: “non_compliant”, “compliant”. - valid values for the
activefilter: “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
externalIdfilter must be in the format<provider name>/<external id>, e.g.procore/1234 - the value of the
customFieldfilter must be in the format<custom field id>;<field value>. The only supported operator iseq(exact match, case-sensitive).
/parties
Responses
200 OKContent-Type: application/json{"status":"string","data":[{"type":"string","id":"string","name":"string","address":"","status":"string","contacts":[{"type":"string","id":"string","name":"string","company":"string","email":"string","phone":"string","fax":"string","title":"string","primary":"boolean","defaultRequestRecipient":"boolean","avatar":"string","party":{"id":"string","type":"string"}
,"externalId":"string"}
],"website":"string","active":"boolean","notes":"string","complianceStatus":{"complianceProfile":{"id":"string","type":"string"}
,"nextExpirationDate":"string","latestExpirationDate":"string","modules":[{"id":"string","label":"string","status":"string","documents":[{"id":"string","origin":"string","complianceStatus":"string"}
],"documentsCount":"number","subjects":[{"id":"string","label":"string","status":"string","notes":"string","effectiveDate":"string","expirationDate":"string","latestExpirationDate":"string","latestValidEffectiveDate":"string","latestValidExpirationDate":"string","documents":[{"id":"string","origin":"string","complianceStatus":"string"}
],"documentsCount":"number","resetOn":"string","requirements":[{"id":"string","label":"string","moduleId":"string","moduleLabel":"string","subjectId":"string","subjectLabel":"string","attributeId":"string","attributeLabel":"string","attributeDescription":"string","matchingCriteria":"string","operator":"string","targetValue":"string","value":"string","status":"string","invalidatedBy":["string"],"notes":"string","publicNotes":"string","documents":[{"id":"string","origin":"string","complianceStatus":"string"}
],"documentsCount":"number","resetOn":"string","custom":"boolean"}
]}
]}
],"subjects":[{"id":"string","effectiveDate":"string","expirationDate":"string","latestValidEffectiveDate":"string","latestValidExpirationDate":"string","notes":"string","requirementsStatus":"string","resetRequirementsOn":"string"}
],"requirements":[{"id":"string","label":"string","operator":"string","targetValue":"string","actualValue":"string","status":"string","waiverOrOverrideNotes":"string","waiverOrOverrideExpirationDate":"string"}
],"status":"string","lastChangedAt":"string"}
,"projects":[{"id":"string","type":"string"}
],"projectStats":{"compliantProjectsCount":"number","totalProjectsCount":"number"}
,"documents":[{"id":"string","type":"string"}
],"partyType":{"id":"string","type":"string"}
,"tags":[{"type":"string","id":"string","addedAt":"string","addedBy":"string","expiresAt":"string"}
],"complianceProfile":{"id":"string","type":"string"}
,"customData":[{"value":"string","customField":{"id":"string","type":"string"}
}
],"deletedAt":"string","deletedBy":"","externalIds":{}
}
],"meta":{"count":"number","pages":"number","totalCount":"number","totalPages":"number"}
}
POST /parties
Create a new party
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.
/parties
Request Body
Content-Type: application/json{"party":{"name":"string","partyType":{"id":"string"}
,"website":"string","notes":"string","address":{"city":"string","country":"string","line1":"string","line2":"string","postalCode":"string","region":"string"}
,"complianceProfile":{"id":"string"}
,"customData":[{"customField":{"id":"string"}
,"value":"string"}
],"externalIds":["string"],"primaryContact":{"name":"string","email":"string","company":"string","phone":"string","fax":"string","title":"string","avatar":"string","defaultRequestRecipient":"boolean","externalId":"string"}
}
}
Responses
201 CreatedContent-Type: application/json{"status":"string","data":{"type":"string","id":"string","name":"string","address":"","status":"string","contacts":[{"type":"string","id":"string","name":"string","company":"string","email":"string","phone":"string","fax":"string","title":"string","primary":"boolean","defaultRequestRecipient":"boolean","avatar":"string","party":{"id":"string","type":"string"}
,"externalId":"string"}
],"website":"string","active":"boolean","notes":"string","complianceStatus":{"complianceProfile":{"id":"string","type":"string"}
,"nextExpirationDate":"string","latestExpirationDate":"string","modules":[{"id":"string","label":"string","status":"string","documents":[{"id":"string","origin":"string","complianceStatus":"string"}
],"documentsCount":"number","subjects":[{"id":"string","label":"string","status":"string","notes":"string","effectiveDate":"string","expirationDate":"string","latestExpirationDate":"string","latestValidEffectiveDate":"string","latestValidExpirationDate":"string","documents":[{"id":"string","origin":"string","complianceStatus":"string"}
],"documentsCount":"number","resetOn":"string","requirements":[{"id":"string","label":"string","moduleId":"string","moduleLabel":"string","subjectId":"string","subjectLabel":"string","attributeId":"string","attributeLabel":"string","attributeDescription":"string","matchingCriteria":"string","operator":"string","targetValue":"string","value":"string","status":"string","invalidatedBy":["string"],"notes":"string","publicNotes":"string","documents":[{"id":"string","origin":"string","complianceStatus":"string"}
],"documentsCount":"number","resetOn":"string","custom":"boolean"}
]}
]}
],"subjects":[{"id":"string","effectiveDate":"string","expirationDate":"string","latestValidEffectiveDate":"string","latestValidExpirationDate":"string","notes":"string","requirementsStatus":"string","resetRequirementsOn":"string"}
],"requirements":[{"id":"string","label":"string","operator":"string","targetValue":"string","actualValue":"string","status":"string","waiverOrOverrideNotes":"string","waiverOrOverrideExpirationDate":"string"}
],"status":"string","lastChangedAt":"string"}
,"projects":[{"id":"string","type":"string"}
],"projectStats":{"compliantProjectsCount":"number","totalProjectsCount":"number"}
,"documents":[{"id":"string","type":"string"}
],"partyType":{"id":"string","type":"string"}
,"tags":[{"type":"string","id":"string","addedAt":"string","addedBy":"string","expiresAt":"string"}
],"complianceProfile":{"id":"string","type":"string"}
,"customData":[{"value":"string","customField":{"id":"string","type":"string"}
}
],"deletedAt":"string","deletedBy":"","externalIds":{}
}
}
GET /parties/{partyId}
Fetch a party
Available include options:
projectsdocumentstagscomplianceProfilecustomFields
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.
/parties/{partyId}Responses
200 OKContent-Type: application/json{"status":"string","data":{"type":"string","id":"string","name":"string","address":"","status":"string","contacts":[{"type":"string","id":"string","name":"string","company":"string","email":"string","phone":"string","fax":"string","title":"string","primary":"boolean","defaultRequestRecipient":"boolean","avatar":"string","party":{"id":"string","type":"string"}
,"externalId":"string"}
],"website":"string","active":"boolean","notes":"string","complianceStatus":{"complianceProfile":{"id":"string","type":"string"}
,"nextExpirationDate":"string","latestExpirationDate":"string","modules":[{"id":"string","label":"string","status":"string","documents":[{"id":"string","origin":"string","complianceStatus":"string"}
],"documentsCount":"number","subjects":[{"id":"string","label":"string","status":"string","notes":"string","effectiveDate":"string","expirationDate":"string","latestExpirationDate":"string","latestValidEffectiveDate":"string","latestValidExpirationDate":"string","documents":[{"id":"string","origin":"string","complianceStatus":"string"}
],"documentsCount":"number","resetOn":"string","requirements":[{"id":"string","label":"string","moduleId":"string","moduleLabel":"string","subjectId":"string","subjectLabel":"string","attributeId":"string","attributeLabel":"string","attributeDescription":"string","matchingCriteria":"string","operator":"string","targetValue":"string","value":"string","status":"string","invalidatedBy":["string"],"notes":"string","publicNotes":"string","documents":[{"id":"string","origin":"string","complianceStatus":"string"}
],"documentsCount":"number","resetOn":"string","custom":"boolean"}
]}
]}
],"subjects":[{"id":"string","effectiveDate":"string","expirationDate":"string","latestValidEffectiveDate":"string","latestValidExpirationDate":"string","notes":"string","requirementsStatus":"string","resetRequirementsOn":"string"}
],"requirements":[{"id":"string","label":"string","operator":"string","targetValue":"string","actualValue":"string","status":"string","waiverOrOverrideNotes":"string","waiverOrOverrideExpirationDate":"string"}
],"status":"string","lastChangedAt":"string"}
,"projects":[{"id":"string","type":"string"}
],"projectStats":{"compliantProjectsCount":"number","totalProjectsCount":"number"}
,"documents":[{"id":"string","type":"string"}
],"partyType":{"id":"string","type":"string"}
,"tags":[{"type":"string","id":"string","addedAt":"string","addedBy":"string","expiresAt":"string"}
],"complianceProfile":{"id":"string","type":"string"}
,"customData":[{"value":"string","customField":{"id":"string","type":"string"}
}
],"deletedAt":"string","deletedBy":"","externalIds":{}
}
}
PATCH /parties/{partyId}
Update a party
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.
/parties/{partyId}Request Body
Content-Type: application/json{"party":{"name":"string","partyType":{"id":"string"}
,"website":"string","notes":"string","address":{"city":"string","country":"string","line1":"string","line2":"string","postalCode":"string","region":"string"}
,"active":"boolean","customData":[{"customField":{"id":"string"}
,"value":"string"}
],"complianceProfile":{"id":"string"}
}
}
Responses
200 OKContent-Type: application/json{"status":"string","data":{"type":"string","id":"string","name":"string","address":"","status":"string","contacts":[{"type":"string","id":"string","name":"string","company":"string","email":"string","phone":"string","fax":"string","title":"string","primary":"boolean","defaultRequestRecipient":"boolean","avatar":"string","party":{"id":"string","type":"string"}
,"externalId":"string"}
],"website":"string","active":"boolean","notes":"string","complianceStatus":{"complianceProfile":{"id":"string","type":"string"}
,"nextExpirationDate":"string","latestExpirationDate":"string","modules":[{"id":"string","label":"string","status":"string","documents":[{"id":"string","origin":"string","complianceStatus":"string"}
],"documentsCount":"number","subjects":[{"id":"string","label":"string","status":"string","notes":"string","effectiveDate":"string","expirationDate":"string","latestExpirationDate":"string","latestValidEffectiveDate":"string","latestValidExpirationDate":"string","documents":[{"id":"string","origin":"string","complianceStatus":"string"}
],"documentsCount":"number","resetOn":"string","requirements":[{"id":"string","label":"string","moduleId":"string","moduleLabel":"string","subjectId":"string","subjectLabel":"string","attributeId":"string","attributeLabel":"string","attributeDescription":"string","matchingCriteria":"string","operator":"string","targetValue":"string","value":"string","status":"string","invalidatedBy":["string"],"notes":"string","publicNotes":"string","documents":[{"id":"string","origin":"string","complianceStatus":"string"}
],"documentsCount":"number","resetOn":"string","custom":"boolean"}
]}
]}
],"subjects":[{"id":"string","effectiveDate":"string","expirationDate":"string","latestValidEffectiveDate":"string","latestValidExpirationDate":"string","notes":"string","requirementsStatus":"string","resetRequirementsOn":"string"}
],"requirements":[{"id":"string","label":"string","operator":"string","targetValue":"string","actualValue":"string","status":"string","waiverOrOverrideNotes":"string","waiverOrOverrideExpirationDate":"string"}
],"status":"string","lastChangedAt":"string"}
,"projects":[{"id":"string","type":"string"}
],"projectStats":{"compliantProjectsCount":"number","totalProjectsCount":"number"}
,"documents":[{"id":"string","type":"string"}
],"partyType":{"id":"string","type":"string"}
,"tags":[{"type":"string","id":"string","addedAt":"string","addedBy":"string","expiresAt":"string"}
],"complianceProfile":{"id":"string","type":"string"}
,"customData":[{"value":"string","customField":{"id":"string","type":"string"}
}
],"deletedAt":"string","deletedBy":"","externalIds":{}
}
}
DELETE /parties/{partyId}
Delete a party
TBD
/parties/{partyId}Responses
200 OKContent-Type: application/json{"status":"string","data":{"type":"string","id":"string","name":"string","address":"","status":"string","contacts":[{"type":"string","id":"string","name":"string","company":"string","email":"string","phone":"string","fax":"string","title":"string","primary":"boolean","defaultRequestRecipient":"boolean","avatar":"string","party":{"id":"string","type":"string"}
,"externalId":"string"}
],"website":"string","active":"boolean","notes":"string","complianceStatus":{"complianceProfile":{"id":"string","type":"string"}
,"nextExpirationDate":"string","latestExpirationDate":"string","modules":[{"id":"string","label":"string","status":"string","documents":[{"id":"string","origin":"string","complianceStatus":"string"}
],"documentsCount":"number","subjects":[{"id":"string","label":"string","status":"string","notes":"string","effectiveDate":"string","expirationDate":"string","latestExpirationDate":"string","latestValidEffectiveDate":"string","latestValidExpirationDate":"string","documents":[{"id":"string","origin":"string","complianceStatus":"string"}
],"documentsCount":"number","resetOn":"string","requirements":[{"id":"string","label":"string","moduleId":"string","moduleLabel":"string","subjectId":"string","subjectLabel":"string","attributeId":"string","attributeLabel":"string","attributeDescription":"string","matchingCriteria":"string","operator":"string","targetValue":"string","value":"string","status":"string","invalidatedBy":["string"],"notes":"string","publicNotes":"string","documents":[{"id":"string","origin":"string","complianceStatus":"string"}
],"documentsCount":"number","resetOn":"string","custom":"boolean"}
]}
]}
],"subjects":[{"id":"string","effectiveDate":"string","expirationDate":"string","latestValidEffectiveDate":"string","latestValidExpirationDate":"string","notes":"string","requirementsStatus":"string","resetRequirementsOn":"string"}
],"requirements":[{"id":"string","label":"string","operator":"string","targetValue":"string","actualValue":"string","status":"string","waiverOrOverrideNotes":"string","waiverOrOverrideExpirationDate":"string"}
],"status":"string","lastChangedAt":"string"}
,"projects":[{"id":"string","type":"string"}
],"projectStats":{"compliantProjectsCount":"number","totalProjectsCount":"number"}
,"documents":[{"id":"string","type":"string"}
],"partyType":{"id":"string","type":"string"}
,"tags":[{"type":"string","id":"string","addedAt":"string","addedBy":"string","expiresAt":"string"}
],"complianceProfile":{"id":"string","type":"string"}
,"customData":[{"value":"string","customField":{"id":"string","type":"string"}
}
],"deletedAt":"string","deletedBy":"","externalIds":{}
}
}
POST /parties/{partyId}/contacts
Create a party contact
nameis required.- setting the
primaryflag totruewill unset it from the current primary contact.
/parties/{partyId}/contactsRequest Body
Content-Type: application/json{"contact":{"name":"string","email":"string","company":"string","phone":"string","fax":"string","title":"string","avatar":"string","primary":"boolean","defaultRequestRecipient":"boolean","externalId":"string"}
}
Responses
201 CreatedContent-Type: application/json{"status":"string","data":{"type":"string","id":"string","name":"string","address":"","status":"string","contacts":[{"type":"string","id":"string","name":"string","company":"string","email":"string","phone":"string","fax":"string","title":"string","primary":"boolean","defaultRequestRecipient":"boolean","avatar":"string","party":{"id":"string","type":"string"}
,"externalId":"string"}
],"website":"string","active":"boolean","notes":"string","complianceStatus":{"complianceProfile":{"id":"string","type":"string"}
,"nextExpirationDate":"string","latestExpirationDate":"string","modules":[{"id":"string","label":"string","status":"string","documents":[{"id":"string","origin":"string","complianceStatus":"string"}
],"documentsCount":"number","subjects":[{"id":"string","label":"string","status":"string","notes":"string","effectiveDate":"string","expirationDate":"string","latestExpirationDate":"string","latestValidEffectiveDate":"string","latestValidExpirationDate":"string","documents":[{"id":"string","origin":"string","complianceStatus":"string"}
],"documentsCount":"number","resetOn":"string","requirements":[{"id":"string","label":"string","moduleId":"string","moduleLabel":"string","subjectId":"string","subjectLabel":"string","attributeId":"string","attributeLabel":"string","attributeDescription":"string","matchingCriteria":"string","operator":"string","targetValue":"string","value":"string","status":"string","invalidatedBy":["string"],"notes":"string","publicNotes":"string","documents":[{"id":"string","origin":"string","complianceStatus":"string"}
],"documentsCount":"number","resetOn":"string","custom":"boolean"}
]}
]}
],"subjects":[{"id":"string","effectiveDate":"string","expirationDate":"string","latestValidEffectiveDate":"string","latestValidExpirationDate":"string","notes":"string","requirementsStatus":"string","resetRequirementsOn":"string"}
],"requirements":[{"id":"string","label":"string","operator":"string","targetValue":"string","actualValue":"string","status":"string","waiverOrOverrideNotes":"string","waiverOrOverrideExpirationDate":"string"}
],"status":"string","lastChangedAt":"string"}
,"projects":[{"id":"string","type":"string"}
],"projectStats":{"compliantProjectsCount":"number","totalProjectsCount":"number"}
,"documents":[{"id":"string","type":"string"}
],"partyType":{"id":"string","type":"string"}
,"tags":[{"type":"string","id":"string","addedAt":"string","addedBy":"string","expiresAt":"string"}
],"complianceProfile":{"id":"string","type":"string"}
,"customData":[{"value":"string","customField":{"id":"string","type":"string"}
}
],"deletedAt":"string","deletedBy":"","externalIds":{}
}
}
GET /parties/{partyId}/contacts
List a party's contacts
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.
/parties/{partyId}/contactsResponses
200 OKContent-Type: application/json{"status":"string","data":[{"type":"string","id":"string","name":"string","company":"string","email":"string","phone":"string","fax":"string","title":"string","primary":"boolean","defaultRequestRecipient":"boolean","avatar":"string","party":{"id":"string","type":"string"}
,"externalId":"string"}
],"meta":{"count":"number","pages":"number","totalCount":"number","totalPages":"number"}
}
POST /parties/{partyId}/compliance-certificate
Create a party compliance certificate
- if
effectiveDateis not provided, it will default to the current moment - if
expirationDateis 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
documentis provided (only for multipart/form-data), it will be uploaded to the party and used as the compliance certificate
Available scope options:
projects
/parties/{partyId}/compliance-certificateRequest Body
Content-Type: application/json{"complianceCertificate":{"effectiveDate":"string","expirationDate":"string","subjects":[{"id":"string","effectiveDate":"string","expirationDate":"string"} ]} }Content-Type: multipart/form-data{"type"=>"object", "properties"=>nil, "effectiveDate"=>{"type"=>"string", "format"=>"date-time"}, "expirationDate"=>{"type"=>"string", "format"=>"date-time"}, "document"=>{"type"=>"string", "format"=>"binary"}}
Responses
201 CreatedContent-Type: application/json{"status":"string","data":{"type":"string","id":"string","issuedBy":{"name":"string","address":"string","contactName":"string","phone":"string","email":"string"}
,"reviewedAt":"string","archivedAt":"string","notes":"string","status":"string","types":[{"id":"string","type":"string"}
],"flag":{"addedOn":"string","severityLevel":"string","affectedSubjects":["string"],"notes":"string","user":{"id":"string","type":"string"}
}
,"appliesToAllProjects":"boolean","expirationDate":"string","name":"string","data":{}
,"metadata":{}
,"updatedAt":"string","createdAt":"string","archivedBy":{"id":"string","type":"string"}
,"reviewedBy":{"id":"string","type":"string"}
,"url":"string","insurers":[{"id":"string","naic":"string","rating":"string","ratingEffectiveDate":"string","financialSizeCategory":"string","ratingModifier":"string","ratingAction":"string","ratingImplication":"string","extractedName":"string","canonicalName":"string"}
],"deletedAt":"string","deletedBy":{"id":"string","type":"string"}
,"issueDate":"string"}
}
GET /parties/{partyId}/compliance-certificate
Fetch a party's compliance certificate
Returns the currently valid compliance certificate for a party, if it exists; otherwise it responds with a 404 status.
Available scope options:
projects
/parties/{partyId}/compliance-certificateResponses
200 OKContent-Type: application/json{"status":"string","data":{"type":"string","id":"string","issuedBy":{"name":"string","address":"string","contactName":"string","phone":"string","email":"string"}
,"reviewedAt":"string","archivedAt":"string","notes":"string","status":"string","types":[{"id":"string","type":"string"}
],"flag":{"addedOn":"string","severityLevel":"string","affectedSubjects":["string"],"notes":"string","user":{"id":"string","type":"string"}
}
,"appliesToAllProjects":"boolean","expirationDate":"string","name":"string","data":{}
,"metadata":{}
,"updatedAt":"string","createdAt":"string","archivedBy":{"id":"string","type":"string"}
,"reviewedBy":{"id":"string","type":"string"}
,"url":"string","insurers":[{"id":"string","naic":"string","rating":"string","ratingEffectiveDate":"string","financialSizeCategory":"string","ratingModifier":"string","ratingAction":"string","ratingImplication":"string","extractedName":"string","canonicalName":"string"}
],"deletedAt":"string","deletedBy":{"id":"string","type":"string"}
,"issueDate":"string"}
}
POST /parties/{partyId}/relationships/documents
Attach documents to a party
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.
/parties/{partyId}/relationships/documentsRequest Body
Content-Type: application/json{"documents":[{"id":"string"}
]}
Responses
201 CreatedContent-Type: application/json{"status":"string","data":{"type":"string","id":"string","name":"string","address":"","status":"string","contacts":[{"type":"string","id":"string","name":"string","company":"string","email":"string","phone":"string","fax":"string","title":"string","primary":"boolean","defaultRequestRecipient":"boolean","avatar":"string","party":{"id":"string","type":"string"}
,"externalId":"string"}
],"website":"string","active":"boolean","notes":"string","complianceStatus":{"complianceProfile":{"id":"string","type":"string"}
,"nextExpirationDate":"string","latestExpirationDate":"string","modules":[{"id":"string","label":"string","status":"string","documents":[{"id":"string","origin":"string","complianceStatus":"string"}
],"documentsCount":"number","subjects":[{"id":"string","label":"string","status":"string","notes":"string","effectiveDate":"string","expirationDate":"string","latestExpirationDate":"string","latestValidEffectiveDate":"string","latestValidExpirationDate":"string","documents":[{"id":"string","origin":"string","complianceStatus":"string"}
],"documentsCount":"number","resetOn":"string","requirements":[{"id":"string","label":"string","moduleId":"string","moduleLabel":"string","subjectId":"string","subjectLabel":"string","attributeId":"string","attributeLabel":"string","attributeDescription":"string","matchingCriteria":"string","operator":"string","targetValue":"string","value":"string","status":"string","invalidatedBy":["string"],"notes":"string","publicNotes":"string","documents":[{"id":"string","origin":"string","complianceStatus":"string"}
],"documentsCount":"number","resetOn":"string","custom":"boolean"}
]}
]}
],"subjects":[{"id":"string","effectiveDate":"string","expirationDate":"string","latestValidEffectiveDate":"string","latestValidExpirationDate":"string","notes":"string","requirementsStatus":"string","resetRequirementsOn":"string"}
],"requirements":[{"id":"string","label":"string","operator":"string","targetValue":"string","actualValue":"string","status":"string","waiverOrOverrideNotes":"string","waiverOrOverrideExpirationDate":"string"}
],"status":"string","lastChangedAt":"string"}
,"projects":[{"id":"string","type":"string"}
],"projectStats":{"compliantProjectsCount":"number","totalProjectsCount":"number"}
,"documents":[{"id":"string","type":"string"}
],"partyType":{"id":"string","type":"string"}
,"tags":[{"type":"string","id":"string","addedAt":"string","addedBy":"string","expiresAt":"string"}
],"complianceProfile":{"id":"string","type":"string"}
,"customData":[{"value":"string","customField":{"id":"string","type":"string"}
}
],"deletedAt":"string","deletedBy":"","externalIds":{}
}
}
DELETE /parties/{partyId}/relationships/documents
Detach a document from a party
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.
/parties/{partyId}/relationships/documentsRequest Body
Content-Type: application/json{"documents":[{"id":"string"}
]}
Responses
200 OKContent-Type: application/json{"status":"string","data":{"type":"string","id":"string","name":"string","address":"","status":"string","contacts":[{"type":"string","id":"string","name":"string","company":"string","email":"string","phone":"string","fax":"string","title":"string","primary":"boolean","defaultRequestRecipient":"boolean","avatar":"string","party":{"id":"string","type":"string"}
,"externalId":"string"}
],"website":"string","active":"boolean","notes":"string","complianceStatus":{"complianceProfile":{"id":"string","type":"string"}
,"nextExpirationDate":"string","latestExpirationDate":"string","modules":[{"id":"string","label":"string","status":"string","documents":[{"id":"string","origin":"string","complianceStatus":"string"}
],"documentsCount":"number","subjects":[{"id":"string","label":"string","status":"string","notes":"string","effectiveDate":"string","expirationDate":"string","latestExpirationDate":"string","latestValidEffectiveDate":"string","latestValidExpirationDate":"string","documents":[{"id":"string","origin":"string","complianceStatus":"string"}
],"documentsCount":"number","resetOn":"string","requirements":[{"id":"string","label":"string","moduleId":"string","moduleLabel":"string","subjectId":"string","subjectLabel":"string","attributeId":"string","attributeLabel":"string","attributeDescription":"string","matchingCriteria":"string","operator":"string","targetValue":"string","value":"string","status":"string","invalidatedBy":["string"],"notes":"string","publicNotes":"string","documents":[{"id":"string","origin":"string","complianceStatus":"string"}
],"documentsCount":"number","resetOn":"string","custom":"boolean"}
]}
]}
],"subjects":[{"id":"string","effectiveDate":"string","expirationDate":"string","latestValidEffectiveDate":"string","latestValidExpirationDate":"string","notes":"string","requirementsStatus":"string","resetRequirementsOn":"string"}
],"requirements":[{"id":"string","label":"string","operator":"string","targetValue":"string","actualValue":"string","status":"string","waiverOrOverrideNotes":"string","waiverOrOverrideExpirationDate":"string"}
],"status":"string","lastChangedAt":"string"}
,"projects":[{"id":"string","type":"string"}
],"projectStats":{"compliantProjectsCount":"number","totalProjectsCount":"number"}
,"documents":[{"id":"string","type":"string"}
],"partyType":{"id":"string","type":"string"}
,"tags":[{"type":"string","id":"string","addedAt":"string","addedBy":"string","expiresAt":"string"}
],"complianceProfile":{"id":"string","type":"string"}
,"customData":[{"value":"string","customField":{"id":"string","type":"string"}
}
],"deletedAt":"string","deletedBy":"","externalIds":{}
}
}
POST /parties/{partyId}/documents
Upload a document to a party
This will simultaneusly upload a document and attach it to the party.
/parties/{partyId}/documentsRequest Body
Content-Type: multipart/form-data{"type"=>"object", "properties"=>{"document"=>{"type"=>"string", "format"=>"binary"}, "documentType"=>{"type"=>"string", "x-stoplight"=>{"id"=>"8w8io4y2eiiha"}, "description"=>"Document type name or ID"}}, "required"=>["document"]}Responses
201 CreatedContent-Type: application/json{"status":"string","data":{"type":"string","id":"string","issuedBy":{"name":"string","address":"string","contactName":"string","phone":"string","email":"string"}
,"reviewedAt":"string","archivedAt":"string","notes":"string","status":"string","types":[{"id":"string","type":"string"}
],"flag":{"addedOn":"string","severityLevel":"string","affectedSubjects":["string"],"notes":"string","user":{"id":"string","type":"string"}
}
,"appliesToAllProjects":"boolean","expirationDate":"string","name":"string","data":{}
,"metadata":{}
,"updatedAt":"string","createdAt":"string","archivedBy":{"id":"string","type":"string"}
,"reviewedBy":{"id":"string","type":"string"}
,"url":"string","insurers":[{"id":"string","naic":"string","rating":"string","ratingEffectiveDate":"string","financialSizeCategory":"string","ratingModifier":"string","ratingAction":"string","ratingImplication":"string","extractedName":"string","canonicalName":"string"}
],"deletedAt":"string","deletedBy":{"id":"string","type":"string"}
,"issueDate":"string"}
}
POST /parties/{partyId}/relationships/tags
Tag a party
Add one or more tags to a party. If an expiration date is passed, it will be applied to all the tags.
/parties/{partyId}/relationships/tagsRequest Body
Content-Type: application/json{"tags":[{"id":"string"}
],"expiresAt":"string"}
Responses
201 CreatedContent-Type: application/json{"status":"string","data":{"type":"string","id":"string","name":"string","address":"","status":"string","contacts":[{"type":"string","id":"string","name":"string","company":"string","email":"string","phone":"string","fax":"string","title":"string","primary":"boolean","defaultRequestRecipient":"boolean","avatar":"string","party":{"id":"string","type":"string"}
,"externalId":"string"}
],"website":"string","active":"boolean","notes":"string","complianceStatus":{"complianceProfile":{"id":"string","type":"string"}
,"nextExpirationDate":"string","latestExpirationDate":"string","modules":[{"id":"string","label":"string","status":"string","documents":[{"id":"string","origin":"string","complianceStatus":"string"}
],"documentsCount":"number","subjects":[{"id":"string","label":"string","status":"string","notes":"string","effectiveDate":"string","expirationDate":"string","latestExpirationDate":"string","latestValidEffectiveDate":"string","latestValidExpirationDate":"string","documents":[{"id":"string","origin":"string","complianceStatus":"string"}
],"documentsCount":"number","resetOn":"string","requirements":[{"id":"string","label":"string","moduleId":"string","moduleLabel":"string","subjectId":"string","subjectLabel":"string","attributeId":"string","attributeLabel":"string","attributeDescription":"string","matchingCriteria":"string","operator":"string","targetValue":"string","value":"string","status":"string","invalidatedBy":["string"],"notes":"string","publicNotes":"string","documents":[{"id":"string","origin":"string","complianceStatus":"string"}
],"documentsCount":"number","resetOn":"string","custom":"boolean"}
]}
]}
],"subjects":[{"id":"string","effectiveDate":"string","expirationDate":"string","latestValidEffectiveDate":"string","latestValidExpirationDate":"string","notes":"string","requirementsStatus":"string","resetRequirementsOn":"string"}
],"requirements":[{"id":"string","label":"string","operator":"string","targetValue":"string","actualValue":"string","status":"string","waiverOrOverrideNotes":"string","waiverOrOverrideExpirationDate":"string"}
],"status":"string","lastChangedAt":"string"}
,"projects":[{"id":"string","type":"string"}
],"projectStats":{"compliantProjectsCount":"number","totalProjectsCount":"number"}
,"documents":[{"id":"string","type":"string"}
],"partyType":{"id":"string","type":"string"}
,"tags":[{"type":"string","id":"string","addedAt":"string","addedBy":"string","expiresAt":"string"}
],"complianceProfile":{"id":"string","type":"string"}
,"customData":[{"value":"string","customField":{"id":"string","type":"string"}
}
],"deletedAt":"string","deletedBy":"","externalIds":{}
}
}
DELETE /parties/{partyId}/relationships/tags
Remove one or more tags from a party.
/parties/{partyId}/relationships/tagsRequest Body
Content-Type: application/json{"tags":[{"id":"string"}
]}
Responses
200 OKContent-Type: application/json{"status":"string","data":{"type":"string","id":"string","name":"string","address":"","status":"string","contacts":[{"type":"string","id":"string","name":"string","company":"string","email":"string","phone":"string","fax":"string","title":"string","primary":"boolean","defaultRequestRecipient":"boolean","avatar":"string","party":{"id":"string","type":"string"}
,"externalId":"string"}
],"website":"string","active":"boolean","notes":"string","complianceStatus":{"complianceProfile":{"id":"string","type":"string"}
,"nextExpirationDate":"string","latestExpirationDate":"string","modules":[{"id":"string","label":"string","status":"string","documents":[{"id":"string","origin":"string","complianceStatus":"string"}
],"documentsCount":"number","subjects":[{"id":"string","label":"string","status":"string","notes":"string","effectiveDate":"string","expirationDate":"string","latestExpirationDate":"string","latestValidEffectiveDate":"string","latestValidExpirationDate":"string","documents":[{"id":"string","origin":"string","complianceStatus":"string"}
],"documentsCount":"number","resetOn":"string","requirements":[{"id":"string","label":"string","moduleId":"string","moduleLabel":"string","subjectId":"string","subjectLabel":"string","attributeId":"string","attributeLabel":"string","attributeDescription":"string","matchingCriteria":"string","operator":"string","targetValue":"string","value":"string","status":"string","invalidatedBy":["string"],"notes":"string","publicNotes":"string","documents":[{"id":"string","origin":"string","complianceStatus":"string"}
],"documentsCount":"number","resetOn":"string","custom":"boolean"}
]}
]}
],"subjects":[{"id":"string","effectiveDate":"string","expirationDate":"string","latestValidEffectiveDate":"string","latestValidExpirationDate":"string","notes":"string","requirementsStatus":"string","resetRequirementsOn":"string"}
],"requirements":[{"id":"string","label":"string","operator":"string","targetValue":"string","actualValue":"string","status":"string","waiverOrOverrideNotes":"string","waiverOrOverrideExpirationDate":"string"}
],"status":"string","lastChangedAt":"string"}
,"projects":[{"id":"string","type":"string"}
],"projectStats":{"compliantProjectsCount":"number","totalProjectsCount":"number"}
,"documents":[{"id":"string","type":"string"}
],"partyType":{"id":"string","type":"string"}
,"tags":[{"type":"string","id":"string","addedAt":"string","addedBy":"string","expiresAt":"string"}
],"complianceProfile":{"id":"string","type":"string"}
,"customData":[{"value":"string","customField":{"id":"string","type":"string"}
}
],"deletedAt":"string","deletedBy":"","externalIds":{}
}
}
DELETE /parties/{partyId}/relationships/documents/{documentId}
Remove a document from a party
If you need to remove multiple documents at once you can use the alternative endpoint DELETE /parties/{partyId}/relationships/documents
/parties/{partyId}/relationships/documents/{documentId}Responses
200 OKContent-Type: application/json{"status":"string","data":{"type":"string","id":"string","name":"string","address":"","status":"string","contacts":[{"type":"string","id":"string","name":"string","company":"string","email":"string","phone":"string","fax":"string","title":"string","primary":"boolean","defaultRequestRecipient":"boolean","avatar":"string","party":{"id":"string","type":"string"}
,"externalId":"string"}
],"website":"string","active":"boolean","notes":"string","complianceStatus":{"complianceProfile":{"id":"string","type":"string"}
,"nextExpirationDate":"string","latestExpirationDate":"string","modules":[{"id":"string","label":"string","status":"string","documents":[{"id":"string","origin":"string","complianceStatus":"string"}
],"documentsCount":"number","subjects":[{"id":"string","label":"string","status":"string","notes":"string","effectiveDate":"string","expirationDate":"string","latestExpirationDate":"string","latestValidEffectiveDate":"string","latestValidExpirationDate":"string","documents":[{"id":"string","origin":"string","complianceStatus":"string"}
],"documentsCount":"number","resetOn":"string","requirements":[{"id":"string","label":"string","moduleId":"string","moduleLabel":"string","subjectId":"string","subjectLabel":"string","attributeId":"string","attributeLabel":"string","attributeDescription":"string","matchingCriteria":"string","operator":"string","targetValue":"string","value":"string","status":"string","invalidatedBy":["string"],"notes":"string","publicNotes":"string","documents":[{"id":"string","origin":"string","complianceStatus":"string"}
],"documentsCount":"number","resetOn":"string","custom":"boolean"}
]}
]}
],"subjects":[{"id":"string","effectiveDate":"string","expirationDate":"string","latestValidEffectiveDate":"string","latestValidExpirationDate":"string","notes":"string","requirementsStatus":"string","resetRequirementsOn":"string"}
],"requirements":[{"id":"string","label":"string","operator":"string","targetValue":"string","actualValue":"string","status":"string","waiverOrOverrideNotes":"string","waiverOrOverrideExpirationDate":"string"}
],"status":"string","lastChangedAt":"string"}
,"projects":[{"id":"string","type":"string"}
],"projectStats":{"compliantProjectsCount":"number","totalProjectsCount":"number"}
,"documents":[{"id":"string","type":"string"}
],"partyType":{"id":"string","type":"string"}
,"tags":[{"type":"string","id":"string","addedAt":"string","addedBy":"string","expiresAt":"string"}
],"complianceProfile":{"id":"string","type":"string"}
,"customData":[{"value":"string","customField":{"id":"string","type":"string"}
}
],"deletedAt":"string","deletedBy":"","externalIds":{}
}
}
DELETE /parties/{partyId}/relationships/tags/{tagId}
Remove a tag from a party
If you need to remove multiple tags at once you can use the alternative endpoint DELETE /parties/{partyId}/relationships/tags
/parties/{partyId}/relationships/tags/{tagId}Responses
200 OKContent-Type: application/json{"status":"string","data":{"type":"string","id":"string","name":"string","address":"","status":"string","contacts":[{"type":"string","id":"string","name":"string","company":"string","email":"string","phone":"string","fax":"string","title":"string","primary":"boolean","defaultRequestRecipient":"boolean","avatar":"string","party":{"id":"string","type":"string"}
,"externalId":"string"}
],"website":"string","active":"boolean","notes":"string","complianceStatus":{"complianceProfile":{"id":"string","type":"string"}
,"nextExpirationDate":"string","latestExpirationDate":"string","modules":[{"id":"string","label":"string","status":"string","documents":[{"id":"string","origin":"string","complianceStatus":"string"}
],"documentsCount":"number","subjects":[{"id":"string","label":"string","status":"string","notes":"string","effectiveDate":"string","expirationDate":"string","latestExpirationDate":"string","latestValidEffectiveDate":"string","latestValidExpirationDate":"string","documents":[{"id":"string","origin":"string","complianceStatus":"string"}
],"documentsCount":"number","resetOn":"string","requirements":[{"id":"string","label":"string","moduleId":"string","moduleLabel":"string","subjectId":"string","subjectLabel":"string","attributeId":"string","attributeLabel":"string","attributeDescription":"string","matchingCriteria":"string","operator":"string","targetValue":"string","value":"string","status":"string","invalidatedBy":["string"],"notes":"string","publicNotes":"string","documents":[{"id":"string","origin":"string","complianceStatus":"string"}
],"documentsCount":"number","resetOn":"string","custom":"boolean"}
]}
]}
],"subjects":[{"id":"string","effectiveDate":"string","expirationDate":"string","latestValidEffectiveDate":"string","latestValidExpirationDate":"string","notes":"string","requirementsStatus":"string","resetRequirementsOn":"string"}
],"requirements":[{"id":"string","label":"string","operator":"string","targetValue":"string","actualValue":"string","status":"string","waiverOrOverrideNotes":"string","waiverOrOverrideExpirationDate":"string"}
],"status":"string","lastChangedAt":"string"}
,"projects":[{"id":"string","type":"string"}
],"projectStats":{"compliantProjectsCount":"number","totalProjectsCount":"number"}
,"documents":[{"id":"string","type":"string"}
],"partyType":{"id":"string","type":"string"}
,"tags":[{"type":"string","id":"string","addedAt":"string","addedBy":"string","expiresAt":"string"}
],"complianceProfile":{"id":"string","type":"string"}
,"customData":[{"value":"string","customField":{"id":"string","type":"string"}
}
],"deletedAt":"string","deletedBy":"","externalIds":{}
}
}
GET /parties/{partyId}/document-request
Fetch the current document request
This will return the latest document request sent for the party.
Available include options:
party
/parties/{partyId}/document-requestRequest Body
Content-Type: application/json{"status":"string","data":{}
}
Responses
200 OKContent-Type: application/json{"status":"string","data":{"id":"string","type":"string","party":{"id":"string","type":"string"}
,"message":"string","sentOn":"string","dueDate":"string","forwardedAt":"string","forwardedTo":"string"}
}
POST /parties/{partyId}/document-request
Send a new document request
If a request already exists for this party, this will send a reminder.
/parties/{partyId}/document-requestRequest Body
Content-Type: application/json{"request":{"recipients":[{"id":"string"}
],"dueDate":"string","message":"string","sentBy":{"id":"string"}
}
}
Responses
201 CreatedContent-Type: application/json{"status":"string","data":{"id":"string","type":"string","party":{"id":"string","type":"string"}
,"message":"string","sentOn":"string","dueDate":"string","forwardedAt":"string","forwardedTo":"string"}
}
GET /parties/{partyId}/compliance-profile
Fetch a party's compliance profile
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.
/parties/{partyId}/compliance-profileResponses
200 OKContent-Type: application/json{"status":"string","data":{"id":"string","type":"string","name":"string","rules":[{"moduleId":"string","moduleLabel":"string","subjectId":"string","subjectLabel":"string","attributeId":"string","attributeLabel":"string","attributeType":"string","attributeDescription":"string","masterDocumentAttributeId":"string","operator":"string","targetValue":"string"}
],"context":"string","documentChecklists":[{"attributeId":"string","attributeLabel":"string","active":"boolean"}
]}
}
POST /parties/{partyId}/compliance-profile
Assign compliance profile to a party
This operation will assign an existing compliance profile to a party. Unless the scope parameters are specified, the profile will be applied at the global level. To assign at the project level, include scope[type]=projects and scope[id]={projectId} to the query string.
/parties/{partyId}/compliance-profileRequest Body
Content-Type: application/json{"complianceProfile":{"id":"string"}
}
Responses
200 OKPATCH /parties/{partyId}/custom-data
Update party custom data
Add, remove or update party custom fields.
To remove a field, set its value to null.
A project scope can be specified; in that case the changes will be made only to the project specific values.
/parties/{partyId}/custom-dataRequest Body
Content-Type: application/json{"customData":[{"customField":{"id":"string"}
,"value":"stringnumber"}
]}
Responses
200 OKContent-Type: application/json{"type":"string","id":"string","name":"string","address":"","status":"string","contacts":[{"type":"string","id":"string","name":"string","company":"string","email":"string","phone":"string","fax":"string","title":"string","primary":"boolean","defaultRequestRecipient":"boolean","avatar":"string","party":{"id":"string","type":"string"}
,"externalId":"string"}
],"website":"string","active":"boolean","notes":"string","complianceStatus":{"complianceProfile":{"id":"string","type":"string"}
,"nextExpirationDate":"string","latestExpirationDate":"string","modules":[{"id":"string","label":"string","status":"string","documents":[{"id":"string","origin":"string","complianceStatus":"string"}
],"documentsCount":"number","subjects":[{"id":"string","label":"string","status":"string","notes":"string","effectiveDate":"string","expirationDate":"string","latestExpirationDate":"string","latestValidEffectiveDate":"string","latestValidExpirationDate":"string","documents":[{"id":"string","origin":"string","complianceStatus":"string"}
],"documentsCount":"number","resetOn":"string","requirements":[{"id":"string","label":"string","moduleId":"string","moduleLabel":"string","subjectId":"string","subjectLabel":"string","attributeId":"string","attributeLabel":"string","attributeDescription":"string","matchingCriteria":"string","operator":"string","targetValue":"string","value":"string","status":"string","invalidatedBy":["string"],"notes":"string","publicNotes":"string","documents":[{"id":"string","origin":"string","complianceStatus":"string"}
],"documentsCount":"number","resetOn":"string","custom":"boolean"}
]}
]}
],"subjects":[{"id":"string","effectiveDate":"string","expirationDate":"string","latestValidEffectiveDate":"string","latestValidExpirationDate":"string","notes":"string","requirementsStatus":"string","resetRequirementsOn":"string"}
],"requirements":[{"id":"string","label":"string","operator":"string","targetValue":"string","actualValue":"string","status":"string","waiverOrOverrideNotes":"string","waiverOrOverrideExpirationDate":"string"}
],"status":"string","lastChangedAt":"string"}
,"projects":[{"id":"string","type":"string"}
],"projectStats":{"compliantProjectsCount":"number","totalProjectsCount":"number"}
,"documents":[{"id":"string","type":"string"}
],"partyType":{"id":"string","type":"string"}
,"tags":[{"type":"string","id":"string","addedAt":"string","addedBy":"string","expiresAt":"string"}
],"complianceProfile":{"id":"string","type":"string"}
,"customData":[{"value":"string","customField":{"id":"string","type":"string"}
}
],"deletedAt":"string","deletedBy":"","externalIds":{}
}
PUT /parties/{partyId}/external-ids
Update party external IDs
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.
/parties/{partyId}/external-idsRequest Body
Content-Type: application/json["string"]Content-Type: application/xml{"type"=>"object", "properties"=>{"externalIds"=>{"type"=>"array", "x-stoplight"=>{"id"=>"ttvioxricz1ci"}, "items"=>{"x-stoplight"=>{"id"=>"38k8raaok2122"}, "type"=>"string"}}}}
Responses
200 OKContent-Type: application/json{"status":"string","data":{"type":"string","id":"string","name":"string","address":"","status":"string","contacts":[{"type":"string","id":"string","name":"string","company":"string","email":"string","phone":"string","fax":"string","title":"string","primary":"boolean","defaultRequestRecipient":"boolean","avatar":"string","party":{"id":"string","type":"string"}
,"externalId":"string"}
],"website":"string","active":"boolean","notes":"string","complianceStatus":{"complianceProfile":{"id":"string","type":"string"}
,"nextExpirationDate":"string","latestExpirationDate":"string","modules":[{"id":"string","label":"string","status":"string","documents":[{"id":"string","origin":"string","complianceStatus":"string"}
],"documentsCount":"number","subjects":[{"id":"string","label":"string","status":"string","notes":"string","effectiveDate":"string","expirationDate":"string","latestExpirationDate":"string","latestValidEffectiveDate":"string","latestValidExpirationDate":"string","documents":[{"id":"string","origin":"string","complianceStatus":"string"}
],"documentsCount":"number","resetOn":"string","requirements":[{"id":"string","label":"string","moduleId":"string","moduleLabel":"string","subjectId":"string","subjectLabel":"string","attributeId":"string","attributeLabel":"string","attributeDescription":"string","matchingCriteria":"string","operator":"string","targetValue":"string","value":"string","status":"string","invalidatedBy":["string"],"notes":"string","publicNotes":"string","documents":[{"id":"string","origin":"string","complianceStatus":"string"}
],"documentsCount":"number","resetOn":"string","custom":"boolean"}
]}
]}
],"subjects":[{"id":"string","effectiveDate":"string","expirationDate":"string","latestValidEffectiveDate":"string","latestValidExpirationDate":"string","notes":"string","requirementsStatus":"string","resetRequirementsOn":"string"}
],"requirements":[{"id":"string","label":"string","operator":"string","targetValue":"string","actualValue":"string","status":"string","waiverOrOverrideNotes":"string","waiverOrOverrideExpirationDate":"string"}
],"status":"string","lastChangedAt":"string"}
,"projects":[{"id":"string","type":"string"}
],"projectStats":{"compliantProjectsCount":"number","totalProjectsCount":"number"}
,"documents":[{"id":"string","type":"string"}
],"partyType":{"id":"string","type":"string"}
,"tags":[{"type":"string","id":"string","addedAt":"string","addedBy":"string","expiresAt":"string"}
],"complianceProfile":{"id":"string","type":"string"}
,"customData":[{"value":"string","customField":{"id":"string","type":"string"}
}
],"deletedAt":"string","deletedBy":"","externalIds":{}
}
}
POST /parties/{id}/waive-requirement
Waive or override a requirement
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.
/parties/{id}/waive-requirementRequest Body
Content-Type: application/json{"attributeId":"string","override":"boolean","notes":"string","resetRequirementOn":"string","applyToAllProjects":"boolean"}
Responses
201 CreatedContent-Type: application/json{"status":"string","party":{"type":"string","id":"string","name":"string","address":"","status":"string","contacts":[{"type":"string","id":"string","name":"string","company":"string","email":"string","phone":"string","fax":"string","title":"string","primary":"boolean","defaultRequestRecipient":"boolean","avatar":"string","party":{"id":"string","type":"string"}
,"externalId":"string"}
],"website":"string","active":"boolean","notes":"string","complianceStatus":{"complianceProfile":{"id":"string","type":"string"}
,"nextExpirationDate":"string","latestExpirationDate":"string","modules":[{"id":"string","label":"string","status":"string","documents":[{"id":"string","origin":"string","complianceStatus":"string"}
],"documentsCount":"number","subjects":[{"id":"string","label":"string","status":"string","notes":"string","effectiveDate":"string","expirationDate":"string","latestExpirationDate":"string","latestValidEffectiveDate":"string","latestValidExpirationDate":"string","documents":[{"id":"string","origin":"string","complianceStatus":"string"}
],"documentsCount":"number","resetOn":"string","requirements":[{"id":"string","label":"string","moduleId":"string","moduleLabel":"string","subjectId":"string","subjectLabel":"string","attributeId":"string","attributeLabel":"string","attributeDescription":"string","matchingCriteria":"string","operator":"string","targetValue":"string","value":"string","status":"string","invalidatedBy":["string"],"notes":"string","publicNotes":"string","documents":[{"id":"string","origin":"string","complianceStatus":"string"}
],"documentsCount":"number","resetOn":"string","custom":"boolean"}
]}
]}
],"subjects":[{"id":"string","effectiveDate":"string","expirationDate":"string","latestValidEffectiveDate":"string","latestValidExpirationDate":"string","notes":"string","requirementsStatus":"string","resetRequirementsOn":"string"}
],"requirements":[{"id":"string","label":"string","operator":"string","targetValue":"string","actualValue":"string","status":"string","waiverOrOverrideNotes":"string","waiverOrOverrideExpirationDate":"string"}
],"status":"string","lastChangedAt":"string"}
,"projects":[{"id":"string","type":"string"}
],"projectStats":{"compliantProjectsCount":"number","totalProjectsCount":"number"}
,"documents":[{"id":"string","type":"string"}
],"partyType":{"id":"string","type":"string"}
,"tags":[{"type":"string","id":"string","addedAt":"string","addedBy":"string","expiresAt":"string"}
],"complianceProfile":{"id":"string","type":"string"}
,"customData":[{"value":"string","customField":{"id":"string","type":"string"}
}
],"deletedAt":"string","deletedBy":"","externalIds":{}
}
}
POST /parties/{id}/waive-subject
Waive or override a subject
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.
/parties/{id}/waive-subjectRequest Body
Content-Type: application/json{"subjectId":"string","override":"boolean","notes":"string","resetSubjectOn":"string","applyToAllProjects":"boolean"}
Responses
201 CreatedContent-Type: application/json{"status":"string","party":{"type":"string","id":"string","name":"string","address":"","status":"string","contacts":[{"type":"string","id":"string","name":"string","company":"string","email":"string","phone":"string","fax":"string","title":"string","primary":"boolean","defaultRequestRecipient":"boolean","avatar":"string","party":{"id":"string","type":"string"}
,"externalId":"string"}
],"website":"string","active":"boolean","notes":"string","complianceStatus":{"complianceProfile":{"id":"string","type":"string"}
,"nextExpirationDate":"string","latestExpirationDate":"string","modules":[{"id":"string","label":"string","status":"string","documents":[{"id":"string","origin":"string","complianceStatus":"string"}
],"documentsCount":"number","subjects":[{"id":"string","label":"string","status":"string","notes":"string","effectiveDate":"string","expirationDate":"string","latestExpirationDate":"string","latestValidEffectiveDate":"string","latestValidExpirationDate":"string","documents":[{"id":"string","origin":"string","complianceStatus":"string"}
],"documentsCount":"number","resetOn":"string","requirements":[{"id":"string","label":"string","moduleId":"string","moduleLabel":"string","subjectId":"string","subjectLabel":"string","attributeId":"string","attributeLabel":"string","attributeDescription":"string","matchingCriteria":"string","operator":"string","targetValue":"string","value":"string","status":"string","invalidatedBy":["string"],"notes":"string","publicNotes":"string","documents":[{"id":"string","origin":"string","complianceStatus":"string"}
],"documentsCount":"number","resetOn":"string","custom":"boolean"}
]}
]}
],"subjects":[{"id":"string","effectiveDate":"string","expirationDate":"string","latestValidEffectiveDate":"string","latestValidExpirationDate":"string","notes":"string","requirementsStatus":"string","resetRequirementsOn":"string"}
],"requirements":[{"id":"string","label":"string","operator":"string","targetValue":"string","actualValue":"string","status":"string","waiverOrOverrideNotes":"string","waiverOrOverrideExpirationDate":"string"}
],"status":"string","lastChangedAt":"string"}
,"projects":[{"id":"string","type":"string"}
],"projectStats":{"compliantProjectsCount":"number","totalProjectsCount":"number"}
,"documents":[{"id":"string","type":"string"}
],"partyType":{"id":"string","type":"string"}
,"tags":[{"type":"string","id":"string","addedAt":"string","addedBy":"string","expiresAt":"string"}
],"complianceProfile":{"id":"string","type":"string"}
,"customData":[{"value":"string","customField":{"id":"string","type":"string"}
}
],"deletedAt":"string","deletedBy":"","externalIds":{}
}
}
Content-Type: application/json{"status":"string","data":{"type":"string","id":"string","name":"string","address":"","status":"string","contacts":[{"type":"string","id":"string","name":"string","company":"string","email":"string","phone":"string","fax":"string","title":"string","primary":"boolean","defaultRequestRecipient":"boolean","avatar":"string","party":{"id":"string","type":"string"}
,"externalId":"string"}
],"website":"string","active":"boolean","notes":"string","complianceStatus":{"complianceProfile":{"id":"string","type":"string"}
,"nextExpirationDate":"string","latestExpirationDate":"string","modules":[{"id":"string","label":"string","status":"string","documents":[{"id":"string","origin":"string","complianceStatus":"string"}
],"documentsCount":"number","subjects":[{"id":"string","label":"string","status":"string","notes":"string","effectiveDate":"string","expirationDate":"string","latestExpirationDate":"string","latestValidEffectiveDate":"string","latestValidExpirationDate":"string","documents":[{"id":"string","origin":"string","complianceStatus":"string"}
],"documentsCount":"number","resetOn":"string","requirements":[{"id":"string","label":"string","moduleId":"string","moduleLabel":"string","subjectId":"string","subjectLabel":"string","attributeId":"string","attributeLabel":"string","attributeDescription":"string","matchingCriteria":"string","operator":"string","targetValue":"string","value":"string","status":"string","invalidatedBy":["string"],"notes":"string","publicNotes":"string","documents":[{"id":"string","origin":"string","complianceStatus":"string"}
],"documentsCount":"number","resetOn":"string","custom":"boolean"}
]}
]}
],"subjects":[{"id":"string","effectiveDate":"string","expirationDate":"string","latestValidEffectiveDate":"string","latestValidExpirationDate":"string","notes":"string","requirementsStatus":"string","resetRequirementsOn":"string"}
],"requirements":[{"id":"string","label":"string","operator":"string","targetValue":"string","actualValue":"string","status":"string","waiverOrOverrideNotes":"string","waiverOrOverrideExpirationDate":"string"}
],"status":"string","lastChangedAt":"string"}
,"projects":[{"id":"string","type":"string"}
],"projectStats":{"compliantProjectsCount":"number","totalProjectsCount":"number"}
,"documents":[{"id":"string","type":"string"}
],"partyType":{"id":"string","type":"string"}
,"tags":[{"type":"string","id":"string","addedAt":"string","addedBy":"string","expiresAt":"string"}
],"complianceProfile":{"id":"string","type":"string"}
,"customData":[{"value":"string","customField":{"id":"string","type":"string"}
}
],"deletedAt":"string","deletedBy":"","externalIds":{}
}
}
POST /parties/{partyId}/comments
Post a comment on a party's timeline
/parties/{partyId}/commentsRequest Body
Content-Type: application/json{"message":"string"}
Responses
200 OKContent-Type: application/json{"status":"string","data":{"id":"string","message":"string","userId":"string","userName":"string","userEmail":"string","createdAt":"string"}
}
Contacts
GET /contacts/{contactId}
Fetch a party contact's information
Available include options:
- party
/contacts/{contactId}Responses
200 OKContent-Type: application/json{"status":"string","data":{"type":"string","id":"string","name":"string","company":"string","email":"string","phone":"string","fax":"string","title":"string","primary":"boolean","defaultRequestRecipient":"boolean","avatar":"string","party":{"id":"string","type":"string"}
,"externalId":"string"}
}
PATCH /contacts/{contactId}
Update a party contact's information
Update a contact with the given data.
- setting the
primaryflag totruewill remove it from the other contacts. - setting the
primaryflag tofalseon the current primary contact will return a400response, since a primary contact must always exist. - if given,
namemust be non-blank
/contacts/{contactId}Request Body
Content-Type: application/json{"contact":{"name":"string","email":"string","phone":"string","fax":"string","company":"string","title":"string","avatar":"string","primary":"boolean","defaultRequestRecipient":"boolean","externalId":"string"}
}
Responses
200 OKContent-Type: application/json{"status":"string","data":{"type":"string","id":"string","name":"string","company":"string","email":"string","phone":"string","fax":"string","title":"string","primary":"boolean","defaultRequestRecipient":"boolean","avatar":"string","party":{"id":"string","type":"string"}
,"externalId":"string"}
}
DELETE /contacts/{contactId}
Remove contact information from a party
This will return a 400 response if you try to remove the primary contact.
/contacts/{contactId}Responses
200 OKContent-Type: application/json{"status":"string","data":{"type":"string","id":"string","name":"string","company":"string","email":"string","phone":"string","fax":"string","title":"string","primary":"boolean","defaultRequestRecipient":"boolean","avatar":"string","party":{"id":"string","type":"string"}
,"externalId":"string"}
}
Documents
GET /documents
List documents
Available filters:
namepartyprojecttypearchivedreviewedcreatedAtupdatedAtreviewedAtarchivedAtexpirationDate
Available sort keys:
namecreatedAtupdatedAtarchivedAtreviewedAtexpirationDate
Available include options:
partyprojectsreviewedByarchivedBytypes
Pagination is enabled.
/documents
Responses
200 OKContent-Type: application/json{"status":"string","data":[{"type":"string","id":"string","issuedBy":{"name":"string","address":"string","contactName":"string","phone":"string","email":"string"}
,"reviewedAt":"string","archivedAt":"string","notes":"string","status":"string","types":[{"id":"string","type":"string"}
],"flag":{"addedOn":"string","severityLevel":"string","affectedSubjects":["string"],"notes":"string","user":{"id":"string","type":"string"}
}
,"appliesToAllProjects":"boolean","expirationDate":"string","name":"string","data":{}
,"metadata":{}
,"updatedAt":"string","createdAt":"string","archivedBy":{"id":"string","type":"string"}
,"reviewedBy":{"id":"string","type":"string"}
,"url":"string","insurers":[{"id":"string","naic":"string","rating":"string","ratingEffectiveDate":"string","financialSizeCategory":"string","ratingModifier":"string","ratingAction":"string","ratingImplication":"string","extractedName":"string","canonicalName":"string"}
],"deletedAt":"string","deletedBy":{"id":"string","type":"string"}
,"issueDate":"string"}
],"meta":{"count":"number","pages":"number","totalCount":"number","totalPages":"number"}
}
POST /documents
Upload a document
This endpoint accepts a multipart/form-data payload containing a single document parameter.
The returned document will be queued for processing.
Optionally, a documentType parameter can be specified, containing either the exact name of an existing document type, or its ID.
/documents
Request Body
Content-Type: multipart/form-data{"type"=>"object", "properties"=>{"document"=>{"type"=>"string", "format"=>"binary"}, "documentType"=>{"type"=>"string", "x-stoplight"=>{"id"=>"5m0jog13c31x8"}, "description"=>"Document type name or ID"}}, "required"=>["document"]}Responses
201 CreatedContent-Type: application/json{"status":"string","data":{"type":"string","id":"string","issuedBy":{"name":"string","address":"string","contactName":"string","phone":"string","email":"string"}
,"reviewedAt":"string","archivedAt":"string","notes":"string","status":"string","types":[{"id":"string","type":"string"}
],"flag":{"addedOn":"string","severityLevel":"string","affectedSubjects":["string"],"notes":"string","user":{"id":"string","type":"string"}
}
,"appliesToAllProjects":"boolean","expirationDate":"string","name":"string","data":{}
,"metadata":{}
,"updatedAt":"string","createdAt":"string","archivedBy":{"id":"string","type":"string"}
,"reviewedBy":{"id":"string","type":"string"}
,"url":"string","insurers":[{"id":"string","naic":"string","rating":"string","ratingEffectiveDate":"string","financialSizeCategory":"string","ratingModifier":"string","ratingAction":"string","ratingImplication":"string","extractedName":"string","canonicalName":"string"}
],"deletedAt":"string","deletedBy":{"id":"string","type":"string"}
,"issueDate":"string"}
}
GET /documents/{documentId}
Fetch a document
Available include options:
partyprojectstypesarchivedByreviewedBy
Notes:
- the uploaded file is accessible via the
urlattribute; the URL will expire in 24 hours.
/documents/{documentId}Responses
200 OKContent-Type: application/json{"status":"string","data":{"type":"string","id":"string","issuedBy":{"name":"string","address":"string","contactName":"string","phone":"string","email":"string"}
,"reviewedAt":"string","archivedAt":"string","notes":"string","status":"string","types":[{"id":"string","type":"string"}
],"flag":{"addedOn":"string","severityLevel":"string","affectedSubjects":["string"],"notes":"string","user":{"id":"string","type":"string"}
}
,"appliesToAllProjects":"boolean","expirationDate":"string","name":"string","data":{}
,"metadata":{}
,"updatedAt":"string","createdAt":"string","archivedBy":{"id":"string","type":"string"}
,"reviewedBy":{"id":"string","type":"string"}
,"url":"string","insurers":[{"id":"string","naic":"string","rating":"string","ratingEffectiveDate":"string","financialSizeCategory":"string","ratingModifier":"string","ratingAction":"string","ratingImplication":"string","extractedName":"string","canonicalName":"string"}
],"deletedAt":"string","deletedBy":{"id":"string","type":"string"}
,"issueDate":"string"}
}
PATCH /documents/{documentId}
Update a document
- Updating a document’s data will trigger a recalc of the compliance status for all affected parties.
- You can specify a project scope; the party the document is attached to must belong to the project
Requirements: the document must belong to a party.
/documents/{documentId}Request Body
Content-Type: application/json{"document":{"name":"string","notes":"string","appliesToAllProjects":"boolean","issuedBy":{"name":"string","address":"string","contactName":"string","phone":"string","email":"string"}
,"data":{}
,"metadata":{}
}
}
Responses
200 OKContent-Type: application/json{"status":"string","data":{"type":"string","id":"string","issuedBy":{"name":"string","address":"string","contactName":"string","phone":"string","email":"string"}
,"reviewedAt":"string","archivedAt":"string","notes":"string","status":"string","types":[{"id":"string","type":"string"}
],"flag":{"addedOn":"string","severityLevel":"string","affectedSubjects":["string"],"notes":"string","user":{"id":"string","type":"string"}
}
,"appliesToAllProjects":"boolean","expirationDate":"string","name":"string","data":{}
,"metadata":{}
,"updatedAt":"string","createdAt":"string","archivedBy":{"id":"string","type":"string"}
,"reviewedBy":{"id":"string","type":"string"}
,"url":"string","insurers":[{"id":"string","naic":"string","rating":"string","ratingEffectiveDate":"string","financialSizeCategory":"string","ratingModifier":"string","ratingAction":"string","ratingImplication":"string","extractedName":"string","canonicalName":"string"}
],"deletedAt":"string","deletedBy":{"id":"string","type":"string"}
,"issueDate":"string"}
}
DELETE /documents/{documentId}
Delete a document
TBD
/documents/{documentId}Responses
200 OKContent-Type: application/json{"status":"string","data":{"type":"string","id":"string","issuedBy":{"name":"string","address":"string","contactName":"string","phone":"string","email":"string"}
,"reviewedAt":"string","archivedAt":"string","notes":"string","status":"string","types":[{"id":"string","type":"string"}
],"flag":{"addedOn":"string","severityLevel":"string","affectedSubjects":["string"],"notes":"string","user":{"id":"string","type":"string"}
}
,"appliesToAllProjects":"boolean","expirationDate":"string","name":"string","data":{}
,"metadata":{}
,"updatedAt":"string","createdAt":"string","archivedBy":{"id":"string","type":"string"}
,"reviewedBy":{"id":"string","type":"string"}
,"url":"string","insurers":[{"id":"string","naic":"string","rating":"string","ratingEffectiveDate":"string","financialSizeCategory":"string","ratingModifier":"string","ratingAction":"string","ratingImplication":"string","extractedName":"string","canonicalName":"string"}
],"deletedAt":"string","deletedBy":{"id":"string","type":"string"}
,"issueDate":"string"}
}
DELETE /documents/{documentId}/review
Remove the review from a document
Mark the document as not reviewed. This will remove all the information about the current review status of the document.
Requirements: the document must belong to a party.
/documents/{documentId}/reviewResponses
200 OKContent-Type: application/json{"status":"string","data":{"type":"string","id":"string","issuedBy":{"name":"string","address":"string","contactName":"string","phone":"string","email":"string"}
,"reviewedAt":"string","archivedAt":"string","notes":"string","status":"string","types":[{"id":"string","type":"string"}
],"flag":{"addedOn":"string","severityLevel":"string","affectedSubjects":["string"],"notes":"string","user":{"id":"string","type":"string"}
}
,"appliesToAllProjects":"boolean","expirationDate":"string","name":"string","data":{}
,"metadata":{}
,"updatedAt":"string","createdAt":"string","archivedBy":{"id":"string","type":"string"}
,"reviewedBy":{"id":"string","type":"string"}
,"url":"string","insurers":[{"id":"string","naic":"string","rating":"string","ratingEffectiveDate":"string","financialSizeCategory":"string","ratingModifier":"string","ratingAction":"string","ratingImplication":"string","extractedName":"string","canonicalName":"string"}
],"deletedAt":"string","deletedBy":{"id":"string","type":"string"}
,"issueDate":"string"}
}
POST /documents/{documentId}/review
Review a document
Mark the document as reviewed by the given user. If the document has already been reviewed, no change will be made.
Requirements: the document must belong to a party.
/documents/{documentId}/reviewResponses
201 CreatedContent-Type: application/json{"status":"string","data":{"type":"string","id":"string","issuedBy":{"name":"string","address":"string","contactName":"string","phone":"string","email":"string"}
,"reviewedAt":"string","archivedAt":"string","notes":"string","status":"string","types":[{"id":"string","type":"string"}
],"flag":{"addedOn":"string","severityLevel":"string","affectedSubjects":["string"],"notes":"string","user":{"id":"string","type":"string"}
}
,"appliesToAllProjects":"boolean","expirationDate":"string","name":"string","data":{}
,"metadata":{}
,"updatedAt":"string","createdAt":"string","archivedBy":{"id":"string","type":"string"}
,"reviewedBy":{"id":"string","type":"string"}
,"url":"string","insurers":[{"id":"string","naic":"string","rating":"string","ratingEffectiveDate":"string","financialSizeCategory":"string","ratingModifier":"string","ratingAction":"string","ratingImplication":"string","extractedName":"string","canonicalName":"string"}
],"deletedAt":"string","deletedBy":{"id":"string","type":"string"}
,"issueDate":"string"}
}
DELETE /documents/{documentId}/archive
Un-archive a document
Mark the document as not archived.
/documents/{documentId}/archiveResponses
200 OKContent-Type: application/json{"status":"string","data":{"type":"string","id":"string","issuedBy":{"name":"string","address":"string","contactName":"string","phone":"string","email":"string"}
,"reviewedAt":"string","archivedAt":"string","notes":"string","status":"string","types":[{"id":"string","type":"string"}
],"flag":{"addedOn":"string","severityLevel":"string","affectedSubjects":["string"],"notes":"string","user":{"id":"string","type":"string"}
}
,"appliesToAllProjects":"boolean","expirationDate":"string","name":"string","data":{}
,"metadata":{}
,"updatedAt":"string","createdAt":"string","archivedBy":{"id":"string","type":"string"}
,"reviewedBy":{"id":"string","type":"string"}
,"url":"string","insurers":[{"id":"string","naic":"string","rating":"string","ratingEffectiveDate":"string","financialSizeCategory":"string","ratingModifier":"string","ratingAction":"string","ratingImplication":"string","extractedName":"string","canonicalName":"string"}
],"deletedAt":"string","deletedBy":{"id":"string","type":"string"}
,"issueDate":"string"}
}
POST /documents/{documentId}/archive
Archive a document
Mark the document as archived.
/documents/{documentId}/archiveResponses
201 CreatedContent-Type: application/json{"status":"string","data":{"type":"string","id":"string","issuedBy":{"name":"string","address":"string","contactName":"string","phone":"string","email":"string"}
,"reviewedAt":"string","archivedAt":"string","notes":"string","status":"string","types":[{"id":"string","type":"string"}
],"flag":{"addedOn":"string","severityLevel":"string","affectedSubjects":["string"],"notes":"string","user":{"id":"string","type":"string"}
}
,"appliesToAllProjects":"boolean","expirationDate":"string","name":"string","data":{}
,"metadata":{}
,"updatedAt":"string","createdAt":"string","archivedBy":{"id":"string","type":"string"}
,"reviewedBy":{"id":"string","type":"string"}
,"url":"string","insurers":[{"id":"string","naic":"string","rating":"string","ratingEffectiveDate":"string","financialSizeCategory":"string","ratingModifier":"string","ratingAction":"string","ratingImplication":"string","extractedName":"string","canonicalName":"string"}
],"deletedAt":"string","deletedBy":{"id":"string","type":"string"}
,"issueDate":"string"}
}
POST /documents/{documentId}/reprocess
Reprocess a document
Send the document to the extraction pipeline. The results will overwite the document’s current data.
/documents/{documentId}/reprocessResponses
201 CreatedContent-Type: application/json{"status":"string","data":{"type":"string","id":"string","issuedBy":{"name":"string","address":"string","contactName":"string","phone":"string","email":"string"}
,"reviewedAt":"string","archivedAt":"string","notes":"string","status":"string","types":[{"id":"string","type":"string"}
],"flag":{"addedOn":"string","severityLevel":"string","affectedSubjects":["string"],"notes":"string","user":{"id":"string","type":"string"}
}
,"appliesToAllProjects":"boolean","expirationDate":"string","name":"string","data":{}
,"metadata":{}
,"updatedAt":"string","createdAt":"string","archivedBy":{"id":"string","type":"string"}
,"reviewedBy":{"id":"string","type":"string"}
,"url":"string","insurers":[{"id":"string","naic":"string","rating":"string","ratingEffectiveDate":"string","financialSizeCategory":"string","ratingModifier":"string","ratingAction":"string","ratingImplication":"string","extractedName":"string","canonicalName":"string"}
],"deletedAt":"string","deletedBy":{"id":"string","type":"string"}
,"issueDate":"string"}
}
DELETE /documents/{documentId}/flag
Remove the flag from a document
Remove the existing flag data from a document (if any).
If the document belongs to a party, you can specify an additional project scope (the party must belong to the project). This will be used to log the event in the activity timeline.
Requirements: the document must belong to a party.
/documents/{documentId}/flagResponses
200 OKContent-Type: application/json{"status":"string","data":{"type":"string","id":"string","issuedBy":{"name":"string","address":"string","contactName":"string","phone":"string","email":"string"}
,"reviewedAt":"string","archivedAt":"string","notes":"string","status":"string","types":[{"id":"string","type":"string"}
],"flag":{"addedOn":"string","severityLevel":"string","affectedSubjects":["string"],"notes":"string","user":{"id":"string","type":"string"}
}
,"appliesToAllProjects":"boolean","expirationDate":"string","name":"string","data":{}
,"metadata":{}
,"updatedAt":"string","createdAt":"string","archivedBy":{"id":"string","type":"string"}
,"reviewedBy":{"id":"string","type":"string"}
,"url":"string","insurers":[{"id":"string","naic":"string","rating":"string","ratingEffectiveDate":"string","financialSizeCategory":"string","ratingModifier":"string","ratingAction":"string","ratingImplication":"string","extractedName":"string","canonicalName":"string"}
],"deletedAt":"string","deletedBy":{"id":"string","type":"string"}
,"issueDate":"string"}
}
POST /documents/{documentId}/flag
Flag a document or update the existing flag info
A document can have at most one flag. If a document is already flagged, existing data will be replaced.
addedOnwill default to the current time if left blankseverityLevelanduser.idare the only required parameters
If the document belongs to a party, you can specify an additional project scope (the party must belong to the project). This will be used to log the event in the activity timeline.
Requirements: the document must belong to a party.
/documents/{documentId}/flagRequest Body
Content-Type: application/json{"flag":{"addedOn":"string","level":"string","subjects":["string"],"notes":"string"}
}
Responses
201 CreatedContent-Type: application/json{"status":"string","data":{"type":"string","id":"string","issuedBy":{"name":"string","address":"string","contactName":"string","phone":"string","email":"string"}
,"reviewedAt":"string","archivedAt":"string","notes":"string","status":"string","types":[{"id":"string","type":"string"}
],"flag":{"addedOn":"string","severityLevel":"string","affectedSubjects":["string"],"notes":"string","user":{"id":"string","type":"string"}
}
,"appliesToAllProjects":"boolean","expirationDate":"string","name":"string","data":{}
,"metadata":{}
,"updatedAt":"string","createdAt":"string","archivedBy":{"id":"string","type":"string"}
,"reviewedBy":{"id":"string","type":"string"}
,"url":"string","insurers":[{"id":"string","naic":"string","rating":"string","ratingEffectiveDate":"string","financialSizeCategory":"string","ratingModifier":"string","ratingAction":"string","ratingImplication":"string","extractedName":"string","canonicalName":"string"}
],"deletedAt":"string","deletedBy":{"id":"string","type":"string"}
,"issueDate":"string"}
}
POST /documents/{documentId}/relationships/projects
Associate a document to multiple projects
TBD
/documents/{documentId}/relationships/projectsRequest Body
Content-Type: application/json{"projects":[{"id":"string"}
]}
Responses
200 OKContent-Type: application/json{"status":"string","data":{"type":"string","id":"string","issuedBy":{"name":"string","address":"string","contactName":"string","phone":"string","email":"string"}
,"reviewedAt":"string","archivedAt":"string","notes":"string","status":"string","types":[{"id":"string","type":"string"}
],"flag":{"addedOn":"string","severityLevel":"string","affectedSubjects":["string"],"notes":"string","user":{"id":"string","type":"string"}
}
,"appliesToAllProjects":"boolean","expirationDate":"string","name":"string","data":{}
,"metadata":{}
,"updatedAt":"string","createdAt":"string","archivedBy":{"id":"string","type":"string"}
,"reviewedBy":{"id":"string","type":"string"}
,"url":"string","insurers":[{"id":"string","naic":"string","rating":"string","ratingEffectiveDate":"string","financialSizeCategory":"string","ratingModifier":"string","ratingAction":"string","ratingImplication":"string","extractedName":"string","canonicalName":"string"}
],"deletedAt":"string","deletedBy":{"id":"string","type":"string"}
,"issueDate":"string"}
}
Projects
GET /projects
List projects
Available filters:
namestatus(“compliant”, “non_compliant”, others?)activecreatedAtupdatedAtstartDateendDatecustomFieldexternalIdactive
Available sort keys:
namecreatedAtupdatedAtstartDateendDate
Available include options:
partiescustomFields
Notes:
- the value of the
externalIdfilter must be in the format<provider name>/<external id>, e.g.procore/1234 - the value of the
customFieldfilter must be in the format<custom field id>/<field value>. The only supported operator iseq.
/projects
Responses
200 OKContent-Type: application/json{"status":"string","data":[{"type":"string","id":"string","name":"string","description":"string","startDate":"string","endDate":"string","active":"boolean","parties":[{"id":"string","type":"string"}
],"customData":[{"value":"string","customField":{"id":"string","type":"string"}
}
],"complianceStatus":{"status":"string","compliantPartiesCount":"number","totalPartiesCount":"number","complianceScore":"number"}
,"deletedAt":"string","deletedBy":"","externalIds":{}
}
],"meta":{"count":"number","pages":"number","totalCount":"number","totalPages":"number"}
}
POST /projects
Create a new project
The only required attribute is name.
/projects
Request Body
Content-Type: application/json{"project":{"name":"string","description":"string","startDate":"string","endDate":"string","customData":[{"customField":{"id":"string"}
,"value":"string"}
],"externalIds":["string"]}
}
Responses
201 CreatedContent-Type: application/json{"status":"string","data":{"type":"string","id":"string","name":"string","description":"string","startDate":"string","endDate":"string","active":"boolean","parties":[{"id":"string","type":"string"}
],"customData":[{"value":"string","customField":{"id":"string","type":"string"}
}
],"complianceStatus":{"status":"string","compliantPartiesCount":"number","totalPartiesCount":"number","complianceScore":"number"}
,"deletedAt":"string","deletedBy":"","externalIds":{}
}
}
GET /projects/{projectId}
Fetch a project
Available include options:
partiescustomFields
/projects/{projectId}Responses
200 OKContent-Type: application/json{"status":"string","data":{"type":"string","id":"string","name":"string","description":"string","startDate":"string","endDate":"string","active":"boolean","parties":[{"id":"string","type":"string"}
],"customData":[{"value":"string","customField":{"id":"string","type":"string"}
}
],"complianceStatus":{"status":"string","compliantPartiesCount":"number","totalPartiesCount":"number","complianceScore":"number"}
,"deletedAt":"string","deletedBy":"","externalIds":{}
}
}
PATCH /projects/{projectId}
Update a custom field
Note
- required attributes (
nameandfieldType) must always be specified - at the moment it’s not possible to specify custom requirementsand checklists.
/projects/{projectId}Request Body
Content-Type: application/json{"project":{"name":"string","description":"string","startDate":"string","endDate":"string","active":"boolean","customData":[{"customField":{"id":"string"}
,"value":"string"}
]}
}
Responses
200 OKContent-Type: application/json{"status":"string","data":{"id":"string","type":"string","name":"string","description ":"string","color":"string","fieldType":"string","options":[{"key":"string","value":"string"}
],"complianceProfile":{"id":"string","type":"string"}
,"associatedEntities":["string"]}
}
DELETE /projects/{projectId}
Delete a project
Soft-deletes a project
/projects/{projectId}Responses
200 OKContent-Type: application/json{"status":"string","data":{"type":"string","id":"string","name":"string","description":"string","startDate":"string","endDate":"string","active":"boolean","parties":[{"id":"string","type":"string"}
],"customData":[{"value":"string","customField":{"id":"string","type":"string"}
}
],"complianceStatus":{"status":"string","compliantPartiesCount":"number","totalPartiesCount":"number","complianceScore":"number"}
,"deletedAt":"string","deletedBy":"","externalIds":{}
}
}
POST /projects/{projectId}/relationships/parties
Add parties to a project
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.
/projects/{projectId}/relationships/partiesRequest Body
Content-Type: application/json{"parties":[{"id":"string"}
]}
Responses
201 CreatedContent-Type: application/json{"status":"string","data":{"type":"string","id":"string","name":"string","description":"string","startDate":"string","endDate":"string","active":"boolean","parties":[{"id":"string","type":"string"}
],"customData":[{"value":"string","customField":{"id":"string","type":"string"}
}
],"complianceStatus":{"status":"string","compliantPartiesCount":"number","totalPartiesCount":"number","complianceScore":"number"}
,"deletedAt":"string","deletedBy":"","externalIds":{}
}
}
DELETE /projects/{projectId}/relationships/parties
Remove a party from a project
All parties must exist, otherwise a 404 response will be returned and no party will be removed.
/projects/{projectId}/relationships/partiesRequest Body
Content-Type: application/json{"parties":[{"id":"string"}
]}
Responses
200 OKContent-Type: application/json{"status":"string","data":{"type":"string","id":"string","name":"string","description":"string","startDate":"string","endDate":"string","active":"boolean","parties":[{"id":"string","type":"string"}
],"customData":[{"value":"string","customField":{"id":"string","type":"string"}
}
],"complianceStatus":{"status":"string","compliantPartiesCount":"number","totalPartiesCount":"number","complianceScore":"number"}
,"deletedAt":"string","deletedBy":"","externalIds":{}
}
}
POST /projects/{projectId}/relationships/documents
Attach documents to a project
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.
/projects/{projectId}/relationships/documentsRequest Body
Content-Type: application/json{"documents":[{"id":"string"}
]}
Responses
201 CreatedContent-Type: application/json{"status":"string","data":{"type":"string","id":"string","name":"string","description":"string","startDate":"string","endDate":"string","active":"boolean","parties":[{"id":"string","type":"string"}
],"customData":[{"value":"string","customField":{"id":"string","type":"string"}
}
],"complianceStatus":{"status":"string","compliantPartiesCount":"number","totalPartiesCount":"number","complianceScore":"number"}
,"deletedAt":"string","deletedBy":"","externalIds":{}
}
}
DELETE /projects/{projectId}/relationships/documents
Detach documents from a project
All documents must exist, otherwise a 404 response will be returned and no document will be detached.
/projects/{projectId}/relationships/documentsRequest Body
Content-Type: application/json{"documents":[{"id":"string"}
]}
Responses
200 OKContent-Type: application/json{"status":"string","data":{"type":"string","id":"string","name":"string","description":"string","startDate":"string","endDate":"string","active":"boolean","parties":[{"id":"string","type":"string"}
],"customData":[{"value":"string","customField":{"id":"string","type":"string"}
}
],"complianceStatus":{"status":"string","compliantPartiesCount":"number","totalPartiesCount":"number","complianceScore":"number"}
,"deletedAt":"string","deletedBy":"","externalIds":{}
}
}
DELETE /projects/{projectId}/relationships/documents/{documentId}
Remove a document from a project
If you need to remove multiple documents at once you can use the alternative endpoint DELETE /projects/{projectId}/relationships/documents
/projects/{projectId}/relationships/documents/{documentId}Responses
200 OKContent-Type: application/json{"status":"string","data":{"type":"string","id":"string","name":"string","description":"string","startDate":"string","endDate":"string","active":"boolean","parties":[{"id":"string","type":"string"}
],"customData":[{"value":"string","customField":{"id":"string","type":"string"}
}
],"complianceStatus":{"status":"string","compliantPartiesCount":"number","totalPartiesCount":"number","complianceScore":"number"}
,"deletedAt":"string","deletedBy":"","externalIds":{}
}
}
DELETE /projects/{projectId}/relationships/parties/{partyId}
Remove a party from a project
If you need to remove multiple parties at once you can use the alternative endpoint DELETE /projects/{projectId}/relationships/parties
/projects/{projectId}/relationships/parties/{partyId}Responses
200 OKContent-Type: application/json{"status":"string","data":{"type":"string","id":"string","name":"string","description":"string","startDate":"string","endDate":"string","active":"boolean","parties":[{"id":"string","type":"string"}
],"customData":[{"value":"string","customField":{"id":"string","type":"string"}
}
],"complianceStatus":{"status":"string","compliantPartiesCount":"number","totalPartiesCount":"number","complianceScore":"number"}
,"deletedAt":"string","deletedBy":"","externalIds":{}
}
}
PUT /projects/{id}/external-ids
Update project external IDs
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.
/projects/{id}/external-idsRequest Body
Content-Type: application/json{"externalIds":["string"]}
Responses
200 OKContent-Type: application/json{"status":"string","data":{"type":"string","id":"string","name":"string","description":"string","startDate":"string","endDate":"string","active":"boolean","parties":[{"id":"string","type":"string"}
],"customData":[{"value":"string","customField":{"id":"string","type":"string"}
}
],"complianceStatus":{"status":"string","compliantPartiesCount":"number","totalPartiesCount":"number","complianceScore":"number"}
,"deletedAt":"string","deletedBy":"","externalIds":{}
}
}
Tags
GET /tags
List tags
Note: all tags are returned, in alphabetical order.
/tags
Responses
200 OKContent-Type: application/json{"status":"string","data":[{"type":"string","id":"string","name":"string","color":"string"}
],"meta":{"count":"number","pages":"number","totalCount":"number","totalPages":"number"}
}
POST /tags
Create a new tag
The tag name must be unique
/tags
Request Body
Content-Type: application/json{"tag":{"name":"string","color":"string"}
}
Responses
201 CreatedContent-Type: application/json{"status":"string","data":{"type":"string","id":"string","name":"string","color":"string"}
}
DELETE /tags/{tagId}
Remove a tag
Note that this will also remove all related taggings
/tags/{tagId}Responses
200 OKContent-Type: application/json{"status":"string","data":{"type":"string","id":"string","name":"string","color":"string"}
}
Party Types
GET /party-types
List party types
Note that this will return all party types, sorted by name
/party-types
Responses
200 OKContent-Type: application/json{"status":"string","data":[{"id":"string","type":"string","name":"string","pluralName":"string","defaultComplianceProfile":{"id":"string","type":"string"}
}
],"meta":{"count":"number","pages":"number","totalCount":"number","totalPages":"number"}
}
POST /party-types
Create a party type
Note that you must provide both the singular and plural names.
/party-types
Request Body
Content-Type: application/json{"partyType":{"name":"string","pluralName":"string","defaultComplianceProfile":{"id":"string"}
}
}
Responses
201 CreatedContent-Type: application/json{"status":"string","data":{"id":"string","type":"string","name":"string","pluralName":"string","defaultComplianceProfile":{"id":"string","type":"string"}
}
}
Compliance Profiles
GET /compliance-profiles
List global compliance profiles
Available sort options:
namecreatedAtupdatedAt
Available filter options:
namemoduleIdsubjectIdcreatedAtupdatedAt
Notes:
moduleIdandsubjectIdfilters only perform an exact match (case-sensitive); they do not support other operator
/compliance-profiles
Responses
200 OKContent-Type: application/json{"status":"string","data":[{"id":"string","type":"string","name":"string","rules":[{"moduleId":"string","moduleLabel":"string","subjectId":"string","subjectLabel":"string","attributeId":"string","attributeLabel":"string","attributeType":"string","attributeDescription":"string","masterDocumentAttributeId":"string","operator":"string","targetValue":"string"}
],"context":"string","documentChecklists":[{"attributeId":"string","attributeLabel":"string","active":"boolean"}
]}
],"meta":{"count":"number","pages":"number","totalCount":"number","totalPages":"number"}
}
GET /compliance-profiles/{profileId}
Fetch a compliance profile
Note that you can also fetch project, party, and custom field compliance profiles, not just global ones.
/compliance-profiles/{profileId}Responses
200 OKContent-Type: application/json{"status":"string","data":{"id":"string","type":"string","name":"string","rules":[{"moduleId":"string","moduleLabel":"string","subjectId":"string","subjectLabel":"string","attributeId":"string","attributeLabel":"string","attributeType":"string","attributeDescription":"string","masterDocumentAttributeId":"string","operator":"string","targetValue":"string"}
],"context":"string","documentChecklists":[{"attributeId":"string","attributeLabel":"string","active":"boolean"}
]}
}
Custom Fields
GET /custom-fields
List custom fields
All fields are returned in alphabetical order; pagination and sorting are not enabled.
Available include options:
complianceProfile
/custom-fields
Responses
200 OKContent-Type: application/json{"status":"string","data":[{"id":"string","type":"string","name":"string","description ":"string","color":"string","fieldType":"string","options":[{"key":"string","value":"string"}
],"complianceProfile":{"id":"string","type":"string"}
,"associatedEntities":["string"]}
],"meta":{"count":"number","pages":"number","totalCount":"number","totalPages":"number"}
}
POST /custom-fields
Create a new custom field
Note: at the moment it’s not possible to specify custom requirements and checklists.
/custom-fields
Request Body
Content-Type: application/json{"customField":{"name":"string","description":"string","color":"string","fieldType":"string","source":"string","associatedEntities":["string"],"options":["string"]}
}
Responses
201 CreatedContent-Type: application/json{"status":"string","data":{"id":"string","type":"string","name":"string","description ":"string","color":"string","fieldType":"string","options":[{"key":"string","value":"string"}
],"complianceProfile":{"id":"string","type":"string"}
,"associatedEntities":["string"]}
}
PATCH /custom-fields/{fieldId}
Update a custom field
Note that by specifying options you will replace all the existing values.
/custom-fields/{fieldId}Request Body
Content-Type: application/json{"customField":{"name":"string","description":"string","color":"string","fieldType":"string","source":"string","options":["string"]}
}
Responses
200 OKContent-Type: application/json{"status":"string","data":{"id":"string","type":"string","name":"string","description ":"string","color":"string","fieldType":"string","options":[{"key":"string","value":"string"}
],"complianceProfile":{"id":"string","type":"string"}
,"associatedEntities":["string"]}
}
DELETE /custom-fields/{fieldId}
Delete a custom field
This will also remove the field from any project that is using it.
/custom-fields/{fieldId}Responses
200 OKContent-Type: application/json{"status":"string","data":{"id":"string","type":"string","name":"string","description ":"string","color":"string","fieldType":"string","options":[{"key":"string","value":"string"}
],"complianceProfile":{"id":"string","type":"string"}
,"associatedEntities":["string"]}
}
Reports
GET /reports
List public reports
Available filter options:
type(eitherprojectsorparties)
Available sort options:
namecreatedAt
/reports
Responses
200 OKContent-Type: application/json{"status":"string","data":[{"id":"string","type":"string","name":"string","filters":{}
,"updatedAt":"string","createdAt":"string"}
],"meta":{"count":"number","pages":"number","totalCount":"number","totalPages":"number"}
}
POST /reports
Create a new report
TBD
/reports
Request Body
Content-Type: application/json{"report":{"name":"string","filters":{}
,"reportType":"string"}
}
Responses
201 CreatedContent-Type: application/json{"status":"string","data":{"id":"string","type":"string","name":"string","filters":{}
,"updatedAt":"string","createdAt":"string"}
}
GET /reports/{id}
Fetch a public report
TBD
/reports/{id}Responses
200 OKContent-Type: application/json{"status":"string","data":{"id":"string","type":"string","name":"string","filters":{}
,"updatedAt":"string","createdAt":"string"}
}
PATCH /reports/{id}
Update a report
TBD
/reports/{id}Request Body
Content-Type: application/json{"report":{"name":"string","filters":{}
}
}
Responses
200 OKContent-Type: application/json{"status":"string","data":{"id":"string","type":"string","name":"string","filters":{}
,"updatedAt":"string","createdAt":"string"}
}
DELETE /reports/{id}
Delete a report
TBD
/reports/{id}Responses
200 OKContent-Type: application/json{"status":"string","data":{"id":"string","type":"string","name":"string","filters":{}
,"updatedAt":"string","createdAt":"string"}
}
Import Parties
POST /import-parties
Bulk upload parties
This endpoint allows you to bulk upload parties via a CSV file.
/import-parties
Request Body
Content-Type: multipart/form-data{"type"=>"object", "properties"=>{"parties"=>{"type"=>"string"}}}Responses
201 CreatedContent-Type: application/json{"status":"string","data":[""]}
Webhooks
GET /webhooks
List webhooks
Available filters:
namespace
/webhooks
Responses
200 OKContent-Type: application/json{"data":[{"id":"string","type":"string","namespace":"string","url":"string","events":["string"],"enabled":"boolean","createdAt":"string"}
],"status":"string","meta":{"count":"number","pages":"number","totalCount":"number","totalPages":"number"}
}
POST /webhooks
Create a webhook
See the “Managing webhooks” section
/webhooks
Request Body
Content-Type: application/json{"webhook":{"namespace":"string","url":"string","events":["string"],"enabled":"boolean"}
}
Responses
200 OKContent-Type: application/json{"status":"string","data":{"id":"string","type":"string","namespace":"string","url":"string","events":["string"],"enabled":"boolean","createdAt":"string"}
}
Settings
GET /settings/webhooks
Fetch webhooks settings
This endpoint will return the current organization-level settings for webhooks.
/settings/webhooks
Responses
200 OKContent-Type: application/json{"status":"string","data":{"headers":[{"name":"string","value":"string"}
]}
}
PUT /settings/webhooks
Update webhooks settings
This endpoint updates the organization-level settings for webhooks.
/settings/webhooks
Request Body
Content-Type: application/json{"settings":{"headers":[{"name":"string","value":"string"}
]}
}
Responses
200 OKContent-Type: application/json{"settings":{"headers":[{"name":"string","value":"string"}
]}
}
Branding
GET /branding
List Branding
Available sort options:
namecreatedAtupdatedAt
Available filter options:
namecreatedAtupdatedAt
/branding
Responses
200 OKContent-Type: application/json{"status":"string","data":[{"id":"string","name":"string","createdAt":"string","updatedAt":"string","logo":{"url":"string","friendlyName":"string","uploadedAt":"string"}
}
],"meta":{"count":"number","pages":"number","totalCount":"number","totalPages":"number"}
}
POST /branding
Create a new branding
/branding
Request Body
Content-Type: application/json{"name":"string","logo":{"url":"string","friendlyName":"string"}
}
Responses
201 CreatedContent-Type: application/json{"status":"string","data":{"id":"string","name":"string","createdAt":"string","updatedAt":"string","logo":{"url":"string","friendlyName":"string","uploadedAt":"string"}
}
}
GET /branding/{brandingId}
Fetch a Branding
/branding/{brandingId}Responses
200 OKContent-Type: application/json{"status":"string","data":{"id":"string","name":"string","createdAt":"string","updatedAt":"string","logo":{"url":"string","friendlyName":"string","uploadedAt":"string"}
}
}
PUT /branding/{brandingId}
Update branding
Update an existing branding.
/branding/{brandingId}Request Body
Content-Type: application/json{"name":"string","logo":{"url":"string","friendlyName":"string","uploadedAt":"string"}
}
Responses
200 OKContent-Type: application/json{"settings":{"id":"string","name":"string","createdAt":"string","updatedAt":"string","logo":{"url":"string","friendlyName":"string","uploadedAt":"string"}
}
}
DELETE /branding/{brandingId}
Delete a branding
/branding/{brandingId}Responses
200 OKContent-Type: application/json{"status":"string","data":{"id":"string"}
}
Document Types
GET /document-types
List Document Types
This endpoint returns the complete list of document types. No pagination, filtering or sorting option is supported at the moment.
/document-types
Responses
200 OKContent-Type: application/json{"status":"string","data":[{"type":"string","id":"string","name":"string","system":"boolean","pluralName":"string"}
],"meta":{"count":"number","pages":"number","totalCount":"number","totalPages":"number"}
}
GET /document-types/{documentTypeId}
Fetch Document Type
This endpoint returns a single document type.
/document-types/{documentTypeId}Responses
200 OKContent-Type: application/json{"status":"string","data":{"type":"string","id":"string","name":"string","system":"boolean","pluralName":"string"}
}
Content-Type: application/json{"status":"string","data":{"type":"string","id":"string","name":"string","system":"boolean","pluralName":"string"}
}
Models
Branding
id |
string |
name |
string |
createdAt |
string |
updatedAt |
string |
logo |
object |
Example
{
"type": "branding",
"id": "60896067dd86e01e90199f45",
"name": "Acme Inc",
"createdAt": "2023-12-13T14:07:12.950Z",
"updatedAt": "2023-12-13T14:07:12.950Z",
"logo": {
"url": "https://trustlayer-documents.s3.us-west-1.amazonaws.com/...",
"uploadedAt": "2023-08-24T14:15:22Z",
"friendlyName": "acme-logo.jpeg"
}
}Party
type |
string |
id |
string |
name |
string |
address |
address |
status |
string |
contacts |
array |
website |
null |
active |
boolean |
notes |
null |
complianceStatus |
compliance-status |
projects |
array |
projectStats |
object |
documents |
array |
partyType |
reference | party-type |
tags |
array |
complianceProfile |
reference | compliance-profile | null |
customData |
array |
deletedAt |
null |
deletedBy |
null | reference |
externalIds |
object |
Example
{
"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"
}
]
}
}Contact
type |
string |
id |
string |
name |
string |
company |
string |
email |
string |
phone |
string |
fax |
string |
title |
string |
primary |
boolean |
defaultRequestRecipient |
boolean |
avatar |
string |
party |
reference | party |
externalId |
string |
Example
{
"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"
}
}Document
type |
string |
id |
string |
issuedBy |
object |
reviewedAt |
string |
archivedAt |
string |
notes |
string |
status |
string |
types |
array |
flag |
object |
appliesToAllProjects |
boolean |
expirationDate |
string |
name |
string |
data |
object |
metadata |
object |
updatedAt |
string |
createdAt |
string |
archivedBy |
reference | user | null |
reviewedBy |
reference | user | null |
url |
string |
insurers |
array |
deletedAt |
string |
deletedBy |
reference | user |
issueDate |
string |
Example
{
"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"
}Document Type
type |
string |
id |
string |
name |
string |
system |
boolean |
pluralName |
string |
Example
{
"type": "document-types",
"id": "60a27c517fd4e152a9642347",
"name": "Certificate of Insurance",
"system": true,
"pluralName": "Certificates of Insurance"
}User
id |
string |
profile |
object |
email |
string |
isActive |
boolean |
type |
string |
Reference
id |
string |
type |
string |
Example
{
"id": "60896067dd86e01e90199f43",
"type": "widgets"
}Project
type |
string |
id |
string |
name |
string |
description |
null |
startDate |
null |
endDate |
null |
active |
boolean |
parties |
array |
customData |
array |
complianceStatus |
object |
deletedAt |
null |
deletedBy |
null | reference |
externalIds |
object |
Example
{
"type": "projects",
"id": "60a3dc67cba60c04739e8e46",
"name": "Test Project",
"parties": [
{
"id": "60896067dd86e01e90199f42",
"type": "parties"
}
],
"customData": [
{
"value": "123",
"customField": {
"type": "customFields",
"id": "60896067dd86e01e90199f42"
}
}
],
"externalIds": {
"procore": [
{
"id": "49843945"
}
]
}
}Compliance Status
complianceProfile |
reference |
nextExpirationDate |
null |
latestExpirationDate |
null |
modules |
array |
subjects |
array |
requirements |
array |
status |
string |
lastChangedAt |
string |
Example
{
"complianceProfile": {
"id": "60a27c51fcd891823568ed27",
"type": "compliance-profiles"
},
"nextExpirationDate": "2024-11-14T00:00:00.000Z",
"latestExpirationDate": "2025-12-19T23:59:59.999Z",
"modules": [
{
"id": "evidenceOfInsurance",
"label": "Evidence of Insurance",
"status": "compliant",
"documents": [
{
"id": "6877a0b2d7a1998eeb7f7f2f",
"origin": "upload",
"complianceStatus": "compliant"
}
],
"documentsCount": 1,
"subjects": [
{
"id": "commercialGeneralLiability",
"label": "Commercial General Liability",
"status": "compliant",
"notes": "lorem ipsum dolor sit amet",
"effectiveDate": "2024-11-14T00:00:00.000Z",
"expirationDate": "2025-11-14T23:59:59.999Z",
"latestExpirationDate": "2025-12-19T23:59:59.999Z",
"latestValidEffectiveDate": "2024-11-14T00:00:00.000Z",
"latestValidExpirationDate": "2025-11-14T23:59:59.999Z",
"documents": [
{
"id": "6877a0b2d7a1998eeb7f7f2f",
"origin": "upload",
"complianceStatus": "compliant"
}
],
"documentsCount": 1,
"resetOn": "2025-06-02T00:00:00.000Z",
"requirements": [
{
"id": "evidenceOfInsurance.commercialGeneralLiability.evidenceOfInsuranceCommercialGeneralLiabilityGeneralAggregate",
"label": "Evidence of Insurance : Commercial General Liability : General Aggregate",
"moduleId": "evidenceOfInsurance",
"moduleLabel": "Evidence of Insurance",
"subjectId": "commercialGeneralLiability",
"subjectLabel": "Commercial General Liability",
"attributeId": "evidenceOfInsuranceCommercialGeneralLiabilityGeneralAggregate",
"attributeLabel": "General Aggregate",
"matchingCriteria": "matchOnce",
"operator": "must be greater or equal to",
"targetValue": "1000000",
"value": "2000000",
"status": "compliant",
"invalidatedBy": [
"evidenceOfInsuranceCommercialGeneralLiabilityAMBestRating"
],
"notes": "lorem ipsum dolor sit amet",
"publicNotes": "lorem ipsum dolor sit amet",
"documents": [
{
"id": "6877a0b2d7a1998eeb7f7f2f",
"origin": "upload",
"complianceStatus": "compliant"
}
],
"documentsCount": 1,
"resetOn": "2025-06-02T00:00:00.000Z",
"custom": false
}
]
}
]
}
],
"subjects": [
{
"id": "commercialGeneralLiability",
"effectiveDate": "2024-11-14T00:00:00.000Z",
"expirationDate": "2025-11-14T23:59:59.999Z",
"latestValidEffectiveDate": "2024-11-14T00:00:00.000Z",
"latestValidExpirationDate": "2025-11-14T23:59:59.999Z",
"latestExpirationDate": "2025-12-19T23:59:59.999Z",
"notes": "lorem ipsum dolor sit amet",
"requirementsStatus": "compliant",
"resetRequirementsOn": "2025-06-02T00:00:00.000Z"
}
],
"requirements": [
{
"id": "evidenceOfInsurance.commercialGeneralLiability.evidenceOfInsuranceCommercialGeneralLiabilityGeneralAggregate",
"label": "Evidence of Insurance : Commercial General Liability : General Aggregate",
"operator": "must be greater or equal to",
"targetValue": "1000000",
"actualValue": "2000000",
"status": "compliant",
"waiverOrOverrideNotes": "lorem ipsum dolor sit amet",
"waiverOrOverrideExpirationDate": "2025-06-02T00:00:00.000Z"
}
],
"status": "compliant",
"lastChangedAt": "2025-07-16T17:55:00.000Z"
}Tag
type |
string |
id |
string |
name |
string |
color |
string |
Tagging
type |
string |
id |
string |
addedAt |
string |
addedBy |
string |
expiresAt |
string |
Tagging (full data)
type |
string |
id |
string |
name |
string |
color |
string |
addedAt |
string |
addedBy |
string |
Party Type
id |
string |
type |
string |
name |
string |
pluralName |
string |
defaultComplianceProfile |
reference | compliance-profile |
Example
{
"id": "60a27c51fcd891823568ed28",
"type": "party-types",
"name": "Vendor",
"pluralName": "Vendors",
"defaultComplianceProfile": {
"id": "60a27c51fcd891823568ed27",
"type": "compliance-profiles"
}
}Compliance Profile
id |
string |
type |
string |
name |
string |
rules |
array |
context |
string |
documentChecklists |
array |
Example
{
"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"
}Custom Field
id |
string |
type |
string |
name |
string |
description |
string |
color |
string |
fieldType |
string |
options |
array |
complianceProfile |
reference | compliance-profile |
associatedEntities |
array |
Report
id |
string |
type |
string |
name |
string |
filters |
object |
updatedAt |
string |
createdAt |
string |
Example
{
"id": "60be22526a69195b1941d77e",
"type": "reports",
"name": "Interesting projects",
"filters": {
"name": "interesting",
"view": "table",
"sortField": "name",
"sortDirection": "asc"
},
"updatedAt": "2019-08-24T14:15:22Z",
"createdAt": "2019-08-24T14:15:22Z"
}Document Request
id |
string |
type |
string |
party |
reference |
message |
string |
sentOn |
string |
dueDate |
string |
forwardedAt |
string |
forwardedTo |
string |
address-input
city |
string |
country |
string |
line1 |
string |
line2 |
string |
postalCode |
string |
region |
string |
webhook
id |
string |
type |
string |
namespace |
string |
url |
string |
events |
array |
enabled |
boolean |
createdAt |
string |
Webhook settings
headers |
array |
externalId
id |
string |
instance |
string |
external-ids-update
party-comment
id |
string |
message |
string |
userId |
string |
userName |
string |
userEmail |
string |
createdAt |
string |