@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.
@@ -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
- /** List channel connections */
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
- GdprExport: {
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
- listEmailTemplates: {
2879
+ getDeal: {
1846
2880
  parameters: {
1847
2881
  query?: never;
1848
2882
  header?: never;
1849
- path?: never;
2883
+ path: {
2884
+ id: components["parameters"]["Id"];
2885
+ };
1850
2886
  cookie?: never;
1851
2887
  };
1852
2888
  requestBody?: never;
1853
2889
  responses: {
1854
- /** @description Active templates. */
2890
+ /** @description Deal. */
1855
2891
  200: {
1856
2892
  headers: {
1857
2893
  [name: string]: unknown;
1858
2894
  };
1859
2895
  content: {
1860
- "application/json": components["schemas"]["ApiResponse_EmailTemplateArray"];
2896
+ "application/json": components["schemas"]["ApiResponse_Deal"];
1861
2897
  };
1862
2898
  };
1863
2899
  default: components["responses"]["ApiError"];
1864
2900
  };
1865
2901
  };
1866
- getEmailTemplate: {
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
- slug: components["parameters"]["Slug"];
2907
+ id: components["parameters"]["Id"];
1875
2908
  };
1876
2909
  cookie?: never;
1877
2910
  };
1878
2911
  requestBody?: never;
1879
2912
  responses: {
1880
- /** @description Email template detail. */
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"]["ApiResponse_EmailTemplateDetail"];
2919
+ "application/json": components["schemas"]["ApiResponse_DealRemoveResult"];
1887
2920
  };
1888
2921
  };
1889
2922
  default: components["responses"]["ApiError"];
1890
2923
  };
1891
2924
  };
1892
- getEmailSend: {
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?: never;
2934
+ requestBody: {
2935
+ content: {
2936
+ "application/json": components["schemas"]["UpdateDealInput"];
2937
+ };
2938
+ };
1902
2939
  responses: {
1903
- /** @description Sent email status. */
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"]["ApiResponse_EmailSend"];
2946
+ "application/json": components["schemas"]["ApiResponse_DealUpdateResult"];
1910
2947
  };
1911
2948
  };
1912
2949
  default: components["responses"]["ApiError"];
1913
2950
  };
1914
2951
  };
1915
- listContacts: {
2952
+ listBookings: {
1916
2953
  parameters: {
1917
2954
  query?: {
1918
2955
  limit?: components["parameters"]["Limit"];
1919
2956
  cursor?: components["parameters"]["Cursor"];
1920
- status?: components["schemas"]["ContactStatus"];
1921
- email_status?: components["schemas"]["EmailStatus"];
1922
- /** @description Comma-separated label IDs. */
1923
- label_ids?: string;
1924
- search?: string;
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 Contacts page. */
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"]["PaginatedResponse_Contact"];
2976
+ "application/json": components["schemas"]["PaginatedResponse_Booking"];
1939
2977
  };
1940
2978
  };
1941
2979
  default: components["responses"]["ApiError"];
1942
2980
  };
1943
2981
  };
1944
- createContact: {
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"]["CreateContactInput"];
2991
+ "application/json": components["schemas"]["CreateBookingInput"];
1954
2992
  };
1955
2993
  };
1956
2994
  responses: {
1957
- /** @description Created contact reference. */
1958
- 200: {
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"]["ApiResponse_ContactCreateResult"];
3001
+ "application/json": components["schemas"]["ApiResponse_BookingCreateResult"];
1964
3002
  };
1965
3003
  };
1966
3004
  default: components["responses"]["ApiError"];
1967
3005
  };
1968
3006
  };
1969
- importContacts: {
3007
+ listBookingServices: {
1970
3008
  parameters: {
1971
- query?: never;
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 Import summary. */
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"]["ApiResponse_ImportContactsResult"];
3025
+ "application/json": components["schemas"]["ApiResponse_BookingServiceArray"];
1991
3026
  };
1992
3027
  };
1993
3028
  default: components["responses"]["ApiError"];
1994
3029
  };
1995
3030
  };
1996
- getContact: {
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 Contact. */
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"]["ApiResponse_Contact"];
3046
+ "application/json": components["schemas"]["ApiResponse_BookingResourceArray"];
2014
3047
  };
2015
3048
  };
2016
3049
  default: components["responses"]["ApiError"];
2017
3050
  };
2018
3051
  };
2019
- deleteContact: {
3052
+ listBookingAvailability: {
2020
3053
  parameters: {
2021
- query?: never;
2022
- header?: never;
2023
- path: {
2024
- id: components["parameters"]["Id"];
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 Delete result. */
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"]["ApiResponse_ContactRemoveResult"];
3075
+ "application/json": components["schemas"]["ApiResponse_BookingSlotArray"];
2037
3076
  };
2038
3077
  };
2039
3078
  default: components["responses"]["ApiError"];
2040
3079
  };
2041
3080
  };
2042
- updateContact: {
3081
+ listBookingSchedule: {
2043
3082
  parameters: {
2044
- query?: never;
2045
- header?: never;
2046
- path: {
2047
- id: components["parameters"]["Id"];
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 Update result. */
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"]["ApiResponse_ContactUpdateResult"];
3104
+ "application/json": components["schemas"]["ApiResponse_BookingScheduleDayArray"];
2064
3105
  };
2065
3106
  };
2066
3107
  default: components["responses"]["ApiError"];
2067
3108
  };
2068
3109
  };
2069
- listContactActivities: {
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 Contact activities page. */
3121
+ /** @description Booking. */
2084
3122
  200: {
2085
3123
  headers: {
2086
3124
  [name: string]: unknown;
2087
3125
  };
2088
3126
  content: {
2089
- "application/json": components["schemas"]["PaginatedResponse_Activity"];
3127
+ "application/json": components["schemas"]["ApiResponse_Booking"];
2090
3128
  };
2091
3129
  };
2092
3130
  default: components["responses"]["ApiError"];
2093
3131
  };
2094
3132
  };
2095
- addContactNote: {
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"]["AddNoteInput"];
3144
+ "application/json": components["schemas"]["UpdateBookingInput"];
2107
3145
  };
2108
3146
  };
2109
3147
  responses: {
2110
- /** @description Created note reference. */
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"]["ApiResponse_ContactNoteResult"];
3154
+ "application/json": components["schemas"]["ApiResponse_Booking"];
2117
3155
  };
2118
3156
  };
2119
3157
  default: components["responses"]["ApiError"];
2120
3158
  };
2121
3159
  };
2122
- listDeals: {
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?: never;
3164
+ path: {
3165
+ id: components["parameters"]["Id"];
3166
+ };
2132
3167
  cookie?: never;
2133
3168
  };
2134
- requestBody?: never;
3169
+ requestBody: {
3170
+ content: {
3171
+ "application/json": components["schemas"]["CancelBookingInput"];
3172
+ };
3173
+ };
2135
3174
  responses: {
2136
- /** @description Deals page. */
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"]["PaginatedResponse_Deal"];
3181
+ "application/json": components["schemas"]["ApiResponse_BookingActionResult"];
2143
3182
  };
2144
3183
  };
2145
3184
  default: components["responses"]["ApiError"];
2146
3185
  };
2147
3186
  };
2148
- createDeal: {
3187
+ rescheduleBooking: {
2149
3188
  parameters: {
2150
3189
  query?: never;
2151
3190
  header?: never;
2152
- path?: never;
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"]["CreateDealInput"];
3198
+ "application/json": components["schemas"]["RescheduleBookingInput"];
2158
3199
  };
2159
3200
  };
2160
3201
  responses: {
2161
- /** @description Created deal reference. */
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"]["ApiResponse_DealCreateResult"];
3208
+ "application/json": components["schemas"]["ApiResponse_BookingRescheduleResult"];
2168
3209
  };
2169
3210
  };
2170
3211
  default: components["responses"]["ApiError"];
2171
3212
  };
2172
3213
  };
2173
- getDeal: {
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 Deal. */
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"]["ApiResponse_Deal"];
3231
+ "application/json": components["schemas"]["ApiResponse_BookingActionResult"];
2191
3232
  };
2192
3233
  };
2193
3234
  default: components["responses"]["ApiError"];
2194
3235
  };
2195
3236
  };
2196
- deleteDeal: {
3237
+ getManagedBooking: {
2197
3238
  parameters: {
2198
3239
  query?: never;
2199
3240
  header?: never;
2200
3241
  path: {
2201
- id: components["parameters"]["Id"];
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 Delete result. */
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"]["ApiResponse_DealRemoveResult"];
3255
+ "application/json": components["schemas"]["ApiResponse_ManageSummary"];
2214
3256
  };
2215
3257
  };
2216
3258
  default: components["responses"]["ApiError"];
2217
3259
  };
2218
3260
  };
2219
- updateDeal: {
3261
+ cancelManagedBooking: {
2220
3262
  parameters: {
2221
3263
  query?: never;
2222
3264
  header?: never;
2223
3265
  path: {
2224
- id: components["parameters"]["Id"];
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"]["UpdateDealInput"];
3273
+ "application/json": components["schemas"]["CancelBookingInput"];
2231
3274
  };
2232
3275
  };
2233
3276
  responses: {
2234
- /** @description Update result. */
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"]["ApiResponse_DealUpdateResult"];
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 The workspace's connect links. */
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"]["ApiResponse_ConnectLinkArray"];
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?: never;
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 The workspace's channel connections (generic shape). */
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"]["ApiResponse_ChannelConnectionArray"];
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 };