Benchling Container API

A Container is a physical vessel (such as a tube, vial, or cryotube) that holds biological or chemical samples in Benchling's inventory system. Containers track their contents (see ContainerContent), quantity, location within storage (via parentStorage which can be a Box, Plate, or Location), and lifecycle information including expiration and freeze-thaw cycles. Each container has a barcode for physical identification and conforms to a ContainerSchema that defines its type and schema fields. Containers support checkout tracking (see CheckoutRecord) and can be associated with Studies. Also known as "tubes" or "sample containers" in laboratory contexts.

Operations 12

POST /container Create Container #
GET /container/items List Container items #
GET /container/{container_id} Get Container by ID #
PATCH /container/{container_id} Update Container #
POST /container/{container_id}:remove-content Remove content from a container. #
POST /container/{container_id}:update-content-concentration Update the concentration of content in a container. #
POST /container:batch-create Batch create Container #
PATCH /container:batch-update Batch update Container #
POST /container:bulk-create Bulk create Container #
PATCH /container:bulk-update Bulk update Container #
POST /container:transfer Transfer contents from sources into destination containers. Each row specifies a destination container and exactly one source (container or entity), the quantity to transfer, an op #
GET /tasks/container/transfer/{task_id} Poll async task status #

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-container-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-container-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 Container API
  version: 2.0.0
  description: 'A Container is a physical vessel (such as a tube, vial, or cryotube) that holds

    biological or chemical samples in Benchling''s inventory system. Containers track

    their contents (see ContainerContent), quantity, location within storage (via

    parentStorage which can be a Box, Plate, or Location), and lifecycle information

    including expiration and freeze-thaw cycles. Each container has a barcode for

    physical identification and conforms to a ContainerSchema that defines its type

    and schema fields. Containers support checkout tracking (see CheckoutRecord) and

    can be associated with Studies. Also known as "tubes" or "sample containers" in

    laboratory contexts.'
servers:
- url: /api/v3
security:
- oAuth: []
- basicApiKeyAuth: []
tags:
- description: 'A Container is a physical vessel (such as a tube, vial, or cryotube) that holds

    biological or chemical samples in Benchling''s inventory system. Containers track

    their contents (see ContainerContent), quantity, location within storage (via

    parentStorage which can be a Box, Plate, or Location), and lifecycle information

    including expiration and freeze-thaw cycles. Each container has a barcode for

    physical identification and conforms to a ContainerSchema that defines its type

    and schema fields. Containers support checkout tracking (see CheckoutRecord) and

    can be associated with Studies. Also known as "tubes" or "sample containers" in

    laboratory contexts.'
  name: Container
  x-bnch-core-type: Container
  x-bnch-organization: Benchling
paths:
  /container:
    post:
      description: Create Container.
      operationId: Container.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/CreateContainerInput'
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Container'
          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 Container
      tags:
      - Container
      x-bnch-rate-limit-tier: 4
  /container/items:
    get:
      description: List Container items.
      operationId: Container.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/mentionedIn.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/ContainerPaginatedList'
          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 Container items
      tags:
      - Container
      x-bnch-rate-limit-tier: 4
  /container/{container_id}:
    get:
      description: Get a single Container by ID.
      operationId: Container.Get
      parameters:
      - description: ID of the Container.
        in: path
        name: container_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/Container'
          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 Container by ID
      tags:
      - Container
      x-bnch-rate-limit-tier: 5
    patch:
      description: Update Container.
      operationId: Container.Update
      parameters:
      - description: ID of the Container.
        in: path
        name: container_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/UpdateContainerInput'
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Container'
          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 Container
      tags:
      - Container
      x-bnch-rate-limit-tier: 4
  /container/{container_id}:remove-content:
    post:
      description: Remove content from a container.
      operationId: Container.RemoveContent
      parameters:
      - description: ID of the Container.
        in: path
        name: container_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/ContainerRemoveContentInput'
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Container'
          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: Remove content from a container.
      tags:
      - Container
      x-bnch-rate-limit-tier: 4
  /container/{container_id}:update-content-concentration:
    post:
      description: Update the concentration of content in a container.
      operationId: Container.UpdateContentConcentration
      parameters:
      - description: ID of the Container.
        in: path
        name: container_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/ContainerUpdateContentConcentrationInput'
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Container'
          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 the concentration of content in a container.
      tags:
      - Container
      x-bnch-rate-limit-tier: 4
  /container:batch-create:
    post:
      description: Batch create Container synchronously in one transaction. Maximum 25 items per request.
      operationId: Container.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/CreateContainerInput'
                  maxItems: 25
                  minItems: 1
                  type: array
              required:
              - items
              type: object
      responses:
        '201':
          content:
            application/json:
              schema:
                additionalProperties: false
                properties:
                  items:
                    items:
                      $ref: '#/components/schemas/Container'
                    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 Container
      tags:
      - Container
      x-bnch-rate-limit-tier: 3
  /container:batch-update:
    patch:
      description: Batch update Container synchronously in one transaction. Maximum 25 items per request.
      operationId: Container.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/UpdateContainerInputWithPathParams'
                  maxItems: 25
                  minItems: 1
                  type: array
              required:
              - items
              type: object
      responses:
        '200':
          content:
            application/json:
              schema:
                additionalProperties: false
                properties:
                  items:
                    items:
                      $ref: '#/components/schemas/Container'
                    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 Container
      tags:
      - Container
      x-bnch-rate-limit-tier: 3
  /container:bulk-create:
    post:
      description: Bulk create Container.
      operationId: Container.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 Container
      tags:
      - Container
      x-bnch-rate-limit-tier: 2
  /container:bulk-update:
    patch:
      description: Bulk update Container.
      operationId: Container.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 Container
      tags:
      - Container
      x-bnch-rate-limit-tier: 2
  /container:transfer:
    post:
      description: Transfer contents from sources into destination containers. Each row specifies a destination container and exactly one source (container or entity), the quantity to transfer, an optional final quantity to dilute the destination to, and an optional source concentration override.
      operationId: Container.Transfer
      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/TransferInput'
      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: Transfer contents from sources into destination containers. Each row specifies a destination container and exactly one source (container or entity), the quantity to transfer, an optional final quantity to dilute the destination to, and an optional source concentration override.
      tags:
      - Container
      x-bnch-rate-limit-tier: 4
  /tasks/container/transfer/{task_id}:
    get:
      description: Poll status for Transfer contents from sources into destination containers. Each row specifies a destination container and exactly one source (container or entity), the quantity to transfer, an optional final quantity to dilute the destination to, and an optional source concentration override..
      operationId: Container.Transfer.Get
      parameters:
      - description: ID of the asynchronous task to poll.
        in: path
        name: task_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:
                properties:
                  message:
                    type: string
                  result:
                    oneOf:
                    - $ref: '#/components/schemas/TransferOutput'
                    - type: 'null'
                  status:
                    enum:
                    - NOT_STARTED
                    - IN_PROGRESS
                    - COMPLETED
                    - FAILED
                    type: string
                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: Poll async task status
      tags:
      - Container
      x-bnch-rate-limit-tier: 5
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
    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
    id.anyOf:
      description: Restricts results to those matching any of the specified IDs. Comma-separated list.
      explode: false
      in: query
      name: id.anyOf
      schema:
        items:
          type: string
        maxItems: 100
        type: array
    modifiedAt.lt:
      description: Datetime, in RFC 3339 format. Time zone defaults to UTC. Restricts results to those modified before the specified time. e.g. < 2017-04-30.
      in: query
      name: modifiedAt.lt
      schema:
        format: datetime
        type: string
    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
    mentionedIn.anyOf:
      description: Restricts results to items mentioned in entries matching any of the specified entry IDs. Comma-separated list.
      explode: false
      in: query
      name: mentionedIn.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:
    FieldValueInput:
      additionalProperties: false
      properties:
        value:
          $ref: '#/components/schemas/AnyType'
      required:
      - value
      type: object
    TransferInput:
      additionalProperties: false
      properties:
        transfers:
          items:
            $ref: '#/components/schemas/SingleTransferInput'
          type: array
      required:
      - transfers
      type: object
    CheckoutRecord:
      description: 'Tracks the checkout status of an inventory item such as a Container. When laboratory

        samples need to be temporarily removed from storage (e.g., for an experiment), users

        can check them out, optionally adding a comment and assigning responsibility to a

        user or team (see Assignee). The record captures when the status was last modified.

        This enables sample tracking workflows and prevents conflicts when multiple users

        need access to the same samples.'
      properties:
        __typename:
          type: string
        assignee:
          description: Union of User, Team
          oneOf:
          - $ref: '#/components/schemas/ObjectRef'
          - type: 'null'
        comment:
          type:
          - 'null'
          - string
        modifiedAt:
          format: datetime
          type:
          - 'null'
          - string
        status:
          enum:
          - AVAILABLE
          - RESERVED
          - CHECKED_OUT
          - null
          type:
          - 'null'
          - string
      type: object
    AnyType: {}
    TransferOutput:
      description: 'Result of a Container.transfer call: the IDs of the destination containers that were updated.'
      properties:
        destinationContainerIds:
          items:
            type: string
          type: array
      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
    UpdateContainerInputWithPathParams:
      additionalProperties: false
      properties:
        archiveReason:
          type: string
        archived:
          type: boolean
        checkoutRecord:
          $ref: '#/components/schemas/CheckoutRecordInput'
        id:
          type: string
        name:
          type: string
        parentStorageId:
          type:
          - 'null'
          - string
        projectId:
          type:
          - 'null'
          - string
        quantity:
          $ref: '#/components/schemas/MeasurementInput'
          description: 'Quantity of a container, well, or transfer. Supports mass, volume, and

            other quantities.'
        restrictedSamplePartyIds:
          items:
            type: string
          type: array
        restrictionStatus:
          enum:
          - RESTRICTED
          - UNRESTRICTED
          - NOT_APPLICABLE
          type: string
        role:
          oneOf:
          - $ref: '#/components/schemas/ExperimentalRoleInput'
          - type: 'null'
        sampleOwnerIds:
          items:
            type: string
          type: array
        schemaFields:
          additionalProperties:
            $ref: '#/components/schemas/FieldValueInput'
          type: object
      required:
      - id
      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
    IContainer:
      properties:
        __typename:
          type: string
        archiveReason:
          type:
          - 'null'
          - string
        archived:
          type: boolean
        barcode:
          type:
          - 'null'
          - string
        checkoutRecord:
          $ref: '#/components/schemas/CheckoutRecord'
        contents:
          items:
            $ref: '#/components/schemas/ContainerContent'
          type: array
        coordinates:
          description: Coordinates of the container within its contained grid, if it is contained within a grid.
          oneOf:
          - $ref: '#/components/schemas/GridCoordinates'
          - type: 'null'
        createdAt:
          format: datetime
          type: string
        expirationInfo:
          $ref: '#/components/schemas/ExpirationInfo'
          description: Expiration info for the container.
        gridNumber:
          deprecated: true
          description: Please use coordinates.index
          type:
          - 'null'
          - number
        gridPosition:
          deprecated: true
          description: Please use coordinates.position
          type:
          - 'null'
          - string
        id:
          type: string
        modifiedAt:
          format: datetime
          type: string
        name:
          type: string
        parentStorage:
          description: Union of Box, Plate, Location
          oneOf:
          - $ref: '#/components/schemas/ObjectRef'
          - type: 'null'
        parentStorageSchema:
          description: Union of BoxSchema, PlateSchema, LocationSchema
          oneOf:
          - $ref: '#/components/schemas/ObjectRef'
          - type: 'null'
        project:
          oneOf:
          - $ref: '#/components/schemas/ProjectRef'
          - type: 'null'
        quantity:
          description: 'Quantity of a container, well, or transfer. Supports mass, volume, and

            other quantities.'
          oneOf:
          - $ref: '#/components/schemas/Measurement'
          - type: 'null'
        role:
          oneOf:
          - $ref: '#/components/schemas/ExperimentalRole'
          - type: 'null'
        schema:
          $ref: '#/components/schemas/ContainerSchemaRef'
      type: object
    BooleanValue:
      description: A type that represents boolean values.
      properties:
        __typename:
          type: string
        value:
          description: The boolean value.
          type: boolean
      type: object
    ExperimentalRoleInput:
      additionalProperties: false
      properties:
        group:
          type: integer
        primaryRole:
          enum:
          - CONTROL
          - SAMPLE
          - BLANK
          - STANDARD
          type: string
        subrole:
          type:
          - 'null'
          - string
    

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