@medalsocial/sdk 1.7.0 → 1.9.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 +63 -0
- package/dist/openapi/medal-social.openapi.json +1842 -258
- package/dist/pilot/index.d.mts +2 -2
- package/dist/pilot/index.d.ts +2 -2
- package/dist/src/index.d.mts +418 -3
- package/dist/src/index.d.ts +418 -3
- package/dist/src/index.js +205 -19
- package/dist/src/index.js.map +1 -1
- package/dist/src/index.mjs +204 -19
- package/dist/src/index.mjs.map +1 -1
- package/dist/src/openapi.generated.d.mts +912 -18
- package/dist/src/openapi.generated.d.ts +912 -18
- package/dist/src/openapi.generated.js.map +1 -1
- package/openapi/medal-social.openapi.yaml +1024 -43
- package/package.json +1 -1
- package/skills/client/SKILL.md +2 -0
- package/skills/resources/SKILL.md +53 -2
|
@@ -42,6 +42,10 @@
|
|
|
42
42
|
"name": "Bookings",
|
|
43
43
|
"description": "Appointment bookings — the service catalogue, free slots, staff actions on a booking, and the customer-facing manage-token routes. Money is always integer øre."
|
|
44
44
|
},
|
|
45
|
+
{
|
|
46
|
+
"name": "Portal",
|
|
47
|
+
"description": "Customer self-service portal — e-mail one-time-code login, then session-bound access to the signed-in contact's own profile, bookings, data export and erasure. Session routes carry `X-Portal-Session`."
|
|
48
|
+
},
|
|
45
49
|
{
|
|
46
50
|
"name": "GDPR",
|
|
47
51
|
"description": "Manage exports, consent records, and cookie consent."
|
|
@@ -1225,6 +1229,261 @@
|
|
|
1225
1229
|
}
|
|
1226
1230
|
}
|
|
1227
1231
|
},
|
|
1232
|
+
"/api/v1/bookings/persons": {
|
|
1233
|
+
"get": {
|
|
1234
|
+
"tags": [
|
|
1235
|
+
"Bookings"
|
|
1236
|
+
],
|
|
1237
|
+
"operationId": "listContactPersons",
|
|
1238
|
+
"summary": "List a contact's persons",
|
|
1239
|
+
"description": "Persons a contact books for — a child, a pet, an employee. No login of their own. Active-only unless `include_inactive` is set.",
|
|
1240
|
+
"parameters": [
|
|
1241
|
+
{
|
|
1242
|
+
"name": "contact_id",
|
|
1243
|
+
"in": "query",
|
|
1244
|
+
"required": true,
|
|
1245
|
+
"schema": {
|
|
1246
|
+
"type": "string"
|
|
1247
|
+
}
|
|
1248
|
+
},
|
|
1249
|
+
{
|
|
1250
|
+
"name": "include_inactive",
|
|
1251
|
+
"in": "query",
|
|
1252
|
+
"schema": {
|
|
1253
|
+
"type": "boolean"
|
|
1254
|
+
}
|
|
1255
|
+
}
|
|
1256
|
+
],
|
|
1257
|
+
"responses": {
|
|
1258
|
+
"200": {
|
|
1259
|
+
"description": "Contact persons.",
|
|
1260
|
+
"content": {
|
|
1261
|
+
"application/json": {
|
|
1262
|
+
"schema": {
|
|
1263
|
+
"$ref": "#/components/schemas/ApiResponse_ContactPersonArray"
|
|
1264
|
+
}
|
|
1265
|
+
}
|
|
1266
|
+
}
|
|
1267
|
+
},
|
|
1268
|
+
"default": {
|
|
1269
|
+
"$ref": "#/components/responses/ApiError"
|
|
1270
|
+
}
|
|
1271
|
+
}
|
|
1272
|
+
},
|
|
1273
|
+
"post": {
|
|
1274
|
+
"tags": [
|
|
1275
|
+
"Bookings"
|
|
1276
|
+
],
|
|
1277
|
+
"operationId": "createContactPerson",
|
|
1278
|
+
"summary": "Add a person under a contact",
|
|
1279
|
+
"requestBody": {
|
|
1280
|
+
"required": true,
|
|
1281
|
+
"content": {
|
|
1282
|
+
"application/json": {
|
|
1283
|
+
"schema": {
|
|
1284
|
+
"$ref": "#/components/schemas/CreateContactPersonInput"
|
|
1285
|
+
}
|
|
1286
|
+
}
|
|
1287
|
+
}
|
|
1288
|
+
},
|
|
1289
|
+
"responses": {
|
|
1290
|
+
"201": {
|
|
1291
|
+
"description": "Created person.",
|
|
1292
|
+
"content": {
|
|
1293
|
+
"application/json": {
|
|
1294
|
+
"schema": {
|
|
1295
|
+
"$ref": "#/components/schemas/ApiResponse_ContactPerson"
|
|
1296
|
+
}
|
|
1297
|
+
}
|
|
1298
|
+
}
|
|
1299
|
+
},
|
|
1300
|
+
"default": {
|
|
1301
|
+
"$ref": "#/components/responses/ApiError"
|
|
1302
|
+
}
|
|
1303
|
+
}
|
|
1304
|
+
}
|
|
1305
|
+
},
|
|
1306
|
+
"/api/v1/bookings/relations": {
|
|
1307
|
+
"get": {
|
|
1308
|
+
"tags": [
|
|
1309
|
+
"Bookings"
|
|
1310
|
+
],
|
|
1311
|
+
"operationId": "listContactRelations",
|
|
1312
|
+
"summary": "List a contact's relations",
|
|
1313
|
+
"description": "Directional relations a contact holds, split into outgoing and incoming.",
|
|
1314
|
+
"parameters": [
|
|
1315
|
+
{
|
|
1316
|
+
"name": "contact_id",
|
|
1317
|
+
"in": "query",
|
|
1318
|
+
"required": true,
|
|
1319
|
+
"schema": {
|
|
1320
|
+
"type": "string"
|
|
1321
|
+
}
|
|
1322
|
+
}
|
|
1323
|
+
],
|
|
1324
|
+
"responses": {
|
|
1325
|
+
"200": {
|
|
1326
|
+
"description": "Outgoing and incoming relations.",
|
|
1327
|
+
"content": {
|
|
1328
|
+
"application/json": {
|
|
1329
|
+
"schema": {
|
|
1330
|
+
"$ref": "#/components/schemas/ApiResponse_ContactRelations"
|
|
1331
|
+
}
|
|
1332
|
+
}
|
|
1333
|
+
}
|
|
1334
|
+
},
|
|
1335
|
+
"default": {
|
|
1336
|
+
"$ref": "#/components/responses/ApiError"
|
|
1337
|
+
}
|
|
1338
|
+
}
|
|
1339
|
+
},
|
|
1340
|
+
"post": {
|
|
1341
|
+
"tags": [
|
|
1342
|
+
"Bookings"
|
|
1343
|
+
],
|
|
1344
|
+
"operationId": "createContactRelation",
|
|
1345
|
+
"summary": "Create a relation from one contact to another",
|
|
1346
|
+
"requestBody": {
|
|
1347
|
+
"required": true,
|
|
1348
|
+
"content": {
|
|
1349
|
+
"application/json": {
|
|
1350
|
+
"schema": {
|
|
1351
|
+
"$ref": "#/components/schemas/CreateContactRelationInput"
|
|
1352
|
+
}
|
|
1353
|
+
}
|
|
1354
|
+
}
|
|
1355
|
+
},
|
|
1356
|
+
"responses": {
|
|
1357
|
+
"201": {
|
|
1358
|
+
"description": "Created relation id.",
|
|
1359
|
+
"content": {
|
|
1360
|
+
"application/json": {
|
|
1361
|
+
"schema": {
|
|
1362
|
+
"$ref": "#/components/schemas/ApiResponse_CreateContactRelationResult"
|
|
1363
|
+
}
|
|
1364
|
+
}
|
|
1365
|
+
}
|
|
1366
|
+
},
|
|
1367
|
+
"default": {
|
|
1368
|
+
"$ref": "#/components/responses/ApiError"
|
|
1369
|
+
}
|
|
1370
|
+
}
|
|
1371
|
+
}
|
|
1372
|
+
},
|
|
1373
|
+
"/api/v1/bookings/events": {
|
|
1374
|
+
"get": {
|
|
1375
|
+
"tags": [
|
|
1376
|
+
"Bookings"
|
|
1377
|
+
],
|
|
1378
|
+
"operationId": "listBookingEvents",
|
|
1379
|
+
"summary": "List arrangementer in a date range",
|
|
1380
|
+
"parameters": [
|
|
1381
|
+
{
|
|
1382
|
+
"name": "from",
|
|
1383
|
+
"in": "query",
|
|
1384
|
+
"required": true,
|
|
1385
|
+
"description": "Start of the window, `yyyy-mm-dd`, inclusive.",
|
|
1386
|
+
"schema": {
|
|
1387
|
+
"type": "string",
|
|
1388
|
+
"format": "date"
|
|
1389
|
+
}
|
|
1390
|
+
},
|
|
1391
|
+
{
|
|
1392
|
+
"name": "to",
|
|
1393
|
+
"in": "query",
|
|
1394
|
+
"required": true,
|
|
1395
|
+
"description": "End of the window, `yyyy-mm-dd`, inclusive.",
|
|
1396
|
+
"schema": {
|
|
1397
|
+
"type": "string",
|
|
1398
|
+
"format": "date"
|
|
1399
|
+
}
|
|
1400
|
+
},
|
|
1401
|
+
{
|
|
1402
|
+
"name": "status",
|
|
1403
|
+
"in": "query",
|
|
1404
|
+
"schema": {
|
|
1405
|
+
"$ref": "#/components/schemas/BookingEventStatus"
|
|
1406
|
+
}
|
|
1407
|
+
}
|
|
1408
|
+
],
|
|
1409
|
+
"responses": {
|
|
1410
|
+
"200": {
|
|
1411
|
+
"description": "Arrangementer in the window.",
|
|
1412
|
+
"content": {
|
|
1413
|
+
"application/json": {
|
|
1414
|
+
"schema": {
|
|
1415
|
+
"$ref": "#/components/schemas/ApiResponse_BookingEventArray"
|
|
1416
|
+
}
|
|
1417
|
+
}
|
|
1418
|
+
}
|
|
1419
|
+
},
|
|
1420
|
+
"default": {
|
|
1421
|
+
"$ref": "#/components/responses/ApiError"
|
|
1422
|
+
}
|
|
1423
|
+
}
|
|
1424
|
+
},
|
|
1425
|
+
"post": {
|
|
1426
|
+
"tags": [
|
|
1427
|
+
"Bookings"
|
|
1428
|
+
],
|
|
1429
|
+
"operationId": "createBookingEvent",
|
|
1430
|
+
"summary": "Create an arrangement from a template",
|
|
1431
|
+
"requestBody": {
|
|
1432
|
+
"required": true,
|
|
1433
|
+
"content": {
|
|
1434
|
+
"application/json": {
|
|
1435
|
+
"schema": {
|
|
1436
|
+
"$ref": "#/components/schemas/CreateBookingEventInput"
|
|
1437
|
+
}
|
|
1438
|
+
}
|
|
1439
|
+
}
|
|
1440
|
+
},
|
|
1441
|
+
"responses": {
|
|
1442
|
+
"201": {
|
|
1443
|
+
"description": "Created arrangement.",
|
|
1444
|
+
"content": {
|
|
1445
|
+
"application/json": {
|
|
1446
|
+
"schema": {
|
|
1447
|
+
"$ref": "#/components/schemas/ApiResponse_BookingEvent"
|
|
1448
|
+
}
|
|
1449
|
+
}
|
|
1450
|
+
}
|
|
1451
|
+
},
|
|
1452
|
+
"default": {
|
|
1453
|
+
"$ref": "#/components/responses/ApiError"
|
|
1454
|
+
}
|
|
1455
|
+
}
|
|
1456
|
+
}
|
|
1457
|
+
},
|
|
1458
|
+
"/api/v1/bookings/events/{id}": {
|
|
1459
|
+
"parameters": [
|
|
1460
|
+
{
|
|
1461
|
+
"$ref": "#/components/parameters/Id"
|
|
1462
|
+
}
|
|
1463
|
+
],
|
|
1464
|
+
"get": {
|
|
1465
|
+
"tags": [
|
|
1466
|
+
"Bookings"
|
|
1467
|
+
],
|
|
1468
|
+
"operationId": "getBookingEvent",
|
|
1469
|
+
"summary": "Get an arrangement",
|
|
1470
|
+
"responses": {
|
|
1471
|
+
"200": {
|
|
1472
|
+
"description": "Arrangement.",
|
|
1473
|
+
"content": {
|
|
1474
|
+
"application/json": {
|
|
1475
|
+
"schema": {
|
|
1476
|
+
"$ref": "#/components/schemas/ApiResponse_BookingEvent"
|
|
1477
|
+
}
|
|
1478
|
+
}
|
|
1479
|
+
}
|
|
1480
|
+
},
|
|
1481
|
+
"default": {
|
|
1482
|
+
"$ref": "#/components/responses/ApiError"
|
|
1483
|
+
}
|
|
1484
|
+
}
|
|
1485
|
+
}
|
|
1486
|
+
},
|
|
1228
1487
|
"/api/v1/bookings/{id}": {
|
|
1229
1488
|
"parameters": [
|
|
1230
1489
|
{
|
|
@@ -1504,20 +1763,31 @@
|
|
|
1504
1763
|
}
|
|
1505
1764
|
}
|
|
1506
1765
|
},
|
|
1507
|
-
"/api/v1/
|
|
1766
|
+
"/api/v1/portal/login/start": {
|
|
1508
1767
|
"post": {
|
|
1509
1768
|
"tags": [
|
|
1510
|
-
"
|
|
1769
|
+
"Portal"
|
|
1511
1770
|
],
|
|
1512
|
-
"operationId": "
|
|
1513
|
-
"summary": "
|
|
1771
|
+
"operationId": "startPortalLogin",
|
|
1772
|
+
"summary": "E-mail a one-time login code",
|
|
1773
|
+
"description": "Always answers 202 `{ status: \"sent\" }`, whether or not the address belongs to a contact — enumeration-safe by design. Rate-limited per address and per caller (`429 RATE_LIMITED`). Not idempotency-keyed. Errors: `400 VALIDATION_ERROR`, `403 FORBIDDEN` (key lacks `write:portal`), `429 RATE_LIMITED`.",
|
|
1774
|
+
"requestBody": {
|
|
1775
|
+
"required": true,
|
|
1776
|
+
"content": {
|
|
1777
|
+
"application/json": {
|
|
1778
|
+
"schema": {
|
|
1779
|
+
"$ref": "#/components/schemas/PortalLoginStartInput"
|
|
1780
|
+
}
|
|
1781
|
+
}
|
|
1782
|
+
}
|
|
1783
|
+
},
|
|
1514
1784
|
"responses": {
|
|
1515
|
-
"
|
|
1516
|
-
"description": "
|
|
1785
|
+
"202": {
|
|
1786
|
+
"description": "Code queued (or silently not, for an unknown address).",
|
|
1517
1787
|
"content": {
|
|
1518
1788
|
"application/json": {
|
|
1519
1789
|
"schema": {
|
|
1520
|
-
"$ref": "#/components/schemas/
|
|
1790
|
+
"$ref": "#/components/schemas/ApiResponse_PortalLoginStartResult"
|
|
1521
1791
|
}
|
|
1522
1792
|
}
|
|
1523
1793
|
}
|
|
@@ -1528,20 +1798,31 @@
|
|
|
1528
1798
|
}
|
|
1529
1799
|
}
|
|
1530
1800
|
},
|
|
1531
|
-
"/api/v1/
|
|
1532
|
-
"
|
|
1801
|
+
"/api/v1/portal/login/verify": {
|
|
1802
|
+
"post": {
|
|
1533
1803
|
"tags": [
|
|
1534
|
-
"
|
|
1804
|
+
"Portal"
|
|
1535
1805
|
],
|
|
1536
|
-
"operationId": "
|
|
1537
|
-
"summary": "
|
|
1806
|
+
"operationId": "verifyPortalLogin",
|
|
1807
|
+
"summary": "Exchange the e-mailed code for a session",
|
|
1808
|
+
"description": "A wrong, burned or expired code all answer `401 PORTAL_CODE_INVALID` — the three are not distinguished, so the response is not an oracle for which codes exist. The returned `session_token` is a bearer credential for ONE contact: keep it in an HttpOnly cookie on the site's server and never hand it to the browser. Not idempotency-keyed. Errors: `400 VALIDATION_ERROR`, `401 PORTAL_CODE_INVALID`, `403 FORBIDDEN`, `429 RATE_LIMITED`.",
|
|
1809
|
+
"requestBody": {
|
|
1810
|
+
"required": true,
|
|
1811
|
+
"content": {
|
|
1812
|
+
"application/json": {
|
|
1813
|
+
"schema": {
|
|
1814
|
+
"$ref": "#/components/schemas/PortalVerifyInput"
|
|
1815
|
+
}
|
|
1816
|
+
}
|
|
1817
|
+
}
|
|
1818
|
+
},
|
|
1538
1819
|
"responses": {
|
|
1539
1820
|
"200": {
|
|
1540
|
-
"description": "
|
|
1821
|
+
"description": "The new session.",
|
|
1541
1822
|
"content": {
|
|
1542
1823
|
"application/json": {
|
|
1543
1824
|
"schema": {
|
|
1544
|
-
"$ref": "#/components/schemas/
|
|
1825
|
+
"$ref": "#/components/schemas/ApiResponse_PortalSession"
|
|
1545
1826
|
}
|
|
1546
1827
|
}
|
|
1547
1828
|
}
|
|
@@ -1552,23 +1833,240 @@
|
|
|
1552
1833
|
}
|
|
1553
1834
|
}
|
|
1554
1835
|
},
|
|
1555
|
-
"/api/v1/
|
|
1836
|
+
"/api/v1/portal/logout": {
|
|
1556
1837
|
"parameters": [
|
|
1557
1838
|
{
|
|
1558
|
-
"$ref": "#/components/parameters/
|
|
1839
|
+
"$ref": "#/components/parameters/PortalSession"
|
|
1559
1840
|
}
|
|
1560
1841
|
],
|
|
1561
|
-
"
|
|
1842
|
+
"post": {
|
|
1562
1843
|
"tags": [
|
|
1563
|
-
"
|
|
1844
|
+
"Portal"
|
|
1564
1845
|
],
|
|
1565
|
-
"operationId": "
|
|
1566
|
-
"summary": "
|
|
1846
|
+
"operationId": "logoutPortal",
|
|
1847
|
+
"summary": "Revoke the session",
|
|
1848
|
+
"description": "Revoking twice reaches the same state — the second call answers `401 PORTAL_SESSION_INVALID`. Not idempotency-keyed. Errors: `401 PORTAL_SESSION_REQUIRED` (header missing), `401 PORTAL_SESSION_INVALID` (unknown, expired or revoked), `403 FORBIDDEN`, `429 RATE_LIMITED`.",
|
|
1567
1849
|
"responses": {
|
|
1568
|
-
"
|
|
1569
|
-
"description": "
|
|
1570
|
-
|
|
1571
|
-
|
|
1850
|
+
"204": {
|
|
1851
|
+
"description": "Session revoked."
|
|
1852
|
+
},
|
|
1853
|
+
"default": {
|
|
1854
|
+
"$ref": "#/components/responses/ApiError"
|
|
1855
|
+
}
|
|
1856
|
+
}
|
|
1857
|
+
}
|
|
1858
|
+
},
|
|
1859
|
+
"/api/v1/portal/me": {
|
|
1860
|
+
"parameters": [
|
|
1861
|
+
{
|
|
1862
|
+
"$ref": "#/components/parameters/PortalSession"
|
|
1863
|
+
}
|
|
1864
|
+
],
|
|
1865
|
+
"get": {
|
|
1866
|
+
"tags": [
|
|
1867
|
+
"Portal"
|
|
1868
|
+
],
|
|
1869
|
+
"operationId": "getPortalProfile",
|
|
1870
|
+
"summary": "The signed-in contact's profile",
|
|
1871
|
+
"description": "Errors: `401 PORTAL_SESSION_REQUIRED`, `401 PORTAL_SESSION_INVALID`, `403 FORBIDDEN` (key lacks `read:portal`), `429 RATE_LIMITED`.",
|
|
1872
|
+
"responses": {
|
|
1873
|
+
"200": {
|
|
1874
|
+
"description": "Profile.",
|
|
1875
|
+
"content": {
|
|
1876
|
+
"application/json": {
|
|
1877
|
+
"schema": {
|
|
1878
|
+
"$ref": "#/components/schemas/ApiResponse_PortalProfile"
|
|
1879
|
+
}
|
|
1880
|
+
}
|
|
1881
|
+
}
|
|
1882
|
+
},
|
|
1883
|
+
"default": {
|
|
1884
|
+
"$ref": "#/components/responses/ApiError"
|
|
1885
|
+
}
|
|
1886
|
+
}
|
|
1887
|
+
},
|
|
1888
|
+
"patch": {
|
|
1889
|
+
"tags": [
|
|
1890
|
+
"Portal"
|
|
1891
|
+
],
|
|
1892
|
+
"operationId": "updatePortalProfile",
|
|
1893
|
+
"summary": "Update the signed-in contact's profile",
|
|
1894
|
+
"description": "Only the supplied fields change. `phone: null` clears the number, `family` replaces the whole list, and `marketing_consent` records a `marketing_email` consent decision with source `portal`. Answers the profile as it is after the change. Errors: `400 VALIDATION_ERROR`, `401 PORTAL_SESSION_REQUIRED`, `401 PORTAL_SESSION_INVALID`, `403 FORBIDDEN` (key lacks `write:portal`), `429 RATE_LIMITED`.",
|
|
1895
|
+
"requestBody": {
|
|
1896
|
+
"required": true,
|
|
1897
|
+
"content": {
|
|
1898
|
+
"application/json": {
|
|
1899
|
+
"schema": {
|
|
1900
|
+
"$ref": "#/components/schemas/PortalProfilePatch"
|
|
1901
|
+
}
|
|
1902
|
+
}
|
|
1903
|
+
}
|
|
1904
|
+
},
|
|
1905
|
+
"responses": {
|
|
1906
|
+
"200": {
|
|
1907
|
+
"description": "Updated profile.",
|
|
1908
|
+
"content": {
|
|
1909
|
+
"application/json": {
|
|
1910
|
+
"schema": {
|
|
1911
|
+
"$ref": "#/components/schemas/ApiResponse_PortalProfile"
|
|
1912
|
+
}
|
|
1913
|
+
}
|
|
1914
|
+
}
|
|
1915
|
+
},
|
|
1916
|
+
"default": {
|
|
1917
|
+
"$ref": "#/components/responses/ApiError"
|
|
1918
|
+
}
|
|
1919
|
+
}
|
|
1920
|
+
}
|
|
1921
|
+
},
|
|
1922
|
+
"/api/v1/portal/me/bookings": {
|
|
1923
|
+
"parameters": [
|
|
1924
|
+
{
|
|
1925
|
+
"$ref": "#/components/parameters/PortalSession"
|
|
1926
|
+
}
|
|
1927
|
+
],
|
|
1928
|
+
"get": {
|
|
1929
|
+
"tags": [
|
|
1930
|
+
"Portal"
|
|
1931
|
+
],
|
|
1932
|
+
"operationId": "listPortalBookings",
|
|
1933
|
+
"summary": "The signed-in contact's bookings",
|
|
1934
|
+
"description": "Split into `upcoming` and `past`. An upcoming booking still inside the workspace's policy windows carries `manage_token` and `can_manage: true`; the token opens the site's manage page. Errors: `401 PORTAL_SESSION_REQUIRED`, `401 PORTAL_SESSION_INVALID`, `403 FORBIDDEN`, `429 RATE_LIMITED`.",
|
|
1935
|
+
"responses": {
|
|
1936
|
+
"200": {
|
|
1937
|
+
"description": "Bookings.",
|
|
1938
|
+
"content": {
|
|
1939
|
+
"application/json": {
|
|
1940
|
+
"schema": {
|
|
1941
|
+
"$ref": "#/components/schemas/ApiResponse_PortalBookings"
|
|
1942
|
+
}
|
|
1943
|
+
}
|
|
1944
|
+
}
|
|
1945
|
+
},
|
|
1946
|
+
"default": {
|
|
1947
|
+
"$ref": "#/components/responses/ApiError"
|
|
1948
|
+
}
|
|
1949
|
+
}
|
|
1950
|
+
}
|
|
1951
|
+
},
|
|
1952
|
+
"/api/v1/portal/me/export": {
|
|
1953
|
+
"parameters": [
|
|
1954
|
+
{
|
|
1955
|
+
"$ref": "#/components/parameters/PortalSession"
|
|
1956
|
+
}
|
|
1957
|
+
],
|
|
1958
|
+
"post": {
|
|
1959
|
+
"tags": [
|
|
1960
|
+
"Portal"
|
|
1961
|
+
],
|
|
1962
|
+
"operationId": "exportPortalData",
|
|
1963
|
+
"summary": "Export everything held about the signed-in contact",
|
|
1964
|
+
"description": "A synchronous GDPR Art. 15 export of the contact's profile, family, consents and bookings, as one JSON document. Unlike `GET /api/v1/portal/me`, `contact.persons` here includes inactive persons so the export is a complete dump. `relations` lists every relation the contact is a party to, exposing only the counterpart's display name. Read-only, so not idempotency-keyed. Errors: `401 PORTAL_SESSION_REQUIRED`, `401 PORTAL_SESSION_INVALID`, `403 FORBIDDEN`, `429 RATE_LIMITED`.",
|
|
1965
|
+
"responses": {
|
|
1966
|
+
"200": {
|
|
1967
|
+
"description": "The export.",
|
|
1968
|
+
"content": {
|
|
1969
|
+
"application/json": {
|
|
1970
|
+
"schema": {
|
|
1971
|
+
"$ref": "#/components/schemas/ApiResponse_PortalExport"
|
|
1972
|
+
}
|
|
1973
|
+
}
|
|
1974
|
+
}
|
|
1975
|
+
},
|
|
1976
|
+
"default": {
|
|
1977
|
+
"$ref": "#/components/responses/ApiError"
|
|
1978
|
+
}
|
|
1979
|
+
}
|
|
1980
|
+
}
|
|
1981
|
+
},
|
|
1982
|
+
"/api/v1/portal/me/delete": {
|
|
1983
|
+
"parameters": [
|
|
1984
|
+
{
|
|
1985
|
+
"$ref": "#/components/parameters/PortalSession"
|
|
1986
|
+
}
|
|
1987
|
+
],
|
|
1988
|
+
"post": {
|
|
1989
|
+
"tags": [
|
|
1990
|
+
"Portal"
|
|
1991
|
+
],
|
|
1992
|
+
"operationId": "deletePortalAccount",
|
|
1993
|
+
"summary": "Erase the signed-in contact",
|
|
1994
|
+
"description": "GDPR Art. 17 erasure. The session is revoked as part of the deletion, so a retry answers `401 PORTAL_SESSION_INVALID` rather than deleting anything else. Not idempotency-keyed. Errors: `401 PORTAL_SESSION_REQUIRED`, `401 PORTAL_SESSION_INVALID`, `403 FORBIDDEN` (key lacks `write:portal`), `429 RATE_LIMITED`.",
|
|
1995
|
+
"responses": {
|
|
1996
|
+
"204": {
|
|
1997
|
+
"description": "Contact erased and session revoked."
|
|
1998
|
+
},
|
|
1999
|
+
"default": {
|
|
2000
|
+
"$ref": "#/components/responses/ApiError"
|
|
2001
|
+
}
|
|
2002
|
+
}
|
|
2003
|
+
}
|
|
2004
|
+
},
|
|
2005
|
+
"/api/v1/gdpr/export": {
|
|
2006
|
+
"post": {
|
|
2007
|
+
"tags": [
|
|
2008
|
+
"GDPR"
|
|
2009
|
+
],
|
|
2010
|
+
"operationId": "requestGdprExport",
|
|
2011
|
+
"summary": "Request a GDPR export",
|
|
2012
|
+
"responses": {
|
|
2013
|
+
"200": {
|
|
2014
|
+
"description": "Export request reference.",
|
|
2015
|
+
"content": {
|
|
2016
|
+
"application/json": {
|
|
2017
|
+
"schema": {
|
|
2018
|
+
"$ref": "#/components/schemas/ApiResponse_GdprExportRequest"
|
|
2019
|
+
}
|
|
2020
|
+
}
|
|
2021
|
+
}
|
|
2022
|
+
},
|
|
2023
|
+
"default": {
|
|
2024
|
+
"$ref": "#/components/responses/ApiError"
|
|
2025
|
+
}
|
|
2026
|
+
}
|
|
2027
|
+
}
|
|
2028
|
+
},
|
|
2029
|
+
"/api/v1/gdpr/exports": {
|
|
2030
|
+
"get": {
|
|
2031
|
+
"tags": [
|
|
2032
|
+
"GDPR"
|
|
2033
|
+
],
|
|
2034
|
+
"operationId": "listGdprExports",
|
|
2035
|
+
"summary": "List GDPR exports",
|
|
2036
|
+
"responses": {
|
|
2037
|
+
"200": {
|
|
2038
|
+
"description": "Export requests.",
|
|
2039
|
+
"content": {
|
|
2040
|
+
"application/json": {
|
|
2041
|
+
"schema": {
|
|
2042
|
+
"$ref": "#/components/schemas/ApiResponse_GdprExportArray"
|
|
2043
|
+
}
|
|
2044
|
+
}
|
|
2045
|
+
}
|
|
2046
|
+
},
|
|
2047
|
+
"default": {
|
|
2048
|
+
"$ref": "#/components/responses/ApiError"
|
|
2049
|
+
}
|
|
2050
|
+
}
|
|
2051
|
+
}
|
|
2052
|
+
},
|
|
2053
|
+
"/api/v1/gdpr/exports/{id}": {
|
|
2054
|
+
"parameters": [
|
|
2055
|
+
{
|
|
2056
|
+
"$ref": "#/components/parameters/Id"
|
|
2057
|
+
}
|
|
2058
|
+
],
|
|
2059
|
+
"get": {
|
|
2060
|
+
"tags": [
|
|
2061
|
+
"GDPR"
|
|
2062
|
+
],
|
|
2063
|
+
"operationId": "getGdprExport",
|
|
2064
|
+
"summary": "Get a GDPR export",
|
|
2065
|
+
"responses": {
|
|
2066
|
+
"200": {
|
|
2067
|
+
"description": "Export request.",
|
|
2068
|
+
"content": {
|
|
2069
|
+
"application/json": {
|
|
1572
2070
|
"schema": {
|
|
1573
2071
|
"$ref": "#/components/schemas/ApiResponse_GdprExport"
|
|
1574
2072
|
}
|
|
@@ -2502,6 +3000,15 @@
|
|
|
2502
3000
|
"type": "string"
|
|
2503
3001
|
}
|
|
2504
3002
|
},
|
|
3003
|
+
"PortalSession": {
|
|
3004
|
+
"name": "X-Portal-Session",
|
|
3005
|
+
"in": "header",
|
|
3006
|
+
"required": true,
|
|
3007
|
+
"description": "The `session_token` returned by `verifyPortalLogin`. A bearer credential for ONE contact — the site's server keeps it in an HttpOnly cookie and forwards it here. Missing answers `401 PORTAL_SESSION_REQUIRED`; unknown, expired or revoked answers `401 PORTAL_SESSION_INVALID`.",
|
|
3008
|
+
"schema": {
|
|
3009
|
+
"type": "string"
|
|
3010
|
+
}
|
|
3011
|
+
},
|
|
2505
3012
|
"Cursor": {
|
|
2506
3013
|
"name": "cursor",
|
|
2507
3014
|
"in": "query",
|
|
@@ -4177,6 +4684,9 @@
|
|
|
4177
4684
|
"end_ts",
|
|
4178
4685
|
"booked_for_name",
|
|
4179
4686
|
"booked_for_birth_year",
|
|
4687
|
+
"booked_for_person_id",
|
|
4688
|
+
"event_id",
|
|
4689
|
+
"event_order",
|
|
4180
4690
|
"party_sequence_id",
|
|
4181
4691
|
"status",
|
|
4182
4692
|
"cancelled_by",
|
|
@@ -4239,6 +4749,27 @@
|
|
|
4239
4749
|
"null"
|
|
4240
4750
|
]
|
|
4241
4751
|
},
|
|
4752
|
+
"booked_for_person_id": {
|
|
4753
|
+
"description": "The ContactPerson this booking was made for, if any.",
|
|
4754
|
+
"type": [
|
|
4755
|
+
"string",
|
|
4756
|
+
"null"
|
|
4757
|
+
]
|
|
4758
|
+
},
|
|
4759
|
+
"event_id": {
|
|
4760
|
+
"description": "The BookingEvent this booking is a registration for, if any.",
|
|
4761
|
+
"type": [
|
|
4762
|
+
"string",
|
|
4763
|
+
"null"
|
|
4764
|
+
]
|
|
4765
|
+
},
|
|
4766
|
+
"event_order": {
|
|
4767
|
+
"description": "Position of this booking within its event's registrations, if any.",
|
|
4768
|
+
"type": [
|
|
4769
|
+
"integer",
|
|
4770
|
+
"null"
|
|
4771
|
+
]
|
|
4772
|
+
},
|
|
4242
4773
|
"party_sequence_id": {
|
|
4243
4774
|
"description": "Shared by every booking created in the same party request.",
|
|
4244
4775
|
"type": [
|
|
@@ -4647,6 +5178,10 @@
|
|
|
4647
5178
|
"type": "integer",
|
|
4648
5179
|
"minimum": 1900,
|
|
4649
5180
|
"maximum": 2200
|
|
5181
|
+
},
|
|
5182
|
+
"booked_for_person_id": {
|
|
5183
|
+
"description": "Book this line on behalf of a ContactPerson rather than the contact.",
|
|
5184
|
+
"type": "string"
|
|
4650
5185
|
}
|
|
4651
5186
|
}
|
|
4652
5187
|
},
|
|
@@ -6201,6 +6736,21 @@
|
|
|
6201
6736
|
"ApiResponse_ManageSummary": {
|
|
6202
6737
|
"$ref": "#/components/schemas/Envelope_ManageSummary"
|
|
6203
6738
|
},
|
|
6739
|
+
"ApiResponse_PortalLoginStartResult": {
|
|
6740
|
+
"$ref": "#/components/schemas/Envelope_PortalLoginStartResult"
|
|
6741
|
+
},
|
|
6742
|
+
"ApiResponse_PortalSession": {
|
|
6743
|
+
"$ref": "#/components/schemas/Envelope_PortalSession"
|
|
6744
|
+
},
|
|
6745
|
+
"ApiResponse_PortalProfile": {
|
|
6746
|
+
"$ref": "#/components/schemas/Envelope_PortalProfile"
|
|
6747
|
+
},
|
|
6748
|
+
"ApiResponse_PortalBookings": {
|
|
6749
|
+
"$ref": "#/components/schemas/Envelope_PortalBookings"
|
|
6750
|
+
},
|
|
6751
|
+
"ApiResponse_PortalExport": {
|
|
6752
|
+
"$ref": "#/components/schemas/Envelope_PortalExport"
|
|
6753
|
+
},
|
|
6204
6754
|
"ApiResponse_GdprExportRequest": {
|
|
6205
6755
|
"$ref": "#/components/schemas/Envelope_GdprExportRequest"
|
|
6206
6756
|
},
|
|
@@ -6777,52 +7327,597 @@
|
|
|
6777
7327
|
}
|
|
6778
7328
|
}
|
|
6779
7329
|
},
|
|
6780
|
-
"
|
|
7330
|
+
"PortalLoginStartInput": {
|
|
6781
7331
|
"type": "object",
|
|
6782
|
-
"
|
|
6783
|
-
|
|
6784
|
-
|
|
6785
|
-
|
|
6786
|
-
|
|
6787
|
-
|
|
6788
|
-
"
|
|
6789
|
-
|
|
6790
|
-
{
|
|
6791
|
-
"required": [
|
|
6792
|
-
"orgnr"
|
|
6793
|
-
]
|
|
6794
|
-
},
|
|
6795
|
-
{
|
|
6796
|
-
"required": [
|
|
6797
|
-
"name"
|
|
6798
|
-
]
|
|
6799
|
-
}
|
|
6800
|
-
]
|
|
6801
|
-
}
|
|
6802
|
-
},
|
|
6803
|
-
{
|
|
6804
|
-
"required": [
|
|
6805
|
-
"orgnr"
|
|
6806
|
-
],
|
|
6807
|
-
"not": {
|
|
6808
|
-
"anyOf": [
|
|
6809
|
-
{
|
|
6810
|
-
"required": [
|
|
6811
|
-
"url"
|
|
6812
|
-
]
|
|
6813
|
-
},
|
|
6814
|
-
{
|
|
6815
|
-
"required": [
|
|
6816
|
-
"name"
|
|
6817
|
-
]
|
|
6818
|
-
}
|
|
6819
|
-
]
|
|
6820
|
-
}
|
|
7332
|
+
"required": [
|
|
7333
|
+
"email"
|
|
7334
|
+
],
|
|
7335
|
+
"properties": {
|
|
7336
|
+
"email": {
|
|
7337
|
+
"type": "string",
|
|
7338
|
+
"format": "email",
|
|
7339
|
+
"description": "The address the code is sent to."
|
|
6821
7340
|
},
|
|
6822
|
-
{
|
|
6823
|
-
"
|
|
6824
|
-
|
|
6825
|
-
|
|
7341
|
+
"locale": {
|
|
7342
|
+
"type": "string",
|
|
7343
|
+
"description": "Locale for the e-mail (e.g. `nb`, `en`); the workspace default when omitted."
|
|
7344
|
+
}
|
|
7345
|
+
}
|
|
7346
|
+
},
|
|
7347
|
+
"PortalLoginStartResult": {
|
|
7348
|
+
"description": "Always `sent`, whether or not the address is a known contact — the route is enumeration-safe by design.",
|
|
7349
|
+
"type": "object",
|
|
7350
|
+
"required": [
|
|
7351
|
+
"status"
|
|
7352
|
+
],
|
|
7353
|
+
"properties": {
|
|
7354
|
+
"status": {
|
|
7355
|
+
"type": "string",
|
|
7356
|
+
"const": "sent"
|
|
7357
|
+
}
|
|
7358
|
+
}
|
|
7359
|
+
},
|
|
7360
|
+
"PortalVerifyInput": {
|
|
7361
|
+
"type": "object",
|
|
7362
|
+
"required": [
|
|
7363
|
+
"email",
|
|
7364
|
+
"code"
|
|
7365
|
+
],
|
|
7366
|
+
"properties": {
|
|
7367
|
+
"email": {
|
|
7368
|
+
"type": "string",
|
|
7369
|
+
"format": "email"
|
|
7370
|
+
},
|
|
7371
|
+
"code": {
|
|
7372
|
+
"type": "string",
|
|
7373
|
+
"description": "The one-time code from the e-mail."
|
|
7374
|
+
}
|
|
7375
|
+
}
|
|
7376
|
+
},
|
|
7377
|
+
"PortalContactSummary": {
|
|
7378
|
+
"type": "object",
|
|
7379
|
+
"required": [
|
|
7380
|
+
"contact_id",
|
|
7381
|
+
"first_name"
|
|
7382
|
+
],
|
|
7383
|
+
"properties": {
|
|
7384
|
+
"contact_id": {
|
|
7385
|
+
"type": "string"
|
|
7386
|
+
},
|
|
7387
|
+
"first_name": {
|
|
7388
|
+
"type": [
|
|
7389
|
+
"string",
|
|
7390
|
+
"null"
|
|
7391
|
+
]
|
|
7392
|
+
}
|
|
7393
|
+
}
|
|
7394
|
+
},
|
|
7395
|
+
"PortalSession": {
|
|
7396
|
+
"description": "A portal session. `session_token` is a bearer credential for ONE contact — keep it in an HttpOnly cookie on the site's server and never hand it to the browser.",
|
|
7397
|
+
"type": "object",
|
|
7398
|
+
"required": [
|
|
7399
|
+
"session_token",
|
|
7400
|
+
"expires_at",
|
|
7401
|
+
"contact"
|
|
7402
|
+
],
|
|
7403
|
+
"properties": {
|
|
7404
|
+
"session_token": {
|
|
7405
|
+
"type": "string"
|
|
7406
|
+
},
|
|
7407
|
+
"expires_at": {
|
|
7408
|
+
"type": "integer",
|
|
7409
|
+
"description": "Unix timestamp in milliseconds."
|
|
7410
|
+
},
|
|
7411
|
+
"contact": {
|
|
7412
|
+
"$ref": "#/components/schemas/PortalContactSummary"
|
|
7413
|
+
}
|
|
7414
|
+
}
|
|
7415
|
+
},
|
|
7416
|
+
"PortalFamilyMember": {
|
|
7417
|
+
"type": "object",
|
|
7418
|
+
"required": [
|
|
7419
|
+
"name",
|
|
7420
|
+
"birth_year"
|
|
7421
|
+
],
|
|
7422
|
+
"properties": {
|
|
7423
|
+
"name": {
|
|
7424
|
+
"type": "string"
|
|
7425
|
+
},
|
|
7426
|
+
"birth_year": {
|
|
7427
|
+
"type": "integer"
|
|
7428
|
+
}
|
|
7429
|
+
}
|
|
7430
|
+
},
|
|
7431
|
+
"PortalPerson": {
|
|
7432
|
+
"description": "A person the contact books for — a child, a pet — with no login of its own.",
|
|
7433
|
+
"type": "object",
|
|
7434
|
+
"required": [
|
|
7435
|
+
"person_id",
|
|
7436
|
+
"name",
|
|
7437
|
+
"birth_year",
|
|
7438
|
+
"relation_type",
|
|
7439
|
+
"relation_label",
|
|
7440
|
+
"notes",
|
|
7441
|
+
"active"
|
|
7442
|
+
],
|
|
7443
|
+
"properties": {
|
|
7444
|
+
"person_id": {
|
|
7445
|
+
"type": "string"
|
|
7446
|
+
},
|
|
7447
|
+
"name": {
|
|
7448
|
+
"type": "string"
|
|
7449
|
+
},
|
|
7450
|
+
"birth_year": {
|
|
7451
|
+
"type": [
|
|
7452
|
+
"integer",
|
|
7453
|
+
"null"
|
|
7454
|
+
]
|
|
7455
|
+
},
|
|
7456
|
+
"relation_type": {
|
|
7457
|
+
"$ref": "#/components/schemas/RelationType"
|
|
7458
|
+
},
|
|
7459
|
+
"relation_label": {
|
|
7460
|
+
"type": [
|
|
7461
|
+
"string",
|
|
7462
|
+
"null"
|
|
7463
|
+
]
|
|
7464
|
+
},
|
|
7465
|
+
"notes": {
|
|
7466
|
+
"type": [
|
|
7467
|
+
"string",
|
|
7468
|
+
"null"
|
|
7469
|
+
]
|
|
7470
|
+
},
|
|
7471
|
+
"active": {
|
|
7472
|
+
"type": "boolean",
|
|
7473
|
+
"description": "False for a person the customer removed or that was promoted to its own contact; `me` returns active persons only, the export returns all."
|
|
7474
|
+
}
|
|
7475
|
+
}
|
|
7476
|
+
},
|
|
7477
|
+
"PortalLabels": {
|
|
7478
|
+
"description": "The workspace's own words for the person concept, e.g. `\"Barn\"`.",
|
|
7479
|
+
"type": "object",
|
|
7480
|
+
"required": [
|
|
7481
|
+
"person",
|
|
7482
|
+
"persons"
|
|
7483
|
+
],
|
|
7484
|
+
"properties": {
|
|
7485
|
+
"person": {
|
|
7486
|
+
"type": "string"
|
|
7487
|
+
},
|
|
7488
|
+
"persons": {
|
|
7489
|
+
"type": "string"
|
|
7490
|
+
}
|
|
7491
|
+
}
|
|
7492
|
+
},
|
|
7493
|
+
"PortalProfile": {
|
|
7494
|
+
"type": "object",
|
|
7495
|
+
"required": [
|
|
7496
|
+
"contact_id",
|
|
7497
|
+
"email",
|
|
7498
|
+
"first_name",
|
|
7499
|
+
"last_name",
|
|
7500
|
+
"phone",
|
|
7501
|
+
"family",
|
|
7502
|
+
"persons",
|
|
7503
|
+
"labels",
|
|
7504
|
+
"marketing_consent",
|
|
7505
|
+
"created_at"
|
|
7506
|
+
],
|
|
7507
|
+
"properties": {
|
|
7508
|
+
"contact_id": {
|
|
7509
|
+
"type": "string"
|
|
7510
|
+
},
|
|
7511
|
+
"email": {
|
|
7512
|
+
"type": "string"
|
|
7513
|
+
},
|
|
7514
|
+
"first_name": {
|
|
7515
|
+
"type": [
|
|
7516
|
+
"string",
|
|
7517
|
+
"null"
|
|
7518
|
+
]
|
|
7519
|
+
},
|
|
7520
|
+
"last_name": {
|
|
7521
|
+
"type": [
|
|
7522
|
+
"string",
|
|
7523
|
+
"null"
|
|
7524
|
+
]
|
|
7525
|
+
},
|
|
7526
|
+
"phone": {
|
|
7527
|
+
"type": [
|
|
7528
|
+
"string",
|
|
7529
|
+
"null"
|
|
7530
|
+
]
|
|
7531
|
+
},
|
|
7532
|
+
"family": {
|
|
7533
|
+
"type": "array",
|
|
7534
|
+
"items": {
|
|
7535
|
+
"$ref": "#/components/schemas/PortalFamilyMember"
|
|
7536
|
+
}
|
|
7537
|
+
},
|
|
7538
|
+
"persons": {
|
|
7539
|
+
"type": "array",
|
|
7540
|
+
"items": {
|
|
7541
|
+
"$ref": "#/components/schemas/PortalPerson"
|
|
7542
|
+
}
|
|
7543
|
+
},
|
|
7544
|
+
"labels": {
|
|
7545
|
+
"$ref": "#/components/schemas/PortalLabels"
|
|
7546
|
+
},
|
|
7547
|
+
"marketing_consent": {
|
|
7548
|
+
"type": "boolean"
|
|
7549
|
+
},
|
|
7550
|
+
"created_at": {
|
|
7551
|
+
"type": "integer",
|
|
7552
|
+
"description": "Unix timestamp in milliseconds."
|
|
7553
|
+
}
|
|
7554
|
+
}
|
|
7555
|
+
},
|
|
7556
|
+
"PortalProfilePatch": {
|
|
7557
|
+
"description": "Only the supplied fields change.",
|
|
7558
|
+
"type": "object",
|
|
7559
|
+
"properties": {
|
|
7560
|
+
"first_name": {
|
|
7561
|
+
"type": "string"
|
|
7562
|
+
},
|
|
7563
|
+
"last_name": {
|
|
7564
|
+
"type": "string"
|
|
7565
|
+
},
|
|
7566
|
+
"phone": {
|
|
7567
|
+
"type": [
|
|
7568
|
+
"string",
|
|
7569
|
+
"null"
|
|
7570
|
+
],
|
|
7571
|
+
"description": "`null` clears the number."
|
|
7572
|
+
},
|
|
7573
|
+
"family": {
|
|
7574
|
+
"type": "array",
|
|
7575
|
+
"description": "Replaces the whole list.",
|
|
7576
|
+
"items": {
|
|
7577
|
+
"$ref": "#/components/schemas/PortalFamilyMember"
|
|
7578
|
+
}
|
|
7579
|
+
},
|
|
7580
|
+
"marketing_consent": {
|
|
7581
|
+
"type": "boolean",
|
|
7582
|
+
"description": "Records a `marketing_email` consent change with source `portal`."
|
|
7583
|
+
}
|
|
7584
|
+
}
|
|
7585
|
+
},
|
|
7586
|
+
"PortalBooking": {
|
|
7587
|
+
"type": "object",
|
|
7588
|
+
"required": [
|
|
7589
|
+
"booking_id",
|
|
7590
|
+
"status",
|
|
7591
|
+
"start_ts",
|
|
7592
|
+
"end_ts",
|
|
7593
|
+
"service_id",
|
|
7594
|
+
"service_name",
|
|
7595
|
+
"resource_id",
|
|
7596
|
+
"resource_name",
|
|
7597
|
+
"booked_for_name",
|
|
7598
|
+
"amount_ore",
|
|
7599
|
+
"notes",
|
|
7600
|
+
"manage_token",
|
|
7601
|
+
"can_manage"
|
|
7602
|
+
],
|
|
7603
|
+
"properties": {
|
|
7604
|
+
"booking_id": {
|
|
7605
|
+
"type": "string"
|
|
7606
|
+
},
|
|
7607
|
+
"status": {
|
|
7608
|
+
"$ref": "#/components/schemas/BookingStatus"
|
|
7609
|
+
},
|
|
7610
|
+
"start_ts": {
|
|
7611
|
+
"type": "integer",
|
|
7612
|
+
"description": "Unix timestamp in milliseconds."
|
|
7613
|
+
},
|
|
7614
|
+
"end_ts": {
|
|
7615
|
+
"type": "integer",
|
|
7616
|
+
"description": "Unix timestamp in milliseconds."
|
|
7617
|
+
},
|
|
7618
|
+
"service_id": {
|
|
7619
|
+
"type": [
|
|
7620
|
+
"string",
|
|
7621
|
+
"null"
|
|
7622
|
+
]
|
|
7623
|
+
},
|
|
7624
|
+
"service_name": {
|
|
7625
|
+
"type": [
|
|
7626
|
+
"string",
|
|
7627
|
+
"null"
|
|
7628
|
+
]
|
|
7629
|
+
},
|
|
7630
|
+
"resource_id": {
|
|
7631
|
+
"type": [
|
|
7632
|
+
"string",
|
|
7633
|
+
"null"
|
|
7634
|
+
]
|
|
7635
|
+
},
|
|
7636
|
+
"resource_name": {
|
|
7637
|
+
"type": [
|
|
7638
|
+
"string",
|
|
7639
|
+
"null"
|
|
7640
|
+
]
|
|
7641
|
+
},
|
|
7642
|
+
"booked_for_name": {
|
|
7643
|
+
"type": [
|
|
7644
|
+
"string",
|
|
7645
|
+
"null"
|
|
7646
|
+
]
|
|
7647
|
+
},
|
|
7648
|
+
"amount_ore": {
|
|
7649
|
+
"type": [
|
|
7650
|
+
"integer",
|
|
7651
|
+
"null"
|
|
7652
|
+
],
|
|
7653
|
+
"description": "Integer øre, or `null` when the service has no price."
|
|
7654
|
+
},
|
|
7655
|
+
"notes": {
|
|
7656
|
+
"type": [
|
|
7657
|
+
"string",
|
|
7658
|
+
"null"
|
|
7659
|
+
]
|
|
7660
|
+
},
|
|
7661
|
+
"manage_token": {
|
|
7662
|
+
"type": [
|
|
7663
|
+
"string",
|
|
7664
|
+
"null"
|
|
7665
|
+
],
|
|
7666
|
+
"description": "Present only while the booking is upcoming and manageable; opens the site's manage page."
|
|
7667
|
+
},
|
|
7668
|
+
"can_manage": {
|
|
7669
|
+
"type": "boolean"
|
|
7670
|
+
}
|
|
7671
|
+
}
|
|
7672
|
+
},
|
|
7673
|
+
"PortalBookings": {
|
|
7674
|
+
"type": "object",
|
|
7675
|
+
"required": [
|
|
7676
|
+
"upcoming",
|
|
7677
|
+
"past"
|
|
7678
|
+
],
|
|
7679
|
+
"properties": {
|
|
7680
|
+
"upcoming": {
|
|
7681
|
+
"type": "array",
|
|
7682
|
+
"items": {
|
|
7683
|
+
"$ref": "#/components/schemas/PortalBooking"
|
|
7684
|
+
}
|
|
7685
|
+
},
|
|
7686
|
+
"past": {
|
|
7687
|
+
"type": "array",
|
|
7688
|
+
"items": {
|
|
7689
|
+
"$ref": "#/components/schemas/PortalBooking"
|
|
7690
|
+
}
|
|
7691
|
+
}
|
|
7692
|
+
}
|
|
7693
|
+
},
|
|
7694
|
+
"PortalConsentRecord": {
|
|
7695
|
+
"type": "object",
|
|
7696
|
+
"required": [
|
|
7697
|
+
"consent_type",
|
|
7698
|
+
"granted",
|
|
7699
|
+
"granted_at",
|
|
7700
|
+
"revoked_at",
|
|
7701
|
+
"source"
|
|
7702
|
+
],
|
|
7703
|
+
"properties": {
|
|
7704
|
+
"consent_type": {
|
|
7705
|
+
"type": "string"
|
|
7706
|
+
},
|
|
7707
|
+
"granted": {
|
|
7708
|
+
"type": "boolean"
|
|
7709
|
+
},
|
|
7710
|
+
"granted_at": {
|
|
7711
|
+
"type": [
|
|
7712
|
+
"integer",
|
|
7713
|
+
"null"
|
|
7714
|
+
],
|
|
7715
|
+
"description": "Unix timestamp in milliseconds, or `null`."
|
|
7716
|
+
},
|
|
7717
|
+
"revoked_at": {
|
|
7718
|
+
"type": [
|
|
7719
|
+
"integer",
|
|
7720
|
+
"null"
|
|
7721
|
+
],
|
|
7722
|
+
"description": "Unix timestamp in milliseconds, or `null`."
|
|
7723
|
+
},
|
|
7724
|
+
"source": {
|
|
7725
|
+
"type": "string"
|
|
7726
|
+
}
|
|
7727
|
+
}
|
|
7728
|
+
},
|
|
7729
|
+
"PortalExportRelation": {
|
|
7730
|
+
"description": "A relation the exporting contact is a party to; only the counterpart's display name is exposed.",
|
|
7731
|
+
"type": "object",
|
|
7732
|
+
"required": [
|
|
7733
|
+
"direction",
|
|
7734
|
+
"type",
|
|
7735
|
+
"custom_label",
|
|
7736
|
+
"since",
|
|
7737
|
+
"note",
|
|
7738
|
+
"counterpart_name"
|
|
7739
|
+
],
|
|
7740
|
+
"properties": {
|
|
7741
|
+
"direction": {
|
|
7742
|
+
"type": "string",
|
|
7743
|
+
"enum": [
|
|
7744
|
+
"outgoing",
|
|
7745
|
+
"incoming"
|
|
7746
|
+
]
|
|
7747
|
+
},
|
|
7748
|
+
"type": {
|
|
7749
|
+
"$ref": "#/components/schemas/RelationType"
|
|
7750
|
+
},
|
|
7751
|
+
"custom_label": {
|
|
7752
|
+
"type": [
|
|
7753
|
+
"string",
|
|
7754
|
+
"null"
|
|
7755
|
+
]
|
|
7756
|
+
},
|
|
7757
|
+
"since": {
|
|
7758
|
+
"type": [
|
|
7759
|
+
"integer",
|
|
7760
|
+
"null"
|
|
7761
|
+
],
|
|
7762
|
+
"description": "Unix timestamp in milliseconds."
|
|
7763
|
+
},
|
|
7764
|
+
"note": {
|
|
7765
|
+
"type": [
|
|
7766
|
+
"string",
|
|
7767
|
+
"null"
|
|
7768
|
+
]
|
|
7769
|
+
},
|
|
7770
|
+
"counterpart_name": {
|
|
7771
|
+
"type": "string"
|
|
7772
|
+
}
|
|
7773
|
+
}
|
|
7774
|
+
},
|
|
7775
|
+
"PortalExport": {
|
|
7776
|
+
"description": "Everything the workspace holds about the signed-in contact (GDPR Art. 15).",
|
|
7777
|
+
"type": "object",
|
|
7778
|
+
"required": [
|
|
7779
|
+
"exported_at",
|
|
7780
|
+
"contact",
|
|
7781
|
+
"family",
|
|
7782
|
+
"consents",
|
|
7783
|
+
"bookings",
|
|
7784
|
+
"relations"
|
|
7785
|
+
],
|
|
7786
|
+
"properties": {
|
|
7787
|
+
"exported_at": {
|
|
7788
|
+
"type": "integer",
|
|
7789
|
+
"description": "Unix timestamp in milliseconds."
|
|
7790
|
+
},
|
|
7791
|
+
"contact": {
|
|
7792
|
+
"$ref": "#/components/schemas/PortalProfile"
|
|
7793
|
+
},
|
|
7794
|
+
"family": {
|
|
7795
|
+
"type": "array",
|
|
7796
|
+
"items": {
|
|
7797
|
+
"$ref": "#/components/schemas/PortalFamilyMember"
|
|
7798
|
+
}
|
|
7799
|
+
},
|
|
7800
|
+
"consents": {
|
|
7801
|
+
"type": "array",
|
|
7802
|
+
"items": {
|
|
7803
|
+
"$ref": "#/components/schemas/PortalConsentRecord"
|
|
7804
|
+
}
|
|
7805
|
+
},
|
|
7806
|
+
"bookings": {
|
|
7807
|
+
"type": "array",
|
|
7808
|
+
"items": {
|
|
7809
|
+
"$ref": "#/components/schemas/PortalBooking"
|
|
7810
|
+
}
|
|
7811
|
+
},
|
|
7812
|
+
"relations": {
|
|
7813
|
+
"type": "array",
|
|
7814
|
+
"items": {
|
|
7815
|
+
"$ref": "#/components/schemas/PortalExportRelation"
|
|
7816
|
+
}
|
|
7817
|
+
}
|
|
7818
|
+
}
|
|
7819
|
+
},
|
|
7820
|
+
"Envelope_PortalLoginStartResult": {
|
|
7821
|
+
"type": "object",
|
|
7822
|
+
"required": [
|
|
7823
|
+
"data"
|
|
7824
|
+
],
|
|
7825
|
+
"properties": {
|
|
7826
|
+
"data": {
|
|
7827
|
+
"$ref": "#/components/schemas/PortalLoginStartResult"
|
|
7828
|
+
}
|
|
7829
|
+
}
|
|
7830
|
+
},
|
|
7831
|
+
"Envelope_PortalSession": {
|
|
7832
|
+
"type": "object",
|
|
7833
|
+
"required": [
|
|
7834
|
+
"data"
|
|
7835
|
+
],
|
|
7836
|
+
"properties": {
|
|
7837
|
+
"data": {
|
|
7838
|
+
"$ref": "#/components/schemas/PortalSession"
|
|
7839
|
+
}
|
|
7840
|
+
}
|
|
7841
|
+
},
|
|
7842
|
+
"Envelope_PortalProfile": {
|
|
7843
|
+
"type": "object",
|
|
7844
|
+
"required": [
|
|
7845
|
+
"data"
|
|
7846
|
+
],
|
|
7847
|
+
"properties": {
|
|
7848
|
+
"data": {
|
|
7849
|
+
"$ref": "#/components/schemas/PortalProfile"
|
|
7850
|
+
}
|
|
7851
|
+
}
|
|
7852
|
+
},
|
|
7853
|
+
"Envelope_PortalBookings": {
|
|
7854
|
+
"type": "object",
|
|
7855
|
+
"required": [
|
|
7856
|
+
"data"
|
|
7857
|
+
],
|
|
7858
|
+
"properties": {
|
|
7859
|
+
"data": {
|
|
7860
|
+
"$ref": "#/components/schemas/PortalBookings"
|
|
7861
|
+
}
|
|
7862
|
+
}
|
|
7863
|
+
},
|
|
7864
|
+
"Envelope_PortalExport": {
|
|
7865
|
+
"type": "object",
|
|
7866
|
+
"required": [
|
|
7867
|
+
"data"
|
|
7868
|
+
],
|
|
7869
|
+
"properties": {
|
|
7870
|
+
"data": {
|
|
7871
|
+
"$ref": "#/components/schemas/PortalExport"
|
|
7872
|
+
}
|
|
7873
|
+
}
|
|
7874
|
+
},
|
|
7875
|
+
"ScanCreateInput": {
|
|
7876
|
+
"type": "object",
|
|
7877
|
+
"description": "Provide exactly one of `url`, `orgnr`, or `name`.",
|
|
7878
|
+
"oneOf": [
|
|
7879
|
+
{
|
|
7880
|
+
"required": [
|
|
7881
|
+
"url"
|
|
7882
|
+
],
|
|
7883
|
+
"not": {
|
|
7884
|
+
"anyOf": [
|
|
7885
|
+
{
|
|
7886
|
+
"required": [
|
|
7887
|
+
"orgnr"
|
|
7888
|
+
]
|
|
7889
|
+
},
|
|
7890
|
+
{
|
|
7891
|
+
"required": [
|
|
7892
|
+
"name"
|
|
7893
|
+
]
|
|
7894
|
+
}
|
|
7895
|
+
]
|
|
7896
|
+
}
|
|
7897
|
+
},
|
|
7898
|
+
{
|
|
7899
|
+
"required": [
|
|
7900
|
+
"orgnr"
|
|
7901
|
+
],
|
|
7902
|
+
"not": {
|
|
7903
|
+
"anyOf": [
|
|
7904
|
+
{
|
|
7905
|
+
"required": [
|
|
7906
|
+
"url"
|
|
7907
|
+
]
|
|
7908
|
+
},
|
|
7909
|
+
{
|
|
7910
|
+
"required": [
|
|
7911
|
+
"name"
|
|
7912
|
+
]
|
|
7913
|
+
}
|
|
7914
|
+
]
|
|
7915
|
+
}
|
|
7916
|
+
},
|
|
7917
|
+
{
|
|
7918
|
+
"required": [
|
|
7919
|
+
"name"
|
|
7920
|
+
],
|
|
6826
7921
|
"not": {
|
|
6827
7922
|
"anyOf": [
|
|
6828
7923
|
{
|
|
@@ -7023,43 +8118,332 @@
|
|
|
7023
8118
|
}
|
|
7024
8119
|
}
|
|
7025
8120
|
},
|
|
7026
|
-
"additionalProperties": true
|
|
8121
|
+
"additionalProperties": true
|
|
8122
|
+
},
|
|
8123
|
+
"error": {
|
|
8124
|
+
"type": [
|
|
8125
|
+
"string",
|
|
8126
|
+
"null"
|
|
8127
|
+
],
|
|
8128
|
+
"description": "Public-safe failure code (company_not_found, no_website, …)."
|
|
8129
|
+
},
|
|
8130
|
+
"created_at": {
|
|
8131
|
+
"type": [
|
|
8132
|
+
"string",
|
|
8133
|
+
"null"
|
|
8134
|
+
],
|
|
8135
|
+
"format": "date-time"
|
|
8136
|
+
},
|
|
8137
|
+
"finished_at": {
|
|
8138
|
+
"type": [
|
|
8139
|
+
"string",
|
|
8140
|
+
"null"
|
|
8141
|
+
],
|
|
8142
|
+
"format": "date-time"
|
|
8143
|
+
}
|
|
8144
|
+
}
|
|
8145
|
+
},
|
|
8146
|
+
"Envelope_ScanCreateResult": {
|
|
8147
|
+
"type": "object",
|
|
8148
|
+
"required": [
|
|
8149
|
+
"data"
|
|
8150
|
+
],
|
|
8151
|
+
"properties": {
|
|
8152
|
+
"data": {
|
|
8153
|
+
"$ref": "#/components/schemas/ScanCreateResult"
|
|
8154
|
+
}
|
|
8155
|
+
}
|
|
8156
|
+
},
|
|
8157
|
+
"Envelope_ScanCompanyArray": {
|
|
8158
|
+
"type": "object",
|
|
8159
|
+
"required": [
|
|
8160
|
+
"data"
|
|
8161
|
+
],
|
|
8162
|
+
"properties": {
|
|
8163
|
+
"data": {
|
|
8164
|
+
"type": "array",
|
|
8165
|
+
"items": {
|
|
8166
|
+
"$ref": "#/components/schemas/ScanCompany"
|
|
8167
|
+
}
|
|
8168
|
+
}
|
|
8169
|
+
}
|
|
8170
|
+
},
|
|
8171
|
+
"Envelope_ScanJob": {
|
|
8172
|
+
"type": "object",
|
|
8173
|
+
"required": [
|
|
8174
|
+
"data"
|
|
8175
|
+
],
|
|
8176
|
+
"properties": {
|
|
8177
|
+
"data": {
|
|
8178
|
+
"$ref": "#/components/schemas/ScanJob"
|
|
8179
|
+
}
|
|
8180
|
+
}
|
|
8181
|
+
},
|
|
8182
|
+
"Envelope_GdprExportRequest": {
|
|
8183
|
+
"type": "object",
|
|
8184
|
+
"required": [
|
|
8185
|
+
"data"
|
|
8186
|
+
],
|
|
8187
|
+
"properties": {
|
|
8188
|
+
"data": {
|
|
8189
|
+
"$ref": "#/components/schemas/GdprExportRequest"
|
|
8190
|
+
}
|
|
8191
|
+
}
|
|
8192
|
+
},
|
|
8193
|
+
"Envelope_GdprExportArray": {
|
|
8194
|
+
"type": "object",
|
|
8195
|
+
"required": [
|
|
8196
|
+
"data"
|
|
8197
|
+
],
|
|
8198
|
+
"properties": {
|
|
8199
|
+
"data": {
|
|
8200
|
+
"type": "array",
|
|
8201
|
+
"items": {
|
|
8202
|
+
"$ref": "#/components/schemas/GdprExport"
|
|
8203
|
+
}
|
|
8204
|
+
}
|
|
8205
|
+
}
|
|
8206
|
+
},
|
|
8207
|
+
"Envelope_GdprExport": {
|
|
8208
|
+
"type": "object",
|
|
8209
|
+
"required": [
|
|
8210
|
+
"data"
|
|
8211
|
+
],
|
|
8212
|
+
"properties": {
|
|
8213
|
+
"data": {
|
|
8214
|
+
"$ref": "#/components/schemas/GdprExport"
|
|
8215
|
+
}
|
|
8216
|
+
}
|
|
8217
|
+
},
|
|
8218
|
+
"Envelope_ConsentResult": {
|
|
8219
|
+
"type": "object",
|
|
8220
|
+
"required": [
|
|
8221
|
+
"data"
|
|
8222
|
+
],
|
|
8223
|
+
"properties": {
|
|
8224
|
+
"data": {
|
|
8225
|
+
"$ref": "#/components/schemas/ConsentResult"
|
|
8226
|
+
}
|
|
8227
|
+
}
|
|
8228
|
+
},
|
|
8229
|
+
"Envelope_ConsentRecordArray": {
|
|
8230
|
+
"type": "object",
|
|
8231
|
+
"required": [
|
|
8232
|
+
"data"
|
|
8233
|
+
],
|
|
8234
|
+
"properties": {
|
|
8235
|
+
"data": {
|
|
8236
|
+
"type": "array",
|
|
8237
|
+
"items": {
|
|
8238
|
+
"$ref": "#/components/schemas/ConsentRecord"
|
|
8239
|
+
}
|
|
8240
|
+
}
|
|
8241
|
+
}
|
|
8242
|
+
},
|
|
8243
|
+
"Envelope_WorkspaceArray": {
|
|
8244
|
+
"type": "object",
|
|
8245
|
+
"required": [
|
|
8246
|
+
"data"
|
|
8247
|
+
],
|
|
8248
|
+
"properties": {
|
|
8249
|
+
"data": {
|
|
8250
|
+
"type": "array",
|
|
8251
|
+
"items": {
|
|
8252
|
+
"$ref": "#/components/schemas/Workspace"
|
|
8253
|
+
}
|
|
8254
|
+
}
|
|
8255
|
+
}
|
|
8256
|
+
},
|
|
8257
|
+
"Envelope_HelpdeskConversation": {
|
|
8258
|
+
"type": "object",
|
|
8259
|
+
"required": [
|
|
8260
|
+
"data"
|
|
8261
|
+
],
|
|
8262
|
+
"properties": {
|
|
8263
|
+
"data": {
|
|
8264
|
+
"$ref": "#/components/schemas/HelpdeskConversation"
|
|
8265
|
+
}
|
|
8266
|
+
}
|
|
8267
|
+
},
|
|
8268
|
+
"Envelope_HelpdeskConversationUpdateResult": {
|
|
8269
|
+
"type": "object",
|
|
8270
|
+
"required": [
|
|
8271
|
+
"data"
|
|
8272
|
+
],
|
|
8273
|
+
"properties": {
|
|
8274
|
+
"data": {
|
|
8275
|
+
"$ref": "#/components/schemas/HelpdeskConversationUpdateResult"
|
|
8276
|
+
}
|
|
8277
|
+
}
|
|
8278
|
+
},
|
|
8279
|
+
"Envelope_HelpdeskReplyCreateResult": {
|
|
8280
|
+
"type": "object",
|
|
8281
|
+
"required": [
|
|
8282
|
+
"data"
|
|
8283
|
+
],
|
|
8284
|
+
"properties": {
|
|
8285
|
+
"data": {
|
|
8286
|
+
"$ref": "#/components/schemas/HelpdeskReplyCreateResult"
|
|
8287
|
+
}
|
|
8288
|
+
}
|
|
8289
|
+
},
|
|
8290
|
+
"Envelope_WebhookEndpoint": {
|
|
8291
|
+
"type": "object",
|
|
8292
|
+
"required": [
|
|
8293
|
+
"data"
|
|
8294
|
+
],
|
|
8295
|
+
"properties": {
|
|
8296
|
+
"data": {
|
|
8297
|
+
"$ref": "#/components/schemas/WebhookEndpoint"
|
|
8298
|
+
}
|
|
8299
|
+
}
|
|
8300
|
+
},
|
|
8301
|
+
"Envelope_WebhookEndpointArray": {
|
|
8302
|
+
"type": "object",
|
|
8303
|
+
"required": [
|
|
8304
|
+
"data"
|
|
8305
|
+
],
|
|
8306
|
+
"properties": {
|
|
8307
|
+
"data": {
|
|
8308
|
+
"type": "array",
|
|
8309
|
+
"items": {
|
|
8310
|
+
"$ref": "#/components/schemas/WebhookEndpoint"
|
|
8311
|
+
}
|
|
8312
|
+
}
|
|
8313
|
+
}
|
|
8314
|
+
},
|
|
8315
|
+
"Envelope_WebhookDeleteResult": {
|
|
8316
|
+
"type": "object",
|
|
8317
|
+
"required": [
|
|
8318
|
+
"data"
|
|
8319
|
+
],
|
|
8320
|
+
"properties": {
|
|
8321
|
+
"data": {
|
|
8322
|
+
"$ref": "#/components/schemas/WebhookDeleteResult"
|
|
8323
|
+
}
|
|
8324
|
+
}
|
|
8325
|
+
},
|
|
8326
|
+
"IssueCapabilityConfirmationInput": {
|
|
8327
|
+
"type": "object",
|
|
8328
|
+
"required": [
|
|
8329
|
+
"capability_id",
|
|
8330
|
+
"preview_summary",
|
|
8331
|
+
"user_approved"
|
|
8332
|
+
],
|
|
8333
|
+
"properties": {
|
|
8334
|
+
"capability_id": {
|
|
8335
|
+
"type": "string",
|
|
8336
|
+
"minLength": 1,
|
|
8337
|
+
"maxLength": 160,
|
|
8338
|
+
"description": "Confirmable capability to mint a token for."
|
|
8339
|
+
},
|
|
8340
|
+
"api_path": {
|
|
8341
|
+
"type": "string",
|
|
8342
|
+
"minLength": 1,
|
|
8343
|
+
"maxLength": 512,
|
|
8344
|
+
"description": "Concrete `/api/v1/...` path to bind the token to. Optional when the capability has exactly one API target; required when it has several."
|
|
8345
|
+
},
|
|
8346
|
+
"path_params": {
|
|
8347
|
+
"type": "object",
|
|
8348
|
+
"additionalProperties": {
|
|
8349
|
+
"type": [
|
|
8350
|
+
"string",
|
|
8351
|
+
"number",
|
|
8352
|
+
"boolean"
|
|
8353
|
+
]
|
|
8354
|
+
},
|
|
8355
|
+
"description": "Values for the capability path template's parameters."
|
|
7027
8356
|
},
|
|
7028
|
-
"
|
|
7029
|
-
"type":
|
|
7030
|
-
|
|
7031
|
-
|
|
7032
|
-
],
|
|
7033
|
-
"description": "Public-safe failure code (company_not_found, no_website, …)."
|
|
8357
|
+
"idempotency_key": {
|
|
8358
|
+
"type": "string",
|
|
8359
|
+
"minLength": 1,
|
|
8360
|
+
"description": "The exact `Idempotency-Key` the confirmed write will send. The token is bound to it."
|
|
7034
8361
|
},
|
|
7035
|
-
"
|
|
7036
|
-
"type":
|
|
7037
|
-
|
|
7038
|
-
|
|
7039
|
-
|
|
7040
|
-
"format": "date-time"
|
|
8362
|
+
"preview_summary": {
|
|
8363
|
+
"type": "string",
|
|
8364
|
+
"minLength": 1,
|
|
8365
|
+
"maxLength": 4000,
|
|
8366
|
+
"description": "Human-readable description of the approved action, retained for audit."
|
|
7041
8367
|
},
|
|
7042
|
-
"
|
|
8368
|
+
"user_approved": {
|
|
8369
|
+
"const": true,
|
|
8370
|
+
"description": "Asserts that a human on the caller's side approved this specific action."
|
|
8371
|
+
}
|
|
8372
|
+
}
|
|
8373
|
+
},
|
|
8374
|
+
"CapabilityConfirmation": {
|
|
8375
|
+
"type": "object",
|
|
8376
|
+
"required": [
|
|
8377
|
+
"confirmation_token",
|
|
8378
|
+
"token_type",
|
|
8379
|
+
"capability_id",
|
|
8380
|
+
"method",
|
|
8381
|
+
"path",
|
|
8382
|
+
"required_scopes",
|
|
8383
|
+
"idempotency_key",
|
|
8384
|
+
"expires_in",
|
|
8385
|
+
"expires_at",
|
|
8386
|
+
"preview_summary"
|
|
8387
|
+
],
|
|
8388
|
+
"properties": {
|
|
8389
|
+
"confirmation_token": {
|
|
8390
|
+
"type": "string",
|
|
8391
|
+
"description": "Send as the `X-Capability-Confirmation` header on the write."
|
|
8392
|
+
},
|
|
8393
|
+
"token_type": {
|
|
8394
|
+
"type": "string",
|
|
8395
|
+
"const": "medal_capability_confirmation"
|
|
8396
|
+
},
|
|
8397
|
+
"capability_id": {
|
|
8398
|
+
"type": "string"
|
|
8399
|
+
},
|
|
8400
|
+
"method": {
|
|
8401
|
+
"type": "string"
|
|
8402
|
+
},
|
|
8403
|
+
"path": {
|
|
8404
|
+
"type": "string"
|
|
8405
|
+
},
|
|
8406
|
+
"required_scopes": {
|
|
8407
|
+
"type": "array",
|
|
8408
|
+
"items": {
|
|
8409
|
+
"type": "string"
|
|
8410
|
+
}
|
|
8411
|
+
},
|
|
8412
|
+
"idempotency_key": {
|
|
7043
8413
|
"type": [
|
|
7044
8414
|
"string",
|
|
7045
8415
|
"null"
|
|
7046
|
-
]
|
|
8416
|
+
]
|
|
8417
|
+
},
|
|
8418
|
+
"expires_in": {
|
|
8419
|
+
"type": "integer",
|
|
8420
|
+
"minimum": 60,
|
|
8421
|
+
"maximum": 900
|
|
8422
|
+
},
|
|
8423
|
+
"expires_at": {
|
|
8424
|
+
"type": "string",
|
|
7047
8425
|
"format": "date-time"
|
|
8426
|
+
},
|
|
8427
|
+
"preview_summary": {
|
|
8428
|
+
"type": "string"
|
|
7048
8429
|
}
|
|
7049
8430
|
}
|
|
7050
8431
|
},
|
|
7051
|
-
"
|
|
8432
|
+
"ApiResponse_CapabilityConfirmation": {
|
|
8433
|
+
"$ref": "#/components/schemas/Envelope_CapabilityConfirmation"
|
|
8434
|
+
},
|
|
8435
|
+
"Envelope_CapabilityConfirmation": {
|
|
7052
8436
|
"type": "object",
|
|
7053
8437
|
"required": [
|
|
7054
8438
|
"data"
|
|
7055
8439
|
],
|
|
7056
8440
|
"properties": {
|
|
7057
8441
|
"data": {
|
|
7058
|
-
"$ref": "#/components/schemas/
|
|
8442
|
+
"$ref": "#/components/schemas/CapabilityConfirmation"
|
|
7059
8443
|
}
|
|
7060
8444
|
}
|
|
7061
8445
|
},
|
|
7062
|
-
"
|
|
8446
|
+
"Envelope_WebhookDeliveryArray": {
|
|
7063
8447
|
"type": "object",
|
|
7064
8448
|
"required": [
|
|
7065
8449
|
"data"
|
|
@@ -7068,35 +8452,37 @@
|
|
|
7068
8452
|
"data": {
|
|
7069
8453
|
"type": "array",
|
|
7070
8454
|
"items": {
|
|
7071
|
-
"$ref": "#/components/schemas/
|
|
8455
|
+
"$ref": "#/components/schemas/WebhookDelivery"
|
|
7072
8456
|
}
|
|
7073
8457
|
}
|
|
7074
8458
|
}
|
|
7075
8459
|
},
|
|
7076
|
-
"
|
|
8460
|
+
"Envelope_WebhookTestResult": {
|
|
7077
8461
|
"type": "object",
|
|
7078
8462
|
"required": [
|
|
7079
8463
|
"data"
|
|
7080
8464
|
],
|
|
7081
8465
|
"properties": {
|
|
7082
8466
|
"data": {
|
|
7083
|
-
"$ref": "#/components/schemas/
|
|
8467
|
+
"$ref": "#/components/schemas/WebhookTestResult"
|
|
7084
8468
|
}
|
|
7085
8469
|
}
|
|
7086
8470
|
},
|
|
7087
|
-
"
|
|
8471
|
+
"Envelope_ConnectLinkCreateResult": {
|
|
7088
8472
|
"type": "object",
|
|
7089
8473
|
"required": [
|
|
7090
8474
|
"data"
|
|
7091
8475
|
],
|
|
7092
8476
|
"properties": {
|
|
7093
8477
|
"data": {
|
|
7094
|
-
"$ref": "#/components/schemas/
|
|
8478
|
+
"$ref": "#/components/schemas/ConnectLinkCreateResult"
|
|
7095
8479
|
}
|
|
7096
8480
|
}
|
|
7097
8481
|
},
|
|
7098
|
-
"
|
|
8482
|
+
"Envelope_ConnectLinkArray": {
|
|
7099
8483
|
"type": "object",
|
|
8484
|
+
"deprecated": true,
|
|
8485
|
+
"description": "Deprecated — `listChannelConnectLinks` responds with `PaginatedResponse_ConnectLink`. Retained for backwards compatibility with consumers of the generated contract types.",
|
|
7100
8486
|
"required": [
|
|
7101
8487
|
"data"
|
|
7102
8488
|
],
|
|
@@ -7104,317 +8490,515 @@
|
|
|
7104
8490
|
"data": {
|
|
7105
8491
|
"type": "array",
|
|
7106
8492
|
"items": {
|
|
7107
|
-
"$ref": "#/components/schemas/
|
|
8493
|
+
"$ref": "#/components/schemas/ConnectLink"
|
|
7108
8494
|
}
|
|
7109
8495
|
}
|
|
7110
8496
|
}
|
|
7111
8497
|
},
|
|
7112
|
-
"
|
|
8498
|
+
"Envelope_ConnectLinkRevokeResult": {
|
|
7113
8499
|
"type": "object",
|
|
7114
8500
|
"required": [
|
|
7115
8501
|
"data"
|
|
7116
8502
|
],
|
|
7117
8503
|
"properties": {
|
|
7118
8504
|
"data": {
|
|
7119
|
-
"$ref": "#/components/schemas/
|
|
8505
|
+
"$ref": "#/components/schemas/ConnectLinkRevokeResult"
|
|
7120
8506
|
}
|
|
7121
8507
|
}
|
|
7122
8508
|
},
|
|
7123
|
-
"
|
|
8509
|
+
"Envelope_ChannelConnectionArray": {
|
|
7124
8510
|
"type": "object",
|
|
8511
|
+
"deprecated": true,
|
|
8512
|
+
"description": "Deprecated — `listChannelConnections` responds with `PaginatedResponse_ChannelConnection`. Retained for backwards compatibility with consumers of the generated contract types.",
|
|
7125
8513
|
"required": [
|
|
7126
8514
|
"data"
|
|
7127
8515
|
],
|
|
7128
8516
|
"properties": {
|
|
7129
8517
|
"data": {
|
|
7130
|
-
"
|
|
8518
|
+
"type": "array",
|
|
8519
|
+
"items": {
|
|
8520
|
+
"$ref": "#/components/schemas/ChannelConnection"
|
|
8521
|
+
}
|
|
7131
8522
|
}
|
|
7132
8523
|
}
|
|
7133
8524
|
},
|
|
7134
|
-
"
|
|
8525
|
+
"Envelope_ChannelConnectionDisconnectResult": {
|
|
7135
8526
|
"type": "object",
|
|
7136
8527
|
"required": [
|
|
7137
8528
|
"data"
|
|
7138
8529
|
],
|
|
7139
8530
|
"properties": {
|
|
7140
8531
|
"data": {
|
|
7141
|
-
"
|
|
7142
|
-
"items": {
|
|
7143
|
-
"$ref": "#/components/schemas/ConsentRecord"
|
|
7144
|
-
}
|
|
8532
|
+
"$ref": "#/components/schemas/ChannelConnectionDisconnectResult"
|
|
7145
8533
|
}
|
|
7146
8534
|
}
|
|
7147
8535
|
},
|
|
7148
|
-
"
|
|
8536
|
+
"RelationType": {
|
|
8537
|
+
"description": "How a person or a relation relates to a contact.",
|
|
8538
|
+
"type": "string",
|
|
8539
|
+
"enum": [
|
|
8540
|
+
"guardian",
|
|
8541
|
+
"owner",
|
|
8542
|
+
"employer",
|
|
8543
|
+
"caregiver",
|
|
8544
|
+
"partner",
|
|
8545
|
+
"custom"
|
|
8546
|
+
]
|
|
8547
|
+
},
|
|
8548
|
+
"ContactPerson": {
|
|
8549
|
+
"description": "A person a contact books for — a child, a pet, an employee. No login of their own.",
|
|
7149
8550
|
"type": "object",
|
|
7150
8551
|
"required": [
|
|
7151
|
-
"
|
|
8552
|
+
"person_id",
|
|
8553
|
+
"contact_id",
|
|
8554
|
+
"name",
|
|
8555
|
+
"birth_year",
|
|
8556
|
+
"relation_type",
|
|
8557
|
+
"relation_label",
|
|
8558
|
+
"notes",
|
|
8559
|
+
"active",
|
|
8560
|
+
"promoted_to_contact_id",
|
|
8561
|
+
"created_at",
|
|
8562
|
+
"updated_at"
|
|
7152
8563
|
],
|
|
7153
8564
|
"properties": {
|
|
7154
|
-
"
|
|
7155
|
-
"type": "
|
|
7156
|
-
|
|
7157
|
-
|
|
7158
|
-
|
|
8565
|
+
"person_id": {
|
|
8566
|
+
"type": "string"
|
|
8567
|
+
},
|
|
8568
|
+
"contact_id": {
|
|
8569
|
+
"type": "string"
|
|
8570
|
+
},
|
|
8571
|
+
"name": {
|
|
8572
|
+
"type": "string"
|
|
8573
|
+
},
|
|
8574
|
+
"birth_year": {
|
|
8575
|
+
"type": [
|
|
8576
|
+
"integer",
|
|
8577
|
+
"null"
|
|
8578
|
+
]
|
|
8579
|
+
},
|
|
8580
|
+
"relation_type": {
|
|
8581
|
+
"$ref": "#/components/schemas/RelationType"
|
|
8582
|
+
},
|
|
8583
|
+
"relation_label": {
|
|
8584
|
+
"type": [
|
|
8585
|
+
"string",
|
|
8586
|
+
"null"
|
|
8587
|
+
]
|
|
8588
|
+
},
|
|
8589
|
+
"notes": {
|
|
8590
|
+
"type": [
|
|
8591
|
+
"string",
|
|
8592
|
+
"null"
|
|
8593
|
+
]
|
|
8594
|
+
},
|
|
8595
|
+
"active": {
|
|
8596
|
+
"type": "boolean"
|
|
8597
|
+
},
|
|
8598
|
+
"promoted_to_contact_id": {
|
|
8599
|
+
"type": [
|
|
8600
|
+
"string",
|
|
8601
|
+
"null"
|
|
8602
|
+
]
|
|
8603
|
+
},
|
|
8604
|
+
"created_at": {
|
|
8605
|
+
"type": "string",
|
|
8606
|
+
"format": "date-time"
|
|
8607
|
+
},
|
|
8608
|
+
"updated_at": {
|
|
8609
|
+
"type": "string",
|
|
8610
|
+
"format": "date-time"
|
|
7159
8611
|
}
|
|
7160
8612
|
}
|
|
7161
8613
|
},
|
|
7162
|
-
"
|
|
8614
|
+
"CreateContactPersonInput": {
|
|
7163
8615
|
"type": "object",
|
|
7164
8616
|
"required": [
|
|
7165
|
-
"
|
|
8617
|
+
"contact_id",
|
|
8618
|
+
"name",
|
|
8619
|
+
"relation_type"
|
|
7166
8620
|
],
|
|
7167
8621
|
"properties": {
|
|
7168
|
-
"
|
|
7169
|
-
"
|
|
8622
|
+
"contact_id": {
|
|
8623
|
+
"type": "string"
|
|
8624
|
+
},
|
|
8625
|
+
"name": {
|
|
8626
|
+
"type": "string"
|
|
8627
|
+
},
|
|
8628
|
+
"birth_year": {
|
|
8629
|
+
"type": "integer"
|
|
8630
|
+
},
|
|
8631
|
+
"relation_type": {
|
|
8632
|
+
"$ref": "#/components/schemas/RelationType"
|
|
8633
|
+
},
|
|
8634
|
+
"relation_label": {
|
|
8635
|
+
"type": "string"
|
|
8636
|
+
},
|
|
8637
|
+
"notes": {
|
|
8638
|
+
"type": "string"
|
|
8639
|
+
}
|
|
8640
|
+
}
|
|
8641
|
+
},
|
|
8642
|
+
"ContactRelation": {
|
|
8643
|
+
"description": "One directional relation between two contacts.",
|
|
8644
|
+
"type": "object",
|
|
8645
|
+
"required": [
|
|
8646
|
+
"relation_id",
|
|
8647
|
+
"from_contact_id",
|
|
8648
|
+
"to_contact_id",
|
|
8649
|
+
"type",
|
|
8650
|
+
"custom_label",
|
|
8651
|
+
"since",
|
|
8652
|
+
"note",
|
|
8653
|
+
"counterpart_name",
|
|
8654
|
+
"created_at"
|
|
8655
|
+
],
|
|
8656
|
+
"properties": {
|
|
8657
|
+
"relation_id": {
|
|
8658
|
+
"type": "string"
|
|
8659
|
+
},
|
|
8660
|
+
"from_contact_id": {
|
|
8661
|
+
"type": "string"
|
|
8662
|
+
},
|
|
8663
|
+
"to_contact_id": {
|
|
8664
|
+
"type": "string"
|
|
8665
|
+
},
|
|
8666
|
+
"type": {
|
|
8667
|
+
"$ref": "#/components/schemas/RelationType"
|
|
8668
|
+
},
|
|
8669
|
+
"custom_label": {
|
|
8670
|
+
"type": [
|
|
8671
|
+
"string",
|
|
8672
|
+
"null"
|
|
8673
|
+
]
|
|
8674
|
+
},
|
|
8675
|
+
"since": {
|
|
8676
|
+
"type": [
|
|
8677
|
+
"integer",
|
|
8678
|
+
"null"
|
|
8679
|
+
],
|
|
8680
|
+
"description": "Unix timestamp in milliseconds."
|
|
8681
|
+
},
|
|
8682
|
+
"note": {
|
|
8683
|
+
"type": [
|
|
8684
|
+
"string",
|
|
8685
|
+
"null"
|
|
8686
|
+
]
|
|
8687
|
+
},
|
|
8688
|
+
"counterpart_name": {
|
|
8689
|
+
"type": "string",
|
|
8690
|
+
"description": "Empty string when the counterpart contact no longer exists."
|
|
8691
|
+
},
|
|
8692
|
+
"created_at": {
|
|
8693
|
+
"type": "string",
|
|
8694
|
+
"format": "date-time"
|
|
7170
8695
|
}
|
|
7171
8696
|
}
|
|
7172
8697
|
},
|
|
7173
|
-
"
|
|
8698
|
+
"ContactRelations": {
|
|
8699
|
+
"description": "Relations a contact holds, split by direction.",
|
|
7174
8700
|
"type": "object",
|
|
7175
8701
|
"required": [
|
|
7176
|
-
"
|
|
8702
|
+
"outgoing",
|
|
8703
|
+
"incoming"
|
|
7177
8704
|
],
|
|
7178
8705
|
"properties": {
|
|
7179
|
-
"
|
|
7180
|
-
"
|
|
8706
|
+
"outgoing": {
|
|
8707
|
+
"type": "array",
|
|
8708
|
+
"items": {
|
|
8709
|
+
"$ref": "#/components/schemas/ContactRelation"
|
|
8710
|
+
}
|
|
8711
|
+
},
|
|
8712
|
+
"incoming": {
|
|
8713
|
+
"type": "array",
|
|
8714
|
+
"items": {
|
|
8715
|
+
"$ref": "#/components/schemas/ContactRelation"
|
|
8716
|
+
}
|
|
7181
8717
|
}
|
|
7182
8718
|
}
|
|
7183
8719
|
},
|
|
7184
|
-
"
|
|
8720
|
+
"CreateContactRelationInput": {
|
|
7185
8721
|
"type": "object",
|
|
7186
8722
|
"required": [
|
|
7187
|
-
"
|
|
8723
|
+
"from_contact_id",
|
|
8724
|
+
"to_contact_id",
|
|
8725
|
+
"type"
|
|
7188
8726
|
],
|
|
7189
8727
|
"properties": {
|
|
7190
|
-
"
|
|
7191
|
-
"
|
|
8728
|
+
"from_contact_id": {
|
|
8729
|
+
"type": "string"
|
|
8730
|
+
},
|
|
8731
|
+
"to_contact_id": {
|
|
8732
|
+
"type": "string"
|
|
8733
|
+
},
|
|
8734
|
+
"type": {
|
|
8735
|
+
"$ref": "#/components/schemas/RelationType"
|
|
8736
|
+
},
|
|
8737
|
+
"custom_label": {
|
|
8738
|
+
"type": "string"
|
|
8739
|
+
},
|
|
8740
|
+
"since": {
|
|
8741
|
+
"type": "integer",
|
|
8742
|
+
"description": "Unix timestamp in milliseconds."
|
|
8743
|
+
},
|
|
8744
|
+
"note": {
|
|
8745
|
+
"type": "string"
|
|
7192
8746
|
}
|
|
7193
8747
|
}
|
|
7194
8748
|
},
|
|
7195
|
-
"
|
|
8749
|
+
"CreateContactRelationResult": {
|
|
7196
8750
|
"type": "object",
|
|
7197
8751
|
"required": [
|
|
7198
|
-
"
|
|
8752
|
+
"relation_id"
|
|
7199
8753
|
],
|
|
7200
8754
|
"properties": {
|
|
7201
|
-
"
|
|
7202
|
-
"
|
|
8755
|
+
"relation_id": {
|
|
8756
|
+
"type": "string"
|
|
7203
8757
|
}
|
|
7204
8758
|
}
|
|
7205
8759
|
},
|
|
7206
|
-
"
|
|
7207
|
-
"type": "
|
|
7208
|
-
"
|
|
7209
|
-
"
|
|
7210
|
-
|
|
7211
|
-
|
|
7212
|
-
"
|
|
7213
|
-
|
|
7214
|
-
|
|
7215
|
-
"$ref": "#/components/schemas/WebhookEndpoint"
|
|
7216
|
-
}
|
|
7217
|
-
}
|
|
7218
|
-
}
|
|
8760
|
+
"BookingEventStatus": {
|
|
8761
|
+
"type": "string",
|
|
8762
|
+
"enum": [
|
|
8763
|
+
"draft",
|
|
8764
|
+
"open",
|
|
8765
|
+
"closed",
|
|
8766
|
+
"completed",
|
|
8767
|
+
"cancelled"
|
|
8768
|
+
]
|
|
7219
8769
|
},
|
|
7220
|
-
"
|
|
7221
|
-
"type": "
|
|
7222
|
-
"
|
|
7223
|
-
"
|
|
7224
|
-
|
|
7225
|
-
|
|
7226
|
-
"
|
|
7227
|
-
|
|
7228
|
-
|
|
7229
|
-
}
|
|
8770
|
+
"BookingEventTemplateKey": {
|
|
8771
|
+
"type": "string",
|
|
8772
|
+
"enum": [
|
|
8773
|
+
"kindergarten_visit",
|
|
8774
|
+
"company_day",
|
|
8775
|
+
"class",
|
|
8776
|
+
"open_day",
|
|
8777
|
+
"custom"
|
|
8778
|
+
]
|
|
7230
8779
|
},
|
|
7231
|
-
"
|
|
8780
|
+
"BookingEvent": {
|
|
8781
|
+
"description": "An arrangement — a scheduled group session bookings register against.",
|
|
7232
8782
|
"type": "object",
|
|
7233
8783
|
"required": [
|
|
7234
|
-
"
|
|
7235
|
-
"
|
|
7236
|
-
"
|
|
8784
|
+
"event_id",
|
|
8785
|
+
"template_id",
|
|
8786
|
+
"host_id",
|
|
8787
|
+
"date",
|
|
8788
|
+
"window_start_minute",
|
|
8789
|
+
"window_end_minute",
|
|
8790
|
+
"place",
|
|
8791
|
+
"capacity",
|
|
8792
|
+
"minimum",
|
|
8793
|
+
"registered_count",
|
|
8794
|
+
"service_ids",
|
|
8795
|
+
"resource_ids",
|
|
8796
|
+
"price_override_ore",
|
|
8797
|
+
"status",
|
|
8798
|
+
"registration_closes_at",
|
|
8799
|
+
"slug",
|
|
8800
|
+
"created_at",
|
|
8801
|
+
"updated_at"
|
|
7237
8802
|
],
|
|
7238
8803
|
"properties": {
|
|
7239
|
-
"
|
|
7240
|
-
"type": "string"
|
|
7241
|
-
"minLength": 1,
|
|
7242
|
-
"maxLength": 160,
|
|
7243
|
-
"description": "Confirmable capability to mint a token for."
|
|
8804
|
+
"event_id": {
|
|
8805
|
+
"type": "string"
|
|
7244
8806
|
},
|
|
7245
|
-
"
|
|
7246
|
-
"type": "string"
|
|
7247
|
-
"minLength": 1,
|
|
7248
|
-
"maxLength": 512,
|
|
7249
|
-
"description": "Concrete `/api/v1/...` path to bind the token to. Optional when the capability has exactly one API target; required when it has several."
|
|
8807
|
+
"template_id": {
|
|
8808
|
+
"type": "string"
|
|
7250
8809
|
},
|
|
7251
|
-
"
|
|
7252
|
-
"type":
|
|
7253
|
-
|
|
7254
|
-
"
|
|
7255
|
-
|
|
7256
|
-
"number",
|
|
7257
|
-
"boolean"
|
|
7258
|
-
]
|
|
7259
|
-
},
|
|
7260
|
-
"description": "Values for the capability path template's parameters."
|
|
8810
|
+
"host_id": {
|
|
8811
|
+
"type": [
|
|
8812
|
+
"string",
|
|
8813
|
+
"null"
|
|
8814
|
+
]
|
|
7261
8815
|
},
|
|
7262
|
-
"
|
|
8816
|
+
"date": {
|
|
8817
|
+
"description": "yyyy-mm-dd in the workspace time zone.",
|
|
7263
8818
|
"type": "string",
|
|
7264
|
-
"
|
|
7265
|
-
"description": "The exact `Idempotency-Key` the confirmed write will send. The token is bound to it."
|
|
8819
|
+
"format": "date"
|
|
7266
8820
|
},
|
|
7267
|
-
"
|
|
7268
|
-
"type": "
|
|
7269
|
-
"minLength": 1,
|
|
7270
|
-
"maxLength": 4000,
|
|
7271
|
-
"description": "Human-readable description of the approved action, retained for audit."
|
|
8821
|
+
"window_start_minute": {
|
|
8822
|
+
"type": "integer"
|
|
7272
8823
|
},
|
|
7273
|
-
"
|
|
7274
|
-
"
|
|
7275
|
-
"description": "Asserts that a human on the caller's side approved this specific action."
|
|
7276
|
-
}
|
|
7277
|
-
}
|
|
7278
|
-
},
|
|
7279
|
-
"CapabilityConfirmation": {
|
|
7280
|
-
"type": "object",
|
|
7281
|
-
"required": [
|
|
7282
|
-
"confirmation_token",
|
|
7283
|
-
"token_type",
|
|
7284
|
-
"capability_id",
|
|
7285
|
-
"method",
|
|
7286
|
-
"path",
|
|
7287
|
-
"required_scopes",
|
|
7288
|
-
"idempotency_key",
|
|
7289
|
-
"expires_in",
|
|
7290
|
-
"expires_at",
|
|
7291
|
-
"preview_summary"
|
|
7292
|
-
],
|
|
7293
|
-
"properties": {
|
|
7294
|
-
"confirmation_token": {
|
|
7295
|
-
"type": "string",
|
|
7296
|
-
"description": "Send as the `X-Capability-Confirmation` header on the write."
|
|
8824
|
+
"window_end_minute": {
|
|
8825
|
+
"type": "integer"
|
|
7297
8826
|
},
|
|
7298
|
-
"
|
|
8827
|
+
"place": {
|
|
7299
8828
|
"type": "string",
|
|
7300
|
-
"
|
|
8829
|
+
"enum": [
|
|
8830
|
+
"at_host",
|
|
8831
|
+
"in_house"
|
|
8832
|
+
]
|
|
7301
8833
|
},
|
|
7302
|
-
"
|
|
7303
|
-
"type": "
|
|
8834
|
+
"capacity": {
|
|
8835
|
+
"type": "integer"
|
|
7304
8836
|
},
|
|
7305
|
-
"
|
|
7306
|
-
"type": "
|
|
8837
|
+
"minimum": {
|
|
8838
|
+
"type": "integer"
|
|
7307
8839
|
},
|
|
7308
|
-
"
|
|
7309
|
-
"type": "
|
|
8840
|
+
"registered_count": {
|
|
8841
|
+
"type": "integer"
|
|
7310
8842
|
},
|
|
7311
|
-
"
|
|
8843
|
+
"service_ids": {
|
|
7312
8844
|
"type": "array",
|
|
7313
8845
|
"items": {
|
|
7314
8846
|
"type": "string"
|
|
7315
8847
|
}
|
|
7316
8848
|
},
|
|
7317
|
-
"
|
|
8849
|
+
"resource_ids": {
|
|
8850
|
+
"type": "array",
|
|
8851
|
+
"items": {
|
|
8852
|
+
"type": "string"
|
|
8853
|
+
}
|
|
8854
|
+
},
|
|
8855
|
+
"price_override_ore": {
|
|
7318
8856
|
"type": [
|
|
7319
|
-
"
|
|
8857
|
+
"integer",
|
|
7320
8858
|
"null"
|
|
7321
8859
|
]
|
|
7322
8860
|
},
|
|
7323
|
-
"
|
|
7324
|
-
"
|
|
7325
|
-
"minimum": 60,
|
|
7326
|
-
"maximum": 900
|
|
8861
|
+
"status": {
|
|
8862
|
+
"$ref": "#/components/schemas/BookingEventStatus"
|
|
7327
8863
|
},
|
|
7328
|
-
"
|
|
8864
|
+
"registration_closes_at": {
|
|
7329
8865
|
"type": "string",
|
|
7330
8866
|
"format": "date-time"
|
|
7331
8867
|
},
|
|
7332
|
-
"
|
|
8868
|
+
"slug": {
|
|
7333
8869
|
"type": "string"
|
|
8870
|
+
},
|
|
8871
|
+
"created_at": {
|
|
8872
|
+
"type": "string",
|
|
8873
|
+
"format": "date-time"
|
|
8874
|
+
},
|
|
8875
|
+
"updated_at": {
|
|
8876
|
+
"type": "string",
|
|
8877
|
+
"format": "date-time"
|
|
7334
8878
|
}
|
|
7335
8879
|
}
|
|
7336
8880
|
},
|
|
7337
|
-
"
|
|
7338
|
-
"$ref": "#/components/schemas/Envelope_CapabilityConfirmation"
|
|
7339
|
-
},
|
|
7340
|
-
"Envelope_CapabilityConfirmation": {
|
|
7341
|
-
"type": "object",
|
|
7342
|
-
"required": [
|
|
7343
|
-
"data"
|
|
7344
|
-
],
|
|
7345
|
-
"properties": {
|
|
7346
|
-
"data": {
|
|
7347
|
-
"$ref": "#/components/schemas/CapabilityConfirmation"
|
|
7348
|
-
}
|
|
7349
|
-
}
|
|
7350
|
-
},
|
|
7351
|
-
"Envelope_WebhookDeliveryArray": {
|
|
8881
|
+
"CreateBookingEventInput": {
|
|
7352
8882
|
"type": "object",
|
|
7353
8883
|
"required": [
|
|
7354
|
-
"
|
|
8884
|
+
"template_key",
|
|
8885
|
+
"date",
|
|
8886
|
+
"window_start_minute",
|
|
8887
|
+
"place",
|
|
8888
|
+
"service_ids",
|
|
8889
|
+
"resource_ids"
|
|
7355
8890
|
],
|
|
7356
8891
|
"properties": {
|
|
7357
|
-
"
|
|
8892
|
+
"template_key": {
|
|
8893
|
+
"$ref": "#/components/schemas/BookingEventTemplateKey"
|
|
8894
|
+
},
|
|
8895
|
+
"host_id": {
|
|
8896
|
+
"type": "string"
|
|
8897
|
+
},
|
|
8898
|
+
"date": {
|
|
8899
|
+
"type": "string",
|
|
8900
|
+
"format": "date"
|
|
8901
|
+
},
|
|
8902
|
+
"window_start_minute": {
|
|
8903
|
+
"type": "integer"
|
|
8904
|
+
},
|
|
8905
|
+
"window_end_minute": {
|
|
8906
|
+
"type": "integer"
|
|
8907
|
+
},
|
|
8908
|
+
"place": {
|
|
8909
|
+
"type": "string",
|
|
8910
|
+
"enum": [
|
|
8911
|
+
"at_host",
|
|
8912
|
+
"in_house"
|
|
8913
|
+
]
|
|
8914
|
+
},
|
|
8915
|
+
"capacity": {
|
|
8916
|
+
"type": "integer"
|
|
8917
|
+
},
|
|
8918
|
+
"minimum": {
|
|
8919
|
+
"type": "integer"
|
|
8920
|
+
},
|
|
8921
|
+
"service_ids": {
|
|
7358
8922
|
"type": "array",
|
|
7359
8923
|
"items": {
|
|
7360
|
-
"
|
|
8924
|
+
"type": "string"
|
|
8925
|
+
}
|
|
8926
|
+
},
|
|
8927
|
+
"resource_ids": {
|
|
8928
|
+
"type": "array",
|
|
8929
|
+
"items": {
|
|
8930
|
+
"type": "string"
|
|
7361
8931
|
}
|
|
7362
8932
|
}
|
|
7363
8933
|
}
|
|
7364
8934
|
},
|
|
7365
|
-
"
|
|
8935
|
+
"ApiResponse_ContactPersonArray": {
|
|
8936
|
+
"$ref": "#/components/schemas/Envelope_ContactPersonArray"
|
|
8937
|
+
},
|
|
8938
|
+
"ApiResponse_ContactPerson": {
|
|
8939
|
+
"$ref": "#/components/schemas/Envelope_ContactPerson"
|
|
8940
|
+
},
|
|
8941
|
+
"ApiResponse_ContactRelations": {
|
|
8942
|
+
"$ref": "#/components/schemas/Envelope_ContactRelations"
|
|
8943
|
+
},
|
|
8944
|
+
"ApiResponse_CreateContactRelationResult": {
|
|
8945
|
+
"$ref": "#/components/schemas/Envelope_CreateContactRelationResult"
|
|
8946
|
+
},
|
|
8947
|
+
"ApiResponse_BookingEventArray": {
|
|
8948
|
+
"$ref": "#/components/schemas/Envelope_BookingEventArray"
|
|
8949
|
+
},
|
|
8950
|
+
"ApiResponse_BookingEvent": {
|
|
8951
|
+
"$ref": "#/components/schemas/Envelope_BookingEvent"
|
|
8952
|
+
},
|
|
8953
|
+
"Envelope_ContactPersonArray": {
|
|
7366
8954
|
"type": "object",
|
|
7367
8955
|
"required": [
|
|
7368
8956
|
"data"
|
|
7369
8957
|
],
|
|
7370
8958
|
"properties": {
|
|
7371
8959
|
"data": {
|
|
7372
|
-
"
|
|
8960
|
+
"type": "array",
|
|
8961
|
+
"items": {
|
|
8962
|
+
"$ref": "#/components/schemas/ContactPerson"
|
|
8963
|
+
}
|
|
7373
8964
|
}
|
|
7374
8965
|
}
|
|
7375
8966
|
},
|
|
7376
|
-
"
|
|
8967
|
+
"Envelope_ContactPerson": {
|
|
7377
8968
|
"type": "object",
|
|
7378
8969
|
"required": [
|
|
7379
8970
|
"data"
|
|
7380
8971
|
],
|
|
7381
8972
|
"properties": {
|
|
7382
8973
|
"data": {
|
|
7383
|
-
"$ref": "#/components/schemas/
|
|
8974
|
+
"$ref": "#/components/schemas/ContactPerson"
|
|
7384
8975
|
}
|
|
7385
8976
|
}
|
|
7386
8977
|
},
|
|
7387
|
-
"
|
|
8978
|
+
"Envelope_ContactRelations": {
|
|
7388
8979
|
"type": "object",
|
|
7389
|
-
"deprecated": true,
|
|
7390
|
-
"description": "Deprecated — `listChannelConnectLinks` responds with `PaginatedResponse_ConnectLink`. Retained for backwards compatibility with consumers of the generated contract types.",
|
|
7391
8980
|
"required": [
|
|
7392
8981
|
"data"
|
|
7393
8982
|
],
|
|
7394
8983
|
"properties": {
|
|
7395
8984
|
"data": {
|
|
7396
|
-
"
|
|
7397
|
-
"items": {
|
|
7398
|
-
"$ref": "#/components/schemas/ConnectLink"
|
|
7399
|
-
}
|
|
8985
|
+
"$ref": "#/components/schemas/ContactRelations"
|
|
7400
8986
|
}
|
|
7401
8987
|
}
|
|
7402
8988
|
},
|
|
7403
|
-
"
|
|
8989
|
+
"Envelope_CreateContactRelationResult": {
|
|
7404
8990
|
"type": "object",
|
|
7405
8991
|
"required": [
|
|
7406
8992
|
"data"
|
|
7407
8993
|
],
|
|
7408
8994
|
"properties": {
|
|
7409
8995
|
"data": {
|
|
7410
|
-
"$ref": "#/components/schemas/
|
|
8996
|
+
"$ref": "#/components/schemas/CreateContactRelationResult"
|
|
7411
8997
|
}
|
|
7412
8998
|
}
|
|
7413
8999
|
},
|
|
7414
|
-
"
|
|
9000
|
+
"Envelope_BookingEventArray": {
|
|
7415
9001
|
"type": "object",
|
|
7416
|
-
"deprecated": true,
|
|
7417
|
-
"description": "Deprecated — `listChannelConnections` responds with `PaginatedResponse_ChannelConnection`. Retained for backwards compatibility with consumers of the generated contract types.",
|
|
7418
9002
|
"required": [
|
|
7419
9003
|
"data"
|
|
7420
9004
|
],
|
|
@@ -7422,19 +9006,19 @@
|
|
|
7422
9006
|
"data": {
|
|
7423
9007
|
"type": "array",
|
|
7424
9008
|
"items": {
|
|
7425
|
-
"$ref": "#/components/schemas/
|
|
9009
|
+
"$ref": "#/components/schemas/BookingEvent"
|
|
7426
9010
|
}
|
|
7427
9011
|
}
|
|
7428
9012
|
}
|
|
7429
9013
|
},
|
|
7430
|
-
"
|
|
9014
|
+
"Envelope_BookingEvent": {
|
|
7431
9015
|
"type": "object",
|
|
7432
9016
|
"required": [
|
|
7433
9017
|
"data"
|
|
7434
9018
|
],
|
|
7435
9019
|
"properties": {
|
|
7436
9020
|
"data": {
|
|
7437
|
-
"$ref": "#/components/schemas/
|
|
9021
|
+
"$ref": "#/components/schemas/BookingEvent"
|
|
7438
9022
|
}
|
|
7439
9023
|
}
|
|
7440
9024
|
}
|