Changes for page bnpl-payment-order
Last modified by thomas hedstrom on 2026/07/08 14:57
From empty
To version 24.1
edited by thomas hedstrom
on 2026/07/08 14:57
on 2026/07/08 14:57
Change comment: There is no comment for this version
Summary
-
Page properties (6 modified, 0 added, 0 removed)
-
Attachments (0 modified, 3 added, 0 removed)
Details
- Page properties
-
- Title
-
... ... @@ -1,0 +1,1 @@ 1 +bnpl-payment-order - Parent
-
... ... @@ -1,0 +1,1 @@ 1 +Main.credit-account.api.WebHome - Author
-
... ... @@ -1,1 +1,1 @@ 1 - XWiki.XWikiGuest1 +xwiki:XWiki.thomashedstrom - Default language
-
... ... @@ -1,0 +1,1 @@ 1 +en - Tags
-
... ... @@ -1,0 +1,1 @@ 1 +px-custom-page-content - Content
-
... ... @@ -1,0 +1,580 @@ 1 +(% id="HChangelog" %) 2 += Changelog = 3 + 4 + 5 +* 2024-10-30 - Init documentation 6 +* 2026-02-17 - Request changes 7 +** Added new optional parameter for Create BnplPaymentOrder - **Instore** 8 +** Added new mandatory parameter for Post Reversal - **ReceiptReference** 9 + 10 += Swagger = 11 + 12 +[[Swagger.json-2026-06-17>>attach:Swagger_Releases-498954.txt]] 13 + 14 +(% id="HIntroduction" %) 15 += Introduction = 16 + 17 +The bnpl-payment-order API handles payment flows for multiple buy-now-pay-later services, where the customer themselves are available to choose between preferred payment method from a set of preconfigured payment options. 18 + 19 + 20 +[[image:1730445122347-474.png||height="435" width="467"]] 21 + 22 +== 1. Bnpl-payment-orders == 23 + 24 + 25 +Get the specified payment order 26 + 27 +==== 1.1 Get specific Bnpl-payment-order ==== 28 + 29 +{{code language="http" title="**Request**"}} 30 +GET /ledger/bnpl-payment-order/v1/{ownerNo}/bnpl-payment-orders/{paymentOrderId}?SellerNo={SellerNo} HTTP/1.1 31 +Host: - 32 +Authorization: Bearer<Token> 33 +Content-Type: application/json 34 + 35 +{{/code}} 36 + 37 +Payment order that has been authorized and with full RemainingAmount left 38 + 39 +{{code language="http" title="**Response**"}} 40 +HTTP/1.1 200 OK 41 +Content-Type: application/json 42 + 43 +{ 44 + "paymentOrderId": 1234567890, 45 + "status": "Authorized", 46 + "authorizationAmount": 1000.00, 47 + "remainingAmount": 1000.00, 48 + "currency": "SEK", 49 + "sellerAuthorizationId": "1234567890", 50 + "customer": { 51 + "nationalConsumerIdentifier": { 52 + "value": "YYYYMMDD-XXXX", 53 + "countryCode": "SE" 54 + }, 55 + "email": "example@payex.com", 56 + "msisdn": "+46701234567" 57 + }, 58 + "pointOfSale": "My Web Shop", 59 + "mcc": "1234", 60 + "restrictToProfiles": [ 61 + { 62 + "profileName": "BA_PartPayment", 63 + "subProfiles": [ 64 + { 65 + "subProfileName": "InstallmentAccount_3" 66 + } 67 + ] 68 + } 69 + ], 70 + "instore": false, 71 + "operations": [ 72 + { 73 + "rel": "add-reversal", 74 + "method": "POST", 75 + "href": "/ledger/bnpl-payment-order/v1/xxx/bnpl-payment-orders/1234567890/reversals" 76 + }, 77 + { 78 + "rel": "redirect", 79 + "method": "POST", 80 + "href": "/ledger/bnpl-payment-order/v1/xxx/bnpl-payment-orders/1234567890/redirect" 81 + }, 82 + { 83 + "rel": "cancel-authorize", 84 + "method": "POST", 85 + "href": "/ledger/bnpl-payment-order/v1/xxx/bnpl-payment-orders/1234567890/cancel-authorize" 86 + }, 87 + { 88 + "rel": "add-capture", 89 + "method": "POST", 90 + "href": "/ledger/bnpl-payment-order/v1/xxx/bnpl-payment-orders/1234567890/captures" 91 + } 92 + ] 93 +} 94 +{{/code}} 95 + 96 + 97 + 98 +**Query paramters** 99 + 100 +(% class="table-bordered table-striped" %) 101 +|=Name |=Required |=Description 102 +|SellerNo |False | 103 + 104 + 105 +**Possible problems** 106 + 107 +(% class="table-bordered table-striped" %) 108 +|=Http status |=Problem type |=Description 109 +|400 |validation |occurs if any of the input validation fails, it is described in the problem which parameter that failed the validation 110 +|404 |not-found |the targeted resource was not found, cause could be both that it's not accessible with provided information/credentials or that the resource doesn't exist 111 +|500 |fatal |an unexpected error has occurred 112 + 113 +==== 1.2 Create Bnpl-payment-order ==== 114 + 115 +Create a payment order to begin authorization process 116 + 117 +{{code language="http" title="**Request**"}} 118 +POST /ledger/bnpl-payment-order/v1/{ownerNo}/bnpl-payment-orders HTTP/1.1 119 +Host: - 120 +Authorization: Bearer<Token> 121 +Content-Type: application/json 122 + 123 +{ 124 + "authorizationAmount": 1000.00, 125 + "currency": "SEK", 126 + "sellerAuthorizationId": "1234567890", 127 + "customer": { 128 + "nationalConsumerIdentifier": { 129 + "value": "YYYYMMDD-XXXX", 130 + "countryCode": "SE" 131 + }, 132 + "email": "example@payex.com", 133 + "msisdn": "+46701234567" 134 + }, 135 + "pointOfSale": "My Web Shop", 136 + "mcc": "1234", 137 + "restrictToProfiles": [ 138 + { 139 + "profileName": "BA_PartPayment", 140 + "subProfiles": [ 141 + { 142 + "subProfileName": "InstallmentAccount_3" 143 + } 144 + ] 145 + } 146 + ], 147 + "instore": false 148 +} 149 +{{/code}} 150 + 151 + 152 +**Request object specification** 153 + 154 +(% class="table-bordered table-striped" %) 155 +|=Property |=Data type|=Format|=Required|=Description 156 +|authorizationAmount |number |Type: double 157 +Max: 100000000 158 +Min: 0 |Yes |The authorization amount, can't have more than 2 decimal places 159 +|currency |string |((( 160 +* SEK 161 +* NOK 162 +* DKK 163 +* EUR 164 +)))|Yes | 165 +|sellerAuthorizationId |string |Pattern: ^[a-zA-Z0-9#_:@.\-åäöÅÄÖ]{1,}$ |Yes |The seller's unique identifier of the authorize/payment order 166 +|=customer |object | |Yes | 167 +|= nationalConsumerIdentifier |object | |Yes | 168 +| value |string | |Yes |The identifier - SSN, Personnummer, CPR, d-nummer, temporary identification number etc. Uniquely identifies the consumer. Visit developer.payex.com for information about supported national identifier format 169 +| countryCode |string |Pattern: SE~|NO~|DK~|FI |Yes |The country code for the identifier value property. Valid values are 'SE', 'NO', 'DK', 'FI'. ~[~[ISO 3166-1 alpha-2>>url:https://sv.wikipedia.org/wiki/ISO_3166]] 170 +| email |string |Pattern: ^[^;\xA0\xD0\─@<>\p{Cc}]+@(?!\.)(?!.*\.\.)(?:[^;\xA0\xD0\─@<>\p{Cc}]+\.[^;\xA0\xD0\─@<>\p{Cc}]+~|\~[~[A-Fa-f\d\:]+\])(?<!\.)$ |Yes |Email to the customer 171 +| msisdn |string |Pattern: ^[+]{1}\d{4,14}$ |No |Phone number to the customer 172 +|pointOfSale |string |Pattern: ^[\u0020-\u003A \u003C-\u007E \u00A0-\u00FF \u2019]*$ |Yes |Trade name of the point of sale. Will be displayed to end customer. 173 +|mcc |string | |No |Merchant Category Code 174 +|=restrictToProfiles |array | |No | 175 +| profileName |string | |Yes |Profile identifier 176 +|= subProfiles |array | |No | 177 +| subProfileName |string | |Yes |Sub profile identifier 178 +|instore |boolean | |No |This request is an Instore bnpl order 179 + 180 +Newly created payment order with restricted account profiles 181 + 182 +{{code language="http" title="**Response**"}} 183 +HTTP/1.1 201 Created 184 +Content-Type: application/json 185 + 186 +{ 187 + "paymentOrderId": 1234567890, 188 + "status": "Created", 189 + "authorizationAmount": 1000.00, 190 + "remainingAmount": 0, 191 + "currency": "SEK", 192 + "sellerAuthorizationId": "1234567890", 193 + "customer": { 194 + "nationalConsumerIdentifier": { 195 + "value": "YYYYMMDD-XXXX", 196 + "countryCode": "SE" 197 + }, 198 + "email": "example@payex.com", 199 + "msisdn": "+46701234567" 200 + }, 201 + "pointOfSale": "My Web Shop", 202 + "mcc": "1234", 203 + "restrictToProfiles": [ 204 + { 205 + "profileName": "BA_PartPayment", 206 + "subProfiles": [ 207 + { 208 + "subProfileName": "InstallmentAccount_3" 209 + } 210 + ] 211 + } 212 + ], 213 + "instore": false, 214 + "operations": [ 215 + { 216 + "rel": "add-reversal", 217 + "method": "POST", 218 + "href": "/ledger/bnpl-payment-order/v1/xxx/bnpl-payment-orders/1234567890/reversals" 219 + }, 220 + { 221 + "rel": "redirect", 222 + "method": "POST", 223 + "href": "/ledger/bnpl-payment-order/v1/xxx/bnpl-payment-orders/1234567890/redirect" 224 + }, 225 + { 226 + "rel": "cancel-authorize", 227 + "method": "POST", 228 + "href": "/ledger/bnpl-payment-order/v1/xxx/bnpl-payment-orders/1234567890/cancel-authorize" 229 + }, 230 + { 231 + "rel": "add-capture", 232 + "method": "POST", 233 + "href": "/ledger/bnpl-payment-order/v1/xxx/bnpl-payment-orders/1234567890/captures" 234 + } 235 + ], 236 + "@id": "/ledger/bnpl-payment-order/v1/xxx/bnpl-payment-orders/1234567890" 237 +} 238 +{{/code}} 239 + 240 + 241 +**Possible problems** 242 + 243 +(% class="table-bordered table-striped" %) 244 +|=Http status |=Problem type |=Description 245 +|409 |identifier-already-in-use |SellerAuthorizationId [xxxx] already exists. It is used for payment order with PaymentOrderId [yyyyy] 246 +|409 |no-available-profiles |No profiles configured. 247 +|400 |validation |occurs if any of the input validation fails, it is described in the problem which parameter that failed the validation 248 +|404 |not-found |the targeted resource was not found, cause could be both that it's not accessible with provided information/credentials or that the resource doesn't exist 249 +|500 |fatal |an unexpected error has occurred 250 + 251 + 252 +**Response object specification** 253 + 254 +(% class="table-bordered table-striped" %) 255 +|=Property |=Data type|=Format|=Description 256 +|authorizationAmount |number |Type: double 257 +Max: 100000000 258 +Min: 0 |The authorization amount, can't have more than 2 decimal places 259 +|currency |string |((( 260 +* SEK 261 +* NOK 262 +* DKK 263 +* EUR 264 +)))| 265 +|sellerAuthorizationId |string |Pattern: ^[a-zA-Z0-9#_:@.\-åäöÅÄÖ]{1,}$ |The seller's unique identifier of the authorize/payment order 266 +|=customer |object | | 267 +|= nationalConsumerIdentifier |object | | 268 +| value |string | |The identifier - SSN, Personnummer, CPR, d-nummer, temporary identification number etc. Uniquely identifies the consumer. Visit developer.payex.com for information about supported national identifier format 269 +| countryCode |string |Pattern: SE~|NO~|DK~|FI |The country code for the identifier value property. Valid values are 'SE', 'NO', 'DK', 'FI'. ~[~[ISO 3166-1 alpha-2>>url:https://sv.wikipedia.org/wiki/ISO_3166]] 270 +| email |string |Pattern: ^[^;\xA0\xD0\─@<>\p{Cc}]+@(?!\.)(?!.*\.\.)(?:[^;\xA0\xD0\─@<>\p{Cc}]+\.[^;\xA0\xD0\─@<>\p{Cc}]+~|\~[~[A-Fa-f\d\:]+\])(?<!\.)$ |Email to the customer 271 +| msisdn |string |Pattern: ^[+]{1}\d{4,14}$ |Phone number to the customer 272 +|pointOfSale |string |Pattern: ^[\u0020-\u003A \u003C-\u007E \u00A0-\u00FF \u2019]*$ |Trade name of the point of sale. Will be displayed to end customer. 273 +|mcc |string | |Merchant Category Code 274 +|=restrictToProfiles |array | | 275 +| profileName |string | |Profile identifier 276 +|= subProfiles |array | | 277 +| subProfileName |string | |Sub profile identifier 278 +|instore |boolean | |This request is an Instore bnpl order 279 +|paymentOrderId |number |Type: int64 |PaymentOrderId aka ExternalReservationId 280 +|status |string |((( 281 +* Created 282 +* Rejected 283 +* Canceled 284 +* Authorized 285 +* Failed 286 +)))| 287 +|remainingAmount |number |Type: double 288 +Max: 100000000 289 +Min: 0 |Remaining amount of the authorize. If amount is zero then the authorize has already been fully used, cancelled or the payment order has not been authorized yet 290 +|operations |array | |List of operations that is possible to perform on the current resource, read more about the ~[~[hypermedia part of the response>>https://developer.payex.com/xwiki/wiki/developer/view/Main/Invoicing/ledger-api-general-docs/restful-pattern-guideline/#HHyper-mediaresponse]] 291 +|@id |string | |Uri identifier of the current resource 292 + 293 +== 2. Cancel-authorize == 294 + 295 + 296 +==== 2.1 Create Cancel-authorize ==== 297 + 298 +This operation is for removing any remaining amount of an already completed authorization. Already captured amount is unaffected. 299 + 300 +{{code language="http" title="**Request**"}} 301 +POST /ledger/bnpl-payment-order/v1/{ownerNo}/bnpl-payment-orders/{paymentOrderId}/cancel-authorize HTTP/1.1 302 +Host: - 303 +Authorization: Bearer<Token> 304 +Content-Type: application/json 305 + 306 +{ 307 +} 308 +{{/code}} 309 + 310 + 311 + 312 +{{code language="http" title="**Response**"}} 313 +HTTP/1.1 204 NO CONTENT 314 +Content-Type: application/json 315 + 316 +{} 317 +{{/code}} 318 + 319 + 320 +**Possible problems** 321 + 322 +(% class="table-bordered table-striped" %) 323 +|=Http status |=Problem type |=Description 324 +|404 |not-found |the targeted resource was not found, cause could be both that it's not accessible with provided information/credentials or that the resource doesn't exist 325 +|500 |fatal |an unexpected error has occurred 326 + 327 +== 3. Captures == 328 + 329 + 330 +==== 3.1 Create Capture ==== 331 + 332 +Perform a capture to solidify the purchase for this payment order. Multiple captures can be done for one payment order as long as we have RemainingAmount left on the order. 333 + 334 +{{code language="http" title="**Request**"}} 335 +POST /ledger/bnpl-payment-order/v1/{ownerNo}/bnpl-payment-orders/{paymentOrderId}/captures HTTP/1.1 336 +Host: - 337 +Authorization: Bearer<Token> 338 +Content-Type: application/json 339 + 340 +{ 341 + "amount": 1000.00, 342 + "currency": "SEK", 343 + "orderLines": [ 344 + { 345 + "itemDescription": "Phone", 346 + "amount": 1000.00 347 + } 348 + ], 349 + "sellerTransactionId": "Example-seller-123", 350 + "receiptReference": "Example-receipt-Phone" 351 +} 352 +{{/code}} 353 + 354 + 355 +**Request object specification** 356 + 357 +(% class="table-bordered table-striped" %) 358 +|=Property |=Data type|=Format|=Required|=Description 359 +|amount |number |Type: double 360 +Max: 100000000 361 +Min: 0 |Yes |The total amount 362 +|currency |string |((( 363 +* SEK 364 +* NOK 365 +* DKK 366 +* EUR 367 +)))|Yes | 368 +|=orderLines |array | |Yes | 369 +| itemDescription |string |Pattern: ^[\u0020-\u003A \u003C-\u007E \u00A0-\u00FF \u2019]*$ |Yes |Name or description of an individual item in the capture 370 +| amount |number |Type: double 371 +Max: 100000000 372 +Min: 0 |Yes |Price of an individual item in the capture 373 +|sellerTransactionId |string |Pattern: ^[a-zA-Z0-9#_:@.\-åäöÅÄÖ]{1,}$ |Yes |The seller's unique identifier of the capture 374 +|receiptReference |string |Pattern: ^[a-zA-Z0-9#_:@.\-]{1,}$ |Yes |A receipt reference meaningful for the consumer 375 + 376 +Capture example with one item in the order line 377 + 378 +{{code language="http" title="**Response**"}} 379 +HTTP/1.1 201 Created 380 +Content-Type: application/json 381 + 382 +{ 383 + "captureId": 1234, 384 + "amount": 1000.00, 385 + "currency": "SEK", 386 + "orderLines": [ 387 + { 388 + "itemDescription": "Phone", 389 + "amount": 1000.00 390 + } 391 + ], 392 + "sellerTransactionId": "Example-seller-123", 393 + "receiptReference": "Example-receipt-Phone", 394 + "@id": "https://example.com/capture/1234" 395 +} 396 +{{/code}} 397 + 398 + 399 +**Possible problems** 400 + 401 +(% class="table-bordered table-striped" %) 402 +|=Http status |=Problem type |=Description 403 +|400 |validation |occurs if any of the input validation fails, it is described in the problem which parameter that failed the validation 404 +|404 |not-found |the targeted resource was not found, cause could be both that it's not accessible with provided information/credentials or that the resource doesn't exist 405 +|409 |currency-not-supported |Currency for this capture is invalid for this payment order, make sure it match with currency specified at order creation 406 +|409 |identifier-already-in-use |SellerTransactionId [xxxx] already exists. It is used in the capture transaction with CaptureId [yyyy] 407 +|422 |corrupt-resource |Performed action may or may not have been completed but result was corrupted or incomplete. Read details for more information. 408 +|500 |fatal |an unexpected error has occurred 409 + 410 + 411 +**Response object specification** 412 + 413 +(% class="table-bordered table-striped" %) 414 +|=Property |=Data type|=Format|=Description 415 +|amount |number |Type: double 416 +Max: 100000000 417 +Min: 0 |The total amount 418 +|currency |string |((( 419 +* SEK 420 +* NOK 421 +* DKK 422 +* EUR 423 +)))| 424 +|=orderLines |array | | 425 +| itemDescription |string |Pattern: ^[\u0020-\u003A \u003C-\u007E \u00A0-\u00FF \u2019]*$ |Name or description of an individual item in the capture 426 +| amount |number |Type: double 427 +Max: 100000000 428 +Min: 0 |Price of an individual item in the capture 429 +|sellerTransactionId |string |Pattern: ^[a-zA-Z0-9#_:@.\-åäöÅÄÖ]{1,}$ |The seller's unique identifier of the capture 430 +|receiptReference |string |Pattern: ^[a-zA-Z0-9#_:@.\-]{1,}$ |A receipt reference meaningful for the consumer 431 +|captureId |number |Type: int64 432 +Pattern: ^[a-zA-Z0-9\-]{1,}$ |Identifier of the capture 433 +|@id |string | |Uri identifier of the current resource 434 + 435 +== 4. Reversals == 436 + 437 + 438 +==== 4.1 Create Reversal ==== 439 + 440 +Can only reverse captures from this payment order 441 + 442 +{{code language="http" title="**Request**"}} 443 +POST /ledger/bnpl-payment-order/v1/{ownerNo}/bnpl-payment-orders/{paymentOrderId}/reversals HTTP/1.1 444 +Host: - 445 +Authorization: Bearer<Token> 446 +Content-Type: application/json 447 + 448 +{ 449 + "amount": 1000.00, 450 + "currency": "SEK", 451 + "sellerTransactionId": "123455679", 452 + "receiptReference": "Example-receipt-Phone" 453 +} 454 +{{/code}} 455 + 456 + 457 +**Request object specification** 458 + 459 +(% class="table-bordered table-striped" %) 460 +|=Property |=Data type|=Format|=Required|=Description 461 +|amount |number |Type: double 462 +Max: 100000000 463 +Min: 0 |Yes |The total amount to reverse 464 +|currency |string |((( 465 +* SEK 466 +* NOK 467 +* DKK 468 +* EUR 469 +)))|Yes | 470 +|sellerTransactionId |string |Pattern: ^[a-zA-Z0-9#_:@.\-åäöÅÄÖ]{1,}$ |Yes |The sellers unique identifier of the reversal 471 +|receiptReference |string |Pattern: ^[a-zA-Z0-9#_:@.\-]{1,}$ |Yes |A receipt reference meaningful for the consumer 472 + 473 +Reversal of 1000SEK 474 + 475 +{{code language="http" title="**Response**"}} 476 +HTTP/1.1 201 Created 477 +Content-Type: application/json 478 + 479 +{ 480 + "reversalId": "12345678", 481 + "amount": 1000.00, 482 + "currency": "SEK", 483 + "sellerTransactionId": "123455679", 484 + "receiptReference": "Example-receipt-Phone" 485 +} 486 +{{/code}} 487 + 488 + 489 +**Possible problems** 490 + 491 +(% class="table-bordered table-striped" %) 492 +|=Http status |=Problem type |=Description 493 +|409 |identifier-already-in-use |SellerTransactionId [xxxx] already exists. It is used in the capture transaction with ReversalId [yyyy] 494 +|400 |validation |occurs if any of the input validation fails, it is described in the problem which parameter that failed the validation 495 +|404 |not-found |the targeted resource was not found, cause could be both that it's not accessible with provided information/credentials or that the resource doesn't exist 496 +|500 |fatal |an unexpected error has occurred 497 + 498 + 499 +**Response object specification** 500 + 501 +(% class="table-bordered table-striped" %) 502 +|=Property |=Data type|=Format|=Description 503 +|amount |number |Type: double 504 +Max: 100000000 505 +Min: 0 |The total amount to reverse 506 +|currency |string |((( 507 +* SEK 508 +* NOK 509 +* DKK 510 +* EUR 511 +)))| 512 +|sellerTransactionId |string |Pattern: ^[a-zA-Z0-9#_:@.\-åäöÅÄÖ]{1,}$ |The sellers unique identifier of the reversal 513 +|receiptReference |string |Pattern: ^[a-zA-Z0-9#_:@.\-]{1,}$ |A receipt reference meaningful for the consumer 514 +|reversalId |string | |Identifier of the reversal 515 +|@id |string | |Uri identifier of the current resource 516 + 517 +== 5. Redirect == 518 + 519 + 520 +==== 5.1 Create Redirect ==== 521 + 522 +While payee is progressing the authorization implementor should start poll the parent resource BnplPaymentOrder for updates 523 + 524 +{{code language="http" title="**Request**"}} 525 +POST /ledger/bnpl-payment-order/v1/{ownerNo}/bnpl-payment-orders/{paymentOrderId}/redirect HTTP/1.1 526 +Host: - 527 +Authorization: Bearer<Token> 528 +Content-Type: application/json 529 + 530 +{ 531 + "returnUrl": "https://www.back-to-my-web-shop.com", 532 + "redirectOptions": { 533 + "languageCode": "SV" 534 + } 535 +} 536 +{{/code}} 537 + 538 + 539 +**Request object specification** 540 + 541 +(% class="table-bordered table-striped" %) 542 +|=Property |=Data type|=Format|=Required|=Description 543 +|returnUrl |string | |Yes |Url to return the end user to after process is completed or cancelled 544 +|=redirectOptions |object | |Yes | 545 +| languageCode |string |((( 546 +* EN 547 +* SV 548 +* NO 549 +* DA 550 +)))|Yes | 551 + 552 +Example response containing redirect info for the chosen payment method 553 + 554 +{{code language="http" title="**Response**"}} 555 +HTTP/1.1 200 OK 556 +Content-Type: application/json 557 + 558 +{ 559 + "redirectUrl": "https://www.open-chosen-payment-method-example.com" 560 +} 561 +{{/code}} 562 + 563 + 564 +**Possible problems** 565 + 566 +(% class="table-bordered table-striped" %) 567 +|=Http status |=Problem type |=Description 568 +|500 |fatal |an unexpected error has occurred 569 +|404 |not-found |the targeted resource was not found, cause could be both that it's not accessible with provided information/credentials or that the resource doesn't exist 570 +|400 |validation |occurs if any of the input validation fails, it is described in the problem which parameter that failed the validation 571 +|409 |invalid-state |Invalid state of payment order for redirect 572 + 573 + 574 +**Response object specification** 575 + 576 +(% class="table-bordered table-striped" %) 577 +|=Property |=Data type|=Format|=Description 578 +|redirectUrl |string | |Url to redirect the end user to 579 + 580 +{{display reference="developer:Main.Invoicing.ledger-api-general-docs.api-section-problems.WebHome"/}}
- Swagger_Releases-498954.txt
-
- Author
-
... ... @@ -1,0 +1,1 @@ 1 +xwiki:XWiki.thomashedstrom - Size
-
... ... @@ -1,0 +1,1 @@ 1 +48.2 KB - Content
-
... ... @@ -1,0 +1,1225 @@ 1 +{ 2 + "openapi": "3.0.1", 3 + "info": { 4 + "title": "Bnpl Payment Order API 1.0", 5 + "description": "", 6 + "contact": { 7 + "name": "PayEx" 8 + }, 9 + "version": "1.0" 10 + }, 11 + "paths": { 12 + "/ledger/bnpl-payment-order/v1/{ownerNo}/bnpl-payment-orders": { 13 + "post": { 14 + "tags": [ 15 + "BnplPaymentOrder" 16 + ], 17 + "summary": "Create a payment order", 18 + "description": "Create a payment order to begin authorization process", 19 + "parameters": [ 20 + { 21 + "name": "ownerNo", 22 + "in": "path", 23 + "required": true, 24 + "schema": { 25 + "type": "string" 26 + } 27 + }, 28 + { 29 + "name": "SellerNo", 30 + "in": "query", 31 + "schema": { 32 + "type": "string" 33 + } 34 + } 35 + ], 36 + "requestBody": { 37 + "content": { 38 + "application/json": { 39 + "schema": { 40 + "$ref": "#/components/schemas/V1.BnplPaymentOrders.BnplPaymentOrdersResourceRequest" 41 + }, 42 + "example": "{\r\n \"authorizationAmount\": 1000.00,\r\n \"currency\": \"SEK\",\r\n \"sellerAuthorizationId\": \"1234567890\",\r\n \"customer\": {\r\n \"nationalConsumerIdentifier\": {\r\n \"value\": \"YYYYMMDD-XXXX\",\r\n \"countryCode\": \"SE\"\r\n },\r\n \"email\": \"example@payex.com\",\r\n \"msisdn\": \"\\u002B46701234567\"\r\n },\r\n \"pointOfSale\": \"My Web Shop\",\r\n \"mcc\": \"1234\",\r\n \"restrictToProfiles\": [\r\n {\r\n \"profileName\": \"BA_PartPayment\",\r\n \"subProfiles\": [\r\n {\r\n \"subProfileName\": \"InstallmentAccount_3\"\r\n }\r\n ]\r\n }\r\n ],\r\n \"instore\": false\r\n}" 43 + }, 44 + "text/json": { 45 + "schema": { 46 + "$ref": "#/components/schemas/V1.BnplPaymentOrders.BnplPaymentOrdersResourceRequest" 47 + } 48 + }, 49 + "application/*+json": { 50 + "schema": { 51 + "$ref": "#/components/schemas/V1.BnplPaymentOrders.BnplPaymentOrdersResourceRequest" 52 + } 53 + } 54 + } 55 + }, 56 + "responses": { 57 + "201": { 58 + "description": "Created", 59 + "content": { 60 + "application/json": { 61 + "schema": { 62 + "$ref": "#/components/schemas/V1.BnplPaymentOrders.BnplPaymentOrdersResource" 63 + }, 64 + "examples": { 65 + "Created": { 66 + "description": "Newly created payment order with restricted account profiles", 67 + "value": "{\r\n \"paymentOrderId\": 1234567890,\r\n \"status\": \"Created\",\r\n \"authorizationAmount\": 1000.00,\r\n \"remainingAmount\": 0,\r\n \"currency\": \"SEK\",\r\n \"sellerAuthorizationId\": \"1234567890\",\r\n \"customer\": {\r\n \"nationalConsumerIdentifier\": {\r\n \"value\": \"YYYYMMDD-XXXX\",\r\n \"countryCode\": \"SE\"\r\n },\r\n \"email\": \"example@payex.com\",\r\n \"msisdn\": \"\\u002B46701234567\"\r\n },\r\n \"pointOfSale\": \"My Web Shop\",\r\n \"mcc\": \"1234\",\r\n \"restrictToProfiles\": [\r\n {\r\n \"profileName\": \"BA_PartPayment\",\r\n \"subProfiles\": [\r\n {\r\n \"subProfileName\": \"InstallmentAccount_3\"\r\n }\r\n ]\r\n }\r\n ],\r\n \"instore\": false,\r\n \"operations\": [\r\n {\r\n \"rel\": \"add-reversal\",\r\n \"method\": \"POST\",\r\n \"href\": \"/ledger/bnpl-payment-order/v1/xxx/bnpl-payment-orders/1234567890/reversals\"\r\n },\r\n {\r\n \"rel\": \"redirect\",\r\n \"method\": \"POST\",\r\n \"href\": \"/ledger/bnpl-payment-order/v1/xxx/bnpl-payment-orders/1234567890/redirect\"\r\n },\r\n {\r\n \"rel\": \"cancel-authorize\",\r\n \"method\": \"POST\",\r\n \"href\": \"/ledger/bnpl-payment-order/v1/xxx/bnpl-payment-orders/1234567890/cancel-authorize\"\r\n },\r\n {\r\n \"rel\": \"add-capture\",\r\n \"method\": \"POST\",\r\n \"href\": \"/ledger/bnpl-payment-order/v1/xxx/bnpl-payment-orders/1234567890/captures\"\r\n }\r\n ],\r\n \"@id\": \"/ledger/bnpl-payment-order/v1/xxx/bnpl-payment-orders/1234567890\"\r\n}" 68 + } 69 + } 70 + } 71 + } 72 + }, 73 + "409": { 74 + "description": "Conflict", 75 + "content": { 76 + "application/json": { 77 + "examples": { 78 + "identifier-already-in-use": { 79 + "description": "SellerAuthorizationId [xxxx] already exists. It is used for payment order with PaymentOrderId [yyyyy]", 80 + "value": "{\r\n \"type\": \"identifier-already-in-use\",\r\n \"title\": \"Problem title\",\r\n \"status\": 409,\r\n \"detail\": \"Problem details\",\r\n \"instance\": \"/traceId/e7e47c48-4a22-426e-9746-0dc0ea21d73a\"\r\n}" 81 + }, 82 + "no-available-profiles": { 83 + "description": "No profiles configured.", 84 + "value": "{\r\n \"type\": \"no-available-profiles\",\r\n \"title\": \"Problem title\",\r\n \"status\": 409,\r\n \"detail\": \"Problem details\",\r\n \"instance\": \"/traceId/e7e47c48-4a22-426e-9746-0dc0ea21d73a\"\r\n}" 85 + } 86 + } 87 + } 88 + } 89 + }, 90 + "400": { 91 + "description": "BadRequest", 92 + "content": { 93 + "application/json": { 94 + "examples": { 95 + "validation": { 96 + "description": "occurs if any of the input validation fails, it is described in the problem which parameter that failed the validation", 97 + "value": "{\r\n \"type\": \"validation\",\r\n \"title\": \"Problem title\",\r\n \"status\": 400,\r\n \"detail\": \"Problem details\",\r\n \"instance\": \"/traceId/e7e47c48-4a22-426e-9746-0dc0ea21d73a\"\r\n}" 98 + } 99 + } 100 + } 101 + } 102 + }, 103 + "404": { 104 + "description": "NotFound", 105 + "content": { 106 + "application/json": { 107 + "examples": { 108 + "not-found": { 109 + "description": "the targeted resource was not found, cause could be both that it's not accessible with provided information/credentials or that the resource doesn't exist", 110 + "value": "{\r\n \"type\": \"not-found\",\r\n \"title\": \"Problem title\",\r\n \"status\": 404,\r\n \"detail\": \"Problem details\",\r\n \"instance\": \"/traceId/e7e47c48-4a22-426e-9746-0dc0ea21d73a\"\r\n}" 111 + } 112 + } 113 + } 114 + } 115 + }, 116 + "500": { 117 + "description": "InternalServerError", 118 + "content": { 119 + "application/json": { 120 + "examples": { 121 + "fatal": { 122 + "description": "an unexpected error has occurred", 123 + "value": "{\r\n \"type\": \"fatal\",\r\n \"title\": \"Problem title\",\r\n \"status\": 500,\r\n \"detail\": \"Problem details\",\r\n \"instance\": \"/traceId/e7e47c48-4a22-426e-9746-0dc0ea21d73a\"\r\n}" 124 + } 125 + } 126 + } 127 + } 128 + } 129 + } 130 + } 131 + }, 132 + "/ledger/bnpl-payment-order/v1/{ownerNo}/bnpl-payment-orders/{paymentOrderId}/cancel-authorize": { 133 + "post": { 134 + "tags": [ 135 + "BnplPaymentOrder" 136 + ], 137 + "summary": "Cancellation of the authorize", 138 + "description": "This operation is for removing any remaining amount of an already completed authorization. Already captured amount is unaffected.", 139 + "parameters": [ 140 + { 141 + "name": "ownerNo", 142 + "in": "path", 143 + "required": true, 144 + "schema": { 145 + "type": "string" 146 + } 147 + }, 148 + { 149 + "name": "SellerNo", 150 + "in": "query", 151 + "schema": { 152 + "type": "string" 153 + } 154 + }, 155 + { 156 + "name": "paymentOrderId", 157 + "in": "path", 158 + "required": true, 159 + "schema": { 160 + "type": "integer", 161 + "format": "int64" 162 + } 163 + } 164 + ], 165 + "responses": { 166 + "204": { 167 + "description": "No Content", 168 + "content": { 169 + "application/json": { 170 + "schema": { 171 + "$ref": "#/components/schemas/PayEx.LF.Api.Common.RepositoryResources.Results.RepositoryNoContentResult" 172 + } 173 + } 174 + } 175 + }, 176 + "404": { 177 + "description": "NotFound", 178 + "content": { 179 + "application/json": { 180 + "examples": { 181 + "not-found": { 182 + "description": "the targeted resource was not found, cause could be both that it's not accessible with provided information/credentials or that the resource doesn't exist", 183 + "value": "{\r\n \"type\": \"not-found\",\r\n \"title\": \"Problem title\",\r\n \"status\": 404,\r\n \"detail\": \"Problem details\",\r\n \"instance\": \"/traceId/e7e47c48-4a22-426e-9746-0dc0ea21d73a\"\r\n}" 184 + } 185 + } 186 + } 187 + } 188 + }, 189 + "500": { 190 + "description": "InternalServerError", 191 + "content": { 192 + "application/json": { 193 + "examples": { 194 + "fatal": { 195 + "description": "an unexpected error has occurred", 196 + "value": "{\r\n \"type\": \"fatal\",\r\n \"title\": \"Problem title\",\r\n \"status\": 500,\r\n \"detail\": \"Problem details\",\r\n \"instance\": \"/traceId/e7e47c48-4a22-426e-9746-0dc0ea21d73a\"\r\n}" 197 + } 198 + } 199 + } 200 + } 201 + } 202 + } 203 + } 204 + }, 205 + "/ledger/bnpl-payment-order/v1/{ownerNo}/bnpl-payment-orders/{paymentOrderId}/captures": { 206 + "post": { 207 + "tags": [ 208 + "BnplPaymentOrder" 209 + ], 210 + "summary": "Create a capture", 211 + "description": "Perform a capture to solidify the purchase for this payment order. Multiple captures can be done for one payment order as long as we have RemainingAmount left on the order.", 212 + "parameters": [ 213 + { 214 + "name": "ownerNo", 215 + "in": "path", 216 + "required": true, 217 + "schema": { 218 + "type": "string" 219 + } 220 + }, 221 + { 222 + "name": "SellerNo", 223 + "in": "query", 224 + "schema": { 225 + "type": "string" 226 + } 227 + }, 228 + { 229 + "name": "paymentOrderId", 230 + "in": "path", 231 + "required": true, 232 + "schema": { 233 + "type": "integer", 234 + "format": "int64" 235 + } 236 + } 237 + ], 238 + "requestBody": { 239 + "content": { 240 + "application/json": { 241 + "schema": { 242 + "$ref": "#/components/schemas/V1.BnplPaymentOrders.Captures.CaptureRequest" 243 + }, 244 + "example": "{\r\n \"amount\": 1000.00,\r\n \"currency\": \"SEK\",\r\n \"orderLines\": [\r\n {\r\n \"itemDescription\": \"Phone\",\r\n \"amount\": 1000.00\r\n }\r\n ],\r\n \"sellerTransactionId\": \"Example-seller-123\",\r\n \"receiptReference\": \"Example-receipt-Phone\"\r\n}" 245 + }, 246 + "text/json": { 247 + "schema": { 248 + "$ref": "#/components/schemas/V1.BnplPaymentOrders.Captures.CaptureRequest" 249 + } 250 + }, 251 + "application/*+json": { 252 + "schema": { 253 + "$ref": "#/components/schemas/V1.BnplPaymentOrders.Captures.CaptureRequest" 254 + } 255 + } 256 + } 257 + }, 258 + "responses": { 259 + "201": { 260 + "description": "Created", 261 + "content": { 262 + "application/json": { 263 + "schema": { 264 + "$ref": "#/components/schemas/V1.BnplPaymentOrders.Captures.CaptureResource" 265 + }, 266 + "examples": { 267 + "Created": { 268 + "description": "Capture example with one item in the order line", 269 + "value": "{\r\n \"captureId\": 1234,\r\n \"amount\": 1000.00,\r\n \"currency\": \"SEK\",\r\n \"orderLines\": [\r\n {\r\n \"itemDescription\": \"Phone\",\r\n \"amount\": 1000.00\r\n }\r\n ],\r\n \"sellerTransactionId\": \"Example-seller-123\",\r\n \"receiptReference\": \"Example-receipt-Phone\",\r\n \"@id\": \"https://example.com/capture/1234\"\r\n}" 270 + } 271 + } 272 + } 273 + } 274 + }, 275 + "400": { 276 + "description": "BadRequest", 277 + "content": { 278 + "application/json": { 279 + "examples": { 280 + "validation": { 281 + "description": "occurs if any of the input validation fails, it is described in the problem which parameter that failed the validation", 282 + "value": "{\r\n \"type\": \"validation\",\r\n \"title\": \"Problem title\",\r\n \"status\": 400,\r\n \"detail\": \"Problem details\",\r\n \"instance\": \"/traceId/e7e47c48-4a22-426e-9746-0dc0ea21d73a\"\r\n}" 283 + } 284 + } 285 + } 286 + } 287 + }, 288 + "404": { 289 + "description": "NotFound", 290 + "content": { 291 + "application/json": { 292 + "examples": { 293 + "not-found": { 294 + "description": "the targeted resource was not found, cause could be both that it's not accessible with provided information/credentials or that the resource doesn't exist", 295 + "value": "{\r\n \"type\": \"not-found\",\r\n \"title\": \"Problem title\",\r\n \"status\": 404,\r\n \"detail\": \"Problem details\",\r\n \"instance\": \"/traceId/e7e47c48-4a22-426e-9746-0dc0ea21d73a\"\r\n}" 296 + } 297 + } 298 + } 299 + } 300 + }, 301 + "409": { 302 + "description": "Conflict", 303 + "content": { 304 + "application/json": { 305 + "examples": { 306 + "currency-not-supported": { 307 + "description": "Currency for this capture is invalid for this payment order, make sure it match with currency specified at order creation", 308 + "value": "{\r\n \"type\": \"currency-not-supported\",\r\n \"title\": \"Problem title\",\r\n \"status\": 409,\r\n \"detail\": \"Problem details\",\r\n \"instance\": \"/traceId/e7e47c48-4a22-426e-9746-0dc0ea21d73a\"\r\n}" 309 + }, 310 + "identifier-already-in-use": { 311 + "description": "SellerTransactionId [xxxx] already exists. It is used in the capture transaction with CaptureId [yyyy]", 312 + "value": "{\r\n \"type\": \"identifier-already-in-use\",\r\n \"title\": \"Problem title\",\r\n \"status\": 409,\r\n \"detail\": \"Problem details\",\r\n \"instance\": \"/traceId/e7e47c48-4a22-426e-9746-0dc0ea21d73a\"\r\n}" 313 + } 314 + } 315 + } 316 + } 317 + }, 318 + "422": { 319 + "description": "UnprocessableEntity", 320 + "content": { 321 + "application/json": { 322 + "examples": { 323 + "corrupt-resource": { 324 + "description": "Performed action may or may not have been completed but result was corrupted or incomplete. Read details for more information.", 325 + "value": "{\r\n \"type\": \"corrupt-resource\",\r\n \"title\": \"Problem title\",\r\n \"status\": 422,\r\n \"detail\": \"Problem details\",\r\n \"instance\": \"/traceId/e7e47c48-4a22-426e-9746-0dc0ea21d73a\"\r\n}" 326 + } 327 + } 328 + } 329 + } 330 + }, 331 + "500": { 332 + "description": "InternalServerError", 333 + "content": { 334 + "application/json": { 335 + "examples": { 336 + "fatal": { 337 + "description": "an unexpected error has occurred", 338 + "value": "{\r\n \"type\": \"fatal\",\r\n \"title\": \"Problem title\",\r\n \"status\": 500,\r\n \"detail\": \"Problem details\",\r\n \"instance\": \"/traceId/e7e47c48-4a22-426e-9746-0dc0ea21d73a\"\r\n}" 339 + } 340 + } 341 + } 342 + } 343 + } 344 + } 345 + } 346 + }, 347 + "/ledger/bnpl-payment-order/v1/{ownerNo}/bnpl-payment-orders/{paymentOrderId}/reversals": { 348 + "post": { 349 + "tags": [ 350 + "BnplPaymentOrder" 351 + ], 352 + "summary": "Reverse a capture", 353 + "description": "Can only reverse captures from this payment order", 354 + "parameters": [ 355 + { 356 + "name": "ownerNo", 357 + "in": "path", 358 + "required": true, 359 + "schema": { 360 + "type": "string" 361 + } 362 + }, 363 + { 364 + "name": "SellerNo", 365 + "in": "query", 366 + "schema": { 367 + "type": "string" 368 + } 369 + }, 370 + { 371 + "name": "paymentOrderId", 372 + "in": "path", 373 + "required": true, 374 + "schema": { 375 + "type": "integer", 376 + "format": "int64" 377 + } 378 + } 379 + ], 380 + "requestBody": { 381 + "content": { 382 + "application/json": { 383 + "schema": { 384 + "$ref": "#/components/schemas/V1.BnplPaymentOrders.Reversals.ReversalRequest" 385 + }, 386 + "example": "{\r\n \"amount\": 1000.00,\r\n \"currency\": \"SEK\",\r\n \"sellerTransactionId\": \"123455679\",\r\n \"receiptReference\": \"Example-receipt-Phone\"\r\n}" 387 + }, 388 + "text/json": { 389 + "schema": { 390 + "$ref": "#/components/schemas/V1.BnplPaymentOrders.Reversals.ReversalRequest" 391 + } 392 + }, 393 + "application/*+json": { 394 + "schema": { 395 + "$ref": "#/components/schemas/V1.BnplPaymentOrders.Reversals.ReversalRequest" 396 + } 397 + } 398 + } 399 + }, 400 + "responses": { 401 + "201": { 402 + "description": "Created", 403 + "content": { 404 + "application/json": { 405 + "schema": { 406 + "$ref": "#/components/schemas/V1.BnplPaymentOrders.Reversals.ReversalResource" 407 + }, 408 + "examples": { 409 + "Created": { 410 + "description": "Reversal of 1000SEK", 411 + "value": "{\r\n \"reversalId\": \"12345678\",\r\n \"amount\": 1000.00,\r\n \"currency\": \"SEK\",\r\n \"sellerTransactionId\": \"123455679\",\r\n \"receiptReference\": \"Example-receipt-Phone\"\r\n}" 412 + } 413 + } 414 + } 415 + } 416 + }, 417 + "409": { 418 + "description": "Conflict", 419 + "content": { 420 + "application/json": { 421 + "examples": { 422 + "identifier-already-in-use": { 423 + "description": "SellerTransactionId [xxxx] already exists. It is used in the capture transaction with ReversalId [yyyy]", 424 + "value": "{\r\n \"type\": \"identifier-already-in-use\",\r\n \"title\": \"Problem title\",\r\n \"status\": 409,\r\n \"detail\": \"Problem details\",\r\n \"instance\": \"/traceId/e7e47c48-4a22-426e-9746-0dc0ea21d73a\"\r\n}" 425 + } 426 + } 427 + } 428 + } 429 + }, 430 + "400": { 431 + "description": "BadRequest", 432 + "content": { 433 + "application/json": { 434 + "examples": { 435 + "validation": { 436 + "description": "occurs if any of the input validation fails, it is described in the problem which parameter that failed the validation", 437 + "value": "{\r\n \"type\": \"validation\",\r\n \"title\": \"Problem title\",\r\n \"status\": 400,\r\n \"detail\": \"Problem details\",\r\n \"instance\": \"/traceId/e7e47c48-4a22-426e-9746-0dc0ea21d73a\"\r\n}" 438 + } 439 + } 440 + } 441 + } 442 + }, 443 + "404": { 444 + "description": "NotFound", 445 + "content": { 446 + "application/json": { 447 + "examples": { 448 + "not-found": { 449 + "description": "the targeted resource was not found, cause could be both that it's not accessible with provided information/credentials or that the resource doesn't exist", 450 + "value": "{\r\n \"type\": \"not-found\",\r\n \"title\": \"Problem title\",\r\n \"status\": 404,\r\n \"detail\": \"Problem details\",\r\n \"instance\": \"/traceId/e7e47c48-4a22-426e-9746-0dc0ea21d73a\"\r\n}" 451 + } 452 + } 453 + } 454 + } 455 + }, 456 + "500": { 457 + "description": "InternalServerError", 458 + "content": { 459 + "application/json": { 460 + "examples": { 461 + "fatal": { 462 + "description": "an unexpected error has occurred", 463 + "value": "{\r\n \"type\": \"fatal\",\r\n \"title\": \"Problem title\",\r\n \"status\": 500,\r\n \"detail\": \"Problem details\",\r\n \"instance\": \"/traceId/e7e47c48-4a22-426e-9746-0dc0ea21d73a\"\r\n}" 464 + } 465 + } 466 + } 467 + } 468 + } 469 + } 470 + } 471 + }, 472 + "/ledger/bnpl-payment-order/v1/{ownerNo}/bnpl-payment-orders/{paymentOrderId}": { 473 + "get": { 474 + "tags": [ 475 + "BnplPaymentOrder" 476 + ], 477 + "summary": "Get PaymentOrder", 478 + "description": "Get the specified payment order", 479 + "operationId": "PayEx.AR.BnplPaymentOrder.Api.Resources.BnplPaymentOrder.V1.BnplPaymentOrders.BnplPaymentOrdersController_Id_GetSingle", 480 + "parameters": [ 481 + { 482 + "name": "ownerNo", 483 + "in": "path", 484 + "required": true, 485 + "schema": { 486 + "type": "string" 487 + } 488 + }, 489 + { 490 + "name": "SellerNo", 491 + "in": "query", 492 + "schema": { 493 + "type": "string" 494 + } 495 + }, 496 + { 497 + "name": "paymentOrderId", 498 + "in": "path", 499 + "required": true, 500 + "schema": { 501 + "type": "integer", 502 + "format": "int64" 503 + } 504 + } 505 + ], 506 + "responses": { 507 + "200": { 508 + "description": "OK", 509 + "content": { 510 + "application/json": { 511 + "schema": { 512 + "$ref": "#/components/schemas/V1.BnplPaymentOrders.BnplPaymentOrdersResource" 513 + }, 514 + "examples": { 515 + "OK": { 516 + "description": "Payment order that has been authorized and with full RemainingAmount left", 517 + "value": "{\r\n \"paymentOrderId\": 1234567890,\r\n \"status\": \"Authorized\",\r\n \"authorizationAmount\": 1000.00,\r\n \"remainingAmount\": 1000.00,\r\n \"currency\": \"SEK\",\r\n \"sellerAuthorizationId\": \"1234567890\",\r\n \"customer\": {\r\n \"nationalConsumerIdentifier\": {\r\n \"value\": \"YYYYMMDD-XXXX\",\r\n \"countryCode\": \"SE\"\r\n },\r\n \"email\": \"example@payex.com\",\r\n \"msisdn\": \"\\u002B46701234567\"\r\n },\r\n \"pointOfSale\": \"My Web Shop\",\r\n \"mcc\": \"1234\",\r\n \"restrictToProfiles\": [\r\n {\r\n \"profileName\": \"BA_PartPayment\",\r\n \"subProfiles\": [\r\n {\r\n \"subProfileName\": \"InstallmentAccount_3\"\r\n }\r\n ]\r\n }\r\n ],\r\n \"instore\": false,\r\n \"operations\": [\r\n {\r\n \"rel\": \"add-reversal\",\r\n \"method\": \"POST\",\r\n \"href\": \"/ledger/bnpl-payment-order/v1/xxx/bnpl-payment-orders/1234567890/reversals\"\r\n },\r\n {\r\n \"rel\": \"redirect\",\r\n \"method\": \"POST\",\r\n \"href\": \"/ledger/bnpl-payment-order/v1/xxx/bnpl-payment-orders/1234567890/redirect\"\r\n },\r\n {\r\n \"rel\": \"cancel-authorize\",\r\n \"method\": \"POST\",\r\n \"href\": \"/ledger/bnpl-payment-order/v1/xxx/bnpl-payment-orders/1234567890/cancel-authorize\"\r\n },\r\n {\r\n \"rel\": \"add-capture\",\r\n \"method\": \"POST\",\r\n \"href\": \"/ledger/bnpl-payment-order/v1/xxx/bnpl-payment-orders/1234567890/captures\"\r\n }\r\n ]\r\n}" 518 + } 519 + } 520 + } 521 + } 522 + }, 523 + "400": { 524 + "description": "BadRequest", 525 + "content": { 526 + "application/json": { 527 + "examples": { 528 + "validation": { 529 + "description": "occurs if any of the input validation fails, it is described in the problem which parameter that failed the validation", 530 + "value": "{\r\n \"type\": \"validation\",\r\n \"title\": \"Problem title\",\r\n \"status\": 400,\r\n \"detail\": \"Problem details\",\r\n \"instance\": \"/traceId/e7e47c48-4a22-426e-9746-0dc0ea21d73a\"\r\n}" 531 + } 532 + } 533 + } 534 + } 535 + }, 536 + "404": { 537 + "description": "NotFound", 538 + "content": { 539 + "application/json": { 540 + "examples": { 541 + "not-found": { 542 + "description": "the targeted resource was not found, cause could be both that it's not accessible with provided information/credentials or that the resource doesn't exist", 543 + "value": "{\r\n \"type\": \"not-found\",\r\n \"title\": \"Problem title\",\r\n \"status\": 404,\r\n \"detail\": \"Problem details\",\r\n \"instance\": \"/traceId/e7e47c48-4a22-426e-9746-0dc0ea21d73a\"\r\n}" 544 + } 545 + } 546 + } 547 + } 548 + }, 549 + "500": { 550 + "description": "InternalServerError", 551 + "content": { 552 + "application/json": { 553 + "examples": { 554 + "fatal": { 555 + "description": "an unexpected error has occurred", 556 + "value": "{\r\n \"type\": \"fatal\",\r\n \"title\": \"Problem title\",\r\n \"status\": 500,\r\n \"detail\": \"Problem details\",\r\n \"instance\": \"/traceId/e7e47c48-4a22-426e-9746-0dc0ea21d73a\"\r\n}" 557 + } 558 + } 559 + } 560 + } 561 + } 562 + } 563 + } 564 + }, 565 + "/ledger/bnpl-payment-order/v1/{ownerNo}/bnpl-payment-orders/{paymentOrderId}/redirect": { 566 + "post": { 567 + "tags": [ 568 + "BnplPaymentOrder" 569 + ], 570 + "summary": "Get the page to the bnpl payment order site for the payee to complete an authorization", 571 + "description": "While payee is progressing the authorization implementor should start poll the parent resource BnplPaymentOrder for updates", 572 + "parameters": [ 573 + { 574 + "name": "ownerNo", 575 + "in": "path", 576 + "required": true, 577 + "schema": { 578 + "type": "string" 579 + } 580 + }, 581 + { 582 + "name": "SellerNo", 583 + "in": "query", 584 + "schema": { 585 + "type": "string" 586 + } 587 + }, 588 + { 589 + "name": "paymentOrderId", 590 + "in": "path", 591 + "required": true, 592 + "schema": { 593 + "type": "integer", 594 + "format": "int64" 595 + } 596 + } 597 + ], 598 + "requestBody": { 599 + "content": { 600 + "application/json": { 601 + "schema": { 602 + "$ref": "#/components/schemas/V1.BnplPaymentOrders.Operations.Redirect.RedirectRequest" 603 + }, 604 + "example": "{\r\n \"returnUrl\": \"https://www.back-to-my-web-shop.com\",\r\n \"redirectOptions\": {\r\n \"languageCode\": \"SV\"\r\n }\r\n}" 605 + }, 606 + "text/json": { 607 + "schema": { 608 + "$ref": "#/components/schemas/V1.BnplPaymentOrders.Operations.Redirect.RedirectRequest" 609 + } 610 + }, 611 + "application/*+json": { 612 + "schema": { 613 + "$ref": "#/components/schemas/V1.BnplPaymentOrders.Operations.Redirect.RedirectRequest" 614 + } 615 + } 616 + } 617 + }, 618 + "responses": { 619 + "200": { 620 + "description": "OK", 621 + "content": { 622 + "application/json": { 623 + "schema": { 624 + "$ref": "#/components/schemas/V1.BnplPaymentOrders.Operations.Redirect.RedirectResponse" 625 + }, 626 + "examples": { 627 + "OK": { 628 + "description": "Example response containing redirect info for the chosen payment method", 629 + "value": "{\r\n \"redirectUrl\": \"https://www.open-chosen-payment-method-example.com\"\r\n}" 630 + } 631 + } 632 + } 633 + } 634 + }, 635 + "500": { 636 + "description": "InternalServerError", 637 + "content": { 638 + "application/json": { 639 + "examples": { 640 + "fatal": { 641 + "description": "an unexpected error has occurred", 642 + "value": "{\r\n \"type\": \"fatal\",\r\n \"title\": \"Problem title\",\r\n \"status\": 500,\r\n \"detail\": \"Problem details\",\r\n \"instance\": \"/traceId/e7e47c48-4a22-426e-9746-0dc0ea21d73a\"\r\n}" 643 + } 644 + } 645 + } 646 + } 647 + }, 648 + "404": { 649 + "description": "NotFound", 650 + "content": { 651 + "application/json": { 652 + "examples": { 653 + "not-found": { 654 + "description": "the targeted resource was not found, cause could be both that it's not accessible with provided information/credentials or that the resource doesn't exist", 655 + "value": "{\r\n \"type\": \"not-found\",\r\n \"title\": \"Problem title\",\r\n \"status\": 404,\r\n \"detail\": \"Problem details\",\r\n \"instance\": \"/traceId/e7e47c48-4a22-426e-9746-0dc0ea21d73a\"\r\n}" 656 + } 657 + } 658 + } 659 + } 660 + }, 661 + "400": { 662 + "description": "BadRequest", 663 + "content": { 664 + "application/json": { 665 + "examples": { 666 + "validation": { 667 + "description": "occurs if any of the input validation fails, it is described in the problem which parameter that failed the validation", 668 + "value": "{\r\n \"type\": \"validation\",\r\n \"title\": \"Problem title\",\r\n \"status\": 400,\r\n \"detail\": \"Problem details\",\r\n \"instance\": \"/traceId/e7e47c48-4a22-426e-9746-0dc0ea21d73a\"\r\n}" 669 + } 670 + } 671 + } 672 + } 673 + }, 674 + "409": { 675 + "description": "Conflict", 676 + "content": { 677 + "application/json": { 678 + "examples": { 679 + "invalid-state": { 680 + "description": "Invalid state of payment order for redirect", 681 + "value": "{\r\n \"type\": \"invalid-state\",\r\n \"title\": \"Problem title\",\r\n \"status\": 409,\r\n \"detail\": \"Problem details\",\r\n \"instance\": \"/traceId/e7e47c48-4a22-426e-9746-0dc0ea21d73a\"\r\n}" 682 + } 683 + } 684 + } 685 + } 686 + } 687 + } 688 + } 689 + } 690 + }, 691 + "components": { 692 + "schemas": { 693 + "PayEx.AR.BnplPaymentOrder.Api.Business.Entities.Currency": { 694 + "enum": [ 695 + "SEK", 696 + "NOK", 697 + "DKK", 698 + "EUR" 699 + ], 700 + "type": "string" 701 + }, 702 + "PayEx.AR.BnplPaymentOrder.Api.Business.Entities.LanguageCode": { 703 + "enum": [ 704 + "EN", 705 + "SV", 706 + "NO", 707 + "DA" 708 + ], 709 + "type": "string" 710 + }, 711 + "PayEx.AR.BnplPaymentOrder.Api.Business.Entities.NationalConsumerIdentifier": { 712 + "required": [ 713 + "countryCode", 714 + "value" 715 + ], 716 + "type": "object", 717 + "properties": { 718 + "value": { 719 + "minLength": 1, 720 + "type": "string", 721 + "description": "The identifier - SSN, Personnummer, CPR, d-nummer, temporary identification number etc. Uniquely identifies the consumer. Visit developer.payex.com for information about supported national identifier format" 722 + }, 723 + "countryCode": { 724 + "minLength": 1, 725 + "pattern": "SE|NO|DK|FI", 726 + "type": "string", 727 + "description": "The country code for the identifier value property. Valid values are 'SE', 'NO', 'DK', 'FI'. [[ISO 3166-1 alpha-2>>url:https://sv.wikipedia.org/wiki/ISO_3166]]" 728 + } 729 + }, 730 + "additionalProperties": false 731 + }, 732 + "PayEx.AR.BnplPaymentOrder.Api.Business.Entities.PaymentOrderStatus": { 733 + "enum": [ 734 + "Created", 735 + "Rejected", 736 + "Canceled", 737 + "Authorized", 738 + "Failed" 739 + ], 740 + "type": "string", 741 + "description": "Server 2 Server status" 742 + }, 743 + "PayEx.LF.Api.Common.RepositoryResources.IOperation": { 744 + "type": "object", 745 + "properties": { 746 + "rel": { 747 + "type": "string", 748 + "nullable": true, 749 + "readOnly": true 750 + }, 751 + "method": { 752 + "type": "string", 753 + "nullable": true, 754 + "readOnly": true 755 + }, 756 + "href": { 757 + "type": "string", 758 + "nullable": true 759 + } 760 + }, 761 + "additionalProperties": false 762 + }, 763 + "PayEx.LF.Api.Common.RepositoryResources.Results.RepositoryNoContentResult": { 764 + "type": "object", 765 + "additionalProperties": false 766 + }, 767 + "V1.BnplPaymentOrders.BnplPaymentOrdersResource": { 768 + "required": [ 769 + "authorizationAmount", 770 + "currency", 771 + "customer", 772 + "paymentOrderId", 773 + "pointOfSale", 774 + "sellerAuthorizationId", 775 + "status" 776 + ], 777 + "type": "object", 778 + "properties": { 779 + "authorizationAmount": { 780 + "maximum": 100000000, 781 + "minimum": 0.01, 782 + "type": "number", 783 + "description": "The authorization amount, can't have more than 2 decimal places", 784 + "format": "double" 785 + }, 786 + "currency": { 787 + "$ref": "#/components/schemas/PayEx.AR.BnplPaymentOrder.Api.Business.Entities.Currency" 788 + }, 789 + "sellerAuthorizationId": { 790 + "maxLength": 50, 791 + "minLength": 1, 792 + "pattern": "^[a-zA-Z0-9#_:@.\\-åäöÅÄÖ]{1,}$", 793 + "type": "string", 794 + "description": "The seller's unique identifier of the authorize/payment order" 795 + }, 796 + "customer": { 797 + "$ref": "#/components/schemas/V1.BnplPaymentOrders.Customer" 798 + }, 799 + "pointOfSale": { 800 + "maxLength": 50, 801 + "minLength": 0, 802 + "pattern": "^[\\u0020-\\u003A \\u003C-\\u007E \\u00A0-\\u00FF \\u2019]*$", 803 + "type": "string", 804 + "description": "Trade name of the point of sale. Will be displayed to end customer." 805 + }, 806 + "mcc": { 807 + "type": "string", 808 + "description": "Merchant Category Code", 809 + "nullable": true 810 + }, 811 + "restrictToProfiles": { 812 + "type": "array", 813 + "items": { 814 + "$ref": "#/components/schemas/V1.BnplPaymentOrders.Profile" 815 + }, 816 + "description": "Filter configured profiles on exposed payment options. Leave as Null to show all configured payment options", 817 + "nullable": true 818 + }, 819 + "instore": { 820 + "type": "boolean", 821 + "description": "This request is an Instore bnpl order", 822 + "nullable": true 823 + }, 824 + "paymentOrderId": { 825 + "type": "integer", 826 + "description": "PaymentOrderId aka ExternalReservationId", 827 + "format": "int64" 828 + }, 829 + "status": { 830 + "$ref": "#/components/schemas/PayEx.AR.BnplPaymentOrder.Api.Business.Entities.PaymentOrderStatus" 831 + }, 832 + "remainingAmount": { 833 + "maximum": 100000000, 834 + "minimum": 0, 835 + "type": "number", 836 + "description": "Remaining amount of the authorize. If amount is zero then the authorize has already been fully used, cancelled or the payment order has not been authorized yet", 837 + "format": "double" 838 + }, 839 + "operations": { 840 + "type": "array", 841 + "items": { 842 + "$ref": "#/components/schemas/PayEx.LF.Api.Common.RepositoryResources.IOperation" 843 + }, 844 + "nullable": true 845 + }, 846 + "@id": { 847 + "type": "string", 848 + "nullable": true 849 + } 850 + }, 851 + "additionalProperties": false 852 + }, 853 + "V1.BnplPaymentOrders.BnplPaymentOrdersResourceRequest": { 854 + "required": [ 855 + "authorizationAmount", 856 + "currency", 857 + "customer", 858 + "pointOfSale", 859 + "sellerAuthorizationId" 860 + ], 861 + "type": "object", 862 + "properties": { 863 + "authorizationAmount": { 864 + "maximum": 100000000, 865 + "minimum": 0.01, 866 + "type": "number", 867 + "description": "The authorization amount, can't have more than 2 decimal places", 868 + "format": "double" 869 + }, 870 + "currency": { 871 + "$ref": "#/components/schemas/PayEx.AR.BnplPaymentOrder.Api.Business.Entities.Currency" 872 + }, 873 + "sellerAuthorizationId": { 874 + "maxLength": 50, 875 + "minLength": 1, 876 + "pattern": "^[a-zA-Z0-9#_:@.\\-åäöÅÄÖ]{1,}$", 877 + "type": "string", 878 + "description": "The seller's unique identifier of the authorize/payment order" 879 + }, 880 + "customer": { 881 + "$ref": "#/components/schemas/V1.BnplPaymentOrders.Customer" 882 + }, 883 + "pointOfSale": { 884 + "maxLength": 50, 885 + "minLength": 0, 886 + "pattern": "^[\\u0020-\\u003A \\u003C-\\u007E \\u00A0-\\u00FF \\u2019]*$", 887 + "type": "string", 888 + "description": "Trade name of the point of sale. Will be displayed to end customer." 889 + }, 890 + "mcc": { 891 + "type": "string", 892 + "description": "Merchant Category Code", 893 + "nullable": true 894 + }, 895 + "restrictToProfiles": { 896 + "type": "array", 897 + "items": { 898 + "$ref": "#/components/schemas/V1.BnplPaymentOrders.Profile" 899 + }, 900 + "description": "Filter configured profiles on exposed payment options. Leave as Null to show all configured payment options", 901 + "nullable": true 902 + }, 903 + "instore": { 904 + "type": "boolean", 905 + "description": "This request is an Instore bnpl order", 906 + "nullable": true 907 + } 908 + }, 909 + "additionalProperties": false 910 + }, 911 + "V1.BnplPaymentOrders.Captures.CaptureRequest": { 912 + "required": [ 913 + "amount", 914 + "currency", 915 + "orderLines", 916 + "receiptReference", 917 + "sellerTransactionId" 918 + ], 919 + "type": "object", 920 + "properties": { 921 + "amount": { 922 + "maximum": 100000000, 923 + "minimum": 0.01, 924 + "type": "number", 925 + "description": "The total amount", 926 + "format": "double" 927 + }, 928 + "currency": { 929 + "$ref": "#/components/schemas/PayEx.AR.BnplPaymentOrder.Api.Business.Entities.Currency" 930 + }, 931 + "orderLines": { 932 + "minItems": 1, 933 + "type": "array", 934 + "items": { 935 + "$ref": "#/components/schemas/V1.BnplPaymentOrders.Captures.OrderLine" 936 + }, 937 + "description": "Specify Item/s for the captures, sum of all OrderLines must be equals with Amount in the capture" 938 + }, 939 + "sellerTransactionId": { 940 + "maxLength": 50, 941 + "minLength": 1, 942 + "pattern": "^[a-zA-Z0-9#_:@.\\-åäöÅÄÖ]{1,}$", 943 + "type": "string", 944 + "description": "The seller's unique identifier of the capture" 945 + }, 946 + "receiptReference": { 947 + "maxLength": 30, 948 + "minLength": 1, 949 + "pattern": "^[a-zA-Z0-9#_:@.\\-]{1,}$", 950 + "type": "string", 951 + "description": "A receipt reference meaningful for the consumer" 952 + } 953 + }, 954 + "additionalProperties": false 955 + }, 956 + "V1.BnplPaymentOrders.Captures.CaptureResource": { 957 + "required": [ 958 + "amount", 959 + "captureId", 960 + "currency", 961 + "orderLines", 962 + "receiptReference", 963 + "sellerTransactionId" 964 + ], 965 + "type": "object", 966 + "properties": { 967 + "amount": { 968 + "maximum": 100000000, 969 + "minimum": 0.01, 970 + "type": "number", 971 + "description": "The total amount", 972 + "format": "double" 973 + }, 974 + "currency": { 975 + "$ref": "#/components/schemas/PayEx.AR.BnplPaymentOrder.Api.Business.Entities.Currency" 976 + }, 977 + "orderLines": { 978 + "minItems": 1, 979 + "type": "array", 980 + "items": { 981 + "$ref": "#/components/schemas/V1.BnplPaymentOrders.Captures.OrderLine" 982 + }, 983 + "description": "Specify Item/s for the captures, sum of all OrderLines must be equals with Amount in the capture" 984 + }, 985 + "sellerTransactionId": { 986 + "maxLength": 50, 987 + "minLength": 1, 988 + "pattern": "^[a-zA-Z0-9#_:@.\\-åäöÅÄÖ]{1,}$", 989 + "type": "string", 990 + "description": "The seller's unique identifier of the capture" 991 + }, 992 + "receiptReference": { 993 + "maxLength": 30, 994 + "minLength": 1, 995 + "pattern": "^[a-zA-Z0-9#_:@.\\-]{1,}$", 996 + "type": "string", 997 + "description": "A receipt reference meaningful for the consumer" 998 + }, 999 + "captureId": { 1000 + "maxLength": 50, 1001 + "minLength": 1, 1002 + "pattern": "^[a-zA-Z0-9\\-]{1,}$", 1003 + "type": "integer", 1004 + "description": "Identifier of the capture", 1005 + "format": "int64" 1006 + }, 1007 + "@id": { 1008 + "type": "string", 1009 + "nullable": true 1010 + } 1011 + }, 1012 + "additionalProperties": false 1013 + }, 1014 + "V1.BnplPaymentOrders.Captures.OrderLine": { 1015 + "required": [ 1016 + "amount", 1017 + "itemDescription" 1018 + ], 1019 + "type": "object", 1020 + "properties": { 1021 + "itemDescription": { 1022 + "minLength": 1, 1023 + "pattern": "^[\\u0020-\\u003A \\u003C-\\u007E \\u00A0-\\u00FF \\u2019]*$", 1024 + "type": "string", 1025 + "description": "Name or description of an individual item in the capture" 1026 + }, 1027 + "amount": { 1028 + "maximum": 100000000, 1029 + "minimum": 0.01, 1030 + "type": "number", 1031 + "description": "Price of an individual item in the capture", 1032 + "format": "double" 1033 + } 1034 + }, 1035 + "additionalProperties": false 1036 + }, 1037 + "V1.BnplPaymentOrders.Customer": { 1038 + "required": [ 1039 + "nationalConsumerIdentifier" 1040 + ], 1041 + "type": "object", 1042 + "properties": { 1043 + "nationalConsumerIdentifier": { 1044 + "$ref": "#/components/schemas/PayEx.AR.BnplPaymentOrder.Api.Business.Entities.NationalConsumerIdentifier" 1045 + }, 1046 + "email": { 1047 + "maxLength": 254, 1048 + "minLength": 5, 1049 + "pattern": "^[^;\\xA0\\xD0\\─@<>\\p{Cc}]+@(?!\\.)(?!.*\\.\\.)(?:[^;\\xA0\\xD0\\─@<>\\p{Cc}]+\\.[^;\\xA0\\xD0\\─@<>\\p{Cc}]+|\\[[A-Fa-f\\d\\:]+\\])(?<!\\.)$", 1050 + "type": "string", 1051 + "description": "Email to the customer" 1052 + }, 1053 + "msisdn": { 1054 + "maxLength": 15, 1055 + "minLength": 5, 1056 + "pattern": "^[+]{1}\\d{4,14}$", 1057 + "type": "string", 1058 + "description": "Phone number to the customer", 1059 + "nullable": true 1060 + } 1061 + }, 1062 + "additionalProperties": false 1063 + }, 1064 + "V1.BnplPaymentOrders.Operations.Redirect.RedirectOptions": { 1065 + "required": [ 1066 + "languageCode" 1067 + ], 1068 + "type": "object", 1069 + "properties": { 1070 + "languageCode": { 1071 + "$ref": "#/components/schemas/PayEx.AR.BnplPaymentOrder.Api.Business.Entities.LanguageCode" 1072 + } 1073 + }, 1074 + "additionalProperties": false 1075 + }, 1076 + "V1.BnplPaymentOrders.Operations.Redirect.RedirectRequest": { 1077 + "required": [ 1078 + "redirectOptions", 1079 + "returnUrl" 1080 + ], 1081 + "type": "object", 1082 + "properties": { 1083 + "returnUrl": { 1084 + "minLength": 1, 1085 + "type": "string", 1086 + "description": "Url to return the end user to after process is completed or cancelled" 1087 + }, 1088 + "redirectOptions": { 1089 + "$ref": "#/components/schemas/V1.BnplPaymentOrders.Operations.Redirect.RedirectOptions" 1090 + } 1091 + }, 1092 + "additionalProperties": false 1093 + }, 1094 + "V1.BnplPaymentOrders.Operations.Redirect.RedirectResponse": { 1095 + "type": "object", 1096 + "properties": { 1097 + "redirectUrl": { 1098 + "type": "string", 1099 + "description": "Url to redirect the end user to", 1100 + "nullable": true 1101 + } 1102 + }, 1103 + "additionalProperties": false 1104 + }, 1105 + "V1.BnplPaymentOrders.Profile": { 1106 + "required": [ 1107 + "profileName" 1108 + ], 1109 + "type": "object", 1110 + "properties": { 1111 + "profileName": { 1112 + "minLength": 1, 1113 + "type": "string", 1114 + "description": "Profile identifier" 1115 + }, 1116 + "subProfiles": { 1117 + "type": "array", 1118 + "items": { 1119 + "$ref": "#/components/schemas/V1.BnplPaymentOrders.SubProfile" 1120 + }, 1121 + "description": "Specify possible list of sub profiles, leave as null to display all configured sub profiles", 1122 + "nullable": true 1123 + } 1124 + }, 1125 + "additionalProperties": false 1126 + }, 1127 + "V1.BnplPaymentOrders.Reversals.ReversalRequest": { 1128 + "required": [ 1129 + "amount", 1130 + "currency", 1131 + "receiptReference", 1132 + "sellerTransactionId" 1133 + ], 1134 + "type": "object", 1135 + "properties": { 1136 + "amount": { 1137 + "maximum": 100000000, 1138 + "minimum": 0.01, 1139 + "type": "number", 1140 + "description": "The total amount to reverse", 1141 + "format": "double" 1142 + }, 1143 + "currency": { 1144 + "$ref": "#/components/schemas/PayEx.AR.BnplPaymentOrder.Api.Business.Entities.Currency" 1145 + }, 1146 + "sellerTransactionId": { 1147 + "maxLength": 50, 1148 + "minLength": 1, 1149 + "pattern": "^[a-zA-Z0-9#_:@.\\-åäöÅÄÖ]{1,}$", 1150 + "type": "string", 1151 + "description": "The sellers unique identifier of the reversal" 1152 + }, 1153 + "receiptReference": { 1154 + "maxLength": 30, 1155 + "minLength": 1, 1156 + "pattern": "^[a-zA-Z0-9#_:@.\\-]{1,}$", 1157 + "type": "string", 1158 + "description": "A receipt reference meaningful for the consumer" 1159 + } 1160 + }, 1161 + "additionalProperties": false 1162 + }, 1163 + "V1.BnplPaymentOrders.Reversals.ReversalResource": { 1164 + "required": [ 1165 + "amount", 1166 + "currency", 1167 + "receiptReference", 1168 + "reversalId", 1169 + "sellerTransactionId" 1170 + ], 1171 + "type": "object", 1172 + "properties": { 1173 + "amount": { 1174 + "maximum": 100000000, 1175 + "minimum": 0.01, 1176 + "type": "number", 1177 + "description": "The total amount to reverse", 1178 + "format": "double" 1179 + }, 1180 + "currency": { 1181 + "$ref": "#/components/schemas/PayEx.AR.BnplPaymentOrder.Api.Business.Entities.Currency" 1182 + }, 1183 + "sellerTransactionId": { 1184 + "maxLength": 50, 1185 + "minLength": 1, 1186 + "pattern": "^[a-zA-Z0-9#_:@.\\-åäöÅÄÖ]{1,}$", 1187 + "type": "string", 1188 + "description": "The sellers unique identifier of the reversal" 1189 + }, 1190 + "receiptReference": { 1191 + "maxLength": 30, 1192 + "minLength": 1, 1193 + "pattern": "^[a-zA-Z0-9#_:@.\\-]{1,}$", 1194 + "type": "string", 1195 + "description": "A receipt reference meaningful for the consumer" 1196 + }, 1197 + "reversalId": { 1198 + "minLength": 1, 1199 + "type": "string", 1200 + "description": "Identifier of the reversal" 1201 + }, 1202 + "@id": { 1203 + "type": "string", 1204 + "nullable": true 1205 + } 1206 + }, 1207 + "additionalProperties": false 1208 + }, 1209 + "V1.BnplPaymentOrders.SubProfile": { 1210 + "required": [ 1211 + "subProfileName" 1212 + ], 1213 + "type": "object", 1214 + "properties": { 1215 + "subProfileName": { 1216 + "minLength": 1, 1217 + "type": "string", 1218 + "description": "Sub profile identifier" 1219 + } 1220 + }, 1221 + "additionalProperties": false 1222 + } 1223 + } 1224 + } 1225 +}
- 1730445122347-474.png
-
- Author
-
... ... @@ -1,0 +1,1 @@ 1 +xwiki:XWiki.djr - Size
-
... ... @@ -1,0 +1,1 @@ 1 +6.6 KB - Content
- Swagger_Releases-484271.txt
-
- Author
-
... ... @@ -1,0 +1,1 @@ 1 +xwiki:XWiki.djr - Size
-
... ... @@ -1,0 +1,1 @@ 1 +47.0 KB - Content
-
... ... @@ -1,0 +1,1199 @@ 1 +{ 2 + "openapi": "3.0.1", 3 + "info": { 4 + "title": "Bnpl Payment Order API 1.0", 5 + "description": "", 6 + "contact": { 7 + "name": "PayEx" 8 + }, 9 + "version": "1.0" 10 + }, 11 + "paths": { 12 + "/ledger/bnpl-payment-order/v1/{ownerNo}/bnpl-payment-orders": { 13 + "post": { 14 + "tags": [ 15 + "BnplPaymentOrder" 16 + ], 17 + "summary": "Create a payment order", 18 + "description": "Create a payment order to begin authorization process", 19 + "parameters": [ 20 + { 21 + "name": "ownerNo", 22 + "in": "path", 23 + "required": true, 24 + "schema": { 25 + "type": "string" 26 + } 27 + }, 28 + { 29 + "name": "SellerNo", 30 + "in": "query", 31 + "schema": { 32 + "type": "string" 33 + } 34 + } 35 + ], 36 + "requestBody": { 37 + "content": { 38 + "application/json": { 39 + "schema": { 40 + "$ref": "#/components/schemas/V1.BnplPaymentOrders.BnplPaymentOrdersResourceRequest" 41 + }, 42 + "example": "{\r\n \"authorizationAmount\": 1000.00,\r\n \"currency\": \"SEK\",\r\n \"sellerAuthorizationId\": \"1234567890\",\r\n \"customer\": {\r\n \"nationalConsumerIdentifier\": {\r\n \"value\": \"YYYYMMDD-XXXX\",\r\n \"countryCode\": \"SE\"\r\n },\r\n \"email\": \"example@payex.com\",\r\n \"msisdn\": \"\\u002B46701234567\"\r\n },\r\n \"pointOfSale\": \"My Web Shop\",\r\n \"mcc\": \"1234\",\r\n \"restrictToProfiles\": [\r\n {\r\n \"profileName\": \"BA_PartPayment\",\r\n \"subProfiles\": [\r\n {\r\n \"subProfileName\": \"InstallmentAccount_3\"\r\n }\r\n ]\r\n }\r\n ],\r\n \"instore\": false\r\n}" 43 + }, 44 + "text/json": { 45 + "schema": { 46 + "$ref": "#/components/schemas/V1.BnplPaymentOrders.BnplPaymentOrdersResourceRequest" 47 + } 48 + }, 49 + "application/*+json": { 50 + "schema": { 51 + "$ref": "#/components/schemas/V1.BnplPaymentOrders.BnplPaymentOrdersResourceRequest" 52 + } 53 + } 54 + } 55 + }, 56 + "responses": { 57 + "201": { 58 + "description": "Created", 59 + "content": { 60 + "application/json": { 61 + "schema": { 62 + "$ref": "#/components/schemas/V1.BnplPaymentOrders.BnplPaymentOrdersResource" 63 + }, 64 + "examples": { 65 + "Created": { 66 + "description": "Newly created payment order with restricted account profiles", 67 + "value": "{\r\n \"paymentOrderId\": 1234567890,\r\n \"status\": \"Created\",\r\n \"authorizationAmount\": 1000.00,\r\n \"remainingAmount\": 0,\r\n \"currency\": \"SEK\",\r\n \"sellerAuthorizationId\": \"1234567890\",\r\n \"customer\": {\r\n \"nationalConsumerIdentifier\": {\r\n \"value\": \"YYYYMMDD-XXXX\",\r\n \"countryCode\": \"SE\"\r\n },\r\n \"email\": \"example@payex.com\",\r\n \"msisdn\": \"\\u002B46701234567\"\r\n },\r\n \"pointOfSale\": \"My Web Shop\",\r\n \"mcc\": \"1234\",\r\n \"restrictToProfiles\": [\r\n {\r\n \"profileName\": \"BA_PartPayment\",\r\n \"subProfiles\": [\r\n {\r\n \"subProfileName\": \"InstallmentAccount_3\"\r\n }\r\n ]\r\n }\r\n ],\r\n \"instore\": false,\r\n \"operations\": [\r\n {\r\n \"rel\": \"add-reversal\",\r\n \"method\": \"POST\",\r\n \"href\": \"/ledger/bnpl-payment-order/v1/xxx/bnpl-payment-orders/1234567890/reversals\"\r\n },\r\n {\r\n \"rel\": \"redirect\",\r\n \"method\": \"POST\",\r\n \"href\": \"/ledger/bnpl-payment-order/v1/xxx/bnpl-payment-orders/1234567890/redirect\"\r\n },\r\n {\r\n \"rel\": \"cancel-authorize\",\r\n \"method\": \"POST\",\r\n \"href\": \"/ledger/bnpl-payment-order/v1/xxx/bnpl-payment-orders/1234567890/cancel-authorize\"\r\n },\r\n {\r\n \"rel\": \"add-capture\",\r\n \"method\": \"POST\",\r\n \"href\": \"/ledger/bnpl-payment-order/v1/xxx/bnpl-payment-orders/1234567890/captures\"\r\n }\r\n ],\r\n \"@id\": \"/ledger/bnpl-payment-order/v1/xxx/bnpl-payment-orders/1234567890\"\r\n}" 68 + } 69 + } 70 + } 71 + } 72 + }, 73 + "409": { 74 + "description": "Conflict", 75 + "content": { 76 + "application/json": { 77 + "examples": { 78 + "identifier-already-in-use": { 79 + "description": "SellerAuthorizationId [xxxx] already exists. It is used for payment order with PaymentOrderId [yyyyy]", 80 + "value": "{\r\n \"type\": \"identifier-already-in-use\",\r\n \"title\": \"Problem title\",\r\n \"status\": 409,\r\n \"detail\": \"Problem details\",\r\n \"instance\": \"/traceId/e7e47c48-4a22-426e-9746-0dc0ea21d73a\"\r\n}" 81 + }, 82 + "no-available-profiles": { 83 + "description": "No profiles configured.", 84 + "value": "{\r\n \"type\": \"no-available-profiles\",\r\n \"title\": \"Problem title\",\r\n \"status\": 409,\r\n \"detail\": \"Problem details\",\r\n \"instance\": \"/traceId/e7e47c48-4a22-426e-9746-0dc0ea21d73a\"\r\n}" 85 + } 86 + } 87 + } 88 + } 89 + }, 90 + "400": { 91 + "description": "BadRequest", 92 + "content": { 93 + "application/json": { 94 + "examples": { 95 + "validation": { 96 + "description": "occurs if any of the input validation fails, it is described in the problem which parameter that failed the validation", 97 + "value": "{\r\n \"type\": \"validation\",\r\n \"title\": \"Problem title\",\r\n \"status\": 400,\r\n \"detail\": \"Problem details\",\r\n \"instance\": \"/traceId/e7e47c48-4a22-426e-9746-0dc0ea21d73a\"\r\n}" 98 + } 99 + } 100 + } 101 + } 102 + }, 103 + "404": { 104 + "description": "NotFound", 105 + "content": { 106 + "application/json": { 107 + "examples": { 108 + "not-found": { 109 + "description": "the targeted resource was not found, cause could be both that it's not accessible with provided information/credentials or that the resource doesn't exist", 110 + "value": "{\r\n \"type\": \"not-found\",\r\n \"title\": \"Problem title\",\r\n \"status\": 404,\r\n \"detail\": \"Problem details\",\r\n \"instance\": \"/traceId/e7e47c48-4a22-426e-9746-0dc0ea21d73a\"\r\n}" 111 + } 112 + } 113 + } 114 + } 115 + }, 116 + "500": { 117 + "description": "InternalServerError", 118 + "content": { 119 + "application/json": { 120 + "examples": { 121 + "fatal": { 122 + "description": "an unexpected error has occurred", 123 + "value": "{\r\n \"type\": \"fatal\",\r\n \"title\": \"Problem title\",\r\n \"status\": 500,\r\n \"detail\": \"Problem details\",\r\n \"instance\": \"/traceId/e7e47c48-4a22-426e-9746-0dc0ea21d73a\"\r\n}" 124 + } 125 + } 126 + } 127 + } 128 + } 129 + } 130 + } 131 + }, 132 + "/ledger/bnpl-payment-order/v1/{ownerNo}/bnpl-payment-orders/{paymentOrderId}/cancel-authorize": { 133 + "post": { 134 + "tags": [ 135 + "BnplPaymentOrder" 136 + ], 137 + "summary": "Cancellation of the authorize", 138 + "description": "This operation is for removing any remaining amount of an already completed authorization. Already captured amount is unaffected.", 139 + "parameters": [ 140 + { 141 + "name": "ownerNo", 142 + "in": "path", 143 + "required": true, 144 + "schema": { 145 + "type": "string" 146 + } 147 + }, 148 + { 149 + "name": "SellerNo", 150 + "in": "query", 151 + "schema": { 152 + "type": "string" 153 + } 154 + }, 155 + { 156 + "name": "paymentOrderId", 157 + "in": "path", 158 + "required": true, 159 + "schema": { 160 + "type": "integer", 161 + "format": "int64" 162 + } 163 + } 164 + ], 165 + "responses": { 166 + "204": { 167 + "description": "No Content", 168 + "content": { 169 + "application/json": { 170 + "schema": { 171 + "$ref": "#/components/schemas/PayEx.LF.Api.Common.RepositoryResources.Results.RepositoryNoContentResult" 172 + } 173 + } 174 + } 175 + }, 176 + "404": { 177 + "description": "NotFound", 178 + "content": { 179 + "application/json": { 180 + "examples": { 181 + "not-found": { 182 + "description": "the targeted resource was not found, cause could be both that it's not accessible with provided information/credentials or that the resource doesn't exist", 183 + "value": "{\r\n \"type\": \"not-found\",\r\n \"title\": \"Problem title\",\r\n \"status\": 404,\r\n \"detail\": \"Problem details\",\r\n \"instance\": \"/traceId/e7e47c48-4a22-426e-9746-0dc0ea21d73a\"\r\n}" 184 + } 185 + } 186 + } 187 + } 188 + }, 189 + "500": { 190 + "description": "InternalServerError", 191 + "content": { 192 + "application/json": { 193 + "examples": { 194 + "fatal": { 195 + "description": "an unexpected error has occurred", 196 + "value": "{\r\n \"type\": \"fatal\",\r\n \"title\": \"Problem title\",\r\n \"status\": 500,\r\n \"detail\": \"Problem details\",\r\n \"instance\": \"/traceId/e7e47c48-4a22-426e-9746-0dc0ea21d73a\"\r\n}" 197 + } 198 + } 199 + } 200 + } 201 + } 202 + } 203 + } 204 + }, 205 + "/ledger/bnpl-payment-order/v1/{ownerNo}/bnpl-payment-orders/{paymentOrderId}/captures": { 206 + "post": { 207 + "tags": [ 208 + "BnplPaymentOrder" 209 + ], 210 + "summary": "Create a capture", 211 + "description": "Perform a capture to solidify the purchase for this payment order. Multiple captures can be done for one payment order as long as we have RemainingAmount left on the order.", 212 + "parameters": [ 213 + { 214 + "name": "ownerNo", 215 + "in": "path", 216 + "required": true, 217 + "schema": { 218 + "type": "string" 219 + } 220 + }, 221 + { 222 + "name": "SellerNo", 223 + "in": "query", 224 + "schema": { 225 + "type": "string" 226 + } 227 + }, 228 + { 229 + "name": "paymentOrderId", 230 + "in": "path", 231 + "required": true, 232 + "schema": { 233 + "type": "integer", 234 + "format": "int64" 235 + } 236 + } 237 + ], 238 + "requestBody": { 239 + "content": { 240 + "application/json": { 241 + "schema": { 242 + "$ref": "#/components/schemas/V1.BnplPaymentOrders.Captures.CaptureRequest" 243 + }, 244 + "example": "{\r\n \"amount\": 1000.00,\r\n \"currency\": \"SEK\",\r\n \"orderLines\": [\r\n {\r\n \"itemDescription\": \"Phone\",\r\n \"amount\": 1000.00\r\n }\r\n ],\r\n \"sellerTransactionId\": \"Example-seller-123\",\r\n \"receiptReference\": \"Example-receipt-Phone\"\r\n}" 245 + }, 246 + "text/json": { 247 + "schema": { 248 + "$ref": "#/components/schemas/V1.BnplPaymentOrders.Captures.CaptureRequest" 249 + } 250 + }, 251 + "application/*+json": { 252 + "schema": { 253 + "$ref": "#/components/schemas/V1.BnplPaymentOrders.Captures.CaptureRequest" 254 + } 255 + } 256 + } 257 + }, 258 + "responses": { 259 + "201": { 260 + "description": "Created", 261 + "content": { 262 + "application/json": { 263 + "schema": { 264 + "$ref": "#/components/schemas/V1.BnplPaymentOrders.Captures.CaptureResource" 265 + }, 266 + "examples": { 267 + "Created": { 268 + "description": "Capture example with one item in the order line", 269 + "value": "{\r\n \"captureId\": 1234,\r\n \"amount\": 1000.00,\r\n \"currency\": \"SEK\",\r\n \"orderLines\": [\r\n {\r\n \"itemDescription\": \"Phone\",\r\n \"amount\": 1000.00\r\n }\r\n ],\r\n \"sellerTransactionId\": \"Example-seller-123\",\r\n \"receiptReference\": \"Example-receipt-Phone\",\r\n \"@id\": \"https://example.com/capture/1234\"\r\n}" 270 + } 271 + } 272 + } 273 + } 274 + }, 275 + "400": { 276 + "description": "BadRequest", 277 + "content": { 278 + "application/json": { 279 + "examples": { 280 + "validation": { 281 + "description": "occurs if any of the input validation fails, it is described in the problem which parameter that failed the validation", 282 + "value": "{\r\n \"type\": \"validation\",\r\n \"title\": \"Problem title\",\r\n \"status\": 400,\r\n \"detail\": \"Problem details\",\r\n \"instance\": \"/traceId/e7e47c48-4a22-426e-9746-0dc0ea21d73a\"\r\n}" 283 + } 284 + } 285 + } 286 + } 287 + }, 288 + "404": { 289 + "description": "NotFound", 290 + "content": { 291 + "application/json": { 292 + "examples": { 293 + "not-found": { 294 + "description": "the targeted resource was not found, cause could be both that it's not accessible with provided information/credentials or that the resource doesn't exist", 295 + "value": "{\r\n \"type\": \"not-found\",\r\n \"title\": \"Problem title\",\r\n \"status\": 404,\r\n \"detail\": \"Problem details\",\r\n \"instance\": \"/traceId/e7e47c48-4a22-426e-9746-0dc0ea21d73a\"\r\n}" 296 + } 297 + } 298 + } 299 + } 300 + }, 301 + "409": { 302 + "description": "Conflict", 303 + "content": { 304 + "application/json": { 305 + "examples": { 306 + "currency-not-supported": { 307 + "description": "Currency for this capture is invalid for this payment order, make sure it match with currency specified at order creation", 308 + "value": "{\r\n \"type\": \"currency-not-supported\",\r\n \"title\": \"Problem title\",\r\n \"status\": 409,\r\n \"detail\": \"Problem details\",\r\n \"instance\": \"/traceId/e7e47c48-4a22-426e-9746-0dc0ea21d73a\"\r\n}" 309 + }, 310 + "identifier-already-in-use": { 311 + "description": "SellerTransactionId [xxxx] already exists. It is used in the capture transaction with CaptureId [yyyy]", 312 + "value": "{\r\n \"type\": \"identifier-already-in-use\",\r\n \"title\": \"Problem title\",\r\n \"status\": 409,\r\n \"detail\": \"Problem details\",\r\n \"instance\": \"/traceId/e7e47c48-4a22-426e-9746-0dc0ea21d73a\"\r\n}" 313 + } 314 + } 315 + } 316 + } 317 + }, 318 + "422": { 319 + "description": "UnprocessableEntity", 320 + "content": { 321 + "application/json": { 322 + "examples": { 323 + "corrupt-resource": { 324 + "description": "Performed action may or may not have been completed but result was corrupted or incomplete. Read details for more information.", 325 + "value": "{\r\n \"type\": \"corrupt-resource\",\r\n \"title\": \"Problem title\",\r\n \"status\": 422,\r\n \"detail\": \"Problem details\",\r\n \"instance\": \"/traceId/e7e47c48-4a22-426e-9746-0dc0ea21d73a\"\r\n}" 326 + } 327 + } 328 + } 329 + } 330 + }, 331 + "500": { 332 + "description": "InternalServerError", 333 + "content": { 334 + "application/json": { 335 + "examples": { 336 + "fatal": { 337 + "description": "an unexpected error has occurred", 338 + "value": "{\r\n \"type\": \"fatal\",\r\n \"title\": \"Problem title\",\r\n \"status\": 500,\r\n \"detail\": \"Problem details\",\r\n \"instance\": \"/traceId/e7e47c48-4a22-426e-9746-0dc0ea21d73a\"\r\n}" 339 + } 340 + } 341 + } 342 + } 343 + } 344 + } 345 + } 346 + }, 347 + "/ledger/bnpl-payment-order/v1/{ownerNo}/bnpl-payment-orders/{paymentOrderId}/reversals": { 348 + "post": { 349 + "tags": [ 350 + "BnplPaymentOrder" 351 + ], 352 + "summary": "Reverse a capture", 353 + "description": "Can only reverse captures from this payment order", 354 + "parameters": [ 355 + { 356 + "name": "ownerNo", 357 + "in": "path", 358 + "required": true, 359 + "schema": { 360 + "type": "string" 361 + } 362 + }, 363 + { 364 + "name": "SellerNo", 365 + "in": "query", 366 + "schema": { 367 + "type": "string" 368 + } 369 + }, 370 + { 371 + "name": "paymentOrderId", 372 + "in": "path", 373 + "required": true, 374 + "schema": { 375 + "type": "integer", 376 + "format": "int64" 377 + } 378 + } 379 + ], 380 + "requestBody": { 381 + "content": { 382 + "application/json": { 383 + "schema": { 384 + "$ref": "#/components/schemas/V1.BnplPaymentOrders.Reversals.ReversalRequest" 385 + }, 386 + "example": "{\r\n \"amount\": 1000.00,\r\n \"currency\": \"SEK\",\r\n \"sellerTransactionId\": \"123455679\",\r\n \"receiptReference\": \"Example-receipt-Phone\"\r\n}" 387 + }, 388 + "text/json": { 389 + "schema": { 390 + "$ref": "#/components/schemas/V1.BnplPaymentOrders.Reversals.ReversalRequest" 391 + } 392 + }, 393 + "application/*+json": { 394 + "schema": { 395 + "$ref": "#/components/schemas/V1.BnplPaymentOrders.Reversals.ReversalRequest" 396 + } 397 + } 398 + } 399 + }, 400 + "responses": { 401 + "201": { 402 + "description": "Created", 403 + "content": { 404 + "application/json": { 405 + "schema": { 406 + "$ref": "#/components/schemas/V1.BnplPaymentOrders.Reversals.ReversalResource" 407 + }, 408 + "examples": { 409 + "Created": { 410 + "description": "Reversal of 1000SEK", 411 + "value": "{\r\n \"reversalId\": \"12345678\",\r\n \"amount\": 1000.00,\r\n \"currency\": \"SEK\",\r\n \"sellerTransactionId\": \"123455679\",\r\n \"receiptReference\": \"Example-receipt-Phone\"\r\n}" 412 + } 413 + } 414 + } 415 + } 416 + }, 417 + "409": { 418 + "description": "Conflict", 419 + "content": { 420 + "application/json": { 421 + "examples": { 422 + "identifier-already-in-use": { 423 + "description": "SellerTransactionId [xxxx] already exists. It is used in the capture transaction with ReversalId [yyyy]", 424 + "value": "{\r\n \"type\": \"identifier-already-in-use\",\r\n \"title\": \"Problem title\",\r\n \"status\": 409,\r\n \"detail\": \"Problem details\",\r\n \"instance\": \"/traceId/e7e47c48-4a22-426e-9746-0dc0ea21d73a\"\r\n}" 425 + } 426 + } 427 + } 428 + } 429 + }, 430 + "400": { 431 + "description": "BadRequest", 432 + "content": { 433 + "application/json": { 434 + "examples": { 435 + "validation": { 436 + "description": "occurs if any of the input validation fails, it is described in the problem which parameter that failed the validation", 437 + "value": "{\r\n \"type\": \"validation\",\r\n \"title\": \"Problem title\",\r\n \"status\": 400,\r\n \"detail\": \"Problem details\",\r\n \"instance\": \"/traceId/e7e47c48-4a22-426e-9746-0dc0ea21d73a\"\r\n}" 438 + } 439 + } 440 + } 441 + } 442 + }, 443 + "404": { 444 + "description": "NotFound", 445 + "content": { 446 + "application/json": { 447 + "examples": { 448 + "not-found": { 449 + "description": "the targeted resource was not found, cause could be both that it's not accessible with provided information/credentials or that the resource doesn't exist", 450 + "value": "{\r\n \"type\": \"not-found\",\r\n \"title\": \"Problem title\",\r\n \"status\": 404,\r\n \"detail\": \"Problem details\",\r\n \"instance\": \"/traceId/e7e47c48-4a22-426e-9746-0dc0ea21d73a\"\r\n}" 451 + } 452 + } 453 + } 454 + } 455 + }, 456 + "500": { 457 + "description": "InternalServerError", 458 + "content": { 459 + "application/json": { 460 + "examples": { 461 + "fatal": { 462 + "description": "an unexpected error has occurred", 463 + "value": "{\r\n \"type\": \"fatal\",\r\n \"title\": \"Problem title\",\r\n \"status\": 500,\r\n \"detail\": \"Problem details\",\r\n \"instance\": \"/traceId/e7e47c48-4a22-426e-9746-0dc0ea21d73a\"\r\n}" 464 + } 465 + } 466 + } 467 + } 468 + } 469 + } 470 + } 471 + }, 472 + "/ledger/bnpl-payment-order/v1/{ownerNo}/bnpl-payment-orders/{paymentOrderId}": { 473 + "get": { 474 + "tags": [ 475 + "BnplPaymentOrder" 476 + ], 477 + "summary": "Get PaymentOrder", 478 + "description": "Get the specified payment order", 479 + "operationId": "PayEx.AR.BnplPaymentOrder.Api.Resources.BnplPaymentOrder.V1.BnplPaymentOrders.BnplPaymentOrdersController_Id_GetSingle", 480 + "parameters": [ 481 + { 482 + "name": "ownerNo", 483 + "in": "path", 484 + "required": true, 485 + "schema": { 486 + "type": "string" 487 + } 488 + }, 489 + { 490 + "name": "SellerNo", 491 + "in": "query", 492 + "schema": { 493 + "type": "string" 494 + } 495 + }, 496 + { 497 + "name": "paymentOrderId", 498 + "in": "path", 499 + "required": true, 500 + "schema": { 501 + "type": "integer", 502 + "format": "int64" 503 + } 504 + } 505 + ], 506 + "responses": { 507 + "200": { 508 + "description": "OK", 509 + "content": { 510 + "application/json": { 511 + "schema": { 512 + "$ref": "#/components/schemas/V1.BnplPaymentOrders.BnplPaymentOrdersResource" 513 + }, 514 + "examples": { 515 + "OK": { 516 + "description": "Payment order that has been authorized and with full RemainingAmount left", 517 + "value": "{\r\n \"paymentOrderId\": 1234567890,\r\n \"status\": \"Authorized\",\r\n \"authorizationAmount\": 1000.00,\r\n \"remainingAmount\": 1000.00,\r\n \"currency\": \"SEK\",\r\n \"sellerAuthorizationId\": \"1234567890\",\r\n \"customer\": {\r\n \"nationalConsumerIdentifier\": {\r\n \"value\": \"YYYYMMDD-XXXX\",\r\n \"countryCode\": \"SE\"\r\n },\r\n \"email\": \"example@payex.com\",\r\n \"msisdn\": \"\\u002B46701234567\"\r\n },\r\n \"pointOfSale\": \"My Web Shop\",\r\n \"mcc\": \"1234\",\r\n \"restrictToProfiles\": [\r\n {\r\n \"profileName\": \"BA_PartPayment\",\r\n \"subProfiles\": [\r\n {\r\n \"subProfileName\": \"InstallmentAccount_3\"\r\n }\r\n ]\r\n }\r\n ],\r\n \"instore\": false,\r\n \"operations\": [\r\n {\r\n \"rel\": \"add-reversal\",\r\n \"method\": \"POST\",\r\n \"href\": \"/ledger/bnpl-payment-order/v1/xxx/bnpl-payment-orders/1234567890/reversals\"\r\n },\r\n {\r\n \"rel\": \"redirect\",\r\n \"method\": \"POST\",\r\n \"href\": \"/ledger/bnpl-payment-order/v1/xxx/bnpl-payment-orders/1234567890/redirect\"\r\n },\r\n {\r\n \"rel\": \"cancel-authorize\",\r\n \"method\": \"POST\",\r\n \"href\": \"/ledger/bnpl-payment-order/v1/xxx/bnpl-payment-orders/1234567890/cancel-authorize\"\r\n },\r\n {\r\n \"rel\": \"add-capture\",\r\n \"method\": \"POST\",\r\n \"href\": \"/ledger/bnpl-payment-order/v1/xxx/bnpl-payment-orders/1234567890/captures\"\r\n }\r\n ]\r\n}" 518 + } 519 + } 520 + } 521 + } 522 + }, 523 + "400": { 524 + "description": "BadRequest", 525 + "content": { 526 + "application/json": { 527 + "examples": { 528 + "validation": { 529 + "description": "occurs if any of the input validation fails, it is described in the problem which parameter that failed the validation", 530 + "value": "{\r\n \"type\": \"validation\",\r\n \"title\": \"Problem title\",\r\n \"status\": 400,\r\n \"detail\": \"Problem details\",\r\n \"instance\": \"/traceId/e7e47c48-4a22-426e-9746-0dc0ea21d73a\"\r\n}" 531 + } 532 + } 533 + } 534 + } 535 + }, 536 + "404": { 537 + "description": "NotFound", 538 + "content": { 539 + "application/json": { 540 + "examples": { 541 + "not-found": { 542 + "description": "the targeted resource was not found, cause could be both that it's not accessible with provided information/credentials or that the resource doesn't exist", 543 + "value": "{\r\n \"type\": \"not-found\",\r\n \"title\": \"Problem title\",\r\n \"status\": 404,\r\n \"detail\": \"Problem details\",\r\n \"instance\": \"/traceId/e7e47c48-4a22-426e-9746-0dc0ea21d73a\"\r\n}" 544 + } 545 + } 546 + } 547 + } 548 + }, 549 + "500": { 550 + "description": "InternalServerError", 551 + "content": { 552 + "application/json": { 553 + "examples": { 554 + "fatal": { 555 + "description": "an unexpected error has occurred", 556 + "value": "{\r\n \"type\": \"fatal\",\r\n \"title\": \"Problem title\",\r\n \"status\": 500,\r\n \"detail\": \"Problem details\",\r\n \"instance\": \"/traceId/e7e47c48-4a22-426e-9746-0dc0ea21d73a\"\r\n}" 557 + } 558 + } 559 + } 560 + } 561 + } 562 + } 563 + } 564 + }, 565 + "/ledger/bnpl-payment-order/v1/{ownerNo}/bnpl-payment-orders/{paymentOrderId}/redirect": { 566 + "post": { 567 + "tags": [ 568 + "BnplPaymentOrder" 569 + ], 570 + "summary": "Get the page to the bnpl payment order site for the payee to complete an authorization", 571 + "description": "While payee is progressing the authorization implementor should start poll the parent resource BnplPaymentOrder for updates", 572 + "parameters": [ 573 + { 574 + "name": "ownerNo", 575 + "in": "path", 576 + "required": true, 577 + "schema": { 578 + "type": "string" 579 + } 580 + }, 581 + { 582 + "name": "SellerNo", 583 + "in": "query", 584 + "schema": { 585 + "type": "string" 586 + } 587 + }, 588 + { 589 + "name": "paymentOrderId", 590 + "in": "path", 591 + "required": true, 592 + "schema": { 593 + "type": "integer", 594 + "format": "int64" 595 + } 596 + } 597 + ], 598 + "requestBody": { 599 + "content": { 600 + "application/json": { 601 + "schema": { 602 + "$ref": "#/components/schemas/V1.BnplPaymentOrders.Operations.Redirect.RedirectRequest" 603 + }, 604 + "example": "{\r\n \"returnUrl\": \"https://www.back-to-my-web-shop.com\",\r\n \"redirectOptions\": {\r\n \"languageCode\": \"SV\"\r\n }\r\n}" 605 + }, 606 + "text/json": { 607 + "schema": { 608 + "$ref": "#/components/schemas/V1.BnplPaymentOrders.Operations.Redirect.RedirectRequest" 609 + } 610 + }, 611 + "application/*+json": { 612 + "schema": { 613 + "$ref": "#/components/schemas/V1.BnplPaymentOrders.Operations.Redirect.RedirectRequest" 614 + } 615 + } 616 + } 617 + }, 618 + "responses": { 619 + "200": { 620 + "description": "OK", 621 + "content": { 622 + "application/json": { 623 + "schema": { 624 + "$ref": "#/components/schemas/V1.BnplPaymentOrders.Operations.Redirect.RedirectResponse" 625 + }, 626 + "examples": { 627 + "OK": { 628 + "description": "Example response containing redirect info for the chosen payment method", 629 + "value": "{\r\n \"redirectUrl\": \"https://www.open-chosen-payment-method-example.com\"\r\n}" 630 + } 631 + } 632 + } 633 + } 634 + }, 635 + "400": { 636 + "description": "BadRequest", 637 + "content": { 638 + "application/json": { 639 + "examples": { 640 + "validation": { 641 + "description": "occurs if any of the input validation fails, it is described in the problem which parameter that failed the validation", 642 + "value": "{\r\n \"type\": \"validation\",\r\n \"title\": \"Problem title\",\r\n \"status\": 400,\r\n \"detail\": \"Problem details\",\r\n \"instance\": \"/traceId/e7e47c48-4a22-426e-9746-0dc0ea21d73a\"\r\n}" 643 + } 644 + } 645 + } 646 + } 647 + }, 648 + "409": { 649 + "description": "Conflict", 650 + "content": { 651 + "application/json": { 652 + "examples": { 653 + "invalid-state": { 654 + "description": "Invalid state of payment order for redirect", 655 + "value": "{\r\n \"type\": \"invalid-state\",\r\n \"title\": \"Problem title\",\r\n \"status\": 409,\r\n \"detail\": \"Problem details\",\r\n \"instance\": \"/traceId/e7e47c48-4a22-426e-9746-0dc0ea21d73a\"\r\n}" 656 + } 657 + } 658 + } 659 + } 660 + } 661 + } 662 + } 663 + } 664 + }, 665 + "components": { 666 + "schemas": { 667 + "PayEx.AR.BnplPaymentOrder.Api.Business.Entities.Currency": { 668 + "enum": [ 669 + "SEK", 670 + "NOK", 671 + "DKK", 672 + "EUR" 673 + ], 674 + "type": "string" 675 + }, 676 + "PayEx.AR.BnplPaymentOrder.Api.Business.Entities.LanguageCode": { 677 + "enum": [ 678 + "EN", 679 + "SV", 680 + "NO", 681 + "DA" 682 + ], 683 + "type": "string" 684 + }, 685 + "PayEx.AR.BnplPaymentOrder.Api.Business.Entities.NationalConsumerIdentifier": { 686 + "required": [ 687 + "countryCode", 688 + "value" 689 + ], 690 + "type": "object", 691 + "properties": { 692 + "value": { 693 + "minLength": 1, 694 + "type": "string", 695 + "description": "The identifier - SSN, Personnummer, CPR, d-nummer, temporary identification number etc. Uniquely identifies the consumer. Visit developer.payex.com for information about supported national identifier format" 696 + }, 697 + "countryCode": { 698 + "minLength": 1, 699 + "pattern": "SE|NO|DK|FI", 700 + "type": "string", 701 + "description": "The country code for the identifier value property. Valid values are 'SE', 'NO', 'DK', 'FI'. [[ISO 3166-1 alpha-2>>url:https://sv.wikipedia.org/wiki/ISO_3166]]" 702 + } 703 + }, 704 + "additionalProperties": false 705 + }, 706 + "PayEx.AR.BnplPaymentOrder.Api.Business.Entities.PaymentOrderStatus": { 707 + "enum": [ 708 + "Created", 709 + "Rejected", 710 + "Canceled", 711 + "Failed", 712 + "Authorized" 713 + ], 714 + "type": "string", 715 + "description": "Server 2 Server status" 716 + }, 717 + "PayEx.LF.Api.Common.RepositoryResources.IOperation": { 718 + "type": "object", 719 + "properties": { 720 + "rel": { 721 + "type": "string", 722 + "nullable": true, 723 + "readOnly": true 724 + }, 725 + "method": { 726 + "type": "string", 727 + "nullable": true, 728 + "readOnly": true 729 + }, 730 + "href": { 731 + "type": "string", 732 + "nullable": true 733 + } 734 + }, 735 + "additionalProperties": false 736 + }, 737 + "PayEx.LF.Api.Common.RepositoryResources.Results.RepositoryNoContentResult": { 738 + "type": "object", 739 + "additionalProperties": false 740 + }, 741 + "V1.BnplPaymentOrders.BnplPaymentOrdersResource": { 742 + "required": [ 743 + "authorizationAmount", 744 + "currency", 745 + "customer", 746 + "paymentOrderId", 747 + "pointOfSale", 748 + "sellerAuthorizationId", 749 + "status" 750 + ], 751 + "type": "object", 752 + "properties": { 753 + "authorizationAmount": { 754 + "maximum": 100000000, 755 + "minimum": 0.01, 756 + "type": "number", 757 + "description": "The authorization amount, can't have more than 2 decimal places", 758 + "format": "double" 759 + }, 760 + "currency": { 761 + "$ref": "#/components/schemas/PayEx.AR.BnplPaymentOrder.Api.Business.Entities.Currency" 762 + }, 763 + "sellerAuthorizationId": { 764 + "maxLength": 50, 765 + "minLength": 1, 766 + "pattern": "^[a-zA-Z0-9#_:@.\\-åäöÅÄÖ]{1,}$", 767 + "type": "string", 768 + "description": "The seller's unique identifier of the authorize/payment order" 769 + }, 770 + "customer": { 771 + "$ref": "#/components/schemas/V1.BnplPaymentOrders.Customer" 772 + }, 773 + "pointOfSale": { 774 + "maxLength": 50, 775 + "minLength": 0, 776 + "pattern": "^[\\u0020-\\u003A \\u003C-\\u007E \\u00A0-\\u00FF \\u2019]*$", 777 + "type": "string", 778 + "description": "Trade name of the point of sale. Will be displayed to end customer." 779 + }, 780 + "mcc": { 781 + "type": "string", 782 + "description": "Merchant Category Code", 783 + "nullable": true 784 + }, 785 + "restrictToProfiles": { 786 + "type": "array", 787 + "items": { 788 + "$ref": "#/components/schemas/V1.BnplPaymentOrders.Profile" 789 + }, 790 + "description": "Filter configured profiles on exposed payment options. Leave as Null to show all configured payment options", 791 + "nullable": true 792 + }, 793 + "instore": { 794 + "type": "boolean", 795 + "description": "This request is an Instore bnpl order", 796 + "nullable": true 797 + }, 798 + "paymentOrderId": { 799 + "type": "integer", 800 + "description": "PaymentOrderId aka ExternalReservationId", 801 + "format": "int64" 802 + }, 803 + "status": { 804 + "$ref": "#/components/schemas/PayEx.AR.BnplPaymentOrder.Api.Business.Entities.PaymentOrderStatus" 805 + }, 806 + "remainingAmount": { 807 + "maximum": 100000000, 808 + "minimum": 0, 809 + "type": "number", 810 + "description": "Remaining amount of the authorize. If amount is zero then the authorize has already been fully used, cancelled or the payment order has not been authorized yet", 811 + "format": "double" 812 + }, 813 + "operations": { 814 + "type": "array", 815 + "items": { 816 + "$ref": "#/components/schemas/PayEx.LF.Api.Common.RepositoryResources.IOperation" 817 + }, 818 + "nullable": true 819 + }, 820 + "@id": { 821 + "type": "string", 822 + "nullable": true 823 + } 824 + }, 825 + "additionalProperties": false 826 + }, 827 + "V1.BnplPaymentOrders.BnplPaymentOrdersResourceRequest": { 828 + "required": [ 829 + "authorizationAmount", 830 + "currency", 831 + "customer", 832 + "pointOfSale", 833 + "sellerAuthorizationId" 834 + ], 835 + "type": "object", 836 + "properties": { 837 + "authorizationAmount": { 838 + "maximum": 100000000, 839 + "minimum": 0.01, 840 + "type": "number", 841 + "description": "The authorization amount, can't have more than 2 decimal places", 842 + "format": "double" 843 + }, 844 + "currency": { 845 + "$ref": "#/components/schemas/PayEx.AR.BnplPaymentOrder.Api.Business.Entities.Currency" 846 + }, 847 + "sellerAuthorizationId": { 848 + "maxLength": 50, 849 + "minLength": 1, 850 + "pattern": "^[a-zA-Z0-9#_:@.\\-åäöÅÄÖ]{1,}$", 851 + "type": "string", 852 + "description": "The seller's unique identifier of the authorize/payment order" 853 + }, 854 + "customer": { 855 + "$ref": "#/components/schemas/V1.BnplPaymentOrders.Customer" 856 + }, 857 + "pointOfSale": { 858 + "maxLength": 50, 859 + "minLength": 0, 860 + "pattern": "^[\\u0020-\\u003A \\u003C-\\u007E \\u00A0-\\u00FF \\u2019]*$", 861 + "type": "string", 862 + "description": "Trade name of the point of sale. Will be displayed to end customer." 863 + }, 864 + "mcc": { 865 + "type": "string", 866 + "description": "Merchant Category Code", 867 + "nullable": true 868 + }, 869 + "restrictToProfiles": { 870 + "type": "array", 871 + "items": { 872 + "$ref": "#/components/schemas/V1.BnplPaymentOrders.Profile" 873 + }, 874 + "description": "Filter configured profiles on exposed payment options. Leave as Null to show all configured payment options", 875 + "nullable": true 876 + }, 877 + "instore": { 878 + "type": "boolean", 879 + "description": "This request is an Instore bnpl order", 880 + "nullable": true 881 + } 882 + }, 883 + "additionalProperties": false 884 + }, 885 + "V1.BnplPaymentOrders.Captures.CaptureRequest": { 886 + "required": [ 887 + "amount", 888 + "currency", 889 + "orderLines", 890 + "receiptReference", 891 + "sellerTransactionId" 892 + ], 893 + "type": "object", 894 + "properties": { 895 + "amount": { 896 + "maximum": 100000000, 897 + "minimum": 0.01, 898 + "type": "number", 899 + "description": "The total amount", 900 + "format": "double" 901 + }, 902 + "currency": { 903 + "$ref": "#/components/schemas/PayEx.AR.BnplPaymentOrder.Api.Business.Entities.Currency" 904 + }, 905 + "orderLines": { 906 + "minItems": 1, 907 + "type": "array", 908 + "items": { 909 + "$ref": "#/components/schemas/V1.BnplPaymentOrders.Captures.OrderLine" 910 + }, 911 + "description": "Specify Item/s for the captures, sum of all OrderLines must be equals with Amount in the capture" 912 + }, 913 + "sellerTransactionId": { 914 + "maxLength": 50, 915 + "minLength": 1, 916 + "pattern": "^[a-zA-Z0-9#_:@.\\-åäöÅÄÖ]{1,}$", 917 + "type": "string", 918 + "description": "The seller's unique identifier of the capture" 919 + }, 920 + "receiptReference": { 921 + "maxLength": 30, 922 + "minLength": 1, 923 + "pattern": "^[a-zA-Z0-9#_:@.\\-]{1,}$", 924 + "type": "string", 925 + "description": "A receipt reference meaningful for the consumer" 926 + } 927 + }, 928 + "additionalProperties": false 929 + }, 930 + "V1.BnplPaymentOrders.Captures.CaptureResource": { 931 + "required": [ 932 + "amount", 933 + "captureId", 934 + "currency", 935 + "orderLines", 936 + "receiptReference", 937 + "sellerTransactionId" 938 + ], 939 + "type": "object", 940 + "properties": { 941 + "amount": { 942 + "maximum": 100000000, 943 + "minimum": 0.01, 944 + "type": "number", 945 + "description": "The total amount", 946 + "format": "double" 947 + }, 948 + "currency": { 949 + "$ref": "#/components/schemas/PayEx.AR.BnplPaymentOrder.Api.Business.Entities.Currency" 950 + }, 951 + "orderLines": { 952 + "minItems": 1, 953 + "type": "array", 954 + "items": { 955 + "$ref": "#/components/schemas/V1.BnplPaymentOrders.Captures.OrderLine" 956 + }, 957 + "description": "Specify Item/s for the captures, sum of all OrderLines must be equals with Amount in the capture" 958 + }, 959 + "sellerTransactionId": { 960 + "maxLength": 50, 961 + "minLength": 1, 962 + "pattern": "^[a-zA-Z0-9#_:@.\\-åäöÅÄÖ]{1,}$", 963 + "type": "string", 964 + "description": "The seller's unique identifier of the capture" 965 + }, 966 + "receiptReference": { 967 + "maxLength": 30, 968 + "minLength": 1, 969 + "pattern": "^[a-zA-Z0-9#_:@.\\-]{1,}$", 970 + "type": "string", 971 + "description": "A receipt reference meaningful for the consumer" 972 + }, 973 + "captureId": { 974 + "maxLength": 50, 975 + "minLength": 1, 976 + "pattern": "^[a-zA-Z0-9\\-]{1,}$", 977 + "type": "integer", 978 + "description": "Identifier of the capture", 979 + "format": "int64" 980 + }, 981 + "@id": { 982 + "type": "string", 983 + "nullable": true 984 + } 985 + }, 986 + "additionalProperties": false 987 + }, 988 + "V1.BnplPaymentOrders.Captures.OrderLine": { 989 + "required": [ 990 + "amount", 991 + "itemDescription" 992 + ], 993 + "type": "object", 994 + "properties": { 995 + "itemDescription": { 996 + "minLength": 1, 997 + "pattern": "^[\\u0020-\\u003A \\u003C-\\u007E \\u00A0-\\u00FF \\u2019]*$", 998 + "type": "string", 999 + "description": "Name or description of an individual item in the capture" 1000 + }, 1001 + "amount": { 1002 + "maximum": 100000000, 1003 + "minimum": 0.01, 1004 + "type": "number", 1005 + "description": "Price of an individual item in the capture", 1006 + "format": "double" 1007 + } 1008 + }, 1009 + "additionalProperties": false 1010 + }, 1011 + "V1.BnplPaymentOrders.Customer": { 1012 + "required": [ 1013 + "nationalConsumerIdentifier" 1014 + ], 1015 + "type": "object", 1016 + "properties": { 1017 + "nationalConsumerIdentifier": { 1018 + "$ref": "#/components/schemas/PayEx.AR.BnplPaymentOrder.Api.Business.Entities.NationalConsumerIdentifier" 1019 + }, 1020 + "email": { 1021 + "maxLength": 254, 1022 + "minLength": 5, 1023 + "pattern": "^[^;\\xA0\\xD0\\─@<>\\p{Cc}]+@(?!\\.)(?!.*\\.\\.)(?:[^;\\xA0\\xD0\\─@<>\\p{Cc}]+\\.[^;\\xA0\\xD0\\─@<>\\p{Cc}]+|\\[[A-Fa-f\\d\\:]+\\])(?<!\\.)$", 1024 + "type": "string", 1025 + "description": "Email to the customer" 1026 + }, 1027 + "msisdn": { 1028 + "maxLength": 15, 1029 + "minLength": 5, 1030 + "pattern": "^[+]{1}\\d{4,14}$", 1031 + "type": "string", 1032 + "description": "Phone number to the customer", 1033 + "nullable": true 1034 + } 1035 + }, 1036 + "additionalProperties": false 1037 + }, 1038 + "V1.BnplPaymentOrders.Operations.Redirect.RedirectOptions": { 1039 + "required": [ 1040 + "languageCode" 1041 + ], 1042 + "type": "object", 1043 + "properties": { 1044 + "languageCode": { 1045 + "$ref": "#/components/schemas/PayEx.AR.BnplPaymentOrder.Api.Business.Entities.LanguageCode" 1046 + } 1047 + }, 1048 + "additionalProperties": false 1049 + }, 1050 + "V1.BnplPaymentOrders.Operations.Redirect.RedirectRequest": { 1051 + "required": [ 1052 + "redirectOptions", 1053 + "returnUrl" 1054 + ], 1055 + "type": "object", 1056 + "properties": { 1057 + "returnUrl": { 1058 + "minLength": 1, 1059 + "type": "string", 1060 + "description": "Url to return the end user to after process is completed or cancelled" 1061 + }, 1062 + "redirectOptions": { 1063 + "$ref": "#/components/schemas/V1.BnplPaymentOrders.Operations.Redirect.RedirectOptions" 1064 + } 1065 + }, 1066 + "additionalProperties": false 1067 + }, 1068 + "V1.BnplPaymentOrders.Operations.Redirect.RedirectResponse": { 1069 + "type": "object", 1070 + "properties": { 1071 + "redirectUrl": { 1072 + "type": "string", 1073 + "description": "Url to redirect the end user to", 1074 + "nullable": true 1075 + } 1076 + }, 1077 + "additionalProperties": false 1078 + }, 1079 + "V1.BnplPaymentOrders.Profile": { 1080 + "required": [ 1081 + "profileName" 1082 + ], 1083 + "type": "object", 1084 + "properties": { 1085 + "profileName": { 1086 + "minLength": 1, 1087 + "type": "string", 1088 + "description": "Profile identifier" 1089 + }, 1090 + "subProfiles": { 1091 + "type": "array", 1092 + "items": { 1093 + "$ref": "#/components/schemas/V1.BnplPaymentOrders.SubProfile" 1094 + }, 1095 + "description": "Specify possible list of sub profiles, leave as null to display all configured sub profiles", 1096 + "nullable": true 1097 + } 1098 + }, 1099 + "additionalProperties": false 1100 + }, 1101 + "V1.BnplPaymentOrders.Reversals.ReversalRequest": { 1102 + "required": [ 1103 + "amount", 1104 + "currency", 1105 + "receiptReference", 1106 + "sellerTransactionId" 1107 + ], 1108 + "type": "object", 1109 + "properties": { 1110 + "amount": { 1111 + "maximum": 100000000, 1112 + "minimum": 0.01, 1113 + "type": "number", 1114 + "description": "The total amount to reverse", 1115 + "format": "double" 1116 + }, 1117 + "currency": { 1118 + "$ref": "#/components/schemas/PayEx.AR.BnplPaymentOrder.Api.Business.Entities.Currency" 1119 + }, 1120 + "sellerTransactionId": { 1121 + "maxLength": 50, 1122 + "minLength": 1, 1123 + "pattern": "^[a-zA-Z0-9#_:@.\\-åäöÅÄÖ]{1,}$", 1124 + "type": "string", 1125 + "description": "The sellers unique identifier of the reversal" 1126 + }, 1127 + "receiptReference": { 1128 + "maxLength": 30, 1129 + "minLength": 1, 1130 + "pattern": "^[a-zA-Z0-9#_:@.\\-]{1,}$", 1131 + "type": "string", 1132 + "description": "A receipt reference meaningful for the consumer" 1133 + } 1134 + }, 1135 + "additionalProperties": false 1136 + }, 1137 + "V1.BnplPaymentOrders.Reversals.ReversalResource": { 1138 + "required": [ 1139 + "amount", 1140 + "currency", 1141 + "receiptReference", 1142 + "reversalId", 1143 + "sellerTransactionId" 1144 + ], 1145 + "type": "object", 1146 + "properties": { 1147 + "amount": { 1148 + "maximum": 100000000, 1149 + "minimum": 0.01, 1150 + "type": "number", 1151 + "description": "The total amount to reverse", 1152 + "format": "double" 1153 + }, 1154 + "currency": { 1155 + "$ref": "#/components/schemas/PayEx.AR.BnplPaymentOrder.Api.Business.Entities.Currency" 1156 + }, 1157 + "sellerTransactionId": { 1158 + "maxLength": 50, 1159 + "minLength": 1, 1160 + "pattern": "^[a-zA-Z0-9#_:@.\\-åäöÅÄÖ]{1,}$", 1161 + "type": "string", 1162 + "description": "The sellers unique identifier of the reversal" 1163 + }, 1164 + "receiptReference": { 1165 + "maxLength": 30, 1166 + "minLength": 1, 1167 + "pattern": "^[a-zA-Z0-9#_:@.\\-]{1,}$", 1168 + "type": "string", 1169 + "description": "A receipt reference meaningful for the consumer" 1170 + }, 1171 + "reversalId": { 1172 + "minLength": 1, 1173 + "type": "string", 1174 + "description": "Identifier of the reversal" 1175 + }, 1176 + "@id": { 1177 + "type": "string", 1178 + "nullable": true 1179 + } 1180 + }, 1181 + "additionalProperties": false 1182 + }, 1183 + "V1.BnplPaymentOrders.SubProfile": { 1184 + "required": [ 1185 + "subProfileName" 1186 + ], 1187 + "type": "object", 1188 + "properties": { 1189 + "subProfileName": { 1190 + "minLength": 1, 1191 + "type": "string", 1192 + "description": "Sub profile identifier" 1193 + } 1194 + }, 1195 + "additionalProperties": false 1196 + } 1197 + } 1198 + } 1199 +}