@medalsocial/sdk 1.6.0 → 1.8.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 +106 -0
- package/dist/openapi/medal-social.openapi.json +4783 -2489
- package/dist/src/index.d.mts +822 -25
- package/dist/src/index.d.ts +822 -25
- package/dist/src/index.js +607 -156
- package/dist/src/index.js.map +1 -1
- package/dist/src/index.mjs +605 -156
- package/dist/src/index.mjs.map +1 -1
- package/dist/src/openapi.generated.d.mts +1892 -559
- package/dist/src/openapi.generated.d.ts +1892 -559
- package/dist/src/openapi.generated.js.map +1 -1
- package/openapi/medal-social.openapi.yaml +1402 -12
- package/package.json +18 -17
- package/skills/client/SKILL.md +4 -2
- package/skills/resources/SKILL.md +152 -3
|
@@ -319,32 +319,36 @@ interface paths {
|
|
|
319
319
|
patch: operations["updateDeal"];
|
|
320
320
|
trace?: never;
|
|
321
321
|
};
|
|
322
|
-
"/api/v1/
|
|
322
|
+
"/api/v1/bookings": {
|
|
323
323
|
parameters: {
|
|
324
324
|
query?: never;
|
|
325
325
|
header?: never;
|
|
326
326
|
path?: never;
|
|
327
327
|
cookie?: never;
|
|
328
328
|
};
|
|
329
|
-
|
|
329
|
+
/** List bookings */
|
|
330
|
+
get: operations["listBookings"];
|
|
330
331
|
put?: never;
|
|
331
|
-
/**
|
|
332
|
-
|
|
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"];
|
|
333
337
|
delete?: never;
|
|
334
338
|
options?: never;
|
|
335
339
|
head?: never;
|
|
336
340
|
patch?: never;
|
|
337
341
|
trace?: never;
|
|
338
342
|
};
|
|
339
|
-
"/api/v1/
|
|
343
|
+
"/api/v1/bookings/services": {
|
|
340
344
|
parameters: {
|
|
341
345
|
query?: never;
|
|
342
346
|
header?: never;
|
|
343
347
|
path?: never;
|
|
344
348
|
cookie?: never;
|
|
345
349
|
};
|
|
346
|
-
/** List
|
|
347
|
-
get: operations["
|
|
350
|
+
/** List bookable services */
|
|
351
|
+
get: operations["listBookingServices"];
|
|
348
352
|
put?: never;
|
|
349
353
|
post?: never;
|
|
350
354
|
delete?: never;
|
|
@@ -353,17 +357,15 @@ interface paths {
|
|
|
353
357
|
patch?: never;
|
|
354
358
|
trace?: never;
|
|
355
359
|
};
|
|
356
|
-
"/api/v1/
|
|
360
|
+
"/api/v1/bookings/resources": {
|
|
357
361
|
parameters: {
|
|
358
362
|
query?: never;
|
|
359
363
|
header?: never;
|
|
360
|
-
path
|
|
361
|
-
id: components["parameters"]["Id"];
|
|
362
|
-
};
|
|
364
|
+
path?: never;
|
|
363
365
|
cookie?: never;
|
|
364
366
|
};
|
|
365
|
-
/**
|
|
366
|
-
get: operations["
|
|
367
|
+
/** List bookable resources */
|
|
368
|
+
get: operations["listBookingResources"];
|
|
367
369
|
put?: never;
|
|
368
370
|
post?: never;
|
|
369
371
|
delete?: never;
|
|
@@ -372,136 +374,196 @@ interface paths {
|
|
|
372
374
|
patch?: never;
|
|
373
375
|
trace?: never;
|
|
374
376
|
};
|
|
375
|
-
"/api/v1/
|
|
377
|
+
"/api/v1/bookings/availability": {
|
|
376
378
|
parameters: {
|
|
377
379
|
query?: never;
|
|
378
380
|
header?: never;
|
|
379
381
|
path?: never;
|
|
380
382
|
cookie?: never;
|
|
381
383
|
};
|
|
382
|
-
|
|
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"];
|
|
383
389
|
put?: never;
|
|
384
|
-
|
|
385
|
-
post: operations["recordGdprConsent"];
|
|
390
|
+
post?: never;
|
|
386
391
|
delete?: never;
|
|
387
392
|
options?: never;
|
|
388
393
|
head?: never;
|
|
389
394
|
patch?: never;
|
|
390
395
|
trace?: never;
|
|
391
396
|
};
|
|
392
|
-
"/api/v1/
|
|
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}": {
|
|
393
418
|
parameters: {
|
|
394
419
|
query?: never;
|
|
395
420
|
header?: never;
|
|
396
421
|
path: {
|
|
397
|
-
|
|
422
|
+
id: components["parameters"]["Id"];
|
|
398
423
|
};
|
|
399
424
|
cookie?: never;
|
|
400
425
|
};
|
|
401
|
-
/** Get
|
|
402
|
-
get: operations["
|
|
426
|
+
/** Get a booking */
|
|
427
|
+
get: operations["getBooking"];
|
|
403
428
|
put?: never;
|
|
404
429
|
post?: never;
|
|
405
430
|
delete?: never;
|
|
406
431
|
options?: never;
|
|
407
432
|
head?: never;
|
|
408
|
-
|
|
433
|
+
/** Annotate a booking */
|
|
434
|
+
patch: operations["updateBooking"];
|
|
409
435
|
trace?: never;
|
|
410
436
|
};
|
|
411
|
-
"/api/
|
|
437
|
+
"/api/v1/bookings/{id}/cancel": {
|
|
412
438
|
parameters: {
|
|
413
439
|
query?: never;
|
|
414
440
|
header?: never;
|
|
415
|
-
path
|
|
441
|
+
path: {
|
|
442
|
+
id: components["parameters"]["Id"];
|
|
443
|
+
};
|
|
416
444
|
cookie?: never;
|
|
417
445
|
};
|
|
418
446
|
get?: never;
|
|
419
447
|
put?: never;
|
|
420
|
-
/**
|
|
421
|
-
|
|
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"];
|
|
422
453
|
delete?: never;
|
|
423
454
|
options?: never;
|
|
424
455
|
head?: never;
|
|
425
456
|
patch?: never;
|
|
426
457
|
trace?: never;
|
|
427
458
|
};
|
|
428
|
-
"/api/v1/
|
|
459
|
+
"/api/v1/bookings/{id}/reschedule": {
|
|
429
460
|
parameters: {
|
|
430
461
|
query?: never;
|
|
431
462
|
header?: never;
|
|
432
|
-
path
|
|
463
|
+
path: {
|
|
464
|
+
id: components["parameters"]["Id"];
|
|
465
|
+
};
|
|
433
466
|
cookie?: never;
|
|
434
467
|
};
|
|
435
|
-
|
|
436
|
-
get: operations["listWorkspaces"];
|
|
468
|
+
get?: never;
|
|
437
469
|
put?: never;
|
|
438
|
-
|
|
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"];
|
|
439
475
|
delete?: never;
|
|
440
476
|
options?: never;
|
|
441
477
|
head?: never;
|
|
442
478
|
patch?: never;
|
|
443
479
|
trace?: never;
|
|
444
480
|
};
|
|
445
|
-
"/api/v1/
|
|
481
|
+
"/api/v1/bookings/{id}/no-show": {
|
|
446
482
|
parameters: {
|
|
447
483
|
query?: never;
|
|
448
484
|
header?: never;
|
|
449
|
-
path
|
|
485
|
+
path: {
|
|
486
|
+
id: components["parameters"]["Id"];
|
|
487
|
+
};
|
|
450
488
|
cookie?: never;
|
|
451
489
|
};
|
|
452
|
-
|
|
453
|
-
get: operations["listHelpdeskConversations"];
|
|
490
|
+
get?: never;
|
|
454
491
|
put?: never;
|
|
455
|
-
|
|
492
|
+
/** Mark a booking as a no-show */
|
|
493
|
+
post: operations["markBookingNoShow"];
|
|
456
494
|
delete?: never;
|
|
457
495
|
options?: never;
|
|
458
496
|
head?: never;
|
|
459
497
|
patch?: never;
|
|
460
498
|
trace?: never;
|
|
461
499
|
};
|
|
462
|
-
"/api/v1/
|
|
500
|
+
"/api/v1/bookings/manage/{token}": {
|
|
463
501
|
parameters: {
|
|
464
502
|
query?: never;
|
|
465
503
|
header?: never;
|
|
466
504
|
path: {
|
|
467
|
-
|
|
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"];
|
|
468
507
|
};
|
|
469
508
|
cookie?: never;
|
|
470
509
|
};
|
|
471
|
-
/** Get a
|
|
472
|
-
get: operations["
|
|
510
|
+
/** Get the customer manage summary for a token */
|
|
511
|
+
get: operations["getManagedBooking"];
|
|
473
512
|
put?: never;
|
|
474
513
|
post?: never;
|
|
475
514
|
delete?: never;
|
|
476
515
|
options?: never;
|
|
477
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;
|
|
478
532
|
/**
|
|
479
|
-
*
|
|
480
|
-
* @description
|
|
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.
|
|
481
535
|
*/
|
|
482
|
-
|
|
536
|
+
post: operations["cancelManagedBooking"];
|
|
537
|
+
delete?: never;
|
|
538
|
+
options?: never;
|
|
539
|
+
head?: never;
|
|
540
|
+
patch?: never;
|
|
483
541
|
trace?: never;
|
|
484
542
|
};
|
|
485
|
-
"/api/v1/
|
|
543
|
+
"/api/v1/bookings/manage/{token}/reschedule": {
|
|
486
544
|
parameters: {
|
|
487
545
|
query?: never;
|
|
488
546
|
header?: never;
|
|
489
547
|
path: {
|
|
490
|
-
|
|
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"];
|
|
491
550
|
};
|
|
492
551
|
cookie?: never;
|
|
493
552
|
};
|
|
494
|
-
|
|
495
|
-
get: operations["listHelpdeskConversationMessages"];
|
|
553
|
+
get?: never;
|
|
496
554
|
put?: never;
|
|
497
|
-
|
|
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"];
|
|
498
560
|
delete?: never;
|
|
499
561
|
options?: never;
|
|
500
562
|
head?: never;
|
|
501
563
|
patch?: never;
|
|
502
564
|
trace?: never;
|
|
503
565
|
};
|
|
504
|
-
"/api/v1/
|
|
566
|
+
"/api/v1/portal/login/start": {
|
|
505
567
|
parameters: {
|
|
506
568
|
query?: never;
|
|
507
569
|
header?: never;
|
|
@@ -511,183 +573,181 @@ interface paths {
|
|
|
511
573
|
get?: never;
|
|
512
574
|
put?: never;
|
|
513
575
|
/**
|
|
514
|
-
*
|
|
515
|
-
* @description
|
|
576
|
+
* E-mail a one-time login code
|
|
577
|
+
* @description Always answers 202 `{ status: "sent" }`, whether or not the address belongs to a contact — enumeration-safe by design. Rate-limited per address and per caller (`429 RATE_LIMITED`). Not idempotency-keyed. Errors: `400 VALIDATION_ERROR`, `403 FORBIDDEN` (key lacks `write:portal`), `429 RATE_LIMITED`.
|
|
516
578
|
*/
|
|
517
|
-
post: operations["
|
|
579
|
+
post: operations["startPortalLogin"];
|
|
518
580
|
delete?: never;
|
|
519
581
|
options?: never;
|
|
520
582
|
head?: never;
|
|
521
583
|
patch?: never;
|
|
522
584
|
trace?: never;
|
|
523
585
|
};
|
|
524
|
-
"/api/v1/
|
|
586
|
+
"/api/v1/portal/login/verify": {
|
|
525
587
|
parameters: {
|
|
526
588
|
query?: never;
|
|
527
589
|
header?: never;
|
|
528
590
|
path?: never;
|
|
529
591
|
cookie?: never;
|
|
530
592
|
};
|
|
531
|
-
|
|
532
|
-
get: operations["listWebhooks"];
|
|
593
|
+
get?: never;
|
|
533
594
|
put?: never;
|
|
534
595
|
/**
|
|
535
|
-
*
|
|
536
|
-
* @description
|
|
596
|
+
* Exchange the e-mailed code for a session
|
|
597
|
+
* @description A wrong, burned or expired code all answer `401 PORTAL_CODE_INVALID` — the three are not distinguished, so the response is not an oracle for which codes exist. The returned `session_token` is a bearer credential for ONE contact: keep it in an HttpOnly cookie on the site's server and never hand it to the browser. Not idempotency-keyed. Errors: `400 VALIDATION_ERROR`, `401 PORTAL_CODE_INVALID`, `403 FORBIDDEN`, `429 RATE_LIMITED`.
|
|
537
598
|
*/
|
|
538
|
-
post: operations["
|
|
599
|
+
post: operations["verifyPortalLogin"];
|
|
539
600
|
delete?: never;
|
|
540
601
|
options?: never;
|
|
541
602
|
head?: never;
|
|
542
603
|
patch?: never;
|
|
543
604
|
trace?: never;
|
|
544
605
|
};
|
|
545
|
-
"/api/v1/
|
|
606
|
+
"/api/v1/portal/logout": {
|
|
546
607
|
parameters: {
|
|
547
608
|
query?: never;
|
|
548
|
-
header
|
|
549
|
-
|
|
550
|
-
|
|
609
|
+
header: {
|
|
610
|
+
/** @description The `session_token` returned by `verifyPortalLogin`. A bearer credential for ONE contact — the site's server keeps it in an HttpOnly cookie and forwards it here. Missing answers `401 PORTAL_SESSION_REQUIRED`; unknown, expired or revoked answers `401 PORTAL_SESSION_INVALID`. */
|
|
611
|
+
"X-Portal-Session": components["parameters"]["PortalSession"];
|
|
551
612
|
};
|
|
613
|
+
path?: never;
|
|
552
614
|
cookie?: never;
|
|
553
615
|
};
|
|
554
|
-
|
|
555
|
-
get: operations["getWebhook"];
|
|
616
|
+
get?: never;
|
|
556
617
|
put?: never;
|
|
557
|
-
post?: never;
|
|
558
618
|
/**
|
|
559
|
-
*
|
|
560
|
-
* @description
|
|
619
|
+
* Revoke the session
|
|
620
|
+
* @description Revoking twice reaches the same state — the second call answers `401 PORTAL_SESSION_INVALID`. Not idempotency-keyed. Errors: `401 PORTAL_SESSION_REQUIRED` (header missing), `401 PORTAL_SESSION_INVALID` (unknown, expired or revoked), `403 FORBIDDEN`, `429 RATE_LIMITED`.
|
|
561
621
|
*/
|
|
562
|
-
|
|
622
|
+
post: operations["logoutPortal"];
|
|
623
|
+
delete?: never;
|
|
563
624
|
options?: never;
|
|
564
625
|
head?: never;
|
|
565
|
-
|
|
566
|
-
* Update a webhook endpoint
|
|
567
|
-
* @description Only provided fields change. Pass `null` for `channels` or `channel_connection_ids` to clear that filter.
|
|
568
|
-
*/
|
|
569
|
-
patch: operations["updateWebhook"];
|
|
626
|
+
patch?: never;
|
|
570
627
|
trace?: never;
|
|
571
628
|
};
|
|
572
|
-
"/api/v1/
|
|
629
|
+
"/api/v1/portal/me": {
|
|
573
630
|
parameters: {
|
|
574
631
|
query?: never;
|
|
575
|
-
header
|
|
576
|
-
|
|
577
|
-
|
|
632
|
+
header: {
|
|
633
|
+
/** @description The `session_token` returned by `verifyPortalLogin`. A bearer credential for ONE contact — the site's server keeps it in an HttpOnly cookie and forwards it here. Missing answers `401 PORTAL_SESSION_REQUIRED`; unknown, expired or revoked answers `401 PORTAL_SESSION_INVALID`. */
|
|
634
|
+
"X-Portal-Session": components["parameters"]["PortalSession"];
|
|
578
635
|
};
|
|
636
|
+
path?: never;
|
|
579
637
|
cookie?: never;
|
|
580
638
|
};
|
|
581
|
-
/**
|
|
582
|
-
|
|
639
|
+
/**
|
|
640
|
+
* The signed-in contact's profile
|
|
641
|
+
* @description Errors: `401 PORTAL_SESSION_REQUIRED`, `401 PORTAL_SESSION_INVALID`, `403 FORBIDDEN` (key lacks `read:portal`), `429 RATE_LIMITED`.
|
|
642
|
+
*/
|
|
643
|
+
get: operations["getPortalProfile"];
|
|
583
644
|
put?: never;
|
|
584
645
|
post?: never;
|
|
585
646
|
delete?: never;
|
|
586
647
|
options?: never;
|
|
587
648
|
head?: never;
|
|
588
|
-
|
|
649
|
+
/**
|
|
650
|
+
* Update the signed-in contact's profile
|
|
651
|
+
* @description Only the supplied fields change. `phone: null` clears the number, `family` replaces the whole list, and `marketing_consent` records a `marketing_email` consent decision with source `portal`. Answers the profile as it is after the change. Errors: `400 VALIDATION_ERROR`, `401 PORTAL_SESSION_REQUIRED`, `401 PORTAL_SESSION_INVALID`, `403 FORBIDDEN` (key lacks `write:portal`), `429 RATE_LIMITED`.
|
|
652
|
+
*/
|
|
653
|
+
patch: operations["updatePortalProfile"];
|
|
589
654
|
trace?: never;
|
|
590
655
|
};
|
|
591
|
-
"/api/v1/
|
|
656
|
+
"/api/v1/portal/me/bookings": {
|
|
592
657
|
parameters: {
|
|
593
658
|
query?: never;
|
|
594
|
-
header
|
|
595
|
-
|
|
596
|
-
|
|
659
|
+
header: {
|
|
660
|
+
/** @description The `session_token` returned by `verifyPortalLogin`. A bearer credential for ONE contact — the site's server keeps it in an HttpOnly cookie and forwards it here. Missing answers `401 PORTAL_SESSION_REQUIRED`; unknown, expired or revoked answers `401 PORTAL_SESSION_INVALID`. */
|
|
661
|
+
"X-Portal-Session": components["parameters"]["PortalSession"];
|
|
597
662
|
};
|
|
663
|
+
path?: never;
|
|
598
664
|
cookie?: never;
|
|
599
665
|
};
|
|
600
|
-
get?: never;
|
|
601
|
-
put?: never;
|
|
602
666
|
/**
|
|
603
|
-
*
|
|
604
|
-
* @description
|
|
667
|
+
* The signed-in contact's bookings
|
|
668
|
+
* @description Split into `upcoming` and `past`. An upcoming booking still inside the workspace's policy windows carries `manage_token` and `can_manage: true`; the token opens the site's manage page. Errors: `401 PORTAL_SESSION_REQUIRED`, `401 PORTAL_SESSION_INVALID`, `403 FORBIDDEN`, `429 RATE_LIMITED`.
|
|
605
669
|
*/
|
|
606
|
-
|
|
670
|
+
get: operations["listPortalBookings"];
|
|
671
|
+
put?: never;
|
|
672
|
+
post?: never;
|
|
607
673
|
delete?: never;
|
|
608
674
|
options?: never;
|
|
609
675
|
head?: never;
|
|
610
676
|
patch?: never;
|
|
611
677
|
trace?: never;
|
|
612
678
|
};
|
|
613
|
-
"/api/v1/
|
|
679
|
+
"/api/v1/portal/me/export": {
|
|
614
680
|
parameters: {
|
|
615
681
|
query?: never;
|
|
616
|
-
header
|
|
682
|
+
header: {
|
|
683
|
+
/** @description The `session_token` returned by `verifyPortalLogin`. A bearer credential for ONE contact — the site's server keeps it in an HttpOnly cookie and forwards it here. Missing answers `401 PORTAL_SESSION_REQUIRED`; unknown, expired or revoked answers `401 PORTAL_SESSION_INVALID`. */
|
|
684
|
+
"X-Portal-Session": components["parameters"]["PortalSession"];
|
|
685
|
+
};
|
|
617
686
|
path?: never;
|
|
618
687
|
cookie?: never;
|
|
619
688
|
};
|
|
620
689
|
get?: never;
|
|
621
690
|
put?: never;
|
|
622
691
|
/**
|
|
623
|
-
*
|
|
624
|
-
* @description
|
|
692
|
+
* Export everything held about the signed-in contact
|
|
693
|
+
* @description A synchronous GDPR Art. 15 export of the contact's profile, family, consents and bookings, as one JSON document. Read-only, so not idempotency-keyed. Errors: `401 PORTAL_SESSION_REQUIRED`, `401 PORTAL_SESSION_INVALID`, `403 FORBIDDEN`, `429 RATE_LIMITED`.
|
|
625
694
|
*/
|
|
626
|
-
post: operations["
|
|
695
|
+
post: operations["exportPortalData"];
|
|
627
696
|
delete?: never;
|
|
628
697
|
options?: never;
|
|
629
698
|
head?: never;
|
|
630
699
|
patch?: never;
|
|
631
700
|
trace?: never;
|
|
632
701
|
};
|
|
633
|
-
"/api/v1/
|
|
702
|
+
"/api/v1/portal/me/delete": {
|
|
634
703
|
parameters: {
|
|
635
704
|
query?: never;
|
|
636
|
-
header
|
|
705
|
+
header: {
|
|
706
|
+
/** @description The `session_token` returned by `verifyPortalLogin`. A bearer credential for ONE contact — the site's server keeps it in an HttpOnly cookie and forwards it here. Missing answers `401 PORTAL_SESSION_REQUIRED`; unknown, expired or revoked answers `401 PORTAL_SESSION_INVALID`. */
|
|
707
|
+
"X-Portal-Session": components["parameters"]["PortalSession"];
|
|
708
|
+
};
|
|
637
709
|
path?: never;
|
|
638
710
|
cookie?: never;
|
|
639
711
|
};
|
|
640
|
-
|
|
641
|
-
* List connect links
|
|
642
|
-
* @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.
|
|
643
|
-
*/
|
|
644
|
-
get: operations["listChannelConnectLinks"];
|
|
712
|
+
get?: never;
|
|
645
713
|
put?: never;
|
|
646
714
|
/**
|
|
647
|
-
*
|
|
648
|
-
* @description
|
|
715
|
+
* Erase the signed-in contact
|
|
716
|
+
* @description GDPR Art. 17 erasure. The session is revoked as part of the deletion, so a retry answers `401 PORTAL_SESSION_INVALID` rather than deleting anything else. Not idempotency-keyed. Errors: `401 PORTAL_SESSION_REQUIRED`, `401 PORTAL_SESSION_INVALID`, `403 FORBIDDEN` (key lacks `write:portal`), `429 RATE_LIMITED`.
|
|
649
717
|
*/
|
|
650
|
-
post: operations["
|
|
718
|
+
post: operations["deletePortalAccount"];
|
|
651
719
|
delete?: never;
|
|
652
720
|
options?: never;
|
|
653
721
|
head?: never;
|
|
654
722
|
patch?: never;
|
|
655
723
|
trace?: never;
|
|
656
724
|
};
|
|
657
|
-
"/api/v1/
|
|
725
|
+
"/api/v1/gdpr/export": {
|
|
658
726
|
parameters: {
|
|
659
727
|
query?: never;
|
|
660
728
|
header?: never;
|
|
661
|
-
path
|
|
662
|
-
id: components["parameters"]["Id"];
|
|
663
|
-
};
|
|
729
|
+
path?: never;
|
|
664
730
|
cookie?: never;
|
|
665
731
|
};
|
|
666
732
|
get?: never;
|
|
667
733
|
put?: never;
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
* @description Revokes a pending connect link so it can no longer be consumed. OAuth callers need the workspace `admin` role.
|
|
672
|
-
*/
|
|
673
|
-
delete: operations["revokeChannelConnectLink"];
|
|
734
|
+
/** Request a GDPR export */
|
|
735
|
+
post: operations["requestGdprExport"];
|
|
736
|
+
delete?: never;
|
|
674
737
|
options?: never;
|
|
675
738
|
head?: never;
|
|
676
739
|
patch?: never;
|
|
677
740
|
trace?: never;
|
|
678
741
|
};
|
|
679
|
-
"/api/v1/
|
|
742
|
+
"/api/v1/gdpr/exports": {
|
|
680
743
|
parameters: {
|
|
681
744
|
query?: never;
|
|
682
745
|
header?: never;
|
|
683
746
|
path?: never;
|
|
684
747
|
cookie?: never;
|
|
685
748
|
};
|
|
686
|
-
/**
|
|
687
|
-
|
|
688
|
-
* @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.
|
|
689
|
-
*/
|
|
690
|
-
get: operations["listChannelConnections"];
|
|
749
|
+
/** List GDPR exports */
|
|
750
|
+
get: operations["listGdprExports"];
|
|
691
751
|
put?: never;
|
|
692
752
|
post?: never;
|
|
693
753
|
delete?: never;
|
|
@@ -696,7 +756,7 @@ interface paths {
|
|
|
696
756
|
patch?: never;
|
|
697
757
|
trace?: never;
|
|
698
758
|
};
|
|
699
|
-
"/api/v1/
|
|
759
|
+
"/api/v1/gdpr/exports/{id}": {
|
|
700
760
|
parameters: {
|
|
701
761
|
query?: never;
|
|
702
762
|
header?: never;
|
|
@@ -705,20 +765,17 @@ interface paths {
|
|
|
705
765
|
};
|
|
706
766
|
cookie?: never;
|
|
707
767
|
};
|
|
708
|
-
|
|
768
|
+
/** Get a GDPR export */
|
|
769
|
+
get: operations["getGdprExport"];
|
|
709
770
|
put?: never;
|
|
710
771
|
post?: never;
|
|
711
|
-
|
|
712
|
-
* Disconnect a channel connection
|
|
713
|
-
* @description Disconnects a connected channel account (best-effort platform logout, then local revoke). Emits a `helpdesk.channel_disconnected` webhook event with `reason: "api_disconnect"` if the account was previously connected. OAuth callers need the workspace `admin` role.
|
|
714
|
-
*/
|
|
715
|
-
delete: operations["disconnectChannelConnection"];
|
|
772
|
+
delete?: never;
|
|
716
773
|
options?: never;
|
|
717
774
|
head?: never;
|
|
718
775
|
patch?: never;
|
|
719
776
|
trace?: never;
|
|
720
777
|
};
|
|
721
|
-
"/api/v1/
|
|
778
|
+
"/api/v1/gdpr/consent": {
|
|
722
779
|
parameters: {
|
|
723
780
|
query?: never;
|
|
724
781
|
header?: never;
|
|
@@ -727,26 +784,25 @@ interface paths {
|
|
|
727
784
|
};
|
|
728
785
|
get?: never;
|
|
729
786
|
put?: never;
|
|
730
|
-
/**
|
|
731
|
-
|
|
732
|
-
* @description Queues an asynchronous scan. Provide exactly one of `url`, `orgnr`, or `name`; poll the returned id via `GET /api/v1/scan/{id}`.
|
|
733
|
-
*/
|
|
734
|
-
post: operations["createScan"];
|
|
787
|
+
/** Record GDPR consent */
|
|
788
|
+
post: operations["recordGdprConsent"];
|
|
735
789
|
delete?: never;
|
|
736
790
|
options?: never;
|
|
737
791
|
head?: never;
|
|
738
792
|
patch?: never;
|
|
739
793
|
trace?: never;
|
|
740
794
|
};
|
|
741
|
-
"/api/v1/
|
|
795
|
+
"/api/v1/gdpr/consent/{email}": {
|
|
742
796
|
parameters: {
|
|
743
797
|
query?: never;
|
|
744
798
|
header?: never;
|
|
745
|
-
path
|
|
799
|
+
path: {
|
|
800
|
+
email: string;
|
|
801
|
+
};
|
|
746
802
|
cookie?: never;
|
|
747
803
|
};
|
|
748
|
-
/**
|
|
749
|
-
get: operations["
|
|
804
|
+
/** Get GDPR consent records */
|
|
805
|
+
get: operations["getGdprConsent"];
|
|
750
806
|
put?: never;
|
|
751
807
|
post?: never;
|
|
752
808
|
delete?: never;
|
|
@@ -755,38 +811,385 @@ interface paths {
|
|
|
755
811
|
patch?: never;
|
|
756
812
|
trace?: never;
|
|
757
813
|
};
|
|
758
|
-
"/api/
|
|
814
|
+
"/api/cookie-consent": {
|
|
759
815
|
parameters: {
|
|
760
816
|
query?: never;
|
|
761
817
|
header?: never;
|
|
762
|
-
path
|
|
763
|
-
id: components["parameters"]["Id"];
|
|
764
|
-
};
|
|
818
|
+
path?: never;
|
|
765
819
|
cookie?: never;
|
|
766
820
|
};
|
|
767
|
-
|
|
768
|
-
get: operations["getScan"];
|
|
821
|
+
get?: never;
|
|
769
822
|
put?: never;
|
|
770
|
-
|
|
823
|
+
/** Record cookie consent */
|
|
824
|
+
post: operations["recordCookieConsent"];
|
|
771
825
|
delete?: never;
|
|
772
826
|
options?: never;
|
|
773
827
|
head?: never;
|
|
774
828
|
patch?: never;
|
|
775
829
|
trace?: never;
|
|
776
830
|
};
|
|
777
|
-
|
|
778
|
-
|
|
779
|
-
|
|
780
|
-
|
|
781
|
-
|
|
782
|
-
|
|
783
|
-
|
|
784
|
-
|
|
785
|
-
|
|
786
|
-
|
|
787
|
-
|
|
788
|
-
|
|
789
|
-
|
|
831
|
+
"/api/v1/me/workspaces": {
|
|
832
|
+
parameters: {
|
|
833
|
+
query?: never;
|
|
834
|
+
header?: never;
|
|
835
|
+
path?: never;
|
|
836
|
+
cookie?: never;
|
|
837
|
+
};
|
|
838
|
+
/** List accessible workspaces */
|
|
839
|
+
get: operations["listWorkspaces"];
|
|
840
|
+
put?: never;
|
|
841
|
+
post?: never;
|
|
842
|
+
delete?: never;
|
|
843
|
+
options?: never;
|
|
844
|
+
head?: never;
|
|
845
|
+
patch?: never;
|
|
846
|
+
trace?: never;
|
|
847
|
+
};
|
|
848
|
+
"/api/v1/helpdesk/conversations": {
|
|
849
|
+
parameters: {
|
|
850
|
+
query?: never;
|
|
851
|
+
header?: never;
|
|
852
|
+
path?: never;
|
|
853
|
+
cookie?: never;
|
|
854
|
+
};
|
|
855
|
+
/** List helpdesk conversations */
|
|
856
|
+
get: operations["listHelpdeskConversations"];
|
|
857
|
+
put?: never;
|
|
858
|
+
post?: never;
|
|
859
|
+
delete?: never;
|
|
860
|
+
options?: never;
|
|
861
|
+
head?: never;
|
|
862
|
+
patch?: never;
|
|
863
|
+
trace?: never;
|
|
864
|
+
};
|
|
865
|
+
"/api/v1/helpdesk/conversations/{id}": {
|
|
866
|
+
parameters: {
|
|
867
|
+
query?: never;
|
|
868
|
+
header?: never;
|
|
869
|
+
path: {
|
|
870
|
+
id: components["parameters"]["Id"];
|
|
871
|
+
};
|
|
872
|
+
cookie?: never;
|
|
873
|
+
};
|
|
874
|
+
/** Get a helpdesk conversation */
|
|
875
|
+
get: operations["getHelpdeskConversation"];
|
|
876
|
+
put?: never;
|
|
877
|
+
post?: never;
|
|
878
|
+
delete?: never;
|
|
879
|
+
options?: never;
|
|
880
|
+
head?: never;
|
|
881
|
+
/**
|
|
882
|
+
* Update a conversation's status or assignee
|
|
883
|
+
* @description Set `status` and/or `assignee_user_id` (`null` unassigns). At least one field is required. Capability-scoped tokens must send `Idempotency-Key` and `X-Capability-Confirmation` headers on this route; API keys with legacy scopes may omit them.
|
|
884
|
+
*/
|
|
885
|
+
patch: operations["updateHelpdeskConversation"];
|
|
886
|
+
trace?: never;
|
|
887
|
+
};
|
|
888
|
+
"/api/v1/helpdesk/conversations/{id}/messages": {
|
|
889
|
+
parameters: {
|
|
890
|
+
query?: never;
|
|
891
|
+
header?: never;
|
|
892
|
+
path: {
|
|
893
|
+
id: components["parameters"]["Id"];
|
|
894
|
+
};
|
|
895
|
+
cookie?: never;
|
|
896
|
+
};
|
|
897
|
+
/** List conversation messages */
|
|
898
|
+
get: operations["listHelpdeskConversationMessages"];
|
|
899
|
+
put?: never;
|
|
900
|
+
post?: never;
|
|
901
|
+
delete?: never;
|
|
902
|
+
options?: never;
|
|
903
|
+
head?: never;
|
|
904
|
+
patch?: never;
|
|
905
|
+
trace?: never;
|
|
906
|
+
};
|
|
907
|
+
"/api/v1/helpdesk/replies": {
|
|
908
|
+
parameters: {
|
|
909
|
+
query?: never;
|
|
910
|
+
header?: never;
|
|
911
|
+
path?: never;
|
|
912
|
+
cookie?: never;
|
|
913
|
+
};
|
|
914
|
+
get?: never;
|
|
915
|
+
put?: never;
|
|
916
|
+
/**
|
|
917
|
+
* Send an operator reply or internal note
|
|
918
|
+
* @description Send an `Idempotency-Key` header so retried requests do not create duplicate messages — it is required for capability-scoped tokens (together with `X-Capability-Confirmation`).
|
|
919
|
+
*/
|
|
920
|
+
post: operations["createHelpdeskReply"];
|
|
921
|
+
delete?: never;
|
|
922
|
+
options?: never;
|
|
923
|
+
head?: never;
|
|
924
|
+
patch?: never;
|
|
925
|
+
trace?: never;
|
|
926
|
+
};
|
|
927
|
+
"/api/v1/webhooks": {
|
|
928
|
+
parameters: {
|
|
929
|
+
query?: never;
|
|
930
|
+
header?: never;
|
|
931
|
+
path?: never;
|
|
932
|
+
cookie?: never;
|
|
933
|
+
};
|
|
934
|
+
/** List webhook endpoints */
|
|
935
|
+
get: operations["listWebhooks"];
|
|
936
|
+
put?: never;
|
|
937
|
+
/**
|
|
938
|
+
* Create a webhook endpoint
|
|
939
|
+
* @description The response's `data.secret` contains the signing secret EXACTLY ONCE — it can never be retrieved again, so store it securely immediately. An idempotent replay (same `Idempotency-Key`) returns the existing endpoint WITHOUT `secret`. Deliveries are HTTP POSTs signed with `X-Medal-Signature: sha256=<base64(HMAC-SHA256("{timestamp}.{rawBody}", secret))>` plus `X-Medal-Timestamp`, `X-Medal-Event`, and `X-Medal-Delivery-Id` / `Idempotency-Key` headers.
|
|
940
|
+
*/
|
|
941
|
+
post: operations["createWebhook"];
|
|
942
|
+
delete?: never;
|
|
943
|
+
options?: never;
|
|
944
|
+
head?: never;
|
|
945
|
+
patch?: never;
|
|
946
|
+
trace?: never;
|
|
947
|
+
};
|
|
948
|
+
"/api/v1/webhooks/{id}": {
|
|
949
|
+
parameters: {
|
|
950
|
+
query?: never;
|
|
951
|
+
header?: never;
|
|
952
|
+
path: {
|
|
953
|
+
id: components["parameters"]["Id"];
|
|
954
|
+
};
|
|
955
|
+
cookie?: never;
|
|
956
|
+
};
|
|
957
|
+
/** Get a webhook endpoint */
|
|
958
|
+
get: operations["getWebhook"];
|
|
959
|
+
put?: never;
|
|
960
|
+
post?: never;
|
|
961
|
+
/**
|
|
962
|
+
* Delete a webhook endpoint
|
|
963
|
+
* @description Permanently deletes the endpoint and stops all outbound deliveries. Capability-scoped tokens must send `Idempotency-Key` and `X-Capability-Confirmation` headers on this route; API keys with legacy scopes may omit them.
|
|
964
|
+
*/
|
|
965
|
+
delete: operations["deleteWebhook"];
|
|
966
|
+
options?: never;
|
|
967
|
+
head?: never;
|
|
968
|
+
/**
|
|
969
|
+
* Update a webhook endpoint
|
|
970
|
+
* @description Only provided fields change. Pass `null` for `channels` or `channel_connection_ids` to clear that filter.
|
|
971
|
+
*/
|
|
972
|
+
patch: operations["updateWebhook"];
|
|
973
|
+
trace?: never;
|
|
974
|
+
};
|
|
975
|
+
"/api/v1/webhooks/{id}/deliveries": {
|
|
976
|
+
parameters: {
|
|
977
|
+
query?: never;
|
|
978
|
+
header?: never;
|
|
979
|
+
path: {
|
|
980
|
+
id: components["parameters"]["Id"];
|
|
981
|
+
};
|
|
982
|
+
cookie?: never;
|
|
983
|
+
};
|
|
984
|
+
/** List recent deliveries */
|
|
985
|
+
get: operations["listWebhookDeliveries"];
|
|
986
|
+
put?: never;
|
|
987
|
+
post?: never;
|
|
988
|
+
delete?: never;
|
|
989
|
+
options?: never;
|
|
990
|
+
head?: never;
|
|
991
|
+
patch?: never;
|
|
992
|
+
trace?: never;
|
|
993
|
+
};
|
|
994
|
+
"/api/v1/webhooks/{id}/test": {
|
|
995
|
+
parameters: {
|
|
996
|
+
query?: never;
|
|
997
|
+
header?: never;
|
|
998
|
+
path: {
|
|
999
|
+
id: components["parameters"]["Id"];
|
|
1000
|
+
};
|
|
1001
|
+
cookie?: never;
|
|
1002
|
+
};
|
|
1003
|
+
get?: never;
|
|
1004
|
+
put?: never;
|
|
1005
|
+
/**
|
|
1006
|
+
* Queue a test delivery
|
|
1007
|
+
* @description Queues a signed `test.ping` delivery to the endpoint.
|
|
1008
|
+
*/
|
|
1009
|
+
post: operations["testWebhook"];
|
|
1010
|
+
delete?: never;
|
|
1011
|
+
options?: never;
|
|
1012
|
+
head?: never;
|
|
1013
|
+
patch?: never;
|
|
1014
|
+
trace?: never;
|
|
1015
|
+
};
|
|
1016
|
+
"/api/v1/capability-confirmations": {
|
|
1017
|
+
parameters: {
|
|
1018
|
+
query?: never;
|
|
1019
|
+
header?: never;
|
|
1020
|
+
path?: never;
|
|
1021
|
+
cookie?: never;
|
|
1022
|
+
};
|
|
1023
|
+
get?: never;
|
|
1024
|
+
put?: never;
|
|
1025
|
+
/**
|
|
1026
|
+
* Issue a capability confirmation token
|
|
1027
|
+
* @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.
|
|
1028
|
+
*/
|
|
1029
|
+
post: operations["issueCapabilityConfirmation"];
|
|
1030
|
+
delete?: never;
|
|
1031
|
+
options?: never;
|
|
1032
|
+
head?: never;
|
|
1033
|
+
patch?: never;
|
|
1034
|
+
trace?: never;
|
|
1035
|
+
};
|
|
1036
|
+
"/api/v1/channels/connect-links": {
|
|
1037
|
+
parameters: {
|
|
1038
|
+
query?: never;
|
|
1039
|
+
header?: never;
|
|
1040
|
+
path?: never;
|
|
1041
|
+
cookie?: never;
|
|
1042
|
+
};
|
|
1043
|
+
/**
|
|
1044
|
+
* List connect links
|
|
1045
|
+
* @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.
|
|
1046
|
+
*/
|
|
1047
|
+
get: operations["listChannelConnectLinks"];
|
|
1048
|
+
put?: never;
|
|
1049
|
+
/**
|
|
1050
|
+
* Mint a hosted connect link
|
|
1051
|
+
* @description Mints a single-use hosted connect link that lets an external person (no Medal account required) attach a channel account (e.g. `telegram_inbox`) to the workspace's helpdesk. The response's `data.url` contains the one-time link token EXACTLY ONCE — an idempotent replay (same `Idempotency-Key`) returns the link WITHOUT `url`. Requires the `channel.connect.manage` scope; OAuth callers additionally need the workspace `admin` role.
|
|
1052
|
+
*/
|
|
1053
|
+
post: operations["createChannelConnectLink"];
|
|
1054
|
+
delete?: never;
|
|
1055
|
+
options?: never;
|
|
1056
|
+
head?: never;
|
|
1057
|
+
patch?: never;
|
|
1058
|
+
trace?: never;
|
|
1059
|
+
};
|
|
1060
|
+
"/api/v1/channels/connect-links/{id}": {
|
|
1061
|
+
parameters: {
|
|
1062
|
+
query?: never;
|
|
1063
|
+
header?: never;
|
|
1064
|
+
path: {
|
|
1065
|
+
id: components["parameters"]["Id"];
|
|
1066
|
+
};
|
|
1067
|
+
cookie?: never;
|
|
1068
|
+
};
|
|
1069
|
+
get?: never;
|
|
1070
|
+
put?: never;
|
|
1071
|
+
post?: never;
|
|
1072
|
+
/**
|
|
1073
|
+
* Revoke a connect link
|
|
1074
|
+
* @description Revokes a pending connect link so it can no longer be consumed. OAuth callers need the workspace `admin` role.
|
|
1075
|
+
*/
|
|
1076
|
+
delete: operations["revokeChannelConnectLink"];
|
|
1077
|
+
options?: never;
|
|
1078
|
+
head?: never;
|
|
1079
|
+
patch?: never;
|
|
1080
|
+
trace?: never;
|
|
1081
|
+
};
|
|
1082
|
+
"/api/v1/channels/connections": {
|
|
1083
|
+
parameters: {
|
|
1084
|
+
query?: never;
|
|
1085
|
+
header?: never;
|
|
1086
|
+
path?: never;
|
|
1087
|
+
cookie?: never;
|
|
1088
|
+
};
|
|
1089
|
+
/**
|
|
1090
|
+
* List channel connections
|
|
1091
|
+
* @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.
|
|
1092
|
+
*/
|
|
1093
|
+
get: operations["listChannelConnections"];
|
|
1094
|
+
put?: never;
|
|
1095
|
+
post?: never;
|
|
1096
|
+
delete?: never;
|
|
1097
|
+
options?: never;
|
|
1098
|
+
head?: never;
|
|
1099
|
+
patch?: never;
|
|
1100
|
+
trace?: never;
|
|
1101
|
+
};
|
|
1102
|
+
"/api/v1/channels/connections/{id}": {
|
|
1103
|
+
parameters: {
|
|
1104
|
+
query?: never;
|
|
1105
|
+
header?: never;
|
|
1106
|
+
path: {
|
|
1107
|
+
id: components["parameters"]["Id"];
|
|
1108
|
+
};
|
|
1109
|
+
cookie?: never;
|
|
1110
|
+
};
|
|
1111
|
+
get?: never;
|
|
1112
|
+
put?: never;
|
|
1113
|
+
post?: never;
|
|
1114
|
+
/**
|
|
1115
|
+
* Disconnect a channel connection
|
|
1116
|
+
* @description Disconnects a connected channel account (best-effort platform logout, then local revoke). Emits a `helpdesk.channel_disconnected` webhook event with `reason: "api_disconnect"` if the account was previously connected. OAuth callers need the workspace `admin` role.
|
|
1117
|
+
*/
|
|
1118
|
+
delete: operations["disconnectChannelConnection"];
|
|
1119
|
+
options?: never;
|
|
1120
|
+
head?: never;
|
|
1121
|
+
patch?: never;
|
|
1122
|
+
trace?: never;
|
|
1123
|
+
};
|
|
1124
|
+
"/api/v1/scan": {
|
|
1125
|
+
parameters: {
|
|
1126
|
+
query?: never;
|
|
1127
|
+
header?: never;
|
|
1128
|
+
path?: never;
|
|
1129
|
+
cookie?: never;
|
|
1130
|
+
};
|
|
1131
|
+
get?: never;
|
|
1132
|
+
put?: never;
|
|
1133
|
+
/**
|
|
1134
|
+
* Queue a company/site scan
|
|
1135
|
+
* @description Queues an asynchronous scan. Provide exactly one of `url`, `orgnr`, or `name`; poll the returned id via `GET /api/v1/scan/{id}`.
|
|
1136
|
+
*/
|
|
1137
|
+
post: operations["createScan"];
|
|
1138
|
+
delete?: never;
|
|
1139
|
+
options?: never;
|
|
1140
|
+
head?: never;
|
|
1141
|
+
patch?: never;
|
|
1142
|
+
trace?: never;
|
|
1143
|
+
};
|
|
1144
|
+
"/api/v1/scan/companies": {
|
|
1145
|
+
parameters: {
|
|
1146
|
+
query?: never;
|
|
1147
|
+
header?: never;
|
|
1148
|
+
path?: never;
|
|
1149
|
+
cookie?: never;
|
|
1150
|
+
};
|
|
1151
|
+
/** Search the Norwegian company registry */
|
|
1152
|
+
get: operations["searchScanCompanies"];
|
|
1153
|
+
put?: never;
|
|
1154
|
+
post?: never;
|
|
1155
|
+
delete?: never;
|
|
1156
|
+
options?: never;
|
|
1157
|
+
head?: never;
|
|
1158
|
+
patch?: never;
|
|
1159
|
+
trace?: never;
|
|
1160
|
+
};
|
|
1161
|
+
"/api/v1/scan/{id}": {
|
|
1162
|
+
parameters: {
|
|
1163
|
+
query?: never;
|
|
1164
|
+
header?: never;
|
|
1165
|
+
path: {
|
|
1166
|
+
id: components["parameters"]["Id"];
|
|
1167
|
+
};
|
|
1168
|
+
cookie?: never;
|
|
1169
|
+
};
|
|
1170
|
+
/** Get a scan job */
|
|
1171
|
+
get: operations["getScan"];
|
|
1172
|
+
put?: never;
|
|
1173
|
+
post?: never;
|
|
1174
|
+
delete?: never;
|
|
1175
|
+
options?: never;
|
|
1176
|
+
head?: never;
|
|
1177
|
+
patch?: never;
|
|
1178
|
+
trace?: never;
|
|
1179
|
+
};
|
|
1180
|
+
}
|
|
1181
|
+
type webhooks = Record<string, never>;
|
|
1182
|
+
interface components {
|
|
1183
|
+
schemas: {
|
|
1184
|
+
ApiError: {
|
|
1185
|
+
error: {
|
|
1186
|
+
code: string;
|
|
1187
|
+
message: string;
|
|
1188
|
+
details?: unknown;
|
|
1189
|
+
};
|
|
1190
|
+
};
|
|
1191
|
+
Pagination: {
|
|
1192
|
+
has_more: boolean;
|
|
790
1193
|
next_cursor: string | null;
|
|
791
1194
|
};
|
|
792
1195
|
Success: {
|
|
@@ -1154,24 +1557,233 @@ interface components {
|
|
|
1154
1557
|
end_date?: string;
|
|
1155
1558
|
notes?: string;
|
|
1156
1559
|
};
|
|
1157
|
-
UpdateDealInput: {
|
|
1158
|
-
title?: string;
|
|
1159
|
-
description?: string;
|
|
1160
|
-
value?: number;
|
|
1161
|
-
currency?: string;
|
|
1162
|
-
status?: components["schemas"]["DealStatus"];
|
|
1163
|
-
brand_name?: string;
|
|
1164
|
-
/** Format: uri */
|
|
1165
|
-
brand_website?: string;
|
|
1166
|
-
contact_id?: string | null;
|
|
1167
|
-
contact_name?: string;
|
|
1168
|
-
/** Format: email */
|
|
1169
|
-
contact_email?: string;
|
|
1170
|
-
/** Format: date */
|
|
1171
|
-
start_date?: string;
|
|
1172
|
-
/** Format: date */
|
|
1173
|
-
end_date?: string;
|
|
1174
|
-
notes?: string;
|
|
1560
|
+
UpdateDealInput: {
|
|
1561
|
+
title?: string;
|
|
1562
|
+
description?: string;
|
|
1563
|
+
value?: number;
|
|
1564
|
+
currency?: string;
|
|
1565
|
+
status?: components["schemas"]["DealStatus"];
|
|
1566
|
+
brand_name?: string;
|
|
1567
|
+
/** Format: uri */
|
|
1568
|
+
brand_website?: string;
|
|
1569
|
+
contact_id?: string | null;
|
|
1570
|
+
contact_name?: string;
|
|
1571
|
+
/** Format: email */
|
|
1572
|
+
contact_email?: string;
|
|
1573
|
+
/** Format: date */
|
|
1574
|
+
start_date?: string;
|
|
1575
|
+
/** Format: date */
|
|
1576
|
+
end_date?: string;
|
|
1577
|
+
notes?: string;
|
|
1578
|
+
};
|
|
1579
|
+
/** @description A timestamp on the way in — Unix milliseconds, or an ISO 8601 date-time string. Responses always render timestamps as ISO 8601. */
|
|
1580
|
+
BookingTimestampInput: number | string;
|
|
1581
|
+
/** @enum {string} */
|
|
1582
|
+
BookingStatus: "pending" | "confirmed" | "completed" | "cancelled" | "no_show";
|
|
1583
|
+
/**
|
|
1584
|
+
* @description Who cancelled. `staff` for the id-addressed cancel, `customer` for the manage-token cancel, `system` for an automated one.
|
|
1585
|
+
* @enum {string}
|
|
1586
|
+
*/
|
|
1587
|
+
BookingCancelledBy: "customer" | "staff" | "system";
|
|
1588
|
+
/** @enum {string} */
|
|
1589
|
+
BookingPaymentStatus: "none" | "reserved" | "captured" | "refunded";
|
|
1590
|
+
/** @enum {string} */
|
|
1591
|
+
BookingCreatedVia: "web" | "dashboard" | "walk_in" | "api";
|
|
1592
|
+
/** @enum {string} */
|
|
1593
|
+
BookingResourceType: "staff" | "room" | "equipment";
|
|
1594
|
+
Booking: {
|
|
1595
|
+
id: string;
|
|
1596
|
+
contact_id: string | null;
|
|
1597
|
+
service_id: string | null;
|
|
1598
|
+
resource_id: string | null;
|
|
1599
|
+
/** Format: date-time */
|
|
1600
|
+
start_ts: string | null;
|
|
1601
|
+
/** Format: date-time */
|
|
1602
|
+
end_ts: string | null;
|
|
1603
|
+
booked_for_name: string | null;
|
|
1604
|
+
/** @description A birth year, not a birthdate — the age bracket is all that is stored. */
|
|
1605
|
+
booked_for_birth_year: number | null;
|
|
1606
|
+
/** @description Shared by every booking created in the same party request. */
|
|
1607
|
+
party_sequence_id: string | null;
|
|
1608
|
+
status: components["schemas"]["BookingStatus"];
|
|
1609
|
+
cancelled_by: components["schemas"]["BookingCancelledBy"] | null;
|
|
1610
|
+
cancel_reason: string | null;
|
|
1611
|
+
/** @description On a booking created by a reschedule, the booking it replaced. */
|
|
1612
|
+
rescheduled_from_id: string | null;
|
|
1613
|
+
payment_status: components["schemas"]["BookingPaymentStatus"];
|
|
1614
|
+
/** @description Price in integer øre. Never a float and never kroner. */
|
|
1615
|
+
amount_ore: number | null;
|
|
1616
|
+
/** @description Customer-visible note. */
|
|
1617
|
+
notes: string | null;
|
|
1618
|
+
/** @description Staff-only note; never shown to the customer. */
|
|
1619
|
+
internal_notes: string | null;
|
|
1620
|
+
created_via: components["schemas"]["BookingCreatedVia"] | null;
|
|
1621
|
+
/** Format: date-time */
|
|
1622
|
+
created_at: string | null;
|
|
1623
|
+
/** Format: date-time */
|
|
1624
|
+
updated_at: string | null;
|
|
1625
|
+
};
|
|
1626
|
+
BookingService: {
|
|
1627
|
+
id: string;
|
|
1628
|
+
name: string | null;
|
|
1629
|
+
description: string | null;
|
|
1630
|
+
category: string | null;
|
|
1631
|
+
duration_minutes: number | null;
|
|
1632
|
+
buffer_before_minutes: number | null;
|
|
1633
|
+
buffer_after_minutes: number | null;
|
|
1634
|
+
/** @description Price in integer øre. */
|
|
1635
|
+
price_ore: number | null;
|
|
1636
|
+
weekend_surcharge_pct: number | null;
|
|
1637
|
+
/** @description Resource types this service needs, e.g. `["staff"]`. */
|
|
1638
|
+
resource_requirements: string[];
|
|
1639
|
+
bookable_online: boolean;
|
|
1640
|
+
max_per_booking: number | null;
|
|
1641
|
+
color: string | null;
|
|
1642
|
+
sort_order: number | null;
|
|
1643
|
+
active: boolean;
|
|
1644
|
+
/** Format: date-time */
|
|
1645
|
+
created_at: string | null;
|
|
1646
|
+
/** Format: date-time */
|
|
1647
|
+
updated_at: string | null;
|
|
1648
|
+
};
|
|
1649
|
+
BookingResource: {
|
|
1650
|
+
id: string;
|
|
1651
|
+
type: components["schemas"]["BookingResourceType"] | null;
|
|
1652
|
+
name: string | null;
|
|
1653
|
+
/** Format: uri */
|
|
1654
|
+
photo_url: string | null;
|
|
1655
|
+
bio: string | null;
|
|
1656
|
+
/** @description Services this resource can perform. */
|
|
1657
|
+
service_ids: string[];
|
|
1658
|
+
capacity: number | null;
|
|
1659
|
+
sort_order: number | null;
|
|
1660
|
+
active: boolean;
|
|
1661
|
+
/** Format: date-time */
|
|
1662
|
+
created_at: string | null;
|
|
1663
|
+
/** Format: date-time */
|
|
1664
|
+
updated_at: string | null;
|
|
1665
|
+
};
|
|
1666
|
+
BookingSlot: {
|
|
1667
|
+
/** Format: date-time */
|
|
1668
|
+
start_ts: string | null;
|
|
1669
|
+
/** Format: date-time */
|
|
1670
|
+
end_ts: string | null;
|
|
1671
|
+
resource_id: string | null;
|
|
1672
|
+
};
|
|
1673
|
+
/** @description One date a service can be booked on. `date` is the workspace's own calendar date, not a timestamp. */
|
|
1674
|
+
BookingScheduleDay: {
|
|
1675
|
+
/** Format: date */
|
|
1676
|
+
date: string | null;
|
|
1677
|
+
/** Format: date-time */
|
|
1678
|
+
opens_ts: string | null;
|
|
1679
|
+
/** Format: date-time */
|
|
1680
|
+
closes_ts: string | null;
|
|
1681
|
+
/**
|
|
1682
|
+
* Format: date-time
|
|
1683
|
+
* @description Last start this service could occupy on the date; `null` when the date is shut outright.
|
|
1684
|
+
*/
|
|
1685
|
+
last_start_ts: string | null;
|
|
1686
|
+
};
|
|
1687
|
+
/** @description The person the booking is made under. Phone is the CRM dedupe key. */
|
|
1688
|
+
BookingContactInput: {
|
|
1689
|
+
phone: string;
|
|
1690
|
+
email?: string;
|
|
1691
|
+
name?: string;
|
|
1692
|
+
};
|
|
1693
|
+
/** @description One line of a party — a single service on a single slot. */
|
|
1694
|
+
CreateBookingItemInput: {
|
|
1695
|
+
service_id: string;
|
|
1696
|
+
/** @description Omit to let the engine pick a free resource. */
|
|
1697
|
+
resource_id?: string;
|
|
1698
|
+
start_ts: components["schemas"]["BookingTimestampInput"];
|
|
1699
|
+
booked_for_name?: string;
|
|
1700
|
+
booked_for_birth_year?: number;
|
|
1701
|
+
};
|
|
1702
|
+
CreateBookingInput: {
|
|
1703
|
+
/** @description A PARTY — one request books a whole family in one all-or-nothing transaction. */
|
|
1704
|
+
items: components["schemas"]["CreateBookingItemInput"][];
|
|
1705
|
+
contact: components["schemas"]["BookingContactInput"];
|
|
1706
|
+
notes?: string;
|
|
1707
|
+
/**
|
|
1708
|
+
* @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.
|
|
1709
|
+
* @enum {string}
|
|
1710
|
+
*/
|
|
1711
|
+
created_via?: "web" | "api";
|
|
1712
|
+
};
|
|
1713
|
+
CreatedBooking: {
|
|
1714
|
+
id: string;
|
|
1715
|
+
/** @description Show-once secret for the customer's manage link. Only its hash is stored, and an idempotent replay omits this field entirely. */
|
|
1716
|
+
manage_token?: string;
|
|
1717
|
+
};
|
|
1718
|
+
BookingCreateResult: {
|
|
1719
|
+
/** @description One entry per created booking, in request order. */
|
|
1720
|
+
bookings: components["schemas"]["CreatedBooking"][];
|
|
1721
|
+
contact_id: string;
|
|
1722
|
+
};
|
|
1723
|
+
BookingActionResult: {
|
|
1724
|
+
/** @constant */
|
|
1725
|
+
success: true;
|
|
1726
|
+
};
|
|
1727
|
+
BookingRescheduleResult: {
|
|
1728
|
+
/** @constant */
|
|
1729
|
+
success: true;
|
|
1730
|
+
/** @description The NEW booking's id — a reschedule cancels the old row and inserts a new one. */
|
|
1731
|
+
booking_id: string;
|
|
1732
|
+
/** @description Freshly minted manage token for the new booking; omitted on an idempotent replay. */
|
|
1733
|
+
manage_token?: string;
|
|
1734
|
+
};
|
|
1735
|
+
/** @description What the holder of a manage token may see and do. `can_cancel` and `can_reschedule` already apply the workspace's policy windows. */
|
|
1736
|
+
ManageSummary: {
|
|
1737
|
+
booking_id: string;
|
|
1738
|
+
contact_id: string | null;
|
|
1739
|
+
status: components["schemas"]["BookingStatus"] | null;
|
|
1740
|
+
cancelled_by: components["schemas"]["BookingCancelledBy"] | null;
|
|
1741
|
+
cancel_reason: string | null;
|
|
1742
|
+
rescheduled_from_id: string | null;
|
|
1743
|
+
/** Format: date-time */
|
|
1744
|
+
start_ts: string | null;
|
|
1745
|
+
/** Format: date-time */
|
|
1746
|
+
end_ts: string | null;
|
|
1747
|
+
service_id: string | null;
|
|
1748
|
+
service_name: string | null;
|
|
1749
|
+
resource_id: string | null;
|
|
1750
|
+
resource_name: string | null;
|
|
1751
|
+
booked_for_name: string | null;
|
|
1752
|
+
party_sequence_id: string | null;
|
|
1753
|
+
/** @description Price in integer øre. */
|
|
1754
|
+
amount_ore: number | null;
|
|
1755
|
+
payment_status: components["schemas"]["BookingPaymentStatus"] | null;
|
|
1756
|
+
/** @description IANA zone the booking's local times should be rendered in. */
|
|
1757
|
+
time_zone: string | null;
|
|
1758
|
+
cancel_window_hours: number | null;
|
|
1759
|
+
reschedule_window_hours: number | null;
|
|
1760
|
+
can_cancel: boolean;
|
|
1761
|
+
can_reschedule: boolean;
|
|
1762
|
+
};
|
|
1763
|
+
/** @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. */
|
|
1764
|
+
UpdateBookingInput: {
|
|
1765
|
+
/** @description Customer-visible note. */
|
|
1766
|
+
notes: string;
|
|
1767
|
+
/** @description Staff-only note. */
|
|
1768
|
+
internal_notes?: string;
|
|
1769
|
+
} | {
|
|
1770
|
+
/** @description Customer-visible note. */
|
|
1771
|
+
notes?: string;
|
|
1772
|
+
/** @description Staff-only note. */
|
|
1773
|
+
internal_notes: string;
|
|
1774
|
+
};
|
|
1775
|
+
CancelBookingInput: {
|
|
1776
|
+
reason?: string;
|
|
1777
|
+
};
|
|
1778
|
+
RescheduleBookingInput: {
|
|
1779
|
+
new_start_ts: components["schemas"]["BookingTimestampInput"];
|
|
1780
|
+
new_resource_id?: string;
|
|
1781
|
+
};
|
|
1782
|
+
/** @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. */
|
|
1783
|
+
BookingsPagination: {
|
|
1784
|
+
has_more: boolean;
|
|
1785
|
+
next_cursor: string | null;
|
|
1786
|
+
truncated: boolean;
|
|
1175
1787
|
};
|
|
1176
1788
|
GdprExport: {
|
|
1177
1789
|
id: string;
|
|
@@ -1503,6 +2115,20 @@ interface components {
|
|
|
1503
2115
|
ApiResponse_DealCreateResult: components["schemas"]["Envelope_DealCreateResult"];
|
|
1504
2116
|
ApiResponse_DealUpdateResult: components["schemas"]["Envelope_DealUpdateResult"];
|
|
1505
2117
|
ApiResponse_DealRemoveResult: components["schemas"]["Envelope_DealRemoveResult"];
|
|
2118
|
+
ApiResponse_Booking: components["schemas"]["Envelope_Booking"];
|
|
2119
|
+
ApiResponse_BookingServiceArray: components["schemas"]["Envelope_BookingServiceArray"];
|
|
2120
|
+
ApiResponse_BookingResourceArray: components["schemas"]["Envelope_BookingResourceArray"];
|
|
2121
|
+
ApiResponse_BookingSlotArray: components["schemas"]["Envelope_BookingSlotArray"];
|
|
2122
|
+
ApiResponse_BookingScheduleDayArray: components["schemas"]["Envelope_BookingScheduleDayArray"];
|
|
2123
|
+
ApiResponse_BookingCreateResult: components["schemas"]["Envelope_BookingCreateResult"];
|
|
2124
|
+
ApiResponse_BookingActionResult: components["schemas"]["Envelope_BookingActionResult"];
|
|
2125
|
+
ApiResponse_BookingRescheduleResult: components["schemas"]["Envelope_BookingRescheduleResult"];
|
|
2126
|
+
ApiResponse_ManageSummary: components["schemas"]["Envelope_ManageSummary"];
|
|
2127
|
+
ApiResponse_PortalLoginStartResult: components["schemas"]["Envelope_PortalLoginStartResult"];
|
|
2128
|
+
ApiResponse_PortalSession: components["schemas"]["Envelope_PortalSession"];
|
|
2129
|
+
ApiResponse_PortalProfile: components["schemas"]["Envelope_PortalProfile"];
|
|
2130
|
+
ApiResponse_PortalBookings: components["schemas"]["Envelope_PortalBookings"];
|
|
2131
|
+
ApiResponse_PortalExport: components["schemas"]["Envelope_PortalExport"];
|
|
1506
2132
|
ApiResponse_GdprExportRequest: components["schemas"]["Envelope_GdprExportRequest"];
|
|
1507
2133
|
ApiResponse_GdprExportArray: components["schemas"]["Envelope_GdprExportArray"];
|
|
1508
2134
|
ApiResponse_GdprExport: components["schemas"]["Envelope_GdprExport"];
|
|
@@ -1533,354 +2159,1003 @@ interface components {
|
|
|
1533
2159
|
data: components["schemas"]["Contact"][];
|
|
1534
2160
|
pagination: components["schemas"]["Pagination"];
|
|
1535
2161
|
};
|
|
1536
|
-
PaginatedResponse_Activity: {
|
|
1537
|
-
data: components["schemas"]["Activity"][];
|
|
1538
|
-
pagination: components["schemas"]["Pagination"];
|
|
2162
|
+
PaginatedResponse_Activity: {
|
|
2163
|
+
data: components["schemas"]["Activity"][];
|
|
2164
|
+
pagination: components["schemas"]["Pagination"];
|
|
2165
|
+
};
|
|
2166
|
+
PaginatedResponse_Deal: {
|
|
2167
|
+
data: components["schemas"]["Deal"][];
|
|
2168
|
+
pagination: components["schemas"]["Pagination"];
|
|
2169
|
+
};
|
|
2170
|
+
PaginatedResponse_Booking: {
|
|
2171
|
+
data: components["schemas"]["Booking"][];
|
|
2172
|
+
pagination: components["schemas"]["BookingsPagination"];
|
|
2173
|
+
};
|
|
2174
|
+
PaginatedResponse_HelpdeskConversation: {
|
|
2175
|
+
data: components["schemas"]["HelpdeskConversation"][];
|
|
2176
|
+
pagination: components["schemas"]["Pagination"];
|
|
2177
|
+
};
|
|
2178
|
+
PaginatedResponse_HelpdeskMessage: {
|
|
2179
|
+
data: components["schemas"]["HelpdeskMessage"][];
|
|
2180
|
+
pagination: components["schemas"]["Pagination"];
|
|
2181
|
+
};
|
|
2182
|
+
PaginatedResponse_ConnectLink: {
|
|
2183
|
+
data: components["schemas"]["ConnectLink"][];
|
|
2184
|
+
pagination: components["schemas"]["Pagination"];
|
|
2185
|
+
};
|
|
2186
|
+
PaginatedResponse_ChannelConnection: {
|
|
2187
|
+
data: components["schemas"]["ChannelConnection"][];
|
|
2188
|
+
pagination: components["schemas"]["Pagination"];
|
|
2189
|
+
};
|
|
2190
|
+
Envelope_PostCreateResult: {
|
|
2191
|
+
data: components["schemas"]["PostCreateResult"];
|
|
2192
|
+
};
|
|
2193
|
+
Envelope_PostDetail: {
|
|
2194
|
+
data: components["schemas"]["PostDetail"];
|
|
2195
|
+
};
|
|
2196
|
+
Envelope_Success: {
|
|
2197
|
+
data: components["schemas"]["Success"];
|
|
2198
|
+
};
|
|
2199
|
+
Envelope_ScheduleResult: {
|
|
2200
|
+
data: components["schemas"]["ScheduleResult"];
|
|
2201
|
+
};
|
|
2202
|
+
Envelope_PublishResult: {
|
|
2203
|
+
data: components["schemas"]["PublishResult"];
|
|
2204
|
+
};
|
|
2205
|
+
Envelope_ChannelArray: {
|
|
2206
|
+
data: components["schemas"]["Channel"][];
|
|
2207
|
+
};
|
|
2208
|
+
Envelope_EmailSendResult: {
|
|
2209
|
+
data: components["schemas"]["EmailSendResult"];
|
|
2210
|
+
};
|
|
2211
|
+
Envelope_EmailSend: {
|
|
2212
|
+
data: components["schemas"]["EmailSend"];
|
|
2213
|
+
};
|
|
2214
|
+
Envelope_BatchSendSummary: {
|
|
2215
|
+
data: components["schemas"]["BatchSendSummary"];
|
|
2216
|
+
};
|
|
2217
|
+
Envelope_EmailTemplateArray: {
|
|
2218
|
+
data: components["schemas"]["EmailTemplate"][];
|
|
2219
|
+
};
|
|
2220
|
+
Envelope_EmailTemplateDetail: {
|
|
2221
|
+
data: components["schemas"]["EmailTemplateDetail"];
|
|
2222
|
+
};
|
|
2223
|
+
Envelope_Contact: {
|
|
2224
|
+
data: components["schemas"]["Contact"];
|
|
2225
|
+
};
|
|
2226
|
+
Envelope_ContactCreateResult: {
|
|
2227
|
+
data: components["schemas"]["ContactCreateResult"];
|
|
2228
|
+
};
|
|
2229
|
+
Envelope_ContactUpdateResult: {
|
|
2230
|
+
data: components["schemas"]["ContactUpdateResult"];
|
|
2231
|
+
};
|
|
2232
|
+
Envelope_ContactRemoveResult: {
|
|
2233
|
+
data: components["schemas"]["ContactRemoveResult"];
|
|
2234
|
+
};
|
|
2235
|
+
Envelope_ContactNoteResult: {
|
|
2236
|
+
data: components["schemas"]["ContactNoteResult"];
|
|
2237
|
+
};
|
|
2238
|
+
Envelope_ImportContactsResult: {
|
|
2239
|
+
data: components["schemas"]["ImportContactsResult"];
|
|
2240
|
+
};
|
|
2241
|
+
Envelope_Deal: {
|
|
2242
|
+
data: components["schemas"]["Deal"];
|
|
2243
|
+
};
|
|
2244
|
+
Envelope_DealCreateResult: {
|
|
2245
|
+
data: components["schemas"]["DealCreateResult"];
|
|
2246
|
+
};
|
|
2247
|
+
Envelope_DealUpdateResult: {
|
|
2248
|
+
data: components["schemas"]["DealUpdateResult"];
|
|
2249
|
+
};
|
|
2250
|
+
Envelope_DealRemoveResult: {
|
|
2251
|
+
data: components["schemas"]["DealRemoveResult"];
|
|
2252
|
+
};
|
|
2253
|
+
Envelope_Booking: {
|
|
2254
|
+
data: components["schemas"]["Booking"];
|
|
2255
|
+
};
|
|
2256
|
+
Envelope_BookingServiceArray: {
|
|
2257
|
+
data: components["schemas"]["BookingService"][];
|
|
2258
|
+
};
|
|
2259
|
+
Envelope_BookingResourceArray: {
|
|
2260
|
+
data: components["schemas"]["BookingResource"][];
|
|
2261
|
+
};
|
|
2262
|
+
Envelope_BookingSlotArray: {
|
|
2263
|
+
data: components["schemas"]["BookingSlot"][];
|
|
2264
|
+
};
|
|
2265
|
+
Envelope_BookingScheduleDayArray: {
|
|
2266
|
+
data: components["schemas"]["BookingScheduleDay"][];
|
|
2267
|
+
};
|
|
2268
|
+
Envelope_BookingCreateResult: {
|
|
2269
|
+
data: components["schemas"]["BookingCreateResult"];
|
|
2270
|
+
};
|
|
2271
|
+
Envelope_BookingActionResult: {
|
|
2272
|
+
data: components["schemas"]["BookingActionResult"];
|
|
2273
|
+
};
|
|
2274
|
+
Envelope_BookingRescheduleResult: {
|
|
2275
|
+
data: components["schemas"]["BookingRescheduleResult"];
|
|
2276
|
+
};
|
|
2277
|
+
Envelope_ManageSummary: {
|
|
2278
|
+
data: components["schemas"]["ManageSummary"];
|
|
2279
|
+
};
|
|
2280
|
+
PortalLoginStartInput: {
|
|
2281
|
+
/**
|
|
2282
|
+
* Format: email
|
|
2283
|
+
* @description The address the code is sent to.
|
|
2284
|
+
*/
|
|
2285
|
+
email: string;
|
|
2286
|
+
/** @description Locale for the e-mail (e.g. `nb`, `en`); the workspace default when omitted. */
|
|
2287
|
+
locale?: string;
|
|
2288
|
+
};
|
|
2289
|
+
/** @description Always `sent`, whether or not the address is a known contact — the route is enumeration-safe by design. */
|
|
2290
|
+
PortalLoginStartResult: {
|
|
2291
|
+
/** @constant */
|
|
2292
|
+
status: "sent";
|
|
2293
|
+
};
|
|
2294
|
+
PortalVerifyInput: {
|
|
2295
|
+
/** Format: email */
|
|
2296
|
+
email: string;
|
|
2297
|
+
/** @description The one-time code from the e-mail. */
|
|
2298
|
+
code: string;
|
|
2299
|
+
};
|
|
2300
|
+
PortalContactSummary: {
|
|
2301
|
+
contact_id: string;
|
|
2302
|
+
first_name: string | null;
|
|
2303
|
+
};
|
|
2304
|
+
/** @description A portal session. `session_token` is a bearer credential for ONE contact — keep it in an HttpOnly cookie on the site's server and never hand it to the browser. */
|
|
2305
|
+
PortalSession: {
|
|
2306
|
+
session_token: string;
|
|
2307
|
+
/** @description Unix timestamp in milliseconds. */
|
|
2308
|
+
expires_at: number;
|
|
2309
|
+
contact: components["schemas"]["PortalContactSummary"];
|
|
2310
|
+
};
|
|
2311
|
+
PortalFamilyMember: {
|
|
2312
|
+
name: string;
|
|
2313
|
+
birth_year: number;
|
|
2314
|
+
};
|
|
2315
|
+
PortalProfile: {
|
|
2316
|
+
contact_id: string;
|
|
2317
|
+
email: string;
|
|
2318
|
+
first_name: string | null;
|
|
2319
|
+
last_name: string | null;
|
|
2320
|
+
phone: string | null;
|
|
2321
|
+
family: components["schemas"]["PortalFamilyMember"][];
|
|
2322
|
+
marketing_consent: boolean;
|
|
2323
|
+
/** @description Unix timestamp in milliseconds. */
|
|
2324
|
+
created_at: number;
|
|
2325
|
+
};
|
|
2326
|
+
/** @description Only the supplied fields change. */
|
|
2327
|
+
PortalProfilePatch: {
|
|
2328
|
+
first_name?: string;
|
|
2329
|
+
last_name?: string;
|
|
2330
|
+
/** @description `null` clears the number. */
|
|
2331
|
+
phone?: string | null;
|
|
2332
|
+
/** @description Replaces the whole list. */
|
|
2333
|
+
family?: components["schemas"]["PortalFamilyMember"][];
|
|
2334
|
+
/** @description Records a `marketing_email` consent change with source `portal`. */
|
|
2335
|
+
marketing_consent?: boolean;
|
|
2336
|
+
};
|
|
2337
|
+
PortalBooking: {
|
|
2338
|
+
booking_id: string;
|
|
2339
|
+
status: components["schemas"]["BookingStatus"];
|
|
2340
|
+
/** @description Unix timestamp in milliseconds. */
|
|
2341
|
+
start_ts: number;
|
|
2342
|
+
/** @description Unix timestamp in milliseconds. */
|
|
2343
|
+
end_ts: number;
|
|
2344
|
+
service_id: string | null;
|
|
2345
|
+
service_name: string | null;
|
|
2346
|
+
resource_id: string | null;
|
|
2347
|
+
resource_name: string | null;
|
|
2348
|
+
booked_for_name: string | null;
|
|
2349
|
+
/** @description Integer øre, or `null` when the service has no price. */
|
|
2350
|
+
amount_ore: number | null;
|
|
2351
|
+
notes: string | null;
|
|
2352
|
+
/** @description Present only while the booking is upcoming and manageable; opens the site's manage page. */
|
|
2353
|
+
manage_token: string | null;
|
|
2354
|
+
can_manage: boolean;
|
|
2355
|
+
};
|
|
2356
|
+
PortalBookings: {
|
|
2357
|
+
upcoming: components["schemas"]["PortalBooking"][];
|
|
2358
|
+
past: components["schemas"]["PortalBooking"][];
|
|
2359
|
+
};
|
|
2360
|
+
PortalConsentRecord: {
|
|
2361
|
+
consent_type: string;
|
|
2362
|
+
granted: boolean;
|
|
2363
|
+
/** @description Unix timestamp in milliseconds, or `null`. */
|
|
2364
|
+
granted_at: number | null;
|
|
2365
|
+
/** @description Unix timestamp in milliseconds, or `null`. */
|
|
2366
|
+
revoked_at: number | null;
|
|
2367
|
+
source: string;
|
|
2368
|
+
};
|
|
2369
|
+
/** @description Everything the workspace holds about the signed-in contact (GDPR Art. 15). */
|
|
2370
|
+
PortalExport: {
|
|
2371
|
+
/** @description Unix timestamp in milliseconds. */
|
|
2372
|
+
exported_at: number;
|
|
2373
|
+
contact: components["schemas"]["PortalProfile"];
|
|
2374
|
+
family: components["schemas"]["PortalFamilyMember"][];
|
|
2375
|
+
consents: components["schemas"]["PortalConsentRecord"][];
|
|
2376
|
+
bookings: components["schemas"]["PortalBooking"][];
|
|
2377
|
+
};
|
|
2378
|
+
Envelope_PortalLoginStartResult: {
|
|
2379
|
+
data: components["schemas"]["PortalLoginStartResult"];
|
|
2380
|
+
};
|
|
2381
|
+
Envelope_PortalSession: {
|
|
2382
|
+
data: components["schemas"]["PortalSession"];
|
|
2383
|
+
};
|
|
2384
|
+
Envelope_PortalProfile: {
|
|
2385
|
+
data: components["schemas"]["PortalProfile"];
|
|
2386
|
+
};
|
|
2387
|
+
Envelope_PortalBookings: {
|
|
2388
|
+
data: components["schemas"]["PortalBookings"];
|
|
2389
|
+
};
|
|
2390
|
+
Envelope_PortalExport: {
|
|
2391
|
+
data: components["schemas"]["PortalExport"];
|
|
2392
|
+
};
|
|
2393
|
+
/** @description Provide exactly one of `url`, `orgnr`, or `name`. */
|
|
2394
|
+
ScanCreateInput: {
|
|
2395
|
+
url?: string;
|
|
2396
|
+
orgnr?: string;
|
|
2397
|
+
name?: string;
|
|
2398
|
+
} & (unknown | unknown | unknown);
|
|
2399
|
+
ScanCreateResult: {
|
|
2400
|
+
id: string;
|
|
2401
|
+
status: string;
|
|
2402
|
+
message?: string;
|
|
2403
|
+
};
|
|
2404
|
+
ScanCompany: {
|
|
2405
|
+
orgnr: string;
|
|
2406
|
+
name: string;
|
|
2407
|
+
org_form: string | null;
|
|
2408
|
+
industry: string | null;
|
|
2409
|
+
city: string | null;
|
|
2410
|
+
website: string | null;
|
|
2411
|
+
};
|
|
2412
|
+
ScanJob: {
|
|
2413
|
+
id: string;
|
|
2414
|
+
/** @description pending | running | done | failed */
|
|
2415
|
+
status: string;
|
|
2416
|
+
input: components["schemas"]["ScanCreateInput"];
|
|
2417
|
+
resolved: {
|
|
2418
|
+
orgnr?: string;
|
|
2419
|
+
companyName?: string;
|
|
2420
|
+
websiteUrl?: string;
|
|
2421
|
+
} | null;
|
|
2422
|
+
/** @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. */
|
|
2423
|
+
result: ({
|
|
2424
|
+
version: number;
|
|
2425
|
+
/** @description Weighted composite score (0-100); null when unmeasurable. */
|
|
2426
|
+
nettskaar: number | null;
|
|
2427
|
+
/** @description Per-axis 0-100 scores; null axes were unmeasurable. */
|
|
2428
|
+
subScores: {
|
|
2429
|
+
fart: number | null;
|
|
2430
|
+
google: number | null;
|
|
2431
|
+
ai: number | null;
|
|
2432
|
+
trygghet: number | null;
|
|
2433
|
+
omdomme: number | null;
|
|
2434
|
+
};
|
|
2435
|
+
} & {
|
|
2436
|
+
[key: string]: unknown;
|
|
2437
|
+
}) | null;
|
|
2438
|
+
/** @description Public-safe failure code (company_not_found, no_website, …). */
|
|
2439
|
+
error: string | null;
|
|
2440
|
+
/** Format: date-time */
|
|
2441
|
+
created_at: string | null;
|
|
2442
|
+
/** Format: date-time */
|
|
2443
|
+
finished_at: string | null;
|
|
2444
|
+
};
|
|
2445
|
+
Envelope_ScanCreateResult: {
|
|
2446
|
+
data: components["schemas"]["ScanCreateResult"];
|
|
2447
|
+
};
|
|
2448
|
+
Envelope_ScanCompanyArray: {
|
|
2449
|
+
data: components["schemas"]["ScanCompany"][];
|
|
2450
|
+
};
|
|
2451
|
+
Envelope_ScanJob: {
|
|
2452
|
+
data: components["schemas"]["ScanJob"];
|
|
2453
|
+
};
|
|
2454
|
+
Envelope_GdprExportRequest: {
|
|
2455
|
+
data: components["schemas"]["GdprExportRequest"];
|
|
2456
|
+
};
|
|
2457
|
+
Envelope_GdprExportArray: {
|
|
2458
|
+
data: components["schemas"]["GdprExport"][];
|
|
2459
|
+
};
|
|
2460
|
+
Envelope_GdprExport: {
|
|
2461
|
+
data: components["schemas"]["GdprExport"];
|
|
2462
|
+
};
|
|
2463
|
+
Envelope_ConsentResult: {
|
|
2464
|
+
data: components["schemas"]["ConsentResult"];
|
|
2465
|
+
};
|
|
2466
|
+
Envelope_ConsentRecordArray: {
|
|
2467
|
+
data: components["schemas"]["ConsentRecord"][];
|
|
2468
|
+
};
|
|
2469
|
+
Envelope_WorkspaceArray: {
|
|
2470
|
+
data: components["schemas"]["Workspace"][];
|
|
2471
|
+
};
|
|
2472
|
+
Envelope_HelpdeskConversation: {
|
|
2473
|
+
data: components["schemas"]["HelpdeskConversation"];
|
|
2474
|
+
};
|
|
2475
|
+
Envelope_HelpdeskConversationUpdateResult: {
|
|
2476
|
+
data: components["schemas"]["HelpdeskConversationUpdateResult"];
|
|
2477
|
+
};
|
|
2478
|
+
Envelope_HelpdeskReplyCreateResult: {
|
|
2479
|
+
data: components["schemas"]["HelpdeskReplyCreateResult"];
|
|
2480
|
+
};
|
|
2481
|
+
Envelope_WebhookEndpoint: {
|
|
2482
|
+
data: components["schemas"]["WebhookEndpoint"];
|
|
2483
|
+
};
|
|
2484
|
+
Envelope_WebhookEndpointArray: {
|
|
2485
|
+
data: components["schemas"]["WebhookEndpoint"][];
|
|
2486
|
+
};
|
|
2487
|
+
Envelope_WebhookDeleteResult: {
|
|
2488
|
+
data: components["schemas"]["WebhookDeleteResult"];
|
|
1539
2489
|
};
|
|
1540
|
-
|
|
1541
|
-
|
|
1542
|
-
|
|
2490
|
+
IssueCapabilityConfirmationInput: {
|
|
2491
|
+
/** @description Confirmable capability to mint a token for. */
|
|
2492
|
+
capability_id: string;
|
|
2493
|
+
/** @description Concrete `/api/v1/...` path to bind the token to. Optional when the capability has exactly one API target; required when it has several. */
|
|
2494
|
+
api_path?: string;
|
|
2495
|
+
/** @description Values for the capability path template's parameters. */
|
|
2496
|
+
path_params?: {
|
|
2497
|
+
[key: string]: string | number | boolean;
|
|
2498
|
+
};
|
|
2499
|
+
/** @description The exact `Idempotency-Key` the confirmed write will send. The token is bound to it. */
|
|
2500
|
+
idempotency_key?: string;
|
|
2501
|
+
/** @description Human-readable description of the approved action, retained for audit. */
|
|
2502
|
+
preview_summary: string;
|
|
2503
|
+
/**
|
|
2504
|
+
* @description Asserts that a human on the caller's side approved this specific action.
|
|
2505
|
+
* @constant
|
|
2506
|
+
*/
|
|
2507
|
+
user_approved: true;
|
|
1543
2508
|
};
|
|
1544
|
-
|
|
1545
|
-
|
|
1546
|
-
|
|
2509
|
+
CapabilityConfirmation: {
|
|
2510
|
+
/** @description Send as the `X-Capability-Confirmation` header on the write. */
|
|
2511
|
+
confirmation_token: string;
|
|
2512
|
+
/** @constant */
|
|
2513
|
+
token_type: "medal_capability_confirmation";
|
|
2514
|
+
capability_id: string;
|
|
2515
|
+
method: string;
|
|
2516
|
+
path: string;
|
|
2517
|
+
required_scopes: string[];
|
|
2518
|
+
idempotency_key: string | null;
|
|
2519
|
+
expires_in: number;
|
|
2520
|
+
/** Format: date-time */
|
|
2521
|
+
expires_at: string;
|
|
2522
|
+
preview_summary: string;
|
|
1547
2523
|
};
|
|
1548
|
-
|
|
1549
|
-
|
|
1550
|
-
|
|
2524
|
+
ApiResponse_CapabilityConfirmation: components["schemas"]["Envelope_CapabilityConfirmation"];
|
|
2525
|
+
Envelope_CapabilityConfirmation: {
|
|
2526
|
+
data: components["schemas"]["CapabilityConfirmation"];
|
|
1551
2527
|
};
|
|
1552
|
-
|
|
1553
|
-
data: components["schemas"]["
|
|
1554
|
-
pagination: components["schemas"]["Pagination"];
|
|
2528
|
+
Envelope_WebhookDeliveryArray: {
|
|
2529
|
+
data: components["schemas"]["WebhookDelivery"][];
|
|
1555
2530
|
};
|
|
1556
|
-
|
|
1557
|
-
data: components["schemas"]["
|
|
1558
|
-
pagination: components["schemas"]["Pagination"];
|
|
2531
|
+
Envelope_WebhookTestResult: {
|
|
2532
|
+
data: components["schemas"]["WebhookTestResult"];
|
|
1559
2533
|
};
|
|
1560
|
-
|
|
1561
|
-
data: components["schemas"]["
|
|
2534
|
+
Envelope_ConnectLinkCreateResult: {
|
|
2535
|
+
data: components["schemas"]["ConnectLinkCreateResult"];
|
|
1562
2536
|
};
|
|
1563
|
-
|
|
1564
|
-
|
|
2537
|
+
/**
|
|
2538
|
+
* @deprecated
|
|
2539
|
+
* @description Deprecated — `listChannelConnectLinks` responds with `PaginatedResponse_ConnectLink`. Retained for backwards compatibility with consumers of the generated contract types.
|
|
2540
|
+
*/
|
|
2541
|
+
Envelope_ConnectLinkArray: {
|
|
2542
|
+
data: components["schemas"]["ConnectLink"][];
|
|
1565
2543
|
};
|
|
1566
|
-
|
|
1567
|
-
data: components["schemas"]["
|
|
2544
|
+
Envelope_ConnectLinkRevokeResult: {
|
|
2545
|
+
data: components["schemas"]["ConnectLinkRevokeResult"];
|
|
1568
2546
|
};
|
|
1569
|
-
|
|
1570
|
-
|
|
2547
|
+
/**
|
|
2548
|
+
* @deprecated
|
|
2549
|
+
* @description Deprecated — `listChannelConnections` responds with `PaginatedResponse_ChannelConnection`. Retained for backwards compatibility with consumers of the generated contract types.
|
|
2550
|
+
*/
|
|
2551
|
+
Envelope_ChannelConnectionArray: {
|
|
2552
|
+
data: components["schemas"]["ChannelConnection"][];
|
|
1571
2553
|
};
|
|
1572
|
-
|
|
1573
|
-
data: components["schemas"]["
|
|
2554
|
+
Envelope_ChannelConnectionDisconnectResult: {
|
|
2555
|
+
data: components["schemas"]["ChannelConnectionDisconnectResult"];
|
|
1574
2556
|
};
|
|
1575
|
-
|
|
1576
|
-
|
|
2557
|
+
};
|
|
2558
|
+
responses: {
|
|
2559
|
+
/** @description API error. */
|
|
2560
|
+
ApiError: {
|
|
2561
|
+
headers: {
|
|
2562
|
+
[name: string]: unknown;
|
|
2563
|
+
};
|
|
2564
|
+
content: {
|
|
2565
|
+
"application/json": components["schemas"]["ApiError"];
|
|
2566
|
+
};
|
|
1577
2567
|
};
|
|
1578
|
-
|
|
1579
|
-
|
|
2568
|
+
};
|
|
2569
|
+
parameters: {
|
|
2570
|
+
Id: string;
|
|
2571
|
+
Slug: string;
|
|
2572
|
+
/** @description The show-once manage token handed out when the booking was created. Possession of it authorizes the customer's own cancel or reschedule. */
|
|
2573
|
+
ManageToken: string;
|
|
2574
|
+
/** @description The `session_token` returned by `verifyPortalLogin`. A bearer credential for ONE contact — the site's server keeps it in an HttpOnly cookie and forwards it here. Missing answers `401 PORTAL_SESSION_REQUIRED`; unknown, expired or revoked answers `401 PORTAL_SESSION_INVALID`. */
|
|
2575
|
+
PortalSession: string;
|
|
2576
|
+
Cursor: string;
|
|
2577
|
+
Limit: number;
|
|
2578
|
+
};
|
|
2579
|
+
requestBodies: never;
|
|
2580
|
+
headers: never;
|
|
2581
|
+
pathItems: never;
|
|
2582
|
+
}
|
|
2583
|
+
type $defs = Record<string, never>;
|
|
2584
|
+
interface operations {
|
|
2585
|
+
listPosts: {
|
|
2586
|
+
parameters: {
|
|
2587
|
+
query?: {
|
|
2588
|
+
limit?: components["parameters"]["Limit"];
|
|
2589
|
+
cursor?: components["parameters"]["Cursor"];
|
|
2590
|
+
status?: string;
|
|
2591
|
+
type?: components["schemas"]["PostType"];
|
|
2592
|
+
};
|
|
2593
|
+
header?: never;
|
|
2594
|
+
path?: never;
|
|
2595
|
+
cookie?: never;
|
|
1580
2596
|
};
|
|
1581
|
-
|
|
1582
|
-
|
|
2597
|
+
requestBody?: never;
|
|
2598
|
+
responses: {
|
|
2599
|
+
/** @description Posts page. */
|
|
2600
|
+
200: {
|
|
2601
|
+
headers: {
|
|
2602
|
+
[name: string]: unknown;
|
|
2603
|
+
};
|
|
2604
|
+
content: {
|
|
2605
|
+
"application/json": components["schemas"]["PaginatedResponse_Post"];
|
|
2606
|
+
};
|
|
2607
|
+
};
|
|
2608
|
+
default: components["responses"]["ApiError"];
|
|
1583
2609
|
};
|
|
1584
|
-
|
|
1585
|
-
|
|
2610
|
+
};
|
|
2611
|
+
createPost: {
|
|
2612
|
+
parameters: {
|
|
2613
|
+
query?: never;
|
|
2614
|
+
header?: never;
|
|
2615
|
+
path?: never;
|
|
2616
|
+
cookie?: never;
|
|
1586
2617
|
};
|
|
1587
|
-
|
|
1588
|
-
|
|
2618
|
+
requestBody: {
|
|
2619
|
+
content: {
|
|
2620
|
+
"application/json": components["schemas"]["CreatePostInput"];
|
|
2621
|
+
};
|
|
1589
2622
|
};
|
|
1590
|
-
|
|
1591
|
-
|
|
2623
|
+
responses: {
|
|
2624
|
+
/** @description Created post reference. */
|
|
2625
|
+
200: {
|
|
2626
|
+
headers: {
|
|
2627
|
+
[name: string]: unknown;
|
|
2628
|
+
};
|
|
2629
|
+
content: {
|
|
2630
|
+
"application/json": components["schemas"]["ApiResponse_PostCreateResult"];
|
|
2631
|
+
};
|
|
2632
|
+
};
|
|
2633
|
+
default: components["responses"]["ApiError"];
|
|
1592
2634
|
};
|
|
1593
|
-
|
|
1594
|
-
|
|
2635
|
+
};
|
|
2636
|
+
listPostChannels: {
|
|
2637
|
+
parameters: {
|
|
2638
|
+
query?: never;
|
|
2639
|
+
header?: never;
|
|
2640
|
+
path?: never;
|
|
2641
|
+
cookie?: never;
|
|
1595
2642
|
};
|
|
1596
|
-
|
|
1597
|
-
|
|
2643
|
+
requestBody?: never;
|
|
2644
|
+
responses: {
|
|
2645
|
+
/** @description Connected channels. */
|
|
2646
|
+
200: {
|
|
2647
|
+
headers: {
|
|
2648
|
+
[name: string]: unknown;
|
|
2649
|
+
};
|
|
2650
|
+
content: {
|
|
2651
|
+
"application/json": components["schemas"]["ApiResponse_ChannelArray"];
|
|
2652
|
+
};
|
|
2653
|
+
};
|
|
2654
|
+
default: components["responses"]["ApiError"];
|
|
1598
2655
|
};
|
|
1599
|
-
|
|
1600
|
-
|
|
2656
|
+
};
|
|
2657
|
+
getPost: {
|
|
2658
|
+
parameters: {
|
|
2659
|
+
query?: never;
|
|
2660
|
+
header?: never;
|
|
2661
|
+
path: {
|
|
2662
|
+
id: components["parameters"]["Id"];
|
|
2663
|
+
};
|
|
2664
|
+
cookie?: never;
|
|
1601
2665
|
};
|
|
1602
|
-
|
|
1603
|
-
|
|
2666
|
+
requestBody?: never;
|
|
2667
|
+
responses: {
|
|
2668
|
+
/** @description Post detail. */
|
|
2669
|
+
200: {
|
|
2670
|
+
headers: {
|
|
2671
|
+
[name: string]: unknown;
|
|
2672
|
+
};
|
|
2673
|
+
content: {
|
|
2674
|
+
"application/json": components["schemas"]["ApiResponse_PostDetail"];
|
|
2675
|
+
};
|
|
2676
|
+
};
|
|
2677
|
+
default: components["responses"]["ApiError"];
|
|
1604
2678
|
};
|
|
1605
|
-
|
|
1606
|
-
|
|
2679
|
+
};
|
|
2680
|
+
deletePost: {
|
|
2681
|
+
parameters: {
|
|
2682
|
+
query?: never;
|
|
2683
|
+
header?: never;
|
|
2684
|
+
path: {
|
|
2685
|
+
id: components["parameters"]["Id"];
|
|
2686
|
+
};
|
|
2687
|
+
cookie?: never;
|
|
1607
2688
|
};
|
|
1608
|
-
|
|
1609
|
-
|
|
2689
|
+
requestBody?: never;
|
|
2690
|
+
responses: {
|
|
2691
|
+
/** @description Delete result. */
|
|
2692
|
+
200: {
|
|
2693
|
+
headers: {
|
|
2694
|
+
[name: string]: unknown;
|
|
2695
|
+
};
|
|
2696
|
+
content: {
|
|
2697
|
+
"application/json": components["schemas"]["ApiResponse_Success"];
|
|
2698
|
+
};
|
|
2699
|
+
};
|
|
2700
|
+
default: components["responses"]["ApiError"];
|
|
1610
2701
|
};
|
|
1611
|
-
|
|
1612
|
-
|
|
2702
|
+
};
|
|
2703
|
+
updatePost: {
|
|
2704
|
+
parameters: {
|
|
2705
|
+
query?: never;
|
|
2706
|
+
header?: never;
|
|
2707
|
+
path: {
|
|
2708
|
+
id: components["parameters"]["Id"];
|
|
2709
|
+
};
|
|
2710
|
+
cookie?: never;
|
|
2711
|
+
};
|
|
2712
|
+
requestBody: {
|
|
2713
|
+
content: {
|
|
2714
|
+
"application/json": components["schemas"]["UpdatePostInput"];
|
|
2715
|
+
};
|
|
1613
2716
|
};
|
|
1614
|
-
|
|
1615
|
-
|
|
2717
|
+
responses: {
|
|
2718
|
+
/** @description Update result. */
|
|
2719
|
+
200: {
|
|
2720
|
+
headers: {
|
|
2721
|
+
[name: string]: unknown;
|
|
2722
|
+
};
|
|
2723
|
+
content: {
|
|
2724
|
+
"application/json": components["schemas"]["ApiResponse_Success"];
|
|
2725
|
+
};
|
|
2726
|
+
};
|
|
2727
|
+
default: components["responses"]["ApiError"];
|
|
1616
2728
|
};
|
|
1617
|
-
|
|
1618
|
-
|
|
2729
|
+
};
|
|
2730
|
+
schedulePost: {
|
|
2731
|
+
parameters: {
|
|
2732
|
+
query?: never;
|
|
2733
|
+
header?: never;
|
|
2734
|
+
path: {
|
|
2735
|
+
id: components["parameters"]["Id"];
|
|
2736
|
+
};
|
|
2737
|
+
cookie?: never;
|
|
1619
2738
|
};
|
|
1620
|
-
|
|
1621
|
-
|
|
2739
|
+
requestBody: {
|
|
2740
|
+
content: {
|
|
2741
|
+
"application/json": components["schemas"]["SchedulePostInput"];
|
|
2742
|
+
};
|
|
1622
2743
|
};
|
|
1623
|
-
|
|
1624
|
-
|
|
1625
|
-
|
|
1626
|
-
|
|
1627
|
-
|
|
1628
|
-
|
|
1629
|
-
|
|
1630
|
-
|
|
1631
|
-
|
|
1632
|
-
|
|
2744
|
+
responses: {
|
|
2745
|
+
/** @description Schedule result. */
|
|
2746
|
+
200: {
|
|
2747
|
+
headers: {
|
|
2748
|
+
[name: string]: unknown;
|
|
2749
|
+
};
|
|
2750
|
+
content: {
|
|
2751
|
+
"application/json": components["schemas"]["ApiResponse_ScheduleResult"];
|
|
2752
|
+
};
|
|
2753
|
+
};
|
|
2754
|
+
default: components["responses"]["ApiError"];
|
|
1633
2755
|
};
|
|
1634
|
-
|
|
1635
|
-
|
|
1636
|
-
|
|
1637
|
-
|
|
1638
|
-
|
|
1639
|
-
|
|
1640
|
-
|
|
2756
|
+
};
|
|
2757
|
+
publishPost: {
|
|
2758
|
+
parameters: {
|
|
2759
|
+
query?: never;
|
|
2760
|
+
header?: never;
|
|
2761
|
+
path: {
|
|
2762
|
+
id: components["parameters"]["Id"];
|
|
2763
|
+
};
|
|
2764
|
+
cookie?: never;
|
|
1641
2765
|
};
|
|
1642
|
-
|
|
1643
|
-
|
|
1644
|
-
/** @description
|
|
1645
|
-
|
|
1646
|
-
|
|
1647
|
-
|
|
1648
|
-
orgnr?: string;
|
|
1649
|
-
companyName?: string;
|
|
1650
|
-
websiteUrl?: string;
|
|
1651
|
-
} | null;
|
|
1652
|
-
/** @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. */
|
|
1653
|
-
result: ({
|
|
1654
|
-
version: number;
|
|
1655
|
-
/** @description Weighted composite score (0-100); null when unmeasurable. */
|
|
1656
|
-
nettskaar: number | null;
|
|
1657
|
-
/** @description Per-axis 0-100 scores; null axes were unmeasurable. */
|
|
1658
|
-
subScores: {
|
|
1659
|
-
fart: number | null;
|
|
1660
|
-
google: number | null;
|
|
1661
|
-
ai: number | null;
|
|
1662
|
-
trygghet: number | null;
|
|
1663
|
-
omdomme: number | null;
|
|
2766
|
+
requestBody?: never;
|
|
2767
|
+
responses: {
|
|
2768
|
+
/** @description Publish result. */
|
|
2769
|
+
200: {
|
|
2770
|
+
headers: {
|
|
2771
|
+
[name: string]: unknown;
|
|
1664
2772
|
};
|
|
1665
|
-
|
|
1666
|
-
|
|
1667
|
-
|
|
1668
|
-
|
|
1669
|
-
|
|
1670
|
-
/** Format: date-time */
|
|
1671
|
-
created_at: string | null;
|
|
1672
|
-
/** Format: date-time */
|
|
1673
|
-
finished_at: string | null;
|
|
2773
|
+
content: {
|
|
2774
|
+
"application/json": components["schemas"]["ApiResponse_PublishResult"];
|
|
2775
|
+
};
|
|
2776
|
+
};
|
|
2777
|
+
default: components["responses"]["ApiError"];
|
|
1674
2778
|
};
|
|
1675
|
-
|
|
1676
|
-
|
|
2779
|
+
};
|
|
2780
|
+
sendEmail: {
|
|
2781
|
+
parameters: {
|
|
2782
|
+
query?: never;
|
|
2783
|
+
header?: never;
|
|
2784
|
+
path?: never;
|
|
2785
|
+
cookie?: never;
|
|
1677
2786
|
};
|
|
1678
|
-
|
|
1679
|
-
|
|
2787
|
+
requestBody: {
|
|
2788
|
+
content: {
|
|
2789
|
+
"application/json": components["schemas"]["SendEmailInput"];
|
|
2790
|
+
};
|
|
1680
2791
|
};
|
|
1681
|
-
|
|
1682
|
-
|
|
2792
|
+
responses: {
|
|
2793
|
+
/** @description Email queued. */
|
|
2794
|
+
202: {
|
|
2795
|
+
headers: {
|
|
2796
|
+
[name: string]: unknown;
|
|
2797
|
+
};
|
|
2798
|
+
content: {
|
|
2799
|
+
"application/json": components["schemas"]["ApiResponse_EmailSendResult"];
|
|
2800
|
+
};
|
|
2801
|
+
};
|
|
2802
|
+
default: components["responses"]["ApiError"];
|
|
1683
2803
|
};
|
|
1684
|
-
|
|
1685
|
-
|
|
2804
|
+
};
|
|
2805
|
+
batchSendEmails: {
|
|
2806
|
+
parameters: {
|
|
2807
|
+
query?: never;
|
|
2808
|
+
header?: never;
|
|
2809
|
+
path?: never;
|
|
2810
|
+
cookie?: never;
|
|
1686
2811
|
};
|
|
1687
|
-
|
|
1688
|
-
|
|
2812
|
+
requestBody: {
|
|
2813
|
+
content: {
|
|
2814
|
+
"application/json": components["schemas"]["BatchSendInput"];
|
|
2815
|
+
};
|
|
1689
2816
|
};
|
|
1690
|
-
|
|
1691
|
-
|
|
2817
|
+
responses: {
|
|
2818
|
+
/** @description Batch queued. */
|
|
2819
|
+
202: {
|
|
2820
|
+
headers: {
|
|
2821
|
+
[name: string]: unknown;
|
|
2822
|
+
};
|
|
2823
|
+
content: {
|
|
2824
|
+
"application/json": components["schemas"]["ApiResponse_BatchSendSummary"];
|
|
2825
|
+
};
|
|
2826
|
+
};
|
|
2827
|
+
default: components["responses"]["ApiError"];
|
|
1692
2828
|
};
|
|
1693
|
-
|
|
1694
|
-
|
|
2829
|
+
};
|
|
2830
|
+
listEmailTemplates: {
|
|
2831
|
+
parameters: {
|
|
2832
|
+
query?: never;
|
|
2833
|
+
header?: never;
|
|
2834
|
+
path?: never;
|
|
2835
|
+
cookie?: never;
|
|
1695
2836
|
};
|
|
1696
|
-
|
|
1697
|
-
|
|
2837
|
+
requestBody?: never;
|
|
2838
|
+
responses: {
|
|
2839
|
+
/** @description Active templates. */
|
|
2840
|
+
200: {
|
|
2841
|
+
headers: {
|
|
2842
|
+
[name: string]: unknown;
|
|
2843
|
+
};
|
|
2844
|
+
content: {
|
|
2845
|
+
"application/json": components["schemas"]["ApiResponse_EmailTemplateArray"];
|
|
2846
|
+
};
|
|
2847
|
+
};
|
|
2848
|
+
default: components["responses"]["ApiError"];
|
|
1698
2849
|
};
|
|
1699
|
-
|
|
1700
|
-
|
|
2850
|
+
};
|
|
2851
|
+
getEmailTemplate: {
|
|
2852
|
+
parameters: {
|
|
2853
|
+
query?: {
|
|
2854
|
+
locale?: string;
|
|
2855
|
+
fallback_locale?: string;
|
|
2856
|
+
};
|
|
2857
|
+
header?: never;
|
|
2858
|
+
path: {
|
|
2859
|
+
slug: components["parameters"]["Slug"];
|
|
2860
|
+
};
|
|
2861
|
+
cookie?: never;
|
|
1701
2862
|
};
|
|
1702
|
-
|
|
1703
|
-
|
|
2863
|
+
requestBody?: never;
|
|
2864
|
+
responses: {
|
|
2865
|
+
/** @description Email template detail. */
|
|
2866
|
+
200: {
|
|
2867
|
+
headers: {
|
|
2868
|
+
[name: string]: unknown;
|
|
2869
|
+
};
|
|
2870
|
+
content: {
|
|
2871
|
+
"application/json": components["schemas"]["ApiResponse_EmailTemplateDetail"];
|
|
2872
|
+
};
|
|
2873
|
+
};
|
|
2874
|
+
default: components["responses"]["ApiError"];
|
|
1704
2875
|
};
|
|
1705
|
-
|
|
1706
|
-
|
|
2876
|
+
};
|
|
2877
|
+
getEmailSend: {
|
|
2878
|
+
parameters: {
|
|
2879
|
+
query?: never;
|
|
2880
|
+
header?: never;
|
|
2881
|
+
path: {
|
|
2882
|
+
id: components["parameters"]["Id"];
|
|
2883
|
+
};
|
|
2884
|
+
cookie?: never;
|
|
1707
2885
|
};
|
|
1708
|
-
|
|
1709
|
-
|
|
2886
|
+
requestBody?: never;
|
|
2887
|
+
responses: {
|
|
2888
|
+
/** @description Sent email status. */
|
|
2889
|
+
200: {
|
|
2890
|
+
headers: {
|
|
2891
|
+
[name: string]: unknown;
|
|
2892
|
+
};
|
|
2893
|
+
content: {
|
|
2894
|
+
"application/json": components["schemas"]["ApiResponse_EmailSend"];
|
|
2895
|
+
};
|
|
2896
|
+
};
|
|
2897
|
+
default: components["responses"]["ApiError"];
|
|
1710
2898
|
};
|
|
1711
|
-
|
|
1712
|
-
|
|
2899
|
+
};
|
|
2900
|
+
listContacts: {
|
|
2901
|
+
parameters: {
|
|
2902
|
+
query?: {
|
|
2903
|
+
limit?: components["parameters"]["Limit"];
|
|
2904
|
+
cursor?: components["parameters"]["Cursor"];
|
|
2905
|
+
status?: components["schemas"]["ContactStatus"];
|
|
2906
|
+
email_status?: components["schemas"]["EmailStatus"];
|
|
2907
|
+
/** @description Comma-separated label IDs. */
|
|
2908
|
+
label_ids?: string;
|
|
2909
|
+
search?: string;
|
|
2910
|
+
};
|
|
2911
|
+
header?: never;
|
|
2912
|
+
path?: never;
|
|
2913
|
+
cookie?: never;
|
|
1713
2914
|
};
|
|
1714
|
-
|
|
1715
|
-
|
|
2915
|
+
requestBody?: never;
|
|
2916
|
+
responses: {
|
|
2917
|
+
/** @description Contacts page. */
|
|
2918
|
+
200: {
|
|
2919
|
+
headers: {
|
|
2920
|
+
[name: string]: unknown;
|
|
2921
|
+
};
|
|
2922
|
+
content: {
|
|
2923
|
+
"application/json": components["schemas"]["PaginatedResponse_Contact"];
|
|
2924
|
+
};
|
|
2925
|
+
};
|
|
2926
|
+
default: components["responses"]["ApiError"];
|
|
1716
2927
|
};
|
|
1717
|
-
|
|
1718
|
-
|
|
2928
|
+
};
|
|
2929
|
+
createContact: {
|
|
2930
|
+
parameters: {
|
|
2931
|
+
query?: never;
|
|
2932
|
+
header?: never;
|
|
2933
|
+
path?: never;
|
|
2934
|
+
cookie?: never;
|
|
1719
2935
|
};
|
|
1720
|
-
|
|
1721
|
-
|
|
1722
|
-
|
|
1723
|
-
/** @description Concrete `/api/v1/...` path to bind the token to. Optional when the capability has exactly one API target; required when it has several. */
|
|
1724
|
-
api_path?: string;
|
|
1725
|
-
/** @description Values for the capability path template's parameters. */
|
|
1726
|
-
path_params?: {
|
|
1727
|
-
[key: string]: string | number | boolean;
|
|
2936
|
+
requestBody: {
|
|
2937
|
+
content: {
|
|
2938
|
+
"application/json": components["schemas"]["CreateContactInput"];
|
|
1728
2939
|
};
|
|
1729
|
-
/** @description The exact `Idempotency-Key` the confirmed write will send. The token is bound to it. */
|
|
1730
|
-
idempotency_key?: string;
|
|
1731
|
-
/** @description Human-readable description of the approved action, retained for audit. */
|
|
1732
|
-
preview_summary: string;
|
|
1733
|
-
/**
|
|
1734
|
-
* @description Asserts that a human on the caller's side approved this specific action.
|
|
1735
|
-
* @constant
|
|
1736
|
-
*/
|
|
1737
|
-
user_approved: true;
|
|
1738
|
-
};
|
|
1739
|
-
CapabilityConfirmation: {
|
|
1740
|
-
/** @description Send as the `X-Capability-Confirmation` header on the write. */
|
|
1741
|
-
confirmation_token: string;
|
|
1742
|
-
/** @constant */
|
|
1743
|
-
token_type: "medal_capability_confirmation";
|
|
1744
|
-
capability_id: string;
|
|
1745
|
-
method: string;
|
|
1746
|
-
path: string;
|
|
1747
|
-
required_scopes: string[];
|
|
1748
|
-
idempotency_key: string | null;
|
|
1749
|
-
expires_in: number;
|
|
1750
|
-
/** Format: date-time */
|
|
1751
|
-
expires_at: string;
|
|
1752
|
-
preview_summary: string;
|
|
1753
2940
|
};
|
|
1754
|
-
|
|
1755
|
-
|
|
1756
|
-
|
|
2941
|
+
responses: {
|
|
2942
|
+
/** @description Created contact reference. */
|
|
2943
|
+
200: {
|
|
2944
|
+
headers: {
|
|
2945
|
+
[name: string]: unknown;
|
|
2946
|
+
};
|
|
2947
|
+
content: {
|
|
2948
|
+
"application/json": components["schemas"]["ApiResponse_ContactCreateResult"];
|
|
2949
|
+
};
|
|
2950
|
+
};
|
|
2951
|
+
default: components["responses"]["ApiError"];
|
|
1757
2952
|
};
|
|
1758
|
-
|
|
1759
|
-
|
|
2953
|
+
};
|
|
2954
|
+
importContacts: {
|
|
2955
|
+
parameters: {
|
|
2956
|
+
query?: never;
|
|
2957
|
+
header?: never;
|
|
2958
|
+
path?: never;
|
|
2959
|
+
cookie?: never;
|
|
1760
2960
|
};
|
|
1761
|
-
|
|
1762
|
-
|
|
2961
|
+
requestBody: {
|
|
2962
|
+
content: {
|
|
2963
|
+
"application/json": {
|
|
2964
|
+
contacts: components["schemas"]["ImportContactInput"][];
|
|
2965
|
+
};
|
|
2966
|
+
};
|
|
1763
2967
|
};
|
|
1764
|
-
|
|
1765
|
-
|
|
2968
|
+
responses: {
|
|
2969
|
+
/** @description Import summary. */
|
|
2970
|
+
200: {
|
|
2971
|
+
headers: {
|
|
2972
|
+
[name: string]: unknown;
|
|
2973
|
+
};
|
|
2974
|
+
content: {
|
|
2975
|
+
"application/json": components["schemas"]["ApiResponse_ImportContactsResult"];
|
|
2976
|
+
};
|
|
2977
|
+
};
|
|
2978
|
+
default: components["responses"]["ApiError"];
|
|
1766
2979
|
};
|
|
1767
|
-
|
|
1768
|
-
|
|
1769
|
-
|
|
1770
|
-
|
|
1771
|
-
|
|
1772
|
-
|
|
2980
|
+
};
|
|
2981
|
+
getContact: {
|
|
2982
|
+
parameters: {
|
|
2983
|
+
query?: never;
|
|
2984
|
+
header?: never;
|
|
2985
|
+
path: {
|
|
2986
|
+
id: components["parameters"]["Id"];
|
|
2987
|
+
};
|
|
2988
|
+
cookie?: never;
|
|
1773
2989
|
};
|
|
1774
|
-
|
|
1775
|
-
|
|
2990
|
+
requestBody?: never;
|
|
2991
|
+
responses: {
|
|
2992
|
+
/** @description Contact. */
|
|
2993
|
+
200: {
|
|
2994
|
+
headers: {
|
|
2995
|
+
[name: string]: unknown;
|
|
2996
|
+
};
|
|
2997
|
+
content: {
|
|
2998
|
+
"application/json": components["schemas"]["ApiResponse_Contact"];
|
|
2999
|
+
};
|
|
3000
|
+
};
|
|
3001
|
+
default: components["responses"]["ApiError"];
|
|
1776
3002
|
};
|
|
1777
|
-
|
|
1778
|
-
|
|
1779
|
-
|
|
1780
|
-
|
|
1781
|
-
|
|
1782
|
-
|
|
3003
|
+
};
|
|
3004
|
+
deleteContact: {
|
|
3005
|
+
parameters: {
|
|
3006
|
+
query?: never;
|
|
3007
|
+
header?: never;
|
|
3008
|
+
path: {
|
|
3009
|
+
id: components["parameters"]["Id"];
|
|
3010
|
+
};
|
|
3011
|
+
cookie?: never;
|
|
1783
3012
|
};
|
|
1784
|
-
|
|
1785
|
-
|
|
3013
|
+
requestBody?: never;
|
|
3014
|
+
responses: {
|
|
3015
|
+
/** @description Delete result. */
|
|
3016
|
+
200: {
|
|
3017
|
+
headers: {
|
|
3018
|
+
[name: string]: unknown;
|
|
3019
|
+
};
|
|
3020
|
+
content: {
|
|
3021
|
+
"application/json": components["schemas"]["ApiResponse_ContactRemoveResult"];
|
|
3022
|
+
};
|
|
3023
|
+
};
|
|
3024
|
+
default: components["responses"]["ApiError"];
|
|
1786
3025
|
};
|
|
1787
3026
|
};
|
|
1788
|
-
|
|
1789
|
-
|
|
1790
|
-
|
|
1791
|
-
|
|
1792
|
-
|
|
3027
|
+
updateContact: {
|
|
3028
|
+
parameters: {
|
|
3029
|
+
query?: never;
|
|
3030
|
+
header?: never;
|
|
3031
|
+
path: {
|
|
3032
|
+
id: components["parameters"]["Id"];
|
|
1793
3033
|
};
|
|
3034
|
+
cookie?: never;
|
|
3035
|
+
};
|
|
3036
|
+
requestBody: {
|
|
1794
3037
|
content: {
|
|
1795
|
-
"application/json": components["schemas"]["
|
|
3038
|
+
"application/json": components["schemas"]["UpdateContactInput"];
|
|
1796
3039
|
};
|
|
1797
3040
|
};
|
|
3041
|
+
responses: {
|
|
3042
|
+
/** @description Update result. */
|
|
3043
|
+
200: {
|
|
3044
|
+
headers: {
|
|
3045
|
+
[name: string]: unknown;
|
|
3046
|
+
};
|
|
3047
|
+
content: {
|
|
3048
|
+
"application/json": components["schemas"]["ApiResponse_ContactUpdateResult"];
|
|
3049
|
+
};
|
|
3050
|
+
};
|
|
3051
|
+
default: components["responses"]["ApiError"];
|
|
3052
|
+
};
|
|
1798
3053
|
};
|
|
1799
|
-
|
|
1800
|
-
Id: string;
|
|
1801
|
-
Slug: string;
|
|
1802
|
-
Cursor: string;
|
|
1803
|
-
Limit: number;
|
|
1804
|
-
};
|
|
1805
|
-
requestBodies: never;
|
|
1806
|
-
headers: never;
|
|
1807
|
-
pathItems: never;
|
|
1808
|
-
}
|
|
1809
|
-
type $defs = Record<string, never>;
|
|
1810
|
-
interface operations {
|
|
1811
|
-
listPosts: {
|
|
3054
|
+
listContactActivities: {
|
|
1812
3055
|
parameters: {
|
|
1813
3056
|
query?: {
|
|
1814
3057
|
limit?: components["parameters"]["Limit"];
|
|
1815
3058
|
cursor?: components["parameters"]["Cursor"];
|
|
1816
|
-
status?: string;
|
|
1817
|
-
type?: components["schemas"]["PostType"];
|
|
1818
3059
|
};
|
|
1819
3060
|
header?: never;
|
|
1820
|
-
path
|
|
3061
|
+
path: {
|
|
3062
|
+
id: components["parameters"]["Id"];
|
|
3063
|
+
};
|
|
1821
3064
|
cookie?: never;
|
|
1822
3065
|
};
|
|
1823
3066
|
requestBody?: never;
|
|
1824
3067
|
responses: {
|
|
1825
|
-
/** @description
|
|
3068
|
+
/** @description Contact activities page. */
|
|
1826
3069
|
200: {
|
|
1827
3070
|
headers: {
|
|
1828
3071
|
[name: string]: unknown;
|
|
1829
3072
|
};
|
|
1830
3073
|
content: {
|
|
1831
|
-
"application/json": components["schemas"]["
|
|
3074
|
+
"application/json": components["schemas"]["PaginatedResponse_Activity"];
|
|
1832
3075
|
};
|
|
1833
3076
|
};
|
|
1834
3077
|
default: components["responses"]["ApiError"];
|
|
1835
3078
|
};
|
|
1836
3079
|
};
|
|
1837
|
-
|
|
3080
|
+
addContactNote: {
|
|
1838
3081
|
parameters: {
|
|
1839
3082
|
query?: never;
|
|
1840
3083
|
header?: never;
|
|
1841
|
-
path
|
|
3084
|
+
path: {
|
|
3085
|
+
id: components["parameters"]["Id"];
|
|
3086
|
+
};
|
|
1842
3087
|
cookie?: never;
|
|
1843
3088
|
};
|
|
1844
3089
|
requestBody: {
|
|
1845
3090
|
content: {
|
|
1846
|
-
"application/json": components["schemas"]["
|
|
3091
|
+
"application/json": components["schemas"]["AddNoteInput"];
|
|
1847
3092
|
};
|
|
1848
3093
|
};
|
|
1849
3094
|
responses: {
|
|
1850
|
-
/** @description Created
|
|
3095
|
+
/** @description Created note reference. */
|
|
1851
3096
|
200: {
|
|
1852
3097
|
headers: {
|
|
1853
3098
|
[name: string]: unknown;
|
|
1854
3099
|
};
|
|
1855
3100
|
content: {
|
|
1856
|
-
"application/json": components["schemas"]["
|
|
3101
|
+
"application/json": components["schemas"]["ApiResponse_ContactNoteResult"];
|
|
1857
3102
|
};
|
|
1858
3103
|
};
|
|
1859
3104
|
default: components["responses"]["ApiError"];
|
|
1860
3105
|
};
|
|
1861
3106
|
};
|
|
1862
|
-
|
|
3107
|
+
listDeals: {
|
|
3108
|
+
parameters: {
|
|
3109
|
+
query?: {
|
|
3110
|
+
limit?: components["parameters"]["Limit"];
|
|
3111
|
+
cursor?: components["parameters"]["Cursor"];
|
|
3112
|
+
status?: components["schemas"]["DealStatus"];
|
|
3113
|
+
search?: string;
|
|
3114
|
+
};
|
|
3115
|
+
header?: never;
|
|
3116
|
+
path?: never;
|
|
3117
|
+
cookie?: never;
|
|
3118
|
+
};
|
|
3119
|
+
requestBody?: never;
|
|
3120
|
+
responses: {
|
|
3121
|
+
/** @description Deals page. */
|
|
3122
|
+
200: {
|
|
3123
|
+
headers: {
|
|
3124
|
+
[name: string]: unknown;
|
|
3125
|
+
};
|
|
3126
|
+
content: {
|
|
3127
|
+
"application/json": components["schemas"]["PaginatedResponse_Deal"];
|
|
3128
|
+
};
|
|
3129
|
+
};
|
|
3130
|
+
default: components["responses"]["ApiError"];
|
|
3131
|
+
};
|
|
3132
|
+
};
|
|
3133
|
+
createDeal: {
|
|
1863
3134
|
parameters: {
|
|
1864
3135
|
query?: never;
|
|
1865
3136
|
header?: never;
|
|
1866
3137
|
path?: never;
|
|
1867
3138
|
cookie?: never;
|
|
1868
3139
|
};
|
|
1869
|
-
requestBody
|
|
3140
|
+
requestBody: {
|
|
3141
|
+
content: {
|
|
3142
|
+
"application/json": components["schemas"]["CreateDealInput"];
|
|
3143
|
+
};
|
|
3144
|
+
};
|
|
1870
3145
|
responses: {
|
|
1871
|
-
/** @description
|
|
3146
|
+
/** @description Created deal reference. */
|
|
1872
3147
|
200: {
|
|
1873
3148
|
headers: {
|
|
1874
3149
|
[name: string]: unknown;
|
|
1875
3150
|
};
|
|
1876
3151
|
content: {
|
|
1877
|
-
"application/json": components["schemas"]["
|
|
3152
|
+
"application/json": components["schemas"]["ApiResponse_DealCreateResult"];
|
|
1878
3153
|
};
|
|
1879
3154
|
};
|
|
1880
3155
|
default: components["responses"]["ApiError"];
|
|
1881
3156
|
};
|
|
1882
3157
|
};
|
|
1883
|
-
|
|
3158
|
+
getDeal: {
|
|
1884
3159
|
parameters: {
|
|
1885
3160
|
query?: never;
|
|
1886
3161
|
header?: never;
|
|
@@ -1891,19 +3166,19 @@ interface operations {
|
|
|
1891
3166
|
};
|
|
1892
3167
|
requestBody?: never;
|
|
1893
3168
|
responses: {
|
|
1894
|
-
/** @description
|
|
3169
|
+
/** @description Deal. */
|
|
1895
3170
|
200: {
|
|
1896
3171
|
headers: {
|
|
1897
3172
|
[name: string]: unknown;
|
|
1898
3173
|
};
|
|
1899
3174
|
content: {
|
|
1900
|
-
"application/json": components["schemas"]["
|
|
3175
|
+
"application/json": components["schemas"]["ApiResponse_Deal"];
|
|
1901
3176
|
};
|
|
1902
3177
|
};
|
|
1903
3178
|
default: components["responses"]["ApiError"];
|
|
1904
3179
|
};
|
|
1905
3180
|
};
|
|
1906
|
-
|
|
3181
|
+
deleteDeal: {
|
|
1907
3182
|
parameters: {
|
|
1908
3183
|
query?: never;
|
|
1909
3184
|
header?: never;
|
|
@@ -1920,13 +3195,13 @@ interface operations {
|
|
|
1920
3195
|
[name: string]: unknown;
|
|
1921
3196
|
};
|
|
1922
3197
|
content: {
|
|
1923
|
-
"application/json": components["schemas"]["
|
|
3198
|
+
"application/json": components["schemas"]["ApiResponse_DealRemoveResult"];
|
|
1924
3199
|
};
|
|
1925
3200
|
};
|
|
1926
3201
|
default: components["responses"]["ApiError"];
|
|
1927
3202
|
};
|
|
1928
3203
|
};
|
|
1929
|
-
|
|
3204
|
+
updateDeal: {
|
|
1930
3205
|
parameters: {
|
|
1931
3206
|
query?: never;
|
|
1932
3207
|
header?: never;
|
|
@@ -1937,7 +3212,7 @@ interface operations {
|
|
|
1937
3212
|
};
|
|
1938
3213
|
requestBody: {
|
|
1939
3214
|
content: {
|
|
1940
|
-
"application/json": components["schemas"]["
|
|
3215
|
+
"application/json": components["schemas"]["UpdateDealInput"];
|
|
1941
3216
|
};
|
|
1942
3217
|
};
|
|
1943
3218
|
responses: {
|
|
@@ -1947,160 +3222,171 @@ interface operations {
|
|
|
1947
3222
|
[name: string]: unknown;
|
|
1948
3223
|
};
|
|
1949
3224
|
content: {
|
|
1950
|
-
"application/json": components["schemas"]["
|
|
3225
|
+
"application/json": components["schemas"]["ApiResponse_DealUpdateResult"];
|
|
1951
3226
|
};
|
|
1952
3227
|
};
|
|
1953
3228
|
default: components["responses"]["ApiError"];
|
|
1954
3229
|
};
|
|
1955
3230
|
};
|
|
1956
|
-
|
|
3231
|
+
listBookings: {
|
|
1957
3232
|
parameters: {
|
|
1958
|
-
query?:
|
|
1959
|
-
|
|
1960
|
-
|
|
1961
|
-
|
|
3233
|
+
query?: {
|
|
3234
|
+
limit?: components["parameters"]["Limit"];
|
|
3235
|
+
cursor?: components["parameters"]["Cursor"];
|
|
3236
|
+
/** @description Only bookings starting at or after this instant. */
|
|
3237
|
+
from_ts?: components["schemas"]["BookingTimestampInput"];
|
|
3238
|
+
/** @description Only bookings starting before this instant. */
|
|
3239
|
+
to_ts?: components["schemas"]["BookingTimestampInput"];
|
|
3240
|
+
status?: components["schemas"]["BookingStatus"];
|
|
3241
|
+
resource_id?: string;
|
|
1962
3242
|
};
|
|
3243
|
+
header?: never;
|
|
3244
|
+
path?: never;
|
|
1963
3245
|
cookie?: never;
|
|
1964
3246
|
};
|
|
1965
|
-
requestBody
|
|
1966
|
-
content: {
|
|
1967
|
-
"application/json": components["schemas"]["SchedulePostInput"];
|
|
1968
|
-
};
|
|
1969
|
-
};
|
|
3247
|
+
requestBody?: never;
|
|
1970
3248
|
responses: {
|
|
1971
|
-
/** @description
|
|
3249
|
+
/** @description Bookings page. */
|
|
1972
3250
|
200: {
|
|
1973
3251
|
headers: {
|
|
1974
3252
|
[name: string]: unknown;
|
|
1975
3253
|
};
|
|
1976
3254
|
content: {
|
|
1977
|
-
"application/json": components["schemas"]["
|
|
3255
|
+
"application/json": components["schemas"]["PaginatedResponse_Booking"];
|
|
1978
3256
|
};
|
|
1979
3257
|
};
|
|
1980
3258
|
default: components["responses"]["ApiError"];
|
|
1981
3259
|
};
|
|
1982
3260
|
};
|
|
1983
|
-
|
|
3261
|
+
createBooking: {
|
|
1984
3262
|
parameters: {
|
|
1985
3263
|
query?: never;
|
|
1986
3264
|
header?: never;
|
|
1987
|
-
path
|
|
1988
|
-
id: components["parameters"]["Id"];
|
|
1989
|
-
};
|
|
3265
|
+
path?: never;
|
|
1990
3266
|
cookie?: never;
|
|
1991
3267
|
};
|
|
1992
|
-
requestBody
|
|
3268
|
+
requestBody: {
|
|
3269
|
+
content: {
|
|
3270
|
+
"application/json": components["schemas"]["CreateBookingInput"];
|
|
3271
|
+
};
|
|
3272
|
+
};
|
|
1993
3273
|
responses: {
|
|
1994
|
-
/** @description
|
|
1995
|
-
|
|
3274
|
+
/** @description Created bookings, in request order. */
|
|
3275
|
+
201: {
|
|
1996
3276
|
headers: {
|
|
1997
3277
|
[name: string]: unknown;
|
|
1998
3278
|
};
|
|
1999
3279
|
content: {
|
|
2000
|
-
"application/json": components["schemas"]["
|
|
3280
|
+
"application/json": components["schemas"]["ApiResponse_BookingCreateResult"];
|
|
2001
3281
|
};
|
|
2002
3282
|
};
|
|
2003
3283
|
default: components["responses"]["ApiError"];
|
|
2004
3284
|
};
|
|
2005
3285
|
};
|
|
2006
|
-
|
|
3286
|
+
listBookingServices: {
|
|
2007
3287
|
parameters: {
|
|
2008
|
-
query?:
|
|
3288
|
+
query?: {
|
|
3289
|
+
/** @description Include services with `active: false`. Defaults to active-only. */
|
|
3290
|
+
include_inactive?: boolean;
|
|
3291
|
+
};
|
|
2009
3292
|
header?: never;
|
|
2010
3293
|
path?: never;
|
|
2011
3294
|
cookie?: never;
|
|
2012
3295
|
};
|
|
2013
|
-
requestBody
|
|
2014
|
-
content: {
|
|
2015
|
-
"application/json": components["schemas"]["SendEmailInput"];
|
|
2016
|
-
};
|
|
2017
|
-
};
|
|
3296
|
+
requestBody?: never;
|
|
2018
3297
|
responses: {
|
|
2019
|
-
/** @description
|
|
2020
|
-
|
|
3298
|
+
/** @description Bookable service catalogue. */
|
|
3299
|
+
200: {
|
|
2021
3300
|
headers: {
|
|
2022
3301
|
[name: string]: unknown;
|
|
2023
3302
|
};
|
|
2024
3303
|
content: {
|
|
2025
|
-
"application/json": components["schemas"]["
|
|
3304
|
+
"application/json": components["schemas"]["ApiResponse_BookingServiceArray"];
|
|
2026
3305
|
};
|
|
2027
3306
|
};
|
|
2028
3307
|
default: components["responses"]["ApiError"];
|
|
2029
3308
|
};
|
|
2030
3309
|
};
|
|
2031
|
-
|
|
3310
|
+
listBookingResources: {
|
|
2032
3311
|
parameters: {
|
|
2033
3312
|
query?: never;
|
|
2034
3313
|
header?: never;
|
|
2035
3314
|
path?: never;
|
|
2036
3315
|
cookie?: never;
|
|
2037
3316
|
};
|
|
2038
|
-
requestBody
|
|
2039
|
-
content: {
|
|
2040
|
-
"application/json": components["schemas"]["BatchSendInput"];
|
|
2041
|
-
};
|
|
2042
|
-
};
|
|
3317
|
+
requestBody?: never;
|
|
2043
3318
|
responses: {
|
|
2044
|
-
/** @description
|
|
2045
|
-
|
|
3319
|
+
/** @description Bookable resources — staff, rooms, and equipment. */
|
|
3320
|
+
200: {
|
|
2046
3321
|
headers: {
|
|
2047
3322
|
[name: string]: unknown;
|
|
2048
3323
|
};
|
|
2049
3324
|
content: {
|
|
2050
|
-
"application/json": components["schemas"]["
|
|
3325
|
+
"application/json": components["schemas"]["ApiResponse_BookingResourceArray"];
|
|
2051
3326
|
};
|
|
2052
3327
|
};
|
|
2053
3328
|
default: components["responses"]["ApiError"];
|
|
2054
3329
|
};
|
|
2055
3330
|
};
|
|
2056
|
-
|
|
3331
|
+
listBookingAvailability: {
|
|
2057
3332
|
parameters: {
|
|
2058
|
-
query
|
|
3333
|
+
query: {
|
|
3334
|
+
service_id: string;
|
|
3335
|
+
/** @description Start of the window. */
|
|
3336
|
+
from_ts: components["schemas"]["BookingTimestampInput"];
|
|
3337
|
+
/** @description End of the window; must be after `from_ts`. */
|
|
3338
|
+
to_ts: components["schemas"]["BookingTimestampInput"];
|
|
3339
|
+
/** @description Restrict slots to one resource. */
|
|
3340
|
+
resource_id?: string;
|
|
3341
|
+
};
|
|
2059
3342
|
header?: never;
|
|
2060
3343
|
path?: never;
|
|
2061
3344
|
cookie?: never;
|
|
2062
3345
|
};
|
|
2063
3346
|
requestBody?: never;
|
|
2064
3347
|
responses: {
|
|
2065
|
-
/** @description
|
|
3348
|
+
/** @description Free slots. */
|
|
2066
3349
|
200: {
|
|
2067
3350
|
headers: {
|
|
2068
3351
|
[name: string]: unknown;
|
|
2069
3352
|
};
|
|
2070
3353
|
content: {
|
|
2071
|
-
"application/json": components["schemas"]["
|
|
3354
|
+
"application/json": components["schemas"]["ApiResponse_BookingSlotArray"];
|
|
2072
3355
|
};
|
|
2073
3356
|
};
|
|
2074
3357
|
default: components["responses"]["ApiError"];
|
|
2075
3358
|
};
|
|
2076
3359
|
};
|
|
2077
|
-
|
|
3360
|
+
listBookingSchedule: {
|
|
2078
3361
|
parameters: {
|
|
2079
|
-
query
|
|
2080
|
-
|
|
2081
|
-
|
|
3362
|
+
query: {
|
|
3363
|
+
service_id: string;
|
|
3364
|
+
/** @description Start of the window. */
|
|
3365
|
+
from_ts: components["schemas"]["BookingTimestampInput"];
|
|
3366
|
+
/** @description End of the window; must be after `from_ts`. */
|
|
3367
|
+
to_ts: components["schemas"]["BookingTimestampInput"];
|
|
3368
|
+
/** @description Restrict to one resource's hours. */
|
|
3369
|
+
resource_id?: string;
|
|
2082
3370
|
};
|
|
2083
3371
|
header?: never;
|
|
2084
|
-
path
|
|
2085
|
-
slug: components["parameters"]["Slug"];
|
|
2086
|
-
};
|
|
3372
|
+
path?: never;
|
|
2087
3373
|
cookie?: never;
|
|
2088
3374
|
};
|
|
2089
3375
|
requestBody?: never;
|
|
2090
3376
|
responses: {
|
|
2091
|
-
/** @description
|
|
3377
|
+
/** @description Open dates. */
|
|
2092
3378
|
200: {
|
|
2093
3379
|
headers: {
|
|
2094
3380
|
[name: string]: unknown;
|
|
2095
3381
|
};
|
|
2096
3382
|
content: {
|
|
2097
|
-
"application/json": components["schemas"]["
|
|
3383
|
+
"application/json": components["schemas"]["ApiResponse_BookingScheduleDayArray"];
|
|
2098
3384
|
};
|
|
2099
3385
|
};
|
|
2100
3386
|
default: components["responses"]["ApiError"];
|
|
2101
3387
|
};
|
|
2102
3388
|
};
|
|
2103
|
-
|
|
3389
|
+
getBooking: {
|
|
2104
3390
|
parameters: {
|
|
2105
3391
|
query?: never;
|
|
2106
3392
|
header?: never;
|
|
@@ -2111,100 +3397,100 @@ interface operations {
|
|
|
2111
3397
|
};
|
|
2112
3398
|
requestBody?: never;
|
|
2113
3399
|
responses: {
|
|
2114
|
-
/** @description
|
|
3400
|
+
/** @description Booking. */
|
|
2115
3401
|
200: {
|
|
2116
3402
|
headers: {
|
|
2117
3403
|
[name: string]: unknown;
|
|
2118
3404
|
};
|
|
2119
3405
|
content: {
|
|
2120
|
-
"application/json": components["schemas"]["
|
|
3406
|
+
"application/json": components["schemas"]["ApiResponse_Booking"];
|
|
2121
3407
|
};
|
|
2122
3408
|
};
|
|
2123
3409
|
default: components["responses"]["ApiError"];
|
|
2124
3410
|
};
|
|
2125
3411
|
};
|
|
2126
|
-
|
|
3412
|
+
updateBooking: {
|
|
2127
3413
|
parameters: {
|
|
2128
|
-
query?:
|
|
2129
|
-
limit?: components["parameters"]["Limit"];
|
|
2130
|
-
cursor?: components["parameters"]["Cursor"];
|
|
2131
|
-
status?: components["schemas"]["ContactStatus"];
|
|
2132
|
-
email_status?: components["schemas"]["EmailStatus"];
|
|
2133
|
-
/** @description Comma-separated label IDs. */
|
|
2134
|
-
label_ids?: string;
|
|
2135
|
-
search?: string;
|
|
2136
|
-
};
|
|
3414
|
+
query?: never;
|
|
2137
3415
|
header?: never;
|
|
2138
|
-
path
|
|
3416
|
+
path: {
|
|
3417
|
+
id: components["parameters"]["Id"];
|
|
3418
|
+
};
|
|
2139
3419
|
cookie?: never;
|
|
2140
3420
|
};
|
|
2141
|
-
requestBody
|
|
3421
|
+
requestBody: {
|
|
3422
|
+
content: {
|
|
3423
|
+
"application/json": components["schemas"]["UpdateBookingInput"];
|
|
3424
|
+
};
|
|
3425
|
+
};
|
|
2142
3426
|
responses: {
|
|
2143
|
-
/** @description
|
|
3427
|
+
/** @description The updated booking. */
|
|
2144
3428
|
200: {
|
|
2145
3429
|
headers: {
|
|
2146
3430
|
[name: string]: unknown;
|
|
2147
3431
|
};
|
|
2148
3432
|
content: {
|
|
2149
|
-
"application/json": components["schemas"]["
|
|
3433
|
+
"application/json": components["schemas"]["ApiResponse_Booking"];
|
|
2150
3434
|
};
|
|
2151
3435
|
};
|
|
2152
3436
|
default: components["responses"]["ApiError"];
|
|
2153
3437
|
};
|
|
2154
3438
|
};
|
|
2155
|
-
|
|
3439
|
+
cancelBooking: {
|
|
2156
3440
|
parameters: {
|
|
2157
3441
|
query?: never;
|
|
2158
3442
|
header?: never;
|
|
2159
|
-
path
|
|
3443
|
+
path: {
|
|
3444
|
+
id: components["parameters"]["Id"];
|
|
3445
|
+
};
|
|
2160
3446
|
cookie?: never;
|
|
2161
3447
|
};
|
|
2162
3448
|
requestBody: {
|
|
2163
3449
|
content: {
|
|
2164
|
-
"application/json": components["schemas"]["
|
|
3450
|
+
"application/json": components["schemas"]["CancelBookingInput"];
|
|
2165
3451
|
};
|
|
2166
3452
|
};
|
|
2167
3453
|
responses: {
|
|
2168
|
-
/** @description
|
|
3454
|
+
/** @description Cancel result. */
|
|
2169
3455
|
200: {
|
|
2170
3456
|
headers: {
|
|
2171
3457
|
[name: string]: unknown;
|
|
2172
3458
|
};
|
|
2173
3459
|
content: {
|
|
2174
|
-
"application/json": components["schemas"]["
|
|
3460
|
+
"application/json": components["schemas"]["ApiResponse_BookingActionResult"];
|
|
2175
3461
|
};
|
|
2176
3462
|
};
|
|
2177
3463
|
default: components["responses"]["ApiError"];
|
|
2178
3464
|
};
|
|
2179
3465
|
};
|
|
2180
|
-
|
|
3466
|
+
rescheduleBooking: {
|
|
2181
3467
|
parameters: {
|
|
2182
3468
|
query?: never;
|
|
2183
3469
|
header?: never;
|
|
2184
|
-
path
|
|
3470
|
+
path: {
|
|
3471
|
+
id: components["parameters"]["Id"];
|
|
3472
|
+
};
|
|
2185
3473
|
cookie?: never;
|
|
2186
3474
|
};
|
|
2187
3475
|
requestBody: {
|
|
2188
3476
|
content: {
|
|
2189
|
-
"application/json":
|
|
2190
|
-
contacts: components["schemas"]["ImportContactInput"][];
|
|
2191
|
-
};
|
|
3477
|
+
"application/json": components["schemas"]["RescheduleBookingInput"];
|
|
2192
3478
|
};
|
|
2193
3479
|
};
|
|
2194
3480
|
responses: {
|
|
2195
|
-
/** @description
|
|
3481
|
+
/** @description Reschedule result. */
|
|
2196
3482
|
200: {
|
|
2197
3483
|
headers: {
|
|
2198
3484
|
[name: string]: unknown;
|
|
2199
3485
|
};
|
|
2200
3486
|
content: {
|
|
2201
|
-
"application/json": components["schemas"]["
|
|
3487
|
+
"application/json": components["schemas"]["ApiResponse_BookingRescheduleResult"];
|
|
2202
3488
|
};
|
|
2203
3489
|
};
|
|
2204
3490
|
default: components["responses"]["ApiError"];
|
|
2205
3491
|
};
|
|
2206
3492
|
};
|
|
2207
|
-
|
|
3493
|
+
markBookingNoShow: {
|
|
2208
3494
|
parameters: {
|
|
2209
3495
|
query?: never;
|
|
2210
3496
|
header?: never;
|
|
@@ -2215,241 +3501,288 @@ interface operations {
|
|
|
2215
3501
|
};
|
|
2216
3502
|
requestBody?: never;
|
|
2217
3503
|
responses: {
|
|
2218
|
-
/** @description
|
|
3504
|
+
/** @description No-show result. */
|
|
2219
3505
|
200: {
|
|
2220
3506
|
headers: {
|
|
2221
3507
|
[name: string]: unknown;
|
|
2222
3508
|
};
|
|
2223
3509
|
content: {
|
|
2224
|
-
"application/json": components["schemas"]["
|
|
3510
|
+
"application/json": components["schemas"]["ApiResponse_BookingActionResult"];
|
|
2225
3511
|
};
|
|
2226
3512
|
};
|
|
2227
3513
|
default: components["responses"]["ApiError"];
|
|
2228
3514
|
};
|
|
2229
3515
|
};
|
|
2230
|
-
|
|
3516
|
+
getManagedBooking: {
|
|
2231
3517
|
parameters: {
|
|
2232
3518
|
query?: never;
|
|
2233
3519
|
header?: never;
|
|
2234
3520
|
path: {
|
|
2235
|
-
|
|
3521
|
+
/** @description The show-once manage token handed out when the booking was created. Possession of it authorizes the customer's own cancel or reschedule. */
|
|
3522
|
+
token: components["parameters"]["ManageToken"];
|
|
2236
3523
|
};
|
|
2237
3524
|
cookie?: never;
|
|
2238
3525
|
};
|
|
2239
3526
|
requestBody?: never;
|
|
2240
3527
|
responses: {
|
|
2241
|
-
/** @description
|
|
3528
|
+
/** @description Manage summary. An unknown token and a token belonging to another workspace both answer 404, so this is not an existence oracle. */
|
|
2242
3529
|
200: {
|
|
2243
3530
|
headers: {
|
|
2244
3531
|
[name: string]: unknown;
|
|
2245
3532
|
};
|
|
2246
3533
|
content: {
|
|
2247
|
-
"application/json": components["schemas"]["
|
|
3534
|
+
"application/json": components["schemas"]["ApiResponse_ManageSummary"];
|
|
2248
3535
|
};
|
|
2249
3536
|
};
|
|
2250
3537
|
default: components["responses"]["ApiError"];
|
|
2251
3538
|
};
|
|
2252
3539
|
};
|
|
2253
|
-
|
|
3540
|
+
cancelManagedBooking: {
|
|
2254
3541
|
parameters: {
|
|
2255
3542
|
query?: never;
|
|
2256
3543
|
header?: never;
|
|
2257
3544
|
path: {
|
|
2258
|
-
|
|
3545
|
+
/** @description The show-once manage token handed out when the booking was created. Possession of it authorizes the customer's own cancel or reschedule. */
|
|
3546
|
+
token: components["parameters"]["ManageToken"];
|
|
2259
3547
|
};
|
|
2260
3548
|
cookie?: never;
|
|
2261
3549
|
};
|
|
2262
3550
|
requestBody: {
|
|
2263
3551
|
content: {
|
|
2264
|
-
"application/json": components["schemas"]["
|
|
3552
|
+
"application/json": components["schemas"]["CancelBookingInput"];
|
|
2265
3553
|
};
|
|
2266
3554
|
};
|
|
2267
3555
|
responses: {
|
|
2268
|
-
/** @description
|
|
3556
|
+
/** @description Cancel result. */
|
|
2269
3557
|
200: {
|
|
2270
3558
|
headers: {
|
|
2271
3559
|
[name: string]: unknown;
|
|
2272
3560
|
};
|
|
2273
3561
|
content: {
|
|
2274
|
-
"application/json": components["schemas"]["
|
|
3562
|
+
"application/json": components["schemas"]["ApiResponse_BookingActionResult"];
|
|
2275
3563
|
};
|
|
2276
3564
|
};
|
|
2277
3565
|
default: components["responses"]["ApiError"];
|
|
2278
3566
|
};
|
|
2279
3567
|
};
|
|
2280
|
-
|
|
3568
|
+
rescheduleManagedBooking: {
|
|
2281
3569
|
parameters: {
|
|
2282
|
-
query?:
|
|
2283
|
-
limit?: components["parameters"]["Limit"];
|
|
2284
|
-
cursor?: components["parameters"]["Cursor"];
|
|
2285
|
-
};
|
|
3570
|
+
query?: never;
|
|
2286
3571
|
header?: never;
|
|
2287
3572
|
path: {
|
|
2288
|
-
|
|
3573
|
+
/** @description The show-once manage token handed out when the booking was created. Possession of it authorizes the customer's own cancel or reschedule. */
|
|
3574
|
+
token: components["parameters"]["ManageToken"];
|
|
2289
3575
|
};
|
|
2290
3576
|
cookie?: never;
|
|
2291
3577
|
};
|
|
2292
|
-
requestBody
|
|
3578
|
+
requestBody: {
|
|
3579
|
+
content: {
|
|
3580
|
+
"application/json": components["schemas"]["RescheduleBookingInput"];
|
|
3581
|
+
};
|
|
3582
|
+
};
|
|
2293
3583
|
responses: {
|
|
2294
|
-
/** @description
|
|
3584
|
+
/** @description Reschedule result. */
|
|
2295
3585
|
200: {
|
|
2296
3586
|
headers: {
|
|
2297
3587
|
[name: string]: unknown;
|
|
2298
3588
|
};
|
|
2299
3589
|
content: {
|
|
2300
|
-
"application/json": components["schemas"]["
|
|
3590
|
+
"application/json": components["schemas"]["ApiResponse_BookingRescheduleResult"];
|
|
2301
3591
|
};
|
|
2302
3592
|
};
|
|
2303
3593
|
default: components["responses"]["ApiError"];
|
|
2304
3594
|
};
|
|
2305
3595
|
};
|
|
2306
|
-
|
|
3596
|
+
startPortalLogin: {
|
|
2307
3597
|
parameters: {
|
|
2308
3598
|
query?: never;
|
|
2309
3599
|
header?: never;
|
|
2310
|
-
path
|
|
2311
|
-
|
|
3600
|
+
path?: never;
|
|
3601
|
+
cookie?: never;
|
|
3602
|
+
};
|
|
3603
|
+
requestBody: {
|
|
3604
|
+
content: {
|
|
3605
|
+
"application/json": components["schemas"]["PortalLoginStartInput"];
|
|
2312
3606
|
};
|
|
3607
|
+
};
|
|
3608
|
+
responses: {
|
|
3609
|
+
/** @description Code queued (or silently not, for an unknown address). */
|
|
3610
|
+
202: {
|
|
3611
|
+
headers: {
|
|
3612
|
+
[name: string]: unknown;
|
|
3613
|
+
};
|
|
3614
|
+
content: {
|
|
3615
|
+
"application/json": components["schemas"]["ApiResponse_PortalLoginStartResult"];
|
|
3616
|
+
};
|
|
3617
|
+
};
|
|
3618
|
+
default: components["responses"]["ApiError"];
|
|
3619
|
+
};
|
|
3620
|
+
};
|
|
3621
|
+
verifyPortalLogin: {
|
|
3622
|
+
parameters: {
|
|
3623
|
+
query?: never;
|
|
3624
|
+
header?: never;
|
|
3625
|
+
path?: never;
|
|
2313
3626
|
cookie?: never;
|
|
2314
3627
|
};
|
|
2315
3628
|
requestBody: {
|
|
2316
3629
|
content: {
|
|
2317
|
-
"application/json": components["schemas"]["
|
|
3630
|
+
"application/json": components["schemas"]["PortalVerifyInput"];
|
|
2318
3631
|
};
|
|
2319
3632
|
};
|
|
2320
3633
|
responses: {
|
|
2321
|
-
/** @description
|
|
3634
|
+
/** @description The new session. */
|
|
2322
3635
|
200: {
|
|
2323
3636
|
headers: {
|
|
2324
3637
|
[name: string]: unknown;
|
|
2325
3638
|
};
|
|
2326
3639
|
content: {
|
|
2327
|
-
"application/json": components["schemas"]["
|
|
3640
|
+
"application/json": components["schemas"]["ApiResponse_PortalSession"];
|
|
2328
3641
|
};
|
|
2329
3642
|
};
|
|
2330
3643
|
default: components["responses"]["ApiError"];
|
|
2331
3644
|
};
|
|
2332
3645
|
};
|
|
2333
|
-
|
|
3646
|
+
logoutPortal: {
|
|
2334
3647
|
parameters: {
|
|
2335
|
-
query?:
|
|
2336
|
-
|
|
2337
|
-
|
|
2338
|
-
|
|
2339
|
-
search?: string;
|
|
3648
|
+
query?: never;
|
|
3649
|
+
header: {
|
|
3650
|
+
/** @description The `session_token` returned by `verifyPortalLogin`. A bearer credential for ONE contact — the site's server keeps it in an HttpOnly cookie and forwards it here. Missing answers `401 PORTAL_SESSION_REQUIRED`; unknown, expired or revoked answers `401 PORTAL_SESSION_INVALID`. */
|
|
3651
|
+
"X-Portal-Session": components["parameters"]["PortalSession"];
|
|
2340
3652
|
};
|
|
2341
|
-
header?: never;
|
|
2342
3653
|
path?: never;
|
|
2343
3654
|
cookie?: never;
|
|
2344
3655
|
};
|
|
2345
3656
|
requestBody?: never;
|
|
2346
3657
|
responses: {
|
|
2347
|
-
/** @description
|
|
3658
|
+
/** @description Session revoked. */
|
|
3659
|
+
204: {
|
|
3660
|
+
headers: {
|
|
3661
|
+
[name: string]: unknown;
|
|
3662
|
+
};
|
|
3663
|
+
content?: never;
|
|
3664
|
+
};
|
|
3665
|
+
default: components["responses"]["ApiError"];
|
|
3666
|
+
};
|
|
3667
|
+
};
|
|
3668
|
+
getPortalProfile: {
|
|
3669
|
+
parameters: {
|
|
3670
|
+
query?: never;
|
|
3671
|
+
header: {
|
|
3672
|
+
/** @description The `session_token` returned by `verifyPortalLogin`. A bearer credential for ONE contact — the site's server keeps it in an HttpOnly cookie and forwards it here. Missing answers `401 PORTAL_SESSION_REQUIRED`; unknown, expired or revoked answers `401 PORTAL_SESSION_INVALID`. */
|
|
3673
|
+
"X-Portal-Session": components["parameters"]["PortalSession"];
|
|
3674
|
+
};
|
|
3675
|
+
path?: never;
|
|
3676
|
+
cookie?: never;
|
|
3677
|
+
};
|
|
3678
|
+
requestBody?: never;
|
|
3679
|
+
responses: {
|
|
3680
|
+
/** @description Profile. */
|
|
2348
3681
|
200: {
|
|
2349
3682
|
headers: {
|
|
2350
3683
|
[name: string]: unknown;
|
|
2351
3684
|
};
|
|
2352
3685
|
content: {
|
|
2353
|
-
"application/json": components["schemas"]["
|
|
3686
|
+
"application/json": components["schemas"]["ApiResponse_PortalProfile"];
|
|
2354
3687
|
};
|
|
2355
3688
|
};
|
|
2356
3689
|
default: components["responses"]["ApiError"];
|
|
2357
3690
|
};
|
|
2358
3691
|
};
|
|
2359
|
-
|
|
3692
|
+
updatePortalProfile: {
|
|
2360
3693
|
parameters: {
|
|
2361
3694
|
query?: never;
|
|
2362
|
-
header
|
|
3695
|
+
header: {
|
|
3696
|
+
/** @description The `session_token` returned by `verifyPortalLogin`. A bearer credential for ONE contact — the site's server keeps it in an HttpOnly cookie and forwards it here. Missing answers `401 PORTAL_SESSION_REQUIRED`; unknown, expired or revoked answers `401 PORTAL_SESSION_INVALID`. */
|
|
3697
|
+
"X-Portal-Session": components["parameters"]["PortalSession"];
|
|
3698
|
+
};
|
|
2363
3699
|
path?: never;
|
|
2364
3700
|
cookie?: never;
|
|
2365
3701
|
};
|
|
2366
3702
|
requestBody: {
|
|
2367
3703
|
content: {
|
|
2368
|
-
"application/json": components["schemas"]["
|
|
3704
|
+
"application/json": components["schemas"]["PortalProfilePatch"];
|
|
2369
3705
|
};
|
|
2370
3706
|
};
|
|
2371
3707
|
responses: {
|
|
2372
|
-
/** @description
|
|
3708
|
+
/** @description Updated profile. */
|
|
2373
3709
|
200: {
|
|
2374
3710
|
headers: {
|
|
2375
3711
|
[name: string]: unknown;
|
|
2376
3712
|
};
|
|
2377
3713
|
content: {
|
|
2378
|
-
"application/json": components["schemas"]["
|
|
3714
|
+
"application/json": components["schemas"]["ApiResponse_PortalProfile"];
|
|
2379
3715
|
};
|
|
2380
3716
|
};
|
|
2381
3717
|
default: components["responses"]["ApiError"];
|
|
2382
3718
|
};
|
|
2383
3719
|
};
|
|
2384
|
-
|
|
3720
|
+
listPortalBookings: {
|
|
2385
3721
|
parameters: {
|
|
2386
3722
|
query?: never;
|
|
2387
|
-
header
|
|
2388
|
-
|
|
2389
|
-
|
|
3723
|
+
header: {
|
|
3724
|
+
/** @description The `session_token` returned by `verifyPortalLogin`. A bearer credential for ONE contact — the site's server keeps it in an HttpOnly cookie and forwards it here. Missing answers `401 PORTAL_SESSION_REQUIRED`; unknown, expired or revoked answers `401 PORTAL_SESSION_INVALID`. */
|
|
3725
|
+
"X-Portal-Session": components["parameters"]["PortalSession"];
|
|
2390
3726
|
};
|
|
3727
|
+
path?: never;
|
|
2391
3728
|
cookie?: never;
|
|
2392
3729
|
};
|
|
2393
3730
|
requestBody?: never;
|
|
2394
3731
|
responses: {
|
|
2395
|
-
/** @description
|
|
3732
|
+
/** @description Bookings. */
|
|
2396
3733
|
200: {
|
|
2397
3734
|
headers: {
|
|
2398
3735
|
[name: string]: unknown;
|
|
2399
3736
|
};
|
|
2400
3737
|
content: {
|
|
2401
|
-
"application/json": components["schemas"]["
|
|
3738
|
+
"application/json": components["schemas"]["ApiResponse_PortalBookings"];
|
|
2402
3739
|
};
|
|
2403
3740
|
};
|
|
2404
3741
|
default: components["responses"]["ApiError"];
|
|
2405
3742
|
};
|
|
2406
3743
|
};
|
|
2407
|
-
|
|
3744
|
+
exportPortalData: {
|
|
2408
3745
|
parameters: {
|
|
2409
3746
|
query?: never;
|
|
2410
|
-
header
|
|
2411
|
-
|
|
2412
|
-
|
|
3747
|
+
header: {
|
|
3748
|
+
/** @description The `session_token` returned by `verifyPortalLogin`. A bearer credential for ONE contact — the site's server keeps it in an HttpOnly cookie and forwards it here. Missing answers `401 PORTAL_SESSION_REQUIRED`; unknown, expired or revoked answers `401 PORTAL_SESSION_INVALID`. */
|
|
3749
|
+
"X-Portal-Session": components["parameters"]["PortalSession"];
|
|
2413
3750
|
};
|
|
3751
|
+
path?: never;
|
|
2414
3752
|
cookie?: never;
|
|
2415
3753
|
};
|
|
2416
3754
|
requestBody?: never;
|
|
2417
3755
|
responses: {
|
|
2418
|
-
/** @description
|
|
3756
|
+
/** @description The export. */
|
|
2419
3757
|
200: {
|
|
2420
3758
|
headers: {
|
|
2421
3759
|
[name: string]: unknown;
|
|
2422
3760
|
};
|
|
2423
3761
|
content: {
|
|
2424
|
-
"application/json": components["schemas"]["
|
|
3762
|
+
"application/json": components["schemas"]["ApiResponse_PortalExport"];
|
|
2425
3763
|
};
|
|
2426
3764
|
};
|
|
2427
3765
|
default: components["responses"]["ApiError"];
|
|
2428
3766
|
};
|
|
2429
3767
|
};
|
|
2430
|
-
|
|
3768
|
+
deletePortalAccount: {
|
|
2431
3769
|
parameters: {
|
|
2432
3770
|
query?: never;
|
|
2433
|
-
header
|
|
2434
|
-
|
|
2435
|
-
|
|
3771
|
+
header: {
|
|
3772
|
+
/** @description The `session_token` returned by `verifyPortalLogin`. A bearer credential for ONE contact — the site's server keeps it in an HttpOnly cookie and forwards it here. Missing answers `401 PORTAL_SESSION_REQUIRED`; unknown, expired or revoked answers `401 PORTAL_SESSION_INVALID`. */
|
|
3773
|
+
"X-Portal-Session": components["parameters"]["PortalSession"];
|
|
2436
3774
|
};
|
|
3775
|
+
path?: never;
|
|
2437
3776
|
cookie?: never;
|
|
2438
3777
|
};
|
|
2439
|
-
requestBody
|
|
2440
|
-
content: {
|
|
2441
|
-
"application/json": components["schemas"]["UpdateDealInput"];
|
|
2442
|
-
};
|
|
2443
|
-
};
|
|
3778
|
+
requestBody?: never;
|
|
2444
3779
|
responses: {
|
|
2445
|
-
/** @description
|
|
2446
|
-
|
|
3780
|
+
/** @description Contact erased and session revoked. */
|
|
3781
|
+
204: {
|
|
2447
3782
|
headers: {
|
|
2448
3783
|
[name: string]: unknown;
|
|
2449
3784
|
};
|
|
2450
|
-
content
|
|
2451
|
-
"application/json": components["schemas"]["ApiResponse_DealUpdateResult"];
|
|
2452
|
-
};
|
|
3785
|
+
content?: never;
|
|
2453
3786
|
};
|
|
2454
3787
|
default: components["responses"]["ApiError"];
|
|
2455
3788
|
};
|