TrustLayer Projects API

The Projects API from TrustLayer — 9 operation(s) for projects.

Operations 13

PUT /projects/{id}/external-ids Update project external IDs #
GET /projects List projects #
POST /projects Create a new project #
GET /projects/{projectId} Fetch a project #
DELETE /projects/{projectId} Delete a project #
POST /projects/{projectId}/relationships/parties Add parties to a project #
DELETE /projects/{projectId}/relationships/parties Remove a party from a project #
POST /projects/{projectId}/relationships/documents Attach documents to a project #
DELETE /projects/{projectId}/relationships/documents Detach documents from a project #
DELETE /projects/{projectId}/relationships/documents/{documentId} Remove a document from a project #
DELETE /projects/{projectId}/relationships/parties/{partyId} Remove a party from a project #
GET /projects/{projectId}/compliance-profile Fetch compliance profile for project #
POST /documents/{documentId}/relationships/projects Associate a document to multiple projects #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/trustlayer-projects-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

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


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

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

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

    migrate to Platform API v2 for new integrations.


    All v1 responses carry the standard deprecation response headers

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


    ```http

    Deprecation: @1780272000

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

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

    ```


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

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

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


        Note that if the workspace is already integrated with one or more external systems, this endpoint should _not_ be used.'
      tags:
      - Projects
  /projects:
    get:
      summary: List projects
      tags:
      - Projects
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/response-status'
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/project'
                  meta:
                    $ref: '#/components/schemas/collection-meta'
      operationId: get-projects
      deprecated: true
      description: 'Available filters:

        * `name`

        * `status` ("compliant", "non_compliant", others?)

        * `active`

        * `createdAt`

        * `updatedAt`

        * `startDate`

        * `endDate`

        * `customField`

        * `externalId`

        * `active`



        Available sort keys:

        * `name`

        * `createdAt`

        * `updatedAt`

        * `startDate`

        * `endDate`


        Available include options:

        * `parties`

        * `customFields`


        Notes:


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

        * the value of the `customField` filter must be in the format `<custom field id>/<field value>`. The only supported operator is `eq`.

        '
      parameters:
      - $ref: '#/components/parameters/sort'
      - $ref: '#/components/parameters/page-number'
      - $ref: '#/components/parameters/page-size'
      - $ref: '#/components/parameters/filter'
      - $ref: '#/components/parameters/include'
      x-internal: false
    post:
      summary: Create a new project
      operationId: post-projects
      deprecated: true
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/response-status'
                  data:
                    $ref: '#/components/schemas/project'
      tags:
      - Projects
      description: The only required attribute is `name`.
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                project:
                  $ref: '#/components/schemas/project-create'
  /projects/{projectId}:
    parameters:
    - schema:
        type: string
      name: projectId
      in: path
      required: true
      description: Project ID
    get:
      summary: Fetch a project
      tags:
      - Projects
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/response-status'
                  data:
                    $ref: '#/components/schemas/project'
      operationId: get-projects-id
      deprecated: true
      description: 'Available include options:

        * `parties`

        * `customFields`

        '
      parameters:
      - $ref: '#/components/parameters/include'
    delete:
      summary: Delete a project
      operationId: delete-projects-projectId
      deprecated: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/response-status'
                  data:
                    $ref: '#/components/schemas/project'
      description: Soft-deletes a project
      tags:
      - Projects
      x-internal: false
  /projects/{projectId}/relationships/parties:
    parameters:
    - schema:
        type: string
      name: projectId
      in: path
      required: true
      description: Project ID
    post:
      summary: Add parties to a project
      operationId: post-projects-id-relationships-parties
      deprecated: true
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/response-status'
                  data:
                    $ref: '#/components/schemas/project'
      tags:
      - Projects
      description: 'Parties that are already associated with the project are ignored.


        All parties _must_ exist, otherwise a 404 response will be returned and no party will be added.'
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                parties:
                  $ref: '#/components/schemas/reference-list-input'
              required:
              - parties
    delete:
      summary: Remove a party from a project
      operationId: delete-projects-id-relationships-parties
      deprecated: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/response-status'
                  data:
                    $ref: '#/components/schemas/project'
      description: All parties _must_ exist, otherwise a 404 response will be returned and no party will be removed.
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                parties:
                  $ref: '#/components/schemas/reference-list-input'
              required:
              - parties
      tags:
      - Projects
  /projects/{projectId}/relationships/documents:
    parameters:
    - schema:
        type: string
      name: projectId
      in: path
      required: true
      description: Project ID
    post:
      summary: Attach documents to a project
      operationId: post-projects-id-relationships-documents
      deprecated: true
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/response-status'
                  data:
                    $ref: '#/components/schemas/project'
      tags:
      - Projects
      description: 'A document can be attached to any number of projects.


        All documents _must_ exist, otherwise a 404 response will be returned and no document will be attached.'
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                documents:
                  $ref: '#/components/schemas/reference-list-input'
              required:
              - documents
    delete:
      summary: Detach documents from a project
      operationId: delete-projects-id-relationships-documents
      deprecated: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/response-status'
                  data:
                    $ref: '#/components/schemas/project'
      description: All documents _must_ exist, otherwise a 404 response will be returned and no document will be detached.
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                documents:
                  $ref: '#/components/schemas/reference-list-input'
              required:
              - documents
      tags:
      - Projects
  /projects/{projectId}/relationships/documents/{documentId}:
    parameters:
    - schema:
        type: string
      name: projectId
      in: path
      required: true
      description: Project ID
    - schema:
        type: string
      name: documentId
      in: path
      required: true
      description: Document ID
    delete:
      summary: Remove a document from a project
      operationId: delete-projects-projectId-relationships-documents-documentId
      deprecated: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/response-status'
                  data:
                    $ref: '#/components/schemas/project'
      tags:
      - Projects
      description: If you need to remove multiple documents at once you can use the alternative endpoint `DELETE /projects/{projectId}/relationships/documents`
  /projects/{projectId}/relationships/parties/{partyId}:
    parameters:
    - schema:
        type: string
      name: projectId
      in: path
      required: true
      description: Project ID
    - schema:
        type: string
      name: partyId
      in: path
      required: true
      description: Party ID
    delete:
      summary: Remove a party from a project
      operationId: delete-projects-projectId-relationships-parties-partyId
      deprecated: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/response-status'
                  data:
                    $ref: '#/components/schemas/project'
      tags:
      - Projects
      description: If you need to remove multiple parties at once you can use the alternative endpoint `DELETE /projects/{projectId}/relationships/parties`
  /projects/{projectId}/compliance-profile:
    parameters:
    - schema:
        type: string
      name: projectId
      in: path
      required: true
    get:
      summary: Fetch compliance profile for project
      tags:
      - Projects
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/response-status'
                  data:
                    $ref: '#/components/schemas/compliance-profile'
      operationId: get-projects-projectId-compliance-profile
      deprecated: true
      parameters:
      - $ref: '#/components/parameters/scope-type'
      - $ref: '#/components/parameters/scope-id'
      description: 'This will return the project-specific compliance profile relative to the given scope.


        NOTE: it is _mandatory_ to specify a `scope`, which can be either a `party` (belonging to a project) or a `complianceProfile`.'
      x-internal: true
  /documents/{documentId}/relationships/projects:
    parameters:
    - schema:
        type: string
      name: documentId
      in: path
      required: true
    post:
      summary: Associate a document to multiple projects
      operationId: post-documents-documentId-relationships-projects
      deprecated: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    $ref: '#/components/schemas/response-status'
                  data:
                    $ref: '#/components/schemas/document'
      tags:
      - Projects
      description: TBD
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                projects:
                  type: array
                  items:
                    $ref: '#/components/schemas/reference-input'
components:
  schemas:
    reference:
      title: Reference
      type: object
      properties:
        id:
          type: string
        type:
          type: string
      description: Generic object reference
      x-internal: false
      x-examples:
        Generic reference example:
          id: 60896067dd86e01e90199f43
          type: widgets
    compliance-profile:
      title: Compliance Profile
      type: object
      x-examples:
        Example compliance profile:
          id: 60a27c51fcd891823568ed27
          type: compliance-profiles
          name: Default compliance profile
          rules:
          - moduleId: evidenceOfInsurance
            moduleLabel: Evidence of Insurance
            subjectId: commercialGeneralLiability
            subjectLabel: Commercial General Liability
            attributeId: evidenceOfInsuranceCommercialGeneralLiabilityEachOccurrence
            attributeLabel: Each Occurrence
            attributeType: number
            attributeDescription: ''
            masterDocumentAttributeId: commercialGeneralLiabilityLimitsGeneralAggregate
            operator: must be greater or equal to
            targetValue: '2000000'
          context: global
      properties:
        id:
          type: string
        type:
          type: string
          default: compliance-profiles
        name:
          type: string
          example: Default compliance profile
        rules:
          type: array
          items:
            type: object
            properties:
              moduleId:
                type: string
                minLength: 1
                example: evidenceOfInsurance
              moduleLabel:
                type: string
                minLength: 1
                example: Evidence of Insurance
              subjectId:
                type: string
                minLength: 1
                example: commercialGeneralLiability
              subjectLabel:
                type: string
                minLength: 1
                example: Commercial General Liability
              attributeId:
                type: string
                minLength: 1
                example: evidenceOfInsuranceCommercialGeneralLiabilityEachOccurrence
              attributeLabel:
                type: string
                minLength: 1
                example: Each Occurrence
              attributeType:
                type: string
                minLength: 1
                example: number
              attributeDescription:
                type: string
              masterDocumentAttributeId:
                type: string
                minLength: 1
                example: commercialGeneralLiabilityLimitsGeneralAggregate
              operator:
                type: string
                minLength: 1
                example: must be greater or equal to
              targetValue:
                type: string
                minLength: 1
                example: '2000000'
        context:
          type: string
          enum:
          - global
          - project
          - custom-field
        documentChecklists:
          type: array
          items:
            type: object
            properties:
              attributeId:
                type: string
              attributeLabel:
                type: string
              active:
                type: boolean
    collection-meta:
      title: collection-meta
      type: object
      properties:
        count:
          type: number
          description: The number of documents according to the specified filters
        pages:
          type: number
        totalCount:
          type: number
          description: The total number of documents in the collection
        totalPages:
          type: number
      x-internal: true
    project-create:
      title: project-create
      type: object
      x-internal: true
      x-tags:
      - input
      properties:
        name:
          type: string
          description: The project name
        description:
          type: string
          description: An optional description
        startDate:
          type: string
          format: date
        endDate:
          type: string
          format: date
        customData:
          type: array
          items:
            type: object
            properties:
              customField:
                $ref: '#/components/schemas/reference-input'
              value:
                type: string
            required:
            - customField
            - value
        externalIds:
          type: array
          x-stoplight:
            id: tla0kkdm08jk4
          items:
            x-stoplight:
              id: utre6jd713rg1
            type: string
      required:
      - name
    reference-list-input:
      type: array
      title: reference-list-input
      x-tags:
      - input
      minItems: 1
      items:
        type: object
        properties:
          id:
            type: string
            pattern: ^[a-z0-9]{24}$
            minLength: 24
            maxLength: 24
        required:
        - id
      x-internal: true
    compliance-document:
      x-internal: true
      title: Compliance Document
      type: object
      properties:
        id:
          type: string
        origin:
          type: string
          enum:
          - upload
          - makeCompliant
          - connectedDocument
          - fillableForm
          - webForm
        complianceStatus:
          type: string
          enum:
          - compliant
          - non_compliant
    reference-input:
      title: reference-input
      type: object
      properties:
        id:
          type: string
          minLength: 24
          maxLength: 24
          pattern: ^[a-z0-9]{24}$
      required:
      - id
      x-internal: true
      x-tags:
      - input
    taggging-full:
      title: Tagging (full data)
      type: object
      properties:
        type:
          type: string
          default: tags
        id:
          type: string
        name:
          type: string
        color:
          type: string
        addedAt:
          type: string
          format: date
        addedBy:
          type: string
    custom-field:
      title: Custom Field
      type: object
      properties:
        id:
          type: string
        type:
          type: string
          default: custom-fields
        name:
          type: string
          description: Custom field label
        'description ':
          type: string
          description: Optional description
        color:
          type: string
          pattern: ^#[a-f0-9]{6}$
          description: 'Field color in #rrggbb format'
        fieldType:
          type: string
          default: text
          enum:
          - text
          - number
          - dropdown
        options:
          type: array
          description: List of options for the dropdown
          items:
            type: object
            properties:
              key:
                type: string
                description: Unique identifier for the option
              value:
                type: string
                description: Option label
        complianceProfile:
          oneOf:
          - $ref: '#/components/schemas/reference'
          - $ref: '#/components/schemas/compliance-profile'
        associatedEntities:
          type: array
          enum:
          - party
          - project
          description: List of entity types that can use this custom field
          items:
            type: string
    party-type:
      title: Party Type
      type: object
      properties:
        id:
          type: string
        type:
          type: string
          default: party-types
        name:
          type: string
        pluralName:
          type: string
        defaultComplianceProfile:
          oneOf:
          - $ref: '#/components/schemas/reference'
          - $ref: '#/components/schemas/compliance-profile'
      x-examples:
        Vendor:
          id: 60a27c51fcd891823568ed28
          type: party-types
          name: Vendor
          pluralName: Vendors
          defaultComplianceProfile:
            id: 60a27c51fcd891823568ed27
            type: compliance-profiles
    user:
      description: ''
      type: object
      properties:
        id:
          type: string
        profile:
          type: object
          properties:
            name:
              type: string
              minLength: 1
            phone:
              type: string
            title:
              type: string
            avatar:
              type: string
            role:
              type: string
            department:
              type: string
            timezone:
              type: string
        email:
          type: string
          minLength: 1
        isActive:
          type: boolean
        type:
          type: string
          default: users
          readOnly: true
      title: User
    taggging:
      title: Tagging
      type: object
      properties:
        type:
          type: string
          default: tags
        id:
          type: string
        addedAt:
          type: string
          format: date
        addedBy:
          type: string
        expiresAt:
          type: string
          x-stoplight:
            id: 8xpna1blern8o
          format: date
    party:
      title: Party
      type: object
      x-examples:
        Example Party:
          id: 60896067dd86e01e90199f42
          name: Test Party
          address:
            line1: 123 Main Street
            line2: ''
            city: Pleasantville
            postalCode: '10200'
            region: NY
            country: US
          type: Vendor
          status: new
          customData:
          - value: '123'
            customField:
              type: customFields
              id: 60896067dd86e01e90199f42
          externalIds:
            procore:
            - id: '49843945'
      properties:
        type:
          type: string
          default: parties
          readOnly: true
        id:
          type: string
          readOnly: true
        name:
          type: string
        address:
          $ref: '#/components/schemas/address'
        status:
          type: string
          enum:
          - new
          - compliant
          - non_compliant
          - inactive
          readOnly: true
        contacts:
          type: array
          items:
            $ref: '#/components/schemas/contact'
        website:
          type:
          - string
          - 'null'
        active:
          type: boolean
        notes:
          type:
          - string
          - 'null'
        complianceStatus:
          $ref: '#/components/schemas/compliance-status'
        projects:
          type: array
          items:
            oneOf:
            - $ref: '#/components/schemas/reference'
            - $ref: '#/components/schemas/project'
        projectStats:
          type: object
          properties:
            compliantProjectsCount:
              type: number
            totalProjectsCount:
              type: number
        documents:
          type: array
          items:
            oneOf:
            - $ref: '#/components/schemas/reference'
            - $ref: '#/components/schemas/document'
        partyType:
          oneOf:
          - $ref: '#/components/schemas/reference'
          - $ref: '#/components/schemas/party-type'
        tags:
          type: array
          items:
            oneOf:
            - $ref: '#/components/schemas/taggging'
            - $ref: '#/components/schemas/taggging-full'
        complianceProfile:
          oneOf:
          - $ref: '#/components/schemas/reference'
          - $ref: '#/components/schemas/compliance-profile'
          - {}
        customData:
          type: array
          items:
            type: object
            properties:
              value:
                type: string
              customField:
                oneOf:
                - $ref: '#/components/schemas/reference'
                - $ref: '#/components/schemas/custom-field'
        deletedAt:
          type:
          - string
          - 'null'
          format: date-time
        deletedBy:
          oneOf:
          - {}
          - $ref: '#/components/schemas/reference'
        externalIds:
          type: object
          x-stoplight:
            id: zk87opteuie3w
    response-status:
      type: string
      title: Response Status
      enum:
      - success
      - fail
      - error
      readOnly: true
      x-examples:
        Success: success
      description: The possible values are "success", "fail", and "error".
      x-internal: true
    contact:
      title: Contact
      type: object
      x-examples:
        Example Contact:
          type: contacts
          id: 60896067dd86e01e90199f43
          name: Jane Smith
          company: Acme Inc
          email: jane.smith@example.com
          phone: (555) 555-5555
          fax: ''
          title: Director
          primary: true
          defaultRequestRecipient: false
          avatar: ''
          party:
            type: parties
            id: 60896067dd86e01e90199f43
      properties:
        type:
          type: string
          default: contacts
          readOnly: true
        id:
          type: string
          readOnly: true
        name:
          type: string
        company:
          type: string
        email:
          type: string
        phone:
          type: string
        fax:
          type: string
        title:
          type: string
        primary:
          type: boolean
          default: false
        defaultRequestRecipient:
          type: boolean
          default: false
        avatar:
          type: string
        party:
          oneOf:
          - $ref: '#/components/schemas/reference'
          - $ref: '#/components/schemas/party'
        externalId:
          type: string
          x-stoplight:
            id: 07yyrzkup5tdk
    document:
      type: object
      title: Document
      x-examples:
        Example document:
          type: documents
          id: 60a27c51fcd891823568ed35
          issuedBy:
            name: ''
            address: ''
            contactName: ''
            phone: ''
            email: ''
          reviewedAt: '2019-08-24T14:15:22Z'
          archivedAt: '2019-08-24T14:15:22Z'
          notes: ''
          status: processed
          types:
          - type: document-types
            id: 60a27c517fd4e152a9642347
          flag:
            addedOn: '2019-08-24T14:15:22Z'
            severityLevel: low
            affectedSubjects:
            - string
            notes: ''
            user:
              id: 60a27c51fcd891823568ed24
              type: users
          appliesToAllProjects: true
          expirationDate: '2019-08-24'
          friendlyName: Acord25.pdf
          data: {}
          metadata: {}
          updatedAt: '2019-08-24T14:15:22Z'
          createdAt: '2019-08-24T14:15:22Z'
          archivedBy:
            id: 60a27c51fcd891823568ed24
            type: users
          reviewedBy: null
          url: https://trustlayer-documents.s3.us-west-1.amazonaws.com/...
          issueDate: '2019-01-22'
      properties:
        type:
          type: string
          default: documents
          readOnly: true
        id:
          type: string
          readOnly: true
        issuedBy:
          type: object
          properties:
            name:
              type: string
            address:
              type: string
            contactName:
              type: string
            phone:
              type: string
            email:
              type: string
        reviewedAt:
          type: string
          format: date-time
          readOnly: true
        archivedAt:
          type: string
          format: date-time
          readOnly: true
        notes:
          type: string
        status:
          type: string
          minLength: 1
          readOnly: true
        types:
          type: array
          uniqueItems: true
          minItems: 0
          items:
            oneOf:
            - $ref: '#/components/schemas/reference'
            - $ref: '#/components/schemas/document-type'
        flag:
          type: object
          properties:
            addedOn:
              type: string
              format: date-time
            severityLevel:
              type: string
              minLength: 1
              enum:
              - low
              - medium
              - high
            affectedSubjects:
              type: array
              uniqueItems: true
              items:
                type: string
            notes:
              type: string
            user:
              oneOf:
              - $ref: '#/components/schemas/reference'
              - $ref: '#/components/schemas/user'
        appliesToAllProjects:
          type: boolean
        expirationDate:
          type: string
          format: date
        name:
          type: string
          minLength: 1
        data:
          type: object
        metadata:
          type: object
        updatedAt:
          type: string
          format: date-time
          readOnly: true
        createdAt:
          type: string
          format: date-time
          readOnly: true
        archivedBy:
          oneOf:
          - $ref: '#/components/schemas/reference'
          - $ref: '#/components/schemas/user'
          - {}
        reviewedBy:
  

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