openapi: 3.0.1
info:
license:
name: Apache 2.0
url: http://www.apache.org/licenses/LICENSE-2.0.html
title: Benchling AA Sequences Apps API
version: 2.0.0
description: 'AA Sequences are the working units of cells that make everything run (they help make structures, catalyze reactions and allow for signaling - a kind of internal cell communication). On Benchling, these are comprised of a string of amino acids and collections of other attributes, such as annotations.
'
servers:
- url: /api/v2
security:
- oAuth: []
- basicApiKeyAuth: []
tags:
- description: Create and manage Benchling apps on your tenant
name: Apps
paths:
/app-canvases:
post:
description: 'Create an App Canvas that a Benchling App can write to and read user interaction from.
'
operationId: createAppCanvas
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/AppCanvasCreate'
responses:
'201':
content:
application/json:
schema:
$ref: '#/components/schemas/AppCanvas'
description: Created
'400':
content:
application/json:
schema:
$ref: '#/components/schemas/BadRequestError'
description: Bad Request
'403':
content:
application/json:
schema:
$ref: '#/components/schemas/ForbiddenError'
description: Forbidden
summary: Create an App Canvas
tags:
- Apps
/app-canvases/{canvas_id}:
get:
description: Get the current state of the App Canvas, including user input elements.
operationId: getAppCanvas
parameters:
- example: cnvs_Q4mPJ34a
in: path
name: canvas_id
required: true
schema:
type: string
- description: Comma-separated list of fields to return. Modifies the output shape. To return all keys at a given level, enumerate them or use the wildcard, '*'. For more information, [click here](https://docs.benchling.com/docs/getting-started-1#returning-query-parameter).
in: query
name: returning
schema:
example: id,modifiedAt
type: string
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/AppCanvas'
description: OK
'404':
content:
application/json:
schema:
$ref: '#/components/schemas/NotFoundError'
description: Not Found
summary: Get App Canvas
tags:
- Apps
patch:
description: Update App Canvas
operationId: updateAppCanvas
parameters:
- example: cnvs_Q4mPJ34a
in: path
name: canvas_id
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/AppCanvasUpdate'
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/AppCanvas'
description: OK
'403':
content:
application/json:
schema:
$ref: '#/components/schemas/ForbiddenError'
description: Forbidden
'404':
content:
application/json:
schema:
$ref: '#/components/schemas/NotFoundError'
description: Not Found
summary: Update App Canvas
tags:
- Apps
/app-canvases:archive:
post:
description: Archive app canvases
operationId: archiveAppCanvases
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/AppCanvasesArchive'
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/AppCanvasesArchivalChange'
description: OK
'400':
content:
application/json:
schema:
$ref: '#/components/schemas/BadRequestError'
description: Bad Request
summary: Archive app canvases
tags:
- Apps
/app-canvases:unarchive:
post:
description: Unarchive app canvases
operationId: unarchiveAppCanvases
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/AppCanvasesUnarchive'
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/AppCanvasesArchivalChange'
description: OK
'400':
content:
application/json:
schema:
$ref: '#/components/schemas/BadRequestError'
description: Bad Request
summary: Unarchive app canvases
tags:
- Apps
/app-configuration-items:
get:
description: Get app configuration items
operationId: listAppConfigurationItems
parameters:
- description: Token for pagination
in: query
name: nextToken
schema:
type: string
- description: Number of results to return. Defaults to 50, maximum of 100.
in: query
name: pageSize
schema:
default: 50
maximum: 100
minimum: 0
nullable: false
type: integer
- description: 'Datetime, in RFC 3339 format. Supports the > and < operators. Time zone defaults to UTC. Restricts results to those modified in the specified range. e.g. > 2017-04-30. Date ranges can be specified with the following nomenclature > YYYY-MM-DD AND <YYYY-MM-DD.
'
examples:
and-range:
summary: Filter for all models modified within a certain range using the AND operator.
value: '> 2022-03-01 AND < 2022-04-01'
full-rfc-3339-format:
summary: Filter for modified models using the full RFC 3339 format
value: '> 2020-12-31T21:07:14-05:00'
greater-than-example:
summary: Filter for all models modified after a certain date
value: '> 2022-03-01'
in: query
name: modifiedAt
schema:
type: string
- description: App id to which the configuration belongs.
example: app_e59sjL23Pqn30xHg
in: query
name: appId
schema:
type: string
- description: 'Comma-separated list of ids. Matches all of the provided IDs, or returns a 400 error that includes a list of which IDs are invalid.
'
in: query
name: ids
schema:
example: aci_VfVOART1,aci_RFhDGaaC
type: string
- in: query
name: sort
schema:
default: modifiedAt:desc
description: 'Method by which to order search results. Valid sorts are modifiedAt (modified time, most recent first) and createdAt (created time, most recent first). Optionally add :asc or :desc to specify ascending or descending order.
'
enum:
- createdAt
- createdAt:asc
- createdAt:desc
- modifiedAt
- modifiedAt:asc
- modifiedAt:desc
nullable: false
type: string
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/AppConfigurationPaginatedList'
description: OK
headers:
Result-Count:
description: The total number of items that match the given query
schema:
type: integer
x-rate-limit-limit:
description: The number of allowed requests in the current rate-limit period
schema:
type: integer
x-rate-limit-remaining:
description: The number of requests remaining in the current rate-limit period
schema:
type: integer
x-rate-limit-reset:
description: The number of seconds remaining in the current rate-limit period
schema:
type: integer
'404':
content:
application/json:
schema:
$ref: '#/components/schemas/NotFoundError'
description: Not Found
summary: Get app configuration items
tags:
- Apps
post:
description: Create app configuration item
operationId: createAppConfigurationItem
requestBody:
content:
application/json:
example: "{\n \"appId\": \"app_J39na03L1nsLS34o\",\n \"path\": [\n \"My Schema 1\",\n \"My Field 1\"\n ],\n \"type\": \"field\",\n \"value\": \"tsf_HXUnClU9\"\n}\n"
schema:
$ref: '#/components/schemas/AppConfigItemCreate'
responses:
'201':
content:
application/json:
example: "{\n \"apiURL\": \"string\",\n \"app\": {\n \"id\": \"string\"\n },\n \"createdAt\": \"2024-03-14T21:52:32.929Z\",\n \"id\": \"string\",\n \"type\": \"field\",\n \"modifiedAt\": \"2024-03-14T21:52:32.929Z\",\n \"path\": [\n \"My Schema 1\",\n \"My Field 1\"\n ],\n \"value\": \"tsf_HXUnClU9\"\n}\n"
schema:
$ref: '#/components/schemas/AppConfigItem'
description: Created
'400':
content:
application/json:
schema:
$ref: '#/components/schemas/BadRequestError'
description: Bad Request
summary: Create app configuration item
tags:
- Apps
/app-configuration-items/{item_id}:
get:
description: Get app configuration item
operationId: getAppConfigurationItemById
parameters:
- example: aci_e59sjL23Pqn30xHg
in: path
name: item_id
required: true
schema:
type: string
responses:
'200':
content:
application/json:
example: "{\n \"apiURL\": \"string\",\n \"app\": {\n \"id\": \"string\"\n },\n \"createdAt\": \"2024-03-14T21:54:20.435Z\",\n \"id\": \"string\",\n \"type\": \"field\",\n \"modifiedAt\": \"2024-03-14T21:54:20.435Z\",\n \"path\": [\n \"My Schema 1\",\n \"My Field 1\"\n ]\n}\n"
schema:
$ref: '#/components/schemas/AppConfigItem'
description: OK
'404':
content:
application/json:
schema:
$ref: '#/components/schemas/NotFoundError'
description: Not Found
summary: Get app configuration item
tags:
- Apps
patch:
description: Update app configuration item
operationId: updateAppConfigurationItem
parameters:
- example: aci_e59sjL23Pqn30xHg
in: path
name: item_id
required: true
schema:
type: string
requestBody:
content:
application/json:
example: "{\n \"apiURL\": \"string\",\n \"app\": {\n \"id\": \"string\"\n },\n \"createdAt\": \"2024-03-14T21:59:01.233Z\",\n \"id\": \"string\",\n \"type\": \"field\",\n \"modifiedAt\": \"2024-03-14T21:59:01.233Z\",\n \"path\": [\n \"My Schema 1\",\n \"My Field 1\"\n ]\n}\n"
schema:
$ref: '#/components/schemas/AppConfigItemUpdate'
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/AppConfigItem'
description: OK
'403':
content:
application/json:
schema:
$ref: '#/components/schemas/ForbiddenError'
description: Forbidden
'404':
content:
application/json:
schema:
$ref: '#/components/schemas/NotFoundError'
description: Not Found
summary: Update app configuration item
tags:
- Apps
/app-configuration-items:bulk-create:
post:
description: Bulk Create app configuration items
operationId: bulkCreateAppConfigurationItems
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/AppConfigItemsBulkCreateRequest'
responses:
'202':
content:
application/json:
schema:
$ref: '#/components/schemas/AsyncTaskLink'
description: Accepted
'400':
content:
application/json:
schema:
$ref: '#/components/schemas/BadRequestError'
description: Bad Request
summary: Bulk Create app configuration items. Limit of 1000 App Config Items per request.
tags:
- Apps
/app-configuration-items:bulk-update:
post:
description: Bulk Update app configuration items
operationId: bulkUpdateAppConfigurationItems
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/AppConfigItemsBulkUpdateRequest'
responses:
'202':
content:
application/json:
schema:
$ref: '#/components/schemas/AsyncTaskLink'
description: Accepted
'400':
content:
application/json:
schema:
$ref: '#/components/schemas/BadRequestError'
description: Bad Request
summary: Bulk Update app configuration items. Limit of 1000 App Config Items per request.
tags:
- Apps
/app-sessions:
post:
description: 'Create a new app session. Sessions cannot be archived once created.
'
operationId: createAppSession
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/AppSessionCreate'
responses:
'201':
content:
application/json:
schema:
$ref: '#/components/schemas/AppSession'
description: Created
'400':
content:
application/json:
schema:
$ref: '#/components/schemas/BadRequestError'
description: Bad Request
'403':
content:
application/json:
schema:
$ref: '#/components/schemas/ForbiddenError'
description: Forbidden
summary: Create a new app session
tags:
- Apps
/app-sessions/{id}:
get:
description: Get an app session
operationId: getAppSessionById
parameters:
- example: sesn_J2PGE0Z516Y
in: path
name: id
required: true
schema:
type: string
- description: Comma-separated list of fields to return. Modifies the output shape. To return all keys at a given level, enumerate them or use the wildcard, '*'. For more information, [click here](https://docs.benchling.com/docs/getting-started-1#returning-query-parameter).
in: query
name: returning
schema:
example: id,modifiedAt
type: string
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/AppSession'
description: OK
'404':
content:
application/json:
schema:
$ref: '#/components/schemas/NotFoundError'
description: Not Found
summary: Get an app session
tags:
- Apps
patch:
description: Update app session
operationId: updateAppSession
parameters:
- in: path
name: id
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/AppSessionUpdate'
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/AppSession'
description: OK
'400':
content:
application/json:
schema:
$ref: '#/components/schemas/BadRequestError'
description: Bad Request
'403':
content:
application/json:
schema:
$ref: '#/components/schemas/ForbiddenError'
description: Forbidden
'404':
content:
application/json:
schema:
$ref: '#/components/schemas/NotFoundError'
description: Not Found
summary: Update app session
tags:
- Apps
/apps:
get:
description: List apps
operationId: listBenchlingApps
parameters:
- description: Number of results to return.
in: query
name: pageSize
schema:
default: 50
maximum: 100
nullable: false
type: integer
- description: Token for pagination
in: query
name: nextToken
schema:
type: string
- description: 'Method by which to order search results. Valid sorts are name, modifiedAt, and createdAt. Optionally add :asc or :desc to specify ascending or descending order. Default is modifiedAt.
'
in: query
name: sort
schema:
default: modifiedAt
enum:
- createdAt
- createdAt:asc
- createdAt:desc
- modifiedAt
- name
- modifiedAt:asc
- name:asc
- modifiedAt:desc
- name:desc
nullable: false
type: string
- description: 'Comma-separated list of ids. Matches all of the provided IDs, or returns a 400 error that includes a list of which IDs are invalid.
'
in: query
name: ids
schema:
example: app_J39na03L1nsLS34o,app_ae92kBv9aNSl593z,app_e59sjL23Pqn30xHg
type: string
- description: 'Datetime, in RFC 3339 format. Supports the > and < operators. Time zone defaults to UTC. Restricts results to those modified in the specified range. e.g. > 2017-04-30. Date ranges can be specified with the following nomenclature > YYYY-MM-DD AND <YYYY-MM-DD.
'
examples:
and-range:
summary: Filter for all models modified within a certain range using the AND operator.
value: '> 2022-03-01 AND < 2022-04-01'
full-rfc-3339-format:
summary: Filter for modified models using the full RFC 3339 format
value: '> 2020-12-31T21:07:14-05:00'
greater-than-example:
summary: Filter for all models modified after a certain date
value: '> 2022-03-01'
in: query
name: modifiedAt
schema:
type: string
- description: Name of an app. Restricts results to those with the specified name.
in: query
name: name
schema:
type: string
- description: Name substring of an app. Restricts results to those with names that include the provided substring.
in: query
name: nameIncludes
schema:
type: string
- description: 'Comma-separated list of app names. Maximum of 100. Restricts results to those that match any of the specified names, case insensitive. Warning - this filter can be non-performant due to case insensitivity.
'
in: query
name: names.anyOf
schema:
example: MyName1, MyName2
type: string
- description: 'Comma-separated list of app names. Maximum of 100. Restricts results to those that match any of the specified names, case sensitive.
'
in: query
name: names.anyOf.caseSensitive
schema:
example: MyName1,MyName2
type: string
- description: Comma separated list of users IDs
in: query
name: creatorIds
schema:
example: ent_a0SApq3z
type: string
- description: Comma-separated list of organization and/or team API IDs. Restricts results to apps that are members of all given groups.
in: query
name: memberOf
schema:
type: string
- description: Comma-separated list of organization and/or team API IDs. Restricts results to apps that are admins of all given groups.
in: query
name: adminOf
schema:
type: string
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/BenchlingAppsPaginatedList'
description: OK
headers:
Result-Count:
description: The total number of items that match the given query
schema:
type: integer
'400':
content:
application/json:
schema:
$ref: '#/components/schemas/BadRequestError'
description: Bad Request
'403':
content:
application/json:
schema:
$ref: '#/components/schemas/ForbiddenError'
description: Forbidden
summary: List apps
tags:
- Apps
post:
deprecated: true
description: Create an app
operationId: createBenchlingApp
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/BenchlingAppCreate'
responses:
'201':
content:
application/json:
schema:
$ref: '#/components/schemas/BenchlingApp'
description: Created
'400':
content:
application/json:
schema:
$ref: '#/components/schemas/BadRequestError'
description: Bad Request
'403':
content:
application/json:
schema:
$ref: '#/components/schemas/ForbiddenError'
description: Forbidden
'409':
content:
application/json:
schema:
$ref: '#/components/schemas/ConflictError'
description: Conflict
summary: Create an app
tags:
- Apps
/apps/{app_id}:
get:
description: Get an app by ID
operationId: getBenchlingAppByID
parameters:
- example: app_J39na03L1nsLS34o
in: path
name: app_id
required: true
schema:
type: string
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/BenchlingApp'
description: OK
'400':
content:
application/json:
schema:
$ref: '#/components/schemas/BadRequestError'
description: Bad Request
'403':
content:
application/json:
schema:
$ref: '#/components/schemas/ForbiddenError'
description: Forbidden
'404':
content:
application/json:
schema:
$ref: '#/components/schemas/NotFoundError'
description: Not Found
summary: Get an app by ID
tags:
- Apps
patch:
deprecated: true
description: Update an app
operationId: patchBenchlingApp
parameters:
- example: app_e59sjL23Pqn30xHg
in: path
name: app_id
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/BenchlingAppUpdate'
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/BenchlingApp'
description: OK
'400':
content:
application/json:
schema:
$ref: '#/components/schemas/BadRequestError'
description: Bad Request
'403':
content:
application/json:
schema:
$ref: '#/components/schemas/ForbiddenError'
description: Forbidden
'404':
content:
application/json:
schema:
$ref: '#/components/schemas/NotFoundError'
description: Not Found
summary: Update an app
tags:
- Apps
/apps:archive:
post:
deprecated: true
description: Archive apps
operationId: archiveBenchlingApps
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/BenchlingAppsArchive'
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/BenchlingAppsArchivalChange'
description: OK
'400':
content:
application/json:
schema:
$ref: '#/components/schemas/BadRequestError'
description: Bad Request
summary: Archive apps
tags:
- Apps
/apps:unarchive:
post:
deprecated: true
description: Unarchive apps
operationId: unarchiveBenchlingApps
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/BenchlingAppsUnarchive'
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/BenchlingAppsArchivalChange'
description: OK
'400':
content:
application/json:
schema:
$ref: '#/components/schemas/BadRequestError'
description: Bad Request
summary: Unarchive apps
tags:
- Apps
components:
schemas:
SelectorInputMultiValueUiBlockUpdate:
allOf:
- $ref: '#/components/schemas/SelectorInputMultiValueUiBlock'
type: object
FileUploadUiBlock:
allOf:
- $ref: '#/components/schemas/UserInputMultiValueUiBlock'
- properties:
fileTypes:
items:
type: string
type: array
maxFiles:
default: 10
maximum: 10
type: integer
type:
enum:
- FILE_UPLOAD
type: string
required:
- type
type: object
MarkdownUiBlock:
additionalProperties: false
properties:
id:
example: user_generated_id
type: string
type:
enum:
- MARKDOWN
type: string
value:
example: '# This is a markdown block
1. with **bold text**.'
type: string
required:
- type
- value
type: object
AppCanvasUpdateBase:
allOf:
- $ref: '#/components/schemas/AppCanvasUpdateUiBlockList'
- $ref: '#/components/schemas/AppCanvasWriteBase'
type: object
TextInputUiBlockUpdate:
allOf:
- $ref: '#/components/schemas/TextInputUiBlock'
type: object
ArrayElementAppConfigItem:
allOf:
- $ref: '#/components/schemas/AppConfigItemApiMixin'
AppConfigItemJsonCreate:
allOf:
- $ref: '#/components/schemas/AppConfigItemCreateMixin'
- properties:
type:
enum:
- json
example: json
type: string
value:
description: The value of a json create object should be json parseable.
nullable: true
type: string
- required:
- value
- type
type: object
AppConfigItemJsonBulkUpdate:
allOf:
- $ref: '#/components/schemas/AppConfigItemJsonUpdate'
- $ref: '#/components/schemas/AppConfigItemBulkUpdateMixin'
type: object
SectionUiBlock:
allOf:
- $ref: '#/components/schemas/AppCanvasLeafNodeUiBlockList'
- properties:
id:
example: user_generated_id
type: string
type:
enum:
- SECTION
type: string
type: object
AppSessionUpdateStatus:
description: Values that can be specified when updating the status of a Session
enum:
- COMPLETED_WITH_WARNINGS
- FAILED
- SUCCEEDED
type: string
AppConfigItemDateCreate:
allOf:
- $ref: '#/components/schemas/AppConfigItemCreateMixin'
- properties:
type:
enum:
- date
type: string
value:
example: '2022-05-03'
format: date
nullable: true
type: string
- required:
- value
- type
type: object
AppConfigItem:
discriminator:
mapping:
aa_sequence: '#/components/schemas/GenericApiIdentifiedAppConfigItem'
array_element: '#/components/schemas/ArrayElementAppConfigItem'
boolean: '#/components/schemas/BooleanAppConfigItem'
box: '#/components/schemas/GenericApiIdentifiedAppConfigItem'
box_schema: '#/components/schemas/GenericApiIdentifiedAppConfigItem'
container: '#/components/schemas/GenericApiIdentifiedAppConfigItem'
container_schema: '#/components/schemas/GenericApiIdentifiedAppConfigItem'
custom_entity: '#/components/schemas/GenericApiIdentifiedAppConfigItem'
date: '#/components/schemas/DateAppConfigItem'
datetime: '#/components/schemas/DatetimeAppConfigItem'
dna_oligo: '#/components/schemas/GenericApiIdentifiedAppConfigItem'
dna_sequence: '#/components/schemas/GenericApiIdentifiedAppConfigItem'
dropdown: '#/components/schemas/GenericApiIdentifiedAppConfigItem'
dropdown_option: '#/components/schemas/GenericApiIdentifiedAppConfigItem'
entity_schema: '#/components/schemas/EntitySchemaAppConfigItem'
entry: '#/components/schemas/GenericApiIdentifiedAppConfigItem'
entry_schema: '#/components/schemas/GenericApiIdentifiedAppConfigItem'
field: '#/components/schemas/FieldAppConfigItem'
float: '#/components/schemas/FloatAppConfigItem'
folder: '#/components/schemas/GenericApiIdentifiedAppConfigItem'
integer: '#/components/schemas/IntegerAppConfigItem'
json: '#/components/schemas/JsonAppConfigItem'
legacy_request_schema: '#/components/schemas/GenericApiIdentifiedAppConfigItem'
location: '#/components/schemas/GenericApiIdentifiedAppConfigItem'
location_schema: '#/components/schemas/GenericApiIdentifiedAppConfigItem'
mixture: '#/components/schemas/GenericApiIdentifiedAppConfigItem'
molecule: '#/components/schemas/GenericApiIdentifiedAppConfigItem'
plate: '#/components/schemas/GenericApiIdentifiedAppConfigItem'
plate_schema: '#/components/schemas/GenericApiIdentifiedAppConfigItem'
project: '#/components/schemas/GenericApiIdentifiedAppConfigItem'
registry: '#/components/schemas/GenericApiIdentifiedAppConfigItem'
result_schema: '#/components/schemas/GenericApiIdentifiedAppConfigItem'
rna_oligo: '#/components/schemas/GenericApiIdentifiedAppConfigItem'
rna_sequence: '#/components/schemas/GenericApiIdentifiedAppConfigItem'
run_schema: '#/components/schemas/GenericApiIdentifiedAppConfigItem'
secure_text: '#/components/schemas/SecureTextAppConfigItem'
text: '#/components/schemas/TextAppConfigItem'
workflow_task_schema: '#/components/schemas/GenericApiIdentifiedAppConfigItem'
workflow_task_status: '#/components/schemas/GenericApiIdentifiedAppConfigItem'
worklist: '#/components/schemas/GenericApiIdentifiedAppConfigItem'
propertyName: type
oneOf:
- $ref: '#/components/schemas/ArrayElementAppConfigItem'
- $ref: '#/components/schemas/DateAppConfigItem'
- $ref: '#/components/schemas/DatetimeAppConfigItem'
- $ref: '#/components/schemas/JsonAppConfigItem'
- $ref: '#/components/schemas/EntitySchemaAppConfigItem'
- $ref: '#/components/schemas/FieldAppConfigItem'
- $ref: '#/compon
# --- truncated at 32 KB (91 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/benchling/refs/heads/main/openapi/benchling-apps-api-openapi.yml