@medalsocial/sdk 1.5.0 → 1.7.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 +213 -1
- package/dist/openapi/medal-social.openapi.json +3739 -1411
- package/dist/pilot/index.d.mts +2 -2
- package/dist/pilot/index.d.ts +2 -2
- package/dist/src/index.d.mts +1376 -258
- package/dist/src/index.d.ts +1376 -258
- package/dist/src/index.js +667 -57
- package/dist/src/index.js.map +1 -1
- package/dist/src/index.mjs +661 -57
- package/dist/src/index.mjs.map +1 -1
- package/dist/src/openapi.generated.d.mts +1287 -113
- package/dist/src/openapi.generated.d.ts +1287 -113
- package/dist/src/openapi.generated.js.map +1 -1
- package/openapi/medal-social.openapi.yaml +1394 -27
- package/package.json +18 -17
- package/skills/client/SKILL.md +2 -2
- package/skills/resources/SKILL.md +105 -3
|
@@ -319,6 +319,250 @@ interface paths {
|
|
|
319
319
|
patch: operations["updateDeal"];
|
|
320
320
|
trace?: never;
|
|
321
321
|
};
|
|
322
|
+
"/api/v1/bookings": {
|
|
323
|
+
parameters: {
|
|
324
|
+
query?: never;
|
|
325
|
+
header?: never;
|
|
326
|
+
path?: never;
|
|
327
|
+
cookie?: never;
|
|
328
|
+
};
|
|
329
|
+
/** List bookings */
|
|
330
|
+
get: operations["listBookings"];
|
|
331
|
+
put?: never;
|
|
332
|
+
/**
|
|
333
|
+
* Create a booking or party
|
|
334
|
+
* @description Books every item or none of them. Each created booking carries a `manage_token` returned exactly once — only its hash is stored, and an idempotent replay omits it.
|
|
335
|
+
*/
|
|
336
|
+
post: operations["createBooking"];
|
|
337
|
+
delete?: never;
|
|
338
|
+
options?: never;
|
|
339
|
+
head?: never;
|
|
340
|
+
patch?: never;
|
|
341
|
+
trace?: never;
|
|
342
|
+
};
|
|
343
|
+
"/api/v1/bookings/services": {
|
|
344
|
+
parameters: {
|
|
345
|
+
query?: never;
|
|
346
|
+
header?: never;
|
|
347
|
+
path?: never;
|
|
348
|
+
cookie?: never;
|
|
349
|
+
};
|
|
350
|
+
/** List bookable services */
|
|
351
|
+
get: operations["listBookingServices"];
|
|
352
|
+
put?: never;
|
|
353
|
+
post?: never;
|
|
354
|
+
delete?: never;
|
|
355
|
+
options?: never;
|
|
356
|
+
head?: never;
|
|
357
|
+
patch?: never;
|
|
358
|
+
trace?: never;
|
|
359
|
+
};
|
|
360
|
+
"/api/v1/bookings/resources": {
|
|
361
|
+
parameters: {
|
|
362
|
+
query?: never;
|
|
363
|
+
header?: never;
|
|
364
|
+
path?: never;
|
|
365
|
+
cookie?: never;
|
|
366
|
+
};
|
|
367
|
+
/** List bookable resources */
|
|
368
|
+
get: operations["listBookingResources"];
|
|
369
|
+
put?: never;
|
|
370
|
+
post?: never;
|
|
371
|
+
delete?: never;
|
|
372
|
+
options?: never;
|
|
373
|
+
head?: never;
|
|
374
|
+
patch?: never;
|
|
375
|
+
trace?: never;
|
|
376
|
+
};
|
|
377
|
+
"/api/v1/bookings/availability": {
|
|
378
|
+
parameters: {
|
|
379
|
+
query?: never;
|
|
380
|
+
header?: never;
|
|
381
|
+
path?: never;
|
|
382
|
+
cookie?: never;
|
|
383
|
+
};
|
|
384
|
+
/**
|
|
385
|
+
* List free slots for a service
|
|
386
|
+
* @description Slots reflect opening hours, time off, buffers, and existing bookings at the moment of the call. They are not held.
|
|
387
|
+
*/
|
|
388
|
+
get: operations["listBookingAvailability"];
|
|
389
|
+
put?: never;
|
|
390
|
+
post?: never;
|
|
391
|
+
delete?: never;
|
|
392
|
+
options?: never;
|
|
393
|
+
head?: never;
|
|
394
|
+
patch?: never;
|
|
395
|
+
trace?: never;
|
|
396
|
+
};
|
|
397
|
+
"/api/v1/bookings/schedule": {
|
|
398
|
+
parameters: {
|
|
399
|
+
query?: never;
|
|
400
|
+
header?: never;
|
|
401
|
+
path?: never;
|
|
402
|
+
cookie?: never;
|
|
403
|
+
};
|
|
404
|
+
/**
|
|
405
|
+
* List the dates a service can be booked on
|
|
406
|
+
* @description The other half of `availability`. Availability returns free slots and nothing else, so a closed day, an evening past closing and a fully booked day all come back as the same empty array. This returns one entry per date the workspace keeps opening hours on; a date ABSENT from the response is closed. `last_start_ts` is the last start this service could occupy on that date (it depends on the service's duration and buffers, not just the closing time) and is `null` for a date with posted hours that is shut outright, such as a public holiday.
|
|
407
|
+
*/
|
|
408
|
+
get: operations["listBookingSchedule"];
|
|
409
|
+
put?: never;
|
|
410
|
+
post?: never;
|
|
411
|
+
delete?: never;
|
|
412
|
+
options?: never;
|
|
413
|
+
head?: never;
|
|
414
|
+
patch?: never;
|
|
415
|
+
trace?: never;
|
|
416
|
+
};
|
|
417
|
+
"/api/v1/bookings/{id}": {
|
|
418
|
+
parameters: {
|
|
419
|
+
query?: never;
|
|
420
|
+
header?: never;
|
|
421
|
+
path: {
|
|
422
|
+
id: components["parameters"]["Id"];
|
|
423
|
+
};
|
|
424
|
+
cookie?: never;
|
|
425
|
+
};
|
|
426
|
+
/** Get a booking */
|
|
427
|
+
get: operations["getBooking"];
|
|
428
|
+
put?: never;
|
|
429
|
+
post?: never;
|
|
430
|
+
delete?: never;
|
|
431
|
+
options?: never;
|
|
432
|
+
head?: never;
|
|
433
|
+
/** Annotate a booking */
|
|
434
|
+
patch: operations["updateBooking"];
|
|
435
|
+
trace?: never;
|
|
436
|
+
};
|
|
437
|
+
"/api/v1/bookings/{id}/cancel": {
|
|
438
|
+
parameters: {
|
|
439
|
+
query?: never;
|
|
440
|
+
header?: never;
|
|
441
|
+
path: {
|
|
442
|
+
id: components["parameters"]["Id"];
|
|
443
|
+
};
|
|
444
|
+
cookie?: never;
|
|
445
|
+
};
|
|
446
|
+
get?: never;
|
|
447
|
+
put?: never;
|
|
448
|
+
/**
|
|
449
|
+
* Cancel a booking as the business
|
|
450
|
+
* @description Staff semantics — the workspace's cancel window is bypassed and the cancellation is attributed to staff.
|
|
451
|
+
*/
|
|
452
|
+
post: operations["cancelBooking"];
|
|
453
|
+
delete?: never;
|
|
454
|
+
options?: never;
|
|
455
|
+
head?: never;
|
|
456
|
+
patch?: never;
|
|
457
|
+
trace?: never;
|
|
458
|
+
};
|
|
459
|
+
"/api/v1/bookings/{id}/reschedule": {
|
|
460
|
+
parameters: {
|
|
461
|
+
query?: never;
|
|
462
|
+
header?: never;
|
|
463
|
+
path: {
|
|
464
|
+
id: components["parameters"]["Id"];
|
|
465
|
+
};
|
|
466
|
+
cookie?: never;
|
|
467
|
+
};
|
|
468
|
+
get?: never;
|
|
469
|
+
put?: never;
|
|
470
|
+
/**
|
|
471
|
+
* Reschedule a booking as the business
|
|
472
|
+
* @description Staff semantics — the reschedule window is bypassed. The old booking is cancelled and a new one inserted, so the response carries a new booking id and a freshly minted manage token.
|
|
473
|
+
*/
|
|
474
|
+
post: operations["rescheduleBooking"];
|
|
475
|
+
delete?: never;
|
|
476
|
+
options?: never;
|
|
477
|
+
head?: never;
|
|
478
|
+
patch?: never;
|
|
479
|
+
trace?: never;
|
|
480
|
+
};
|
|
481
|
+
"/api/v1/bookings/{id}/no-show": {
|
|
482
|
+
parameters: {
|
|
483
|
+
query?: never;
|
|
484
|
+
header?: never;
|
|
485
|
+
path: {
|
|
486
|
+
id: components["parameters"]["Id"];
|
|
487
|
+
};
|
|
488
|
+
cookie?: never;
|
|
489
|
+
};
|
|
490
|
+
get?: never;
|
|
491
|
+
put?: never;
|
|
492
|
+
/** Mark a booking as a no-show */
|
|
493
|
+
post: operations["markBookingNoShow"];
|
|
494
|
+
delete?: never;
|
|
495
|
+
options?: never;
|
|
496
|
+
head?: never;
|
|
497
|
+
patch?: never;
|
|
498
|
+
trace?: never;
|
|
499
|
+
};
|
|
500
|
+
"/api/v1/bookings/manage/{token}": {
|
|
501
|
+
parameters: {
|
|
502
|
+
query?: never;
|
|
503
|
+
header?: never;
|
|
504
|
+
path: {
|
|
505
|
+
/** @description The show-once manage token handed out when the booking was created. Possession of it authorizes the customer's own cancel or reschedule. */
|
|
506
|
+
token: components["parameters"]["ManageToken"];
|
|
507
|
+
};
|
|
508
|
+
cookie?: never;
|
|
509
|
+
};
|
|
510
|
+
/** Get the customer manage summary for a token */
|
|
511
|
+
get: operations["getManagedBooking"];
|
|
512
|
+
put?: never;
|
|
513
|
+
post?: never;
|
|
514
|
+
delete?: never;
|
|
515
|
+
options?: never;
|
|
516
|
+
head?: never;
|
|
517
|
+
patch?: never;
|
|
518
|
+
trace?: never;
|
|
519
|
+
};
|
|
520
|
+
"/api/v1/bookings/manage/{token}/cancel": {
|
|
521
|
+
parameters: {
|
|
522
|
+
query?: never;
|
|
523
|
+
header?: never;
|
|
524
|
+
path: {
|
|
525
|
+
/** @description The show-once manage token handed out when the booking was created. Possession of it authorizes the customer's own cancel or reschedule. */
|
|
526
|
+
token: components["parameters"]["ManageToken"];
|
|
527
|
+
};
|
|
528
|
+
cookie?: never;
|
|
529
|
+
};
|
|
530
|
+
get?: never;
|
|
531
|
+
put?: never;
|
|
532
|
+
/**
|
|
533
|
+
* Cancel on the customer's behalf
|
|
534
|
+
* @description Customer semantics — the workspace's cancel window is ENFORCED and the cancellation is attributed to the customer.
|
|
535
|
+
*/
|
|
536
|
+
post: operations["cancelManagedBooking"];
|
|
537
|
+
delete?: never;
|
|
538
|
+
options?: never;
|
|
539
|
+
head?: never;
|
|
540
|
+
patch?: never;
|
|
541
|
+
trace?: never;
|
|
542
|
+
};
|
|
543
|
+
"/api/v1/bookings/manage/{token}/reschedule": {
|
|
544
|
+
parameters: {
|
|
545
|
+
query?: never;
|
|
546
|
+
header?: never;
|
|
547
|
+
path: {
|
|
548
|
+
/** @description The show-once manage token handed out when the booking was created. Possession of it authorizes the customer's own cancel or reschedule. */
|
|
549
|
+
token: components["parameters"]["ManageToken"];
|
|
550
|
+
};
|
|
551
|
+
cookie?: never;
|
|
552
|
+
};
|
|
553
|
+
get?: never;
|
|
554
|
+
put?: never;
|
|
555
|
+
/**
|
|
556
|
+
* Reschedule on the customer's behalf
|
|
557
|
+
* @description Customer semantics — the reschedule window is ENFORCED. The response carries a new booking id and a new manage token; the old token stops working.
|
|
558
|
+
*/
|
|
559
|
+
post: operations["rescheduleManagedBooking"];
|
|
560
|
+
delete?: never;
|
|
561
|
+
options?: never;
|
|
562
|
+
head?: never;
|
|
563
|
+
patch?: never;
|
|
564
|
+
trace?: never;
|
|
565
|
+
};
|
|
322
566
|
"/api/v1/gdpr/export": {
|
|
323
567
|
parameters: {
|
|
324
568
|
query?: never;
|
|
@@ -610,6 +854,26 @@ interface paths {
|
|
|
610
854
|
patch?: never;
|
|
611
855
|
trace?: never;
|
|
612
856
|
};
|
|
857
|
+
"/api/v1/capability-confirmations": {
|
|
858
|
+
parameters: {
|
|
859
|
+
query?: never;
|
|
860
|
+
header?: never;
|
|
861
|
+
path?: never;
|
|
862
|
+
cookie?: never;
|
|
863
|
+
};
|
|
864
|
+
get?: never;
|
|
865
|
+
put?: never;
|
|
866
|
+
/**
|
|
867
|
+
* Issue a capability confirmation token
|
|
868
|
+
* @description Mints a short-lived `X-Capability-Confirmation` token for one pending write. Confirmable write routes require BOTH `Idempotency-Key` and `X-Capability-Confirmation` when the credential holds the capability scope directly; API keys with legacy scopes are exempt. The token is bound to the workspace, auth subject, method, path, required scopes and idempotency key, and expires within 15 minutes. `user_approved: true` asserts that a human on the caller's side approved this exact action.
|
|
869
|
+
*/
|
|
870
|
+
post: operations["issueCapabilityConfirmation"];
|
|
871
|
+
delete?: never;
|
|
872
|
+
options?: never;
|
|
873
|
+
head?: never;
|
|
874
|
+
patch?: never;
|
|
875
|
+
trace?: never;
|
|
876
|
+
};
|
|
613
877
|
"/api/v1/channels/connect-links": {
|
|
614
878
|
parameters: {
|
|
615
879
|
query?: never;
|
|
@@ -619,7 +883,7 @@ interface paths {
|
|
|
619
883
|
};
|
|
620
884
|
/**
|
|
621
885
|
* List connect links
|
|
622
|
-
* @description Link tokens are never returned.
|
|
886
|
+
* @description Link tokens are never returned. Newest first, cursor-paginated. The `channel_type` / `status` filters are applied within each page, so a page may hold fewer than `limit` items while `pagination.has_more` is still true — page off `has_more`, not the item count.
|
|
623
887
|
*/
|
|
624
888
|
get: operations["listChannelConnectLinks"];
|
|
625
889
|
put?: never;
|
|
@@ -663,7 +927,10 @@ interface paths {
|
|
|
663
927
|
path?: never;
|
|
664
928
|
cookie?: never;
|
|
665
929
|
};
|
|
666
|
-
/**
|
|
930
|
+
/**
|
|
931
|
+
* List channel connections
|
|
932
|
+
* @description The workspace's channel connections in a generic, channel-agnostic shape. Newest first, cursor-paginated. Rows that are not projectable as connections are dropped within the page, so a page may hold fewer than `limit` items while `pagination.has_more` is still true — page off `has_more`, not the item count.
|
|
933
|
+
*/
|
|
667
934
|
get: operations["listChannelConnections"];
|
|
668
935
|
put?: never;
|
|
669
936
|
post?: never;
|
|
@@ -695,6 +962,62 @@ interface paths {
|
|
|
695
962
|
patch?: never;
|
|
696
963
|
trace?: never;
|
|
697
964
|
};
|
|
965
|
+
"/api/v1/scan": {
|
|
966
|
+
parameters: {
|
|
967
|
+
query?: never;
|
|
968
|
+
header?: never;
|
|
969
|
+
path?: never;
|
|
970
|
+
cookie?: never;
|
|
971
|
+
};
|
|
972
|
+
get?: never;
|
|
973
|
+
put?: never;
|
|
974
|
+
/**
|
|
975
|
+
* Queue a company/site scan
|
|
976
|
+
* @description Queues an asynchronous scan. Provide exactly one of `url`, `orgnr`, or `name`; poll the returned id via `GET /api/v1/scan/{id}`.
|
|
977
|
+
*/
|
|
978
|
+
post: operations["createScan"];
|
|
979
|
+
delete?: never;
|
|
980
|
+
options?: never;
|
|
981
|
+
head?: never;
|
|
982
|
+
patch?: never;
|
|
983
|
+
trace?: never;
|
|
984
|
+
};
|
|
985
|
+
"/api/v1/scan/companies": {
|
|
986
|
+
parameters: {
|
|
987
|
+
query?: never;
|
|
988
|
+
header?: never;
|
|
989
|
+
path?: never;
|
|
990
|
+
cookie?: never;
|
|
991
|
+
};
|
|
992
|
+
/** Search the Norwegian company registry */
|
|
993
|
+
get: operations["searchScanCompanies"];
|
|
994
|
+
put?: never;
|
|
995
|
+
post?: never;
|
|
996
|
+
delete?: never;
|
|
997
|
+
options?: never;
|
|
998
|
+
head?: never;
|
|
999
|
+
patch?: never;
|
|
1000
|
+
trace?: never;
|
|
1001
|
+
};
|
|
1002
|
+
"/api/v1/scan/{id}": {
|
|
1003
|
+
parameters: {
|
|
1004
|
+
query?: never;
|
|
1005
|
+
header?: never;
|
|
1006
|
+
path: {
|
|
1007
|
+
id: components["parameters"]["Id"];
|
|
1008
|
+
};
|
|
1009
|
+
cookie?: never;
|
|
1010
|
+
};
|
|
1011
|
+
/** Get a scan job */
|
|
1012
|
+
get: operations["getScan"];
|
|
1013
|
+
put?: never;
|
|
1014
|
+
post?: never;
|
|
1015
|
+
delete?: never;
|
|
1016
|
+
options?: never;
|
|
1017
|
+
head?: never;
|
|
1018
|
+
patch?: never;
|
|
1019
|
+
trace?: never;
|
|
1020
|
+
};
|
|
698
1021
|
}
|
|
699
1022
|
type webhooks = Record<string, never>;
|
|
700
1023
|
interface components {
|
|
@@ -1094,7 +1417,216 @@ interface components {
|
|
|
1094
1417
|
end_date?: string;
|
|
1095
1418
|
notes?: string;
|
|
1096
1419
|
};
|
|
1097
|
-
|
|
1420
|
+
/** @description A timestamp on the way in — Unix milliseconds, or an ISO 8601 date-time string. Responses always render timestamps as ISO 8601. */
|
|
1421
|
+
BookingTimestampInput: number | string;
|
|
1422
|
+
/** @enum {string} */
|
|
1423
|
+
BookingStatus: "pending" | "confirmed" | "completed" | "cancelled" | "no_show";
|
|
1424
|
+
/**
|
|
1425
|
+
* @description Who cancelled. `staff` for the id-addressed cancel, `customer` for the manage-token cancel, `system` for an automated one.
|
|
1426
|
+
* @enum {string}
|
|
1427
|
+
*/
|
|
1428
|
+
BookingCancelledBy: "customer" | "staff" | "system";
|
|
1429
|
+
/** @enum {string} */
|
|
1430
|
+
BookingPaymentStatus: "none" | "reserved" | "captured" | "refunded";
|
|
1431
|
+
/** @enum {string} */
|
|
1432
|
+
BookingCreatedVia: "web" | "dashboard" | "walk_in" | "api";
|
|
1433
|
+
/** @enum {string} */
|
|
1434
|
+
BookingResourceType: "staff" | "room" | "equipment";
|
|
1435
|
+
Booking: {
|
|
1436
|
+
id: string;
|
|
1437
|
+
contact_id: string | null;
|
|
1438
|
+
service_id: string | null;
|
|
1439
|
+
resource_id: string | null;
|
|
1440
|
+
/** Format: date-time */
|
|
1441
|
+
start_ts: string | null;
|
|
1442
|
+
/** Format: date-time */
|
|
1443
|
+
end_ts: string | null;
|
|
1444
|
+
booked_for_name: string | null;
|
|
1445
|
+
/** @description A birth year, not a birthdate — the age bracket is all that is stored. */
|
|
1446
|
+
booked_for_birth_year: number | null;
|
|
1447
|
+
/** @description Shared by every booking created in the same party request. */
|
|
1448
|
+
party_sequence_id: string | null;
|
|
1449
|
+
status: components["schemas"]["BookingStatus"];
|
|
1450
|
+
cancelled_by: components["schemas"]["BookingCancelledBy"] | null;
|
|
1451
|
+
cancel_reason: string | null;
|
|
1452
|
+
/** @description On a booking created by a reschedule, the booking it replaced. */
|
|
1453
|
+
rescheduled_from_id: string | null;
|
|
1454
|
+
payment_status: components["schemas"]["BookingPaymentStatus"];
|
|
1455
|
+
/** @description Price in integer øre. Never a float and never kroner. */
|
|
1456
|
+
amount_ore: number | null;
|
|
1457
|
+
/** @description Customer-visible note. */
|
|
1458
|
+
notes: string | null;
|
|
1459
|
+
/** @description Staff-only note; never shown to the customer. */
|
|
1460
|
+
internal_notes: string | null;
|
|
1461
|
+
created_via: components["schemas"]["BookingCreatedVia"] | null;
|
|
1462
|
+
/** Format: date-time */
|
|
1463
|
+
created_at: string | null;
|
|
1464
|
+
/** Format: date-time */
|
|
1465
|
+
updated_at: string | null;
|
|
1466
|
+
};
|
|
1467
|
+
BookingService: {
|
|
1468
|
+
id: string;
|
|
1469
|
+
name: string | null;
|
|
1470
|
+
description: string | null;
|
|
1471
|
+
category: string | null;
|
|
1472
|
+
duration_minutes: number | null;
|
|
1473
|
+
buffer_before_minutes: number | null;
|
|
1474
|
+
buffer_after_minutes: number | null;
|
|
1475
|
+
/** @description Price in integer øre. */
|
|
1476
|
+
price_ore: number | null;
|
|
1477
|
+
weekend_surcharge_pct: number | null;
|
|
1478
|
+
/** @description Resource types this service needs, e.g. `["staff"]`. */
|
|
1479
|
+
resource_requirements: string[];
|
|
1480
|
+
bookable_online: boolean;
|
|
1481
|
+
max_per_booking: number | null;
|
|
1482
|
+
color: string | null;
|
|
1483
|
+
sort_order: number | null;
|
|
1484
|
+
active: boolean;
|
|
1485
|
+
/** Format: date-time */
|
|
1486
|
+
created_at: string | null;
|
|
1487
|
+
/** Format: date-time */
|
|
1488
|
+
updated_at: string | null;
|
|
1489
|
+
};
|
|
1490
|
+
BookingResource: {
|
|
1491
|
+
id: string;
|
|
1492
|
+
type: components["schemas"]["BookingResourceType"] | null;
|
|
1493
|
+
name: string | null;
|
|
1494
|
+
/** Format: uri */
|
|
1495
|
+
photo_url: string | null;
|
|
1496
|
+
bio: string | null;
|
|
1497
|
+
/** @description Services this resource can perform. */
|
|
1498
|
+
service_ids: string[];
|
|
1499
|
+
capacity: number | null;
|
|
1500
|
+
sort_order: number | null;
|
|
1501
|
+
active: boolean;
|
|
1502
|
+
/** Format: date-time */
|
|
1503
|
+
created_at: string | null;
|
|
1504
|
+
/** Format: date-time */
|
|
1505
|
+
updated_at: string | null;
|
|
1506
|
+
};
|
|
1507
|
+
BookingSlot: {
|
|
1508
|
+
/** Format: date-time */
|
|
1509
|
+
start_ts: string | null;
|
|
1510
|
+
/** Format: date-time */
|
|
1511
|
+
end_ts: string | null;
|
|
1512
|
+
resource_id: string | null;
|
|
1513
|
+
};
|
|
1514
|
+
/** @description One date a service can be booked on. `date` is the workspace's own calendar date, not a timestamp. */
|
|
1515
|
+
BookingScheduleDay: {
|
|
1516
|
+
/** Format: date */
|
|
1517
|
+
date: string | null;
|
|
1518
|
+
/** Format: date-time */
|
|
1519
|
+
opens_ts: string | null;
|
|
1520
|
+
/** Format: date-time */
|
|
1521
|
+
closes_ts: string | null;
|
|
1522
|
+
/**
|
|
1523
|
+
* Format: date-time
|
|
1524
|
+
* @description Last start this service could occupy on the date; `null` when the date is shut outright.
|
|
1525
|
+
*/
|
|
1526
|
+
last_start_ts: string | null;
|
|
1527
|
+
};
|
|
1528
|
+
/** @description The person the booking is made under. Phone is the CRM dedupe key. */
|
|
1529
|
+
BookingContactInput: {
|
|
1530
|
+
phone: string;
|
|
1531
|
+
email?: string;
|
|
1532
|
+
name?: string;
|
|
1533
|
+
};
|
|
1534
|
+
/** @description One line of a party — a single service on a single slot. */
|
|
1535
|
+
CreateBookingItemInput: {
|
|
1536
|
+
service_id: string;
|
|
1537
|
+
/** @description Omit to let the engine pick a free resource. */
|
|
1538
|
+
resource_id?: string;
|
|
1539
|
+
start_ts: components["schemas"]["BookingTimestampInput"];
|
|
1540
|
+
booked_for_name?: string;
|
|
1541
|
+
booked_for_birth_year?: number;
|
|
1542
|
+
};
|
|
1543
|
+
CreateBookingInput: {
|
|
1544
|
+
/** @description A PARTY — one request books a whole family in one all-or-nothing transaction. */
|
|
1545
|
+
items: components["schemas"]["CreateBookingItemInput"][];
|
|
1546
|
+
contact: components["schemas"]["BookingContactInput"];
|
|
1547
|
+
notes?: string;
|
|
1548
|
+
/**
|
|
1549
|
+
* @description Where the booking came from. Defaults to `api`. A workspace's OWN website should send `web`, so its bookings can be told apart from integrations. `dashboard` and `walk_in` are staff-only and are rejected with 400 — a bearer token proves which workspace is calling, not that a member typed the booking in.
|
|
1550
|
+
* @enum {string}
|
|
1551
|
+
*/
|
|
1552
|
+
created_via?: "web" | "api";
|
|
1553
|
+
};
|
|
1554
|
+
CreatedBooking: {
|
|
1555
|
+
id: string;
|
|
1556
|
+
/** @description Show-once secret for the customer's manage link. Only its hash is stored, and an idempotent replay omits this field entirely. */
|
|
1557
|
+
manage_token?: string;
|
|
1558
|
+
};
|
|
1559
|
+
BookingCreateResult: {
|
|
1560
|
+
/** @description One entry per created booking, in request order. */
|
|
1561
|
+
bookings: components["schemas"]["CreatedBooking"][];
|
|
1562
|
+
contact_id: string;
|
|
1563
|
+
};
|
|
1564
|
+
BookingActionResult: {
|
|
1565
|
+
/** @constant */
|
|
1566
|
+
success: true;
|
|
1567
|
+
};
|
|
1568
|
+
BookingRescheduleResult: {
|
|
1569
|
+
/** @constant */
|
|
1570
|
+
success: true;
|
|
1571
|
+
/** @description The NEW booking's id — a reschedule cancels the old row and inserts a new one. */
|
|
1572
|
+
booking_id: string;
|
|
1573
|
+
/** @description Freshly minted manage token for the new booking; omitted on an idempotent replay. */
|
|
1574
|
+
manage_token?: string;
|
|
1575
|
+
};
|
|
1576
|
+
/** @description What the holder of a manage token may see and do. `can_cancel` and `can_reschedule` already apply the workspace's policy windows. */
|
|
1577
|
+
ManageSummary: {
|
|
1578
|
+
booking_id: string;
|
|
1579
|
+
contact_id: string | null;
|
|
1580
|
+
status: components["schemas"]["BookingStatus"] | null;
|
|
1581
|
+
cancelled_by: components["schemas"]["BookingCancelledBy"] | null;
|
|
1582
|
+
cancel_reason: string | null;
|
|
1583
|
+
rescheduled_from_id: string | null;
|
|
1584
|
+
/** Format: date-time */
|
|
1585
|
+
start_ts: string | null;
|
|
1586
|
+
/** Format: date-time */
|
|
1587
|
+
end_ts: string | null;
|
|
1588
|
+
service_id: string | null;
|
|
1589
|
+
service_name: string | null;
|
|
1590
|
+
resource_id: string | null;
|
|
1591
|
+
resource_name: string | null;
|
|
1592
|
+
booked_for_name: string | null;
|
|
1593
|
+
party_sequence_id: string | null;
|
|
1594
|
+
/** @description Price in integer øre. */
|
|
1595
|
+
amount_ore: number | null;
|
|
1596
|
+
payment_status: components["schemas"]["BookingPaymentStatus"] | null;
|
|
1597
|
+
/** @description IANA zone the booking's local times should be rendered in. */
|
|
1598
|
+
time_zone: string | null;
|
|
1599
|
+
cancel_window_hours: number | null;
|
|
1600
|
+
reschedule_window_hours: number | null;
|
|
1601
|
+
can_cancel: boolean;
|
|
1602
|
+
can_reschedule: boolean;
|
|
1603
|
+
};
|
|
1604
|
+
/** @description At least one of `notes` or `internal_notes` is required — the API rejects a body carrying neither with a 400. `""` is a meaningful value that clears the field, so the constraint is on presence. */
|
|
1605
|
+
UpdateBookingInput: {
|
|
1606
|
+
/** @description Customer-visible note. */
|
|
1607
|
+
notes: string;
|
|
1608
|
+
/** @description Staff-only note. */
|
|
1609
|
+
internal_notes?: string;
|
|
1610
|
+
} | {
|
|
1611
|
+
/** @description Customer-visible note. */
|
|
1612
|
+
notes?: string;
|
|
1613
|
+
/** @description Staff-only note. */
|
|
1614
|
+
internal_notes: string;
|
|
1615
|
+
};
|
|
1616
|
+
CancelBookingInput: {
|
|
1617
|
+
reason?: string;
|
|
1618
|
+
};
|
|
1619
|
+
RescheduleBookingInput: {
|
|
1620
|
+
new_start_ts: components["schemas"]["BookingTimestampInput"];
|
|
1621
|
+
new_resource_id?: string;
|
|
1622
|
+
};
|
|
1623
|
+
/** @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. */
|
|
1624
|
+
BookingsPagination: {
|
|
1625
|
+
has_more: boolean;
|
|
1626
|
+
next_cursor: string | null;
|
|
1627
|
+
truncated: boolean;
|
|
1628
|
+
};
|
|
1629
|
+
GdprExport: {
|
|
1098
1630
|
id: string;
|
|
1099
1631
|
request_type: string;
|
|
1100
1632
|
status: string;
|
|
@@ -1212,9 +1744,15 @@ interface components {
|
|
|
1212
1744
|
author_user_id: string | null;
|
|
1213
1745
|
author_name: string | null;
|
|
1214
1746
|
body: string;
|
|
1747
|
+
/** @description Outbound delivery state, or `null` for inbound messages and internal notes. A `201` from `POST /api/v1/helpdesk/replies` means the reply was accepted, NOT delivered — the channel hand-off is asynchronous, so poll this field (or subscribe to `helpdesk.message_delivery_updated`) to learn the outcome. */
|
|
1748
|
+
delivery_status: components["schemas"]["HelpdeskMessageDeliveryStatus"] | null;
|
|
1749
|
+
/** @description Last send error for a `failed` outbound message, otherwise `null`. */
|
|
1750
|
+
delivery_error: string | null;
|
|
1215
1751
|
/** @description Unix timestamp in milliseconds. */
|
|
1216
1752
|
created_at: number;
|
|
1217
1753
|
};
|
|
1754
|
+
/** @enum {string} */
|
|
1755
|
+
HelpdeskMessageDeliveryStatus: "pending" | "sent" | "delivered" | "failed";
|
|
1218
1756
|
/** @description At least one field is required. */
|
|
1219
1757
|
UpdateHelpdeskConversationInput: {
|
|
1220
1758
|
status?: components["schemas"]["HelpdeskConversationStatus"];
|
|
@@ -1306,9 +1844,17 @@ interface components {
|
|
|
1306
1844
|
/** @constant */
|
|
1307
1845
|
status: "deleted";
|
|
1308
1846
|
};
|
|
1847
|
+
/** @description A delivery attempt record. `id` is the same value sent as the `X-Medal-Delivery-Id` and `Idempotency-Key` headers on the outbound request. Deliveries never carry payload bodies (payloads can contain customer PII). The correlation fields are derived from the stored event and fail closed to `null` when no canonical event exists — e.g. `test.ping` deliveries or events that have aged out of retention. */
|
|
1309
1848
|
WebhookDelivery: {
|
|
1310
1849
|
id: string;
|
|
1311
1850
|
event_type: string;
|
|
1851
|
+
/** @description Primary subject id of the announced event, or `null`. */
|
|
1852
|
+
resource_id: string | null;
|
|
1853
|
+
conversation_id: string | null;
|
|
1854
|
+
message_id: string | null;
|
|
1855
|
+
connection_ref: string | null;
|
|
1856
|
+
channel: string | null;
|
|
1857
|
+
channel_connection_id: string | null;
|
|
1312
1858
|
/** @enum {string} */
|
|
1313
1859
|
status: "pending" | "delivered" | "dead_letter";
|
|
1314
1860
|
attempt_count: number;
|
|
@@ -1410,9 +1956,21 @@ interface components {
|
|
|
1410
1956
|
ApiResponse_DealCreateResult: components["schemas"]["Envelope_DealCreateResult"];
|
|
1411
1957
|
ApiResponse_DealUpdateResult: components["schemas"]["Envelope_DealUpdateResult"];
|
|
1412
1958
|
ApiResponse_DealRemoveResult: components["schemas"]["Envelope_DealRemoveResult"];
|
|
1959
|
+
ApiResponse_Booking: components["schemas"]["Envelope_Booking"];
|
|
1960
|
+
ApiResponse_BookingServiceArray: components["schemas"]["Envelope_BookingServiceArray"];
|
|
1961
|
+
ApiResponse_BookingResourceArray: components["schemas"]["Envelope_BookingResourceArray"];
|
|
1962
|
+
ApiResponse_BookingSlotArray: components["schemas"]["Envelope_BookingSlotArray"];
|
|
1963
|
+
ApiResponse_BookingScheduleDayArray: components["schemas"]["Envelope_BookingScheduleDayArray"];
|
|
1964
|
+
ApiResponse_BookingCreateResult: components["schemas"]["Envelope_BookingCreateResult"];
|
|
1965
|
+
ApiResponse_BookingActionResult: components["schemas"]["Envelope_BookingActionResult"];
|
|
1966
|
+
ApiResponse_BookingRescheduleResult: components["schemas"]["Envelope_BookingRescheduleResult"];
|
|
1967
|
+
ApiResponse_ManageSummary: components["schemas"]["Envelope_ManageSummary"];
|
|
1413
1968
|
ApiResponse_GdprExportRequest: components["schemas"]["Envelope_GdprExportRequest"];
|
|
1414
1969
|
ApiResponse_GdprExportArray: components["schemas"]["Envelope_GdprExportArray"];
|
|
1415
1970
|
ApiResponse_GdprExport: components["schemas"]["Envelope_GdprExport"];
|
|
1971
|
+
ApiResponse_ScanCreateResult: components["schemas"]["Envelope_ScanCreateResult"];
|
|
1972
|
+
ApiResponse_ScanCompanyArray: components["schemas"]["Envelope_ScanCompanyArray"];
|
|
1973
|
+
ApiResponse_ScanJob: components["schemas"]["Envelope_ScanJob"];
|
|
1416
1974
|
ApiResponse_ConsentResult: components["schemas"]["Envelope_ConsentResult"];
|
|
1417
1975
|
ApiResponse_ConsentRecordArray: components["schemas"]["Envelope_ConsentRecordArray"];
|
|
1418
1976
|
ApiResponse_WorkspaceArray: components["schemas"]["Envelope_WorkspaceArray"];
|
|
@@ -1445,6 +2003,10 @@ interface components {
|
|
|
1445
2003
|
data: components["schemas"]["Deal"][];
|
|
1446
2004
|
pagination: components["schemas"]["Pagination"];
|
|
1447
2005
|
};
|
|
2006
|
+
PaginatedResponse_Booking: {
|
|
2007
|
+
data: components["schemas"]["Booking"][];
|
|
2008
|
+
pagination: components["schemas"]["BookingsPagination"];
|
|
2009
|
+
};
|
|
1448
2010
|
PaginatedResponse_HelpdeskConversation: {
|
|
1449
2011
|
data: components["schemas"]["HelpdeskConversation"][];
|
|
1450
2012
|
pagination: components["schemas"]["Pagination"];
|
|
@@ -1453,6 +2015,14 @@ interface components {
|
|
|
1453
2015
|
data: components["schemas"]["HelpdeskMessage"][];
|
|
1454
2016
|
pagination: components["schemas"]["Pagination"];
|
|
1455
2017
|
};
|
|
2018
|
+
PaginatedResponse_ConnectLink: {
|
|
2019
|
+
data: components["schemas"]["ConnectLink"][];
|
|
2020
|
+
pagination: components["schemas"]["Pagination"];
|
|
2021
|
+
};
|
|
2022
|
+
PaginatedResponse_ChannelConnection: {
|
|
2023
|
+
data: components["schemas"]["ChannelConnection"][];
|
|
2024
|
+
pagination: components["schemas"]["Pagination"];
|
|
2025
|
+
};
|
|
1456
2026
|
Envelope_PostCreateResult: {
|
|
1457
2027
|
data: components["schemas"]["PostCreateResult"];
|
|
1458
2028
|
};
|
|
@@ -1516,6 +2086,94 @@ interface components {
|
|
|
1516
2086
|
Envelope_DealRemoveResult: {
|
|
1517
2087
|
data: components["schemas"]["DealRemoveResult"];
|
|
1518
2088
|
};
|
|
2089
|
+
Envelope_Booking: {
|
|
2090
|
+
data: components["schemas"]["Booking"];
|
|
2091
|
+
};
|
|
2092
|
+
Envelope_BookingServiceArray: {
|
|
2093
|
+
data: components["schemas"]["BookingService"][];
|
|
2094
|
+
};
|
|
2095
|
+
Envelope_BookingResourceArray: {
|
|
2096
|
+
data: components["schemas"]["BookingResource"][];
|
|
2097
|
+
};
|
|
2098
|
+
Envelope_BookingSlotArray: {
|
|
2099
|
+
data: components["schemas"]["BookingSlot"][];
|
|
2100
|
+
};
|
|
2101
|
+
Envelope_BookingScheduleDayArray: {
|
|
2102
|
+
data: components["schemas"]["BookingScheduleDay"][];
|
|
2103
|
+
};
|
|
2104
|
+
Envelope_BookingCreateResult: {
|
|
2105
|
+
data: components["schemas"]["BookingCreateResult"];
|
|
2106
|
+
};
|
|
2107
|
+
Envelope_BookingActionResult: {
|
|
2108
|
+
data: components["schemas"]["BookingActionResult"];
|
|
2109
|
+
};
|
|
2110
|
+
Envelope_BookingRescheduleResult: {
|
|
2111
|
+
data: components["schemas"]["BookingRescheduleResult"];
|
|
2112
|
+
};
|
|
2113
|
+
Envelope_ManageSummary: {
|
|
2114
|
+
data: components["schemas"]["ManageSummary"];
|
|
2115
|
+
};
|
|
2116
|
+
/** @description Provide exactly one of `url`, `orgnr`, or `name`. */
|
|
2117
|
+
ScanCreateInput: {
|
|
2118
|
+
url?: string;
|
|
2119
|
+
orgnr?: string;
|
|
2120
|
+
name?: string;
|
|
2121
|
+
} & (unknown | unknown | unknown);
|
|
2122
|
+
ScanCreateResult: {
|
|
2123
|
+
id: string;
|
|
2124
|
+
status: string;
|
|
2125
|
+
message?: string;
|
|
2126
|
+
};
|
|
2127
|
+
ScanCompany: {
|
|
2128
|
+
orgnr: string;
|
|
2129
|
+
name: string;
|
|
2130
|
+
org_form: string | null;
|
|
2131
|
+
industry: string | null;
|
|
2132
|
+
city: string | null;
|
|
2133
|
+
website: string | null;
|
|
2134
|
+
};
|
|
2135
|
+
ScanJob: {
|
|
2136
|
+
id: string;
|
|
2137
|
+
/** @description pending | running | done | failed */
|
|
2138
|
+
status: string;
|
|
2139
|
+
input: components["schemas"]["ScanCreateInput"];
|
|
2140
|
+
resolved: {
|
|
2141
|
+
orgnr?: string;
|
|
2142
|
+
companyName?: string;
|
|
2143
|
+
websiteUrl?: string;
|
|
2144
|
+
} | null;
|
|
2145
|
+
/** @description Versioned findings payload (see the SDK `ScanResultPayload` type); additive per `version`. The stable core is documented below; further sections (registry, signals, pagespeed, seo, ai, gdpr, mailAuth, httpsOk) evolve additively. */
|
|
2146
|
+
result: ({
|
|
2147
|
+
version: number;
|
|
2148
|
+
/** @description Weighted composite score (0-100); null when unmeasurable. */
|
|
2149
|
+
nettskaar: number | null;
|
|
2150
|
+
/** @description Per-axis 0-100 scores; null axes were unmeasurable. */
|
|
2151
|
+
subScores: {
|
|
2152
|
+
fart: number | null;
|
|
2153
|
+
google: number | null;
|
|
2154
|
+
ai: number | null;
|
|
2155
|
+
trygghet: number | null;
|
|
2156
|
+
omdomme: number | null;
|
|
2157
|
+
};
|
|
2158
|
+
} & {
|
|
2159
|
+
[key: string]: unknown;
|
|
2160
|
+
}) | null;
|
|
2161
|
+
/** @description Public-safe failure code (company_not_found, no_website, …). */
|
|
2162
|
+
error: string | null;
|
|
2163
|
+
/** Format: date-time */
|
|
2164
|
+
created_at: string | null;
|
|
2165
|
+
/** Format: date-time */
|
|
2166
|
+
finished_at: string | null;
|
|
2167
|
+
};
|
|
2168
|
+
Envelope_ScanCreateResult: {
|
|
2169
|
+
data: components["schemas"]["ScanCreateResult"];
|
|
2170
|
+
};
|
|
2171
|
+
Envelope_ScanCompanyArray: {
|
|
2172
|
+
data: components["schemas"]["ScanCompany"][];
|
|
2173
|
+
};
|
|
2174
|
+
Envelope_ScanJob: {
|
|
2175
|
+
data: components["schemas"]["ScanJob"];
|
|
2176
|
+
};
|
|
1519
2177
|
Envelope_GdprExportRequest: {
|
|
1520
2178
|
data: components["schemas"]["GdprExportRequest"];
|
|
1521
2179
|
};
|
|
@@ -1552,6 +2210,44 @@ interface components {
|
|
|
1552
2210
|
Envelope_WebhookDeleteResult: {
|
|
1553
2211
|
data: components["schemas"]["WebhookDeleteResult"];
|
|
1554
2212
|
};
|
|
2213
|
+
IssueCapabilityConfirmationInput: {
|
|
2214
|
+
/** @description Confirmable capability to mint a token for. */
|
|
2215
|
+
capability_id: string;
|
|
2216
|
+
/** @description Concrete `/api/v1/...` path to bind the token to. Optional when the capability has exactly one API target; required when it has several. */
|
|
2217
|
+
api_path?: string;
|
|
2218
|
+
/** @description Values for the capability path template's parameters. */
|
|
2219
|
+
path_params?: {
|
|
2220
|
+
[key: string]: string | number | boolean;
|
|
2221
|
+
};
|
|
2222
|
+
/** @description The exact `Idempotency-Key` the confirmed write will send. The token is bound to it. */
|
|
2223
|
+
idempotency_key?: string;
|
|
2224
|
+
/** @description Human-readable description of the approved action, retained for audit. */
|
|
2225
|
+
preview_summary: string;
|
|
2226
|
+
/**
|
|
2227
|
+
* @description Asserts that a human on the caller's side approved this specific action.
|
|
2228
|
+
* @constant
|
|
2229
|
+
*/
|
|
2230
|
+
user_approved: true;
|
|
2231
|
+
};
|
|
2232
|
+
CapabilityConfirmation: {
|
|
2233
|
+
/** @description Send as the `X-Capability-Confirmation` header on the write. */
|
|
2234
|
+
confirmation_token: string;
|
|
2235
|
+
/** @constant */
|
|
2236
|
+
token_type: "medal_capability_confirmation";
|
|
2237
|
+
capability_id: string;
|
|
2238
|
+
method: string;
|
|
2239
|
+
path: string;
|
|
2240
|
+
required_scopes: string[];
|
|
2241
|
+
idempotency_key: string | null;
|
|
2242
|
+
expires_in: number;
|
|
2243
|
+
/** Format: date-time */
|
|
2244
|
+
expires_at: string;
|
|
2245
|
+
preview_summary: string;
|
|
2246
|
+
};
|
|
2247
|
+
ApiResponse_CapabilityConfirmation: components["schemas"]["Envelope_CapabilityConfirmation"];
|
|
2248
|
+
Envelope_CapabilityConfirmation: {
|
|
2249
|
+
data: components["schemas"]["CapabilityConfirmation"];
|
|
2250
|
+
};
|
|
1555
2251
|
Envelope_WebhookDeliveryArray: {
|
|
1556
2252
|
data: components["schemas"]["WebhookDelivery"][];
|
|
1557
2253
|
};
|
|
@@ -1561,12 +2257,20 @@ interface components {
|
|
|
1561
2257
|
Envelope_ConnectLinkCreateResult: {
|
|
1562
2258
|
data: components["schemas"]["ConnectLinkCreateResult"];
|
|
1563
2259
|
};
|
|
2260
|
+
/**
|
|
2261
|
+
* @deprecated
|
|
2262
|
+
* @description Deprecated — `listChannelConnectLinks` responds with `PaginatedResponse_ConnectLink`. Retained for backwards compatibility with consumers of the generated contract types.
|
|
2263
|
+
*/
|
|
1564
2264
|
Envelope_ConnectLinkArray: {
|
|
1565
2265
|
data: components["schemas"]["ConnectLink"][];
|
|
1566
2266
|
};
|
|
1567
2267
|
Envelope_ConnectLinkRevokeResult: {
|
|
1568
2268
|
data: components["schemas"]["ConnectLinkRevokeResult"];
|
|
1569
2269
|
};
|
|
2270
|
+
/**
|
|
2271
|
+
* @deprecated
|
|
2272
|
+
* @description Deprecated — `listChannelConnections` responds with `PaginatedResponse_ChannelConnection`. Retained for backwards compatibility with consumers of the generated contract types.
|
|
2273
|
+
*/
|
|
1570
2274
|
Envelope_ChannelConnectionArray: {
|
|
1571
2275
|
data: components["schemas"]["ChannelConnection"][];
|
|
1572
2276
|
};
|
|
@@ -1588,6 +2292,8 @@ interface components {
|
|
|
1588
2292
|
parameters: {
|
|
1589
2293
|
Id: string;
|
|
1590
2294
|
Slug: string;
|
|
2295
|
+
/** @description The show-once manage token handed out when the booking was created. Possession of it authorizes the customer's own cancel or reschedule. */
|
|
2296
|
+
ManageToken: string;
|
|
1591
2297
|
Cursor: string;
|
|
1592
2298
|
Limit: number;
|
|
1593
2299
|
};
|
|
@@ -1836,60 +2542,387 @@ interface operations {
|
|
|
1836
2542
|
[name: string]: unknown;
|
|
1837
2543
|
};
|
|
1838
2544
|
content: {
|
|
1839
|
-
"application/json": components["schemas"]["ApiResponse_BatchSendSummary"];
|
|
2545
|
+
"application/json": components["schemas"]["ApiResponse_BatchSendSummary"];
|
|
2546
|
+
};
|
|
2547
|
+
};
|
|
2548
|
+
default: components["responses"]["ApiError"];
|
|
2549
|
+
};
|
|
2550
|
+
};
|
|
2551
|
+
listEmailTemplates: {
|
|
2552
|
+
parameters: {
|
|
2553
|
+
query?: never;
|
|
2554
|
+
header?: never;
|
|
2555
|
+
path?: never;
|
|
2556
|
+
cookie?: never;
|
|
2557
|
+
};
|
|
2558
|
+
requestBody?: never;
|
|
2559
|
+
responses: {
|
|
2560
|
+
/** @description Active templates. */
|
|
2561
|
+
200: {
|
|
2562
|
+
headers: {
|
|
2563
|
+
[name: string]: unknown;
|
|
2564
|
+
};
|
|
2565
|
+
content: {
|
|
2566
|
+
"application/json": components["schemas"]["ApiResponse_EmailTemplateArray"];
|
|
2567
|
+
};
|
|
2568
|
+
};
|
|
2569
|
+
default: components["responses"]["ApiError"];
|
|
2570
|
+
};
|
|
2571
|
+
};
|
|
2572
|
+
getEmailTemplate: {
|
|
2573
|
+
parameters: {
|
|
2574
|
+
query?: {
|
|
2575
|
+
locale?: string;
|
|
2576
|
+
fallback_locale?: string;
|
|
2577
|
+
};
|
|
2578
|
+
header?: never;
|
|
2579
|
+
path: {
|
|
2580
|
+
slug: components["parameters"]["Slug"];
|
|
2581
|
+
};
|
|
2582
|
+
cookie?: never;
|
|
2583
|
+
};
|
|
2584
|
+
requestBody?: never;
|
|
2585
|
+
responses: {
|
|
2586
|
+
/** @description Email template detail. */
|
|
2587
|
+
200: {
|
|
2588
|
+
headers: {
|
|
2589
|
+
[name: string]: unknown;
|
|
2590
|
+
};
|
|
2591
|
+
content: {
|
|
2592
|
+
"application/json": components["schemas"]["ApiResponse_EmailTemplateDetail"];
|
|
2593
|
+
};
|
|
2594
|
+
};
|
|
2595
|
+
default: components["responses"]["ApiError"];
|
|
2596
|
+
};
|
|
2597
|
+
};
|
|
2598
|
+
getEmailSend: {
|
|
2599
|
+
parameters: {
|
|
2600
|
+
query?: never;
|
|
2601
|
+
header?: never;
|
|
2602
|
+
path: {
|
|
2603
|
+
id: components["parameters"]["Id"];
|
|
2604
|
+
};
|
|
2605
|
+
cookie?: never;
|
|
2606
|
+
};
|
|
2607
|
+
requestBody?: never;
|
|
2608
|
+
responses: {
|
|
2609
|
+
/** @description Sent email status. */
|
|
2610
|
+
200: {
|
|
2611
|
+
headers: {
|
|
2612
|
+
[name: string]: unknown;
|
|
2613
|
+
};
|
|
2614
|
+
content: {
|
|
2615
|
+
"application/json": components["schemas"]["ApiResponse_EmailSend"];
|
|
2616
|
+
};
|
|
2617
|
+
};
|
|
2618
|
+
default: components["responses"]["ApiError"];
|
|
2619
|
+
};
|
|
2620
|
+
};
|
|
2621
|
+
listContacts: {
|
|
2622
|
+
parameters: {
|
|
2623
|
+
query?: {
|
|
2624
|
+
limit?: components["parameters"]["Limit"];
|
|
2625
|
+
cursor?: components["parameters"]["Cursor"];
|
|
2626
|
+
status?: components["schemas"]["ContactStatus"];
|
|
2627
|
+
email_status?: components["schemas"]["EmailStatus"];
|
|
2628
|
+
/** @description Comma-separated label IDs. */
|
|
2629
|
+
label_ids?: string;
|
|
2630
|
+
search?: string;
|
|
2631
|
+
};
|
|
2632
|
+
header?: never;
|
|
2633
|
+
path?: never;
|
|
2634
|
+
cookie?: never;
|
|
2635
|
+
};
|
|
2636
|
+
requestBody?: never;
|
|
2637
|
+
responses: {
|
|
2638
|
+
/** @description Contacts page. */
|
|
2639
|
+
200: {
|
|
2640
|
+
headers: {
|
|
2641
|
+
[name: string]: unknown;
|
|
2642
|
+
};
|
|
2643
|
+
content: {
|
|
2644
|
+
"application/json": components["schemas"]["PaginatedResponse_Contact"];
|
|
2645
|
+
};
|
|
2646
|
+
};
|
|
2647
|
+
default: components["responses"]["ApiError"];
|
|
2648
|
+
};
|
|
2649
|
+
};
|
|
2650
|
+
createContact: {
|
|
2651
|
+
parameters: {
|
|
2652
|
+
query?: never;
|
|
2653
|
+
header?: never;
|
|
2654
|
+
path?: never;
|
|
2655
|
+
cookie?: never;
|
|
2656
|
+
};
|
|
2657
|
+
requestBody: {
|
|
2658
|
+
content: {
|
|
2659
|
+
"application/json": components["schemas"]["CreateContactInput"];
|
|
2660
|
+
};
|
|
2661
|
+
};
|
|
2662
|
+
responses: {
|
|
2663
|
+
/** @description Created contact reference. */
|
|
2664
|
+
200: {
|
|
2665
|
+
headers: {
|
|
2666
|
+
[name: string]: unknown;
|
|
2667
|
+
};
|
|
2668
|
+
content: {
|
|
2669
|
+
"application/json": components["schemas"]["ApiResponse_ContactCreateResult"];
|
|
2670
|
+
};
|
|
2671
|
+
};
|
|
2672
|
+
default: components["responses"]["ApiError"];
|
|
2673
|
+
};
|
|
2674
|
+
};
|
|
2675
|
+
importContacts: {
|
|
2676
|
+
parameters: {
|
|
2677
|
+
query?: never;
|
|
2678
|
+
header?: never;
|
|
2679
|
+
path?: never;
|
|
2680
|
+
cookie?: never;
|
|
2681
|
+
};
|
|
2682
|
+
requestBody: {
|
|
2683
|
+
content: {
|
|
2684
|
+
"application/json": {
|
|
2685
|
+
contacts: components["schemas"]["ImportContactInput"][];
|
|
2686
|
+
};
|
|
2687
|
+
};
|
|
2688
|
+
};
|
|
2689
|
+
responses: {
|
|
2690
|
+
/** @description Import summary. */
|
|
2691
|
+
200: {
|
|
2692
|
+
headers: {
|
|
2693
|
+
[name: string]: unknown;
|
|
2694
|
+
};
|
|
2695
|
+
content: {
|
|
2696
|
+
"application/json": components["schemas"]["ApiResponse_ImportContactsResult"];
|
|
2697
|
+
};
|
|
2698
|
+
};
|
|
2699
|
+
default: components["responses"]["ApiError"];
|
|
2700
|
+
};
|
|
2701
|
+
};
|
|
2702
|
+
getContact: {
|
|
2703
|
+
parameters: {
|
|
2704
|
+
query?: never;
|
|
2705
|
+
header?: never;
|
|
2706
|
+
path: {
|
|
2707
|
+
id: components["parameters"]["Id"];
|
|
2708
|
+
};
|
|
2709
|
+
cookie?: never;
|
|
2710
|
+
};
|
|
2711
|
+
requestBody?: never;
|
|
2712
|
+
responses: {
|
|
2713
|
+
/** @description Contact. */
|
|
2714
|
+
200: {
|
|
2715
|
+
headers: {
|
|
2716
|
+
[name: string]: unknown;
|
|
2717
|
+
};
|
|
2718
|
+
content: {
|
|
2719
|
+
"application/json": components["schemas"]["ApiResponse_Contact"];
|
|
2720
|
+
};
|
|
2721
|
+
};
|
|
2722
|
+
default: components["responses"]["ApiError"];
|
|
2723
|
+
};
|
|
2724
|
+
};
|
|
2725
|
+
deleteContact: {
|
|
2726
|
+
parameters: {
|
|
2727
|
+
query?: never;
|
|
2728
|
+
header?: never;
|
|
2729
|
+
path: {
|
|
2730
|
+
id: components["parameters"]["Id"];
|
|
2731
|
+
};
|
|
2732
|
+
cookie?: never;
|
|
2733
|
+
};
|
|
2734
|
+
requestBody?: never;
|
|
2735
|
+
responses: {
|
|
2736
|
+
/** @description Delete result. */
|
|
2737
|
+
200: {
|
|
2738
|
+
headers: {
|
|
2739
|
+
[name: string]: unknown;
|
|
2740
|
+
};
|
|
2741
|
+
content: {
|
|
2742
|
+
"application/json": components["schemas"]["ApiResponse_ContactRemoveResult"];
|
|
2743
|
+
};
|
|
2744
|
+
};
|
|
2745
|
+
default: components["responses"]["ApiError"];
|
|
2746
|
+
};
|
|
2747
|
+
};
|
|
2748
|
+
updateContact: {
|
|
2749
|
+
parameters: {
|
|
2750
|
+
query?: never;
|
|
2751
|
+
header?: never;
|
|
2752
|
+
path: {
|
|
2753
|
+
id: components["parameters"]["Id"];
|
|
2754
|
+
};
|
|
2755
|
+
cookie?: never;
|
|
2756
|
+
};
|
|
2757
|
+
requestBody: {
|
|
2758
|
+
content: {
|
|
2759
|
+
"application/json": components["schemas"]["UpdateContactInput"];
|
|
2760
|
+
};
|
|
2761
|
+
};
|
|
2762
|
+
responses: {
|
|
2763
|
+
/** @description Update result. */
|
|
2764
|
+
200: {
|
|
2765
|
+
headers: {
|
|
2766
|
+
[name: string]: unknown;
|
|
2767
|
+
};
|
|
2768
|
+
content: {
|
|
2769
|
+
"application/json": components["schemas"]["ApiResponse_ContactUpdateResult"];
|
|
2770
|
+
};
|
|
2771
|
+
};
|
|
2772
|
+
default: components["responses"]["ApiError"];
|
|
2773
|
+
};
|
|
2774
|
+
};
|
|
2775
|
+
listContactActivities: {
|
|
2776
|
+
parameters: {
|
|
2777
|
+
query?: {
|
|
2778
|
+
limit?: components["parameters"]["Limit"];
|
|
2779
|
+
cursor?: components["parameters"]["Cursor"];
|
|
2780
|
+
};
|
|
2781
|
+
header?: never;
|
|
2782
|
+
path: {
|
|
2783
|
+
id: components["parameters"]["Id"];
|
|
2784
|
+
};
|
|
2785
|
+
cookie?: never;
|
|
2786
|
+
};
|
|
2787
|
+
requestBody?: never;
|
|
2788
|
+
responses: {
|
|
2789
|
+
/** @description Contact activities page. */
|
|
2790
|
+
200: {
|
|
2791
|
+
headers: {
|
|
2792
|
+
[name: string]: unknown;
|
|
2793
|
+
};
|
|
2794
|
+
content: {
|
|
2795
|
+
"application/json": components["schemas"]["PaginatedResponse_Activity"];
|
|
2796
|
+
};
|
|
2797
|
+
};
|
|
2798
|
+
default: components["responses"]["ApiError"];
|
|
2799
|
+
};
|
|
2800
|
+
};
|
|
2801
|
+
addContactNote: {
|
|
2802
|
+
parameters: {
|
|
2803
|
+
query?: never;
|
|
2804
|
+
header?: never;
|
|
2805
|
+
path: {
|
|
2806
|
+
id: components["parameters"]["Id"];
|
|
2807
|
+
};
|
|
2808
|
+
cookie?: never;
|
|
2809
|
+
};
|
|
2810
|
+
requestBody: {
|
|
2811
|
+
content: {
|
|
2812
|
+
"application/json": components["schemas"]["AddNoteInput"];
|
|
2813
|
+
};
|
|
2814
|
+
};
|
|
2815
|
+
responses: {
|
|
2816
|
+
/** @description Created note reference. */
|
|
2817
|
+
200: {
|
|
2818
|
+
headers: {
|
|
2819
|
+
[name: string]: unknown;
|
|
2820
|
+
};
|
|
2821
|
+
content: {
|
|
2822
|
+
"application/json": components["schemas"]["ApiResponse_ContactNoteResult"];
|
|
2823
|
+
};
|
|
2824
|
+
};
|
|
2825
|
+
default: components["responses"]["ApiError"];
|
|
2826
|
+
};
|
|
2827
|
+
};
|
|
2828
|
+
listDeals: {
|
|
2829
|
+
parameters: {
|
|
2830
|
+
query?: {
|
|
2831
|
+
limit?: components["parameters"]["Limit"];
|
|
2832
|
+
cursor?: components["parameters"]["Cursor"];
|
|
2833
|
+
status?: components["schemas"]["DealStatus"];
|
|
2834
|
+
search?: string;
|
|
2835
|
+
};
|
|
2836
|
+
header?: never;
|
|
2837
|
+
path?: never;
|
|
2838
|
+
cookie?: never;
|
|
2839
|
+
};
|
|
2840
|
+
requestBody?: never;
|
|
2841
|
+
responses: {
|
|
2842
|
+
/** @description Deals page. */
|
|
2843
|
+
200: {
|
|
2844
|
+
headers: {
|
|
2845
|
+
[name: string]: unknown;
|
|
2846
|
+
};
|
|
2847
|
+
content: {
|
|
2848
|
+
"application/json": components["schemas"]["PaginatedResponse_Deal"];
|
|
2849
|
+
};
|
|
2850
|
+
};
|
|
2851
|
+
default: components["responses"]["ApiError"];
|
|
2852
|
+
};
|
|
2853
|
+
};
|
|
2854
|
+
createDeal: {
|
|
2855
|
+
parameters: {
|
|
2856
|
+
query?: never;
|
|
2857
|
+
header?: never;
|
|
2858
|
+
path?: never;
|
|
2859
|
+
cookie?: never;
|
|
2860
|
+
};
|
|
2861
|
+
requestBody: {
|
|
2862
|
+
content: {
|
|
2863
|
+
"application/json": components["schemas"]["CreateDealInput"];
|
|
2864
|
+
};
|
|
2865
|
+
};
|
|
2866
|
+
responses: {
|
|
2867
|
+
/** @description Created deal reference. */
|
|
2868
|
+
200: {
|
|
2869
|
+
headers: {
|
|
2870
|
+
[name: string]: unknown;
|
|
2871
|
+
};
|
|
2872
|
+
content: {
|
|
2873
|
+
"application/json": components["schemas"]["ApiResponse_DealCreateResult"];
|
|
1840
2874
|
};
|
|
1841
2875
|
};
|
|
1842
2876
|
default: components["responses"]["ApiError"];
|
|
1843
2877
|
};
|
|
1844
2878
|
};
|
|
1845
|
-
|
|
2879
|
+
getDeal: {
|
|
1846
2880
|
parameters: {
|
|
1847
2881
|
query?: never;
|
|
1848
2882
|
header?: never;
|
|
1849
|
-
path
|
|
2883
|
+
path: {
|
|
2884
|
+
id: components["parameters"]["Id"];
|
|
2885
|
+
};
|
|
1850
2886
|
cookie?: never;
|
|
1851
2887
|
};
|
|
1852
2888
|
requestBody?: never;
|
|
1853
2889
|
responses: {
|
|
1854
|
-
/** @description
|
|
2890
|
+
/** @description Deal. */
|
|
1855
2891
|
200: {
|
|
1856
2892
|
headers: {
|
|
1857
2893
|
[name: string]: unknown;
|
|
1858
2894
|
};
|
|
1859
2895
|
content: {
|
|
1860
|
-
"application/json": components["schemas"]["
|
|
2896
|
+
"application/json": components["schemas"]["ApiResponse_Deal"];
|
|
1861
2897
|
};
|
|
1862
2898
|
};
|
|
1863
2899
|
default: components["responses"]["ApiError"];
|
|
1864
2900
|
};
|
|
1865
2901
|
};
|
|
1866
|
-
|
|
2902
|
+
deleteDeal: {
|
|
1867
2903
|
parameters: {
|
|
1868
|
-
query?:
|
|
1869
|
-
locale?: string;
|
|
1870
|
-
fallback_locale?: string;
|
|
1871
|
-
};
|
|
2904
|
+
query?: never;
|
|
1872
2905
|
header?: never;
|
|
1873
2906
|
path: {
|
|
1874
|
-
|
|
2907
|
+
id: components["parameters"]["Id"];
|
|
1875
2908
|
};
|
|
1876
2909
|
cookie?: never;
|
|
1877
2910
|
};
|
|
1878
2911
|
requestBody?: never;
|
|
1879
2912
|
responses: {
|
|
1880
|
-
/** @description
|
|
2913
|
+
/** @description Delete result. */
|
|
1881
2914
|
200: {
|
|
1882
2915
|
headers: {
|
|
1883
2916
|
[name: string]: unknown;
|
|
1884
2917
|
};
|
|
1885
2918
|
content: {
|
|
1886
|
-
"application/json": components["schemas"]["
|
|
2919
|
+
"application/json": components["schemas"]["ApiResponse_DealRemoveResult"];
|
|
1887
2920
|
};
|
|
1888
2921
|
};
|
|
1889
2922
|
default: components["responses"]["ApiError"];
|
|
1890
2923
|
};
|
|
1891
2924
|
};
|
|
1892
|
-
|
|
2925
|
+
updateDeal: {
|
|
1893
2926
|
parameters: {
|
|
1894
2927
|
query?: never;
|
|
1895
2928
|
header?: never;
|
|
@@ -1898,30 +2931,35 @@ interface operations {
|
|
|
1898
2931
|
};
|
|
1899
2932
|
cookie?: never;
|
|
1900
2933
|
};
|
|
1901
|
-
requestBody
|
|
2934
|
+
requestBody: {
|
|
2935
|
+
content: {
|
|
2936
|
+
"application/json": components["schemas"]["UpdateDealInput"];
|
|
2937
|
+
};
|
|
2938
|
+
};
|
|
1902
2939
|
responses: {
|
|
1903
|
-
/** @description
|
|
2940
|
+
/** @description Update result. */
|
|
1904
2941
|
200: {
|
|
1905
2942
|
headers: {
|
|
1906
2943
|
[name: string]: unknown;
|
|
1907
2944
|
};
|
|
1908
2945
|
content: {
|
|
1909
|
-
"application/json": components["schemas"]["
|
|
2946
|
+
"application/json": components["schemas"]["ApiResponse_DealUpdateResult"];
|
|
1910
2947
|
};
|
|
1911
2948
|
};
|
|
1912
2949
|
default: components["responses"]["ApiError"];
|
|
1913
2950
|
};
|
|
1914
2951
|
};
|
|
1915
|
-
|
|
2952
|
+
listBookings: {
|
|
1916
2953
|
parameters: {
|
|
1917
2954
|
query?: {
|
|
1918
2955
|
limit?: components["parameters"]["Limit"];
|
|
1919
2956
|
cursor?: components["parameters"]["Cursor"];
|
|
1920
|
-
|
|
1921
|
-
|
|
1922
|
-
/** @description
|
|
1923
|
-
|
|
1924
|
-
|
|
2957
|
+
/** @description Only bookings starting at or after this instant. */
|
|
2958
|
+
from_ts?: components["schemas"]["BookingTimestampInput"];
|
|
2959
|
+
/** @description Only bookings starting before this instant. */
|
|
2960
|
+
to_ts?: components["schemas"]["BookingTimestampInput"];
|
|
2961
|
+
status?: components["schemas"]["BookingStatus"];
|
|
2962
|
+
resource_id?: string;
|
|
1925
2963
|
};
|
|
1926
2964
|
header?: never;
|
|
1927
2965
|
path?: never;
|
|
@@ -1929,19 +2967,19 @@ interface operations {
|
|
|
1929
2967
|
};
|
|
1930
2968
|
requestBody?: never;
|
|
1931
2969
|
responses: {
|
|
1932
|
-
/** @description
|
|
2970
|
+
/** @description Bookings page. */
|
|
1933
2971
|
200: {
|
|
1934
2972
|
headers: {
|
|
1935
2973
|
[name: string]: unknown;
|
|
1936
2974
|
};
|
|
1937
2975
|
content: {
|
|
1938
|
-
"application/json": components["schemas"]["
|
|
2976
|
+
"application/json": components["schemas"]["PaginatedResponse_Booking"];
|
|
1939
2977
|
};
|
|
1940
2978
|
};
|
|
1941
2979
|
default: components["responses"]["ApiError"];
|
|
1942
2980
|
};
|
|
1943
2981
|
};
|
|
1944
|
-
|
|
2982
|
+
createBooking: {
|
|
1945
2983
|
parameters: {
|
|
1946
2984
|
query?: never;
|
|
1947
2985
|
header?: never;
|
|
@@ -1950,128 +2988,128 @@ interface operations {
|
|
|
1950
2988
|
};
|
|
1951
2989
|
requestBody: {
|
|
1952
2990
|
content: {
|
|
1953
|
-
"application/json": components["schemas"]["
|
|
2991
|
+
"application/json": components["schemas"]["CreateBookingInput"];
|
|
1954
2992
|
};
|
|
1955
2993
|
};
|
|
1956
2994
|
responses: {
|
|
1957
|
-
/** @description Created
|
|
1958
|
-
|
|
2995
|
+
/** @description Created bookings, in request order. */
|
|
2996
|
+
201: {
|
|
1959
2997
|
headers: {
|
|
1960
2998
|
[name: string]: unknown;
|
|
1961
2999
|
};
|
|
1962
3000
|
content: {
|
|
1963
|
-
"application/json": components["schemas"]["
|
|
3001
|
+
"application/json": components["schemas"]["ApiResponse_BookingCreateResult"];
|
|
1964
3002
|
};
|
|
1965
3003
|
};
|
|
1966
3004
|
default: components["responses"]["ApiError"];
|
|
1967
3005
|
};
|
|
1968
3006
|
};
|
|
1969
|
-
|
|
3007
|
+
listBookingServices: {
|
|
1970
3008
|
parameters: {
|
|
1971
|
-
query?:
|
|
3009
|
+
query?: {
|
|
3010
|
+
/** @description Include services with `active: false`. Defaults to active-only. */
|
|
3011
|
+
include_inactive?: boolean;
|
|
3012
|
+
};
|
|
1972
3013
|
header?: never;
|
|
1973
3014
|
path?: never;
|
|
1974
3015
|
cookie?: never;
|
|
1975
3016
|
};
|
|
1976
|
-
requestBody
|
|
1977
|
-
content: {
|
|
1978
|
-
"application/json": {
|
|
1979
|
-
contacts: components["schemas"]["ImportContactInput"][];
|
|
1980
|
-
};
|
|
1981
|
-
};
|
|
1982
|
-
};
|
|
3017
|
+
requestBody?: never;
|
|
1983
3018
|
responses: {
|
|
1984
|
-
/** @description
|
|
3019
|
+
/** @description Bookable service catalogue. */
|
|
1985
3020
|
200: {
|
|
1986
3021
|
headers: {
|
|
1987
3022
|
[name: string]: unknown;
|
|
1988
3023
|
};
|
|
1989
3024
|
content: {
|
|
1990
|
-
"application/json": components["schemas"]["
|
|
3025
|
+
"application/json": components["schemas"]["ApiResponse_BookingServiceArray"];
|
|
1991
3026
|
};
|
|
1992
3027
|
};
|
|
1993
3028
|
default: components["responses"]["ApiError"];
|
|
1994
3029
|
};
|
|
1995
3030
|
};
|
|
1996
|
-
|
|
3031
|
+
listBookingResources: {
|
|
1997
3032
|
parameters: {
|
|
1998
3033
|
query?: never;
|
|
1999
3034
|
header?: never;
|
|
2000
|
-
path
|
|
2001
|
-
id: components["parameters"]["Id"];
|
|
2002
|
-
};
|
|
3035
|
+
path?: never;
|
|
2003
3036
|
cookie?: never;
|
|
2004
3037
|
};
|
|
2005
3038
|
requestBody?: never;
|
|
2006
3039
|
responses: {
|
|
2007
|
-
/** @description
|
|
3040
|
+
/** @description Bookable resources — staff, rooms, and equipment. */
|
|
2008
3041
|
200: {
|
|
2009
3042
|
headers: {
|
|
2010
3043
|
[name: string]: unknown;
|
|
2011
3044
|
};
|
|
2012
3045
|
content: {
|
|
2013
|
-
"application/json": components["schemas"]["
|
|
3046
|
+
"application/json": components["schemas"]["ApiResponse_BookingResourceArray"];
|
|
2014
3047
|
};
|
|
2015
3048
|
};
|
|
2016
3049
|
default: components["responses"]["ApiError"];
|
|
2017
3050
|
};
|
|
2018
3051
|
};
|
|
2019
|
-
|
|
3052
|
+
listBookingAvailability: {
|
|
2020
3053
|
parameters: {
|
|
2021
|
-
query
|
|
2022
|
-
|
|
2023
|
-
|
|
2024
|
-
|
|
3054
|
+
query: {
|
|
3055
|
+
service_id: string;
|
|
3056
|
+
/** @description Start of the window. */
|
|
3057
|
+
from_ts: components["schemas"]["BookingTimestampInput"];
|
|
3058
|
+
/** @description End of the window; must be after `from_ts`. */
|
|
3059
|
+
to_ts: components["schemas"]["BookingTimestampInput"];
|
|
3060
|
+
/** @description Restrict slots to one resource. */
|
|
3061
|
+
resource_id?: string;
|
|
2025
3062
|
};
|
|
3063
|
+
header?: never;
|
|
3064
|
+
path?: never;
|
|
2026
3065
|
cookie?: never;
|
|
2027
3066
|
};
|
|
2028
3067
|
requestBody?: never;
|
|
2029
3068
|
responses: {
|
|
2030
|
-
/** @description
|
|
3069
|
+
/** @description Free slots. */
|
|
2031
3070
|
200: {
|
|
2032
3071
|
headers: {
|
|
2033
3072
|
[name: string]: unknown;
|
|
2034
3073
|
};
|
|
2035
3074
|
content: {
|
|
2036
|
-
"application/json": components["schemas"]["
|
|
3075
|
+
"application/json": components["schemas"]["ApiResponse_BookingSlotArray"];
|
|
2037
3076
|
};
|
|
2038
3077
|
};
|
|
2039
3078
|
default: components["responses"]["ApiError"];
|
|
2040
3079
|
};
|
|
2041
3080
|
};
|
|
2042
|
-
|
|
3081
|
+
listBookingSchedule: {
|
|
2043
3082
|
parameters: {
|
|
2044
|
-
query
|
|
2045
|
-
|
|
2046
|
-
|
|
2047
|
-
|
|
3083
|
+
query: {
|
|
3084
|
+
service_id: string;
|
|
3085
|
+
/** @description Start of the window. */
|
|
3086
|
+
from_ts: components["schemas"]["BookingTimestampInput"];
|
|
3087
|
+
/** @description End of the window; must be after `from_ts`. */
|
|
3088
|
+
to_ts: components["schemas"]["BookingTimestampInput"];
|
|
3089
|
+
/** @description Restrict to one resource's hours. */
|
|
3090
|
+
resource_id?: string;
|
|
2048
3091
|
};
|
|
3092
|
+
header?: never;
|
|
3093
|
+
path?: never;
|
|
2049
3094
|
cookie?: never;
|
|
2050
3095
|
};
|
|
2051
|
-
requestBody
|
|
2052
|
-
content: {
|
|
2053
|
-
"application/json": components["schemas"]["UpdateContactInput"];
|
|
2054
|
-
};
|
|
2055
|
-
};
|
|
3096
|
+
requestBody?: never;
|
|
2056
3097
|
responses: {
|
|
2057
|
-
/** @description
|
|
3098
|
+
/** @description Open dates. */
|
|
2058
3099
|
200: {
|
|
2059
3100
|
headers: {
|
|
2060
3101
|
[name: string]: unknown;
|
|
2061
3102
|
};
|
|
2062
3103
|
content: {
|
|
2063
|
-
"application/json": components["schemas"]["
|
|
3104
|
+
"application/json": components["schemas"]["ApiResponse_BookingScheduleDayArray"];
|
|
2064
3105
|
};
|
|
2065
3106
|
};
|
|
2066
3107
|
default: components["responses"]["ApiError"];
|
|
2067
3108
|
};
|
|
2068
3109
|
};
|
|
2069
|
-
|
|
3110
|
+
getBooking: {
|
|
2070
3111
|
parameters: {
|
|
2071
|
-
query?:
|
|
2072
|
-
limit?: components["parameters"]["Limit"];
|
|
2073
|
-
cursor?: components["parameters"]["Cursor"];
|
|
2074
|
-
};
|
|
3112
|
+
query?: never;
|
|
2075
3113
|
header?: never;
|
|
2076
3114
|
path: {
|
|
2077
3115
|
id: components["parameters"]["Id"];
|
|
@@ -2080,19 +3118,19 @@ interface operations {
|
|
|
2080
3118
|
};
|
|
2081
3119
|
requestBody?: never;
|
|
2082
3120
|
responses: {
|
|
2083
|
-
/** @description
|
|
3121
|
+
/** @description Booking. */
|
|
2084
3122
|
200: {
|
|
2085
3123
|
headers: {
|
|
2086
3124
|
[name: string]: unknown;
|
|
2087
3125
|
};
|
|
2088
3126
|
content: {
|
|
2089
|
-
"application/json": components["schemas"]["
|
|
3127
|
+
"application/json": components["schemas"]["ApiResponse_Booking"];
|
|
2090
3128
|
};
|
|
2091
3129
|
};
|
|
2092
3130
|
default: components["responses"]["ApiError"];
|
|
2093
3131
|
};
|
|
2094
3132
|
};
|
|
2095
|
-
|
|
3133
|
+
updateBooking: {
|
|
2096
3134
|
parameters: {
|
|
2097
3135
|
query?: never;
|
|
2098
3136
|
header?: never;
|
|
@@ -2103,74 +3141,77 @@ interface operations {
|
|
|
2103
3141
|
};
|
|
2104
3142
|
requestBody: {
|
|
2105
3143
|
content: {
|
|
2106
|
-
"application/json": components["schemas"]["
|
|
3144
|
+
"application/json": components["schemas"]["UpdateBookingInput"];
|
|
2107
3145
|
};
|
|
2108
3146
|
};
|
|
2109
3147
|
responses: {
|
|
2110
|
-
/** @description
|
|
3148
|
+
/** @description The updated booking. */
|
|
2111
3149
|
200: {
|
|
2112
3150
|
headers: {
|
|
2113
3151
|
[name: string]: unknown;
|
|
2114
3152
|
};
|
|
2115
3153
|
content: {
|
|
2116
|
-
"application/json": components["schemas"]["
|
|
3154
|
+
"application/json": components["schemas"]["ApiResponse_Booking"];
|
|
2117
3155
|
};
|
|
2118
3156
|
};
|
|
2119
3157
|
default: components["responses"]["ApiError"];
|
|
2120
3158
|
};
|
|
2121
3159
|
};
|
|
2122
|
-
|
|
3160
|
+
cancelBooking: {
|
|
2123
3161
|
parameters: {
|
|
2124
|
-
query?:
|
|
2125
|
-
limit?: components["parameters"]["Limit"];
|
|
2126
|
-
cursor?: components["parameters"]["Cursor"];
|
|
2127
|
-
status?: components["schemas"]["DealStatus"];
|
|
2128
|
-
search?: string;
|
|
2129
|
-
};
|
|
3162
|
+
query?: never;
|
|
2130
3163
|
header?: never;
|
|
2131
|
-
path
|
|
3164
|
+
path: {
|
|
3165
|
+
id: components["parameters"]["Id"];
|
|
3166
|
+
};
|
|
2132
3167
|
cookie?: never;
|
|
2133
3168
|
};
|
|
2134
|
-
requestBody
|
|
3169
|
+
requestBody: {
|
|
3170
|
+
content: {
|
|
3171
|
+
"application/json": components["schemas"]["CancelBookingInput"];
|
|
3172
|
+
};
|
|
3173
|
+
};
|
|
2135
3174
|
responses: {
|
|
2136
|
-
/** @description
|
|
3175
|
+
/** @description Cancel result. */
|
|
2137
3176
|
200: {
|
|
2138
3177
|
headers: {
|
|
2139
3178
|
[name: string]: unknown;
|
|
2140
3179
|
};
|
|
2141
3180
|
content: {
|
|
2142
|
-
"application/json": components["schemas"]["
|
|
3181
|
+
"application/json": components["schemas"]["ApiResponse_BookingActionResult"];
|
|
2143
3182
|
};
|
|
2144
3183
|
};
|
|
2145
3184
|
default: components["responses"]["ApiError"];
|
|
2146
3185
|
};
|
|
2147
3186
|
};
|
|
2148
|
-
|
|
3187
|
+
rescheduleBooking: {
|
|
2149
3188
|
parameters: {
|
|
2150
3189
|
query?: never;
|
|
2151
3190
|
header?: never;
|
|
2152
|
-
path
|
|
3191
|
+
path: {
|
|
3192
|
+
id: components["parameters"]["Id"];
|
|
3193
|
+
};
|
|
2153
3194
|
cookie?: never;
|
|
2154
3195
|
};
|
|
2155
3196
|
requestBody: {
|
|
2156
3197
|
content: {
|
|
2157
|
-
"application/json": components["schemas"]["
|
|
3198
|
+
"application/json": components["schemas"]["RescheduleBookingInput"];
|
|
2158
3199
|
};
|
|
2159
3200
|
};
|
|
2160
3201
|
responses: {
|
|
2161
|
-
/** @description
|
|
3202
|
+
/** @description Reschedule result. */
|
|
2162
3203
|
200: {
|
|
2163
3204
|
headers: {
|
|
2164
3205
|
[name: string]: unknown;
|
|
2165
3206
|
};
|
|
2166
3207
|
content: {
|
|
2167
|
-
"application/json": components["schemas"]["
|
|
3208
|
+
"application/json": components["schemas"]["ApiResponse_BookingRescheduleResult"];
|
|
2168
3209
|
};
|
|
2169
3210
|
};
|
|
2170
3211
|
default: components["responses"]["ApiError"];
|
|
2171
3212
|
};
|
|
2172
3213
|
};
|
|
2173
|
-
|
|
3214
|
+
markBookingNoShow: {
|
|
2174
3215
|
parameters: {
|
|
2175
3216
|
query?: never;
|
|
2176
3217
|
header?: never;
|
|
@@ -2181,63 +3222,93 @@ interface operations {
|
|
|
2181
3222
|
};
|
|
2182
3223
|
requestBody?: never;
|
|
2183
3224
|
responses: {
|
|
2184
|
-
/** @description
|
|
3225
|
+
/** @description No-show result. */
|
|
2185
3226
|
200: {
|
|
2186
3227
|
headers: {
|
|
2187
3228
|
[name: string]: unknown;
|
|
2188
3229
|
};
|
|
2189
3230
|
content: {
|
|
2190
|
-
"application/json": components["schemas"]["
|
|
3231
|
+
"application/json": components["schemas"]["ApiResponse_BookingActionResult"];
|
|
2191
3232
|
};
|
|
2192
3233
|
};
|
|
2193
3234
|
default: components["responses"]["ApiError"];
|
|
2194
3235
|
};
|
|
2195
3236
|
};
|
|
2196
|
-
|
|
3237
|
+
getManagedBooking: {
|
|
2197
3238
|
parameters: {
|
|
2198
3239
|
query?: never;
|
|
2199
3240
|
header?: never;
|
|
2200
3241
|
path: {
|
|
2201
|
-
|
|
3242
|
+
/** @description The show-once manage token handed out when the booking was created. Possession of it authorizes the customer's own cancel or reschedule. */
|
|
3243
|
+
token: components["parameters"]["ManageToken"];
|
|
2202
3244
|
};
|
|
2203
3245
|
cookie?: never;
|
|
2204
3246
|
};
|
|
2205
3247
|
requestBody?: never;
|
|
2206
3248
|
responses: {
|
|
2207
|
-
/** @description
|
|
3249
|
+
/** @description Manage summary. An unknown token and a token belonging to another workspace both answer 404, so this is not an existence oracle. */
|
|
2208
3250
|
200: {
|
|
2209
3251
|
headers: {
|
|
2210
3252
|
[name: string]: unknown;
|
|
2211
3253
|
};
|
|
2212
3254
|
content: {
|
|
2213
|
-
"application/json": components["schemas"]["
|
|
3255
|
+
"application/json": components["schemas"]["ApiResponse_ManageSummary"];
|
|
2214
3256
|
};
|
|
2215
3257
|
};
|
|
2216
3258
|
default: components["responses"]["ApiError"];
|
|
2217
3259
|
};
|
|
2218
3260
|
};
|
|
2219
|
-
|
|
3261
|
+
cancelManagedBooking: {
|
|
2220
3262
|
parameters: {
|
|
2221
3263
|
query?: never;
|
|
2222
3264
|
header?: never;
|
|
2223
3265
|
path: {
|
|
2224
|
-
|
|
3266
|
+
/** @description The show-once manage token handed out when the booking was created. Possession of it authorizes the customer's own cancel or reschedule. */
|
|
3267
|
+
token: components["parameters"]["ManageToken"];
|
|
2225
3268
|
};
|
|
2226
3269
|
cookie?: never;
|
|
2227
3270
|
};
|
|
2228
3271
|
requestBody: {
|
|
2229
3272
|
content: {
|
|
2230
|
-
"application/json": components["schemas"]["
|
|
3273
|
+
"application/json": components["schemas"]["CancelBookingInput"];
|
|
2231
3274
|
};
|
|
2232
3275
|
};
|
|
2233
3276
|
responses: {
|
|
2234
|
-
/** @description
|
|
3277
|
+
/** @description Cancel result. */
|
|
2235
3278
|
200: {
|
|
2236
3279
|
headers: {
|
|
2237
3280
|
[name: string]: unknown;
|
|
2238
3281
|
};
|
|
2239
3282
|
content: {
|
|
2240
|
-
"application/json": components["schemas"]["
|
|
3283
|
+
"application/json": components["schemas"]["ApiResponse_BookingActionResult"];
|
|
3284
|
+
};
|
|
3285
|
+
};
|
|
3286
|
+
default: components["responses"]["ApiError"];
|
|
3287
|
+
};
|
|
3288
|
+
};
|
|
3289
|
+
rescheduleManagedBooking: {
|
|
3290
|
+
parameters: {
|
|
3291
|
+
query?: never;
|
|
3292
|
+
header?: never;
|
|
3293
|
+
path: {
|
|
3294
|
+
/** @description The show-once manage token handed out when the booking was created. Possession of it authorizes the customer's own cancel or reschedule. */
|
|
3295
|
+
token: components["parameters"]["ManageToken"];
|
|
3296
|
+
};
|
|
3297
|
+
cookie?: never;
|
|
3298
|
+
};
|
|
3299
|
+
requestBody: {
|
|
3300
|
+
content: {
|
|
3301
|
+
"application/json": components["schemas"]["RescheduleBookingInput"];
|
|
3302
|
+
};
|
|
3303
|
+
};
|
|
3304
|
+
responses: {
|
|
3305
|
+
/** @description Reschedule result. */
|
|
3306
|
+
200: {
|
|
3307
|
+
headers: {
|
|
3308
|
+
[name: string]: unknown;
|
|
3309
|
+
};
|
|
3310
|
+
content: {
|
|
3311
|
+
"application/json": components["schemas"]["ApiResponse_BookingRescheduleResult"];
|
|
2241
3312
|
};
|
|
2242
3313
|
};
|
|
2243
3314
|
default: components["responses"]["ApiError"];
|
|
@@ -2712,9 +3783,37 @@ interface operations {
|
|
|
2712
3783
|
default: components["responses"]["ApiError"];
|
|
2713
3784
|
};
|
|
2714
3785
|
};
|
|
3786
|
+
issueCapabilityConfirmation: {
|
|
3787
|
+
parameters: {
|
|
3788
|
+
query?: never;
|
|
3789
|
+
header?: never;
|
|
3790
|
+
path?: never;
|
|
3791
|
+
cookie?: never;
|
|
3792
|
+
};
|
|
3793
|
+
requestBody: {
|
|
3794
|
+
content: {
|
|
3795
|
+
"application/json": components["schemas"]["IssueCapabilityConfirmationInput"];
|
|
3796
|
+
};
|
|
3797
|
+
};
|
|
3798
|
+
responses: {
|
|
3799
|
+
/** @description Minted confirmation token. */
|
|
3800
|
+
200: {
|
|
3801
|
+
headers: {
|
|
3802
|
+
[name: string]: unknown;
|
|
3803
|
+
};
|
|
3804
|
+
content: {
|
|
3805
|
+
"application/json": components["schemas"]["ApiResponse_CapabilityConfirmation"];
|
|
3806
|
+
};
|
|
3807
|
+
};
|
|
3808
|
+
default: components["responses"]["ApiError"];
|
|
3809
|
+
};
|
|
3810
|
+
};
|
|
2715
3811
|
listChannelConnectLinks: {
|
|
2716
3812
|
parameters: {
|
|
2717
3813
|
query?: {
|
|
3814
|
+
/** @description Page size (default 50, capped at 100). */
|
|
3815
|
+
limit?: number;
|
|
3816
|
+
cursor?: components["parameters"]["Cursor"];
|
|
2718
3817
|
channel_type?: string;
|
|
2719
3818
|
status?: components["schemas"]["ConnectLinkStatus"];
|
|
2720
3819
|
};
|
|
@@ -2724,13 +3823,13 @@ interface operations {
|
|
|
2724
3823
|
};
|
|
2725
3824
|
requestBody?: never;
|
|
2726
3825
|
responses: {
|
|
2727
|
-
/** @description
|
|
3826
|
+
/** @description Connect links page. */
|
|
2728
3827
|
200: {
|
|
2729
3828
|
headers: {
|
|
2730
3829
|
[name: string]: unknown;
|
|
2731
3830
|
};
|
|
2732
3831
|
content: {
|
|
2733
|
-
"application/json": components["schemas"]["
|
|
3832
|
+
"application/json": components["schemas"]["PaginatedResponse_ConnectLink"];
|
|
2734
3833
|
};
|
|
2735
3834
|
};
|
|
2736
3835
|
default: components["responses"]["ApiError"];
|
|
@@ -2786,20 +3885,24 @@ interface operations {
|
|
|
2786
3885
|
};
|
|
2787
3886
|
listChannelConnections: {
|
|
2788
3887
|
parameters: {
|
|
2789
|
-
query?:
|
|
3888
|
+
query?: {
|
|
3889
|
+
/** @description Page size (default 50, capped at 100). */
|
|
3890
|
+
limit?: number;
|
|
3891
|
+
cursor?: components["parameters"]["Cursor"];
|
|
3892
|
+
};
|
|
2790
3893
|
header?: never;
|
|
2791
3894
|
path?: never;
|
|
2792
3895
|
cookie?: never;
|
|
2793
3896
|
};
|
|
2794
3897
|
requestBody?: never;
|
|
2795
3898
|
responses: {
|
|
2796
|
-
/** @description
|
|
3899
|
+
/** @description Channel connections page. */
|
|
2797
3900
|
200: {
|
|
2798
3901
|
headers: {
|
|
2799
3902
|
[name: string]: unknown;
|
|
2800
3903
|
};
|
|
2801
3904
|
content: {
|
|
2802
|
-
"application/json": components["schemas"]["
|
|
3905
|
+
"application/json": components["schemas"]["PaginatedResponse_ChannelConnection"];
|
|
2803
3906
|
};
|
|
2804
3907
|
};
|
|
2805
3908
|
default: components["responses"]["ApiError"];
|
|
@@ -2828,6 +3931,77 @@ interface operations {
|
|
|
2828
3931
|
default: components["responses"]["ApiError"];
|
|
2829
3932
|
};
|
|
2830
3933
|
};
|
|
3934
|
+
createScan: {
|
|
3935
|
+
parameters: {
|
|
3936
|
+
query?: never;
|
|
3937
|
+
header?: never;
|
|
3938
|
+
path?: never;
|
|
3939
|
+
cookie?: never;
|
|
3940
|
+
};
|
|
3941
|
+
requestBody: {
|
|
3942
|
+
content: {
|
|
3943
|
+
"application/json": components["schemas"]["ScanCreateInput"];
|
|
3944
|
+
};
|
|
3945
|
+
};
|
|
3946
|
+
responses: {
|
|
3947
|
+
/** @description Scan job queued. */
|
|
3948
|
+
202: {
|
|
3949
|
+
headers: {
|
|
3950
|
+
[name: string]: unknown;
|
|
3951
|
+
};
|
|
3952
|
+
content: {
|
|
3953
|
+
"application/json": components["schemas"]["ApiResponse_ScanCreateResult"];
|
|
3954
|
+
};
|
|
3955
|
+
};
|
|
3956
|
+
default: components["responses"]["ApiError"];
|
|
3957
|
+
};
|
|
3958
|
+
};
|
|
3959
|
+
searchScanCompanies: {
|
|
3960
|
+
parameters: {
|
|
3961
|
+
query: {
|
|
3962
|
+
q: string;
|
|
3963
|
+
};
|
|
3964
|
+
header?: never;
|
|
3965
|
+
path?: never;
|
|
3966
|
+
cookie?: never;
|
|
3967
|
+
};
|
|
3968
|
+
requestBody?: never;
|
|
3969
|
+
responses: {
|
|
3970
|
+
/** @description Registry matches (top 5, relevance-ranked). */
|
|
3971
|
+
200: {
|
|
3972
|
+
headers: {
|
|
3973
|
+
[name: string]: unknown;
|
|
3974
|
+
};
|
|
3975
|
+
content: {
|
|
3976
|
+
"application/json": components["schemas"]["ApiResponse_ScanCompanyArray"];
|
|
3977
|
+
};
|
|
3978
|
+
};
|
|
3979
|
+
default: components["responses"]["ApiError"];
|
|
3980
|
+
};
|
|
3981
|
+
};
|
|
3982
|
+
getScan: {
|
|
3983
|
+
parameters: {
|
|
3984
|
+
query?: never;
|
|
3985
|
+
header?: never;
|
|
3986
|
+
path: {
|
|
3987
|
+
id: components["parameters"]["Id"];
|
|
3988
|
+
};
|
|
3989
|
+
cookie?: never;
|
|
3990
|
+
};
|
|
3991
|
+
requestBody?: never;
|
|
3992
|
+
responses: {
|
|
3993
|
+
/** @description Scan job status and, once done, the findings payload. */
|
|
3994
|
+
200: {
|
|
3995
|
+
headers: {
|
|
3996
|
+
[name: string]: unknown;
|
|
3997
|
+
};
|
|
3998
|
+
content: {
|
|
3999
|
+
"application/json": components["schemas"]["ApiResponse_ScanJob"];
|
|
4000
|
+
};
|
|
4001
|
+
};
|
|
4002
|
+
default: components["responses"]["ApiError"];
|
|
4003
|
+
};
|
|
4004
|
+
};
|
|
2831
4005
|
}
|
|
2832
4006
|
|
|
2833
4007
|
export type { $defs, components, operations, paths, webhooks };
|