From empty
To version 24.1
edited by thomas hedstrom
on 2026/07/08 14:57
Change comment: There is no comment for this version

Summary

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.XWikiGuest
1 +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 +}