UpGuard vendors API

The vendors API from UpGuard — 32 operation(s) for vendors.

OpenAPI Specification

upguard-vendors-api-openapi.yml Raw ↑
swagger: '2.0'
info:
  description: 'Access information from the CyberRisk platform programmatically using this API.


    You can find or generate an API key to access this API in your CyberRisk Account Settings.

    Please authorize all requests by setting the "Authorization" header to your api key.


    The base url for all public endpoints is https://cyber-risk.upguard.com/api/public'
  title: UpGuard CyberRisk breaches vendors API
  version: 1.13.2
host: cyber-risk.upguard.com
basePath: /api/public
schemes:
- https
consumes:
- application/json
produces:
- application/json
security:
- API key in header: []
tags:
- name: vendors
paths:
  /fourth_party/list:
    get:
      description: 'Returns a paginated list of fourth party (supply chain / concentration risk) vendors and their products

        for the watched vendors in your organisation.


        Required API key permissions: `VendorRisk` (select when creating API key in Account Settings)'
      tags:
      - vendors
      summary: List fourth party vendors
      operationId: fourth_parties_params
      parameters:
      - type: integer
        format: int64
        description: 'The number of results to return per page.

          Valid values range from 10 to 2000.

          Defaults to 500 if unset.'
        name: page_size
        in: query
      - type: string
        description: 'The token of the page to be returned.

          Will return the first page if left blank.'
        name: page_token
        in: query
      - type: array
        items:
          type: string
        description: Filter by label names. Only vendors with all of the provided labels will be returned. If a label does not exist, 422 will be returned.
        name: labels
        in: query
      - type: array
        items:
          type: integer
          format: int64
        description: Filter by vendor tier. Only vendors in the specified tiers will be returned.
        name: tier
        in: query
      - type: integer
        format: int64
        description: 'Filter by watched vendor score. Only fourth party vendors used by watched vendors with a

          score greater than or equal to this value will be returned.

          Valid range: 0-950.'
        name: min_score
        in: query
      - type: integer
        format: int64
        description: 'Filter by watched vendor score. Only fourth party vendors used by watched vendors with a

          score less than or equal to this value will be returned.

          Valid range: 0-950.'
        name: max_score
        in: query
      - type: array
        items:
          type: string
        description: Filter by portfolio names. Only vendors in these portfolios will be returned. If a portfolio does not exist, 422 will be returned.
        name: portfolios
        in: query
      responses:
        '200':
          description: ''
          schema:
            $ref: '#/definitions/GetFourthPartiesV1RespBody'
        '403':
          description: Your API key does not have permission to perform this action.
          schema:
            $ref: '#/definitions/endpointError'
        '422':
          description: An invalid parameter was supplied or a mandatory parameter was missing
          schema:
            $ref: '#/definitions/endpointError'
        '429':
          description: Too many requests have been made to this endpoint.
          schema:
            $ref: '#/definitions/endpointError'
        '500':
          description: An internal system error occurred
          schema:
            $ref: '#/definitions/endpointError'
  /onboarding_request:
    get:
      description: 'Returns detailed information about a specific vendor onboarding request, including vendor data and assessment links.


        Required API key permissions: `VendorRisk` (select when creating API key in Account Settings)'
      tags:
      - vendors
      summary: Get onboarding request details
      operationId: onboardingRequestGet
      parameters:
      - type: integer
        format: int64
        example: 12345
        description: The ID of the onboarding request (survey ID)
        name: id
        in: query
        required: true
      responses:
        '200':
          description: Onboarding request details response
          schema:
            $ref: '#/definitions/OnboardingRequestDetail'
        '403':
          description: Account does not have access to requested entities
          schema:
            $ref: '#/definitions/endpointError'
        '404':
          description: The vendor was not found.
          schema:
            $ref: '#/definitions/endpointError'
        '422':
          description: An invalid parameter was supplied or a mandatory parameter was missing
          schema:
            $ref: '#/definitions/endpointError'
        '429':
          description: Too many requests have been made to this endpoint.
          schema:
            $ref: '#/definitions/endpointError'
        '500':
          description: An internal system error occurred
          schema:
            $ref: '#/definitions/endpointError'
  /onboarding_request/list:
    get:
      description: 'Returns a paginated list of vendor onboarding requests for the organization.


        Note: The id of the onboarding request is also the survey_id of the corresponding onboarding request questionnaire.

        You can download the question and answers of the onboarding request questionnaire using Get questionnaire questions and answers


        Required API key permissions: `VendorRisk` (select when creating API key in Account Settings)'
      tags:
      - vendors
      summary: List onboarding requests
      operationId: onboardingRequestsList
      parameters:
      - type: integer
        format: int64
        example: 100
        description: Number of results per page (1-2000)
        name: page_size
        in: query
      - type: string
        description: Token for the next page of results
        name: page_token
        in: query
      - enum:
        - vendor_name
        - status
        - created_at
        - completed_at
        - progress
        - submitted_by
        type: string
        example: created_at
        description: 'Field to sort by


          Sort order for status is: Complete, Sent, In Progress, In Review, Assessment Underway, Awaiting Review


          Sort by submitted_by sorts by the name of the submitter'
        name: sort_by
        in: query
      - type: boolean
        example: true
        description: Sort in descending order, sorts in ascending order if unset
        name: sort_desc
        in: query
      - type: string
        example: Assessment Underway,Complete
        description: 'Comma-separated list of statuses to filter by


          Valid values: Complete,Sent,In Progress,In Review,Assessment Underway,Awaiting Review'
        name: status
        in: query
      - type: boolean
        example: false
        description: Filter by archived status
        name: archived
        in: query
      - type: string
        example: acme
        description: Text to search for in vendor name or submitter name
        name: filter_text
        in: query
      responses:
        '200':
          description: List of onboarding requests
          schema:
            $ref: '#/definitions/OnboardingRequestsListRespBody'
        '403':
          description: Account does not have access to requested entities
          schema:
            $ref: '#/definitions/endpointError'
        '422':
          description: An invalid parameter was supplied or a mandatory parameter was missing
          schema:
            $ref: '#/definitions/endpointError'
        '429':
          description: Too many requests have been made to this endpoint.
          schema:
            $ref: '#/definitions/endpointError'
        '500':
          description: An internal system error occurred
          schema:
            $ref: '#/definitions/endpointError'
  /vendor:
    get:
      description: 'The following assertions are evaluated (in order) to determine whether you are licensed to view the vendor data (as soon as one assertion returns "true", the vendor data will be returned):

        1. You are currently monitoring the vendor in CyberRisk

        2. You have set "start_monitoring" to "true" AND are not currently monitoring all the vendors you are licensed for in CyberRisk

        3. You have set "generate_ad_hoc_report" to "true" and have not currently used your monthly allocation of ad-hoc reports in CyberRisk.


        Required API key permissions: `VendorRisk` (select when creating API key in Account Settings)'
      tags:
      - vendors
      summary: Get vendor details
      operationId: vendor
      parameters:
      - type: integer
        format: int64
        example: 123456789
        description: The ID of the vendor for which to return vendor data. e.g. 123456789
        name: id
        in: query
      - type: string
        example: upguard.com
        description: 'The hostname for which to return vendor data. e.g. "upguard.com".

          Required when id is not specified. When id is specified this field will be ignored.'
        name: hostname
        in: query
      - type: boolean
        description: 'When set to true, if you haven''t already used your monthly allocation of ad-hoc reports,

          generate an ad-hoc report for the given vendor, and return the vendor data.'
        name: generate_ad_hoc_report
        in: query
      - type: boolean
        description: 'NOTE: deprecated (use vendor/monitor instead).

          When set to true, if the vendor is not already being monitored,

          and if you are not already monitoring all the vendors your are licensed for,

          start monitoring the vendor, and return the vendor data.'
        name: start_monitoring
        in: query
      - type: array
        items:
          type: string
        description: 'NOTE: deprecated (use vendor/monitor instead).

          The labels to assign to the vendor if start monitoring set to true.

          If you want to update the labels for an already monitored vendor use the /vendor/labels endpoint.'
        name: labels
        in: query
      - type: integer
        format: int64
        description: 'NOTE: deprecated (use vendor/monitor instead).

          The tier to assign to the vendor if start monitoring is set to true.'
        name: tier
        in: query
      - type: boolean
        default: false
        description: Flag indicating whether the request should wait for scan results on new unknown vendors
        name: wait_for_scan
        in: query
      responses:
        '200':
          description: Vendor details
          schema:
            $ref: '#/definitions/vendor'
        '202':
          description: The vendor does not currently exist in the system and has been scheduled for addition
        '402':
          description: You are not allowed to access the vendor for licensing reasons.
          schema:
            $ref: '#/definitions/endpointError'
        '404':
          description: The vendor was not found.
          schema:
            $ref: '#/definitions/endpointError'
        '422':
          description: An invalid parameter was supplied or a mandatory parameter was missing
          schema:
            $ref: '#/definitions/endpointError'
        '429':
          description: Too many requests have been made to this endpoint.
          schema:
            $ref: '#/definitions/endpointError'
        '500':
          description: An internal system error occurred
          schema:
            $ref: '#/definitions/endpointError'
  /vendor/additionalevidence:
    get:
      description: 'Returns the body of one or more additional evidence documents that have been attached to a specific vendor.

        If multiple additional evidence documents are requested, then by default the files are returned as a multi-part mime response.

        Alternately, the zip option can be used to return multiple files as a single zip archive'
      produces:
      - image/jpeg
      - image/png
      - application/octet-stream
      - 'Required API key permissions: `VendorRisk` (select when creating API key in Account Settings)'
      tags:
      - vendors
      summary: Retrieve (one or more) vendor additional evidence documents by id
      operationId: additional_evidence
      parameters:
      - type: array
        items:
          type: integer
          format: int64
        description: a comma-separated list of one or more additional evidence instances (by unique id)
        name: evidence_ids
        in: query
      - type: boolean
        description: indicates that for multiple additional evidence requests, the files should be returned as a multi-file zip
        name: zip
        in: query
      responses:
        '200':
          description: Vendors additional evidence
          schema:
            $ref: '#/definitions/GetVendorAdditionalEvidenceResponsePayload'
        '300':
          description: Request requires multipart receipt ability
          schema:
            $ref: '#/definitions/endpoint300Error'
        '403':
          description: Account does not have access to requested entities
          schema:
            $ref: '#/definitions/endpointError'
        '422':
          description: An invalid parameter was supplied or a mandatory parameter was missing
          schema:
            $ref: '#/definitions/endpointError'
        '429':
          description: Too many requests have been made to this endpoint.
          schema:
            $ref: '#/definitions/endpointError'
        '500':
          description: An internal system error occurred
          schema:
            $ref: '#/definitions/endpointError'
  /vendor/additionalevidence/list:
    get:
      description: 'Returns a list of additional evidence instances that have been uploaded against this vendor in chronological order of when they were uploaded.


        Required API key permissions: `VendorRisk` (select when creating API key in Account Settings)'
      tags:
      - vendors
      summary: List vendor additional evidence instances
      operationId: additional_evidences_list
      parameters:
      - type: string
        description: The primary hostname of the vendor to show additional evidence for.
        name: vendor_primary_hostname
        in: query
      - type: string
        description: 'The token of the page to be returned.

          Will return the first page if left blank.'
        name: page_token
        in: query
      - type: integer
        format: int64
        description: 'The number of results to return per page.

          Valid values range from 10 to 2000.

          Defaults to 1000 if unset.'
        name: page_size
        in: query
      responses:
        '200':
          description: Vendor additional evidences list
          schema:
            $ref: '#/definitions/GetVendorAdditionalEvidencesResponsePayload'
        '422':
          description: An invalid parameter was supplied or a mandatory parameter was missing
          schema:
            $ref: '#/definitions/endpointError'
        '429':
          description: Too many requests have been made to this endpoint.
          schema:
            $ref: '#/definitions/endpointError'
        '500':
          description: An internal system error occurred
          schema:
            $ref: '#/definitions/endpointError'
  /vendor/attributes:
    put:
      description: 'Assign or update the attributes for a vendor. To remove an attribute use null as its value in the payload.


        Required API key permissions: `VendorRisk` (select when creating API key in Account Settings)'
      tags:
      - vendors
      summary: Assign or update the attributes for a vendor
      operationId: vendor_update_attributes
      parameters:
      - name: UpdateVendorAttributesV1RequestBody
        in: body
        schema:
          $ref: '#/definitions/UpdateVendorAttributesV1RequestBody'
      responses:
        '204':
          description: ' Successful response is empty'
        '403':
          description: Your API key does not have permission to perform this action.
          schema:
            $ref: '#/definitions/endpointError'
        '422':
          description: An invalid parameter was supplied or a mandatory parameter was missing
          schema:
            $ref: '#/definitions/endpointError'
        '429':
          description: Too many requests have been made to this endpoint.
          schema:
            $ref: '#/definitions/endpointError'
        '500':
          description: An internal system error occurred
          schema:
            $ref: '#/definitions/endpointError'
  /vendor/contact:
    get:
      description: 'Returns the vendor contact details for the given contact ID.


        Required API key permissions: `VendorRisk` (select when creating API key in Account Settings)'
      tags:
      - vendors
      summary: Get a vendor contact by ID
      operationId: vendor_contact_get
      parameters:
      - type: integer
        format: int64
        description: The id of the vendor contact to retrieve.
        name: id
        in: query
        required: true
      responses:
        '200':
          description: Returns the vendor contact details.
          schema:
            $ref: '#/definitions/VendorContact'
        '403':
          description: Your API key does not have permission to perform this action, or the contact does not exist.
          schema:
            $ref: '#/definitions/endpointError'
        '422':
          description: An invalid parameter was supplied or a mandatory parameter was missing
          schema:
            $ref: '#/definitions/endpointError'
        '429':
          description: Too many requests have been made to this endpoint.
          schema:
            $ref: '#/definitions/endpointError'
        '500':
          description: An internal system error occurred
          schema:
            $ref: '#/definitions/endpointError'
  /vendor/contact/list:
    get:
      description: 'Returns a list of vendor contacts for a given vendor.


        Required API key permissions: `VendorRisk` (select when creating API key in Account Settings)'
      tags:
      - vendors
      summary: List vendor contacts
      operationId: vendor_contact_list
      parameters:
      - type: integer
        format: int64
        description: The id of the vendor to retrieve contacts for.
        name: vendor_id
        in: query
      - type: string
        description: The primary hostname of the vendor to retrieve contacts for.
        name: vendor_primary_hostname
        in: query
      - type: string
        description: The `page_token` from a previous request, use this to get the next page of results.
        name: page_token
        in: query
      responses:
        '200':
          description: Returns a list of contacts for a vendor.
          schema:
            $ref: '#/definitions/VendorContactList'
        '403':
          description: Your API key does not have permission to perform this action, or the contact does not exist.
          schema:
            $ref: '#/definitions/endpointError'
        '422':
          description: An invalid parameter was supplied or a mandatory parameter was missing
          schema:
            $ref: '#/definitions/endpointError'
        '429':
          description: Too many requests have been made to this endpoint.
          schema:
            $ref: '#/definitions/endpointError'
        '500':
          description: An internal system error occurred
          schema:
            $ref: '#/definitions/endpointError'
  /vendor/document:
    get:
      description: 'Returns the body of one or more documents that have been attached to a specific vendor.

        If multiple documents are requested, then by default the files are returned as a multi-part mime response.

        Alternately, the zip option can be used to return multiple files as a single zip archive'
      produces:
      - image/jpeg
      - image/png
      - application/octet-stream
      - 'Required API key permissions: `VendorRisk` (select when creating API key in Account Settings)'
      tags:
      - vendors
      summary: Retrieve (one or more) vendor documents by id
      operationId: document
      parameters:
      - type: array
        items:
          type: integer
          format: int64
        description: a comma-separated list of one or more documents (by unique id)
        name: document_ids
        in: query
      - type: boolean
        description: indicates that for multiple document requests, the files should be returned as a multi-file zip
        name: zip
        in: query
      responses:
        '200':
          description: Vendors document
          schema:
            $ref: '#/definitions/GetVendorDocumentResponsePayload'
        '300':
          description: Request requires multipart receipt ability
          schema:
            $ref: '#/definitions/endpoint300Error'
        '403':
          description: Account does not have access to requested entities
          schema:
            $ref: '#/definitions/endpointError'
        '422':
          description: An invalid parameter was supplied or a mandatory parameter was missing
          schema:
            $ref: '#/definitions/endpointError'
        '429':
          description: Too many requests have been made to this endpoint.
          schema:
            $ref: '#/definitions/endpointError'
        '500':
          description: An internal system error occurred
          schema:
            $ref: '#/definitions/endpointError'
  /vendor/documents:
    get:
      description: 'Returns a list of documents that have been uploaded against this vendor in chronological order of when they were uploaded.


        Required API key permissions: `VendorRisk` (select when creating API key in Account Settings)'
      tags:
      - vendors
      summary: List vendor documents
      operationId: documents
      parameters:
      - type: string
        description: The primary hostname of the vendor to show documents for.
        name: vendor_primary_hostname
        in: query
      - type: string
        description: 'The token of the page to be returned.

          Will return the first page if left blank.'
        name: page_token
        in: query
      - type: integer
        format: int64
        description: 'The number of results to return per page.

          Valid values range from 10 to 2000.

          Defaults to 1000 if unset.'
        name: page_size
        in: query
      responses:
        '200':
          description: Vendor documents
          schema:
            $ref: '#/definitions/GetVendorDocumentsResponsePayload'
        '422':
          description: An invalid parameter was supplied or a mandatory parameter was missing
          schema:
            $ref: '#/definitions/endpointError'
        '429':
          description: Too many requests have been made to this endpoint.
          schema:
            $ref: '#/definitions/endpointError'
        '500':
          description: An internal system error occurred
          schema:
            $ref: '#/definitions/endpointError'
  /vendor/domain:
    get:
      description: 'Returns the details for a domain. It will return 422 when requesting details of an inactive domain.


        Required API key permissions: `VendorRisk` (select when creating API key in Account Settings)'
      tags:
      - vendors
      summary: Retrieve details for a domain
      operationId: vendor_domain_details
      parameters:
      - type: string
        description: The primary hostname of the vendor to show the domain detail for.
        name: vendor_primary_hostname
        in: query
        required: true
      - type: string
        description: The hostname for which to return the details, e.g. "upguard.com"
        name: hostname
        in: query
        required: true
      responses:
        '200':
          description: Domain details
          schema:
            $ref: '#/definitions/GetDomainDetailsV1RespBody'
        '403':
          description: Your API key does not have permission to perform this action.
          schema:
            $ref: '#/definitions/endpointError'
        '422':
          description: An invalid parameter was supplied or a mandatory parameter was missing
          schema:
            $ref: '#/definitions/endpointError'
        '429':
          description: Too many requests have been made to this endpoint.
          schema:
            $ref: '#/definitions/endpointError'
        '500':
          description: An internal system error occurred
          schema:
            $ref: '#/definitions/endpointError'
  /vendor/domain/labels:
    put:
      description: 'Assign labels to a domain. To remove all labels pass an empty list.


        Required API key permissions: `VendorRisk` (select when creating API key in Account Settings)'
      tags:
      - vendors
      summary: Assign labels to a domain
      operationId: vendor_domain_update_labels
      parameters:
      - type: string
        description: The primary hostname of the vendor to update the domain labels for.
        name: vendor_primary_hostname
        in: query
        required: true
      - type: string
        description: The hostname to update labels for
        name: hostname
        in: query
        required: true
      - type: array
        items:
          type: string
        description: The labels to assign to the domain. You can pass an empty array to remove all labels.
        name: labels
        in: query
        required: true
      responses:
        '204':
          description: ' Successful response is empty'
        '403':
          description: Your API key does not have permission to perform this action.
          schema:
            $ref: '#/definitions/endpointError'
        '422':
          description: An invalid parameter was supplied or a mandatory parameter was missing
          schema:
            $ref: '#/definitions/endpointError'
        '429':
          description: Too many requests have been made to this endpoint.
          schema:
            $ref: '#/definitions/endpointError'
        '500':
          description: An internal system error occurred
          schema:
            $ref: '#/definitions/endpointError'
  /vendor/domains:
    get:
      description: 'Returns a list of domains for a vendor.


        Required API key permissions: `VendorRisk` (select when creating API key in Account Settings)'
      tags:
      - vendors
      summary: List vendor domains
      operationId: vendor_domains
      parameters:
      - type: string
        description: The primary hostname of the vendor to show domains for.
        name: vendor_primary_hostname
        in: query
        required: true
      - type: boolean
        default: true
        description: Retrieve active domains
        name: active
        in: query
      - type: boolean
        default: true
        description: Retrieve inactive domains
        name: inactive
        in: query
      - type: array
        items:
          type: string
        description: Filter result by the provided labels
        name: labels
        in: query
      - type: string
        description: The `page_token` from a previous request, use this to get the next page of results.
        name: page_token
        in: query
      - maximum: 2000
        minimum: 10
        type: integer
        format: int64
        default: 1000
        description: The number of results to return per page.
        name: page_size
        in: query
      - enum:
        - domain
        - active
        - automated_score
        - scanned_at
        type: string
        default: domain
        description: 'The value to sort the domains by


          If not specified will default to `domain` and set `sort_desc` to `true`'
        name: sort_by
        in: query
      - type: boolean
        default: false
        description: Whether or not to sort the results in descending order
        name: sort_desc
        in: query
      responses:
        '200':
          description: A list of domains
          schema:
            $ref: '#/definitions/GetDomainsV1RespBody'
        '403':
          description: Your API key does not have permission to perform this action.
          schema:
            $ref: '#/definitions/endpointError'
        '422':
          description: An invalid parameter was supplied or a mandatory parameter was missing
          schema:
            $ref: '#/definitions/endpointError'
        '429':
          description: Too many requests have been made to this endpoint.
          schema:
            $ref: '#/definitions/endpointError'
        '500':
          description: An internal system error occurred
          schema:
            $ref: '#/definitions/endpointError'
  /vendor/ip:
    get:
      description: 'Returns the details of the IP address. It will return 422 when requesting details of an inactive IP address.


        Required API key permissions: `VendorRisk` (select when creating API key in Account Settings)'
      tags:
      - vendors
      summary: Retrieve details for an IP address
      operationId: vendor_ip_details
      parameters:
      - type: string
        description: The primary hostname of the vendor to show the IP detail for.
        name: vendor_primary_hostname
        in: query
        required: true
      - type: string
        description: The IP address to get details for
        name: ip
        in: query
        required: true
      responses:
        '200':
          description: IP details
          schema:
            $ref: '#/definitions/GetIpDetailsV1RespBody'
        '403':
          description: Your API key does not have permission to perform this action.
          schema:
            $ref: '#/definitions/endpointError'
        '422':
          description: An invalid parameter was supplied or a mandatory parameter was missing
          schema:
            $ref: '#/definitions/endpointError'
        '429':
          description: Too many requests have been made to this endpoint.
          schema:
            $ref: '#/definitions/endpointError'
        '500':
          description: An internal system error occurred
          schema:
            $ref: '#/definitions/endpointError'
  /vendor/ip/labels:
    put:
      description: 'Assign labels to an IP. To remove all labels pass an empty list.


        Required API key permissions: `VendorRisk` (select when creating API key in Account Settings)'
      tags:
      - vendors
      summary: Assign labels to an IP
      operationId: vendor_ip_update_labels
      parameters:
      - type: string
        description: The primary hostname of the vendor to update the IP labels for.
        name: vendor_primary_hostname
        in: query
        required: true
      - type: integer
        format: int64
        description: The IP to update labels for
        name: ip
        in: query
        required: true
      - type: array
        items:
          type: string
        description: The labels to assign to the IP. You can pass an empty array to remove all labels.
        name: labels
        in: query
        required: true
      responses:
        '204':
          description: ' Successful response is empty'
        '403':
          description: Your API key does not have permission to perform this action.
          schema:
            $ref: '#/definitions/endpointError'
        '422':
          description: An invalid parameter was supplied or a mandatory parameter was missing
          schema:
            $ref: '#/definitions/endpointError'
        '429':
          description: Too many requests have been made to this endpoint.
          schema:
            $ref: '#/definitions/endpointError'
        '500':
          description: An internal system error occurred
          schema:
            $ref: '#/definitions/endpointError'
  /vendor/ips:
    get:
      description: 'Returns a list of ips for a vendor.


        Required API key permissions: `VendorRisk` (select when creating API key in Account Settings)'
      tags:
      - vendors
      summary: List vendor ips
      operationId: vendor_ips
      parameters:
      - type: string
        description: The primary hostname of the vendor to show ips for.
        name: vendor_primary_hostname
        in: query
        required: true
      - type: array
        items:
          type: string
        description: Filter result by the provided labels
 

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