openapi: 3.2.0 info: license: name: Apache 2.0 url: http://www.apache.org/licenses/LICENSE-2.0.html title: Benchling Study API version: 2.0.0 description: 'A structured unit used to plan and organize research in Benchling. Each study progresses through phases (see `StudyPhase`) sequentially from design to execution to completion. The current phase determines what modifications are permitted on the study and its associated data.' servers: - url: /api/v3 security: - oAuth: [] - basicApiKeyAuth: [] tags: - description: 'A structured unit used to plan and organize research in Benchling. Each study progresses through phases (see `StudyPhase`) sequentially from design to execution to completion. The current phase determines what modifications are permitted on the study and its associated data.' name: Study x-bnch-organization: Benchling paths: /study: post: description: Create a study. If authorIds is omitted, the study authors default to the creator. If authorIds is provided, it must be an array of user or app IDs and replaces the default author list for the new study. Passing an empty array creates the study without authors. Passing null for authorIds is invalid. operationId: Study.Create requestBody: content: application/json: schema: $ref: '#/components/schemas/CreateStudyInput' responses: '201': content: application/json: schema: $ref: '#/components/schemas/Study' 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 Study tags: - Study x-bnch-rate-limit-tier: 4 /study/items: get: description: List Study items. operationId: Study.List parameters: - $ref: '#/components/parameters/archiveReason.anyOf' - $ref: '#/components/parameters/archived.anyOf' - $ref: '#/components/parameters/createdAt.gt' - $ref: '#/components/parameters/createdAt.gte' - $ref: '#/components/parameters/createdAt.lt' - $ref: '#/components/parameters/createdAt.lte' - $ref: '#/components/parameters/id.anyOf' - $ref: '#/components/parameters/modifiedAt.gt' - $ref: '#/components/parameters/modifiedAt.gte' - $ref: '#/components/parameters/modifiedAt.lt' - $ref: '#/components/parameters/modifiedAt.lte' - $ref: '#/components/parameters/name.anyOf' - $ref: '#/components/parameters/name.anyOf.caseSensitive' - $ref: '#/components/parameters/nextToken' - $ref: '#/components/parameters/omit' - $ref: '#/components/parameters/pageSize' - $ref: '#/components/parameters/returning' - description: 'Method by which to order results. Valid sorts are: createdAt (created time, oldest first) and modifiedAt (modified time, oldest first). Use :asc or :desc to specify ascending or descending order. Default is modifiedAt:desc.' in: query name: sort schema: default: modifiedAt:desc enum: - createdAt:asc - createdAt:desc - modifiedAt:asc - modifiedAt:desc type: string responses: '200': content: application/json: schema: $ref: '#/components/schemas/StudyPaginatedList' 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 Study items tags: - Study x-bnch-rate-limit-tier: 4 /study/{study_id}: get: description: Get a single Study by ID. operationId: Study.Get parameters: - description: ID of the Study. in: path name: study_id required: true schema: type: string - $ref: '#/components/parameters/returning' - $ref: '#/components/parameters/omit' responses: '200': content: application/json: schema: $ref: '#/components/schemas/Study' 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 Study by ID tags: - Study x-bnch-rate-limit-tier: 5 patch: description: Update a study. If authorIds is omitted, existing study authors are unchanged. If authorIds is provided, it must be an array of user or app IDs and replaces the study's current author list. Passing an empty array clears all authors. Passing null for authorIds is invalid. operationId: Study.Update parameters: - description: ID of the Study. in: path name: study_id required: true schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/UpdateStudyInput' responses: '200': content: application/json: schema: $ref: '#/components/schemas/Study' 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 Study tags: - Study x-bnch-rate-limit-tier: 4 /study/{study_id}/authors/items: get: description: List Principal items. operationId: Study.authors.List parameters: - description: ID of the Study. in: path name: study_id required: true schema: type: string - description: Set to true to access beta operations via /api/v3. in: header name: EARLY-ACCESS required: false schema: type: string responses: '200': content: application/json: schema: $ref: '#/components/schemas/PrincipalUnpaginatedList' description: OK headers: {} '400': $ref: '#/components/responses/BadRequest' '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '429': $ref: '#/components/responses/TooManyRequests' '500': $ref: '#/components/responses/InternalServerError' summary: List Principal items tags: - Study x-bnch-rate-limit-tier: 4 /study:batch-create: post: description: Batch create Study synchronously in one transaction. Maximum 25 items per request. operationId: Study.BatchCreate requestBody: content: application/json: schema: additionalProperties: false properties: items: items: $ref: '#/components/schemas/CreateStudyInput' maxItems: 25 minItems: 1 type: array required: - items type: object responses: '201': content: application/json: schema: additionalProperties: false properties: items: items: $ref: '#/components/schemas/Study' 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 Study tags: - Study x-bnch-rate-limit-tier: 3 /study:batch-update: patch: description: Batch update Study synchronously in one transaction. Maximum 25 items per request. operationId: Study.BatchUpdate requestBody: content: application/json: schema: additionalProperties: false properties: items: items: $ref: '#/components/schemas/UpdateStudyInputWithPathParams' maxItems: 25 minItems: 1 type: array required: - items type: object responses: '200': content: application/json: schema: additionalProperties: false properties: items: items: $ref: '#/components/schemas/Study' 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 Study tags: - Study x-bnch-rate-limit-tier: 3 /study:bulk-create: post: description: Bulk create Study. operationId: Study.BulkCreate 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 Study tags: - Study x-bnch-rate-limit-tier: 2 /study:bulk-update: patch: description: Bulk update Study. operationId: Study.BulkUpdate 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 Study tags: - Study x-bnch-rate-limit-tier: 2 components: schemas: UpdateStudyInput: additionalProperties: false example: archiveReason: Archived archived: true authorIds: - ent_a0SApq3z - ent_t40Vb4aA description: Updated Study Description displayId: CSWNAR1 folderId: lib_o2thOLlq name: Updated Study Name phase: EXECUTION schemaFields: boolean_field_system_name: value: false date_field_system_name: value: '2025-06-15' datetime_field_system_name: value: '2025-06-15T09:00:00Z' dropdown_field_system_name: value: sfso_UcQuhAwx entity_field_system_name: value: - bfi_jdf8BV24 number_field_system_name: value: 456 text_field_system_name: value: Updated text value properties: archiveReason: type: string archived: type: boolean authorIds: description: The IDs of the users or apps to set as study authors. Omit to leave authors unchanged. Pass an empty array to clear all authors. items: type: string type: array description: type: string displayId: type: string fieldValues: deprecated: true description: Use schemaFields instead. items: $ref: '#/components/schemas/UpdateFieldValueInput' type: array folderId: type: string name: type: string phase: enum: - DESIGN - EXECUTION - COMPLETE type: string schemaFields: additionalProperties: $ref: '#/components/schemas/FieldValueInput' type: object type: object AppInstallation: description: 'Represents an installed Benchling App on a tenant, created from an `AppDefinitionVersion`. App installations store tenant-specific configuration values and feature bindings. As a Principal, app installations can be attributed as actors for API operations and auditing.' properties: __typename: type: string archiveReason: type: - 'null' - string archived: type: boolean configurationValues: format: uri type: string createdAt: format: datetime type: - 'null' - string creator: oneOf: - $ref: '#/components/schemas/PrincipalRef' - type: 'null' featureValues: items: $ref: '#/components/schemas/AssayRunFeatureValue' type: array id: type: string modifiedAt: format: datetime type: - 'null' - string name: type: string type: object User: description: 'Represents a human user in Benchling who can log in, perform actions, and own data. Users belong to one or more Organizations and may be members of Teams within those organizations. As an Owner, users can own Projects, Folders, and other resources. As a Principal, users can be assigned as reviewers, authors, or collaborators on various items. Users have attributes like email and username for identification. Users are distinct from `ServicePrincipal`, which represents non-human service accounts used for integrations.' properties: __typename: type: string createdAt: format: datetime type: string email: type: string id: type: string lastSeen: format: datetime type: - 'null' - string modifiedAt: format: datetime type: string name: type: - 'null' - string status: enum: - ACTIVE - SUSPENDED type: string username: type: string type: object 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 AppConfigWorkflowTaskSchemaOutput: description: Defines the output field structure for a workflow task schema configuration. properties: __typename: type: string fieldDefinitions: oneOf: - items: $ref: '#/components/schemas/AppConfigFieldDefinition' type: array - type: 'null' type: object ResourceAppConfigSpec: description: 'Specifies that an app configuration field should reference a Benchling object instance. The type field identifies the kind of object required, matching the BenchlingAppType values used in app manifests (e.g. dna_sequence, folder, registry). Covers all instance reference types with no additional spec constraints beyond requiredConfig. For schema references use SchemaAppConfigSpec or EntitySchemaAppConfigSpec.' properties: __typename: type: string requiredConfig: type: - 'null' - boolean type: enum: - BOX_SCHEMA - CONTAINER_SCHEMA - ENTRY_SCHEMA - LEGACY_REQUEST_SCHEMA - LOCATION_SCHEMA - PLATE_SCHEMA - RESULT_SCHEMA - RUN_SCHEMA - WORKFLOW_TASK_SCHEMA - AA_SEQUENCE - ASSAY_RESULT - ASSAY_RUN - AUTOMATION_INPUT_GENERATOR - AUTOMATION_OUTPUT_PROCESSOR - BLOB - BOX - CONTAINER - CUSTOM_ENTITY - DNA_ALIGNMENT - DNA_OLIGO - DNA_SEQUENCE - DROPDOWN - DROPDOWN_OPTION - ENTRY - FIELD - FOLDER - LEGACY_REQUEST - LOCATION - MIXTURE - MOLECULE - PLATE - PROJECT - REGISTRY - RNA_OLIGO - RNA_SEQUENCE - WORKFLOW_TASK_STATUS - WORKLIST - null type: - 'null' - string type: object 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 FolderRef: properties: __typename: type: string id: format: api_id type: string type: object FloatAppConfigSpec: description: Specifies that an app configuration field should accept a floating-point number. properties: __typename: type: string enum: description: Optional enum constraint — if present, the value must be one of these floats. oneOf: - items: type: number type: array - type: 'null' requiredConfig: type: - 'null' - boolean type: object WorkflowTaskSchemaAppConfigSpec: description: 'Specifies that an app configuration field should reference a workflow task schema. Kept separate from SchemaAppConfigSpec because it supports output field definitions.' properties: __typename: type: string fieldDefinitions: oneOf: - items: $ref: '#/components/schemas/AppConfigFieldDefinition' type: array - type: 'null' output: description: Output field definitions for the workflow task schema. oneOf: - $ref: '#/components/schemas/AppConfigWorkflowTaskSchemaOutput' - type: 'null' requiredConfig: type: - 'null' - boolean type: object EntitySchemaAppConfigSpec: description: 'Specifies that an app configuration field should reference an entity schema. Kept separate from SchemaAppConfigSpec because it carries a subtype constraint.' properties: __typename: type: string fieldDefinitions: oneOf: - items: $ref: '#/components/schemas/AppConfigFieldDefinition' type: array - type: 'null' requiredConfig: type: - 'null' - boolean subtype: description: 'Optional subtype constraint — if present, the referenced schema must be of this entity type (e.g. DNA_SEQUENCE, AA_SEQUENCE).' enum: - AA_SEQUENCE - CUSTOM_ENTITY - DNA_OLIGO - DNA_SEQUENCE - MIXTURE - MOLECULE - RNA_OLIGO - RNA_SEQUENCE - null type: - 'null' - string type: object AppConfigFieldDefinition: description: 'Defines a field within an app configuration that references schema fields. Specifies the field name, type, whether it accepts multiple values, and whether it is required.' properties: __typename: type: string description: type: - 'null' - string isMulti: description: Whether the field must be multi-valued — null means either true or false is acceptable. type: - 'null' - boolean isRequired: description: Whether the field must be required — null means either true or false is acceptable. type: - 'null' - boolean name: type: string requiredConfig: type: - 'null' - boolean type: description: Type constraint for the field — null means any type is acceptable. enum: - DNA_SEQUENCE_LINK - AA_SEQUENCE_LINK - CUSTOM_ENTITY_LINK - ENTITY_LINK - MIXTURE_LINK - MOLECULE_LINK - DROPDOWN - PART_LINK - AA_PART_LINK - TRANSLATION_LINK - BLOB_LINK - TEXT - LONG_TEXT - BATCH_LINK - STORAGE_LINK - ENTRY_LINK - ASSAY_REQUEST_LINK - ASSAY_RESULT_LINK - ASSAY_RUN_LINK - BOOLEAN - FLOAT - INTEGER - DATETIME - DATE - JSON - null type: - 'null' - string type: object JsonValue: description: A type that represents JSON values. properties: __typename: type: string value: description: The JSON value. type: object type: object TextAndUrlValue: description: A type that represents text (string) values with an associated URL. properties: __typename: type: string url: description: The URL associated with the value. Please use `TextValue` if you don't want a URL. type: string value: description: The text value. It may or may not be an empty string. type: string type: object SchemaAppConfigSpec: description: 'Specifies that an app configuration field should reference one of the schema types that share a common structure: container_schema, plate_schema, location_schema, box_schema, run_schema, result_schema, legacy_request_schema, or entry_schema. The type field identifies which schema kind is required. For entity_schema use EntitySchemaAppConfigSpec; for workflow_task_schema use WorkflowTaskSchemaAppConfigSpec.' properties: __typename: type: string fieldDefinitions: oneOf: - items: $ref: '#/components/schemas/AppConfigFieldDefinition' type: array - type: 'null' requiredConfig: type: - 'null' - boolean type: enum: - BOX_SCHEMA - CONTAINER_SCHEMA - ENTRY_SCHEMA - LEGACY_REQUEST_SCHEMA - LOCATION_SCHEMA - PLATE_SCHEMA - RESULT_SCHEMA - RUN_SCHEMA - WORKFLOW_TASK_SCHEMA - AA_SEQUENCE - ASSAY_RESULT - ASSAY_RUN - AUTOMATION_INPUT_GENERATOR - AUTOMATION_OUTPUT_PROCESSOR - BLOB - BOX - CONTAINER - CUSTOM_ENTITY - DNA_ALIGNMENT - DNA_OLIGO - DNA_SEQUENCE - DROPDOWN - DROPDOWN_OPTION - ENTRY - FIELD - FOLDER - LEGACY_REQUEST - LOCATION - MIXTURE - MOLECULE - PLATE - PROJECT - REGISTRY - RNA_OLIGO - RNA_SEQUENCE - WORKFLOW_TASK_STATUS - WORKLIST - null type: - 'null' - string type: object JsonAppConfigSpec: description: Specifies that an app configuration field should accept a JSON value. properties: __typename: type: string requiredConfig: type: - 'null' - boolean type: object AnyType: {} CanvasFeatureSpec: description: 'Defines a canvas feature for a Benchling App, which provides an embedded UI surface within entries or templates. Canvases allow apps to render custom interactive content.' properties: __typename: type: string featureId: type: string locations: oneOf: - items: enum: - ENTRY - ENTRY_TEMPLATE - APP_HOME type: string type: array - type: 'null' name: type: string type: object 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 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 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 BooleanAppConfigSpec: description: Specifies that an app configuration field should accept a boolean value. properties: __typename: type: string requiredConfig: type: - 'null' - boolean type: object PrincipalRef: properties: __typename: type: string id: format: api_id type: string type: object TextAppConfigSpec: description: Specifies that an app configuration field should accept a text string. properties: __typename: type: string enum: description: Optional enum constraint — if present, the value must be one of these strings. oneOf: - items: type: string type: array - type: 'null' requiredConfig: type: - 'null' - boolean type: object UpdateStudyInputWithPathParams: additionalProperties: false example: archiveReason: Archived archived: true authorIds: - ent_a0SApq3z - ent_t40Vb4aA description: Updated Study Description displayId: CSWNAR1 folderId: lib_o2thOLlq id: stdy_9CYiCggY name: Updated Study Name phase: EXECUTION schemaFields: boolean_field_system_name: value: false date_field_system_name: value: '2025-06-15' datetime_field_system_name: value: '2025-06-15T09:00:00Z' dropdown_field_system_name: value: sfso_UcQuhAwx entity_field_system_name: value: - bfi_jdf8BV24 number_field_system_name: value: 456 text_field_system_name: value: Updated text value properties: archiveReason: type: string archived: type: boolean authorIds: description: The IDs of the users or apps to set as study authors. Omit to leave authors unchanged. Pass an empty array to clear all authors. items: type: string type: array description: type: string displayId: type: string fieldValues: deprecated: true description: Use schemaFields instead. items: $ref: '#/components/schemas/UpdateFieldValueInput' type: array folderId: type: string id: type: string name: type: string phase: enum: - DESIGN - EXECUTION - COMPLETE type: string schemaFields: additionalProperties: $ref: '#/components/schemas/FieldValueInput' type: object required: - id type: object SchemaFieldDefinitionRef: properties: __typename: type: string id: format: api_id type: string type: object CreateStudyInput: additionalProperties: false example: authorIds: - ent_a0SApq3z description: Study Description designEntryId: etr_kT6BHBdZ displayId: STUDY-001 folderId: lib_o2thOLlq name: Study Name schemaFields: boolean_field_system_name: value: true date_field_system_name: value: '2025-01-01' datetime_field_system_name: value: '2025-01-01T00:00:00Z' dropdown_field_system_name: value: sfso_UcQuhAwx entity_field_system_name: value: - bfi_jdf8BV24 - bfi_laGnl8vB inventory_field_system_name: value: con_YvTFCWmh json_field_system_name: value: key: value number_field_system_name: value: 123 text_field_system_name: value: Text value schemaId: stdysch_ztQQGSSF properties: authorIds: description: The IDs of the users or apps to set as study authors. Omit to default to the creator. Pass an empty array to create the study without authors. items: type: string type: array description: type: string designEntryId: description: The ID of an entry to use as the study design entry. Each study must have a unique design entry. Custom Studies require a design entry. Should be omitted for all other study types. type: string displayId: description: The ID to assign to the study. Only allowed when the study schema is configured for manual ID assignment (i.e., `idGenerationMode` is `MANUAL`). Must be unique within the tenant. type: string folderId: description: The ID of the folder to create the study in. type: string name: description: The name of the study. Should be omitted if using a study schema with a naming template. type: string schemaFields: additionalProperties: $ref: '#/components/schemas/FieldValueInput' type: object schemaId: description: The ID of the schema to associate with this object. type: string studySchemaId: deprecated: true description: Deprecated. Use `schemaId` instead. The ID of the study schema. type: string tags: deprecated: true description: 'Deprecated. Use `schemaFields` instead. Schema fields to set on the study. Must correspond with the study schema''s field definitions. Every field should have its display name (not system name) or API ID as a key, mapping to the value of the field. See the example for the supported field value types and formatting. For date and datetime fields, use the RFC 3339 format. For single link fields, supply a single object specifying the id of the item you want to link, (eg. `{''targetFiles'': [{''id'': ''bfi_jdf8BV24''}]}`). For multi-link fields, supply an array of objects specifying the ids of the items you want to link, (eg. `{''targetFiles'': [{''id'': ''bfi_jdf8BV24''}, {''id'': ''bfi_laGnl8vB''}]}`). Exactly one of `schemaFields` or the deprecated `tags` must be specified.' type: object required: - description - folderId type: object ObjectLinkListValue: description: A type that represents a list of links to other objects. properties: __typename: type: string value: description: The list of objects that this value links to. Inaccessible objects may be returned instead if the object is not found with the current permission set. items: $ref: '#/components/schemas/ObjectRef' description: Union of AaSequence, Box, Container, CustomEntity, DnaSequence, DropdownOption, Entry, Location, Mixture, Molecule, Plate, Result, RnaSequence, Run, DnaOligo, RnaOligo type: array type: object LegacyAppInstallation: description: 'Represents a legacy (pre-App Store) Benchling App installation on a tenant. Legacy apps are configured directly with webhook URLs and configuration specs rather than through app definition versions. This type is maintained for backward compatibility with older app integrations. For new apps, see `AppInstallation`.' properties: __typename: type: string archiveReason: type: - 'null' - string archived: type: boolean configurationSpecs: items: $ref: '#/components/schemas/AppConfigOption' type: array configurationValues: format: uri type: string createdAt: format: datetime type: - 'null' - string creator: oneOf: - $ref: '#/components/schemas/PrincipalRef' - type: 'null' description: type: - 'null' - string featureSpecs: items: anyOf: - $ref: '#/components/schemas/CanvasFeatureSpec' - $ref: '#/components/schemas/AssayRunFeatureSpec' - $ref: '#/components/schemas/AppHomepageFeatureSpec' description: Union of CanvasFeatureSpec, AssayRunFeatureSpec, AppHomepageFeatureSpec discriminator: propertyName: __typename type: array featureValues: items: $ref: '#/components/schemas/AssayRunFeatureValue' type: array id: type: string messageSubscriptions: items: $ref: '#/components/schemas/AppMessageSubscription' type: array modifiedAt: format: datetime type: - 'null' - string name: type: string publicKey: type: - 'null' - string versionNumber: type: - 'null' - string webhookUrl: type: - 'null' - string type: object DateAppConfigSpec: description: Specifies that an app configuration field should accept a date value. properties: __typename: type: string requiredConfig: type: - 'null' - boolean type: object AppMessageSubscription: description: 'Represents an app''s subscription to a specific event type, specifying the event type and how notifications should be delivered (see `DeliveryMethod`).' properties: __typename: type: string deliveryMethod: enum: - WEBHOOK - WEBHOOK_INTERNAL type: string type: enum: - V2_BETA_CANVAS_CREATED - V2_CANVAS_CREATED - V2_CANVAS_USER_INTERACTED - V2_CANVAS_INITIALIZED - V2_APP_ACTIVATE_REQUESTED - V2_APP_DEACTIVATED - V2_APP_INSTALLED - V2_BETA_APP_CONFIGURATION_UPDATED - V2_ASSAY_RUN_CREATED - V2_ASSAY_RUN_UPDATED_FIELDS - V2_ENTITY_REGISTERED - V2_ENTRY_CREATED - V2_ENTRY_UPDATED_FIELDS - V2_ENTRY_UPDATED_REVIEW_RECORD - V2_REQUEST_CREATED - V2_REQUEST_UPDATED_FIELDS - V2_REQUEST_UPDATED_STATUS - V2_WORKFLOW_TASK_GROUP_CREATED - V2_WORKFLOW_TASK_GROUP_MAPPING_COMPLETED - V2_WORKFLOW_TASK_GROUP_UPDATED_WATCHERS - V2_WORKFLOW_TASK_CREATED - V2_WORKFLOW_TASK_UPDATED_ASSIGNEE - V2_WORKFLOW_TASK_UPDATED_SCHEDULED_ON - V2_WORKFLOW_TASK_UPDATED_STATUS - V2_WORKFLOW_TASK_UPDATED_FIELDS - V2_WORKFLOW_OUTPUT_CREATED - V2_WORKFLOW_OUTPUT_UPDATED_FIELDS - V2_AUTOMATION_FILE_TRANSFORM_UPDATED_STATUS_RUNNING - V2_AUTOMATION_FILE_TRANSFORM_UPDATED_STATUS_PENDING - V2_AUTOMATION_FILE_TRANSFORM_UPDATED_STATUS_SUCCEEDED - V2_AUTOMATION_FILE_TRANSFORM_UPDATED_STATUS_FAILED - V3_CUSTOM_ENTITY_CREATED - V3_CUSTOM_ENTITY_UPDATED - V3_DNA_OLIGO_CREATED - V3_DNA_OLIGO_UPDATED - V3_DNA_SEQUENCE_CREATED - V3_DNA_SEQUENCE_UPDATED - V3_ENTRY_CREATED - V3_PROJECT_CREATED - V3_PROJECT_UPDATED - V3_RNA_OLIGO_CREATED - V3_RNA_OLIGO_UPDATED - V3_RNA_SEQUENCE_CREATED - V3_RNA_SEQUENCE_UPDATED - V3_RUN_CREATED type: string type: object DateValue: description: A type that represents date values. properties: __typename: type: string value: description: The date value. format: date type: string type: object DropdownAppConfigSpec: description: Specifies that an app configuration field should be a dropdown with predefined options. properties: __typename: type: string options: oneOf: - items: $ref: '#/components/schemas/AppConfigDropdownOption' type: array - type: 'null' requiredConfig: type: - 'null' - boolean type: object ArrayAppConfigSpec: description: Specifies that an app configuration field should accept an array of values. properties: __typename: type: string elementDefinition: description: Defines the named config options allowed within this array and their type constraints. items: $ref: '#/components/schemas/ArrayAppConfigOption' type: array maxElements: description: Maximum number of elements allowed in the array (1-500); null means no maximum. type: - 'null' - integer minElements: description: Minimum number of elements allowed in the array (0-500); null means no minimum. type: - 'null' - integer requiredConfig: type: - 'null' - boolean type: object BooleanValue: description: A type that represents boolean values. properties: __typename: type: string value: description: The boolean value. type: boolean type: object PrincipalUnpaginatedList: additionalProperties: false properties: items: items: $ref: '#/components/schemas/Principal' type: array type: object AssayRunFeatureSpec: description: 'Defines an assay run feature for a Benchling App, allowing the app to process or generate lab automation run data.' properties: __typename: type: string featureId: type: string name: type: string type: object UpdateFieldValueInput: additionalProperties: false properties: fieldDefinitionId: type: string value: $ref: '#/components/schemas/AnyType' required: - value - fieldDefinitionId type: object AppHomepageFeatureSpec: description: 'Defines a homepage feature for a Benchling App, providing a dedicated landing page within the Benchling application for the app''s functionality.' properties: __typename: type: string featureId: type: string name: type: string type: object Principal: anyOf: - $ref: '#/components/schemas/AppInstallation' - $ref: '#/components/schemas/LegacyAppInstallation' - $ref: '#/components/schemas/ServicePrincipal' - $ref: '#/components/schemas/User' discriminator: propertyName: __typename type: object 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 AssayRunFeatureValue: description: 'Links an app''s assay run feature to a specific resource (typically a run schema) on a tenant. The featureId identifies the feature from the app definition, and resourceId references the tenant-specific resource it''s bound to.' properties: __typename: type: string featureId: description: Developer-specified feature ID as defined in the app manifest / app definition version type: string resourceId: type: - 'null' - string type: object ArrayAppConfigOption: description: 'A config option nested within an array-type app configuration field. Structurally identical to AppConfigOption — it has a name and a configSpec — but its configSpec accepts the same config types as the top level except nested arrays (see ArrayAppConfigElementSpec).' properties: __typename: type: string configSpec: anyOf: - $ref: '#/components/schemas/BooleanAppConfigSpec' - $ref: '#/components/schemas/IntegerAppConfigSpec' - $ref: '#/components/schemas/FloatAppConfigSpec' - $ref: '#/components/schemas/TextAppConfigSpec' - $ref: '#/components/schemas/SecureTextAppConfigSpec' - $ref: '#/components/schemas/DateAppConfigSpec' - $ref: '#/components/schemas/DateTimeAppConfigSpec' - $ref: '#/components/schemas/JsonAppConfigSpec' - $ref: '#/components/schemas/DropdownAppConfigSpec' - $ref: '#/components/schemas/EntitySchemaAppConfigSpec' - $ref: '#/components/schemas/WorkflowTaskSchemaAppConfigSpec' - $ref: '#/components/schemas/SchemaAppConfigSpec' - $ref: '#/components/schemas/ResourceAppConfigSpec' description: Union of BooleanAppConfigSpec, IntegerAppConfigSpec, FloatAppConfigSpec, TextAppConfigSpec, SecureTextAppConfigSpec, DateAppConfigSpec, DateTimeAppConfigSpec, JsonAppConfigSpec, DropdownAppConfigSpec, EntitySchemaAppConfigSpec, WorkflowTaskSchemaAppConfigSpec, SchemaAppConfigSpec, ResourceAppConfigSpec discriminator: propertyName: __typename description: type: - 'null' - string name: type: string type: object StudySchemaRef: properties: __typename: type: string id: format: api_id type: string type: object IntegerValue: description: A type that represents integer values. properties: __typename: type: string value: description: The integer value. type: integer type: object GeneralError: properties: detail: type: - 'null' - string - object instance: type: string status: type: integer title: type: - 'null' - string type: type: string required: - type - title - detail - status - instance type: object ServicePrincipal: description: 'Represents a non-human identity used for system integrations and automated processes within Benchling. Service principals act as the identity for service accounts that perform actions via APIs or background processes without human intervention. Unlike `User`, which represents a human user, ServicePrincipal is used when an integration or automated system needs to be attributed as the actor for auditing and attribution purposes. Service principals implement the Principal interface, allowing them to appear as creators or actors on domain objects. Also known as "service account" in some contexts.' properties: __typename: type: string id: type: string modifiedAt: format: datetime type: - 'null' - string name: type: - 'null' - string type: object FieldValueInput: additionalProperties: false properties: value: $ref: '#/components/schemas/AnyType' required: - value type: object Study: description: 'A structured unit used to plan and organize research in Benchling. Each study progresses through phases (see `StudyPhase`) sequentially from design to execution to completion. The current phase determines what modifications are permitted on the study and its associated data.' properties: __typename: type: string archiveDatetime: format: datetime type: - 'null' - string archiveReason: type: - 'null' - string archiveUser: oneOf: - $ref: '#/components/schemas/PrincipalRef' - type: 'null' archived: type: boolean authors: oneOf: - format: uri type: string - type: 'null' createdAt: format: datetime type: - 'null' - string creator: $ref: '#/components/schemas/PrincipalRef' description: type: - 'null' - string designEntry: oneOf: - $ref: '#/components/schemas/EntryRef' - type: 'null' displayId: type: - 'null' - string folder: $ref: '#/components/schemas/FolderRef' id: type: string modifiedAt: format: datetime type: - 'null' - string name: type: string phase: enum: - DESIGN - EXECUTION - COMPLETE - null type: - 'null' - string schema: oneOf: - $ref: '#/components/schemas/StudySchemaRef' - type: 'null' schemaFields: oneOf: - items: $ref: '#/components/schemas/SchemaFieldValue' type: array - type: 'null' studySchema: $ref: '#/components/schemas/StudySchemaRef' deprecated: true description: Use schema instead. The schema of the study. 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 IntegerAppConfigSpec: description: Specifies that an app configuration field should accept an integer value. properties: __typename: type: string enum: description: Optional enum constraint — if present, the value must be one of these integers. oneOf: - items: type: integer type: array - type: 'null' requiredConfig: type: - 'null' - boolean type: object AppConfigOption: description: 'Defines a configuration option in an app''s configuration schema. Each option has a name, optional description, and a configSpec defining the expected value type and validation.' properties: __typename: type: string configSpec: anyOf: - $ref: '#/components/schemas/BooleanAppConfigSpec' - $ref: '#/components/schemas/IntegerAppConfigSpec' - $ref: '#/components/schemas/FloatAppConfigSpec' - $ref: '#/components/schemas/TextAppConfigSpec' - $ref: '#/components/schemas/SecureTextAppConfigSpec' - $ref: '#/components/schemas/DateAppConfigSpec' - $ref: '#/components/schemas/DateTimeAppConfigSpec' - $ref: '#/components/schemas/JsonAppConfigSpec' - $ref: '#/components/schemas/ArrayAppConfigSpec' - $ref: '#/components/schemas/DropdownAppConfigSpec' - $ref: '#/components/schemas/EntitySchemaAppConfigSpec' - $ref: '#/components/schemas/WorkflowTaskSchemaAppConfigSpec' - $ref: '#/components/schemas/SchemaAppConfigSpec' - $ref: '#/components/schemas/ResourceAppConfigSpec' description: Union of BooleanAppConfigSpec, IntegerAppConfigSpec, FloatAppConfigSpec, TextAppConfigSpec, SecureTextAppConfigSpec, DateAppConfigSpec, DateTimeAppConfigSpec, JsonAppConfigSpec, ArrayAppConfigSpec, DropdownAppConfigSpec, EntitySchemaAppConfigSpec, WorkflowTaskSchemaAppConfigSpec, SchemaAppConfigSpec, ResourceAppConfigSpec discriminator: propertyName: __typename description: type: - 'null' - string name: type: string type: object StudyPaginatedList: additionalProperties: false properties: items: items: $ref: '#/components/schemas/Study' type: array nextToken: type: string type: object AppConfigDropdownOption: description: Defines an option within a dropdown-type app configuration field. properties: __typename: type: string description: type: - 'null' - string name: type: string requiredConfig: type: - 'null' - boolean type: object ObjectRef: properties: __typename: type: string id: format: api_id type: string type: object EntryRef: properties: __typename: type: string id: format: api_id type: string type: object TextValue: description: A type that represents text (string) values. properties: __typename: type: string value: description: The text value. It may or may not be an empty string. type: string type: object DateTimeAppConfigSpec: description: Specifies that an app configuration field should accept a datetime value. properties: __typename: type: string requiredConfig: type: - 'null' - boolean type: object SecureTextAppConfigSpec: description: 'Specifies that an app configuration field should accept secure (encrypted) text. Used for sensitive data like API keys or credentials.' properties: __typename: type: string requiredConfig: type: - 'null' - boolean type: object parameters: 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 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 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 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 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 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 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 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.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 nextToken: description: Token for pagination in: query name: nextToken schema: type: string pageSize: description: Number of results to return. Defaults to 50, maximum of 100. in: query name: pageSize schema: type: integer 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 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 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 responses: TooManyRequests: content: application/problem+json: schema: $ref: '#/components/schemas/GeneralError' description: Too Many Requests BadRequest: content: application/problem+json: schema: $ref: '#/components/schemas/GeneralError' description: Bad Request InternalServerError: content: application/problem+json: schema: $ref: '#/components/schemas/InternalServerError' description: Internal Server Error NotFound: content: application/problem+json: schema: $ref: '#/components/schemas/GeneralError' description: Not Found Forbidden: content: application/problem+json: schema: $ref: '#/components/schemas/GeneralError' description: Forbidden securitySchemes: basicApiKeyAuth: description: Use issued API key for standard access to the API scheme: basic type: http basicClientIdSecretAuth: description: Auth used as part of client credentials OAuth flow prior to receiving a bearer token. scheme: basic type: http oAuth: description: OAuth2 Client Credentials flow intended for service access flows: clientCredentials: scopes: {} tokenUrl: /oauth/token type: oauth2