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 namespace parameter can be whatever you want, but the "trustlayer" value is reserved for internal use.
  • The url parameter needs to be unique relative to the namespace; if you perform a second POST request using the same values, you will overwrite the existing webhook
  • The events parameter 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 enabled parameter can be omitted, and it will default to true.

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: either success (for successful responses, status codes 2xx), fail (for invalid requests, status codes 4xx), or error (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 than
  • gte: greater than or equal to
  • lt: less than
  • lte: less than or equal to
  • eq: equal to
  • ne: 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.

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:

  • project
  • name
  • type
  • status
  • createdAt
  • updatedAt
  • customField
  • externalId
  • active

Available sort keys:

  • name
  • createdAt
  • updatedAt
  • status

Available include options:

  • projects
  • documents
  • tags
  • complianceProfile
  • customFields

Pagination is enabled.

Notes:

  • the type filter takes either the singular or plural version of the type (e.g. “Vendor”, “Vendors”)
  • valid values for the status filter: “non_compliant”, “compliant”.
  • valid values for the active filter: “true”, “false”
  • by default both active and inactive parties are returned
  • when filtering by project, the parties compliance data will be relative to the selected project
  • the value of the externalId filter must be in the format <provider name>/<external id>, e.g. procore/1234
  • the value of the customField filter must be in the format <custom field id>;<field value>. The only supported operator is eq (exact match, case-sensitive).
/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:

  • projects
  • documents
  • tags
  • complianceProfile
  • customFields

Available scope options:

  • projects

If scope[type]=project, the compliance information in the resulting response will be relative to the selected project. If a project scope is specified and documents are included, only documents associated to the project will be returned.

/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

  • name is required.
  • setting the primary flag to true will unset it from the current primary contact.
/parties/{partyId}/contacts

Request 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}/contacts

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"}

],"meta":{"count":"number","pages":"number","totalCount":"number","totalPages":"number"}

}

POST /parties/{partyId}/compliance-certificate

Create a party compliance certificate

  • if effectiveDate is not provided, it will default to the current moment
  • if expirationDate is not provided, it will default to the earliest expiration date found in currently active documents; if no document is present, it will default to 1 year from the effective date
  • if document is provided (only for multipart/form-data), it will be uploaded to the party and used as the compliance certificate

Available scope options:

  • projects
/parties/{partyId}/compliance-certificate

Request 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-certificate

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"}

}

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/documents

Request 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/documents

Request 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}/documents

Request 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/tags

Request 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/tags

Request 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-request

Request 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-request

Request 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-profile

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"}

]}

}

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-profile

Request Body

Content-Type: application/json{"complianceProfile":{"id":"string"}

}

Responses

200 OK

PATCH /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-data

Request 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-ids

Request 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-requirement

Request 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-subject

Request 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}/comments

Request 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 primary flag to true will remove it from the other contacts.
  • setting the primary flag to false on the current primary contact will return a 400 response, since a primary contact must always exist.
  • if given, name must 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:

  • name
  • party
  • project
  • type
  • archived
  • reviewed
  • createdAt
  • updatedAt
  • reviewedAt
  • archivedAt
  • expirationDate

Available sort keys:

  • name
  • createdAt
  • updatedAt
  • archivedAt
  • reviewedAt
  • expirationDate

Available include options:

  • party
  • projects
  • reviewedBy
  • archivedBy
  • types

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:

  • party
  • projects
  • types
  • archivedBy
  • reviewedBy

Notes:

  • the uploaded file is accessible via the url attribute; 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}/review

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"}

}

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}/review

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"}

}

DELETE /documents/{documentId}/archive

Un-archive a document

Mark the document as not archived.

/documents/{documentId}/archive

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"}

}

POST /documents/{documentId}/archive

Archive a document

Mark the document as archived.

/documents/{documentId}/archive

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}/reprocess

Reprocess a document

Send the document to the extraction pipeline. The results will overwite the document’s current data.

/documents/{documentId}/reprocess

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"}

}

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}/flag

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"}

}

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.

  • addedOn will default to the current time if left blank
  • severityLevel and user.id are 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}/flag

Request 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/projects

Request 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:

  • name
  • status (“compliant”, “non_compliant”, others?)
  • active
  • createdAt
  • updatedAt
  • startDate
  • endDate
  • customField
  • externalId
  • active

Available sort keys:

  • name
  • createdAt
  • updatedAt
  • startDate
  • endDate

Available include options:

  • parties
  • customFields

Notes:

  • the value of the externalId filter must be in the format <provider name>/<external id>, e.g. procore/1234
  • the value of the customField filter must be in the format <custom field id>/<field value>. The only supported operator is eq.
/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:

  • parties
  • customFields
/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 (name and fieldType) 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/parties

Request 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/parties

Request 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/documents

Request 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/documents

Request 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-ids

Request 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:

  • name
  • createdAt
  • updatedAt

Available filter options:

  • name
  • moduleId
  • subjectId
  • createdAt
  • updatedAt

Notes:

  • moduleId and subjectId filters 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 (either projects or parties)

Available sort options:

  • name
  • createdAt
/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:

  • name
  • createdAt
  • updatedAt

Available filter options:

  • name
  • createdAt
  • updatedAt
/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