Benchling Worksheet API

A structured document container used to organize and execute procedural work within Benchling's notebook system. Worksheets contain ordered `WorksheetStepGroup`s, each holding `WorksheetStep`s that represent individual tasks or documentation units. Each step has an associated `Document` for capturing content. Worksheets support workflow integration through associated `WorkflowTask`s, can be linked to `Study` objects for experimental context, and include review capabilities (see `Review`). They are stored within `Folder`s and support archival.

Operations 4

GET /worksheet/items List Worksheet items #
GET /worksheet/{worksheet_id} Get Worksheet by ID #
GET /worksheet/{worksheet_id}/applicable-review-processes/items List ReviewProcess items #
GET /worksheet/{worksheet_id}/authors/items List Principal items #

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-worksheet-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-worksheet-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 Worksheet API
  version: 2.0.0
  description: 'A structured document container used to organize and execute procedural work within

    Benchling''s notebook system. Worksheets contain ordered `WorksheetStepGroup`s, each

    holding `WorksheetStep`s that represent individual tasks or documentation units. Each

    step has an associated `Document` for capturing content. Worksheets support workflow

    integration through associated `WorkflowTask`s, can be linked to `Study` objects for

    experimental context, and include review capabilities (see `Review`). They are stored

    within `Folder`s and support archival.'
servers:
- url: /api/v3
security:
- oAuth: []
- basicApiKeyAuth: []
tags:
- description: 'A structured document container used to organize and execute procedural work within

    Benchling''s notebook system. Worksheets contain ordered `WorksheetStepGroup`s, each

    holding `WorksheetStep`s that represent individual tasks or documentation units. Each

    step has an associated `Document` for capturing content. Worksheets support workflow

    integration through associated `WorkflowTask`s, can be linked to `Study` objects for

    experimental context, and include review capabilities (see `Review`). They are stored

    within `Folder`s and support archival.'
  name: Worksheet
  x-bnch-organization: Benchling
paths:
  /worksheet/items:
    get:
      description: List Worksheet items.
      operationId: Worksheet.List
      parameters:
      - $ref: '#/components/parameters/archiveReason.anyOf'
      - $ref: '#/components/parameters/archived.anyOf'
      - $ref: '#/components/parameters/createdAt.gt'
      - $ref: '#/components/parameters/createdAt.gte'
      - $ref: '#/components/parameters/createdAt.lt'
      - $ref: '#/components/parameters/createdAt.lte'
      - $ref: '#/components/parameters/creator.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'
      - description: 'Method by which to order results. Valid sorts are: createdAt (created time, oldest first) and 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:
          - createdAt:asc
          - createdAt:desc
          - 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/WorksheetPaginatedList'
          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 Worksheet items
      tags:
      - Worksheet
      x-bnch-rate-limit-tier: 4
  /worksheet/{worksheet_id}:
    get:
      description: Get a single Worksheet by ID.
      operationId: Worksheet.Get
      parameters:
      - description: ID of the Worksheet.
        in: path
        name: worksheet_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/Worksheet'
          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 Worksheet by ID
      tags:
      - Worksheet
      x-bnch-rate-limit-tier: 5
  /worksheet/{worksheet_id}/applicable-review-processes/items:
    get:
      description: List ReviewProcess items.
      operationId: Worksheet.applicableReviewProcesses.List
      parameters:
      - description: ID of the Worksheet.
        in: path
        name: worksheet_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:
      - Worksheet
      x-bnch-rate-limit-tier: 4
  /worksheet/{worksheet_id}/authors/items:
    get:
      description: List Principal items.
      operationId: Worksheet.authors.List
      parameters:
      - description: ID of the Worksheet.
        in: path
        name: worksheet_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/PrincipalUnpaginatedList'
          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 Principal items
      tags:
      - Worksheet
      x-bnch-rate-limit-tier: 4
components:
  schemas:
    LegacyAppInstallation:
      description: 'Represents a legacy (pre-App Store) Benchling App installation on a tenant. Legacy apps

        are configured directly with webhook URLs and configuration specs rather than through

        app definition versions. This type is maintained for backward compatibility with older

        app integrations. For new apps, see `AppInstallation`.'
      properties:
        __typename:
          type: string
        archiveReason:
          type:
          - 'null'
          - string
        archived:
          type: boolean
        configurationSpecs:
          items:
            $ref: '#/components/schemas/AppConfigOption'
          type: array
        configurationValues:
          format: uri
          type: string
        createdAt:
          format: datetime
          type:
          - 'null'
          - string
        creator:
          oneOf:
          - $ref: '#/components/schemas/PrincipalRef'
          - type: 'null'
        description:
          type:
          - 'null'
          - string
        featureSpecs:
          items:
            anyOf:
            - $ref: '#/components/schemas/CanvasFeatureSpec'
            - $ref: '#/components/schemas/AssayRunFeatureSpec'
            - $ref: '#/components/schemas/AppHomepageFeatureSpec'
            description: Union of CanvasFeatureSpec, AssayRunFeatureSpec, AppHomepageFeatureSpec
            discriminator:
              propertyName: __typename
          type: array
        featureValues:
          items:
            $ref: '#/components/schemas/AssayRunFeatureValue'
          type: array
        id:
          type: string
        messageSubscriptions:
          items:
            $ref: '#/components/schemas/AppMessageSubscription'
          type: array
        modifiedAt:
          format: datetime
          type:
          - 'null'
          - string
        name:
          type: string
        publicKey:
          type:
          - 'null'
          - string
        versionNumber:
          type:
          - 'null'
          - string
        webhookUrl:
          type:
          - 'null'
          - string
      type: object
    JsonAppConfigSpec:
      description: Specifies that an app configuration field should accept a JSON value.
      properties:
        __typename:
          type: string
        requiredConfig:
          type:
          - 'null'
          - boolean
      type: object
    DateAppConfigSpec:
      description: Specifies that an app configuration field should accept a date value.
      properties:
        __typename:
          type: string
        requiredConfig:
          type:
          - 'null'
          - boolean
      type: object
    CanvasFeatureSpec:
      description: 'Defines a canvas feature for a Benchling App, which provides an embedded UI surface within

        entries or templates. Canvases allow apps to render custom interactive content.'
      properties:
        __typename:
          type: string
        featureId:
          type: string
        locations:
          oneOf:
          - items:
              enum:
              - ENTRY
              - ENTRY_TEMPLATE
              - APP_HOME
              type: string
            type: array
          - type: 'null'
        name:
          type: string
      type: object
    WorksheetPaginatedList:
      additionalProperties: false
      properties:
        items:
          items:
            $ref: '#/components/schemas/Worksheet'
          type: array
        nextToken:
          type: string
      type: object
    AppMessageSubscription:
      description: 'Represents an app''s subscription to a specific event type, specifying the event type and

        how notifications should be delivered (see `DeliveryMethod`).'
      properties:
        __typename:
          type: string
        deliveryMethod:
          enum:
          - WEBHOOK
          - WEBHOOK_INTERNAL
          type: string
        type:
          enum:
          - V2_BETA_CANVAS_CREATED
          - V2_CANVAS_CREATED
          - V2_CANVAS_USER_INTERACTED
          - V2_CANVAS_INITIALIZED
          - V2_APP_ACTIVATE_REQUESTED
          - V2_APP_DEACTIVATED
          - V2_APP_INSTALLED
          - V2_BETA_APP_CONFIGURATION_UPDATED
          - V2_ASSAY_RUN_CREATED
          - V2_ASSAY_RUN_UPDATED_FIELDS
          - V2_ENTITY_REGISTERED
          - V2_ENTRY_CREATED
          - V2_ENTRY_UPDATED_FIELDS
          - V2_ENTRY_UPDATED_REVIEW_RECORD
          - V2_REQUEST_CREATED
          - V2_REQUEST_UPDATED_FIELDS
          - V2_REQUEST_UPDATED_STATUS
          - V2_WORKFLOW_TASK_GROUP_CREATED
          - V2_WORKFLOW_TASK_GROUP_MAPPING_COMPLETED
          - V2_WORKFLOW_TASK_GROUP_UPDATED_WATCHERS
          - V2_WORKFLOW_TASK_CREATED
          - V2_WORKFLOW_TASK_UPDATED_ASSIGNEE
          - V2_WORKFLOW_TASK_UPDATED_SCHEDULED_ON
          - V2_WORKFLOW_TASK_UPDATED_STATUS
          - V2_WORKFLOW_TASK_UPDATED_FIELDS
          - V2_WORKFLOW_OUTPUT_CREATED
          - V2_WORKFLOW_OUTPUT_UPDATED_FIELDS
          - V2_AUTOMATION_FILE_TRANSFORM_UPDATED_STATUS_RUNNING
          - V2_AUTOMATION_FILE_TRANSFORM_UPDATED_STATUS_PENDING
          - V2_AUTOMATION_FILE_TRANSFORM_UPDATED_STATUS_SUCCEEDED
          - V2_AUTOMATION_FILE_TRANSFORM_UPDATED_STATUS_FAILED
          - V3_CUSTOM_ENTITY_CREATED
          - V3_CUSTOM_ENTITY_UPDATED
          - V3_DNA_OLIGO_CREATED
          - V3_DNA_OLIGO_UPDATED
          - V3_DNA_SEQUENCE_CREATED
          - V3_DNA_SEQUENCE_UPDATED
          - V3_ENTRY_CREATED
          - V3_PROJECT_CREATED
          - V3_PROJECT_UPDATED
          - V3_RNA_OLIGO_CREATED
          - V3_RNA_OLIGO_UPDATED
          - V3_RNA_SEQUENCE_CREATED
          - V3_RNA_SEQUENCE_UPDATED
          - V3_RUN_CREATED
          type: string
      type: object
    DropdownAppConfigSpec:
      description: Specifies that an app configuration field should be a dropdown with predefined options.
      properties:
        __typename:
          type: string
        options:
          oneOf:
          - items:
              $ref: '#/components/schemas/AppConfigDropdownOption'
            type: array
          - type: 'null'
        requiredConfig:
          type:
          - 'null'
          - boolean
      type: object
    ArrayAppConfigSpec:
      description: Specifies that an app configuration field should accept an array of values.
      properties:
        __typename:
          type: string
        elementDefinition:
          description: Defines the named config options allowed within this array and their type constraints.
          items:
            $ref: '#/components/schemas/ArrayAppConfigOption'
          type: array
        maxElements:
          description: Maximum number of elements allowed in the array (1-500); null means no maximum.
          type:
          - 'null'
          - integer
        minElements:
          description: Minimum number of elements allowed in the array (0-500); null means no minimum.
          type:
          - 'null'
          - integer
        requiredConfig:
          type:
          - 'null'
          - boolean
      type: object
    ReviewProcessStageRef:
      properties:
        __typename:
          type: string
        id:
          format: api_id
          type: string
      type: object
    ProjectRef:
      properties:
        __typename:
          type: string
        id:
          format: api_id
          type: string
      type: object
    ReviewRef:
      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
    PrincipalUnpaginatedList:
      additionalProperties: false
      properties:
        items:
          items:
            $ref: '#/components/schemas/Principal'
          type: array
      type: object
    AppInstallation:
      description: 'Represents an installed Benchling App on a tenant, created from an `AppDefinitionVersion`.

        App installations store tenant-specific configuration values and feature bindings. As a

        Principal, app installations can be attributed as actors for API operations and auditing.'
      properties:
        __typename:
          type: string
        archiveReason:
          type:
          - 'null'
          - string
        archived:
          type: boolean
        configurationValues:
          format: uri
          type: string
        createdAt:
          format: datetime
          type:
          - 'null'
          - string
        creator:
          oneOf:
          - $ref: '#/components/schemas/PrincipalRef'
          - type: 'null'
        featureValues:
          items:
            $ref: '#/components/schemas/AssayRunFeatureValue'
          type: array
        id:
          type: string
        modifiedAt:
          format: datetime
          type:
          - 'null'
          - string
        name:
          type: string
      type: object
    ServicePrincipal:
      description: 'Represents a non-human identity used for system integrations and automated processes

        within Benchling. Service principals act as the identity for service accounts that

        perform actions via APIs or background processes without human intervention. Unlike

        `User`, which represents a human user, ServicePrincipal is used when an integration

        or automated system needs to be attributed as the actor for auditing and attribution

        purposes. Service principals implement the Principal interface, allowing them to

        appear as creators or actors on domain objects. Also known as "service account" in

        some contexts.'
      properties:
        __typename:
          type: string
        id:
          type: string
        modifiedAt:
          format: datetime
          type:
          - 'null'
          - string
        name:
          type:
          - 'null'
          - string
      type: object
    AssayRunFeatureSpec:
      description: 'Defines an assay run feature for a Benchling App, allowing the app to process or generate

        lab automation run data.'
      properties:
        __typename:
          type: string
        featureId:
          type: string
        name:
          type: string
      type: object
    User:
      description: 'Represents a human user in Benchling who can log in, perform actions, and own data.

        Users belong to one or more Organizations and may be members of Teams within those

        organizations. As an Owner, users can own Projects, Folders, and other resources.

        As a Principal, users can be assigned as reviewers, authors, or collaborators on

        various items. Users have attributes like email and username for identification.

        Users are distinct from `ServicePrincipal`, which represents non-human service

        accounts used for integrations.'
      properties:
        __typename:
          type: string
        createdAt:
          format: datetime
          type: string
        email:
          type: string
        id:
          type: string
        lastSeen:
          format: datetime
          type:
          - 'null'
          - string
        modifiedAt:
          format: datetime
          type: string
        name:
          type:
          - 'null'
          - string
        status:
          enum:
          - ACTIVE
          - SUSPENDED
          type: string
        username:
          type: string
      type: object
    Worksheet:
      description: 'A structured document container used to organize and execute procedural work within

        Benchling''s notebook system. Worksheets contain ordered `WorksheetStepGroup`s, each

        holding `WorksheetStep`s that represent individual tasks or documentation units. Each

        step has an associated `Document` for capturing content. Worksheets support workflow

        integration through associated `WorkflowTask`s, can be linked to `Study` objects for

        experimental context, and include review capabilities (see `Review`). They are stored

        within `Folder`s and support archival.'
      properties:
        __typename:
          type: string
        applicableReviewProcesses:
          format: uri
          type: string
        archiveDatetime:
          format: datetime
          type:
          - 'null'
          - string
        archiveReason:
          type:
          - 'null'
          - string
        archiveUser:
          oneOf:
          - $ref: '#/components/schemas/PrincipalRef'
          - type: 'null'
        archived:
          type: boolean
        authors:
          oneOf:
          - format: uri
            type: string
          - type: 'null'
        createdAt:
          format: datetime
          type: string
        creator:
          $ref: '#/components/schemas/PrincipalRef'
        folder:
          $ref: '#/components/schemas/FolderRef'
        id:
          type: string
        modifiedAt:
          format: datetime
          type: string
        name:
          type: string
        review:
          oneOf:
          - $ref: '#/components/schemas/ReviewRef'
          - type: 'null'
        reviewSource:
          $ref: '#/components/schemas/ProjectRef'
      type: object
    AppHomepageFeatureSpec:
      description: 'Defines a homepage feature for a Benchling App, providing a dedicated landing page within

        the Benchling application for the app''s functionality.'
      properties:
        __typename:
          type: string
        featureId:
          type: string
        name:
          type: string
      type: object
    Principal:
      anyOf:
      - $ref: '#/components/schemas/AppInstallation'
      - $ref: '#/components/schemas/LegacyAppInstallation'
      - $ref: '#/components/schemas/ServicePrincipal'
      - $ref: '#/components/schemas/User'
      discriminator:
        propertyName: __typename
      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
    AppConfigWorkflowTaskSchemaOutput:
      description: Defines the output field structure for a workflow task schema configuration.
      properties:
        __typename:
          type: string
        fieldDefinitions:
          oneOf:
          - items:
              $ref: '#/components/schemas/AppConfigFieldDefinition'
            type: array
          - type: 'null'
      type: object
    ResourceAppConfigSpec:
      description: 'Specifies that an app configuration field should reference a Benchling object instance.

        The type field identifies the kind of object required, matching the BenchlingAppType

        values used in app manifests (e.g. dna_sequence, folder, registry). Covers all instance

        reference types with no additional spec constraints beyond requiredConfig. For schema

        references use SchemaAppConfigSpec or EntitySchemaAppConfigSpec.'
      properties:
        __typename:
          type: string
        requiredConfig:
          type:
          - 'null'
          - boolean
        type:
          enum:
          - BOX_SCHEMA
          - CONTAINER_SCHEMA
          - ENTRY_SCHEMA
          - LEGACY_REQUEST_SCHEMA
          - LOCATION_SCHEMA
          - PLATE_SCHEMA
          - RESULT_SCHEMA
          - RUN_SCHEMA
          - WORKFLOW_TASK_SCHEMA
          - AA_SEQUENCE
          - ASSAY_RESULT
          - ASSAY_RUN
          - AUTOMATION_INPUT_GENERATOR
          - AUTOMATION_OUTPUT_PROCESSOR
          - BLOB
          - BOX
          - CONTAINER
          - CUSTOM_ENTITY
          - DNA_ALIGNMENT
          - DNA_OLIGO
          - DNA_SEQUENCE
          - DROPDOWN
          - DROPDOWN_OPTION
          - ENTRY
          - FIELD
          - FOLDER
          - LEGACY_REQUEST
          - LOCATION
          - MIXTURE
          - MOLECULE
          - PLATE
          - PROJECT
          - REGISTRY
          - RNA_OLIGO
          - RNA_SEQUENCE
          - WORKFLOW_TASK_STATUS
          - WORKLIST
          - null
          type:
          - 'null'
          - string
      type: object
    IntegerAppConfigSpec:
      description: Specifies that an app configuration field should accept an integer value.
      properties:
        __typename:
          type: string
        enum:
          description: Optional enum constraint — if present, the value must be one of these integers.
          oneOf:
          - items:
              type: integer
            type: array
          - type: 'null'
        requiredConfig:
          type:
          - 'null'
          - boolean
      type: object
    AppConfigOption:
      description: 'Defines a configuration option in an app''s configuration schema. Each option has a name,

        optional description, and a configSpec defining the expected value type and validation.'
      properties:
        __typename:
          type: string
        configSpec:
          anyOf:
          - $ref: '#/components/schemas/BooleanAppConfigSpec'
          - $ref: '#/components/schemas/IntegerAppConfigSpec'
          - $ref: '#/components/schemas/FloatAppConfigSpec'
          - $ref: '#/components/schemas/TextAppConfigSpec'
          - $ref: '#/components/schemas/SecureTextAppConfigSpec'
          - $ref: '#/components/schemas/DateAppConfigSpec'
          - $ref: '#/components/schemas/DateTimeAppConfigSpec'
          - $ref: '#/components/schemas/JsonAppConfigSpec'
          - $ref: '#/components/schemas/ArrayAppConfigSpec'
          - $ref: '#/components/schemas/DropdownAppConfigSpec'
          - $ref: '#/components/schemas/EntitySchemaAppConfigSpec'
          - $ref: '#/components/schemas/WorkflowTaskSchemaAppConfigSpec'
          - $ref: '#/components/schemas/SchemaAppConfigSpec'
          - $ref: '#/components/schemas/ResourceAppConfigSpec'
          description: Union of BooleanAppConfigSpec, IntegerAppConfigSpec, FloatAppConfigSpec, TextAppConfigSpec, SecureTextAppConfigSpec, DateAppConfigSpec, DateTimeAppConfigSpec, JsonAppConfigSpec, ArrayAppConfigSpec, DropdownAppConfigSpec, EntitySchemaAppConfigSpec, WorkflowTaskSchemaAppConfigSpec, SchemaAppConfigSpec, ResourceAppConfigSpec
          discriminator:
            propertyName: __typename
        description:
          type:
          - 'null'
          - string
        name:
          type: string
      type: object
    BooleanAppConfigSpec:
      description: Specifies that an app configuration field should accept a boolean value.
      properties:
        __typename:
          type: string
        requiredConfig:
          type:
          - 'null'
          - boolean
      type: object
    PrincipalRef:
      properties:
        __typename:
          type: string
        id:
          format: api_id
          type: string
      type: object
    TextAppConfigSpec:
      description: Specifies that an app configuration field should accept a text string.
      properties:
        __typename:
          type: string
        enum:
          description: Optional enum constraint — if present, the value must be one of these strings.
          oneOf:
          - items:
              type: string
            type: array
          - type: 'null'
        requiredConfig:
          type:
          - 'null'
          - boolean
      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
    FolderRef:
      properties:
        __typename:
          type: string
        id:
          format: api_id
          type: string
      type: object
    FloatAppConfigSpec:
      description: Specifies that an app configuration field should accept a floating-point number.
      properties:
        __typename:
          type: string
        enum:
          description: Optional enum constraint — if present, the value must be one of these floats.
          oneOf:
          - items:
              type: number
            type: array
          - type: 'null'
        requiredConfig:
          type:
          - 'null'
          - boolean
      type: object
    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
      type: object
    AssayRunFeatureValue:
      description: 'Links an app''s assay run feature to a specific resource (typically a run schema) on a

        tenant. The featureId identifies the feature from the app definition, and resourceId

        references the tenant-specific resource it''s bound to.'
      properties:
        __typename:
          type: string
        featureId:
          description: Developer-specified feature ID as defined in the app manifest / app definition version
          type: string
        resourceId:
          type:
          - 'null'
          - string
      type: object
    AppConfigDropdownOption:
      description: Defines an option within a dropdown-type app configuration field.
      properties:
        __typename:
          type: string
        description:
          type:
          - 'null'
          - string
        name:
          type: string
        requiredConfig:
          type:
          - 'null'
          - boolean
      type: object
    WorkflowTaskSchemaAppConfigSpec:
      description: 'Specifies that an app configuration field should reference a workflow task schema.

        Kept separate from SchemaAppConfigSpec because it supports output field definitions.'
      properties:
        __typename:
          type: string
        fieldDefinitions:
          oneOf:
          - items:
              $ref: '#/components/schemas/AppConfigFieldDefinition'
            type: array
          - type: 'null'
        output:
          description: Output field definitions for the workflow task schema.
          oneOf:
          - $ref: '#/components/schemas/AppConfigWorkflowTaskSchemaOutput'
          - type: 'null'
        requiredConfig:
          type:
          - 'null'
          - b

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