openapi: 3.0.0
info:
x-logo:
url: getfile/przelewy24-logo_mini.png
altText: LogoP24
contact:
name: Przelewy24 Support
url: https://www.przelewy24.pl/support
title: Ekspres Przelewy24 REST API Documentation Additional API functionality Marketplace Management API API
version: 1.0.6
description: "\n\n\n# Ekspres Przelewy24\n\nPrzelewy24 provides an authorisation and clearing system and provides payment services as a Domestic Payment Institution. <br><br/>\n<b><b>Ekspres-Przelewy24</b> service allows to quickly and effortlessly send money between accounts from different banks.</b><br/><br/>\nBelow documentation describes the process of information exchange in the course of ordering a transfer via Ekspres Przelewy24 with the use of REST API.<br/><br/>\nIn order to be able to access Ekspres API Przelewy24, first you need to [create an account](https://ekspres.przelewy24.pl/kontakt/index) in Ekspres P24 Administration Panel.\n<br/>\n# Basic notions\nThe following notions will be used for describing the operation of Ekspres Przelewy24:<br/><br/> **WWW system** – access to Ekspres Przelewy24 in the WWW version through the following websites:<ul>\n <li>[https://ekspres.przelewy24.pl](https://ekspres.przelewy24.pl) – production version,</li>\n <li>[https://testekspres.przelewy24.pl](https://testekspres.przelewy24.pl) – sandbox version.</li></ul>\n**API** – access to Ekspres Przelewy24 via REST API. <br/> **Partner** – a person / entity owning the system and submitting transfer orders to Ekspres.<br/> **Client** – a person using Ekspres services (payer or recipient of payment from Ekspres).\n\n# Modes and transfer processing\nEkspres Przelewy24 offers 3 modes of transfer processing:<ul> <li><b>Wallet</b> - transfers are processed using the funds previously paid into the wallet,</li> <li><b>P24</b> i <b>P24mobile</b> - transfers are processed only after the client has made the payment in [przelewy24.pl](https://www.przelewy24.pl),</li> Each of these modes allows the client to monitor the progress of the transfer by providing them with a dedicated URL address (available upon transfer registration).\n\n## Transfer processing in Wallet\n<b>Wallet</b> is characterized by quick processing of transfers to the client. Thanks to the funds accrued in the wallet, it is possible to effect immediate processing of a transfer registered by the Partner.<br/><br/>\n\n<img src=\"getfile/eng_wallet.png\" alt=\"Transfer w trybie Wallet\" class=\"center smallImg\">\n\n\n## Transfer processing in P24 and P24mobile\n<b>P24</b> and <b>P24mobile</b> processes payments based on the funds paid in by the Client through [przelewy24.pl](https://www.przelewy24.pl). Using this mode, the partner registers the transfer in API and, subsequently, sends a payment link to the client (alternatively, the payment link may also be sent automatically via email). Once the transaction is paid by the client in [przelewy24.pl](https://www.przelewy24.pl), the transfer registered by the partner is sent for processing.<br/><br/>\n<b>NOTE: P24mobile is analogous to P24 in that it is designed to operate with a mobile library.</b><br/><br/>\n\n<img src=\"getfile/eng_p24_p24mobile.png\" alt=\"Transfer w trybie P24 i P24mobile\" class=\"center smallImg\">\n\n\n# Codes of responses and erros\n## HTTP response codes\nEkspres Przelewy24 REST API uses response codes in HTTP headers to communicate the result of a query, potential problems and errors. <br/><br/> An inventory of possible response codes and their meanings are explained in the appropriate subchapters describing the specific methods.<br/><br/> <b>Always take note of the response code in order to react adequately to potential problems idempotent replies, etc.</b><br/><br/>\n<b>Possible response codes for all methods:</b>\n\n | Kod | Opis | Znaczenie |\n |--------------|:--------------|:------------|\n | 401 | Authorization Required | No access, check the key and the password, check if the key and the password are active and valid for this method. The code is also used to signal temporary failures. |\n | 403 | Forbidden | No access to a given method. The API key and the password are correct. Contact our staff in order to get access. |\n | 404 | Not Found | Method not found, check the URL address called. |\n | 405 | Method Not Allowed | The method used exists, but under a different http call. Check the calls for this method (GET/POST/etc.).|\n | 415 | Unsupported Media Type | The „Content-Type” value used is not allowed or a required header is missing. Inventory of allowed values available at <a href=\"#section/General-structures-of-queries-and-responses/General-query-format\"><b>General query format</b></a>. |\n | 500 | Internal Server Error | Server error, if the error recurs, contact our staff and provide the whole query processed, as well as your API key. |\n | 503 | Service Unavailable | Service temporarily unavailable due to a failure or planned upgrade. |\n\n\n## Error codes\nError codes appear in the output object of a query that ended with an error and, if it’s possible, indicate its cause. This allows to precisely establish the cause of the error and triggers an automatic reaction / error notification. <br/><br/>\nError codes are divided into the following groups:<ul> <li><b>1xxx</b> – input parameter validation error (the query contains an error),</li> <li><b>2xxx, 3xxx</b> – transfer registration error (the query is correct, but the transfer cannot be processed, e.g. due to insufficient funds),</b> <li><b>9xxx</b> – external services error (API failure caused by unavailability of a related service necessary to process the transfer, e.g. currency exchange),</li> <li><b>10000</b> – internal error (failure of Ekspres Przelewy24 REST API).</li></ul>\n<b>NOTE! When implementing API error service, in order to identify the error, rely solely on the codes, as the “description” parameter may change and constitutes additional information only!</b><br/><br/>\nThe table below presents error codes <b>input parameter validation:</b>\n\n | Error code | Description |\n |--------------|:--------------|\n | 1001 | The value of parameter <b>parameter_name</b> contains illicict characters |\n | 1002 | Parameter <b>parameter_name</b> value must not be empty |\n | 1003 | Passwords are not identical |\n | 1004 | The password must consist of at least 8 characters and contain small and capital letters and digits |\n | 1005 | Incorrect email address |\n | 1006 | Incorrect postal code |\n | 1007 | Incorrect country code |\n | 1008 | Incorrect amount |\n | 1009 | The <b>parameter</b> value submitted is not a correct integer |\n | 1010 | Incorrect currency |\n | 1011 | Incorrect account number |\n | 1012 | Incorrect URL address |\n | 1013 | Transaction type not serviced |\n | 1014 | Incorrect field value |\n | 1015 | Current transfer status prevents this operation, or incorrect transfer object |\n | 1016 | Incorrect date format / incorrect date |\n | 1017 | Incorrect query signature |\n | 1018 | Parameter value too long |\n | 1019 | IBAN number submitted has been blocked |\n\n<br/>The table below presents <b>transfer registration error codes:</b>\n\n | Error code | Description |\n |--------------|:--------------|\n | 2001\t| Bank unavailable |\n | 2002 |\tInsufficient funds in wallet |\n | 2003\t| Limit for a single transfer has been exceeded |\n | 2004\t|\tDaily limit on the amount of transfers paid has been exceeded |\n | 2005\t| Transfer ID not recognised |\n | 2006\t| Refund amount provided exceeds the transfer value available |\n | 2007\t| Access denied |\n | 2008\t| Incorrect transfer ID |\n | 2009\t| Transfer limit exceeded |\n | 2010\t| Transfer already returned in P24 mode |\n | 3000\t| Incorrect ID query |\n | 3001\t| Unknown sessionId in P24 mode |\n\n<br/>The table below presents <b>error codes for external services:</b>\n\n | Error code | Description |\n |--------------|:--------------|\n | 9001 |\tTransfer processing error. Contact the customer service department and provide the query ID |\n | 9002 |\tCurrency exchange error. Please, try again |\n\n<br/>The table below presents the <b>remaining error codes:</b>\n\n | Error code | Description |\n |--------------|:--------------|\n | 10000 |\tInternal error. Please, contact the customer service department and provide the query ID |\n\n\n\n# General structures of queries and responses\n## General query format\n\n API queries may be processed using any library that allows HTTPS protocol-based communication. Allowed Content-Type values:<ul>\n <li><b>application/json</b> – queries sent in JSON format,</li>\n <li><b>application/x-www-form-urlencoded</b> – queries sent as POST (urlencoded).</li></ul>\n\n <b>Required coding to UTF-8.</b><br/>\n\n Sample PHP code with the use of cURL\n ```php\n <?php\n $process = curl_init('https://endpoint/ekspres/v1/balance');\n // Content-Type header required\n curl_setopt(\n $process,\n CURLOPT_HTTPHEADER,\n array('Content-Type: application/json')\n );\n // Basic Auth authentication\n curl_setopt($process, CURLOPT_USERPWD, 'api-key' . \":\" . 'api-pass');\n curl_setopt($process, CURLOPT_RETURNTRANSFER, true);\n $return = json_decode(curl_exec($process));\n echo json_encode($return, JSON_PRETTY_PRINT) . \"n\";\n curl_close($process);\n ```\n\n## General response format\nA correct method call in Ekspres Przelewy24 REST API will generate a response in the form of a JSON object, in the format dependent on the method called.<br/> <p style=\"border:1.5px; border-style:dashed; border-color:#FF0000; padding: 1em;\"> <b>NOTE!</b><br/><br/> All the responses returned by API are <b>UTF-8-coded JSON objects without “slash” sign filters and unicode characters!</b><br/><br/> All the responses are returned using the following method:<br/> json_encode($response, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES)<br/><br/> For more information see [PHP documentation](https://www.php.net/manual/en/json.constants.php). </p><br/>\nIn the case of some errors, e.g. internal error 500 or authorisation error 401, the same http code will be returned without additional information in the body. These are the cases when the system does not have any more information on the error or does not want to make it available (for instance, due to lack of authorisation). <br/><br/>\n\n When most errors are generated, GeneralErrorObject is returned (in addition to the relevant http code) with additional details:<br/>\n\n <b>GeneralErrorObject:</b>\n\n | Field name | Type | Description |\n |--------------|:--------------:|:------------|\n | code | int | General <a href=\"#section/Codes-of-responses-and-erros/Error-codes\"><b>error code</b></a> |\n | description | string | Error details |\n\n <p style=\"color:darkblue; font-size:17px\"><b>Przykład odpowiedzi z obiektem GeneralErrorObject:</b></p>\n\n ```html\n HTTP/1.1 400 Bad Request\n Content-Type: application/json\n\n {\n „error”: {\n „code”: 1011,\n „description”: „Given IBAN value ”iban” is not valid”\n }\n }\n ```\n\n\n# Environments\n## Production environment\nEvery request is differentiated by its own unique request URL. This way Ekspres P24 knows which API-function you want to access. Combined with the base URL for either the production- or test-environment, you will get the complete API-URL.\n\nBase URL production system:<br/> https://secure.przelewy24.pl/express/v1\n\n## Test environment\nDuring implementation of the mechanisms in merchant’s system, it is recommended to use test environment. Test environment allows to reproduce system functionalities without making actual payments. <br><br>\nTest environment endpoint:<br> https://sandbox.przelewy24.pl/express/v1 <br><br>\n**<u>The test version does not effect transfers and requires separate login keys.</u>**\n\n# IP server addresses\nWe recommend script protection against suspicious calls using address filtering for incoming connections. IP server ranges for the P24 servers: <br><br> <font class = \"right\"><b>5.252.202.255 , 5.252.202.254</b></font><br> <font class = \"right\"><b>20.215.81.124</b></font><br> <font class = \"right\"><b>193.178.213.0/24</b></font><br> <font class = \"right\"><b>91.220.177.0/24</b></font><br> <font class = \"right\"><b>20.215.183.48/28</b></font><br> <font class = \"right\"><b>134.112.88.8/29</b></font><br>\n\n\n# API Access\nAuthentication is effected with the Basic Auth mechanism, which uses a REST API key (as a login) and the password assigned to it. Generating the API key is possible upon logging on to one’s account in the <a href=\"#section/Basic-notions\"><b>WWW System</b></a> (left-hand menu, tab “API Users” -> “REST User List”). A single user may possess a few API access keys.\n# Authentication\n<!-- Redoc-Inject: <security-definitions> -->\n"
servers:
- url: https://sandbox.przelewy24.pl
description: Sandbox server (uses test data)
- url: https://secure.przelewy24.pl
description: Production server (uses live data)
tags:
- name: Marketplace Management API
paths:
/api/v1/multiStore/dispatchTransaction:
post:
tags:
- Marketplace Management API
summary: Dispatch Transaction
description: The method allows to transfer the funds to specific submerchant's account.
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/DispatchTransactionBody'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/DispatchTransactionResponse200'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/DispatchTransactionResponse400'
'401':
description: Unathorized
content:
application/json:
schema:
$ref: '#/components/schemas/AuthorizationRequired'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/403ForbiddenGeneralError'
'500':
description: Server error
content:
application/json:
schema:
$ref: '#/components/schemas/500UndefinedGeneralError'
security:
- basicAuth: []
/api/v1/multiStore/dispatchInfo/{orderId}:
get:
tags:
- Marketplace Management API
summary: Dispatch Information
description: The method reutrn information about a dispatched transaction for the given <b>orderId</d>.
parameters:
- name: orderId
in: path
description: Identifier of transaction
required: true
schema:
type: integer
format: int64
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/DispatchInfoResponse200'
'404':
description: Not found
content:
application/json:
schema:
$ref: '#/components/schemas/DispatchInfoResponse404'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/AuthorizationRequired'
'500':
description: Server error
content:
application/json:
schema:
$ref: '#/components/schemas/500UndefinedGeneralError'
security:
- basicAuth: []
/api/v1/multiStore/funds?merchantId={merchantId}:
get:
tags:
- Marketplace Management API
summary: Merchant's Balance
description: The method returns information about the current stafe of given merchant's balance.
parameters:
- name: merchantId
in: path
description: Merchant's ID.
required: true
schema:
type: integer
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/FundsResponse200'
'400':
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/FundsResponse400'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/FundsResponse403'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/AuthorizationRequired'
security:
- basicAuth: []
/api/v1/multiStore/affiliates?affiliateId={merchantId}:
get:
tags:
- Marketplace Management API
summary: Registered Submerchants
description: The method allows to download information about registered submerchants in a given marketplace. If you send an optional parameter afiiliatedId, the method returns information about this specific merchant. If you don't send an afiliatedId, the method returns a full list of registered submerchants and their basic data.
parameters:
- name: affiliateId
in: path
description: Merchant's ID.
required: false
schema:
type: integer
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/AffiliatesResponse200'
'400':
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/AffiliatesResponse400'
'404':
description: Not found
content:
application/json:
schema:
$ref: '#/components/schemas/AffiliatesResponse404'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/AuthorizationRequired'
security:
- basicAuth: []
/api/v1/multiStore/refund:
post:
tags:
- Marketplace Management API
summary: Refund Dispatch Transaction
description: To refund a dispatched transaction use an extended refund method. The additional parameters are <b>merchantId</b> and <b>merchantAmount</b>.
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/TransactionRefundBody'
responses:
'201':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/RefundResponse201'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/RefundResponse400'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/AuthorizationRequired'
'409':
description: Conflict
content:
application/json:
schema:
$ref: '#/components/schemas/RefundRsponse409'
security:
- basicAuth: []
components:
schemas:
ErrorRefundArrayObject:
properties:
orderId:
type: integer
format: int64
description: Identifier of refunded transaction
sessionId:
type: string
description: Session's id of refunded transaction
amount:
type: integer
description: The refunded amount, in polish groshes
description:
type: string
description: Refund description
status:
type: boolean
description: Refund's status
example: false
message:
type: string
description: Error message
example: The amount of refund exceeds available amount for the transaction
RefundResponseArrayObject:
properties:
orderId:
type: integer
format: int64
description: Identifier of refunded transaction
example: 0
sessionId:
type: string
description: Session's id of refunded transaction
amount:
type: integer
description: The refunded amount, in polish groshes
example: 1000
data:
description: Tablica danych sub-partnerów
items:
$ref: '#/components/schemas/RefundResponseArrDataObj'
description:
type: string
description: Refund description
status:
type: boolean
description: Refund's status
example: true
message:
type: string
description: Message
example: success
DataArrayObjectRefundBody:
properties:
spId:
type: integer
description: Merchant's ID. The given merchant will be charged with the refund
example: 0
spAmount:
type: integer
description: The amount of funds, in polish groshes,to charge the merchant
required:
- spId
- spAmount
RefundResponseArrDataObj:
properties:
spId:
type: integer
spAmount:
type: integer
FundsResponse400:
properties:
error:
type: string
description: Error message
example: Invalid merchant id
code:
type: integer
description: Erroc code
example: 400
RefundArrayObjectBody:
properties:
orderId:
type: integer
format: int64
description: Identifier of refunded transaction in P24 system
sessionId:
type: string
description: Session's id of refunded transactio in Partner's system
amount:
type: integer
description: Amount of refund in polish groshes
description:
type: string
description: Refund description
data:
description: Array of sub-merchants' data
items:
$ref: '#/components/schemas/DataArrayObjectRefundBody'
required:
- orderId
- sessionId
- amount
- data
DispatchErrorObjectBody:
properties:
errorCode:
type: integer
description: Erroc code. 0 for correct transaction
example: 0
errorMessage:
type: string
description: Error message. For correct transaction "Success, no error."
example: Success, no error.
TransactionRefundBody:
properties:
requestId:
type: string
description: Unique request id
refundsUuid:
type: string
description: Unique id of correct refund request in Merchant's system
urlStatus:
type: string
description: URL address for sendig refund's status
refunds:
description: Array of refund objects
items:
$ref: '#/components/schemas/RefundArrayObjectBody'
required:
- requestId
- refundsUuid
- refunds
AffiliatesResponse400:
properties:
error:
type: string
description: Error message
example: Invalid merchant or affiliate id
code:
type: integer
description: Erroc code
example: 400
DispatchTransactionResponse200:
properties:
result:
description: Array of dispatched transaction results
items:
$ref: '#/components/schemas/DispatchResultObjectArrayBody'
error:
description: Dispatch error object
$ref: '#/components/schemas/DispatchErrorObjectBody'
DispatchResult600ObjectArrayBody:
properties:
orderId:
type: integer
format: int64
description: Identifier of dispatched transaction
orderIdNew:
type: integer
format: int64
description: Identifier of new transaction created in P24 systemu. 0 in case of an error
sessionId:
type: string
description: Session's id of dispatched transaction
sellerId:
type: integer
description: Submerchant's id. The funds were supposed to be transferred to this submerchant
status:
type: boolean
description: Status of transaction
example: false
error:
type: string
description: Error message
example: Incorrect orderId or sessionId
500UndefinedGeneralError:
properties:
error:
type: string
description: Error message
example: Undefined error
code:
type: integer
description: Erroc code
example: 500
ErrorDispatch400Object:
properties:
errorCode:
type: integer
description: Erroc code
errorMessage:
type: string
description: Error message
example: Empty refund list!
DispatchTransactionResponse400:
properties:
result:
description: Array of transaction result objects
items:
$ref: '#/components/schemas/DispatchResult600ObjectArrayBody'
error:
description: Error object
$ref: '#/components/schemas/ErrorDispatch400Object'
DispatchArrayObject:
properties:
date:
type: string
description: Date and time of dispatch
example: '2020-03-27 15:18:38'
orderId:
type: integer
format: int64
description: Identifier of dispatched transaction
partner_id:
type: integer
description: Submerchant's id. The funds are transferred to this sumberchant
items:
type: array
description: Array of product data objects
amount:
type: integer
description: Amount of transferred funds, in polish groshes
DataDispatchInfoObject:
properties:
amountLeft:
type: integer
description: The amount of left funds, in polish groshes
dispatch:
description: Array of dispatch information objects
items:
$ref: '#/components/schemas/DispatchArrayObject'
DispatchTransactionBody:
properties:
batchId:
type: integer
description: Unique id
details:
description: Array of dispatch transaction objects
items:
$ref: '#/components/schemas/ArrayDetailsDispatchTransaction'
required:
- batchId
- details
RefundResponse400:
properties:
error:
type: string
description: Error message
example: Invalid input parameters
code:
type: integer
description: Erroc code
example: null
AuthorizationRequired:
properties:
error:
type: string
description: Error message
example: Incorrect authentication
code:
type: string
description: Erroc code
example: 401
AffiliatesResponse404:
properties:
error:
type: string
description: Error message
example: Affiliates not found
code:
type: integer
description: Erroc code
example: 404
DispatchResultObjectArrayBody:
properties:
orderId:
type: integer
format: int64
description: Id number of dispatched transaction
orderIdNew:
type: integer
format: int64
description: Id number of new transaction created in P24 system
sessionId:
type: string
description: Session's id of dispatched transaction podzielonej transakcji
sellerId:
type: integer
description: Submerchant's id. The funds are transferred to this submerchant
amount:
type: integer
description: Amount of transferred funds in polish groshes
status:
type: boolean
description: Status of transaction
example: true
error:
type: string
description: Error message. Empty for correct transaction
example: ''
RefundRsponse409:
properties:
error:
description: Error Array of refund object
items:
$ref: '#/components/schemas/ErrorRefundArrayObject'
code:
type: integer
description: Erroc code
example: 409
403ForbiddenGeneralError:
properties:
error:
type: string
description: Error message
example: ''
code:
type: integer
description: Erroc code
example: 403
FundsResponse403:
properties:
error:
type: string
description: Error message
example: You do not have rights to this account
code:
type: integer
description: Erroc code
example: 403
AffiliatesResponse200:
properties:
data:
descriptiom: Array of pbjects - a list of merchants
items:
$ref: '#/components/schemas/DataAffArrayObject'
code:
type: integer
description: Response code, 200 for correct
example: 200
FundsResponse200:
properties:
result:
type: integer
description: Amount of funds in polish groshes
code:
type: integer
description: Response code, 200 for correct
example: 200
DispatchInfoResponse404:
properties:
error:
type: string
description: Error message
example: Transaction Not Found
code:
type: integer
description: Erroc code
example: 3
DispatchInfoResponse200:
properties:
data:
description: Information of dispatched transactio n
$ref: '#/components/schemas/DataDispatchInfoObject'
responseCode:
type: integer
description: Response code. 0 for correct
example: 0
RefundResponse201:
properties:
data:
description: Array of refund objects
items:
$ref: '#/components/schemas/RefundResponseArrayObject'
responseCode:
type: string
description: Response code. 0 for correct
example: 0
ArrayDetailsDispatchTransaction:
properties:
orderId:
type: integer
format: int64
description: Identifier of dispatch transaction
sessionId:
type: string
description: Session's identifier of dispatch transaction
sellerId:
type: integer
description: Submerchant's id. The funds are going to be transferred to this submerchant
amount:
type: integer
description: Amount of transferred funds in polish groshes, e.g. 1 zł = 100 gr
DataAffArrayObject:
properties:
id:
type: integer
description: Merchant's id
name:
type: string
description: Merchant's name
example: Sample Merchant Oddział Poznań
nip:
type: string
description: Merchant's NIP number
regon:
type: string
description: Merchant's REGON number
customerStatus:
type: string
description: Merchant's status
example: Verified
enum:
- Verified
- Not verified
extendedStatus:
type: string
description: Extended merchant's status
enum:
- Inactive
- Active
- Blocked
securitySchemes:
basicAuth:
description: This is the default authenticatio
# --- truncated at 32 KB (32 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/przelewy24/refs/heads/main/openapi/przelewy24-marketplace-management-api-api-openapi.yml