Benchling Project API

A top-level organizational container in Benchling that groups related work and controls access permissions. Projects contain Folders (see `Folder`) which in turn hold entities, notebook entries, and other items. Each project has an owner (see `Owner`—typically a User or Organization) and access is managed through collaborations (see `Collaboration`). Projects serve as the primary unit for sharing and permission management: users who are not collaborators on a project cannot access its contents. The isDataModsEnabled flag controls whether data modification tracking is active for items in this project.

Operations 10

POST /project Create Project #
GET /project/items List Project items #
GET /project/{project_id} Get Project by ID #
PATCH /project/{project_id} Update Project #
GET /project/{project_id}/collaborations/items List Collaboration items #
GET /project/{project_id}/review-processes/items List ReviewProcess items #
POST /project:batch-create Batch create Project #
PATCH /project:batch-update Batch update Project #
POST /project:bulk-create Bulk create Project #
PATCH /project:bulk-update Bulk update Project #

Documentation

Specifications

Other Resources

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/benchling-project-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

benchling-project-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  license:
    name: Apache 2.0
    url: http://www.apache.org/licenses/LICENSE-2.0.html
  title: Benchling Project API
  version: 2.0.0
  description: 'A top-level organizational container in Benchling that groups related work and controls

    access permissions. Projects contain Folders (see `Folder`) which in turn hold entities,

    notebook entries, and other items. Each project has an owner (see `Owner`—typically a

    User or Organization) and access is managed through collaborations (see `Collaboration`).

    Projects serve as the primary unit for sharing and permission management: users who are

    not collaborators on a project cannot access its contents. The isDataModsEnabled flag

    controls whether data modification tracking is active for items in this project.'
servers:
- url: /api/v3
security:
- oAuth: []
- basicApiKeyAuth: []
tags:
- description: 'A top-level organizational container in Benchling that groups related work and controls

    access permissions. Projects contain Folders (see `Folder`) which in turn hold entities,

    notebook entries, and other items. Each project has an owner (see `Owner`—typically a

    User or Organization) and access is managed through collaborations (see `Collaboration`).

    Projects serve as the primary unit for sharing and permission management: users who are

    not collaborators on a project cannot access its contents. The isDataModsEnabled flag

    controls whether data modification tracking is active for items in this project.'
  name: Project
  x-bnch-organization: Benchling
paths:
  /project:
    post:
      description: Create Project.
      operationId: Project.Create
      parameters:
      - description: Set to true to access beta operations via /api/v3.
        in: header
        name: EARLY-ACCESS
        required: false
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateProjectInput'
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Project'
          description: Created
        '400':
          $ref: '#/components/responses/BadRequest'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalServerError'
      summary: Create Project
      tags:
      - Project
      x-bnch-rate-limit-tier: 4
  /project/items:
    get:
      description: List Project items.
      operationId: Project.List
      parameters:
      - $ref: '#/components/parameters/archiveReason.anyOf'
      - $ref: '#/components/parameters/archived.anyOf'
      - $ref: '#/components/parameters/id.anyOf'
      - $ref: '#/components/parameters/modifiedAt.gt'
      - $ref: '#/components/parameters/modifiedAt.gte'
      - $ref: '#/components/parameters/modifiedAt.lt'
      - $ref: '#/components/parameters/modifiedAt.lte'
      - $ref: '#/components/parameters/name.anyOf'
      - $ref: '#/components/parameters/name.anyOf.caseSensitive'
      - $ref: '#/components/parameters/nextToken'
      - $ref: '#/components/parameters/omit'
      - $ref: '#/components/parameters/pageSize'
      - $ref: '#/components/parameters/returning'
      - $ref: '#/components/parameters/reviewProcess.eq'
      - description: 'Method by which to order results. Valid sorts are: modifiedAt (modified time, oldest first). Use :asc or :desc to specify ascending or descending order. Default is modifiedAt:desc.'
        in: query
        name: sort
        schema:
          default: modifiedAt:desc
          enum:
          - modifiedAt:asc
          - modifiedAt:desc
          type: string
      - description: Set to true to access beta operations via /api/v3.
        in: header
        name: EARLY-ACCESS
        required: false
        schema:
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProjectPaginatedList'
          description: OK
          headers: {}
        '400':
          $ref: '#/components/responses/BadRequest'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalServerError'
      summary: List Project items
      tags:
      - Project
      x-bnch-rate-limit-tier: 4
  /project/{project_id}:
    get:
      description: Get a single Project by ID.
      operationId: Project.Get
      parameters:
      - description: ID of the Project.
        in: path
        name: project_id
        required: true
        schema:
          type: string
      - $ref: '#/components/parameters/returning'
      - $ref: '#/components/parameters/omit'
      - description: Set to true to access beta operations via /api/v3.
        in: header
        name: EARLY-ACCESS
        required: false
        schema:
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Project'
          description: OK
          headers: {}
        '400':
          $ref: '#/components/responses/BadRequest'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalServerError'
      summary: Get Project by ID
      tags:
      - Project
      x-bnch-rate-limit-tier: 5
    patch:
      description: Update Project.
      operationId: Project.Update
      parameters:
      - description: ID of the Project.
        in: path
        name: project_id
        required: true
        schema:
          type: string
      - description: Set to true to access beta operations via /api/v3.
        in: header
        name: EARLY-ACCESS
        required: false
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateProjectInput'
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Project'
          description: OK
        '400':
          $ref: '#/components/responses/BadRequest'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalServerError'
      summary: Update Project
      tags:
      - Project
      x-bnch-rate-limit-tier: 4
  /project/{project_id}/collaborations/items:
    get:
      description: List Collaboration items.
      operationId: Project.collaborations.List
      parameters:
      - description: ID of the Project.
        in: path
        name: project_id
        required: true
        schema:
          type: string
      - description: Set to true to access beta operations via /api/v3.
        in: header
        name: EARLY-ACCESS
        required: false
        schema:
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CollaborationUnpaginatedList'
          description: OK
          headers: {}
        '400':
          $ref: '#/components/responses/BadRequest'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalServerError'
      summary: List Collaboration items
      tags:
      - Project
      x-bnch-rate-limit-tier: 4
  /project/{project_id}/review-processes/items:
    get:
      description: List ReviewProcess items.
      operationId: Project.reviewProcesses.List
      parameters:
      - description: ID of the Project.
        in: path
        name: project_id
        required: true
        schema:
          type: string
      - description: Set to true to access beta operations via /api/v3.
        in: header
        name: EARLY-ACCESS
        required: false
        schema:
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReviewProcessUnpaginatedList'
          description: OK
          headers: {}
        '400':
          $ref: '#/components/responses/BadRequest'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalServerError'
      summary: List ReviewProcess items
      tags:
      - Project
      x-bnch-rate-limit-tier: 4
  /project:batch-create:
    post:
      description: Batch create Project synchronously in one transaction. Maximum 25 items per request.
      operationId: Project.BatchCreate
      parameters:
      - description: Set to true to access beta operations via /api/v3.
        in: header
        name: EARLY-ACCESS
        required: false
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              additionalProperties: false
              properties:
                items:
                  items:
                    $ref: '#/components/schemas/CreateProjectInput'
                  maxItems: 25
                  minItems: 1
                  type: array
              required:
              - items
              type: object
      responses:
        '201':
          content:
            application/json:
              schema:
                additionalProperties: false
                properties:
                  items:
                    items:
                      $ref: '#/components/schemas/Project'
                    type: array
                required:
                - items
                type: object
          description: Created
        '400':
          $ref: '#/components/responses/BadRequest'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalServerError'
      summary: Batch create Project
      tags:
      - Project
      x-bnch-rate-limit-tier: 3
  /project:batch-update:
    patch:
      description: Batch update Project synchronously in one transaction. Maximum 25 items per request.
      operationId: Project.BatchUpdate
      parameters:
      - description: Set to true to access beta operations via /api/v3.
        in: header
        name: EARLY-ACCESS
        required: false
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              additionalProperties: false
              properties:
                items:
                  items:
                    $ref: '#/components/schemas/UpdateProjectInputWithPathParams'
                  maxItems: 25
                  minItems: 1
                  type: array
              required:
              - items
              type: object
      responses:
        '200':
          content:
            application/json:
              schema:
                additionalProperties: false
                properties:
                  items:
                    items:
                      $ref: '#/components/schemas/Project'
                    type: array
                required:
                - items
                type: object
          description: OK
        '400':
          $ref: '#/components/responses/BadRequest'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalServerError'
      summary: Batch update Project
      tags:
      - Project
      x-bnch-rate-limit-tier: 3
  /project:bulk-create:
    post:
      description: Bulk create Project.
      operationId: Project.BulkCreate
      parameters:
      - description: Set to true to access beta operations via /api/v3.
        in: header
        name: EARLY-ACCESS
        required: false
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BulkImport'
      responses:
        '202':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AsyncTaskLink'
          description: Task started
        '400':
          $ref: '#/components/responses/BadRequest'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalServerError'
      summary: Bulk create Project
      tags:
      - Project
      x-bnch-rate-limit-tier: 2
  /project:bulk-update:
    patch:
      description: Bulk update Project.
      operationId: Project.BulkUpdate
      parameters:
      - description: Set to true to access beta operations via /api/v3.
        in: header
        name: EARLY-ACCESS
        required: false
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BulkImport'
      responses:
        '202':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AsyncTaskLink'
          description: Task started
        '400':
          $ref: '#/components/responses/BadRequest'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalServerError'
      summary: Bulk update Project
      tags:
      - Project
      x-bnch-rate-limit-tier: 2
webhooks:
  v3.project.created:
    post:
      description: Sent to Benchling Apps subscribed to `v3.project.created` when a Project they can access is created.
      operationId: Project.Created
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ProjectCreatedWebhookEnvelopeV3'
        description: The `v3.project.created` event.
        required: true
      responses:
        '200':
          description: Return a 200 status code to acknowledge receipt of the webhook.
      summary: Project created
      tags:
      - Project
  v3.project.updated:
    post:
      description: Sent to Benchling Apps subscribed to `v3.project.updated` when a Project they can access is updated. `message.properties` lists the properties that changed.
      operationId: Project.Updated
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ProjectUpdatedWebhookEnvelopeV3'
        description: The `v3.project.updated` event.
        required: true
      responses:
        '200':
          description: Return a 200 status code to acknowledge receipt of the webhook.
      summary: Project updated
      tags:
      - Project
components:
  parameters:
    name.anyOf.caseSensitive:
      description: Restricts results to those that match any of the specified names. Case sensitive. Ensure only one name filter is used at a time. Comma-separated list.
      explode: false
      in: query
      name: name.anyOf.caseSensitive
      schema:
        items:
          type: string
        maxItems: 100
        type: array
    pageSize:
      description: Number of results to return. Defaults to 50, maximum of 100.
      in: query
      name: pageSize
      schema:
        type: integer
    modifiedAt.gt:
      description: Datetime, in RFC 3339 format. Time zone defaults to UTC. Restricts results to those modified after the specified time. e.g. > 2017-04-30.
      in: query
      name: modifiedAt.gt
      schema:
        format: datetime
        type: string
    reviewProcess.eq:
      description: ID of a ReviewProcess.
      in: query
      name: reviewProcess.eq
      schema:
        type: string
    modifiedAt.lte:
      description: Datetime, in RFC 3339 format. Time zone defaults to UTC. Restricts results to those modified at or before the specified time. e.g. <= 2017-04-30.
      in: query
      name: modifiedAt.lte
      schema:
        format: datetime
        type: string
    id.anyOf:
      description: Restricts results to those matching any of the specified IDs. Comma-separated list.
      explode: false
      in: query
      name: id.anyOf
      schema:
        items:
          type: string
        maxItems: 100
        type: array
    modifiedAt.lt:
      description: Datetime, in RFC 3339 format. Time zone defaults to UTC. Restricts results to those modified before the specified time. e.g. < 2017-04-30.
      in: query
      name: modifiedAt.lt
      schema:
        format: datetime
        type: string
    modifiedAt.gte:
      description: Datetime, in RFC 3339 format. Time zone defaults to UTC. Restricts results to those modified at or after the specified time. e.g. >= 2017-04-30.
      in: query
      name: modifiedAt.gte
      schema:
        format: datetime
        type: string
    archiveReason.anyOf:
      description: Restricts items to those with any of the specified archive reasons. Use "NOT_ARCHIVED" to filter for unarchived items. Use "ANY_ARCHIVED" to filter for archived items regardless of reason. Use "ANY_ARCHIVED_OR_NOT_ARCHIVED" to return items for both archived and unarchived. Comma-separated list.
      explode: false
      in: query
      name: archiveReason.anyOf
      schema:
        items:
          type: string
        maxItems: 10
        type: array
    returning:
      description: Comma-separated list of top-level fields to include in each returned item. Cannot overlap with omit.
      explode: false
      in: query
      name: returning
      schema:
        items:
          type: string
        type: array
    archived.anyOf:
      description: If true, returns archived items. If false, returns unarchived items. If both true and false, returns archived and unarchived items. Comma-separated list.
      explode: false
      in: query
      name: archived.anyOf
      schema:
        items:
          type: boolean
        maxItems: 2
        type: array
    nextToken:
      description: Token for pagination
      in: query
      name: nextToken
      schema:
        type: string
    name.anyOf:
      description: Restricts results to those that match any of the specified names. Case insensitive. Warning - this filter can be non-performant due to case insensitivity. Ensure only one name filter is used at a time. Comma-separated list.
      explode: false
      in: query
      name: name.anyOf
      schema:
        items:
          type: string
        maxItems: 100
        type: array
    omit:
      description: Comma-separated list of top-level fields to omit from each returned item. Cannot overlap with returning.
      explode: false
      in: query
      name: omit
      schema:
        items:
          type: string
        type: array
  schemas:
    GroupCollaboratorInfo:
      description: 'Represents a Group that is the subject of a Collaboration, along with sub-group information.

        In Group Collaborations, the Resource may be shared with a sub-group of the Group, e.g.

        the Admins of a Team.'
      properties:
        __typename:
          type: string
        collaborator:
          $ref: '#/components/schemas/Group'
        role:
          enum:
          - MEMBER
          - ADMIN
          type: string
      type: object
    ProjectUpdatedWebhookV3:
      allOf:
      - $ref: '#/components/schemas/V3UpdateEventBase'
      - properties:
          type:
            description: The event type.
            enum:
            - v3.project.updated
            type: string
        required:
        - type
        type: object
      description: Message body of a `v3.project.updated` event.
    ReviewProcessStageRef:
      properties:
        __typename:
          type: string
        id:
          format: api_id
          type: string
      type: object
    WebhookApp:
      description: The Benchling App the webhook was delivered to.
      properties:
        id:
          description: API ID of the app.
          examples:
          - app_1jdbvuo2740aslk
          type: string
      required:
      - id
      type: object
    PolicyRef:
      properties:
        __typename:
          type: string
        id:
          format: api_id
          type: string
      type: object
    V3UpdateEventBase:
      allOf:
      - $ref: '#/components/schemas/V3EventBase'
      - properties:
          properties:
            description: Names of the properties that changed.
            examples:
            - - name
              - folderId
            items:
              type: string
            type: array
        required:
        - properties
        type: object
      description: Fields common to every v3 update event message.
    OwnerRef:
      properties:
        __typename:
          type: string
        id:
          format: api_id
          type: string
      type: object
    ReviewProcessUnpaginatedList:
      additionalProperties: false
      properties:
        items:
          items:
            $ref: '#/components/schemas/ReviewProcess'
          type: array
      type: object
    UpdateProjectInput:
      additionalProperties: false
      properties:
        archiveReason:
          type: string
        archived:
          type: boolean
        description:
          type:
          - 'null'
          - string
        hideParentFolderNamesForSharedItems:
          type: boolean
        lockSequences:
          type: boolean
        name:
          type: string
        ownerId:
          type: string
        public:
          type: boolean
      type: object
    CollaborationUnpaginatedList:
      additionalProperties: false
      properties:
        items:
          items:
            $ref: '#/components/schemas/Collaboration'
          type: array
      type: object
    Project:
      description: 'A top-level organizational container in Benchling that groups related work and controls

        access permissions. Projects contain Folders (see `Folder`) which in turn hold entities,

        notebook entries, and other items. Each project has an owner (see `Owner`—typically a

        User or Organization) and access is managed through collaborations (see `Collaboration`).

        Projects serve as the primary unit for sharing and permission management: users who are

        not collaborators on a project cannot access its contents. The isDataModsEnabled flag

        controls whether data modification tracking is active for items in this project.'
      properties:
        __typename:
          type: string
        archiveReason:
          type:
          - 'null'
          - string
        archived:
          type: boolean
        collaborations:
          description: List of access control information for this object.
          oneOf:
          - format: uri
            type: string
          - type: 'null'
        createdAt:
          format: datetime
          type:
          - 'null'
          - string
        description:
          type:
          - 'null'
          - string
        hideParentFolderNamesForSharedItems:
          type: boolean
        id:
          type: string
        isDataModsEnabled:
          type:
          - 'null'
          - boolean
        lockSequences:
          type: boolean
        modifiedAt:
          format: datetime
          type:
          - 'null'
          - string
        name:
          type:
          - 'null'
          - string
        owner:
          oneOf:
          - $ref: '#/components/schemas/OwnerRef'
          - type: 'null'
        public:
          type: boolean
        reviewProcesses:
          description: Review processes (a.k.a. review lifecycles) configured for this project.
          format: uri
          type: string
      type: object
    InternalServerError:
      properties:
        detail:
          type:
          - 'null'
          - string
          - object
        errorId:
          type: string
        instance:
          type: string
        status:
          type: integer
        title:
          type:
          - 'null'
          - string
        type:
          type: string
      required:
      - type
      - title
      - detail
      - status
      - instance
      type: object
    AsyncTaskLink:
      properties:
        pollingUri:
          format: uri
          type: string
        taskId:
          type: string
      type: object
    WebhookAppDefinition:
      description: The app definition the receiving app was installed from.
      properties:
        id:
          description: API ID of the app definition.
          examples:
          - appdef_1jdbvuo2740aslk
          type:
          - 'null'
          - string
        versionNumber:
          description: Version of the app definition the receiving app is installed at.
          examples:
          - 0.0.1
          type: string
      required:
      - id
      - versionNumber
      type: object
    Group:
      anyOf:
      - $ref: '#/components/schemas/Organization'
      - $ref: '#/components/schemas/Team'
      discriminator:
        propertyName: __typename
      type: object
    ProjectCreatedWebhookV3:
      allOf:
      - $ref: '#/components/schemas/V3EventBase'
      - properties:
          type:
            description: The event type.
            enum:
            - v3.project.created
            type: string
        required:
        - type
        type: object
      description: Message body of a `v3.project.created` event.
    BulkImport:
      example:
        fileId: scrfile_jdf8BV24kLmN
      properties:
        fileId:
          description: The API ID of the scratch file (`scrfile_XXXXXXXX`) containing the items to import. The referenced file must be a scratch file whose upload has completed successfully.
          type: string
      required:
      - fileId
      type: object
    Team:
      description: 'Represents a subgroup of users within an `Organization`, enabling finer-grained user

        management and data sharing. Teams belong to exactly one organization, and users may

        only join a team if they are already members of that team''s parent organization. Each

        team member has either ADMIN or MEMBER role (see `GroupMembership`): admins can manage

        team membership, while members receive standard access. Unlike Organizations, teams

        cannot directly own Projects or Folders—they are used for collaboration and access

        control purposes. Teams can be configured with `provisionedCapabilities` to grant

        specific Benchling capabilities to members upon joining. The `membersAreAdministratorsOfSchemas`

        flag controls whether team members can create and modify certain schema types.'
      properties:
        __typename:
          type: string
        createdAt:
          format: datetime
          type: string
        description:
          type: string
        id:
          type: string
        membersAreAdministratorsOfSchemas:
          description: 'Indicates that members of the team are able to create and modify schemas that do not implement the

            Collaboratable interface.'
          type: boolean
        memberships:
          format: uri
          type: string
        modifiedAt:
          format: datetime
          type: string
        name:
          type: string
        organization:
          $ref: '#/components/schemas/OrganizationRef'
      type: object
    PrincipalRef:
      properties:
        __typename:
          type: string
        id:
          format: api_id
          type: string
      type: object
    PrincipalCollaboratorInfo:
      description: Represents a Principal that is the subject for a Collaboration.
      properties:
        __typename:
          type: string
        collaborator:
          $ref: '#/components/schemas/PrincipalRef'
      type: object
    ReviewProcess:
      description: 'Defines a review process configuration that specifies how entries and other

        reviewable items should be reviewed. A ReviewProcess belongs to an Organization

        and can be associated with one or more Projects. When a review is initiated,

        it follows the stages defined in the current `ReviewProcessVersion`. Review

        processes enable organizations to enforce compliance requirements by defining

        who must review, in what order, and what actions are required. Also known as

        "Review Lifecycle" in the backend.'
      properties:
        __typename:
          type: string
        createdAt:
          description: Timestamp when this review process was created
          format: datetime
          type: string
        currentVersion:
          description: Current version of this review process
          oneOf:
          - $ref: '#/components/schemas/ReviewProcessVersion'
          - type: 'null'
        id:
          description: ID of the review process
          type: string
        modifiedAt:
          description: Timestamp when this review process was last modified
          format: datetime
          type: string
        name:
          description: Title of the review process
          type:
          - 'null'
          - string
        organization:
          description: The organization that owns this review process
          oneOf:
          - $ref: '#/components/schemas/OrganizationRef'
          - type: 'null'
        projects:
          description: All projects that point to this review process
          format: uri
          type: string
      type: object
    ProjectUpdatedWebhookEnvelopeV3:
      allOf:
      - $ref: '#/components/schemas/WebhookEnvelopeBaseV0'
      - properties:
          message:
            $ref: '#/components/schemas/ProjectUpdatedWebhookV3'
        required:
        - message
        type: object
      description: Request body Benchling sends for a `v3.project.updated` event.
    ReviewProcessVersion:
      description: 'A specific version of a ReviewProcess configuration. Review processes are versioned

        to allow changes to review requirements while preserving the rules that apply to

        in-progress reviews. Each version defines the process type (self-review, parallel,

        or sequential), the terminal state when complete, and the ordered list of

        `ReviewProcessStage`s that must be completed.'
      properties:
        __typename:
          type: string
        processType:
          description: Type of this review process
          enum:
          - SELF_REVIEW
          - PARALLEL
          - SEQUENTIAL
          - null
          type:
          - 'null'
          - string
        reviewStages:
          description: List of all stages the review must go through
          items:
            $ref: '#/components/schemas/ReviewProcessStageRef'
          type: array
        terminalState:
          description: Stage of the reviewable at the end of the review process
          enum:
          - APPROVED
          - COMPLETED
          - ACCEPTED
          - REVIEWED
          - WITNESSED
          - SELF_REVIEWED
          type: string
      type: object
    OrganizationRef:
      properties:
        __typename:
          type: string
        id:
          format: api_id
          type: string
      

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