Benchling Matrix Plate API

A MatrixPlate is a rack-style storage plate where Containers (tubes, vials) can be inserted into and removed from grid positions. Unlike FixedPlate or WellPlate where wells are permanently attached, MatrixPlate positions (see MatrixPlatePosition) can be empty or hold movable containers. This makes MatrixPlates ideal for tube racks, sample storage boxes with removable tubes, and other flexible storage formats. Each plate tracks its capacity (totalCapacity, availableCapacity, occupiedCapacity) and conforms to a MatrixPlateSchema that defines the grid dimensions and optionally restricts which ContainerSchema types can be stored. MatrixPlates can be stored in Locations, associated with Studies, and identified by barcode.

Operations 8

POST /matrix-plate Create MatrixPlate #
GET /matrix-plate/items List MatrixPlate items #
GET /matrix-plate/{matrix_plate_id} Get MatrixPlate by ID #
PATCH /matrix-plate/{matrix_plate_id} Update MatrixPlate #
POST /matrix-plate:batch-create Batch create MatrixPlate #
PATCH /matrix-plate:batch-update Batch update MatrixPlate #
POST /matrix-plate:bulk-create Bulk create MatrixPlate #
PATCH /matrix-plate:bulk-update Bulk update MatrixPlate #

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-matrixplate-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-matrixplate-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 Matrix Plate API
  version: 2.0.0
  description: 'A MatrixPlate is a rack-style storage plate where Containers (tubes, vials) can be

    inserted into and removed from grid positions. Unlike FixedPlate or WellPlate where

    wells are permanently attached, MatrixPlate positions (see MatrixPlatePosition) can

    be empty or hold movable containers. This makes MatrixPlates ideal for tube racks,

    sample storage boxes with removable tubes, and other flexible storage formats. Each

    plate tracks its capacity (totalCapacity, availableCapacity, occupiedCapacity) and

    conforms to a MatrixPlateSchema that defines the grid dimensions and optionally

    restricts which ContainerSchema types can be stored. MatrixPlates can be stored in

    Locations, associated with Studies, and identified by barcode.'
servers:
- url: /api/v3
security:
- oAuth: []
- basicApiKeyAuth: []
tags:
- description: 'A MatrixPlate is a rack-style storage plate where Containers (tubes, vials) can be

    inserted into and removed from grid positions. Unlike FixedPlate or WellPlate where

    wells are permanently attached, MatrixPlate positions (see MatrixPlatePosition) can

    be empty or hold movable containers. This makes MatrixPlates ideal for tube racks,

    sample storage boxes with removable tubes, and other flexible storage formats. Each

    plate tracks its capacity (totalCapacity, availableCapacity, occupiedCapacity) and

    conforms to a MatrixPlateSchema that defines the grid dimensions and optionally

    restricts which ContainerSchema types can be stored. MatrixPlates can be stored in

    Locations, associated with Studies, and identified by barcode.'
  name: MatrixPlate
  x-bnch-core-type: MatrixPlate
  x-bnch-organization: Benchling
paths:
  /matrix-plate:
    post:
      description: Create MatrixPlate.
      operationId: MatrixPlate.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/CreateMatrixPlateInput'
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MatrixPlate'
          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 MatrixPlate
      tags:
      - MatrixPlate
      x-bnch-rate-limit-tier: 4
  /matrix-plate/items:
    get:
      description: List MatrixPlate items.
      operationId: MatrixPlate.List
      parameters:
      - $ref: '#/components/parameters/archiveReason.anyOf'
      - $ref: '#/components/parameters/archived.anyOf'
      - $ref: '#/components/parameters/barcode.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/parentStorage.eq'
      - $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/MatrixPlatePaginatedList'
          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 MatrixPlate items
      tags:
      - MatrixPlate
      x-bnch-rate-limit-tier: 4
  /matrix-plate/{matrix_plate_id}:
    get:
      description: Get a single MatrixPlate by ID.
      operationId: MatrixPlate.Get
      parameters:
      - description: ID of the MatrixPlate.
        in: path
        name: matrix_plate_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/MatrixPlate'
          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 MatrixPlate by ID
      tags:
      - MatrixPlate
      x-bnch-rate-limit-tier: 5
    patch:
      description: Update MatrixPlate.
      operationId: MatrixPlate.Update
      parameters:
      - description: ID of the MatrixPlate.
        in: path
        name: matrix_plate_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/UpdateMatrixPlateInput'
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MatrixPlate'
          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 MatrixPlate
      tags:
      - MatrixPlate
      x-bnch-rate-limit-tier: 4
  /matrix-plate:batch-create:
    post:
      description: Batch create MatrixPlate synchronously in one transaction. Maximum 10 items per request.
      operationId: MatrixPlate.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/CreateMatrixPlateInput'
                  maxItems: 10
                  minItems: 1
                  type: array
              required:
              - items
              type: object
      responses:
        '201':
          content:
            application/json:
              schema:
                additionalProperties: false
                properties:
                  items:
                    items:
                      $ref: '#/components/schemas/MatrixPlate'
                    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 MatrixPlate
      tags:
      - MatrixPlate
      x-bnch-rate-limit-tier: 3
  /matrix-plate:batch-update:
    patch:
      description: Batch update MatrixPlate synchronously in one transaction. Maximum 10 items per request.
      operationId: MatrixPlate.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/UpdateMatrixPlateInputWithPathParams'
                  maxItems: 10
                  minItems: 1
                  type: array
              required:
              - items
              type: object
      responses:
        '200':
          content:
            application/json:
              schema:
                additionalProperties: false
                properties:
                  items:
                    items:
                      $ref: '#/components/schemas/MatrixPlate'
                    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 MatrixPlate
      tags:
      - MatrixPlate
      x-bnch-rate-limit-tier: 3
  /matrix-plate:bulk-create:
    post:
      description: Bulk create MatrixPlate.
      operationId: MatrixPlate.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 MatrixPlate
      tags:
      - MatrixPlate
      x-bnch-rate-limit-tier: 2
  /matrix-plate:bulk-update:
    patch:
      description: Bulk update MatrixPlate.
      operationId: MatrixPlate.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 MatrixPlate
      tags:
      - MatrixPlate
      x-bnch-rate-limit-tier: 2
components:
  parameters:
    parentStorage.eq:
      description: ID of a location. Restricts results to those located in the specified inventory.
      in: query
      name: parentStorage.eq
      schema:
        type: string
    pageSize:
      description: Number of results to return. Defaults to 50, maximum of 100.
      in: query
      name: pageSize
      schema:
        type: integer
    createdAt.gte:
      description: Datetime, in RFC 3339 format. Time zone defaults to UTC. Restricts results to those created at or after the specified time. e.g. >= 2017-04-30.
      in: query
      name: createdAt.gte
      schema:
        format: datetime
        type: string
    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
    barcode.anyOf:
      description: Restricts results to those matching any of the specified barcodes. Fails and reports any invalid barcodes. Comma-separated list.
      explode: false
      in: query
      name: barcode.anyOf
      schema:
        items:
          type: string
        maxItems: 100
        type: array
    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
    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
    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
    creator.anyOf:
      description: Restricts results to those created by any of the specified user IDs. Comma-separated list.
      explode: false
      in: query
      name: creator.anyOf
      schema:
        items:
          type: string
        maxItems: 100
        type: array
    createdAt.gt:
      description: Datetime, in RFC 3339 format. Time zone defaults to UTC. Restricts results to those created after the specified time. e.g. > 2017-04-30.
      in: query
      name: createdAt.gt
      schema:
        format: datetime
        type: string
    createdAt.lt:
      description: Datetime, in RFC 3339 format. Time zone defaults to UTC. Restricts results to those created before the specified time. e.g. < 2017-04-30.
      in: query
      name: createdAt.lt
      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
    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
    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
    createdAt.lte:
      description: Datetime, in RFC 3339 format. Time zone defaults to UTC. Restricts results to those created at or before the specified time. e.g. <= 2017-04-30.
      in: query
      name: createdAt.lte
      schema:
        format: datetime
        type: string
  schemas:
    MatrixPlate:
      allOf:
      - $ref: '#/components/schemas/IMatrixPlate'
      - description: 'A MatrixPlate is a rack-style storage plate where Containers (tubes, vials) can be

          inserted into and removed from grid positions. Unlike FixedPlate or WellPlate where

          wells are permanently attached, MatrixPlate positions (see MatrixPlatePosition) can

          be empty or hold movable containers. This makes MatrixPlates ideal for tube racks,

          sample storage boxes with removable tubes, and other flexible storage formats. Each

          plate tracks its capacity (totalCapacity, availableCapacity, occupiedCapacity) and

          conforms to a MatrixPlateSchema that defines the grid dimensions and optionally

          restricts which ContainerSchema types can be stored. MatrixPlates can be stored in

          Locations, associated with Studies, and identified by barcode.'
        properties:
          __typename:
            type: string
          creator:
            $ref: '#/components/schemas/PrincipalRef'
            description: The user who created the plate
          schemaFields:
            oneOf:
            - items:
                $ref: '#/components/schemas/SchemaFieldValue'
              type: array
            - type: 'null'
        type: object
    CreateMatrixPlateInput:
      additionalProperties: false
      properties:
        barcode:
          description: Barcode of the plate
          type: string
        containerSchemaId:
          type: string
        name:
          description: Name of the plate; defaults to barcode if name is not provided
          type: string
        parentStorageId:
          type: string
        positions:
          description: The wells of the plate
          items:
            $ref: '#/components/schemas/MatrixPlatePositionInput'
          type: array
        projectId:
          type: string
        schemaFields:
          additionalProperties:
            $ref: '#/components/schemas/FieldValueInput'
          type: object
        schemaId:
          type: string
      required:
      - schemaId
      type: object
    FieldValueInput:
      additionalProperties: false
      properties:
        value:
          $ref: '#/components/schemas/AnyType'
      required:
      - value
      type: object
    AnyType: {}
    MatrixPlatePaginatedList:
      additionalProperties: false
      properties:
        items:
          items:
            $ref: '#/components/schemas/MatrixPlate'
          type: array
        nextToken:
          type: string
      type: object
    GridCoordinates:
      description: Read model representing a fillable position in a box or plate.
      properties:
        __typename:
          type: string
        column:
          description: The 0-indexed column index of the position
          type: integer
        index:
          description: 'The 1-indexed position determined by counting across rows.

            For example, for a six-well plate:

            +---+---+---+

            | 1 | 2 | 3 |

            +---+---+---+

            | 4 | 5 | 6 |

            +---+---+---+'
          type: integer
        position:
          description: 'The alphanumeric position, where rows are indexed alphabetically and columns are indexed numerically,

            starting from "A1"'
          type: string
        row:
          description: The 0-indexed row index of the position
          type: integer
      type: object
    DateValue:
      description: A type that represents date values.
      properties:
        __typename:
          type: string
        value:
          description: The date value.
          format: date
          type: string
      type: object
    MatrixPlatePosition:
      description: A well position within a MatrixPlate.
      properties:
        __typename:
          type: string
        container:
          description: Container at the current position within the matrix plate.
          oneOf:
          - $ref: '#/components/schemas/ContainerRef'
          - type: 'null'
        coordinates:
          $ref: '#/components/schemas/GridCoordinates'
          description: Coordinates of the current position within the matrix plate.
      type: object
    BooleanValue:
      description: A type that represents boolean values.
      properties:
        __typename:
          type: string
        value:
          description: The boolean value.
          type: boolean
      type: object
    ProjectRef:
      properties:
        __typename:
          type: string
        id:
          format: api_id
          type: string
      type: object
    ObjectLinkValue:
      description: A type that represents links to other objects.
      properties:
        __typename:
          type: string
        value:
          $ref: '#/components/schemas/ObjectRef'
          description: The object that this value links to, or an Inaccessible object if not found with the current permission set.
      type: object
    UpdateMatrixPlateInput:
      additionalProperties: false
      properties:
        archiveReason:
          description: Why the plate is archived
          type: string
        archived:
          description: Whether the plate is archived
          type: boolean
        barcode:
          description: Barcode of the plate
          type: string
        name:
          description: Name of the plate; defaults to barcode if name is not provided
          type: string
        parentStorageId:
          type:
          - 'null'
          - string
        projectId:
          type:
          - 'null'
          - string
        schemaFields:
          additionalProperties:
            $ref: '#/components/schemas/FieldValueInput'
          type: object
      type: object
    UpdateMatrixPlateInputWithPathParams:
      additionalProperties: false
      properties:
        archiveReason:
          description: Why the plate is archived
          type: string
        archived:
          description: Whether the plate is archived
          type: boolean
        barcode:
          description: Barcode of the plate
          type: string
        id:
          type: string
        name:
          description: Name of the plate; defaults to barcode if name is not provided
          type: string
        parentStorageId:
          type:
          - 'null'
          - string
        projectId:
          type:
          - 'null'
          - string
        schemaFields:
          additionalProperties:
            $ref: '#/components/schemas/FieldValueInput'
          type: object
      required:
      - id
      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
    SchemaFieldValue:
      description: 'Represents a field value on a schematized object, pairing a `fieldDefinition` (describing the

        field''s type and constraints) with its actual `value` (a `BenchlingValue` such as text, number,

        date, or link to another object). The value may be null if no value has been set. Used within

        the `schemaFields` collection on objects that implement `HasSchema` to provide access to all

        custom field values defined by the object''s schema.'
      properties:
        __typename:
          type: string
        fieldDefinition:
          $ref: '#/components/schemas/SchemaFieldDefinitionRef'
        id:
          type: string
        linkedEntityId:
          type:
          - 'null'
          - string
        value:
          description: Union of BooleanValue, DateTimeValue, DateValue, DecimalValue, IntegerValue, JsonValue, ObjectLinkValue, ObjectLinkListValue, TextAndUrlValue, TextValue, ArrayValue
          oneOf:
          - anyOf:
            - $ref: '#/components/schemas/BooleanValue'
            - $ref: '#/components/schemas/DateTimeValue'
            - $ref: '#/components/schemas/DateValue'
            - $ref: '#/components/schemas/DecimalValue'
            - $ref: '#/components/schemas/IntegerValue'
            - $ref: '#/components/schemas/JsonValue'
            - $ref: '#/components/schemas/ObjectLinkValue'
            - $ref: '#/components/schemas/ObjectLinkListValue'
            - $ref: '#/components/schemas/TextAndUrlValue'
            - $ref: '#/components/schemas/TextValue'
            - $ref: '#/components/schemas/ArrayValue'
            discriminator:
              propertyName: __typename
          - type: 'null'
      type: object
    DecimalValue:
      description: A type that represents decimal value as strings.
      properties:
        __typename:
          type: string
        numericValue:
          deprecated: true
          description: Deprecated. The float representation of the decimal value.
          type:
          - 'null'
          - number
        value:
          description: The decimal value in a string representation
          type:
          - 'null'
          - string
      type: object
    AsyncTaskLink:
      properties:
        pollingUri:
          format: uri
          type: string
        taskId:
          type: string
      type: object
    ArrayValue:
      description: A type that represents a list of BenchlingValues, used for multi-value cells (e.g. alias columns).
      properties:
        __typename:
          type: string
        value:
          items:
            anyOf:
            - $ref: '#/components/schemas/BooleanValue'
            - $ref: '#/components/schemas/DateTimeValue'
            - $ref: '#/components/schemas/DateValue'
            - $ref: '#/components/schemas/DecimalValue'
            - $ref: '#/components/schemas/IntegerValue'
            - $ref: '#/components/schemas/JsonValue'
            - $ref: '#/components/schemas/ObjectLinkValue'
            - $ref: '#/components/schemas/ObjectLinkListValue'
            - $ref: '#/components/schemas/TextAndUrlValue'
            - $ref: '#/components/schemas/TextValue'
            description: Union of BooleanValue, DateTimeValue, DateValue, DecimalValue, IntegerValue, JsonValue, ObjectLinkValue, ObjectLinkListValue, TextAndUrlValue, TextValue
            discriminator:
              propertyName: __typename
          type: array
      type: object
    MatrixPlateSchemaRef:
      properties:
        __typename:
          type: string
        id:
          format: api_id
          type: string
      type: object
    MatrixPlatePositionInput:
      additionalProperties: false
      properties:
        barcode:
          type: string
        position:
          type: string
      required:
      - position
      type: object
    LocationRef:
      properties:
        __typename:
          type: string
        id:
          format: api_id
          type: string
      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
    PrincipalRef:
      properties:
        __typename:
          type: string
        id:
          format: api_id
          type: string
      type: object
    DateTimeValue:
      description: A type that represents datetime values.
      properties:
        __typename:
          type: string
        value:
          description: The datetime value with UTC as the timezone.
          format: datetime
          type: string
      type: object
    ObjectRef:
      properties:
        __typename:
          type: string
        id:
          format: api_id
          type: string
      type: object
    ContainerRef:
      properties:
        __typename:
          type: string
        id:
          format: api_id
          type: string
      type: object
    IMatrixPlate:
      properties:
        __typename:
          type: string
        archiveReason:
          description: Why the plate is archived
          type:
          - 'null'
          - string
        archived:
          description: Whether the plate is archived
          type: boolean
        availableCapacity:
          description: The number of available positions in a matrix plate.
          type: integer
        barcode:
          description: Barcode of the plate
          type:
          - 'null'
          - string
        createdAt:
          description: DateTime the plate was created
          format: datetime
          type: string
        id:
          description: The ID of the plate.
          type: string
        modifiedAt:
          description: DateTime the plate was last modified
          format: datetime
          type: string
        name:
          description: Name of the plate; defaults to barcode if name is not provided
          type: string
        occupiedCapacity:
          description: The number of con

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