Every API here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for apis
7 MCP tools reach this
find_apisBrowse and filter every API in the catalog.
get_api_artifactsOne API's artifacts, grouped by type.
get_openapiThe primary OpenAPI for this API.
find_similar_apisAPIs that look like this one.
apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
resolveTurn a domain, URL or GitHub org into the provider it belongs to.
find_cohortsEvery scored population of providers in the catalog.
All 92 tools →
Call it yourself
curl for this page
This API
curl "https://apis.io/api/v1/apis/benchling-aa-sequences-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we
store it to create your key and to recognise you if you sign in with another
provider. See our Privacy Policy and
Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
license:
name: Apache 2.0
url: http://www.apache.org/licenses/LICENSE-2.0.html
title: Benchling AA Sequences 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: '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.
'
name: AA Sequences
paths:
/aa-sequences:
get:
description: List AA sequences
operationId: listAASequences
parameters:
- description: 'Number of results to return. Defaults to 50, maximum of 100.
'
in: query
name: pageSize
schema:
default: 50
maximum: 100
minimum: 0
type: integer
- description: Token for pagination
in: query
name: nextToken
schema:
type: string
- in: query
name: sort
schema:
default: modifiedAt:desc
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.
'
enum:
- createdAt
- createdAt:asc
- createdAt:desc
- modifiedAt
- modifiedAt:asc
- modifiedAt:desc
- name
- name:asc
- name:desc
type: string
- description: 'Datetime, in RFC 3339 format. Supports the > and < operators. Time zone defaults to UTC. Restricts results to those created 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 created within a certain range using the AND operator.
value: '> 2022-03-01 AND < 2022-04-01'
full-rfc-3339-format:
summary: Filter for created models using the full RFC 3339 format
value: '> 2020-12-31T21:07:14-05:00'
greater-than-example:
summary: Filter for all models created after a certain date
value: '> 2022-03-01'
in: query
name: createdAt
schema:
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 AA Sequence. Restricts results to those with the specified name, alias, or entity registry ID.
in: query
name: name
schema:
type: string
- description: Name substring of an AA sequence. Restricts results to those with names, aliases, or entity registry IDs that include the provided substring.
in: query
name: nameIncludes
schema:
type: string
- description: String of amino acids. Restricts results to AA sequences exactly matching these amino acids (case-insensitive).
in: query
name: aminoAcids
schema:
type: string
- description: ID of a folder. Restricts results to those in the folder.
in: query
name: folderId
schema:
type: string
- description: 'Comma-separated list of entry IDs. Restricts results to AA sequences mentioned in those entries.
'
in: query
name: mentionedIn
schema:
type: string
- description: ID of a project. Restricts results to those in the project.
in: query
name: projectId
schema:
type: string
- description: 'ID of a registry. Restricts results to those registered in this registry. Specifying "null" returns unregistered items.
'
in: query
name: registryId
schema:
type:
- string
- 'null'
- description: 'ID of a schema. Restricts results to those of the specified schema.
'
in: query
name: schemaId
schema:
type: string
- description: 'Filter based on schema field value (not display value). Restricts results to those with a field whose value matches the filter. For Integer, Float, and Date type fields, supports the >= and <= operators (but not < or >). If any schemaField filters are present, the schemaId param must also be present. Note that all operators must be separated from any values by a single space.
'
in: query
name: schemaFields
schema:
$ref: '#/components/schemas/SchemaFieldsQueryParam'
- description: 'Archive reason. Restricts items to those with the specified archive reason. Use "NOT_ARCHIVED" to filter for unarchived AA sequences. Use "ANY_ARCHIVED" to filter for archived AA sequences regardless of reason. Use "ANY_ARCHIVED_OR_NOT_ARCHIVED" to return items for both archived and unarchived.
'
examples:
1_not_archived:
summary: Only include unarchived items (default).
value: NOT_ARCHIVED
2_archived_reason:
summary: Includes items archived for a specific reason.
value: Retired
3_any_archived:
summary: Includes items archived for any reason.
value: ANY_ARCHIVED
4_any_archived_or_not_archived:
summary: Includes both archived and unarchived items.
value: ANY_ARCHIVED_OR_NOT_ARCHIVED
in: query
name: archiveReason
schema:
type: string
- description: 'Comma-separated list of item IDs. Restricts results to those that mention the given items in the description.
'
in: query
name: mentions
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: prtn_6gxJGfPh,prtn_u7fOvqWg
type: string
- description: 'Comma-separated list of entity registry IDs. Maximum of 100. Restricts results to those that match any of the specified registry IDs.
'
in: query
name: entityRegistryIds.anyOf
schema:
example: TP001,TP002
type: string
- description: 'Comma-separated list of names. Maximum of 100. Restricts results to those that match any of the specified names, aliases, or entity registry IDs, 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 names. Maximum of 100. Restricts results to those that match any of the specified names, aliases, or entity registry IDs, 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 user or app IDs. Maximum of 100.
in: query
name: authorIds.anyOf
schema:
example: ent_a0SApq3z,ent_b4AApz9b
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).
**Note**: Fields annotations, translations, and primers cannot be introspected with the returning parameter, and any sub fields will be ignored. E.g.: "aaSequences.annotations.id" will return the same as "aaSequences.annotations".
'
in: query
name: returning
schema:
example: aaSequences.id,aaSequences.modifiedAt
type: string
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/AaSequencesPaginatedList'
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
'400':
content:
application/json:
schema:
$ref: '#/components/schemas/BadRequestError'
description: Bad Request
summary: List AA sequences
tags:
- AA Sequences
post:
description: Create an AA sequence
operationId: createAASequence
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/AaSequenceCreate'
responses:
'201':
content:
application/json:
schema:
$ref: '#/components/schemas/AaSequence'
description: Created
'400':
content:
application/json:
schema:
$ref: '#/components/schemas/BadRequestError'
description: Bad Request
'503':
description: Deprecated, a 429 is returned for too many requests
summary: Create an AA sequence
tags:
- AA Sequences
/aa-sequences/{aa_sequence_id}:
get:
description: Get an AA sequence
operationId: getAASequence
parameters:
- in: path
name: aa_sequence_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).
**Note**: Fields annotations, translations, and primers cannot be introspected with the returning parameter, and any sub fields will be ignored. E.g.: "annotations.id" will return the same as "annotations".
'
in: query
name: returning
schema:
example: id,modifiedAt
type: string
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/AaSequence'
description: OK
'400':
content:
application/json:
schema:
$ref: '#/components/schemas/BadRequestError'
description: Bad Request
summary: Get an AA sequence
tags:
- AA Sequences
patch:
description: Update an AA sequence
operationId: updateAASequence
parameters:
- in: path
name: aa_sequence_id
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/AaSequenceUpdate'
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/AaSequence'
description: OK
'400':
content:
application/json:
schema:
$ref: '#/components/schemas/BadRequestError'
description: Bad Request
summary: Update an AA sequence
tags:
- AA Sequences
/aa-sequences/{entity_registry_id}:upsert:
patch:
description: 'Create or update a registered AA sequence.
Schema field links can be populated using entity registry IDs or API IDs. In the `value` field of the [Field](#/components/schemas/FieldWithResolution) resource, the object `{"entityRegistryId": ENTITY_REGISTRY_ID}` may be provided instead of the API ID if desired (see example value).
'
operationId: upsertAaSequence
parameters:
- in: path
name: entity_registry_id
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/AaSequenceUpsert'
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/AaSequence'
description: OK
'201':
content:
application/json:
schema:
$ref: '#/components/schemas/AaSequence'
description: OK
'400':
content:
application/json:
schema:
$ref: '#/components/schemas/BadRequestError'
description: Bad Request
summary: Create or update a registered AA sequence.
tags:
- AA Sequences
/aa-sequences:archive:
post:
description: Archive AA sequences
operationId: archiveAASequences
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/AaSequencesArchive'
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/AaSequencesArchivalChange'
description: OK
'400':
content:
application/json:
schema:
$ref: '#/components/schemas/BadRequestError'
description: Bad Request
summary: Archive AA sequences
tags:
- AA Sequences
/aa-sequences:auto-annotate:
post:
description: Auto-annotate AA sequences with matching features from specified Feature Libraries
operationId: autoAnnotateAaSequences
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/AutoAnnotateAaSequences'
responses:
'202':
content:
application/json:
schema:
$ref: '#/components/schemas/AsyncTaskLink'
description: 'This endpoint launches a [long-running task](#/Tasks/getTask) and returns the Task ID of the launched task.
When successful, the task has an empty response.
'
'400':
content:
application/json:
schema:
$ref: '#/components/schemas/BadRequestError'
description: Bad Request
summary: Auto-annotate AA sequences with matching features from specified Feature Libraries
tags:
- AA Sequences
/aa-sequences:back-translate:
post:
description: Create back-translated DNA sequences from AA sequences.
operationId: backTranslate
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/BackTranslate'
responses:
'202':
content:
application/json:
schema:
$ref: '#/components/schemas/AsyncTaskLink'
description: 'This endpoint launches a [long-running task](#/Tasks/getTask) and returns the Task ID of the launched task.
When successful, the task returns the resources of the DNA Sequence entities that were back-translated.
'
'400':
content:
application/json:
schema:
$ref: '#/components/schemas/BadRequestError'
description: Bad Request
summary: Create back-translated DNA sequences from AA sequences.
tags:
- AA Sequences
/aa-sequences:bulk-create:
post:
description: Bulk Create AA sequences. Limit of 1000 AA Sequences per request.
operationId: bulkCreateAASequences
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/AaSequencesBulkCreateRequest'
responses:
'202':
content:
application/json:
schema:
$ref: '#/components/schemas/AsyncTaskLink'
description: 'This endpoint launches a [long-running task](#/Tasks/getTask) and returns the Task ID of the launched task.
The task response contains the full list of AA Sequences that were created.
'
'400':
content:
application/json:
schema:
$ref: '#/components/schemas/BadRequestError'
description: Bad Request
summary: Bulk Create AA sequences
tags:
- AA Sequences
/aa-sequences:bulk-get:
get:
description: Bulk get AA sequences by ID
operationId: bulkGetAASequences
parameters:
- description: 'Comma-separated list of IDs of AA sequences to get.
'
in: query
name: aaSequenceIds
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).
**Note**: Fields annotations, translations, and primers cannot be introspected with the returning parameter, and any sub fields will be ignored. E.g.: "aaSequences.annotations.id" will return the same as "aaSequences.annotations".
'
in: query
name: returning
schema:
example: aaSequences.id, aaSequences.modifiedAt
type: string
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/AaSequencesBulkGet'
description: OK
'400':
content:
application/json:
schema:
$ref: '#/components/schemas/BadRequestError'
description: Bad Request
summary: Bulk get AA sequences by ID
tags:
- AA Sequences
/aa-sequences:bulk-update:
post:
description: Bulk Update AA sequences
operationId: bulkUpdateAASequences
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/AaSequencesBulkUpdateRequest'
responses:
'202':
content:
application/json:
schema:
$ref: '#/components/schemas/AsyncTaskLink'
description: 'This endpoint launches a [long-running task](#/Tasks/getTask) and returns the Task ID of the launched task.
When successful, the task returns a full list of [AA Sequence](#/AA%20Sequences/bulkGetAASequences) resources
that were updated.
'
'400':
content:
application/json:
schema:
$ref: '#/components/schemas/BadRequestError'
description: Bad Request
summary: Bulk Update AA sequences
tags:
- AA Sequences
/aa-sequences:bulk-upsert:
post:
description: 'All entities and their schemas must be within the same registry.
This operation performs the following actions:
1. Any existing objects are looked up in Benchling by the provided entity registry ID.
2. Then, all objects are either created or updated accordingly, temporarily skipping any schema field links between objects.
3. Schema field links can be populated using entity registry IDs or API IDs. In the `value` field of the [Field](#/components/schemas/FieldWithResolution) resource, the object `{"entityRegistryId": ENTITY_REGISTRY_ID}` may be provided instead of the API ID if desired (see example value). You may link to objects being created in the same operation.
4. Entities are registered, using the provided name and entity registry ID.
If any action fails, the whole operation is canceled and no objects are created or updated.
'
operationId: bulkUpsertAASequences
parameters:
- 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: aaSequences.id,aaSequences.creator.handle
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/AaSequencesBulkUpsertRequest'
responses:
'202':
content:
application/json:
schema:
$ref: '#/components/schemas/AsyncTaskLink'
description: 'This endpoint launches a [long-running task](#/Tasks/getTask) and returns the Task ID of the launched task.
When successful, the task returns the resources of the objects that were upserted.
'
'400':
content:
application/json:
schema:
$ref: '#/components/schemas/BadRequestError'
description: Bad Request
summary: Bulk upsert AA sequences
tags:
- AA Sequences
/aa-sequences:find-matching-regions:
post:
description: Find matching regions for AA sequences
operationId: findMatchingRegionsAaSequences
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/AaSequencesFindMatchingRegion'
responses:
'202':
content:
application/json:
schema:
$ref: '#/components/schemas/AsyncTaskLink'
description: 'This endpoint launches a [long-running task](#/Tasks/getTask) and returns the Task ID of the launched task.
It is used to search for AA sequences that are either subsequences or exact matches of the provided target sequences.
Each returned item represents the group of sequences that partially or fully match the target sequence."
'
'400':
content:
application/json:
schema:
$ref: '#/components/schemas/BadRequestError'
description: Bad Request
summary: Find matching regions for AA sequences
tags:
- AA Sequences
/aa-sequences:match-amino-acids:
post:
description: 'Returns AA Sequences that exactly match the provided amino acids.
'
operationId: matchAminoAcidsAaSequences
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/AaSequencesMatchBases'
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/AaSequencesPaginatedList'
description: A filtered list of AA Sequences
'400':
content:
application/json:
schema:
$ref: '#/components/schemas/BadRequestError'
description: Bad Request
summary: List entities with matching amino acids
tags:
- AA Sequences
/aa-sequences:search-amino-acids:
post:
description: 'Returns AA Sequences that contain the provided amino acids. Search indexing is asynchronous, so results my be not be available immediately after creation.
'
operationId: searchAaSequences
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/AaSequencesSearchBases'
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/AaSequencesPaginatedList'
description: A filtered list of AA Sequences
'400':
content:
application/json:
schema:
$ref: '#/components/schemas/BadRequestError'
description: Bad Request
summary: Search AA Sequences
tags:
- AA Sequences
/aa-sequences:unarchive:
post:
description: Unarchive AA sequences
operationId: unarchiveAASequences
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/AaSequencesUnarchive'
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/AaSequencesArchivalChange'
description: OK
'400':
content:
application/json:
schema:
$ref: '#/components/schemas/BadRequestError'
description: Bad Request
summary: Unarchive AA sequences
tags:
- AA Sequences
components:
schemas:
AaAnnotation:
properties:
color:
type: string
end:
description: 0-based exclusive end index. The end of the AA sequence is always represented as 0.
type: integer
id:
example: prtnann_o7zMPG0P
type: string
name:
maxLength: 255
type: string
notes:
example: Cong et al Science. 2013 Jan 3.
maxLength: 10000
type: string
start:
description: 0-based inclusive start index.
type: integer
type:
example: Site
maxLength: 255
type: string
type: object
AaSequencesPaginatedList:
properties:
aaSequences:
items:
$ref: '#/components/schemas/AaSequence'
type: array
nextToken:
type: string
type: object
FieldType:
enum:
- dna_sequence_link
- aa_sequence_link
- custom_entity_link
- entity_link
- mixture_link
- molecule_link
- dropdown
- part_link
- translation_link
- aa_part_link
- base_molecule_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
type: string
Fields:
additionalProperties:
$ref: '#/components/schemas/Field'
type: object
AaSequenceBulkUpdate:
additionalProperties: false
allOf:
- properties:
id:
type: string
type: object
- $ref: '#/components/schemas/AaSequenceBaseRequest'
AaSequencesBulkGet:
properties:
aaSequences:
items:
$ref: '#/components/schemas/AaSequence'
type: array
type: object
BadRequestError:
properties:
error:
allOf:
- $ref: '#/components/schemas/BaseError'
- properties:
type:
enum:
- invalid_request_error
type: string
type: object
AaSequence:
properties:
aliases:
description: Array of aliases
items:
type: string
type: array
aminoAcids:
description: Amino acids of the AA sequence.
example: IKTATARRELAETSWTGDRLWGFSDNWAPALRRPSPSALGK
type: string
annotations:
description: Array of annotation objects on the AA sequence.
items:
$ref: '#/components/schemas/AaAnnotation'
type: array
apiURL:
description: The canonical url of the AA Sequence in the API.
example: https://benchling.com/api/v2/aa-sequences/prtn_7nMBOMm0
format: uri
readOnly: true
type: string
archiveRecord:
allOf:
- $ref: '#/components/schemas/ArchiveRecord'
authors:
items:
$ref: '#/components/schemas/UserSummary'
type: array
createdAt:
description: DateTime the AA sequence was created.
format: date-time
readOnly: true
type: string
creator:
$ref: '#/components/schemas/UserSummary'
customFields:
allOf:
- $ref: '#/components/schemas/CustomFields'
description: Custom fields set on the AA sequence.
entityRegistryId:
description: Registry ID of the AA sequence if registered.
type:
- string
- 'null'
fields:
$ref: '#/components/schemas/Fields'
folderId:
description: ID of the folder that contains the AA sequence.
type:
- string
- 'null'
id:
description: ID of the AA sequence.
example: prtn_ObbdtGhC
type: string
length:
description: Number of amino acids in the AA sequence.
type: integer
modifiedAt:
description: DateTime the AA sequence was last modified.
format: date-time
readOnly: true
type: string
name:
description: Name of the AA sequence.
type: string
registrationOrigin:
allOf:
- $ref: '#/components/schemas/RegistrationOrigin'
readOnly: true
registryId:
description: Registry the AA sequence is registered in.
type:
- string
- 'null'
schema:
allOf:
- $ref: '#/components/schemas/SchemaSummary'
url:
description: The path of the web URL, omitting the tenant domain
type: string
webURL:
description: URL of the AA sequence.
example: https://benchling.com/benchling/f/lib_55UxcIps-registry/prtn_7nMBOMm0-kedchain11/edit"
format: uri
readOnly: true
type: string
type: object
BackTranslate:
additionalProperties: false
properties:
aaSequenceIds:
description: IDs of AA sequences to back-translate.
items:
type: string
type: array
avoidedCutsiteEnzymeIds:
description: 'List of enzyme IDs whose recognition sites will be avoided when creating the back-translated sequence.
'
items:
type: string
type: array
codonUsageTableId:
description: ID of the codon usage table representing the target organism.
type: string
folderId:
description: 'ID of the folder in which the back-translated sequences will be saved.
'
type: string
gcContent:
default: ANY
description: 'The amount of GC conten
# --- truncated at 32 KB (50 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/benchling/refs/heads/main/openapi/benchling-aa-sequences-api-openapi.yml