Medplum Fhir API

The Fhir API from Medplum — 4 operation(s) for fhir.

Operations 8

POST /fhir/R4/{resourceType} Create Resource #
GET /fhir/R4/{resourceType}/{id} Read Resource #
PUT /fhir/R4/{resourceType}/{id} Update Resource #
DELETE /fhir/R4/{resourceType}/{id} Delete Resource #
PATCH /fhir/R4/{resourceType}/{id} Patch Resource #
GET /fhir/R4/{resourceType}/{id}/_history Read Resource History #
GET /fhir/R4/{resourceType}/{id}/_history/{versionId} Read Version #

Documentation

Specifications

Schemas & Data

Other Resources

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/medplum-fhir-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 email required.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

medplum-fhir-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Medplum - OpenAPI 3.0 Fhir API
  description: Medplum OpenAPI 3.0 specification.  Learn more about Medplum at [https://www.medplum.com](https://www.medplum.com).
  termsOfService: https://www.medplum.com/terms
  contact:
    email: hello@medplum.com
  license:
    name: Apache 2.0
    url: https://www.apache.org/licenses/LICENSE-2.0.html
  version: 1.0.5
servers:
- url: https://api.medplum.com/
security:
- BasicAuth: []
  BearerAuth: []
  OpenID: []
tags:
- name: Fhir
paths:
  /fhir/R4/{resourceType}:
    get:
      summary: Search
      description: Search
      operationId: search
      parameters:
      - name: resourceType
        in: path
        description: Resource Type
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Success
          content:
            application/fhir+json:
              schema:
                $ref: '#/components/schemas/Bundle'
      tags:
      - Fhir
    post:
      summary: Create Resource
      description: Create Resource
      operationId: createResource
      parameters:
      - name: resourceType
        in: path
        description: Resource Type
        required: true
        schema:
          type: string
      requestBody:
        description: Create Resource
        content:
          application/fhir+json:
            schema:
              $ref: '#/components/schemas/ResourceList'
        required: true
      responses:
        '201':
          description: Success
          content:
            application/fhir+json:
              schema:
                $ref: '#/components/schemas/ResourceList'
      tags:
      - Fhir
  /fhir/R4/{resourceType}/{id}:
    get:
      summary: Read Resource
      description: Read Resource
      operationId: readResource
      parameters:
      - name: resourceType
        in: path
        description: Resource Type
        required: true
        schema:
          type: string
      - name: id
        in: path
        description: Resource ID
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: Success
          content:
            application/fhir+json:
              schema:
                $ref: '#/components/schemas/ResourceList'
      tags:
      - Fhir
    put:
      summary: Update Resource
      description: Update Resource
      operationId: updateResource
      parameters:
      - name: resourceType
        in: path
        description: Resource Type
        required: true
        schema:
          type: string
      - name: id
        in: path
        description: Resource ID
        required: true
        schema:
          type: string
          format: uuid
      requestBody:
        description: Update Resource
        content:
          application/fhir+json:
            schema:
              $ref: '#/components/schemas/ResourceList'
        required: true
      responses:
        '200':
          description: Success
          content:
            application/fhir+json:
              schema:
                $ref: '#/components/schemas/ResourceList'
      tags:
      - Fhir
    delete:
      summary: Delete Resource
      description: Delete Resource
      operationId: deleteResource
      parameters:
      - name: resourceType
        in: path
        description: Resource Type
        required: true
        schema:
          type: string
      - name: id
        in: path
        description: Resource ID
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '204':
          description: Success
      tags:
      - Fhir
    patch:
      summary: Patch Resource
      description: Patch Resource
      operationId: patchResource
      parameters:
      - name: resourceType
        in: path
        description: Resource Type
        required: true
        schema:
          type: string
      - name: id
        in: path
        description: Resource ID
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '204':
          description: Success
      tags:
      - Fhir
  /fhir/R4/{resourceType}/{id}/_history:
    get:
      summary: Read Resource History
      description: Read Resource History
      operationId: readResourceHistory
      parameters:
      - name: resourceType
        in: path
        description: Resource Type
        required: true
        schema:
          type: string
      - name: id
        in: path
        description: Resource ID
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: Success
          content:
            application/fhir+json:
              schema:
                $ref: '#/components/schemas/Bundle'
      tags:
      - Fhir
  /fhir/R4/{resourceType}/{id}/_history/{versionId}:
    get:
      summary: Read Version
      description: Read Version
      operationId: readVersion
      parameters:
      - name: resourceType
        in: path
        description: Resource Type
        required: true
        schema:
          type: string
      - name: id
        in: path
        description: Resource ID
        required: true
        schema:
          type: string
          format: uuid
      - name: versionId
        in: path
        description: Version ID
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: Success
          content:
            application/fhir+json:
              schema:
                $ref: '#/components/schemas/ResourceList'
      tags:
      - Fhir
components:
  schemas:
    MedicinalProductPackaged:
      description: A medicinal product in a container or package.
      properties:
        resourceType:
          description: This is a MedicinalProductPackaged resource
          type: string
        id:
          description: The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes.
          $ref: '#/components/schemas/id'
        meta:
          description: The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content might not always be associated with version changes to the resource.
          $ref: '#/components/schemas/Meta'
        implicitRules:
          description: A reference to a set of rules that were followed when the resource was constructed, and which must be understood when processing the content. Often, this is a reference to an implementation guide that defines the special rules along with other profiles etc.
          $ref: '#/components/schemas/uri'
        language:
          description: The base language in which the resource is written.
          $ref: '#/components/schemas/code'
        text:
          description: A human-readable narrative that contains a summary of the resource and can be used to represent the content of the resource to a human. The narrative need not encode all the structured data, but is required to contain sufficient detail to make it "clinically safe" for a human to just read the narrative. Resource definitions may define what content should be represented in the narrative to ensure clinical safety.
          $ref: '#/components/schemas/Narrative'
        contained:
          description: These resources do not have an independent existence apart from the resource that contains them - they cannot be identified independently, and nor can they have their own independent transaction scope.
          items:
            $ref: '#/components/schemas/ResourceList'
          type: array
        extension:
          description: May be used to represent additional information that is not part of the basic definition of the resource. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension.
          items:
            $ref: '#/components/schemas/Extension'
          type: array
        modifierExtension:
          description: 'May be used to represent additional information that is not part of the basic definition of the resource and that modifies the understanding of the element that contains it and/or the understanding of the containing element''s descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer is allowed to define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.


            Modifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself).'
          items:
            $ref: '#/components/schemas/Extension'
          type: array
        identifier:
          description: Unique identifier.
          items:
            $ref: '#/components/schemas/Identifier'
          type: array
        subject:
          description: The product with this is a pack for.
          items:
            $ref: '#/components/schemas/Reference'
          type: array
        description:
          description: Textual description.
          $ref: '#/components/schemas/string'
        legalStatusOfSupply:
          description: The legal status of supply of the medicinal product as classified by the regulator.
          $ref: '#/components/schemas/CodeableConcept'
        marketingStatus:
          description: Marketing information.
          items:
            $ref: '#/components/schemas/MarketingStatus'
          type: array
        marketingAuthorization:
          description: Manufacturer of this Package Item.
          $ref: '#/components/schemas/Reference'
        manufacturer:
          description: Manufacturer of this Package Item.
          items:
            $ref: '#/components/schemas/Reference'
          type: array
        batchIdentifier:
          description: Batch numbering.
          items:
            $ref: '#/components/schemas/MedicinalProductPackaged_BatchIdentifier'
          type: array
        packageItem:
          description: A packaging item, as a contained for medicine, possibly with other packaging items within.
          items:
            $ref: '#/components/schemas/MedicinalProductPackaged_PackageItem'
          type: array
      additionalProperties: false
      required:
      - packageItem
      - resourceType
    uri:
      pattern: ^\S*$
      type: string
      description: String of characters used to identify a name or a resource
    Subscription_Channel:
      description: The subscription resource is used to define a push-based subscription from a server to another system. Once a subscription is registered with the server, the server checks every resource that is created or updated, and if the resource matches the given criteria, it sends a message on the defined "channel" so that another system can take an appropriate action.
      properties:
        id:
          description: Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces.
          $ref: '#/components/schemas/string'
        extension:
          description: May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension.
          items:
            $ref: '#/components/schemas/Extension'
          type: array
        modifierExtension:
          description: 'May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element''s descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.


            Modifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself).'
          items:
            $ref: '#/components/schemas/Extension'
          type: array
        type:
          description: The type of channel to send notifications on.
          enum:
          - rest-hook
          - websocket
          - email
          - sms
          - message
        endpoint:
          description: The url that describes the actual end-point to send messages to.
          $ref: '#/components/schemas/url'
        payload:
          description: The mime type to send the payload in - either application/fhir+xml, or application/fhir+json. If the payload is not present, then there is no payload in the notification, just a notification. The mime type "text/plain" may also be used for Email and SMS subscriptions.
          $ref: '#/components/schemas/code'
        header:
          description: Additional headers / information to send as part of the notification.
          items:
            $ref: '#/components/schemas/string'
          type: array
      additionalProperties: false
    SupplyDelivery_SuppliedItem:
      description: Record of delivery of what is supplied.
      properties:
        id:
          description: Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces.
          $ref: '#/components/schemas/string'
        extension:
          description: May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension.
          items:
            $ref: '#/components/schemas/Extension'
          type: array
        modifierExtension:
          description: 'May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element''s descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.


            Modifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself).'
          items:
            $ref: '#/components/schemas/Extension'
          type: array
        quantity:
          description: The amount of supply that has been dispensed. Includes unit of measure.
          $ref: '#/components/schemas/Quantity'
        itemCodeableConcept:
          description: Identifies the medication, substance or device being dispensed. This is either a link to a resource representing the details of the item or a code that identifies the item from a known list.
          $ref: '#/components/schemas/CodeableConcept'
        itemReference:
          description: Identifies the medication, substance or device being dispensed. This is either a link to a resource representing the details of the item or a code that identifies the item from a known list.
          $ref: '#/components/schemas/Reference'
      additionalProperties: false
    ElementDefinition_Base:
      description: Captures constraints on each element within the resource, profile, or extension.
      properties:
        id:
          description: Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces.
          $ref: '#/components/schemas/string'
        extension:
          description: May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension.
          items:
            $ref: '#/components/schemas/Extension'
          type: array
        modifierExtension:
          description: 'May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element''s descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.


            Modifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself).'
          items:
            $ref: '#/components/schemas/Extension'
          type: array
        path:
          description: The Path that identifies the base element - this matches the ElementDefinition.path for that element. Across FHIR, there is only one base definition of any element - that is, an element definition on a [[[StructureDefinition]]] without a StructureDefinition.base.
          $ref: '#/components/schemas/string'
        min:
          description: Minimum cardinality of the base element identified by the path.
          $ref: '#/components/schemas/unsignedInt'
        max:
          description: Maximum cardinality of the base element identified by the path.
          $ref: '#/components/schemas/string'
      additionalProperties: false
    MedicinalProductPackaged_BatchIdentifier:
      description: A medicinal product in a container or package.
      properties:
        id:
          description: Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces.
          $ref: '#/components/schemas/string'
        extension:
          description: May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension.
          items:
            $ref: '#/components/schemas/Extension'
          type: array
        modifierExtension:
          description: 'May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element''s descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.


            Modifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself).'
          items:
            $ref: '#/components/schemas/Extension'
          type: array
        outerPackaging:
          description: A number appearing on the outer packaging of a specific batch.
          $ref: '#/components/schemas/Identifier'
        immediatePackaging:
          description: A number appearing on the immediate packaging (and not the outer packaging).
          $ref: '#/components/schemas/Identifier'
      additionalProperties: false
      required:
      - outerPackaging
    ImplementationGuide_Definition:
      description: A set of rules of how a particular interoperability or standards problem is solved - typically through the use of FHIR resources. This resource is used to gather all the parts of an implementation guide into a logical whole and to publish a computable definition of all the parts.
      properties:
        id:
          description: Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces.
          $ref: '#/components/schemas/string'
        extension:
          description: May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension.
          items:
            $ref: '#/components/schemas/Extension'
          type: array
        modifierExtension:
          description: 'May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element''s descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.


            Modifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself).'
          items:
            $ref: '#/components/schemas/Extension'
          type: array
        grouping:
          description: A logical group of resources. Logical groups can be used when building pages.
          items:
            $ref: '#/components/schemas/ImplementationGuide_Grouping'
          type: array
        resource:
          description: A resource that is part of the implementation guide. Conformance resources (value set, structure definition, capability statements etc.) are obvious candidates for inclusion, but any kind of resource can be included as an example resource.
          items:
            $ref: '#/components/schemas/ImplementationGuide_Resource'
          type: array
        page:
          description: A page / section in the implementation guide. The root page is the implementation guide home page.
          $ref: '#/components/schemas/ImplementationGuide_Page'
        parameter:
          description: Defines how IG is built by tools.
          items:
            $ref: '#/components/schemas/ImplementationGuide_Parameter'
          type: array
        template:
          description: A template for building resources.
          items:
            $ref: '#/components/schemas/ImplementationGuide_Template'
          type: array
      additionalProperties: false
      required:
      - resource
    ProjectSetting:
      description: Option or parameter that can be adjusted within the Medplum Project to customize its behavior.
      properties:
        name:
          description: The secret name.
          $ref: '#/components/schemas/string'
        valueString:
          description: The secret value.
          $ref: '#/components/schemas/string'
        valueBoolean:
          description: The secret value.
          $ref: '#/components/schemas/boolean'
        valueDecimal:
          description: The secret value.
          $ref: '#/components/schemas/decimal'
        valueInteger:
          description: The secret value.
          $ref: '#/components/schemas/integer'
      additionalProperties: false
      required:
      - name
    Ratio:
      description: A relationship of two Quantity values - expressed as a numerator and a denominator.
      properties:
        id:
          description: Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces.
          $ref: '#/components/schemas/string'
        extension:
          description: May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension.
          items:
            $ref: '#/components/schemas/Extension'
          type: array
        numerator:
          description: The value of the numerator.
          $ref: '#/components/schemas/Quantity'
        denominator:
          description: The value of the denominator.
          $ref: '#/components/schemas/Quantity'
      additionalProperties: false
    Substance_Instance:
      description: A homogeneous material with a definite composition.
      properties:
        id:
          description: Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces.
          $ref: '#/components/schemas/string'
        extension:
          description: May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension.
          items:
            $ref: '#/components/schemas/Extension'
          type: array
        modifierExtension:
          description: 'May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element''s descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.


            Modifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself).'
          items:
            $ref: '#/components/schemas/Extension'
          type: array
        identifier:
          description: Identifier associated with the package/container (usually a label affixed directly).
          $ref: '#/components/schemas/Identifier'
        expiry:
          description: When the substance is no longer valid to use. For some substances, a single arbitrary date is used for expiry.
          $ref: '#/components/schemas/dateTime'
        quantity:
          description: The amount of the substance.
          $ref: '#/components/schemas/Quantity'
      additionalProperties: false
    Coverage_Class:
      description: Financial instrument which may be used to reimburse or pay for health care products and services. Includes both insurance and self-payment.
      properties:
        id:
          description: Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces.
          $ref: '#/components/schemas/string'
        extension:
          description: May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension.
          items:
            $ref: '#/components/schemas/Extension'
          type: array
        modifierExtension:
          description: 'May be used to represent additional information that is not part of the basic definition of the element and that modifies the understanding of the element in which it is contained and/or the understanding of the containing element''s descendants. Usually modifier elements provide negation or qualification. To make the use of extensions safe and manageable, there is a strict set of governance applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension. Applications processing a resource are required to check for modifier extensions.


            Modifier extensions SHALL NOT change the meaning of any elements on Resource or DomainResource (including cannot change the meaning of modifierExtension itself).'
          items:
            $ref: '#/components/schemas/Extension'
          type: array
        type:
          description: The type of classification for which an insurer-specific class label or number and optional name is provided, for example may be used to identify a class of coverage or employer group, Policy, Plan.
          $ref: '#/components/schemas/CodeableConcept'
        value:
          description: The alphanumeric string value associated with the insurer issued label.
          $ref: '#/components/schemas/string'
        name:
          description: A short description for the class.
          $ref: '#/components/schemas/string'
      additionalProperties: false
      required:
      - type
    ValueSet_Include:
      description: A ValueSet resource instance specifies a set of codes drawn from one or more code systems, intended for use in a particular context. Value sets link between [[[CodeSystem]]] definitions and their use in [coded elements](terminologies.html).
      properties:
        id:
          description: Unique id for the element within a resource (for internal references). This may be any string value that does not contain spaces.
          $ref: '#/components/schemas/string'
        extension:
          description: May be used to represent additional information that is not part of the basic definition of the element. To make the use of extensions safe and manageable, there is a strict set of governance  applied to the definition and use of extensions. Though any implementer can define an extension, there is a set of requirements that SHALL be met as part of the definition of the extension.
          items:
            $ref: '#/components/schemas/Extension'
          type: array
        modifierExtension:
          description: 'May be used to represent additional information that is not part of the basic definition of the elemen

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