Payabli Vendor API
The Vendor API from Payabli — 5 operation(s) for vendor.
The Vendor API from Payabli — 5 operation(s) for vendor.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
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.curl "https://apis.io/api/v1/apis/payabli-vendor-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
openapi: 3.2.0
info:
title: reference Vendor API
version: 1.0.0
servers:
- url: https://api-sandbox.payabli.com/api
description: Sandbox
- url: https://api.payabli.com/api
description: Production
tags:
- name: Vendor
paths:
/Vendor/single/{entry}:
post:
operationId: AddVendor
summary: Create vendor
description: Creates a vendor in an entrypoint.
tags:
- Vendor
parameters:
- name: entry
in: path
description: Entrypoint identifier.
required: true
schema:
type: string
- name: Authorization
in: header
description: 'OAuth2 Bearer access token from the client-credentials flow. See [OAuth authentication](/developers/oauth-authentication).
'
required: true
schema:
type: string
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/PayabliApiResponseVendors'
'400':
description: Bad request / invalid data.
content:
application/json:
schema:
$ref: '#/components/schemas/PayabliErrorBody'
'401':
description: Unauthorized request.
content:
application/json:
schema:
$ref: '#/components/schemas/PayabliErrorBody'
'500':
description: Internal server error.
content:
application/json:
schema:
$ref: '#/components/schemas/PayabliErrorBody'
'503':
description: Database connection error.
content:
application/json:
schema:
$ref: '#/components/schemas/PayabliErrorBody'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/VendorData'
/Vendor/{idVendor}:
get:
operationId: GetVendor
summary: Get vendor
description: Retrieves a vendor's details, including enrichment status and payment acceptance info when available.
tags:
- Vendor
parameters:
- name: idVendor
in: path
description: Vendor ID.
required: true
schema:
type: integer
- name: Authorization
in: header
description: 'OAuth2 Bearer access token from the client-credentials flow. See [OAuth authentication](/developers/oauth-authentication).
'
required: true
schema:
type: string
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/VendorQueryRecord'
put:
operationId: EditVendor
summary: Update vendor
description: Updates a vendor's information. Send only the fields you need to update.
tags:
- Vendor
parameters:
- name: idVendor
in: path
description: Vendor ID.
required: true
schema:
type: integer
- name: Authorization
in: header
description: 'OAuth2 Bearer access token from the client-credentials flow. See [OAuth authentication](/developers/oauth-authentication).
'
required: true
schema:
type: string
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/PayabliApiResponseVendors'
'400':
description: Bad request / invalid data.
content:
application/json:
schema:
$ref: '#/components/schemas/PayabliErrorBody'
'401':
description: Unauthorized request.
content:
application/json:
schema:
$ref: '#/components/schemas/PayabliErrorBody'
'500':
description: Internal server error.
content:
application/json:
schema:
$ref: '#/components/schemas/PayabliErrorBody'
'503':
description: Database connection error.
content:
application/json:
schema:
$ref: '#/components/schemas/PayabliErrorBody'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/VendorData'
delete:
operationId: DeleteVendor
summary: Delete vendor
description: Delete a vendor.
tags:
- Vendor
parameters:
- name: idVendor
in: path
description: Vendor ID.
required: true
schema:
type: integer
- name: Authorization
in: header
description: 'OAuth2 Bearer access token from the client-credentials flow. See [OAuth authentication](/developers/oauth-authentication).
'
required: true
schema:
type: string
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/PayabliApiResponseVendors'
'400':
description: Bad request / invalid data.
content:
application/json:
schema:
$ref: '#/components/schemas/PayabliErrorBody'
'401':
description: Unauthorized request.
content:
application/json:
schema:
$ref: '#/components/schemas/PayabliErrorBody'
'500':
description: Internal server error.
content:
application/json:
schema:
$ref: '#/components/schemas/PayabliErrorBody'
'503':
description: Database connection error.
content:
application/json:
schema:
$ref: '#/components/schemas/PayabliErrorBody'
/Vendor/enrich/{entry}:
post:
operationId: EnrichVendor
summary: Enrich vendor
description: Triggers AI-powered vendor enrichment for an existing vendor. Runs one or more enrichment stages (invoice scan, web search) based on the `scope` parameter. Can automatically apply extracted payment acceptance info and vendor contact information to the vendor record, or return raw results for manual review. Contact Payabli to enable this feature.
tags:
- Vendor
parameters:
- name: entry
in: path
description: Entrypoint identifier.
required: true
schema:
type: string
- name: Authorization
in: header
description: 'OAuth2 Bearer access token from the client-credentials flow. See [OAuth authentication](/developers/oauth-authentication).
'
required: true
schema:
type: string
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/VendorEnrichResponse'
'400':
description: Bad request / invalid data.
content:
application/json:
schema:
$ref: '#/components/schemas/PayabliErrorBody'
'401':
description: Unauthorized request.
content:
application/json:
schema:
$ref: '#/components/schemas/PayabliErrorBody'
'500':
description: Internal server error.
content:
application/json:
schema:
$ref: '#/components/schemas/PayabliErrorBody'
'503':
description: Database connection error.
content:
application/json:
schema:
$ref: '#/components/schemas/PayabliErrorBody'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/VendorEnrichRequest'
/Vendor/enrich/schedule_call/{entry}:
post:
operationId: ScheduleEnrichmentCall
summary: Schedule outreach call
description: Schedules an AI outreach call to a vendor to collect their preferred payment method and contact email. This is the third enrichment stage. Calls are scheduled for the next business day at around 9 AM in the vendor's timezone, with retries on no-answer and a fallback payment method applied when retries are exhausted. This feature is opt-in at the org level. Contact your Payabli representative to enable it, provision a phone number, and discuss pricing.
tags:
- Vendor
parameters:
- name: entry
in: path
description: Entrypoint identifier.
required: true
schema:
type: string
- name: Authorization
in: header
description: 'OAuth2 Bearer access token from the client-credentials flow. See [OAuth authentication](/developers/oauth-authentication).
'
required: true
schema:
type: string
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/VendorScheduleCallResponse'
'400':
description: Bad request / invalid data.
content:
application/json:
schema:
$ref: '#/components/schemas/PayabliErrorBody'
'401':
description: Unauthorized request.
content:
application/json:
schema:
$ref: '#/components/schemas/PayabliErrorBody'
'429':
description: Too many requests. The calling system is rate limited.
content:
application/json:
schema:
$ref: '#/components/schemas/PayabliErrorBody'
'500':
description: Internal server error.
content:
application/json:
schema:
$ref: '#/components/schemas/PayabliErrorBody'
'503':
description: Database connection error.
content:
application/json:
schema:
$ref: '#/components/schemas/PayabliErrorBody'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/VendorScheduleCallRequest'
/Vendor/{idVendor}/enrichment/call-status:
get:
operationId: GetEnrichmentCallStatus
summary: Get outreach call status
description: Returns the latest AI outreach call activity for a vendor. The response is a composite object with a `state` discriminator (`none`, `scheduled`, `successful`, or `failed`); the block that matches the current state is populated. When the vendor has no call activity, `state` is `none` and the response returns HTTP 200.
tags:
- Vendor
parameters:
- name: idVendor
in: path
description: ID of the vendor to read call status for.
required: true
schema:
type: integer
format: int64
- name: Authorization
in: header
description: 'OAuth2 Bearer access token from the client-credentials flow. See [OAuth authentication](/developers/oauth-authentication).
'
required: true
schema:
type: string
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/VendorCallStatusResponse'
'401':
description: Unauthorized request.
content:
application/json:
schema:
$ref: '#/components/schemas/PayabliErrorBody'
'500':
description: Internal server error.
content:
application/json:
schema:
$ref: '#/components/schemas/PayabliErrorBody'
'503':
description: Database connection error.
content:
application/json:
schema:
$ref: '#/components/schemas/PayabliErrorBody'
components:
schemas:
ExternalPaypointId:
type: string
description: 'A custom identifier for the paypoint, if applicable.
'
title: ExternalPaypointId
VendorEnrichmentData:
type: object
properties:
invoiceScan:
$ref: '#/components/schemas/VendorEnrichmentInvoiceScan'
description: Results from the invoice scan stage, if it ran.
webSearch:
$ref: '#/components/schemas/VendorEnrichmentWebSearch'
description: Results from the web search stage, if it ran.
description: Container for enrichment stage results.
title: VendorEnrichmentData
Dbaname:
type: string
description: 'The alternate or common name that this business is doing business under,
usually referred to as a DBA name.
'
title: Dbaname
Contacts:
type: object
properties:
contactEmail:
$ref: '#/components/schemas/Email'
description: Contact email address.
contactName:
type: string
description: Contact name.
contactPhone:
type: string
description: Contact phone number.
contactTitle:
type: string
description: Contact title.
additionalData:
$ref: '#/components/schemas/AdditionalDataString'
title: Contacts
Mcc:
type: string
description: 'Business Merchant Category Code (MCC).
[This resource](https://github.com/greggles/mcc-codes/blob/main/mcc_codes.csv)
lists MCC codes.
'
title: Mcc
Remitcountry:
type: string
description: 'Remittance address country. Used for mailing paper checks. Must be `US`
or `CA`. Defaults to `US` if not provided.
'
title: Remitcountry
IsSuccess:
type: boolean
description: 'Boolean indicating whether the operation was successful. A `true` value
indicates success. A `false` value indicates failure.
'
title: IsSuccess
VendorEin:
type: string
description: 'EIN/Tax ID for vendor. Must be nine digits formatted as `XX-XXXXXXX`
(for example, `12-3456789`).
'
title: VendorEin
FileContentFtype:
type: string
enum:
- pdf
- doc
- docx
- jpg
- jpeg
- png
- gif
- txt
description: The MIME type of the file (if content is provided).
title: FileContentFtype
VendorEnrichResponse:
type: object
properties:
responseCode:
$ref: '#/components/schemas/Responsecode'
pageIdentifier:
$ref: '#/components/schemas/PageIdentifier'
roomId:
$ref: '#/components/schemas/RoomIdNotInUse'
isSuccess:
$ref: '#/components/schemas/IsSuccess'
responseText:
$ref: '#/components/schemas/ResponseText'
responseData:
$ref: '#/components/schemas/VendorEnrichResponseData'
required:
- responseText
description: Response from the vendor enrichment endpoint.
title: VendorEnrichResponse
VendorQueryRecord:
type: object
properties:
VendorNumber:
$ref: '#/components/schemas/VendorNumber'
Name1:
type: string
Name2:
type:
- string
- 'null'
EIN:
oneOf:
- $ref: '#/components/schemas/Ein'
- type: 'null'
Phone:
type: string
Email:
$ref: '#/components/schemas/Email'
RemitEmail:
oneOf:
- $ref: '#/components/schemas/RemitEmail'
- type: 'null'
Address1:
$ref: '#/components/schemas/AddressNullable'
Address2:
$ref: '#/components/schemas/AddressAddtlNullable'
City:
$ref: '#/components/schemas/CityNullable'
State:
$ref: '#/components/schemas/StateNullable'
Zip:
$ref: '#/components/schemas/Zip'
Country:
type: string
Mcc:
$ref: '#/components/schemas/Mcc'
LocationCode:
type: string
Contacts:
type: array
items:
$ref: '#/components/schemas/ContactsResponse'
description: Array of objects describing the vendor's contacts.
BillingData:
$ref: '#/components/schemas/BillingDataResponse'
PaymentMethod:
$ref: '#/components/schemas/VendorPaymentMethodString'
VendorStatus:
$ref: '#/components/schemas/Vendorstatus'
VendorId:
$ref: '#/components/schemas/Vendorid'
EnrollmentStatus:
$ref: '#/components/schemas/EnrollmentStatus'
Summary:
$ref: '#/components/schemas/VendorSummary'
PaypointLegalname:
$ref: '#/components/schemas/Legalname'
PaypointId:
type:
- integer
- 'null'
format: int64
description: The paypoint's ID. This is different from the entryname.
PaypointDbaname:
$ref: '#/components/schemas/Dbaname'
PaypointEntryname:
$ref: '#/components/schemas/Entrypointfield'
ParentOrgName:
$ref: '#/components/schemas/OrgParentName'
ParentOrgId:
$ref: '#/components/schemas/OrgParentId'
CreatedDate:
$ref: '#/components/schemas/CreatedAt'
LastUpdated:
$ref: '#/components/schemas/LastModified'
remitAddress1:
$ref: '#/components/schemas/Remitaddress1'
remitAddress2:
$ref: '#/components/schemas/Remitaddress2'
remitCity:
$ref: '#/components/schemas/Remitcity'
remitState:
$ref: '#/components/schemas/Remitstate'
remitZip:
$ref: '#/components/schemas/Remitzip'
remitCountry:
$ref: '#/components/schemas/Remitcountry'
payeeName1:
$ref: '#/components/schemas/PayeeName'
payeeName2:
$ref: '#/components/schemas/PayeeName'
customField1:
type: string
customField2:
type: string
customerVendorAccount:
type: string
InternalReferenceId:
$ref: '#/components/schemas/InternalReferenceId'
PaymentPortalUrl:
type: string
description: URL for the vendor's online payment portal, if known. Populated by the vendor enrichment pipeline.
CardAccepted:
type: string
description: Whether the vendor accepts card payments. Values are `yes`, `no`, or `unable to determine`. Populated by the vendor enrichment pipeline.
AchAccepted:
type: string
description: Whether the vendor accepts ACH payments. Values are `yes`, `no`, or `unable to determine`. Populated by the vendor enrichment pipeline.
CheckAccepted:
type: string
description: Whether the vendor accepts check payments. Values are `yes`, `no`, or `unable to determine`. Populated by the vendor enrichment pipeline.
EnrichmentStatus:
type: string
description: Current enrichment state of the vendor. Values are `not_enriched`, `partially_enriched`, `fully_enriched`, or `fallback_applied`.
EnrichedBy:
type: string
description: Which enrichment method resolved the vendor's payment acceptance info. Values are `invoice_scan`, `web_search`, `vendor_network`, or `manual`.
EnrichedAt:
type: string
format: date-time
description: When the vendor was last enriched (UTC).
EnrichmentId:
type: string
description: Identifier for the enrichment request that last updated this vendor.
additionalData:
$ref: '#/components/schemas/AdditionalDataMap'
externalPaypointID:
$ref: '#/components/schemas/ExternalPaypointId'
StoredMethods:
type: array
items:
$ref: '#/components/schemas/VendorResponseStoredMethod'
title: VendorQueryRecord
Remitaddress2:
type: string
description: 'Remittance address additional line, such as a suite or unit number. Used
for mailing paper checks. Always optional.
'
title: Remitaddress2
AdditionalDataMap:
type: object
additionalProperties:
type: string
description: "Custom dictionary of key:value pairs. You can use this field to store any\ndata related to the object or for your system. If you are using\n[custom identifiers](/developers/developer-guides/entities-customers),\npass those in this object. Max length for a value is 100 characters.\n\n```json\n{\n \"additionalData\": {\n \"key1\": \"value1\",\n \"key2\": \"value2\",\n \"key3\": \"value3\"\n }\n}\n```\n"
title: AdditionalDataMap
CityNullable:
type: string
description: The city.
title: CityNullable
BillingDataResponse:
type: object
properties:
id:
type: integer
description: The bank's ID in Payabli.
accountId:
$ref: '#/components/schemas/AccountId'
description: An identifier for the bank account. If not provided during creation or update, the system generates one in the format `acct-{first_digit}xxxxx{last_4_digits}` based on the account number. If a duplicate exists within the same service at the paypoint, a numeric suffix is appended, such as `-2`. This value is also used as the identifier for the bank account's associated payment connector.
nickname:
type: string
bankName:
$ref: '#/components/schemas/BankName'
routingAccount:
$ref: '#/components/schemas/RoutingAccount'
accountNumber:
$ref: '#/components/schemas/AccountNumber'
typeAccount:
$ref: '#/components/schemas/TypeAccount'
bankAccountHolderName:
$ref: '#/components/schemas/BankAccountHolderName'
bankAccountHolderType:
$ref: '#/components/schemas/BankAccountHolderType'
bankAccountFunction:
type: integer
description: "Describes whether the bank account is used for deposits or withdrawals in Payabli:\n - `0`: Deposit\n - `1`: Withdrawal\n - `2`: Deposit and withdrawal"
verified:
type: boolean
status:
type: integer
services:
type: array
items:
description: Any type
default:
type: boolean
required:
- id
- nickname
- bankName
- routingAccount
- accountNumber
- typeAccount
- bankAccountHolderName
- bankAccountHolderType
- bankAccountFunction
- verified
- status
- services
- default
title: BillingDataResponse
VendorEnrichmentInvoiceScan:
type: object
properties:
vendorName:
type: string
description: Vendor name extracted from the invoice.
street:
type: string
description: Street address.
city:
type: string
description: City.
state:
type: string
description: State (two-letter abbreviation).
zipCode:
type: string
description: ZIP code.
country:
type: string
description: Country code.
phone:
type: string
description: Phone number. Format isn't guaranteed and is extracted as-is from the invoice.
email:
type: string
description: Email address.
paymentLink:
type: string
description: Payment portal URL, if found on the invoice.
cardAccepted:
type: string
description: Whether the vendor accepts card payments. Values are `yes`, `no`, or `unable to determine`.
achAccepted:
type: string
description: Whether the vendor accepts ACH payments. Values are `yes`, `no`, or `unable to determine`.
checkAccepted:
type: string
description: Whether the vendor accepts check payments. Values are `yes`, `no`, or `unable to determine`.
invoiceNumber:
type: string
description: Invoice number extracted from the document.
amountDue:
type: number
format: double
description: Invoice amount due in USD.
dueDate:
type: string
description: Payment due date. Format is `YYYY-MM-DD`.
description: Vendor contact information and payment acceptance info extracted from an invoice.
title: VendorEnrichmentInvoiceScan
RemitEmail:
type: string
format: email
description: 'Remittance email address. Used for sending virtual cards and other
information about payouts.
'
title: RemitEmail
AccountNumber:
type: string
description: Account number for bank account. This value is returned masked in responses.
title: AccountNumber
VendorEnrichmentWebSearch:
type: object
properties:
phone:
type: string
description: Phone number found through web search. Format isn't guaranteed.
phoneType:
type: string
description: Phone classification. Values are `main`, `billing`, or `customer_service`.
email:
type: string
description: Email address.
emailType:
type: string
description: Email classification. Values are `billing`, `general`, or `customer_service`.
street:
type: string
description: Street address.
city:
type: string
description: City.
state:
type: string
description: State (two-letter abbreviation).
zipCode:
type: string
description: ZIP code.
country:
type: string
description: Country code.
addressType:
type: string
description: Address classification. Values are `business`, `headquarters`, or `mailing`.
paymentLink:
type: string
description: Payment portal URL.
paymentLinkType:
type: string
description: Link classification. Values are `payment_portal`, `billing_page`, or `general_website`.
cardAccepted:
type: string
description: Whether the vendor accepts card payments. Values are `yes`, `no`, or `unable to determine`.
achAccepted:
type: string
description: Whether the vendor accepts ACH payments. Values are `yes`, `no`, or `unable to determine`.
checkAccepted:
type: string
description: Whether the vendor accepts check payments. Values are `yes`, `no`, or `unable to determine`.
description: Vendor contact information and payment acceptance info found through web search.
title: VendorEnrichmentWebSearch
ContactsField:
type: array
items:
$ref: '#/components/schemas/Contacts'
description: List of contacts.
title: ContactsField
VendorResponseStoredMethod:
type: object
properties:
IdPmethod:
type:
- string
- 'null'
Method:
type:
- string
- 'null'
Descriptor:
type:
- string
- 'null'
MaskedAccount:
type:
- string
- 'null'
ExpDate:
type:
- string
- 'null'
HolderName:
type:
- string
- 'null'
AchSecCode:
type:
- string
- 'null'
AchHolderType:
type:
- string
- 'null'
IsValidatedACH:
type:
- boolean
- 'null'
BIN:
type:
- string
- 'null'
binData:
oneOf:
- $ref: '#/components/schemas/BinData'
- type: 'null'
ABA:
type:
- string
- 'null'
PostalCode:
type:
- string
- 'null'
MethodType:
type:
- string
- 'null'
WalletType:
type:
- string
- 'null'
description: Digital wallet type if applicable.
LastUpdated:
type:
- string
- 'null'
format: date-time
CardUpdatedOn:
type:
- string
- 'null'
format: date-time
description: Date and time the card was last updated.
required:
- IdPmethod
- Method
- Descriptor
- MaskedAccount
- ExpDate
- HolderName
- AchSecCode
- AchHolderType
- IsValidatedACH
- BIN
- binData
- ABA
- PostalCode
- MethodType
- WalletType
- LastUpdated
- CardUpdatedOn
description: Stored payment method information
title: VendorResponseStoredMethod
PayabliApiResponseVendors:
type: object
properties:
isSuccess:
$ref: '#/components/schemas/IsSuccess'
pageIdentifier:
$ref: '#/components/schemas/PageIdentifier'
responseCode:
$ref: '#/components/schemas/Responsecode'
responseData:
type: integer
description: If the request was successful, this field contains the identifier for the vendor.
responseText:
$ref: '#/components/schemas/ResponseText'
required:
- responseText
title: PayabliApiResponseVendors
VendorName2:
type: string
description: 'Secondary name for vendor. If provided, allowed characters are the
same as the `name1` field.
'
title: VendorName2
VendorName1:
type: string
description: 'Primary name for vendor. Required for new vendor.
'
title: VendorName1
AddressAddtlNullable:
type: string
description: Additional line for the address.
title: AddressAddtlNullable
Entrypointfield:
type: string
description: The entrypoint identifier.
title: Entrypointfield
VendorCallStatusFailed:
type: object
properties:
lastAttemptAt:
type: string
description: ISO-8601 timestamp of the most recent call attempt.
reason:
type: string
description: Reason the call didn't complete, as reported by the calling system (for example, `No answer`).
attemptsRemaining:
type: integer
description: Number of call attempts left before retries are exhausted.
maxAttempts:
type: integer
description: Maximum number of call attempts configured for this schedule.
nextRetryScheduledFor:
type:
- string
- 'null'
description: ISO-8601 timestamp of the next scheduled retry, or `null` when no further retries are scheduled.
description: Details of an outreach call that didn't complete successfully.
title: VendorCallStatusFailed
AccountId:
type: string
description: Custom identifier for payment connector.
title: AccountId
VendorScheduleCallResponse:
type: object
properties:
responseCode:
$ref: '#/components/schemas/Responsecode'
pageIdentifier:
$ref: '#/components/schemas/PageIdentifier'
roomId:
$ref: '#/components/schemas/RoomIdNotInUse'
isSuccess:
$ref: '#/components/schemas/IsSuccess'
responseText:
$ref: '#/components/schemas/ResponseText'
responseData:
$ref: '#/components/schemas/VendorScheduleCallResponseData'
required:
- responseText
description: Response from the schedule outreach call endpoint.
title: VendorScheduleCallResponse
ContactsResponse:
type: object
properties:
ContactName:
type: string
description: Contact name.
ContactEmail:
$ref: '#/components/schemas/Email'
description: Contact email address.
ContactTitle:
type: string
description: Contact title.
ContactPhone:
# --- truncated at 32 KB (57 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/payabli/refs/heads/main/openapi/payabli-vendor-api-openapi.yml