openapi: 3.2.0 info: license: name: Apache 2.0 url: http://www.apache.org/licenses/LICENSE-2.0.html title: Benchling Analysis Template API version: 2.0.0 description: 'A reusable pipeline configuration that can be instantiated to create new Analysis objects. AnalysisTemplates define a complete data processing workflow with PipelineSteps (see `steps`) that can be parameterized through configVariables (see `AnalysisTemplateVariable`) and dataFrameVariables (see `AnalysisTemplateDataFrameVariable`). When users apply a template, they provide values for these variables, generating a new Analysis with the template''s pipeline structure populated with actual data. Templates are organized within TemplateCollections and support versioning through the createdFromPipeline reference.' servers: - url: /api/v3 security: - oAuth: [] - basicApiKeyAuth: [] tags: - description: 'A reusable pipeline configuration that can be instantiated to create new Analysis objects. AnalysisTemplates define a complete data processing workflow with PipelineSteps (see `steps`) that can be parameterized through configVariables (see `AnalysisTemplateVariable`) and dataFrameVariables (see `AnalysisTemplateDataFrameVariable`). When users apply a template, they provide values for these variables, generating a new Analysis with the template''s pipeline structure populated with actual data. Templates are organized within TemplateCollections and support versioning through the createdFromPipeline reference.' name: AnalysisTemplate x-bnch-organization: Benchling paths: /analysis-template/items: get: description: List AnalysisTemplate items. operationId: AnalysisTemplate.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/creator.anyOf' - $ref: '#/components/parameters/id.anyOf' - $ref: '#/components/parameters/modifiedAt.gt' - $ref: '#/components/parameters/modifiedAt.gte' - $ref: '#/components/parameters/modifiedAt.lt' - $ref: '#/components/parameters/modifiedAt.lte' - $ref: '#/components/parameters/name.anyOf' - $ref: '#/components/parameters/name.anyOf.caseSensitive' - $ref: '#/components/parameters/nextToken' - $ref: '#/components/parameters/omit' - $ref: '#/components/parameters/pageSize' - $ref: '#/components/parameters/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/AnalysisTemplatePaginatedList' 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 AnalysisTemplate items tags: - AnalysisTemplate x-bnch-rate-limit-tier: 4 /analysis-template/{analysis_template_id}: get: description: Get a single AnalysisTemplate by ID. operationId: AnalysisTemplate.Get parameters: - description: ID of the AnalysisTemplate. in: path name: analysis_template_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/AnalysisTemplate' 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 AnalysisTemplate by ID tags: - AnalysisTemplate x-bnch-rate-limit-tier: 5 /analysis-template/{analysis_template_id}/archivable-children/items: get: description: List AnalysisTemplateDataFrameVariable items. operationId: AnalysisTemplate.archivableChildren.List parameters: - description: ID of the AnalysisTemplate. in: path name: analysis_template_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/AnalysisTemplateDataFrameVariableUnpaginatedList' 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 AnalysisTemplateDataFrameVariable items tags: - AnalysisTemplate x-bnch-rate-limit-tier: 4 /analysis-template/{analysis_template_id}/config-variables/items: get: description: List AnalysisTemplateVariable items. operationId: AnalysisTemplate.configVariables.List parameters: - description: ID of the AnalysisTemplate. in: path name: analysis_template_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/AnalysisTemplateVariableUnpaginatedList' 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 AnalysisTemplateVariable items tags: - AnalysisTemplate x-bnch-rate-limit-tier: 4 /analysis-template/{analysis_template_id}/data-frame-variables/items: get: description: List AnalysisTemplateDataFrameVariable items. operationId: AnalysisTemplate.dataFrameVariables.List parameters: - description: ID of the AnalysisTemplate. in: path name: analysis_template_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/AnalysisTemplateDataFrameVariableUnpaginatedList' 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 AnalysisTemplateDataFrameVariable items tags: - AnalysisTemplate x-bnch-rate-limit-tier: 4 /analysis-template/{analysis_template_id}/steps/items: get: description: List PipelineStep items. operationId: AnalysisTemplate.steps.List parameters: - description: ID of the AnalysisTemplate. in: path name: analysis_template_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/PipelineStepUnpaginatedList' 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 PipelineStep items tags: - AnalysisTemplate x-bnch-rate-limit-tier: 4 components: schemas: PipelineStep: description: 'Represents a single operation node within a Pipeline''s directed acyclic graph (DAG). Each step performs a specific transformation determined by its stepType (see `PipelineStepType`), with configuration options stored in the config field. Steps receive data through inputStepDatas and produce results via outputStepDatas (see `PipelineStepData`). The incomingEdges and outgoingEdges (see `PipelineStepEdge`) define the data flow connections to other steps. Execution state is tracked through statusCode and statusMessage. Steps support provenance tracking through the provenanceUri field for tracing data lineage.' properties: __typename: type: string config: type: - 'null' - object createdAt: format: datetime type: string id: type: string inputStepDatas: format: uri type: string modifiedAt: format: datetime type: string outputStepDatas: format: uri type: string pipeline: $ref: '#/components/schemas/PipelineRef' statusCode: enum: - AI_PROPOSED - BLOCKED - FAILED - HALTED - RUNNING - SUCCEEDED - WAITING type: string statusMessage: type: - 'null' - string stepType: enum: - AGGREGATE_DATASET - AUTOFILL_ANTIBODY_ELEMENT_SUBELEMENTS - ANNOTATE_ANTIBODY_INPUTS - ANOVA - APPLY_COLUMN_MAPPING - BIN_DATA - BOLTZ2 - BOLTZGEN - BOLTZGEN_SUCCESS - BULK_IMPORT - CHAI1 - CHART_VIEW - COMPUTED_COLUMN - CONCATENATE_ANTIBODY_COMPONENT_DOMAINS_TO_CHAINS - CONNECTION_DATA_DATASET - CONVERT_ASM_TO_CSV - CONVERT_FILE_TO_DATASET_WITH_DATA_ENTRY_ASSISTANT - CONVERT_JSON_TO_DATASET - CONVERT_OPENFOLD2_OUTPUT - CONVERT_OPENFOLD3_OUTPUT - CONVERT_TO_ASM - CREATE_DATASET_FROM_FILE - CREATE_ENTITIES - CREATE_METERING_USAGE_CHART - CREATE_PROCEDURE_DATASET - DATASET_VIEW - DATA_CATALOG_DATASET - DATA_CATALOG_FILE - DATA_CATALOG_FILES - DEFINE_TEMPLATE_VARIABLES - EXPERIMENT_OPTIMIZATION_BOOTSTRAP - EXPERIMENT_OPTIMIZATION_CLEAN_DATA - EXPERIMENT_OPTIMIZATION_EXPLANATION - EXPERIMENT_OPTIMIZATION_GENERATE_SEARCH_SPACE - EXPERIMENT_OPTIMIZATION_POSTERIOR_SUMMARY - EXPERIMENT_OPTIMIZATION_RECOMMENDATION - EXPERIMENT_OPTIMIZATION_TRAINING - EXPLORATORY_DATA_ANALYSIS - EXPORT_DATA_CATALOG_DATASET - EXPORT_DATA_CATALOG_FILE - EXTRACT_DATA_FRAME_VALUE - EXTRACT_OR_REMOVE_LINES - FILL_PLATE - FILTER_DATASET - FIND_AND_REPLACE - FLAG_ROWS - FORMAT_COLUMNS - GENERATE_ANALYSIS_VIEW_URL - GENERATE_BOLTZGEN_YAML - GENERATE_BOLTZ_YAML - GENERATE_FASTA - GENERATE_MODEL_RUN_INPUT - GENERATE_OPENFOLD2_JSON - GENERATE_OPENFOLD3_JSON - HIDE_COLUMNS - IMPORT_PLATES - IMPORT_SCRATCH_FILE - INITIALIZE_DATASET - INSERT_RESULT_URL_IN_DOCUMENT - INTERPOLATE_MARKDOWN - JOIN - LAYOUT - LEGACY_DATA_IMPORT_ENTRY_CREATION - LEGACY_DATA_IMPORT_INITIATION - LEGACY_DATA_IMPORT_TRANSCRIPTION - LOOK_UP - MAP_COLUMNS - MAP_JSON_TO_DATASETS_AND_FILES - MODEL_RUN_INFERENCE - MOVE_INVENTORY_PLATES - COMPUTE_NDC_ENTITY_MERGED_COLUMNS - NDC_COMBINE_DOMAINS_TO_VARIABLE_PAIRS - NDC_EXPAND_VARIABLE_PAIRS_TO_DOMAINS - NDC_REFERENCE_EXISTING_COMPONENTS - NOTEBOOK_TABLE_DATASET - OPENFOLD2 - OPENFOLD3 - PARAMETER_OPTIMIZATION_CONFIGURATION - PARAMETER_OPTIMIZATION_DATASET_CONFIGURATION - PARAMETER_OPTIMIZATION_MODELING - PARAMETER_OPTIMIZATION_PREDICTION - PIVOT_DATASET - PLATE_SCHEMA_DATASET - PLATES_TO_DATASETS - POSTPROCESS_MODEL_RUN - PROCEDURE_RUN_DATA_FRAMES - PROMOTE_DATASET - REGISTRY_SCHEMA_DATASET - REGISTER_PLATES_IN_INVENTORY - REGRESSION - REGRESSION_INTERPOLATION - RENAME_COLUMNS - REORDER_COLUMNS - RETYPE_COLUMNS - RUN_HAMILTON_METHOD - RUN_HIGHRES_PROTOCOL - RUN_OPENTRONS_PROTOCOL - SAVE_STRUCTURE_PREDICTION - SAVE_TO_RESULTS - SEND_TO_CONNECTION - SEND_TO_DOCUMENT - SEND_USER_NOTIFICATION - SORT_COLUMNS - STATIC_TEMPLATE_INPUT_TABLE - TABLE_VIEW - TEMPLATE_INPUT - TEST_ALL_CONFIGS - THIRD_PARTY - TRANSFER_PLATES - TRANSFORM_PROTEIN_BULK_INGEST_OUTPUT_TO_DATASET - TRANSLATE_ANTIBODY_COMPONENT_DNA_TO_AA - T_TEST - UNION_DATASETS - UNPIVOT_DATASET - UPDATE_ENTITIES - UPLOAD_CSV_DATASET - USER_DEFINED_FUNCTION - GENERATE_NDC_ERROR_CSV - VALIDATE_AND_TRANSFORM_ANTIBODY_INPUTS - VARIABLE_TEMPLATE_INPUT_TABLE - WAREHOUSE_SQL_DATASET - WINDOW_FUNCTIONS type: string stepVersion: type: integer type: object PipelineStepUnpaginatedList: additionalProperties: false properties: items: items: $ref: '#/components/schemas/PipelineStep' type: array type: object DataFrameColumn: description: 'Defines a column within a DataFrame, including its internal system name, user-facing display name, and data type specification.' properties: __typename: type: string displayName: type: string systemName: type: string type: type: object type: object AnalysisTemplate: description: 'A reusable pipeline configuration that can be instantiated to create new Analysis objects. AnalysisTemplates define a complete data processing workflow with PipelineSteps (see `steps`) that can be parameterized through configVariables (see `AnalysisTemplateVariable`) and dataFrameVariables (see `AnalysisTemplateDataFrameVariable`). When users apply a template, they provide values for these variables, generating a new Analysis with the template''s pipeline structure populated with actual data. Templates are organized within TemplateCollections and support versioning through the createdFromPipeline reference.' properties: __typename: type: string archivableChildren: oneOf: - format: uri type: string - type: 'null' archivableParent: oneOf: - $ref: '#/components/schemas/TemplateCollectionRef' - type: 'null' archiveDatetime: format: datetime type: - 'null' - string archiveReason: type: - 'null' - string archiveUser: oneOf: - $ref: '#/components/schemas/PrincipalRef' - type: 'null' archived: type: boolean configVariables: format: uri type: string createdAt: format: datetime type: string createdFromPipeline: oneOf: - $ref: '#/components/schemas/AnalysisRef' - type: 'null' creator: $ref: '#/components/schemas/PrincipalRef' dataFrameVariables: format: uri type: string id: type: string modifiedAt: format: datetime type: string name: type: string steps: format: uri type: string templateCollection: $ref: '#/components/schemas/TemplateCollectionRef' webUrl: type: - 'null' - string 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 PipelineRef: properties: __typename: type: string id: format: api_id type: string type: object AnalysisTemplateDataFrameVariable: description: 'Defines a data frame placeholder within an AnalysisTemplate that users must provide when applying the template. Each variable specifies which PipelineStep input (replaceStep, replaceStepData, replaceStepDataIndex) will receive the user-provided data frame. The replaceDataFrameColumnsSpec field defines the expected column structure that the provided data must match. When users apply an analysis template to create an Analysis, they provide bindings that map actual data frames to these variables, populating the template''s pipeline with real 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 createdAt: format: datetime type: string description: type: string id: type: string modifiedAt: format: datetime type: string name: type: string replaceDataFrameColumnsSpec: items: $ref: '#/components/schemas/DataFrameColumn' type: array replaceStep: $ref: '#/components/schemas/PipelineStepRef' replaceStepData: $ref: '#/components/schemas/PipelineStepDataRef' replaceStepDataIndex: type: integer template: $ref: '#/components/schemas/AnalysisTemplateRef' type: object PipelineStepRef: properties: __typename: type: string id: format: api_id type: string type: object PrincipalRef: properties: __typename: type: string id: format: api_id type: string type: object AnalysisTemplateVariableUnpaginatedList: additionalProperties: false properties: items: items: $ref: '#/components/schemas/AnalysisTemplateVariable' type: array type: object AnalysisTemplateVariable: description: 'Defines a configuration parameter within an AnalysisTemplate that users can customize when applying the template. Unlike AnalysisTemplateDataFrameVariable which handles data frame inputs, this type represents scalar configuration values such as thresholds, filter criteria, or algorithm parameters. The configVariableKey identifies which step configuration field this variable controls, and variableTypeConfigSpec defines the allowed value types. When users apply a template, they provide values for these variables that configure the behavior of the corresponding PipelineStep.' 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 configVariableKey: type: string createdAt: format: datetime type: string id: type: string modifiedAt: format: datetime type: string name: type: string pipelineStep: $ref: '#/components/schemas/PipelineStepRef' template: $ref: '#/components/schemas/AnalysisTemplateRef' variableTypeConfigSpec: type: object type: object AnalysisTemplatePaginatedList: additionalProperties: false properties: items: items: $ref: '#/components/schemas/AnalysisTemplate' type: array nextToken: type: string type: object PipelineStepDataRef: properties: __typename: type: string id: format: api_id type: string type: object AnalysisTemplateRef: properties: __typename: type: string id: format: api_id type: string type: object AnalysisRef: properties: __typename: type: string id: format: api_id type: string type: object AnalysisTemplateDataFrameVariableUnpaginatedList: additionalProperties: false properties: items: items: $ref: '#/components/schemas/AnalysisTemplateDataFrameVariable' type: array 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 TemplateCollectionRef: properties: __typename: type: string id: format: api_id type: string type: object parameters: 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 modifiedAt.lte: description: Datetime, in RFC 3339 format. Time zone defaults to UTC. Restricts results to those modified at or before the specified time. e.g. <= 2017-04-30. in: query name: modifiedAt.lte schema: format: datetime type: string id.anyOf: description: Restricts results to those matching any of the specified IDs. Comma-separated list. explode: false in: query name: id.anyOf schema: items: type: string maxItems: 100 type: array modifiedAt.lt: description: Datetime, in RFC 3339 format. Time zone defaults to UTC. Restricts results to those modified before the specified time. e.g. < 2017-04-30. in: query name: modifiedAt.lt schema: format: datetime type: string creator.anyOf: description: Restricts results to those created by any of the specified user IDs. Comma-separated list. explode: false in: query name: creator.anyOf schema: items: type: string maxItems: 100 type: array createdAt.gt: description: Datetime, in RFC 3339 format. Time zone defaults to UTC. Restricts results to those created after the specified time. e.g. > 2017-04-30. in: query name: createdAt.gt schema: format: datetime type: string 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.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 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 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 responses: NotFound: content: application/problem+json: schema: $ref: '#/components/schemas/GeneralError' description: Not Found 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 Forbidden: content: application/problem+json: schema: $ref: '#/components/schemas/GeneralError' description: Forbidden InternalServerError: content: application/problem+json: schema: $ref: '#/components/schemas/InternalServerError' description: Internal Server Error 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