Benchling App Canvas API

Represents a Benchling App canvas, an embedded UI surface that apps use to render custom interactive content within notebook entries, entry templates, assay runs, or app homepages. Each canvas belongs to a single app and contains a list of UI blocks that define the canvas layout and interactivity.

Operations 7

POST /app-canvas Create AppCanvas #
GET /app-canvas/{app_canvas_id} Get AppCanvas by ID #
PATCH /app-canvas/{app_canvas_id} Update AppCanvas #
POST /app-canvas:batch-create Batch create AppCanvas #
PATCH /app-canvas:batch-update Batch update AppCanvas #
POST /app-canvas:bulk-create Bulk create AppCanvas #
PATCH /app-canvas:bulk-update Bulk update AppCanvas #

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-appcanvas-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-appcanvas-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 App Canvas API
  version: 2.0.0
  description: 'Represents a Benchling App canvas, an embedded UI surface that apps use to render custom

    interactive content within notebook entries, entry templates, assay runs, or app homepages.

    Each canvas belongs to a single app and contains a list of UI blocks that define the

    canvas layout and interactivity.'
servers:
- url: /api/v3
security:
- oAuth: []
- basicApiKeyAuth: []
tags:
- description: 'Represents a Benchling App canvas, an embedded UI surface that apps use to render custom

    interactive content within notebook entries, entry templates, assay runs, or app homepages.

    Each canvas belongs to a single app and contains a list of UI blocks that define the

    canvas layout and interactivity.'
  name: AppCanvas
  x-bnch-organization: Benchling
paths:
  /app-canvas:
    post:
      description: Create AppCanvas.
      operationId: AppCanvas.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/CreateAppCanvasInput'
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AppCanvas'
          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 AppCanvas
      tags:
      - AppCanvas
      x-bnch-rate-limit-tier: 4
  /app-canvas/{app_canvas_id}:
    get:
      description: Get a single AppCanvas by ID.
      operationId: AppCanvas.Get
      parameters:
      - description: ID of the AppCanvas.
        in: path
        name: app_canvas_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/AppCanvas'
          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 AppCanvas by ID
      tags:
      - AppCanvas
      x-bnch-rate-limit-tier: 5
    patch:
      description: Update AppCanvas.
      operationId: AppCanvas.Update
      parameters:
      - description: ID of the AppCanvas.
        in: path
        name: app_canvas_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/UpdateAppCanvasInput'
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AppCanvas'
          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 AppCanvas
      tags:
      - AppCanvas
      x-bnch-rate-limit-tier: 4
  /app-canvas:batch-create:
    post:
      description: Batch create AppCanvas synchronously in one transaction. Maximum 25 items per request.
      operationId: AppCanvas.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/CreateAppCanvasInput'
                  maxItems: 25
                  minItems: 1
                  type: array
              required:
              - items
              type: object
      responses:
        '201':
          content:
            application/json:
              schema:
                additionalProperties: false
                properties:
                  items:
                    items:
                      $ref: '#/components/schemas/AppCanvas'
                    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 AppCanvas
      tags:
      - AppCanvas
      x-bnch-rate-limit-tier: 3
  /app-canvas:batch-update:
    patch:
      description: Batch update AppCanvas synchronously in one transaction. Maximum 25 items per request.
      operationId: AppCanvas.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/UpdateAppCanvasInputWithPathParams'
                  maxItems: 25
                  minItems: 1
                  type: array
              required:
              - items
              type: object
      responses:
        '200':
          content:
            application/json:
              schema:
                additionalProperties: false
                properties:
                  items:
                    items:
                      $ref: '#/components/schemas/AppCanvas'
                    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 AppCanvas
      tags:
      - AppCanvas
      x-bnch-rate-limit-tier: 3
  /app-canvas:bulk-create:
    post:
      description: Bulk create AppCanvas.
      operationId: AppCanvas.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 AppCanvas
      tags:
      - AppCanvas
      x-bnch-rate-limit-tier: 2
  /app-canvas:bulk-update:
    patch:
      description: Bulk update AppCanvas.
      operationId: AppCanvas.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 AppCanvas
      tags:
      - AppCanvas
      x-bnch-rate-limit-tier: 2
components:
  schemas:
    IAppInstallationRef:
      properties:
        __typename:
          type: string
        id:
          format: api_id
          type: string
      type: object
    TableUiBlock:
      description: A table block that displays tabular data from a dataset or data frame.
      properties:
        __typename:
          type: string
        dataFrameId:
          type: string
        enabled:
          type:
          - 'null'
          - boolean
        id:
          type: string
        name:
          type: string
      type: object
    SectionUiBlockInput:
      additionalProperties: false
      properties:
        children:
          items:
            $ref: '#/components/schemas/UiBlockLeafNodeInput'
          type: array
        id:
          type: string
        type:
          enum:
          - SECTION
          type: string
      required:
      - type
      - id
      - children
      type: object
    SearchInputUiBlockInput:
      additionalProperties: false
      properties:
        enabled:
          type: boolean
        id:
          type: string
        itemType:
          enum:
          - DNA_SEQUENCE
          - DNA_OLIGO
          - AA_SEQUENCE
          - CUSTOM_ENTITY
          - MIXTURE
          - BOX
          - CONTAINER
          - LOCATION
          - PLATE
          - WORKLIST
          type: string
        label:
          type: string
        placeholder:
          type: string
        required:
          type: boolean
        schemaId:
          type: string
        type:
          enum:
          - SEARCH_INPUT
          type: string
        value:
          type: string
      required:
      - type
      - id
      - itemType
      type: object
    AppCanvasUiBlockInput:
      allOf:
      - properties:
          type:
            enum:
            - BUTTON
            - CHIP
            - DROPDOWN
            - DROPDOWN_MULTIVALUE
            - FILE_UPLOAD
            - MARKDOWN
            - SEARCH_INPUT
            - SEARCH_INPUT_MULTIVALUE
            - SECTION
            - SELECTOR_INPUT
            - SELECTOR_INPUT_MULTIVALUE
            - TABLE
            - TEXT_INPUT
            type: string
        required:
        - type
      - oneOf:
        - $ref: '#/components/schemas/ButtonUiBlockInput'
        - $ref: '#/components/schemas/ChipUiBlockInput'
        - $ref: '#/components/schemas/DropdownMultiValueUiBlockInput'
        - $ref: '#/components/schemas/DropdownUiBlockInput'
        - $ref: '#/components/schemas/FileUploadUiBlockInput'
        - $ref: '#/components/schemas/MarkdownUiBlockInput'
        - $ref: '#/components/schemas/SearchInputMultiValueUiBlockInput'
        - $ref: '#/components/schemas/SearchInputUiBlockInput'
        - $ref: '#/components/schemas/SectionUiBlockInput'
        - $ref: '#/components/schemas/SelectorInputMultiValueUiBlockInput'
        - $ref: '#/components/schemas/SelectorInputUiBlockInput'
        - $ref: '#/components/schemas/TableUiBlockInput'
        - $ref: '#/components/schemas/TextInputUiBlockInput'
      discriminator:
        propertyName: type
      type: object
    MarkdownUiBlock:
      description: A block that renders Markdown content.
      properties:
        __typename:
          type: string
        id:
          type: string
        value:
          type: string
      type: object
    TextInputUiBlock:
      description: A text input block that accepts freeform user text.
      properties:
        __typename:
          type: string
        enabled:
          type:
          - 'null'
          - boolean
        id:
          type: string
        label:
          type:
          - 'null'
          - string
        placeholder:
          type:
          - 'null'
          - string
        required:
          type:
          - 'null'
          - boolean
        value:
          type:
          - 'null'
          - string
      type: object
    SelectorInputMultiValueUiBlock:
      description: A multi-select selector input block with predefined options.
      properties:
        __typename:
          type: string
        enabled:
          type:
          - 'null'
          - boolean
        id:
          type: string
        label:
          type:
          - 'null'
          - string
        options:
          items:
            type: string
          type: array
        placeholder:
          type:
          - 'null'
          - string
        required:
          type:
          - 'null'
          - boolean
        value:
          oneOf:
          - items:
              type: string
            type: array
          - type: 'null'
      type: object
    DropdownUiBlockInput:
      additionalProperties: false
      properties:
        dropdownId:
          type: string
        enabled:
          type: boolean
        id:
          type: string
        label:
          type: string
        placeholder:
          type: string
        required:
          type: boolean
        type:
          enum:
          - DROPDOWN
          type: string
        value:
          type: string
      required:
      - type
      - id
      - dropdownId
      type: object
    ChipUiBlockInput:
      additionalProperties: false
      properties:
        id:
          type: string
        type:
          enum:
          - CHIP
          type: string
        value:
          type: string
      required:
      - type
      - id
      - value
      type: object
    UiBlockLeafNodeInput:
      allOf:
      - properties:
          type:
            enum:
            - BUTTON
            - CHIP
            - DROPDOWN
            - DROPDOWN_MULTIVALUE
            - FILE_UPLOAD
            - MARKDOWN
            - SEARCH_INPUT
            - SEARCH_INPUT_MULTIVALUE
            - SELECTOR_INPUT
            - SELECTOR_INPUT_MULTIVALUE
            - TEXT_INPUT
            type: string
        required:
        - type
      - oneOf:
        - $ref: '#/components/schemas/ButtonUiBlockInput'
        - $ref: '#/components/schemas/ChipUiBlockInput'
        - $ref: '#/components/schemas/DropdownMultiValueUiBlockInput'
        - $ref: '#/components/schemas/DropdownUiBlockInput'
        - $ref: '#/components/schemas/FileUploadUiBlockInput'
        - $ref: '#/components/schemas/MarkdownUiBlockInput'
        - $ref: '#/components/schemas/SearchInputMultiValueUiBlockInput'
        - $ref: '#/components/schemas/SearchInputUiBlockInput'
        - $ref: '#/components/schemas/SelectorInputMultiValueUiBlockInput'
        - $ref: '#/components/schemas/SelectorInputUiBlockInput'
        - $ref: '#/components/schemas/TextInputUiBlockInput'
      discriminator:
        propertyName: type
      type: object
    UpdateAppCanvasInputWithPathParams:
      additionalProperties: false
      properties:
        archiveReason:
          type: string
        archived:
          type: boolean
        blocks:
          description: Replacement list of UI blocks for the canvas layout.
          items:
            $ref: '#/components/schemas/AppCanvasUiBlockInput'
          type: array
        data:
          description: JSON string (max 5 KiB) of app-managed data not rendered in the canvas UI.
          type:
          - 'null'
          - string
        enabled:
          description: Whether the canvas is interactable. When false, all blocks are disabled regardless of their individual enabled settings.
          type: boolean
        id:
          type: string
        sessionId:
          description: App session ID whose status messages are shown in the canvas.
          type:
          - 'null'
          - string
      required:
      - id
      type: object
    UpdateAppCanvasInput:
      additionalProperties: false
      properties:
        archiveReason:
          type: string
        archived:
          type: boolean
        blocks:
          description: Replacement list of UI blocks for the canvas layout.
          items:
            $ref: '#/components/schemas/AppCanvasUiBlockInput'
          type: array
        data:
          description: JSON string (max 5 KiB) of app-managed data not rendered in the canvas UI.
          type:
          - 'null'
          - string
        enabled:
          description: Whether the canvas is interactable. When false, all blocks are disabled regardless of their individual enabled settings.
          type: boolean
        sessionId:
          description: App session ID whose status messages are shown in the canvas.
          type:
          - 'null'
          - string
      type: object
    MarkdownUiBlockInput:
      additionalProperties: false
      properties:
        id:
          type: string
        type:
          enum:
          - MARKDOWN
          type: string
        value:
          type: string
      required:
      - type
      - id
      - value
      type: object
    SearchInputMultiValueUiBlock:
      description: A multi-select search input block for selecting multiple Benchling entities.
      properties:
        __typename:
          type: string
        enabled:
          type:
          - 'null'
          - boolean
        id:
          type: string
        itemType:
          enum:
          - DNA_SEQUENCE
          - DNA_OLIGO
          - AA_SEQUENCE
          - CUSTOM_ENTITY
          - MIXTURE
          - BOX
          - CONTAINER
          - LOCATION
          - PLATE
          - WORKLIST
          type: string
        label:
          type:
          - 'null'
          - string
        placeholder:
          type:
          - 'null'
          - string
        required:
          type:
          - 'null'
          - boolean
        schemaId:
          type:
          - 'null'
          - string
        value:
          oneOf:
          - items:
              type: string
            type: array
          - type: 'null'
      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
    ButtonUiBlockInput:
      additionalProperties: false
      properties:
        enabled:
          type: boolean
        id:
          type: string
        text:
          type: string
        type:
          enum:
          - BUTTON
          type: string
      required:
      - type
      - id
      - text
      type: object
    SelectorInputUiBlockInput:
      additionalProperties: false
      properties:
        enabled:
          type: boolean
        id:
          type: string
        label:
          type: string
        options:
          items:
            type: string
          type: array
        placeholder:
          type: string
        required:
          type: boolean
        type:
          enum:
          - SELECTOR_INPUT
          type: string
        value:
          type: string
      required:
      - type
      - id
      - options
      type: object
    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
    FileUploadUiBlock:
      description: A file upload block that accepts one or more file attachments.
      properties:
        __typename:
          type: string
        enabled:
          type:
          - 'null'
          - boolean
        fileTypes:
          oneOf:
          - items:
              type: string
            type: array
          - type: 'null'
        id:
          type: string
        label:
          type:
          - 'null'
          - string
        maxFiles:
          type:
          - 'null'
          - integer
        required:
          type:
          - 'null'
          - boolean
        value:
          oneOf:
          - items:
              type: string
            type: array
          - type: 'null'
      type: object
    SearchInputMultiValueUiBlockInput:
      additionalProperties: false
      properties:
        enabled:
          type: boolean
        id:
          type: string
        itemType:
          enum:
          - DNA_SEQUENCE
          - DNA_OLIGO
          - AA_SEQUENCE
          - CUSTOM_ENTITY
          - MIXTURE
          - BOX
          - CONTAINER
          - LOCATION
          - PLATE
          - WORKLIST
          type: string
        label:
          type: string
        placeholder:
          type: string
        required:
          type: boolean
        schemaId:
          type: string
        type:
          enum:
          - SEARCH_INPUT_MULTIVALUE
          type: string
        value:
          items:
            type: string
          type: array
      required:
      - type
      - id
      - itemType
      type: object
    TableUiBlockInput:
      additionalProperties: false
      properties:
        dataFrameId:
          description: Data frame ID backing the table.
          type: string
        enabled:
          type: boolean
        id:
          type: string
        name:
          type: string
        type:
          enum:
          - TABLE
          type: string
      required:
      - type
      - id
      - name
      - dataFrameId
      type: object
    SectionUiBlock:
      description: A section block that groups child blocks together. Children are leaf blocks only.
      properties:
        __typename:
          type: string
        children:
          items:
            anyOf:
            - $ref: '#/components/schemas/ButtonUiBlock'
            - $ref: '#/components/schemas/ChipUiBlock'
            - $ref: '#/components/schemas/DropdownUiBlock'
            - $ref: '#/components/schemas/DropdownMultiValueUiBlock'
            - $ref: '#/components/schemas/FileUploadUiBlock'
            - $ref: '#/components/schemas/MarkdownUiBlock'
            - $ref: '#/components/schemas/SearchInputUiBlock'
            - $ref: '#/components/schemas/SearchInputMultiValueUiBlock'
            - $ref: '#/components/schemas/SelectorInputUiBlock'
            - $ref: '#/components/schemas/SelectorInputMultiValueUiBlock'
            - $ref: '#/components/schemas/TextInputUiBlock'
            description: Union of ButtonUiBlock, ChipUiBlock, DropdownUiBlock, DropdownMultiValueUiBlock, FileUploadUiBlock, MarkdownUiBlock, SearchInputUiBlock, SearchInputMultiValueUiBlock, SelectorInputUiBlock, SelectorInputMultiValueUiBlock, TextInputUiBlock
            discriminator:
              propertyName: __typename
          type: array
        id:
          type: string
      type: object
    SelectorInputMultiValueUiBlockInput:
      additionalProperties: false
      properties:
        enabled:
          type: boolean
        id:
          type: string
        label:
          type: string
        options:
          items:
            type: string
          type: array
        placeholder:
          type: string
        required:
          type: boolean
        type:
          enum:
          - SELECTOR_INPUT_MULTIVALUE
          type: string
        value:
          items:
            type: string
          type: array
      required:
      - type
      - id
      - options
      type: object
    DropdownMultiValueUiBlockInput:
      additionalProperties: false
      properties:
        dropdownId:
          type: string
        enabled:
          type: boolean
        id:
          type: string
        label:
          type: string
        placeholder:
          type: string
        required:
          type: boolean
        type:
          enum:
          - DROPDOWN_MULTIVALUE
          type: string
        value:
          items:
            type: string
          type: array
      required:
      - type
      - id
      - dropdownId
      type: object
    CreateAppCanvasInput:
      additionalProperties: false
      properties:
        appId:
          description: API ID of the Benchling App that owns this canvas.
          type: string
        blocks:
          description: UI blocks defining the canvas layout and interactivity.
          items:
            $ref: '#/components/schemas/AppCanvasUiBlockInput'
          type: array
        data:
          description: Optional JSON string (max 5 KiB) of app-managed data not rendered in the canvas UI.
          type: string
        enabled:
          description: Whether the canvas is interactable. When false, all blocks are disabled regardless of their individual enabled settings.
          type: boolean
        featureId:
          description: Feature ID from the app manifest that this canvas corresponds to.
          type: string
        resourceId:
          description: Identifier of the resource object to attach the canvas to.
          type: string
        sessionId:
          description: Optional app session ID whose status messages are shown in the canvas.
          type: string
      required:
      - appId
      - resourceId
      - featureId
      - blocks
      type: object
    FileUploadUiBlockInput:
      additionalProperties: false
      properties:
        enabled:
          type: boolean
        fileTypes:
          items:
            type: string
          type: array
        id:
          type: string
        label:
          type: string
        maxFiles:
          type: integer
        required:
          type: boolean
        type:
          enum:
          - FILE_UPLOAD
          type: string
        value:
          items:
            type: string
          type: array
      required:
      - type
      - id
      type: object
    SearchInputUiBlock:
      description: A search input block for selecting a single Benchling entity.
      properties:
        __typename:
          type: string
        enabled:
          type:
          - 'null'
          - boolean
        id:
          type: string
        itemType:
          enum:
          - DNA_SEQUENCE
          - DNA_OLIGO
          - AA_SEQUENCE
          - CUSTOM_ENTITY
          - MIXTURE
          - BOX
          - CONTAINER
          - LOCATION
          - PLATE
          - WORKLIST
          type: string
        label:
          type:
          - 'null'
          - string
        placeholder:
          type:
          - 'null'
          - string
        required:
          type:
          - 'null'
          - boolean
        schemaId:
          type:
          - 'null'
          - string
        value:
          type:
          - 'null'
          - string
      type: object
    ChipUiBlock:
      description: A chip block that displays a short piece of information.
      properties:
        __typename:
          type: string
        id:
          type: string
        value:
          type: string
      type: object
    DropdownMultiValueUiBlock:
      description: A multi-select dropdown block backed by a Benchling dropdown registry.
      properties:
        __typename:
          type: string
        dropdownId:
          type: string
        enabled:
          type:
          - 'null'
          - boolean
        id:
          type: string
        label:
          type:
          - 'null'
          - string
        placeholder:
          type:
          - 'null'
          - string
        required:
          type:
          - 'null'
          - boolean
        value:
          oneOf:
          - items:
              type: string
            type: array
          - type: 'null'
      type: object
    SelectorInputUiBlock:
      description: A selector input block with predefined options.
      properties:
        __typename:
          type: string
        enabled:
          type:
          - 'null'
          - boolean
        id:
          type: string
        label:
          type:
          - 'null'
          - string
        options:
          items:
            type: string
          type: array
        placeholder:
          type:
          - 'null'
          - string
        required:
          type:
          - 'null'
          - boolean
        value:
          type:
          - 'null'
          - string
      type: object
    DropdownUiBlock:
      description: A dropdown block backed by a Benchling dropdown registry.
      properties:
        __typename:
          type: string
        dropdownId:
          type: string
        enabled:
          type:
          - 'null'
          - boolean
        id:
          type: string
        label:
          type:
          - 'null'
          - string
        placeholder:
          type:
          - 'null'
          - string
        required:
          type:
          - 'null'
          - boolean
        value:
          type:
          - 'null'
          - string
      type: object
    GeneralError:
      properties:
        detail:
          type:
          - 'null'
          - string
          - object
        instance:
          type: string
        status:
          type: integer
        title:
          type:
          - 'null'
          - string
        type:
          type: string
      required:
      - type
      - title
      - detail
      - status
      - instance
      type: object
    TextInputUiBlockInput:
      additionalProperties: false
      properties:
        enabled:
          type: boolean
        id:
          type: string
        label:
          type: string
        placeholder:
          type: string
        required:
          type: boolean
        type:
          enum:
          - TEXT_INPUT
          type: string
        value:
          type: string
      required:
      - type
      - id
      type: object
    AppCanvas:
      description: 'Represents a Benchling App canvas, an embedded UI surface that apps use to render custom

        interactive content within notebook entries, entry templates, assay runs, or app homepages.

        Each canvas belongs to a single app and contains a list of UI blocks that define the

        canvas layout and interactivity.'
      properties:
        __typename:
          type: string
        app:
          $ref: '#/components/schemas/IAppInstallationRef'
        archiveReason:
          type:
          - 'null'
          - string
        archived:
          type: boolean
  

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