@medalsocial/sdk 1.9.0 → 1.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +24 -1
- package/dist/openapi/medal-social.openapi.json +361 -0
- package/dist/src/index.d.mts +165 -1
- package/dist/src/index.d.ts +165 -1
- package/dist/src/index.js +59 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/index.mjs +59 -0
- package/dist/src/index.mjs.map +1 -1
- package/dist/src/openapi.generated.d.mts +237 -0
- package/dist/src/openapi.generated.d.ts +237 -0
- package/dist/src/openapi.generated.js.map +1 -1
- package/openapi/medal-social.openapi.yaml +267 -0
- package/package.json +1 -1
- package/skills/resources/SKILL.md +4 -0
package/README.md
CHANGED
|
@@ -268,7 +268,7 @@ if (summary.can_reschedule) {
|
|
|
268
268
|
|
|
269
269
|
`can_cancel` / `can_reschedule` already apply the policy windows — honour them rather than re-deriving from `cancel_window_hours`.
|
|
270
270
|
|
|
271
|
-
**Booking writes are idempotent by default.** The SDK retries 429/5xx automatically, so every booking `POST` (`create`, `cancel`, `reschedule`, `markNoShow`, and
|
|
271
|
+
**Booking writes are idempotent by default.** The SDK retries 429/5xx automatically, so every booking `POST` (`create`, `cancel`, `reschedule`, `markNoShow`, `payment.start`, and the `manage` writes) carries a generated `Idempotency-Key` — a retry after a gateway failure replays the original result instead of booking the slot twice. Supply your own `options.idempotencyKey` to extend that guarantee across *your* retries too: the server remembers a key for 24 hours, keyed by `(key, workspace, method + path)`.
|
|
272
272
|
|
|
273
273
|
`update(id, input)` requires at least one of `notes` / `internal_notes`; `update(id, {})` is a compile error, matching the API's own 400.
|
|
274
274
|
|
|
@@ -295,6 +295,29 @@ const { data: events } = await medal.bookings.events.list({
|
|
|
295
295
|
});
|
|
296
296
|
```
|
|
297
297
|
|
|
298
|
+
#### Payments
|
|
299
|
+
|
|
300
|
+
`medal.bookings.payment` takes a Vipps payment on a booking as the business; `medal.bookings.manage.payment` does the same on the customer's behalf, keyed by the manage token. `Booking.payment_mode` (and `ManageSummary.payment_mode`) says what the booking requires — `payment_status: 'none'` cannot tell "owes nothing" from "has not paid yet".
|
|
301
|
+
|
|
302
|
+
```ts
|
|
303
|
+
const { data: started } = await medal.bookings.payment.start(booking.id, {
|
|
304
|
+
return_url: 'https://example.no/retur',
|
|
305
|
+
terms_accepted: true, // must be literally true — 400 otherwise
|
|
306
|
+
terms_version: '2026-09',
|
|
307
|
+
});
|
|
308
|
+
// Hand started.redirect_url to the Vipps Widget SDK UNCHANGED. It is SHOW-ONCE:
|
|
309
|
+
// payment.get() never returns it, and the payment behind it expires in 10 minutes.
|
|
310
|
+
|
|
311
|
+
const { data: payment } = await medal.bookings.payment.get(booking.id);
|
|
312
|
+
payment.state; // created | authorized | captured | cancelled | refunded | failed | expired
|
|
313
|
+
payment.captured_ore; // integer øre — a Vipps payment stays AUTHORIZED after a capture,
|
|
314
|
+
// so the aggregates, not `state`, say what actually moved
|
|
315
|
+
```
|
|
316
|
+
|
|
317
|
+
**Never trust the return redirect.** The customer can close the tab, hit back, or edit the URL — the outcome reaches you through Medal. Poll `payment.get(...)` on your return page, or read the booking's `payment_status`.
|
|
318
|
+
|
|
319
|
+
The customer must accept your terms **before** a payment is initiated: `terms_accepted: true` is required by the type *and* by the API, and a request without it leaves no payment (and no consent record) behind. A `return_url` your workspace's own sites do not vouch for answers **422**, not 400 — the URL parses, it is just not yours. Starting a second payment while one is live answers **409**, and `payment.get(...)` on a booking with no payment yet answers **404**, exactly as an unknown booking does.
|
|
320
|
+
|
|
298
321
|
### Customer portal
|
|
299
322
|
|
|
300
323
|
Self-service for the workspace's own customers: they sign in with an e-mailed one-time code, then see and change their profile, list their bookings, export their data, or erase their account. The API key needs `read:portal` and `write:portal`.
|
|
@@ -1654,6 +1654,132 @@
|
|
|
1654
1654
|
}
|
|
1655
1655
|
}
|
|
1656
1656
|
},
|
|
1657
|
+
"/api/v1/bookings/{id}/payment": {
|
|
1658
|
+
"parameters": [
|
|
1659
|
+
{
|
|
1660
|
+
"$ref": "#/components/parameters/Id"
|
|
1661
|
+
}
|
|
1662
|
+
],
|
|
1663
|
+
"post": {
|
|
1664
|
+
"tags": [
|
|
1665
|
+
"Bookings"
|
|
1666
|
+
],
|
|
1667
|
+
"operationId": "startBookingPayment",
|
|
1668
|
+
"summary": "Start a Vipps payment for a booking",
|
|
1669
|
+
"description": "Reserves (or charges) the booking's amount and returns the wallet redirect URL. The customer must have accepted your terms before this call — `terms_accepted` must be literally `true`, and a body omitting it is a 400. One live payment per booking: a second while one is outstanding answers 409, as does a booking that is not payable or a refusal from Vipps. A `return_url` this workspace's own sites do not vouch for answers 422, not 400 — the URL parses, it is just not yours. 403 when the payments switch or the bookings module is off.",
|
|
1670
|
+
"requestBody": {
|
|
1671
|
+
"required": true,
|
|
1672
|
+
"content": {
|
|
1673
|
+
"application/json": {
|
|
1674
|
+
"schema": {
|
|
1675
|
+
"$ref": "#/components/schemas/StartBookingPaymentInput"
|
|
1676
|
+
}
|
|
1677
|
+
}
|
|
1678
|
+
}
|
|
1679
|
+
},
|
|
1680
|
+
"responses": {
|
|
1681
|
+
"200": {
|
|
1682
|
+
"description": "The reference and the SHOW-ONCE redirect URL. The URL is never returned again — the payment behind it expires after ten minutes, so a cached one leads into a payment that no longer exists.",
|
|
1683
|
+
"content": {
|
|
1684
|
+
"application/json": {
|
|
1685
|
+
"schema": {
|
|
1686
|
+
"$ref": "#/components/schemas/ApiResponse_BookingPaymentStart"
|
|
1687
|
+
}
|
|
1688
|
+
}
|
|
1689
|
+
}
|
|
1690
|
+
},
|
|
1691
|
+
"default": {
|
|
1692
|
+
"$ref": "#/components/responses/ApiError"
|
|
1693
|
+
}
|
|
1694
|
+
}
|
|
1695
|
+
},
|
|
1696
|
+
"get": {
|
|
1697
|
+
"tags": [
|
|
1698
|
+
"Bookings"
|
|
1699
|
+
],
|
|
1700
|
+
"operationId": "getBookingPayment",
|
|
1701
|
+
"summary": "Read the newest payment attempt on a booking",
|
|
1702
|
+
"description": "Returns the newest attempt only. A booking with no payment yet, an unknown booking id and another workspace's booking all answer 404 alike, so this is not an existence oracle.",
|
|
1703
|
+
"responses": {
|
|
1704
|
+
"200": {
|
|
1705
|
+
"description": "The payment. `redirect_url` is deliberately absent here.",
|
|
1706
|
+
"content": {
|
|
1707
|
+
"application/json": {
|
|
1708
|
+
"schema": {
|
|
1709
|
+
"$ref": "#/components/schemas/ApiResponse_BookingPayment"
|
|
1710
|
+
}
|
|
1711
|
+
}
|
|
1712
|
+
}
|
|
1713
|
+
},
|
|
1714
|
+
"default": {
|
|
1715
|
+
"$ref": "#/components/responses/ApiError"
|
|
1716
|
+
}
|
|
1717
|
+
}
|
|
1718
|
+
}
|
|
1719
|
+
},
|
|
1720
|
+
"/api/v1/bookings/manage/{token}/payment": {
|
|
1721
|
+
"parameters": [
|
|
1722
|
+
{
|
|
1723
|
+
"$ref": "#/components/parameters/ManageToken"
|
|
1724
|
+
}
|
|
1725
|
+
],
|
|
1726
|
+
"post": {
|
|
1727
|
+
"tags": [
|
|
1728
|
+
"Bookings"
|
|
1729
|
+
],
|
|
1730
|
+
"operationId": "startManageBookingPayment",
|
|
1731
|
+
"summary": "Start a payment on the customer's behalf",
|
|
1732
|
+
"description": "The manage-token twin of `startBookingPayment` — same body, same responses; only the credential that authorizes it differs.",
|
|
1733
|
+
"requestBody": {
|
|
1734
|
+
"required": true,
|
|
1735
|
+
"content": {
|
|
1736
|
+
"application/json": {
|
|
1737
|
+
"schema": {
|
|
1738
|
+
"$ref": "#/components/schemas/StartBookingPaymentInput"
|
|
1739
|
+
}
|
|
1740
|
+
}
|
|
1741
|
+
}
|
|
1742
|
+
},
|
|
1743
|
+
"responses": {
|
|
1744
|
+
"200": {
|
|
1745
|
+
"description": "The reference and the show-once redirect URL.",
|
|
1746
|
+
"content": {
|
|
1747
|
+
"application/json": {
|
|
1748
|
+
"schema": {
|
|
1749
|
+
"$ref": "#/components/schemas/ApiResponse_BookingPaymentStart"
|
|
1750
|
+
}
|
|
1751
|
+
}
|
|
1752
|
+
}
|
|
1753
|
+
},
|
|
1754
|
+
"default": {
|
|
1755
|
+
"$ref": "#/components/responses/ApiError"
|
|
1756
|
+
}
|
|
1757
|
+
}
|
|
1758
|
+
},
|
|
1759
|
+
"get": {
|
|
1760
|
+
"tags": [
|
|
1761
|
+
"Bookings"
|
|
1762
|
+
],
|
|
1763
|
+
"operationId": "getManageBookingPayment",
|
|
1764
|
+
"summary": "Read the payment on the customer's own booking",
|
|
1765
|
+
"description": "An unknown token, another workspace's token and a booking with no payment yet all answer 404 alike.",
|
|
1766
|
+
"responses": {
|
|
1767
|
+
"200": {
|
|
1768
|
+
"description": "The payment. `redirect_url` is deliberately absent here.",
|
|
1769
|
+
"content": {
|
|
1770
|
+
"application/json": {
|
|
1771
|
+
"schema": {
|
|
1772
|
+
"$ref": "#/components/schemas/ApiResponse_BookingPayment"
|
|
1773
|
+
}
|
|
1774
|
+
}
|
|
1775
|
+
}
|
|
1776
|
+
},
|
|
1777
|
+
"default": {
|
|
1778
|
+
"$ref": "#/components/responses/ApiError"
|
|
1779
|
+
}
|
|
1780
|
+
}
|
|
1781
|
+
}
|
|
1782
|
+
},
|
|
1657
1783
|
"/api/v1/bookings/manage/{token}": {
|
|
1658
1784
|
"parameters": [
|
|
1659
1785
|
{
|
|
@@ -4656,6 +4782,28 @@
|
|
|
4656
4782
|
"refunded"
|
|
4657
4783
|
]
|
|
4658
4784
|
},
|
|
4785
|
+
"BookingPaymentMode": {
|
|
4786
|
+
"description": "What a booking must have paid before the business honours it: nothing, a reservation captured later, or the full amount up front.",
|
|
4787
|
+
"type": "string",
|
|
4788
|
+
"enum": [
|
|
4789
|
+
"none",
|
|
4790
|
+
"reserve",
|
|
4791
|
+
"prepay"
|
|
4792
|
+
]
|
|
4793
|
+
},
|
|
4794
|
+
"BookingPaymentState": {
|
|
4795
|
+
"description": "The state of one payment attempt, in Medal's vocabulary rather than the wallet's — a Vipps payment stays AUTHORIZED after a capture, so read the øre aggregates to learn what actually moved.",
|
|
4796
|
+
"type": "string",
|
|
4797
|
+
"enum": [
|
|
4798
|
+
"created",
|
|
4799
|
+
"authorized",
|
|
4800
|
+
"captured",
|
|
4801
|
+
"cancelled",
|
|
4802
|
+
"refunded",
|
|
4803
|
+
"failed",
|
|
4804
|
+
"expired"
|
|
4805
|
+
]
|
|
4806
|
+
},
|
|
4659
4807
|
"BookingCreatedVia": {
|
|
4660
4808
|
"type": "string",
|
|
4661
4809
|
"enum": [
|
|
@@ -4693,6 +4841,7 @@
|
|
|
4693
4841
|
"cancel_reason",
|
|
4694
4842
|
"rescheduled_from_id",
|
|
4695
4843
|
"payment_status",
|
|
4844
|
+
"payment_mode",
|
|
4696
4845
|
"amount_ore",
|
|
4697
4846
|
"notes",
|
|
4698
4847
|
"internal_notes",
|
|
@@ -4806,6 +4955,10 @@
|
|
|
4806
4955
|
"payment_status": {
|
|
4807
4956
|
"$ref": "#/components/schemas/BookingPaymentStatus"
|
|
4808
4957
|
},
|
|
4958
|
+
"payment_mode": {
|
|
4959
|
+
"description": "What this booking required when it was made — frozen at creation. `payment_status: none` cannot tell \"owes nothing\" from \"has not paid yet\"; this can.",
|
|
4960
|
+
"$ref": "#/components/schemas/BookingPaymentMode"
|
|
4961
|
+
},
|
|
4809
4962
|
"amount_ore": {
|
|
4810
4963
|
"description": "Price in integer øre. Never a float and never kroner.",
|
|
4811
4964
|
"type": [
|
|
@@ -4867,6 +5020,7 @@
|
|
|
4867
5020
|
"weekend_surcharge_pct",
|
|
4868
5021
|
"resource_requirements",
|
|
4869
5022
|
"bookable_online",
|
|
5023
|
+
"payment",
|
|
4870
5024
|
"max_per_booking",
|
|
4871
5025
|
"color",
|
|
4872
5026
|
"sort_order",
|
|
@@ -4937,6 +5091,17 @@
|
|
|
4937
5091
|
"bookable_online": {
|
|
4938
5092
|
"type": "boolean"
|
|
4939
5093
|
},
|
|
5094
|
+
"payment": {
|
|
5095
|
+
"description": "Per-service payment requirement. `null` means no override — the workspace rule decides.",
|
|
5096
|
+
"oneOf": [
|
|
5097
|
+
{
|
|
5098
|
+
"$ref": "#/components/schemas/BookingPaymentMode"
|
|
5099
|
+
},
|
|
5100
|
+
{
|
|
5101
|
+
"type": "null"
|
|
5102
|
+
}
|
|
5103
|
+
]
|
|
5104
|
+
},
|
|
4940
5105
|
"max_per_booking": {
|
|
4941
5106
|
"type": [
|
|
4942
5107
|
"integer",
|
|
@@ -5305,6 +5470,7 @@
|
|
|
5305
5470
|
"party_sequence_id",
|
|
5306
5471
|
"amount_ore",
|
|
5307
5472
|
"payment_status",
|
|
5473
|
+
"payment_mode",
|
|
5308
5474
|
"time_zone",
|
|
5309
5475
|
"cancel_window_hours",
|
|
5310
5476
|
"reschedule_window_hours",
|
|
@@ -5420,6 +5586,10 @@
|
|
|
5420
5586
|
}
|
|
5421
5587
|
]
|
|
5422
5588
|
},
|
|
5589
|
+
"payment_mode": {
|
|
5590
|
+
"description": "What this booking requires — what a manage page checks before offering «Betal nå».",
|
|
5591
|
+
"$ref": "#/components/schemas/BookingPaymentMode"
|
|
5592
|
+
},
|
|
5423
5593
|
"time_zone": {
|
|
5424
5594
|
"description": "IANA zone the booking's local times should be rendered in.",
|
|
5425
5595
|
"type": [
|
|
@@ -5511,6 +5681,169 @@
|
|
|
5511
5681
|
}
|
|
5512
5682
|
}
|
|
5513
5683
|
},
|
|
5684
|
+
"StartBookingPaymentInput": {
|
|
5685
|
+
"description": "Body for `startBookingPayment` and `startManageBookingPayment`.",
|
|
5686
|
+
"type": "object",
|
|
5687
|
+
"required": [
|
|
5688
|
+
"return_url",
|
|
5689
|
+
"terms_accepted"
|
|
5690
|
+
],
|
|
5691
|
+
"properties": {
|
|
5692
|
+
"return_url": {
|
|
5693
|
+
"description": "Where the wallet returns the customer. Must be a URL one of this workspace's own sites vouches for; anything else answers 422.",
|
|
5694
|
+
"type": "string",
|
|
5695
|
+
"minLength": 1,
|
|
5696
|
+
"maxLength": 2048
|
|
5697
|
+
},
|
|
5698
|
+
"terms_accepted": {
|
|
5699
|
+
"description": "Must be literally `true`. The customer has to actively accept the merchant's terms BEFORE a payment is initiated, so omitting it or sending `false` is a 400 and leaves no payment behind.",
|
|
5700
|
+
"const": true,
|
|
5701
|
+
"type": "boolean"
|
|
5702
|
+
},
|
|
5703
|
+
"terms_version": {
|
|
5704
|
+
"description": "The caller's own version label for the terms that were accepted.",
|
|
5705
|
+
"type": "string",
|
|
5706
|
+
"minLength": 1,
|
|
5707
|
+
"maxLength": 64
|
|
5708
|
+
},
|
|
5709
|
+
"terms_text": {
|
|
5710
|
+
"description": "The exact text that was accepted, stored with the consent record.",
|
|
5711
|
+
"type": "string",
|
|
5712
|
+
"maxLength": 2000
|
|
5713
|
+
}
|
|
5714
|
+
}
|
|
5715
|
+
},
|
|
5716
|
+
"BookingPaymentStart": {
|
|
5717
|
+
"description": "The result of starting a payment. `redirect_url` is handed over here and nowhere else.",
|
|
5718
|
+
"type": "object",
|
|
5719
|
+
"required": [
|
|
5720
|
+
"reference",
|
|
5721
|
+
"redirect_url",
|
|
5722
|
+
"state"
|
|
5723
|
+
],
|
|
5724
|
+
"properties": {
|
|
5725
|
+
"reference": {
|
|
5726
|
+
"description": "The wallet reference for this attempt.",
|
|
5727
|
+
"type": "string"
|
|
5728
|
+
},
|
|
5729
|
+
"redirect_url": {
|
|
5730
|
+
"description": "Send the customer here UNCHANGED — hand it to the Vipps Widget SDK. SHOW-ONCE: it is not returned by `getBookingPayment`, and the payment behind it expires after ten minutes.",
|
|
5731
|
+
"type": "string"
|
|
5732
|
+
},
|
|
5733
|
+
"state": {
|
|
5734
|
+
"$ref": "#/components/schemas/BookingPaymentState"
|
|
5735
|
+
}
|
|
5736
|
+
}
|
|
5737
|
+
},
|
|
5738
|
+
"BookingPayment": {
|
|
5739
|
+
"description": "One payment attempt on a booking. Money is integer øre, and the four aggregates are numbers rather than nulls — \"nothing captured\" is `0`. `redirect_url`, the wallet's own refusal text and the trace id are deliberately absent.",
|
|
5740
|
+
"type": "object",
|
|
5741
|
+
"required": [
|
|
5742
|
+
"reference",
|
|
5743
|
+
"provider",
|
|
5744
|
+
"state",
|
|
5745
|
+
"mode",
|
|
5746
|
+
"attempt",
|
|
5747
|
+
"amount_ore",
|
|
5748
|
+
"authorized_ore",
|
|
5749
|
+
"captured_ore",
|
|
5750
|
+
"refunded_ore",
|
|
5751
|
+
"cancelled_ore",
|
|
5752
|
+
"currency",
|
|
5753
|
+
"capture_guaranteed_until",
|
|
5754
|
+
"terms_version",
|
|
5755
|
+
"terms_accepted_at",
|
|
5756
|
+
"failure_code",
|
|
5757
|
+
"created_at",
|
|
5758
|
+
"updated_at"
|
|
5759
|
+
],
|
|
5760
|
+
"properties": {
|
|
5761
|
+
"reference": {
|
|
5762
|
+
"type": "string"
|
|
5763
|
+
},
|
|
5764
|
+
"provider": {
|
|
5765
|
+
"const": "vipps",
|
|
5766
|
+
"type": "string"
|
|
5767
|
+
},
|
|
5768
|
+
"state": {
|
|
5769
|
+
"$ref": "#/components/schemas/BookingPaymentState"
|
|
5770
|
+
},
|
|
5771
|
+
"mode": {
|
|
5772
|
+
"description": "Never `none` — a payment exists only where one was required.",
|
|
5773
|
+
"type": "string",
|
|
5774
|
+
"enum": [
|
|
5775
|
+
"reserve",
|
|
5776
|
+
"prepay"
|
|
5777
|
+
]
|
|
5778
|
+
},
|
|
5779
|
+
"attempt": {
|
|
5780
|
+
"description": "1 for the first attempt on this booking, incrementing per retry.",
|
|
5781
|
+
"type": "integer"
|
|
5782
|
+
},
|
|
5783
|
+
"amount_ore": {
|
|
5784
|
+
"description": "The amount this attempt is for, in integer øre.",
|
|
5785
|
+
"type": "integer"
|
|
5786
|
+
},
|
|
5787
|
+
"authorized_ore": {
|
|
5788
|
+
"type": "integer"
|
|
5789
|
+
},
|
|
5790
|
+
"captured_ore": {
|
|
5791
|
+
"type": "integer"
|
|
5792
|
+
},
|
|
5793
|
+
"refunded_ore": {
|
|
5794
|
+
"type": "integer"
|
|
5795
|
+
},
|
|
5796
|
+
"cancelled_ore": {
|
|
5797
|
+
"type": "integer"
|
|
5798
|
+
},
|
|
5799
|
+
"currency": {
|
|
5800
|
+
"const": "NOK",
|
|
5801
|
+
"type": "string"
|
|
5802
|
+
},
|
|
5803
|
+
"capture_guaranteed_until": {
|
|
5804
|
+
"description": "The last moment a capture is GUARANTEED to succeed. The card behind the wallet may release the reservation afterwards, so a capture past it can fail even though the payment still looks authorized. Null until the customer has approved.",
|
|
5805
|
+
"type": [
|
|
5806
|
+
"string",
|
|
5807
|
+
"null"
|
|
5808
|
+
],
|
|
5809
|
+
"format": "date-time"
|
|
5810
|
+
},
|
|
5811
|
+
"terms_version": {
|
|
5812
|
+
"type": [
|
|
5813
|
+
"string",
|
|
5814
|
+
"null"
|
|
5815
|
+
]
|
|
5816
|
+
},
|
|
5817
|
+
"terms_accepted_at": {
|
|
5818
|
+
"type": [
|
|
5819
|
+
"string",
|
|
5820
|
+
"null"
|
|
5821
|
+
],
|
|
5822
|
+
"format": "date-time"
|
|
5823
|
+
},
|
|
5824
|
+
"failure_code": {
|
|
5825
|
+
"description": "The wallet's numeric error code from the last failed operation — what a caller branches on.",
|
|
5826
|
+
"type": [
|
|
5827
|
+
"string",
|
|
5828
|
+
"null"
|
|
5829
|
+
]
|
|
5830
|
+
},
|
|
5831
|
+
"created_at": {
|
|
5832
|
+
"type": [
|
|
5833
|
+
"string",
|
|
5834
|
+
"null"
|
|
5835
|
+
],
|
|
5836
|
+
"format": "date-time"
|
|
5837
|
+
},
|
|
5838
|
+
"updated_at": {
|
|
5839
|
+
"type": [
|
|
5840
|
+
"string",
|
|
5841
|
+
"null"
|
|
5842
|
+
],
|
|
5843
|
+
"format": "date-time"
|
|
5844
|
+
}
|
|
5845
|
+
}
|
|
5846
|
+
},
|
|
5514
5847
|
"BookingsPagination": {
|
|
5515
5848
|
"description": "Pagination for a bookings page. `truncated` is the extra statement: the underlying read is capped, and when the cap binds there are matching bookings no cursor from this call reaches — narrow the window.",
|
|
5516
5849
|
"type": "object",
|
|
@@ -6733,6 +7066,12 @@
|
|
|
6733
7066
|
"ApiResponse_BookingRescheduleResult": {
|
|
6734
7067
|
"$ref": "#/components/schemas/Envelope_BookingRescheduleResult"
|
|
6735
7068
|
},
|
|
7069
|
+
"ApiResponse_BookingPaymentStart": {
|
|
7070
|
+
"$ref": "#/components/schemas/Envelope_BookingPaymentStart"
|
|
7071
|
+
},
|
|
7072
|
+
"ApiResponse_BookingPayment": {
|
|
7073
|
+
"$ref": "#/components/schemas/Envelope_BookingPayment"
|
|
7074
|
+
},
|
|
6736
7075
|
"ApiResponse_ManageSummary": {
|
|
6737
7076
|
"$ref": "#/components/schemas/Envelope_ManageSummary"
|
|
6738
7077
|
},
|
|
@@ -7316,6 +7655,28 @@
|
|
|
7316
7655
|
}
|
|
7317
7656
|
}
|
|
7318
7657
|
},
|
|
7658
|
+
"Envelope_BookingPaymentStart": {
|
|
7659
|
+
"type": "object",
|
|
7660
|
+
"required": [
|
|
7661
|
+
"data"
|
|
7662
|
+
],
|
|
7663
|
+
"properties": {
|
|
7664
|
+
"data": {
|
|
7665
|
+
"$ref": "#/components/schemas/BookingPaymentStart"
|
|
7666
|
+
}
|
|
7667
|
+
}
|
|
7668
|
+
},
|
|
7669
|
+
"Envelope_BookingPayment": {
|
|
7670
|
+
"type": "object",
|
|
7671
|
+
"required": [
|
|
7672
|
+
"data"
|
|
7673
|
+
],
|
|
7674
|
+
"properties": {
|
|
7675
|
+
"data": {
|
|
7676
|
+
"$ref": "#/components/schemas/BookingPayment"
|
|
7677
|
+
}
|
|
7678
|
+
}
|
|
7679
|
+
},
|
|
7319
7680
|
"Envelope_ManageSummary": {
|
|
7320
7681
|
"type": "object",
|
|
7321
7682
|
"required": [
|