@arbol-ai/cli 2.2.0 → 2.3.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.
Files changed (3) hide show
  1. package/README.md +2 -1
  2. package/dist/index.js +3303 -1044
  3. package/package.json +5 -5
package/dist/index.js CHANGED
@@ -3021,122 +3021,7 @@ var commands = {
3021
3021
  intake: {
3022
3022
  anyOf: [
3023
3023
  {
3024
- additionalProperties: false,
3025
- type: "object",
3026
- required: [],
3027
- properties: {
3028
- authorization: {
3029
- anyOf: [
3030
- {
3031
- type: "string"
3032
- },
3033
- {
3034
- type: "null"
3035
- }
3036
- ],
3037
- default: null,
3038
- description: "Payer authorization reference recorded with this appointment; null when absent."
3039
- },
3040
- conversationUrl: {
3041
- anyOf: [
3042
- {
3043
- format: "uri",
3044
- maxLength: 500,
3045
- type: "string"
3046
- },
3047
- {
3048
- type: "null"
3049
- }
3050
- ],
3051
- default: null,
3052
- description: "HTTPS link to the originating Arbol conversation on an admitted product hostname; null when absent."
3053
- },
3054
- email: {
3055
- description: "Patient email address for enabled appointment notices; null when unknown.",
3056
- anyOf: [
3057
- {
3058
- format: "email",
3059
- maxLength: 254,
3060
- type: "string"
3061
- },
3062
- {
3063
- type: "null"
3064
- }
3065
- ],
3066
- default: null
3067
- },
3068
- entity: {
3069
- anyOf: [
3070
- {
3071
- description: "Patient payer or insurer named by the clinic; unrelated to the verified organization identity.",
3072
- type: "string"
3073
- },
3074
- {
3075
- type: "null"
3076
- }
3077
- ],
3078
- default: null,
3079
- description: "Patient payer or insurer as named by the clinic; null when unknown. It is unrelated to the authenticated organization."
3080
- },
3081
- fields: {
3082
- type: "object",
3083
- patternProperties: {
3084
- "^[a-z][a-z0-9_]{0,39}$": {
3085
- anyOf: [
3086
- {
3087
- type: "string"
3088
- },
3089
- {
3090
- type: "number"
3091
- },
3092
- {
3093
- type: "boolean"
3094
- }
3095
- ]
3096
- }
3097
- },
3098
- default: {},
3099
- description: "Custom patient values keyed by the organization's configured field keys; values retain their declared string, number or boolean type."
3100
- },
3101
- notes: {
3102
- anyOf: [
3103
- {
3104
- type: "string"
3105
- },
3106
- {
3107
- type: "null"
3108
- }
3109
- ],
3110
- default: null,
3111
- description: "Appointment-specific free-text notes; null when none are recorded."
3112
- },
3113
- phone: {
3114
- anyOf: [
3115
- {
3116
- type: "string"
3117
- },
3118
- {
3119
- type: "null"
3120
- }
3121
- ],
3122
- default: null,
3123
- description: "Patient contact phone, preserving its entered formatting; null when unknown."
3124
- },
3125
- priority: {
3126
- anyOf: [
3127
- {
3128
- const: "normal",
3129
- type: "string"
3130
- },
3131
- {
3132
- const: "urgent",
3133
- type: "string"
3134
- }
3135
- ],
3136
- default: "normal",
3137
- description: "Appointment priority: normal by default or urgent when explicitly requested."
3138
- }
3139
- }
3024
+ $ref: "#/components/schemas/AgendaAppointmentIntakeInput"
3140
3025
  },
3141
3026
  {
3142
3027
  type: "null"
@@ -3147,42 +3032,7 @@ var commands = {
3147
3032
  patient: {
3148
3033
  anyOf: [
3149
3034
  {
3150
- additionalProperties: false,
3151
- type: "object",
3152
- required: [
3153
- "document",
3154
- "name"
3155
- ],
3156
- properties: {
3157
- document: {
3158
- anyOf: [
3159
- {
3160
- type: "string"
3161
- },
3162
- {
3163
- type: "null"
3164
- }
3165
- ],
3166
- description: "Normalized patient document number; null when no document is recorded. Identity combines its type and number."
3167
- },
3168
- documentType: {
3169
- anyOf: [
3170
- {
3171
- description: "Document-type code from the organization’s configured active types. Input is trimmed and uppercased.",
3172
- type: "string"
3173
- },
3174
- {
3175
- type: "null"
3176
- }
3177
- ],
3178
- default: null,
3179
- description: "Organization-configured document type code. A number without a supplied type uses the configured first type; no number means no stored type."
3180
- },
3181
- name: {
3182
- type: "string",
3183
- description: "Patient display name with surrounding whitespace removed."
3184
- }
3185
- }
3035
+ $ref: "#/components/schemas/AgendaPatientIdentityInput"
3186
3036
  },
3187
3037
  {
3188
3038
  type: "null"
@@ -3303,6 +3153,20 @@ var commands = {
3303
3153
  required: false,
3304
3154
  description: "Principal reference of whoever booked it."
3305
3155
  },
3156
+ {
3157
+ name: "createdAfter",
3158
+ flag: "created-after",
3159
+ kind: "string",
3160
+ required: false,
3161
+ description: "Inclusive creation instant, independent of the appointment date. Pair with createdBefore; at most 93 days."
3162
+ },
3163
+ {
3164
+ name: "createdBefore",
3165
+ flag: "created-before",
3166
+ kind: "string",
3167
+ required: false,
3168
+ description: "Exclusive creation instant. Use for appointments generated during a period, including future appointments."
3169
+ },
3306
3170
  {
3307
3171
  name: "from",
3308
3172
  flag: "from",
@@ -3478,6 +3342,16 @@ var commands = {
3478
3342
  }
3479
3343
  ]
3480
3344
  },
3345
+ createdAfter: {
3346
+ format: "date-time",
3347
+ description: "Inclusive creation instant, independent of the appointment date. Pair with createdBefore; at most 93 days.",
3348
+ type: "string"
3349
+ },
3350
+ createdBefore: {
3351
+ format: "date-time",
3352
+ description: "Exclusive creation instant. Use for appointments generated during a period, including future appointments.",
3353
+ type: "string"
3354
+ },
3481
3355
  from: {
3482
3356
  format: "date-time",
3483
3357
  description: "Beginning of the appointment range; must be paired with to unless a patient search is supplied.",
@@ -4386,122 +4260,7 @@ var commands = {
4386
4260
  intake: {
4387
4261
  anyOf: [
4388
4262
  {
4389
- additionalProperties: false,
4390
- type: "object",
4391
- required: [],
4392
- properties: {
4393
- authorization: {
4394
- anyOf: [
4395
- {
4396
- type: "string"
4397
- },
4398
- {
4399
- type: "null"
4400
- }
4401
- ],
4402
- default: null,
4403
- description: "Payer authorization reference recorded with this appointment; null when absent."
4404
- },
4405
- conversationUrl: {
4406
- anyOf: [
4407
- {
4408
- format: "uri",
4409
- maxLength: 500,
4410
- type: "string"
4411
- },
4412
- {
4413
- type: "null"
4414
- }
4415
- ],
4416
- default: null,
4417
- description: "HTTPS link to the originating Arbol conversation on an admitted product hostname; null when absent."
4418
- },
4419
- email: {
4420
- description: "Patient email address for enabled appointment notices; null when unknown.",
4421
- anyOf: [
4422
- {
4423
- format: "email",
4424
- maxLength: 254,
4425
- type: "string"
4426
- },
4427
- {
4428
- type: "null"
4429
- }
4430
- ],
4431
- default: null
4432
- },
4433
- entity: {
4434
- anyOf: [
4435
- {
4436
- description: "Patient payer or insurer named by the clinic; unrelated to the verified organization identity.",
4437
- type: "string"
4438
- },
4439
- {
4440
- type: "null"
4441
- }
4442
- ],
4443
- default: null,
4444
- description: "Patient payer or insurer as named by the clinic; null when unknown. It is unrelated to the authenticated organization."
4445
- },
4446
- fields: {
4447
- type: "object",
4448
- patternProperties: {
4449
- "^[a-z][a-z0-9_]{0,39}$": {
4450
- anyOf: [
4451
- {
4452
- type: "string"
4453
- },
4454
- {
4455
- type: "number"
4456
- },
4457
- {
4458
- type: "boolean"
4459
- }
4460
- ]
4461
- }
4462
- },
4463
- default: {},
4464
- description: "Custom patient values keyed by the organization's configured field keys; values retain their declared string, number or boolean type."
4465
- },
4466
- notes: {
4467
- anyOf: [
4468
- {
4469
- type: "string"
4470
- },
4471
- {
4472
- type: "null"
4473
- }
4474
- ],
4475
- default: null,
4476
- description: "Appointment-specific free-text notes; null when none are recorded."
4477
- },
4478
- phone: {
4479
- anyOf: [
4480
- {
4481
- type: "string"
4482
- },
4483
- {
4484
- type: "null"
4485
- }
4486
- ],
4487
- default: null,
4488
- description: "Patient contact phone, preserving its entered formatting; null when unknown."
4489
- },
4490
- priority: {
4491
- anyOf: [
4492
- {
4493
- const: "normal",
4494
- type: "string"
4495
- },
4496
- {
4497
- const: "urgent",
4498
- type: "string"
4499
- }
4500
- ],
4501
- default: "normal",
4502
- description: "Appointment priority: normal by default or urgent when explicitly requested."
4503
- }
4504
- }
4263
+ $ref: "#/components/schemas/AgendaAppointmentIntakeInput"
4505
4264
  },
4506
4265
  {
4507
4266
  type: "null"
@@ -4512,42 +4271,7 @@ var commands = {
4512
4271
  patient: {
4513
4272
  anyOf: [
4514
4273
  {
4515
- additionalProperties: false,
4516
- type: "object",
4517
- required: [
4518
- "document",
4519
- "name"
4520
- ],
4521
- properties: {
4522
- document: {
4523
- anyOf: [
4524
- {
4525
- type: "string"
4526
- },
4527
- {
4528
- type: "null"
4529
- }
4530
- ],
4531
- description: "Normalized patient document number; null when no document is recorded. Identity combines its type and number."
4532
- },
4533
- documentType: {
4534
- anyOf: [
4535
- {
4536
- description: "Document-type code from the organization’s configured active types. Input is trimmed and uppercased.",
4537
- type: "string"
4538
- },
4539
- {
4540
- type: "null"
4541
- }
4542
- ],
4543
- default: null,
4544
- description: "Organization-configured document type code. A number without a supplied type uses the configured first type; no number means no stored type."
4545
- },
4546
- name: {
4547
- type: "string",
4548
- description: "Patient display name with surrounding whitespace removed."
4549
- }
4550
- }
4274
+ $ref: "#/components/schemas/AgendaPatientIdentityInput"
4551
4275
  },
4552
4276
  {
4553
4277
  type: "null"
@@ -5662,6 +5386,271 @@ var commands = {
5662
5386
  confirmation: null,
5663
5387
  hidden: false
5664
5388
  },
5389
+ "agenda offerings create": {
5390
+ operation: "agenda.offerings.create",
5391
+ sdkPath: [
5392
+ "agenda",
5393
+ "offerings",
5394
+ "create"
5395
+ ],
5396
+ pathField: null,
5397
+ fields: [
5398
+ {
5399
+ name: "bookingHorizonDays",
5400
+ flag: "booking-horizon-days",
5401
+ kind: "integer",
5402
+ required: false,
5403
+ description: "Farthest number of days ahead that this offering can be booked.",
5404
+ default: 90
5405
+ },
5406
+ {
5407
+ name: "bufferAfterMinutes",
5408
+ flag: "buffer-after-minutes",
5409
+ kind: "integer",
5410
+ required: false,
5411
+ description: "Resource occupation added after the visible appointment, in minutes.",
5412
+ default: 0
5413
+ },
5414
+ {
5415
+ name: "bufferBeforeMinutes",
5416
+ flag: "buffer-before-minutes",
5417
+ kind: "integer",
5418
+ required: false,
5419
+ description: "Resource occupation added before the visible appointment, in minutes.",
5420
+ default: 0
5421
+ },
5422
+ {
5423
+ name: "capacity",
5424
+ flag: "capacity",
5425
+ kind: "integer",
5426
+ required: false,
5427
+ description: "Maximum concurrent units this resource or offering can accept.",
5428
+ default: 1
5429
+ },
5430
+ {
5431
+ name: "durationMinutes",
5432
+ flag: "duration-minutes",
5433
+ kind: "integer",
5434
+ required: true,
5435
+ description: "Visible appointment duration for this offering, in minutes; resource buffers apply separately."
5436
+ },
5437
+ {
5438
+ name: "minNoticeMinutes",
5439
+ flag: "min-notice-minutes",
5440
+ kind: "integer",
5441
+ required: false,
5442
+ description: "Minimum advance notice in minutes before this offering can be booked.",
5443
+ default: 0
5444
+ },
5445
+ {
5446
+ name: "name",
5447
+ flag: "name",
5448
+ kind: "string",
5449
+ required: true,
5450
+ description: "Display name of this catalog or configuration record."
5451
+ },
5452
+ {
5453
+ name: "slotIntervalMinutes",
5454
+ flag: "slot-interval-minutes",
5455
+ kind: "integer",
5456
+ required: false,
5457
+ description: "Minute spacing between candidate appointment start times.",
5458
+ default: 15
5459
+ },
5460
+ {
5461
+ name: "status",
5462
+ flag: "status",
5463
+ kind: "string",
5464
+ required: false,
5465
+ description: "Lifecycle state controlling whether this record remains available to its domain consumers.",
5466
+ choices: [
5467
+ "active",
5468
+ "inactive"
5469
+ ],
5470
+ default: "active"
5471
+ },
5472
+ {
5473
+ name: "serviceId",
5474
+ flag: "service-id",
5475
+ kind: "string",
5476
+ required: true,
5477
+ description: "Stable svc-prefixed Scheduling record identifier; ownership is checked in the authenticated organization."
5478
+ }
5479
+ ],
5480
+ inputSchema: {
5481
+ additionalProperties: false,
5482
+ type: "object",
5483
+ required: [
5484
+ "durationMinutes",
5485
+ "name",
5486
+ "serviceId"
5487
+ ],
5488
+ properties: {
5489
+ bookingHorizonDays: {
5490
+ minimum: 1,
5491
+ maximum: 730,
5492
+ type: "integer",
5493
+ description: "Farthest number of days ahead that this offering can be booked.",
5494
+ default: 90
5495
+ },
5496
+ bufferAfterMinutes: {
5497
+ minimum: 0,
5498
+ maximum: 1440,
5499
+ type: "integer",
5500
+ description: "Resource occupation added after the visible appointment, in minutes.",
5501
+ default: 0
5502
+ },
5503
+ bufferBeforeMinutes: {
5504
+ minimum: 0,
5505
+ maximum: 1440,
5506
+ type: "integer",
5507
+ description: "Resource occupation added before the visible appointment, in minutes.",
5508
+ default: 0
5509
+ },
5510
+ capacity: {
5511
+ minimum: 1,
5512
+ maximum: 1e4,
5513
+ type: "integer",
5514
+ description: "Maximum concurrent units this resource or offering can accept.",
5515
+ default: 1
5516
+ },
5517
+ details: {
5518
+ type: "object",
5519
+ patternProperties: {
5520
+ "^.{1,200}$": {
5521
+ $ref: "#/components/schemas/AgendaSchedulingJsonValue",
5522
+ description: "JSON-compatible configuration value; strings, arrays and objects have bounded size."
5523
+ }
5524
+ },
5525
+ description: "Bounded JSON configuration owned by this catalog record, including supported domain settings.",
5526
+ default: {}
5527
+ },
5528
+ durationMinutes: {
5529
+ minimum: 1,
5530
+ maximum: 1440,
5531
+ type: "integer",
5532
+ description: "Visible appointment duration for this offering, in minutes; resource buffers apply separately."
5533
+ },
5534
+ minNoticeMinutes: {
5535
+ minimum: 0,
5536
+ maximum: 525600,
5537
+ type: "integer",
5538
+ description: "Minimum advance notice in minutes before this offering can be booked.",
5539
+ default: 0
5540
+ },
5541
+ name: {
5542
+ type: "string",
5543
+ description: "Display name of this catalog or configuration record."
5544
+ },
5545
+ slotIntervalMinutes: {
5546
+ minimum: 5,
5547
+ maximum: 240,
5548
+ type: "integer",
5549
+ description: "Minute spacing between candidate appointment start times.",
5550
+ default: 15
5551
+ },
5552
+ status: {
5553
+ anyOf: [
5554
+ {
5555
+ const: "active",
5556
+ type: "string"
5557
+ },
5558
+ {
5559
+ const: "inactive",
5560
+ type: "string"
5561
+ }
5562
+ ],
5563
+ default: "active",
5564
+ description: "Lifecycle state controlling whether this record remains available to its domain consumers."
5565
+ },
5566
+ resourceRequirements: {
5567
+ maxItems: 30,
5568
+ type: "array",
5569
+ items: {
5570
+ additionalProperties: false,
5571
+ type: "object",
5572
+ required: [
5573
+ "kind"
5574
+ ],
5575
+ properties: {
5576
+ alternatives: {
5577
+ maxItems: 100,
5578
+ type: "array",
5579
+ items: {
5580
+ description: "Stable srs-prefixed Scheduling record identifier; ownership is checked in the authenticated organization.",
5581
+ pattern: "^srs_[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$",
5582
+ type: "string"
5583
+ },
5584
+ default: [],
5585
+ description: "Explicit resource alternatives for this requirement; an empty list allows any resource of the required kind."
5586
+ },
5587
+ kind: {
5588
+ anyOf: [
5589
+ {
5590
+ const: "practitioner",
5591
+ type: "string"
5592
+ },
5593
+ {
5594
+ const: "assistant",
5595
+ type: "string"
5596
+ },
5597
+ {
5598
+ const: "room",
5599
+ type: "string"
5600
+ },
5601
+ {
5602
+ const: "chair",
5603
+ type: "string"
5604
+ },
5605
+ {
5606
+ const: "equipment",
5607
+ type: "string"
5608
+ },
5609
+ {
5610
+ const: "location",
5611
+ type: "string"
5612
+ },
5613
+ {
5614
+ const: "team",
5615
+ type: "string"
5616
+ },
5617
+ {
5618
+ const: "generic",
5619
+ type: "string"
5620
+ }
5621
+ ],
5622
+ description: "Declared domain kind of this record or configuration element."
5623
+ },
5624
+ quantity: {
5625
+ minimum: 1,
5626
+ maximum: 100,
5627
+ type: "integer",
5628
+ default: 1,
5629
+ description: "Number of resources of this kind required by one booking."
5630
+ },
5631
+ required: {
5632
+ type: "boolean",
5633
+ default: true,
5634
+ description: "Whether this resource requirement must be satisfied for the booking to proceed."
5635
+ }
5636
+ }
5637
+ },
5638
+ description: "Resource kinds, quantities and explicit alternatives needed by this offering.",
5639
+ default: []
5640
+ },
5641
+ serviceId: {
5642
+ description: "Stable svc-prefixed Scheduling record identifier; ownership is checked in the authenticated organization.",
5643
+ pattern: "^svc_[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$",
5644
+ type: "string"
5645
+ }
5646
+ }
5647
+ },
5648
+ title: "Create Offering",
5649
+ description: "Attach a service to an agenda with its scheduling requirements, duration, eligibility and intake policy.",
5650
+ effect: "write",
5651
+ confirmation: null,
5652
+ hidden: false
5653
+ },
5665
5654
  "agenda offerings list": {
5666
5655
  operation: "agenda.offerings.list",
5667
5656
  sdkPath: [
@@ -5773,48 +5762,208 @@ var commands = {
5773
5762
  confirmation: null,
5774
5763
  hidden: false
5775
5764
  },
5776
- "agenda resources list": {
5777
- operation: "agenda.resources.list",
5765
+ "agenda offerings update": {
5766
+ operation: "agenda.offerings.update",
5778
5767
  sdkPath: [
5779
5768
  "agenda",
5780
- "resources",
5781
- "list"
5769
+ "offerings",
5770
+ "update"
5782
5771
  ],
5783
- pathField: null,
5772
+ pathField: "id",
5784
5773
  fields: [
5785
5774
  {
5786
- name: "cursor",
5787
- flag: "cursor",
5775
+ name: "bookingHorizonDays",
5776
+ flag: "booking-horizon-days",
5777
+ kind: "integer",
5778
+ required: false,
5779
+ description: "Farthest number of days ahead that this offering can be booked."
5780
+ },
5781
+ {
5782
+ name: "bufferAfterMinutes",
5783
+ flag: "buffer-after-minutes",
5784
+ kind: "integer",
5785
+ required: false,
5786
+ description: "Resource occupation added after the visible appointment, in minutes."
5787
+ },
5788
+ {
5789
+ name: "bufferBeforeMinutes",
5790
+ flag: "buffer-before-minutes",
5791
+ kind: "integer",
5792
+ required: false,
5793
+ description: "Resource occupation added before the visible appointment, in minutes."
5794
+ },
5795
+ {
5796
+ name: "capacity",
5797
+ flag: "capacity",
5798
+ kind: "integer",
5799
+ required: false,
5800
+ description: "Maximum concurrent units this resource or offering can accept."
5801
+ },
5802
+ {
5803
+ name: "durationMinutes",
5804
+ flag: "duration-minutes",
5805
+ kind: "integer",
5806
+ required: false,
5807
+ description: "Visible appointment duration for this offering, in minutes; resource buffers apply separately."
5808
+ },
5809
+ {
5810
+ name: "minNoticeMinutes",
5811
+ flag: "min-notice-minutes",
5812
+ kind: "integer",
5813
+ required: false,
5814
+ description: "Minimum advance notice in minutes before this offering can be booked."
5815
+ },
5816
+ {
5817
+ name: "name",
5818
+ flag: "name",
5788
5819
  kind: "string",
5789
5820
  required: false,
5790
- description: "Opaque cursor returned by pageInfo; omit it to request the first page."
5821
+ description: "Display name of this catalog or configuration record."
5791
5822
  },
5792
5823
  {
5793
- name: "direction",
5794
- flag: "direction",
5824
+ name: "slotIntervalMinutes",
5825
+ flag: "slot-interval-minutes",
5826
+ kind: "integer",
5827
+ required: false,
5828
+ description: "Minute spacing between candidate appointment start times."
5829
+ },
5830
+ {
5831
+ name: "status",
5832
+ flag: "status",
5795
5833
  kind: "string",
5796
5834
  required: false,
5797
- description: "Direction to traverse the stable keyset ordering from the supplied cursor.",
5835
+ description: "Lifecycle state controlling whether this record remains available to its domain consumers.",
5798
5836
  choices: [
5799
- "forward",
5800
- "backward"
5801
- ],
5802
- default: "forward"
5837
+ "active",
5838
+ "inactive"
5839
+ ]
5803
5840
  },
5804
5841
  {
5805
- name: "limit",
5806
- flag: "limit",
5842
+ name: "expectedVersion",
5843
+ flag: "expected-version",
5844
+ kind: "integer",
5845
+ required: true,
5846
+ description: "Version last read by the caller. The mutation fails if another writer has changed this record."
5847
+ }
5848
+ ],
5849
+ inputSchema: {
5850
+ additionalProperties: false,
5851
+ type: "object",
5852
+ required: [
5853
+ "expectedVersion",
5854
+ "id"
5855
+ ],
5856
+ properties: {
5857
+ bookingHorizonDays: {
5858
+ minimum: 1,
5859
+ maximum: 730,
5860
+ type: "integer",
5861
+ description: "Farthest number of days ahead that this offering can be booked."
5862
+ },
5863
+ bufferAfterMinutes: {
5864
+ minimum: 0,
5865
+ maximum: 1440,
5866
+ type: "integer",
5867
+ description: "Resource occupation added after the visible appointment, in minutes."
5868
+ },
5869
+ bufferBeforeMinutes: {
5870
+ minimum: 0,
5871
+ maximum: 1440,
5872
+ type: "integer",
5873
+ description: "Resource occupation added before the visible appointment, in minutes."
5874
+ },
5875
+ capacity: {
5876
+ minimum: 1,
5877
+ maximum: 1e4,
5878
+ type: "integer",
5879
+ description: "Maximum concurrent units this resource or offering can accept."
5880
+ },
5881
+ details: {
5882
+ type: "object",
5883
+ patternProperties: {
5884
+ "^.{1,200}$": {
5885
+ $ref: "#/components/schemas/AgendaSchedulingJsonValue",
5886
+ description: "JSON-compatible configuration value; strings, arrays and objects have bounded size."
5887
+ }
5888
+ },
5889
+ description: "Bounded JSON configuration owned by this catalog record, including supported domain settings."
5890
+ },
5891
+ durationMinutes: {
5892
+ minimum: 1,
5893
+ maximum: 1440,
5894
+ type: "integer",
5895
+ description: "Visible appointment duration for this offering, in minutes; resource buffers apply separately."
5896
+ },
5897
+ minNoticeMinutes: {
5898
+ minimum: 0,
5899
+ maximum: 525600,
5900
+ type: "integer",
5901
+ description: "Minimum advance notice in minutes before this offering can be booked."
5902
+ },
5903
+ name: {
5904
+ type: "string",
5905
+ description: "Display name of this catalog or configuration record."
5906
+ },
5907
+ slotIntervalMinutes: {
5908
+ minimum: 5,
5909
+ maximum: 240,
5910
+ type: "integer",
5911
+ description: "Minute spacing between candidate appointment start times."
5912
+ },
5913
+ status: {
5914
+ anyOf: [
5915
+ {
5916
+ const: "active",
5917
+ type: "string"
5918
+ },
5919
+ {
5920
+ const: "inactive",
5921
+ type: "string"
5922
+ }
5923
+ ],
5924
+ description: "Lifecycle state controlling whether this record remains available to its domain consumers."
5925
+ },
5926
+ expectedVersion: {
5927
+ exclusiveMinimum: 0,
5928
+ description: "Version last read by the caller. The mutation fails if another writer has changed this record.",
5929
+ type: "integer"
5930
+ },
5931
+ id: {
5932
+ description: "Stable off-prefixed Scheduling record identifier; ownership is checked in the authenticated organization.",
5933
+ pattern: "^off_[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$",
5934
+ type: "string"
5935
+ }
5936
+ }
5937
+ },
5938
+ title: "Update Offering",
5939
+ description: "Update the offering named in the path using its expected version.",
5940
+ effect: "write",
5941
+ confirmation: null,
5942
+ hidden: false
5943
+ },
5944
+ "agenda resources create": {
5945
+ operation: "agenda.resources.create",
5946
+ sdkPath: [
5947
+ "agenda",
5948
+ "resources",
5949
+ "create"
5950
+ ],
5951
+ pathField: null,
5952
+ fields: [
5953
+ {
5954
+ name: "capacity",
5955
+ flag: "capacity",
5807
5956
  kind: "integer",
5808
5957
  required: false,
5809
- description: "Maximum items returned in one page. Defaults to 25; larger reads require another cursor.",
5810
- default: 25
5958
+ description: "Maximum simultaneous capacity units available on this resource; each booking consumes its declared share.",
5959
+ default: 1
5811
5960
  },
5812
5961
  {
5813
5962
  name: "kind",
5814
5963
  flag: "kind",
5815
5964
  kind: "string",
5816
- required: false,
5817
- description: "Filter resources by the category used to satisfy offering requirements.",
5965
+ required: true,
5966
+ description: "Resource category used to match booking requirements, such as practitioner, room or equipment.",
5818
5967
  choices: [
5819
5968
  "practitioner",
5820
5969
  "assistant",
@@ -5826,47 +5975,67 @@ var commands = {
5826
5975
  "generic"
5827
5976
  ]
5828
5977
  },
5978
+ {
5979
+ name: "locationId",
5980
+ flag: "location-id",
5981
+ kind: "string",
5982
+ required: false,
5983
+ description: "Clinic site associated with this record; null means it is not tied to a site.",
5984
+ default: null
5985
+ },
5986
+ {
5987
+ name: "name",
5988
+ flag: "name",
5989
+ kind: "string",
5990
+ required: true,
5991
+ description: "Display name of this catalog or configuration record."
5992
+ },
5829
5993
  {
5830
5994
  name: "status",
5831
5995
  flag: "status",
5832
5996
  kind: "string",
5833
5997
  required: false,
5834
- description: "Filter the collection by the stored active or inactive lifecycle state; omit it to include both.",
5998
+ description: "Lifecycle state controlling whether this record remains available to its domain consumers.",
5835
5999
  choices: [
5836
6000
  "active",
5837
6001
  "inactive"
5838
- ]
6002
+ ],
6003
+ default: "active"
6004
+ },
6005
+ {
6006
+ name: "timezone",
6007
+ flag: "timezone",
6008
+ kind: "string",
6009
+ required: true,
6010
+ description: "IANA timezone used to interpret the record’s local dates and time bands."
5839
6011
  }
5840
6012
  ],
5841
6013
  inputSchema: {
5842
6014
  additionalProperties: false,
5843
6015
  type: "object",
5844
- required: [],
6016
+ required: [
6017
+ "kind",
6018
+ "name",
6019
+ "timezone"
6020
+ ],
5845
6021
  properties: {
5846
- cursor: {
5847
- description: "Opaque cursor returned by pageInfo; omit it to request the first page.",
5848
- type: "string"
6022
+ capacity: {
6023
+ exclusiveMinimum: 0,
6024
+ type: "integer",
6025
+ description: "Maximum simultaneous capacity units available on this resource; each booking consumes its declared share.",
6026
+ maximum: 1e4,
6027
+ default: 1
5849
6028
  },
5850
- direction: {
5851
- description: "Direction to traverse the stable keyset ordering from the supplied cursor.",
5852
- anyOf: [
5853
- {
5854
- const: "forward",
5855
- type: "string"
5856
- },
5857
- {
5858
- const: "backward",
5859
- type: "string"
6029
+ details: {
6030
+ type: "object",
6031
+ patternProperties: {
6032
+ "^.{1,200}$": {
6033
+ $ref: "#/components/schemas/AgendaSchedulingJsonValue",
6034
+ description: "JSON-compatible configuration value; strings, arrays and objects have bounded size."
5860
6035
  }
5861
- ],
5862
- default: "forward"
5863
- },
5864
- limit: {
5865
- minimum: 1,
5866
- maximum: 100,
5867
- description: "Maximum items returned in one page. Defaults to 25; larger reads require another cursor.",
5868
- type: "integer",
5869
- default: 25
6036
+ },
6037
+ description: "Bounded JSON configuration owned by this catalog record, including supported domain settings.",
6038
+ default: {}
5870
6039
  },
5871
6040
  kind: {
5872
6041
  anyOf: [
@@ -5903,7 +6072,25 @@ var commands = {
5903
6072
  type: "string"
5904
6073
  }
5905
6074
  ],
5906
- description: "Filter resources by the category used to satisfy offering requirements."
6075
+ description: "Resource category used to match booking requirements, such as practitioner, room or equipment."
6076
+ },
6077
+ locationId: {
6078
+ anyOf: [
6079
+ {
6080
+ description: "Stable loc-prefixed Scheduling record identifier; ownership is checked in the authenticated organization.",
6081
+ pattern: "^loc_[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$",
6082
+ type: "string"
6083
+ },
6084
+ {
6085
+ type: "null"
6086
+ }
6087
+ ],
6088
+ description: "Clinic site associated with this record; null means it is not tied to a site.",
6089
+ default: null
6090
+ },
6091
+ name: {
6092
+ type: "string",
6093
+ description: "Display name of this catalog or configuration record."
5907
6094
  },
5908
6095
  status: {
5909
6096
  anyOf: [
@@ -5916,21 +6103,26 @@ var commands = {
5916
6103
  type: "string"
5917
6104
  }
5918
6105
  ],
5919
- description: "Filter the collection by the stored active or inactive lifecycle state; omit it to include both."
6106
+ default: "active",
6107
+ description: "Lifecycle state controlling whether this record remains available to its domain consumers."
6108
+ },
6109
+ timezone: {
6110
+ description: "IANA timezone used to interpret the record’s local dates and time bands.",
6111
+ type: "string"
5920
6112
  }
5921
6113
  }
5922
6114
  },
5923
- title: "List Resources",
5924
- description: "List agendas using kind and active-state filters with stable keyset pagination.",
5925
- effect: "read",
6115
+ title: "Create Resource",
6116
+ description: "Create a professional, room or equipment agenda with its capacity and booking policy.",
6117
+ effect: "write",
5926
6118
  confirmation: null,
5927
6119
  hidden: false
5928
6120
  },
5929
- "agenda services list": {
5930
- operation: "agenda.services.list",
6121
+ "agenda resources list": {
6122
+ operation: "agenda.resources.list",
5931
6123
  sdkPath: [
5932
6124
  "agenda",
5933
- "services",
6125
+ "resources",
5934
6126
  "list"
5935
6127
  ],
5936
6128
  pathField: null,
@@ -5962,6 +6154,23 @@ var commands = {
5962
6154
  description: "Maximum items returned in one page. Defaults to 25; larger reads require another cursor.",
5963
6155
  default: 25
5964
6156
  },
6157
+ {
6158
+ name: "kind",
6159
+ flag: "kind",
6160
+ kind: "string",
6161
+ required: false,
6162
+ description: "Filter resources by the category used to satisfy offering requirements.",
6163
+ choices: [
6164
+ "practitioner",
6165
+ "assistant",
6166
+ "room",
6167
+ "chair",
6168
+ "equipment",
6169
+ "location",
6170
+ "team",
6171
+ "generic"
6172
+ ]
6173
+ },
5965
6174
  {
5966
6175
  name: "status",
5967
6176
  flag: "status",
@@ -6004,6 +6213,43 @@ var commands = {
6004
6213
  type: "integer",
6005
6214
  default: 25
6006
6215
  },
6216
+ kind: {
6217
+ anyOf: [
6218
+ {
6219
+ const: "practitioner",
6220
+ type: "string"
6221
+ },
6222
+ {
6223
+ const: "assistant",
6224
+ type: "string"
6225
+ },
6226
+ {
6227
+ const: "room",
6228
+ type: "string"
6229
+ },
6230
+ {
6231
+ const: "chair",
6232
+ type: "string"
6233
+ },
6234
+ {
6235
+ const: "equipment",
6236
+ type: "string"
6237
+ },
6238
+ {
6239
+ const: "location",
6240
+ type: "string"
6241
+ },
6242
+ {
6243
+ const: "team",
6244
+ type: "string"
6245
+ },
6246
+ {
6247
+ const: "generic",
6248
+ type: "string"
6249
+ }
6250
+ ],
6251
+ description: "Filter resources by the category used to satisfy offering requirements."
6252
+ },
6007
6253
  status: {
6008
6254
  anyOf: [
6009
6255
  {
@@ -6019,257 +6265,1083 @@ var commands = {
6019
6265
  }
6020
6266
  }
6021
6267
  },
6022
- title: "List Services",
6023
- description: "List services using tenant-qualified filters and stable keyset pagination.",
6268
+ title: "List Resources",
6269
+ description: "List agendas using kind and active-state filters with stable keyset pagination.",
6024
6270
  effect: "read",
6025
6271
  confirmation: null,
6026
6272
  hidden: false
6027
6273
  },
6028
- "agenda waitlist join": {
6029
- operation: "agenda.waitlist.join",
6274
+ "agenda resources update": {
6275
+ operation: "agenda.resources.update",
6030
6276
  sdkPath: [
6031
6277
  "agenda",
6032
- "waitlist",
6033
- "join"
6278
+ "resources",
6279
+ "update"
6034
6280
  ],
6035
- pathField: null,
6281
+ pathField: "id",
6036
6282
  fields: [
6037
6283
  {
6038
- name: "appointmentId",
6039
- flag: "appointment-id",
6040
- kind: "string",
6284
+ name: "capacity",
6285
+ flag: "capacity",
6286
+ kind: "integer",
6041
6287
  required: false,
6042
- description: "The appointment it relates to: a priority to bring forward.",
6043
- default: null
6288
+ description: "Maximum simultaneous capacity units available on this resource; each booking consumes its declared share."
6044
6289
  },
6045
6290
  {
6046
- name: "conversationUrl",
6047
- flag: "conversation-url",
6291
+ name: "kind",
6292
+ flag: "kind",
6048
6293
  kind: "string",
6049
6294
  required: false,
6050
- description: "Agent conversation URL retained so the scheduling team can reopen the referring conversation.",
6051
- default: null
6295
+ description: "Resource category used to match booking requirements, such as practitioner, room or equipment.",
6296
+ choices: [
6297
+ "practitioner",
6298
+ "assistant",
6299
+ "room",
6300
+ "chair",
6301
+ "equipment",
6302
+ "location",
6303
+ "team",
6304
+ "generic"
6305
+ ]
6052
6306
  },
6053
6307
  {
6054
- name: "note",
6055
- flag: "note",
6308
+ name: "locationId",
6309
+ flag: "location-id",
6056
6310
  kind: "string",
6057
6311
  required: false,
6058
- description: "Desk note attached to the waiting-list entry; null means no note is recorded.",
6059
- default: null
6312
+ description: "Clinic site associated with this record; null means it is not tied to a site."
6060
6313
  },
6061
6314
  {
6062
- name: "payer",
6063
- flag: "payer",
6315
+ name: "name",
6316
+ flag: "name",
6064
6317
  kind: "string",
6065
6318
  required: false,
6066
- description: "The payer the patient named, as said.",
6067
- default: null
6319
+ description: "Display name of this catalog or configuration record."
6068
6320
  },
6069
6321
  {
6070
- name: "phone",
6071
- flag: "phone",
6322
+ name: "status",
6323
+ flag: "status",
6072
6324
  kind: "string",
6073
6325
  required: false,
6074
- description: "Patient contact telephone number; null when no number was recorded.",
6075
- default: null
6076
- },
6077
- {
6078
- name: "reason",
6079
- flag: "reason",
6080
- kind: "string",
6081
- required: true,
6082
- description: "manual records a consented waitlist request after no suitable availability; payer_review asks staff to coordinate a restricted payer; priority asks staff to bring an existing booking forward.",
6326
+ description: "Lifecycle state controlling whether this record remains available to its domain consumers.",
6083
6327
  choices: [
6084
- "manual",
6085
- "payer_review",
6086
- "priority"
6328
+ "active",
6329
+ "inactive"
6087
6330
  ]
6088
6331
  },
6089
6332
  {
6090
- name: "resourceId",
6091
- flag: "resource-id",
6333
+ name: "timezone",
6334
+ flag: "timezone",
6092
6335
  kind: "string",
6093
6336
  required: false,
6094
- description: "One professional or agenda; null = any that offers the service.",
6095
- default: null
6337
+ description: "IANA timezone used to interpret the record’s local dates and time bands."
6096
6338
  },
6097
6339
  {
6098
- name: "serviceId",
6099
- flag: "service-id",
6100
- kind: "string",
6340
+ name: "expectedVersion",
6341
+ flag: "expected-version",
6342
+ kind: "integer",
6101
6343
  required: true,
6102
- description: "Service identifier within the authenticated organization."
6103
- },
6104
- {
6105
- name: "channel",
6106
- flag: "channel",
6107
- kind: "string",
6108
- required: false,
6109
- description: "The conversation's channel, set by the platform. It changes nothing in Agenda; omit it.",
6110
- choices: [
6111
- "voice",
6112
- "whatsapp",
6113
- "web"
6114
- ]
6115
- },
6116
- {
6117
- name: "connectionId",
6118
- flag: "connection-id",
6119
- kind: "string",
6120
- required: false,
6121
- description: "The platform's id for the organization's Agenda, set by the platform. An organization has one Agenda, so it selects nothing; omit it."
6344
+ description: "Version last read by the caller. The mutation fails if another writer has changed this record."
6122
6345
  }
6123
6346
  ],
6124
6347
  inputSchema: {
6125
6348
  additionalProperties: false,
6126
6349
  type: "object",
6127
6350
  required: [
6128
- "patient",
6129
- "reason",
6130
- "serviceId"
6351
+ "expectedVersion",
6352
+ "id"
6131
6353
  ],
6132
6354
  properties: {
6133
- appointmentId: {
6134
- description: "The appointment it relates to: a priority to bring forward.",
6135
- anyOf: [
6136
- {
6137
- description: "Stable eng-prefixed Scheduling record identifier; ownership is checked in the authenticated organization.",
6138
- pattern: "^eng_[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$",
6139
- type: "string"
6140
- },
6141
- {
6142
- type: "null"
6355
+ capacity: {
6356
+ exclusiveMinimum: 0,
6357
+ type: "integer",
6358
+ description: "Maximum simultaneous capacity units available on this resource; each booking consumes its declared share.",
6359
+ maximum: 1e4
6360
+ },
6361
+ details: {
6362
+ type: "object",
6363
+ patternProperties: {
6364
+ "^.{1,200}$": {
6365
+ $ref: "#/components/schemas/AgendaSchedulingJsonValue",
6366
+ description: "JSON-compatible configuration value; strings, arrays and objects have bounded size."
6143
6367
  }
6144
- ],
6145
- default: null
6368
+ },
6369
+ description: "Bounded JSON configuration owned by this catalog record, including supported domain settings."
6146
6370
  },
6147
- conversationUrl: {
6371
+ kind: {
6148
6372
  anyOf: [
6149
6373
  {
6150
- format: "uri",
6151
- maxLength: 500,
6374
+ const: "practitioner",
6152
6375
  type: "string"
6153
6376
  },
6154
6377
  {
6155
- type: "null"
6156
- }
6157
- ],
6158
- default: null,
6159
- description: "Agent conversation URL retained so the scheduling team can reopen the referring conversation."
6160
- },
6161
- note: {
6162
- anyOf: [
6163
- {
6378
+ const: "assistant",
6164
6379
  type: "string"
6165
6380
  },
6166
6381
  {
6167
- type: "null"
6168
- }
6169
- ],
6170
- default: null,
6171
- description: "Desk note attached to the waiting-list entry; null means no note is recorded."
6172
- },
6173
- patient: {
6174
- additionalProperties: false,
6175
- type: "object",
6176
- required: [
6177
- "document",
6178
- "name"
6179
- ],
6180
- properties: {
6181
- document: {
6182
- anyOf: [
6183
- {
6184
- type: "string"
6185
- },
6186
- {
6187
- type: "null"
6188
- }
6189
- ],
6190
- description: "Normalized patient document number; null when no document is recorded. Identity combines its type and number."
6191
- },
6192
- documentType: {
6193
- anyOf: [
6194
- {
6195
- description: "Document-type code from the organization’s configured active types. Input is trimmed and uppercased.",
6196
- type: "string"
6197
- },
6198
- {
6199
- type: "null"
6200
- }
6201
- ],
6202
- default: null,
6203
- description: "Organization-configured document type code. A number without a supplied type uses the configured first type; no number means no stored type."
6382
+ const: "room",
6383
+ type: "string"
6204
6384
  },
6205
- name: {
6206
- type: "string",
6207
- description: "Patient display name with surrounding whitespace removed."
6208
- }
6209
- },
6210
- description: "Patient identity copied into the booking; null when no patient identity was supplied."
6211
- },
6212
- payer: {
6213
- description: "The payer the patient named, as said.",
6214
- anyOf: [
6215
6385
  {
6386
+ const: "chair",
6216
6387
  type: "string"
6217
6388
  },
6218
6389
  {
6219
- type: "null"
6220
- }
6221
- ],
6222
- default: null
6223
- },
6224
- phone: {
6225
- anyOf: [
6226
- {
6390
+ const: "equipment",
6227
6391
  type: "string"
6228
6392
  },
6229
6393
  {
6230
- type: "null"
6231
- }
6232
- ],
6233
- default: null,
6234
- description: "Patient contact telephone number; null when no number was recorded."
6235
- },
6236
- reason: {
6237
- anyOf: [
6238
- {
6239
- const: "manual",
6394
+ const: "location",
6240
6395
  type: "string"
6241
6396
  },
6242
6397
  {
6243
- const: "payer_review",
6398
+ const: "team",
6244
6399
  type: "string"
6245
6400
  },
6246
6401
  {
6247
- const: "priority",
6402
+ const: "generic",
6248
6403
  type: "string"
6249
6404
  }
6250
6405
  ],
6251
- description: "manual records a consented waitlist request after no suitable availability; payer_review asks staff to coordinate a restricted payer; priority asks staff to bring an existing booking forward."
6406
+ description: "Resource category used to match booking requirements, such as practitioner, room or equipment."
6252
6407
  },
6253
- resourceId: {
6254
- description: "One professional or agenda; null = any that offers the service.",
6408
+ locationId: {
6255
6409
  anyOf: [
6256
6410
  {
6257
- description: "Stable srs-prefixed Scheduling record identifier; ownership is checked in the authenticated organization.",
6258
- pattern: "^srs_[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$",
6411
+ description: "Stable loc-prefixed Scheduling record identifier; ownership is checked in the authenticated organization.",
6412
+ pattern: "^loc_[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$",
6259
6413
  type: "string"
6260
6414
  },
6261
6415
  {
6262
6416
  type: "null"
6263
6417
  }
6264
6418
  ],
6265
- default: null
6419
+ description: "Clinic site associated with this record; null means it is not tied to a site."
6266
6420
  },
6267
- serviceId: {
6268
- description: "Service identifier within the authenticated organization.",
6269
- pattern: "^svc_[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$",
6270
- type: "string"
6421
+ name: {
6422
+ type: "string",
6423
+ description: "Display name of this catalog or configuration record."
6271
6424
  },
6272
- channel: {
6425
+ status: {
6426
+ anyOf: [
6427
+ {
6428
+ const: "active",
6429
+ type: "string"
6430
+ },
6431
+ {
6432
+ const: "inactive",
6433
+ type: "string"
6434
+ }
6435
+ ],
6436
+ description: "Lifecycle state controlling whether this record remains available to its domain consumers."
6437
+ },
6438
+ timezone: {
6439
+ description: "IANA timezone used to interpret the record’s local dates and time bands.",
6440
+ type: "string"
6441
+ },
6442
+ expectedVersion: {
6443
+ exclusiveMinimum: 0,
6444
+ description: "Version last read by the caller. The mutation fails if another writer has changed this record.",
6445
+ type: "integer"
6446
+ },
6447
+ id: {
6448
+ description: "Stable srs-prefixed Scheduling record identifier; ownership is checked in the authenticated organization.",
6449
+ pattern: "^srs_[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$",
6450
+ type: "string"
6451
+ }
6452
+ }
6453
+ },
6454
+ title: "Update Resource",
6455
+ description: "Update the agenda named in the path using its expected version.",
6456
+ effect: "write",
6457
+ confirmation: null,
6458
+ hidden: false
6459
+ },
6460
+ "agenda schedule-rules list": {
6461
+ operation: "agenda.scheduleRules.list",
6462
+ sdkPath: [
6463
+ "agenda",
6464
+ "scheduleRules",
6465
+ "list"
6466
+ ],
6467
+ pathField: null,
6468
+ fields: [
6469
+ {
6470
+ name: "resourceId",
6471
+ flag: "resource-id",
6472
+ kind: "string",
6473
+ required: false,
6474
+ description: "Scheduling resource addressed by this request or associated with this record."
6475
+ }
6476
+ ],
6477
+ inputSchema: {
6478
+ additionalProperties: false,
6479
+ type: "object",
6480
+ properties: {
6481
+ resourceId: {
6482
+ description: "Scheduling resource addressed by this request or associated with this record.",
6483
+ pattern: "^srs_[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$",
6484
+ type: "string"
6485
+ }
6486
+ }
6487
+ },
6488
+ title: "List Schedule Rules",
6489
+ description: "Read the agenda’s weekly bands and dated overrides in its local timezone.",
6490
+ effect: "read",
6491
+ confirmation: null,
6492
+ hidden: false
6493
+ },
6494
+ "agenda schedule-rules replace": {
6495
+ operation: "agenda.scheduleRules.replace",
6496
+ sdkPath: [
6497
+ "agenda",
6498
+ "scheduleRules",
6499
+ "replace"
6500
+ ],
6501
+ pathField: "resourceId",
6502
+ fields: [],
6503
+ inputSchema: {
6504
+ additionalProperties: false,
6505
+ type: "object",
6506
+ required: [
6507
+ "expectedRules",
6508
+ "resourceId",
6509
+ "rules"
6510
+ ],
6511
+ properties: {
6512
+ expectedRules: {
6513
+ maxItems: 400,
6514
+ type: "array",
6515
+ items: {
6516
+ additionalProperties: false,
6517
+ type: "object",
6518
+ required: [
6519
+ "id",
6520
+ "version"
6521
+ ],
6522
+ properties: {
6523
+ id: {
6524
+ description: "Stable sch-prefixed Scheduling record identifier; ownership is checked in the authenticated organization.",
6525
+ pattern: "^sch_[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$",
6526
+ type: "string"
6527
+ },
6528
+ version: {
6529
+ exclusiveMinimum: 0,
6530
+ description: "Version last read by the caller. The mutation fails when another writer has changed this record.",
6531
+ type: "integer"
6532
+ }
6533
+ }
6534
+ },
6535
+ description: "Identifiers and versions of the complete schedule loaded by the editor; concurrent changes reject the replacement."
6536
+ },
6537
+ resourceId: {
6538
+ description: "Stable srs-prefixed Scheduling record identifier; ownership is checked in the authenticated organization.",
6539
+ pattern: "^srs_[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$",
6540
+ type: "string"
6541
+ },
6542
+ rules: {
6543
+ maxItems: 400,
6544
+ type: "array",
6545
+ items: {
6546
+ additionalProperties: false,
6547
+ type: "object",
6548
+ required: [
6549
+ "endTime",
6550
+ "kind",
6551
+ "startTime"
6552
+ ],
6553
+ properties: {
6554
+ date: {
6555
+ anyOf: [
6556
+ {
6557
+ format: "date",
6558
+ type: "string"
6559
+ },
6560
+ {
6561
+ type: "null"
6562
+ }
6563
+ ],
6564
+ description: "Specific local calendar date for a dated band or closure; null for a weekly band.",
6565
+ default: null
6566
+ },
6567
+ effectiveFrom: {
6568
+ anyOf: [
6569
+ {
6570
+ format: "date",
6571
+ type: "string"
6572
+ },
6573
+ {
6574
+ type: "null"
6575
+ }
6576
+ ],
6577
+ description: "First local date on which this weekly band applies; null means no lower date bound.",
6578
+ default: null
6579
+ },
6580
+ effectiveTo: {
6581
+ anyOf: [
6582
+ {
6583
+ format: "date",
6584
+ type: "string"
6585
+ },
6586
+ {
6587
+ type: "null"
6588
+ }
6589
+ ],
6590
+ description: "Last local date on which this weekly band applies; null means no upper date bound.",
6591
+ default: null
6592
+ },
6593
+ endTime: {
6594
+ pattern: "^(?:[01]\\d|2[0-3]):[0-5]\\d$",
6595
+ description: "End of this local time band in HH:MM, interpreted in its resource’s timezone.",
6596
+ type: "string"
6597
+ },
6598
+ kind: {
6599
+ anyOf: [
6600
+ {
6601
+ const: "weekly",
6602
+ type: "string"
6603
+ },
6604
+ {
6605
+ const: "date_override",
6606
+ type: "string"
6607
+ },
6608
+ {
6609
+ const: "time_off",
6610
+ type: "string"
6611
+ },
6612
+ {
6613
+ const: "block",
6614
+ type: "string"
6615
+ }
6616
+ ],
6617
+ description: "Declared domain kind of this record or configuration element."
6618
+ },
6619
+ startTime: {
6620
+ pattern: "^(?:[01]\\d|2[0-3]):[0-5]\\d$",
6621
+ description: "Start of this local time band in HH:MM, interpreted in its resource’s timezone.",
6622
+ type: "string"
6623
+ },
6624
+ weekdays: {
6625
+ maxItems: 7,
6626
+ type: "array",
6627
+ items: {
6628
+ minimum: 0,
6629
+ maximum: 6,
6630
+ type: "integer"
6631
+ },
6632
+ description: "Local weekdays on which a weekly band applies, numbered Sunday 0 through Saturday 6.",
6633
+ default: []
6634
+ }
6635
+ }
6636
+ },
6637
+ description: "Schedule bands or profile policy rules owned by this configuration."
6638
+ }
6639
+ }
6640
+ },
6641
+ title: "Replace Schedule Rules",
6642
+ description: "Replace the agenda’s complete working-rule set atomically using its expected resource version.",
6643
+ effect: "write",
6644
+ confirmation: null,
6645
+ hidden: false
6646
+ },
6647
+ "agenda schedule-rules upsert": {
6648
+ operation: "agenda.scheduleRules.upsert",
6649
+ sdkPath: [
6650
+ "agenda",
6651
+ "scheduleRules",
6652
+ "upsert"
6653
+ ],
6654
+ pathField: "resourceId",
6655
+ fields: [
6656
+ {
6657
+ name: "date",
6658
+ flag: "date",
6659
+ kind: "string",
6660
+ required: false,
6661
+ description: "Specific local calendar date for a dated band or closure; null for a weekly band.",
6662
+ default: null
6663
+ },
6664
+ {
6665
+ name: "effectiveFrom",
6666
+ flag: "effective-from",
6667
+ kind: "string",
6668
+ required: false,
6669
+ description: "First local date on which this weekly band applies; null means no lower date bound.",
6670
+ default: null
6671
+ },
6672
+ {
6673
+ name: "effectiveTo",
6674
+ flag: "effective-to",
6675
+ kind: "string",
6676
+ required: false,
6677
+ description: "Last local date on which this weekly band applies; null means no upper date bound.",
6678
+ default: null
6679
+ },
6680
+ {
6681
+ name: "endTime",
6682
+ flag: "end-time",
6683
+ kind: "string",
6684
+ required: true,
6685
+ description: "End of this local time band in HH:MM, interpreted in its resource’s timezone."
6686
+ },
6687
+ {
6688
+ name: "kind",
6689
+ flag: "kind",
6690
+ kind: "string",
6691
+ required: true,
6692
+ description: "Declared domain kind of this record or configuration element.",
6693
+ choices: [
6694
+ "weekly",
6695
+ "date_override",
6696
+ "time_off",
6697
+ "block"
6698
+ ]
6699
+ },
6700
+ {
6701
+ name: "startTime",
6702
+ flag: "start-time",
6703
+ kind: "string",
6704
+ required: true,
6705
+ description: "Start of this local time band in HH:MM, interpreted in its resource’s timezone."
6706
+ },
6707
+ {
6708
+ name: "timezone",
6709
+ flag: "timezone",
6710
+ kind: "string",
6711
+ required: true,
6712
+ description: "IANA timezone used to interpret the record’s local dates and time bands."
6713
+ },
6714
+ {
6715
+ name: "expectedVersion",
6716
+ flag: "expected-version",
6717
+ kind: "integer",
6718
+ required: false,
6719
+ description: "Version last read by the caller. The mutation fails if another writer has changed this record."
6720
+ },
6721
+ {
6722
+ name: "id",
6723
+ flag: "id",
6724
+ kind: "string",
6725
+ required: false,
6726
+ description: "Identifier of the record addressed or returned by this schema."
6727
+ }
6728
+ ],
6729
+ inputSchema: {
6730
+ additionalProperties: false,
6731
+ type: "object",
6732
+ required: [
6733
+ "endTime",
6734
+ "kind",
6735
+ "resourceId",
6736
+ "startTime",
6737
+ "timezone"
6738
+ ],
6739
+ properties: {
6740
+ date: {
6741
+ anyOf: [
6742
+ {
6743
+ format: "date",
6744
+ type: "string"
6745
+ },
6746
+ {
6747
+ type: "null"
6748
+ }
6749
+ ],
6750
+ description: "Specific local calendar date for a dated band or closure; null for a weekly band.",
6751
+ default: null
6752
+ },
6753
+ effectiveFrom: {
6754
+ anyOf: [
6755
+ {
6756
+ format: "date",
6757
+ type: "string"
6758
+ },
6759
+ {
6760
+ type: "null"
6761
+ }
6762
+ ],
6763
+ description: "First local date on which this weekly band applies; null means no lower date bound.",
6764
+ default: null
6765
+ },
6766
+ effectiveTo: {
6767
+ anyOf: [
6768
+ {
6769
+ format: "date",
6770
+ type: "string"
6771
+ },
6772
+ {
6773
+ type: "null"
6774
+ }
6775
+ ],
6776
+ description: "Last local date on which this weekly band applies; null means no upper date bound.",
6777
+ default: null
6778
+ },
6779
+ endTime: {
6780
+ pattern: "^(?:[01]\\d|2[0-3]):[0-5]\\d$",
6781
+ description: "End of this local time band in HH:MM, interpreted in its resource’s timezone.",
6782
+ type: "string"
6783
+ },
6784
+ kind: {
6785
+ anyOf: [
6786
+ {
6787
+ const: "weekly",
6788
+ type: "string"
6789
+ },
6790
+ {
6791
+ const: "date_override",
6792
+ type: "string"
6793
+ },
6794
+ {
6795
+ const: "time_off",
6796
+ type: "string"
6797
+ },
6798
+ {
6799
+ const: "block",
6800
+ type: "string"
6801
+ }
6802
+ ],
6803
+ description: "Declared domain kind of this record or configuration element."
6804
+ },
6805
+ resourceId: {
6806
+ description: "Scheduling resource addressed by this request or associated with this record.",
6807
+ pattern: "^srs_[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$",
6808
+ type: "string"
6809
+ },
6810
+ startTime: {
6811
+ pattern: "^(?:[01]\\d|2[0-3]):[0-5]\\d$",
6812
+ description: "Start of this local time band in HH:MM, interpreted in its resource’s timezone.",
6813
+ type: "string"
6814
+ },
6815
+ timezone: {
6816
+ description: "IANA timezone used to interpret the record’s local dates and time bands.",
6817
+ type: "string"
6818
+ },
6819
+ weekdays: {
6820
+ maxItems: 7,
6821
+ type: "array",
6822
+ items: {
6823
+ minimum: 0,
6824
+ maximum: 6,
6825
+ type: "integer"
6826
+ },
6827
+ description: "Local weekdays on which a weekly band applies, numbered Sunday 0 through Saturday 6.",
6828
+ default: []
6829
+ },
6830
+ expectedVersion: {
6831
+ exclusiveMinimum: 0,
6832
+ description: "Version last read by the caller. The mutation fails if another writer has changed this record.",
6833
+ type: "integer"
6834
+ },
6835
+ id: {
6836
+ description: "Identifier of the record addressed or returned by this schema.",
6837
+ pattern: "^sch_[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$",
6838
+ type: "string"
6839
+ }
6840
+ }
6841
+ },
6842
+ title: "Upsert Schedule Rule",
6843
+ description: "Write one working rule for the agenda using the expected resource version.",
6844
+ effect: "write",
6845
+ confirmation: null,
6846
+ hidden: false
6847
+ },
6848
+ "agenda services create": {
6849
+ operation: "agenda.services.create",
6850
+ sdkPath: [
6851
+ "agenda",
6852
+ "services",
6853
+ "create"
6854
+ ],
6855
+ pathField: null,
6856
+ fields: [
6857
+ {
6858
+ name: "defaultDurationMinutes",
6859
+ flag: "default-duration-minutes",
6860
+ kind: "integer",
6861
+ required: true,
6862
+ description: "Default appointment duration for this service, in minutes. Each offering can specify its own duration."
6863
+ },
6864
+ {
6865
+ name: "name",
6866
+ flag: "name",
6867
+ kind: "string",
6868
+ required: true,
6869
+ description: "Display name of this catalog or configuration record."
6870
+ },
6871
+ {
6872
+ name: "status",
6873
+ flag: "status",
6874
+ kind: "string",
6875
+ required: false,
6876
+ description: "Lifecycle state controlling whether this record remains available to its domain consumers.",
6877
+ choices: [
6878
+ "active",
6879
+ "inactive"
6880
+ ],
6881
+ default: "active"
6882
+ }
6883
+ ],
6884
+ inputSchema: {
6885
+ additionalProperties: false,
6886
+ type: "object",
6887
+ required: [
6888
+ "defaultDurationMinutes",
6889
+ "name"
6890
+ ],
6891
+ properties: {
6892
+ defaultDurationMinutes: {
6893
+ minimum: 1,
6894
+ maximum: 1440,
6895
+ description: "Default appointment duration for this service, in minutes. Each offering can specify its own duration.",
6896
+ type: "integer"
6897
+ },
6898
+ details: {
6899
+ type: "object",
6900
+ patternProperties: {
6901
+ "^.{1,200}$": {
6902
+ $ref: "#/components/schemas/AgendaSchedulingJsonValue",
6903
+ description: "JSON-compatible configuration value; strings, arrays and objects have bounded size."
6904
+ }
6905
+ },
6906
+ description: "Bounded JSON configuration owned by this catalog record, including supported domain settings.",
6907
+ default: {}
6908
+ },
6909
+ name: {
6910
+ type: "string",
6911
+ description: "Display name of this catalog or configuration record."
6912
+ },
6913
+ status: {
6914
+ anyOf: [
6915
+ {
6916
+ const: "active",
6917
+ type: "string"
6918
+ },
6919
+ {
6920
+ const: "inactive",
6921
+ type: "string"
6922
+ }
6923
+ ],
6924
+ default: "active",
6925
+ description: "Lifecycle state controlling whether this record remains available to its domain consumers."
6926
+ }
6927
+ }
6928
+ },
6929
+ title: "Create Service",
6930
+ description: "Create a bookable service with its intake, eligibility and duration policy.",
6931
+ effect: "write",
6932
+ confirmation: null,
6933
+ hidden: false
6934
+ },
6935
+ "agenda services list": {
6936
+ operation: "agenda.services.list",
6937
+ sdkPath: [
6938
+ "agenda",
6939
+ "services",
6940
+ "list"
6941
+ ],
6942
+ pathField: null,
6943
+ fields: [
6944
+ {
6945
+ name: "cursor",
6946
+ flag: "cursor",
6947
+ kind: "string",
6948
+ required: false,
6949
+ description: "Opaque cursor returned by pageInfo; omit it to request the first page."
6950
+ },
6951
+ {
6952
+ name: "direction",
6953
+ flag: "direction",
6954
+ kind: "string",
6955
+ required: false,
6956
+ description: "Direction to traverse the stable keyset ordering from the supplied cursor.",
6957
+ choices: [
6958
+ "forward",
6959
+ "backward"
6960
+ ],
6961
+ default: "forward"
6962
+ },
6963
+ {
6964
+ name: "limit",
6965
+ flag: "limit",
6966
+ kind: "integer",
6967
+ required: false,
6968
+ description: "Maximum items returned in one page. Defaults to 25; larger reads require another cursor.",
6969
+ default: 25
6970
+ },
6971
+ {
6972
+ name: "status",
6973
+ flag: "status",
6974
+ kind: "string",
6975
+ required: false,
6976
+ description: "Filter the collection by the stored active or inactive lifecycle state; omit it to include both.",
6977
+ choices: [
6978
+ "active",
6979
+ "inactive"
6980
+ ]
6981
+ }
6982
+ ],
6983
+ inputSchema: {
6984
+ additionalProperties: false,
6985
+ type: "object",
6986
+ required: [],
6987
+ properties: {
6988
+ cursor: {
6989
+ description: "Opaque cursor returned by pageInfo; omit it to request the first page.",
6990
+ type: "string"
6991
+ },
6992
+ direction: {
6993
+ description: "Direction to traverse the stable keyset ordering from the supplied cursor.",
6994
+ anyOf: [
6995
+ {
6996
+ const: "forward",
6997
+ type: "string"
6998
+ },
6999
+ {
7000
+ const: "backward",
7001
+ type: "string"
7002
+ }
7003
+ ],
7004
+ default: "forward"
7005
+ },
7006
+ limit: {
7007
+ minimum: 1,
7008
+ maximum: 100,
7009
+ description: "Maximum items returned in one page. Defaults to 25; larger reads require another cursor.",
7010
+ type: "integer",
7011
+ default: 25
7012
+ },
7013
+ status: {
7014
+ anyOf: [
7015
+ {
7016
+ const: "active",
7017
+ type: "string"
7018
+ },
7019
+ {
7020
+ const: "inactive",
7021
+ type: "string"
7022
+ }
7023
+ ],
7024
+ description: "Filter the collection by the stored active or inactive lifecycle state; omit it to include both."
7025
+ }
7026
+ }
7027
+ },
7028
+ title: "List Services",
7029
+ description: "List services using tenant-qualified filters and stable keyset pagination.",
7030
+ effect: "read",
7031
+ confirmation: null,
7032
+ hidden: false
7033
+ },
7034
+ "agenda services update": {
7035
+ operation: "agenda.services.update",
7036
+ sdkPath: [
7037
+ "agenda",
7038
+ "services",
7039
+ "update"
7040
+ ],
7041
+ pathField: "id",
7042
+ fields: [
7043
+ {
7044
+ name: "defaultDurationMinutes",
7045
+ flag: "default-duration-minutes",
7046
+ kind: "integer",
7047
+ required: false,
7048
+ description: "Default appointment duration for this service, in minutes. Each offering can specify its own duration."
7049
+ },
7050
+ {
7051
+ name: "name",
7052
+ flag: "name",
7053
+ kind: "string",
7054
+ required: false,
7055
+ description: "Display name of this catalog or configuration record."
7056
+ },
7057
+ {
7058
+ name: "status",
7059
+ flag: "status",
7060
+ kind: "string",
7061
+ required: false,
7062
+ description: "Lifecycle state controlling whether this record remains available to its domain consumers.",
7063
+ choices: [
7064
+ "active",
7065
+ "inactive"
7066
+ ]
7067
+ },
7068
+ {
7069
+ name: "expectedVersion",
7070
+ flag: "expected-version",
7071
+ kind: "integer",
7072
+ required: true,
7073
+ description: "Version last read by the caller. The mutation fails if another writer has changed this record."
7074
+ }
7075
+ ],
7076
+ inputSchema: {
7077
+ additionalProperties: false,
7078
+ type: "object",
7079
+ required: [
7080
+ "expectedVersion",
7081
+ "id"
7082
+ ],
7083
+ properties: {
7084
+ defaultDurationMinutes: {
7085
+ minimum: 1,
7086
+ maximum: 1440,
7087
+ description: "Default appointment duration for this service, in minutes. Each offering can specify its own duration.",
7088
+ type: "integer"
7089
+ },
7090
+ details: {
7091
+ type: "object",
7092
+ patternProperties: {
7093
+ "^.{1,200}$": {
7094
+ $ref: "#/components/schemas/AgendaSchedulingJsonValue",
7095
+ description: "JSON-compatible configuration value; strings, arrays and objects have bounded size."
7096
+ }
7097
+ },
7098
+ description: "Bounded JSON configuration owned by this catalog record, including supported domain settings."
7099
+ },
7100
+ name: {
7101
+ type: "string",
7102
+ description: "Display name of this catalog or configuration record."
7103
+ },
7104
+ status: {
7105
+ anyOf: [
7106
+ {
7107
+ const: "active",
7108
+ type: "string"
7109
+ },
7110
+ {
7111
+ const: "inactive",
7112
+ type: "string"
7113
+ }
7114
+ ],
7115
+ description: "Lifecycle state controlling whether this record remains available to its domain consumers."
7116
+ },
7117
+ expectedVersion: {
7118
+ exclusiveMinimum: 0,
7119
+ description: "Version last read by the caller. The mutation fails if another writer has changed this record.",
7120
+ type: "integer"
7121
+ },
7122
+ id: {
7123
+ description: "Stable svc-prefixed Scheduling record identifier; ownership is checked in the authenticated organization.",
7124
+ pattern: "^svc_[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$",
7125
+ type: "string"
7126
+ }
7127
+ }
7128
+ },
7129
+ title: "Update Service",
7130
+ description: "Update the service named in the path using its expected version.",
7131
+ effect: "write",
7132
+ confirmation: null,
7133
+ hidden: false
7134
+ },
7135
+ "agenda waitlist join": {
7136
+ operation: "agenda.waitlist.join",
7137
+ sdkPath: [
7138
+ "agenda",
7139
+ "waitlist",
7140
+ "join"
7141
+ ],
7142
+ pathField: null,
7143
+ fields: [
7144
+ {
7145
+ name: "appointmentId",
7146
+ flag: "appointment-id",
7147
+ kind: "string",
7148
+ required: false,
7149
+ description: "The appointment it relates to: a priority to bring forward.",
7150
+ default: null
7151
+ },
7152
+ {
7153
+ name: "conversationUrl",
7154
+ flag: "conversation-url",
7155
+ kind: "string",
7156
+ required: false,
7157
+ description: "Agent conversation URL retained so the scheduling team can reopen the referring conversation.",
7158
+ default: null
7159
+ },
7160
+ {
7161
+ name: "note",
7162
+ flag: "note",
7163
+ kind: "string",
7164
+ required: false,
7165
+ description: "Desk note attached to the waiting-list entry; null means no note is recorded.",
7166
+ default: null
7167
+ },
7168
+ {
7169
+ name: "payer",
7170
+ flag: "payer",
7171
+ kind: "string",
7172
+ required: false,
7173
+ description: "The payer the patient named, as said.",
7174
+ default: null
7175
+ },
7176
+ {
7177
+ name: "phone",
7178
+ flag: "phone",
7179
+ kind: "string",
7180
+ required: false,
7181
+ description: "Patient contact telephone number; null when no number was recorded.",
7182
+ default: null
7183
+ },
7184
+ {
7185
+ name: "reason",
7186
+ flag: "reason",
7187
+ kind: "string",
7188
+ required: true,
7189
+ description: "manual records a consented waitlist request after no suitable availability; payer_review asks staff to coordinate a restricted payer; priority asks staff to bring an existing booking forward.",
7190
+ choices: [
7191
+ "manual",
7192
+ "payer_review",
7193
+ "priority"
7194
+ ]
7195
+ },
7196
+ {
7197
+ name: "resourceId",
7198
+ flag: "resource-id",
7199
+ kind: "string",
7200
+ required: false,
7201
+ description: "One professional or agenda; null = any that offers the service.",
7202
+ default: null
7203
+ },
7204
+ {
7205
+ name: "serviceId",
7206
+ flag: "service-id",
7207
+ kind: "string",
7208
+ required: true,
7209
+ description: "Service identifier within the authenticated organization."
7210
+ },
7211
+ {
7212
+ name: "channel",
7213
+ flag: "channel",
7214
+ kind: "string",
7215
+ required: false,
7216
+ description: "The conversation's channel, set by the platform. It changes nothing in Agenda; omit it.",
7217
+ choices: [
7218
+ "voice",
7219
+ "whatsapp",
7220
+ "web"
7221
+ ]
7222
+ },
7223
+ {
7224
+ name: "connectionId",
7225
+ flag: "connection-id",
7226
+ kind: "string",
7227
+ required: false,
7228
+ description: "The platform's id for the organization's Agenda, set by the platform. An organization has one Agenda, so it selects nothing; omit it."
7229
+ }
7230
+ ],
7231
+ inputSchema: {
7232
+ additionalProperties: false,
7233
+ type: "object",
7234
+ required: [
7235
+ "patient",
7236
+ "reason",
7237
+ "serviceId"
7238
+ ],
7239
+ properties: {
7240
+ appointmentId: {
7241
+ description: "The appointment it relates to: a priority to bring forward.",
7242
+ anyOf: [
7243
+ {
7244
+ description: "Stable eng-prefixed Scheduling record identifier; ownership is checked in the authenticated organization.",
7245
+ pattern: "^eng_[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$",
7246
+ type: "string"
7247
+ },
7248
+ {
7249
+ type: "null"
7250
+ }
7251
+ ],
7252
+ default: null
7253
+ },
7254
+ conversationUrl: {
7255
+ anyOf: [
7256
+ {
7257
+ format: "uri",
7258
+ maxLength: 500,
7259
+ type: "string"
7260
+ },
7261
+ {
7262
+ type: "null"
7263
+ }
7264
+ ],
7265
+ default: null,
7266
+ description: "Agent conversation URL retained so the scheduling team can reopen the referring conversation."
7267
+ },
7268
+ note: {
7269
+ anyOf: [
7270
+ {
7271
+ type: "string"
7272
+ },
7273
+ {
7274
+ type: "null"
7275
+ }
7276
+ ],
7277
+ default: null,
7278
+ description: "Desk note attached to the waiting-list entry; null means no note is recorded."
7279
+ },
7280
+ patient: {
7281
+ $ref: "#/components/schemas/AgendaPatientIdentityInput",
7282
+ description: "Patient identity copied into the booking; null when no patient identity was supplied."
7283
+ },
7284
+ payer: {
7285
+ description: "The payer the patient named, as said.",
7286
+ anyOf: [
7287
+ {
7288
+ type: "string"
7289
+ },
7290
+ {
7291
+ type: "null"
7292
+ }
7293
+ ],
7294
+ default: null
7295
+ },
7296
+ phone: {
7297
+ anyOf: [
7298
+ {
7299
+ type: "string"
7300
+ },
7301
+ {
7302
+ type: "null"
7303
+ }
7304
+ ],
7305
+ default: null,
7306
+ description: "Patient contact telephone number; null when no number was recorded."
7307
+ },
7308
+ reason: {
7309
+ anyOf: [
7310
+ {
7311
+ const: "manual",
7312
+ type: "string"
7313
+ },
7314
+ {
7315
+ const: "payer_review",
7316
+ type: "string"
7317
+ },
7318
+ {
7319
+ const: "priority",
7320
+ type: "string"
7321
+ }
7322
+ ],
7323
+ description: "manual records a consented waitlist request after no suitable availability; payer_review asks staff to coordinate a restricted payer; priority asks staff to bring an existing booking forward."
7324
+ },
7325
+ resourceId: {
7326
+ description: "One professional or agenda; null = any that offers the service.",
7327
+ anyOf: [
7328
+ {
7329
+ description: "Stable srs-prefixed Scheduling record identifier; ownership is checked in the authenticated organization.",
7330
+ pattern: "^srs_[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$",
7331
+ type: "string"
7332
+ },
7333
+ {
7334
+ type: "null"
7335
+ }
7336
+ ],
7337
+ default: null
7338
+ },
7339
+ serviceId: {
7340
+ description: "Service identifier within the authenticated organization.",
7341
+ pattern: "^svc_[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$",
7342
+ type: "string"
7343
+ },
7344
+ channel: {
6273
7345
  anyOf: [
6274
7346
  {
6275
7347
  const: "voice",
@@ -12348,6 +13420,279 @@ var commands = {
12348
13420
  confirmation: null,
12349
13421
  hidden: false
12350
13422
  },
13423
+ "raiz channels create": {
13424
+ operation: "raiz.channels.create",
13425
+ sdkPath: [
13426
+ "raiz",
13427
+ "channels",
13428
+ "create"
13429
+ ],
13430
+ pathField: null,
13431
+ fields: [],
13432
+ inputSchema: {
13433
+ anyOf: [
13434
+ {
13435
+ description: "A pending WhatsApp channel and the setup link where the customer connects their number. Call `verifyChannel` once they finish.",
13436
+ additionalProperties: false,
13437
+ type: "object",
13438
+ required: [
13439
+ "channelType"
13440
+ ],
13441
+ properties: {
13442
+ agentId: {
13443
+ description: "Agent id.",
13444
+ examples: [
13445
+ "agt_01m45h8q2rf3t9w6y7z0b1c2d3"
13446
+ ],
13447
+ pattern: "^agt_(?:[0-7][0-9a-hjkmnp-tv-z]{25}|(?:[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}|[a-f0-9]{32}))$",
13448
+ type: "string"
13449
+ },
13450
+ inboundEnabled: {
13451
+ description: "Inbound traffic needs an assigned Agent. WhatsApp outbound traffic can send notifications without one; other channel types require an Agent. Defaults to on when created with an Agent.",
13452
+ type: "boolean"
13453
+ },
13454
+ name: {
13455
+ maxLength: 120,
13456
+ minLength: 1,
13457
+ type: "string"
13458
+ },
13459
+ outboundEnabled: {
13460
+ description: "Inbound traffic needs an assigned Agent. WhatsApp outbound traffic can send notifications without one; other channel types require an Agent. Defaults to on when created with an Agent.",
13461
+ type: "boolean"
13462
+ },
13463
+ channelType: {
13464
+ const: "whatsapp",
13465
+ type: "string"
13466
+ }
13467
+ }
13468
+ },
13469
+ {
13470
+ description: "A voice number, connected at once.",
13471
+ additionalProperties: false,
13472
+ type: "object",
13473
+ required: [
13474
+ "channelType",
13475
+ "endpoint"
13476
+ ],
13477
+ properties: {
13478
+ agentId: {
13479
+ description: "Agent id.",
13480
+ examples: [
13481
+ "agt_01m45h8q2rf3t9w6y7z0b1c2d3"
13482
+ ],
13483
+ pattern: "^agt_(?:[0-7][0-9a-hjkmnp-tv-z]{25}|(?:[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}|[a-f0-9]{32}))$",
13484
+ type: "string"
13485
+ },
13486
+ inboundEnabled: {
13487
+ description: "Inbound traffic needs an assigned Agent. WhatsApp outbound traffic can send notifications without one; other channel types require an Agent. Defaults to on when created with an Agent.",
13488
+ type: "boolean"
13489
+ },
13490
+ name: {
13491
+ maxLength: 120,
13492
+ minLength: 1,
13493
+ type: "string"
13494
+ },
13495
+ outboundEnabled: {
13496
+ description: "Inbound traffic needs an assigned Agent. WhatsApp outbound traffic can send notifications without one; other channel types require an Agent. Defaults to on when created with an Agent.",
13497
+ type: "boolean"
13498
+ },
13499
+ channelType: {
13500
+ const: "voice",
13501
+ type: "string"
13502
+ },
13503
+ endpoint: {
13504
+ anyOf: [
13505
+ {
13506
+ description: "A phone number the platform already owns.",
13507
+ additionalProperties: false,
13508
+ type: "object",
13509
+ required: [
13510
+ "kind",
13511
+ "phoneNumber"
13512
+ ],
13513
+ properties: {
13514
+ kind: {
13515
+ const: "platform_number",
13516
+ type: "string"
13517
+ },
13518
+ label: {
13519
+ maxLength: 120,
13520
+ type: "string"
13521
+ },
13522
+ phoneNumber: {
13523
+ $ref: "#/components/schemas/RaizPhoneNumber",
13524
+ description: "Phone number in E.164 format."
13525
+ }
13526
+ }
13527
+ },
13528
+ {
13529
+ description: "The organization's own carrier, reached over SIP.",
13530
+ additionalProperties: false,
13531
+ type: "object",
13532
+ required: [
13533
+ "address",
13534
+ "kind",
13535
+ "phoneNumber"
13536
+ ],
13537
+ properties: {
13538
+ address: {
13539
+ description: "The SIP host or IP the carrier receives calls at, with an optional port.",
13540
+ maxLength: 253,
13541
+ pattern: "^[A-Za-z0-9]([A-Za-z0-9.-]*[A-Za-z0-9])?(:[0-9]{1,5})?$",
13542
+ type: "string"
13543
+ },
13544
+ kind: {
13545
+ const: "sip_trunk",
13546
+ type: "string"
13547
+ },
13548
+ label: {
13549
+ maxLength: 120,
13550
+ type: "string"
13551
+ },
13552
+ mediaEncryption: {
13553
+ anyOf: [
13554
+ {
13555
+ const: "disabled",
13556
+ type: "string"
13557
+ },
13558
+ {
13559
+ const: "allowed",
13560
+ type: "string"
13561
+ },
13562
+ {
13563
+ const: "required",
13564
+ type: "string"
13565
+ }
13566
+ ]
13567
+ },
13568
+ password: {
13569
+ description: "Digest credentials, used once to connect the carrier and never stored.",
13570
+ maxLength: 256,
13571
+ writeOnly: true,
13572
+ type: "string"
13573
+ },
13574
+ phoneNumber: {
13575
+ $ref: "#/components/schemas/RaizPhoneNumber",
13576
+ description: "Phone number in E.164 format."
13577
+ },
13578
+ transport: {
13579
+ anyOf: [
13580
+ {
13581
+ const: "auto",
13582
+ type: "string"
13583
+ },
13584
+ {
13585
+ const: "udp",
13586
+ type: "string"
13587
+ },
13588
+ {
13589
+ const: "tcp",
13590
+ type: "string"
13591
+ },
13592
+ {
13593
+ const: "tls",
13594
+ type: "string"
13595
+ }
13596
+ ]
13597
+ },
13598
+ username: {
13599
+ maxLength: 256,
13600
+ type: "string"
13601
+ }
13602
+ }
13603
+ }
13604
+ ]
13605
+ }
13606
+ }
13607
+ },
13608
+ {
13609
+ description: "The chat widget, with its configuration.",
13610
+ additionalProperties: false,
13611
+ type: "object",
13612
+ required: [
13613
+ "channelType",
13614
+ "widget"
13615
+ ],
13616
+ properties: {
13617
+ agentId: {
13618
+ description: "Agent id.",
13619
+ examples: [
13620
+ "agt_01m45h8q2rf3t9w6y7z0b1c2d3"
13621
+ ],
13622
+ pattern: "^agt_(?:[0-7][0-9a-hjkmnp-tv-z]{25}|(?:[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}|[a-f0-9]{32}))$",
13623
+ type: "string"
13624
+ },
13625
+ inboundEnabled: {
13626
+ description: "Inbound traffic needs an assigned Agent. WhatsApp outbound traffic can send notifications without one; other channel types require an Agent. Defaults to on when created with an Agent.",
13627
+ type: "boolean"
13628
+ },
13629
+ name: {
13630
+ maxLength: 120,
13631
+ minLength: 1,
13632
+ type: "string"
13633
+ },
13634
+ outboundEnabled: {
13635
+ description: "Inbound traffic needs an assigned Agent. WhatsApp outbound traffic can send notifications without one; other channel types require an Agent. Defaults to on when created with an Agent.",
13636
+ type: "boolean"
13637
+ },
13638
+ channelType: {
13639
+ const: "web",
13640
+ type: "string"
13641
+ },
13642
+ widget: {
13643
+ $ref: "#/components/schemas/RaizWidgetSettingsInput",
13644
+ description: "The web chat widget's configuration."
13645
+ }
13646
+ }
13647
+ }
13648
+ ]
13649
+ },
13650
+ title: "Add a channel",
13651
+ description: "Add a channel. `whatsapp` creates a pending channel and a setup link (`setup.url`) where the business connects its WhatsApp number; call `verify_channel` once that is done. `voice` connects a platform phone number (`platform_number`) or the organization's own carrier over SIP (`sip_trunk`) at once (SIP credentials are passed on once and never stored). `web` creates the chat widget with its configuration. With an Agent, traffic is on by default. Done in Settings → Channels or the REST API; not an AI tool.",
13652
+ effect: "write",
13653
+ confirmation: null,
13654
+ hidden: false
13655
+ },
13656
+ "raiz channels delete": {
13657
+ operation: "raiz.channels.delete",
13658
+ sdkPath: [
13659
+ "raiz",
13660
+ "channels",
13661
+ "delete"
13662
+ ],
13663
+ pathField: null,
13664
+ fields: [
13665
+ {
13666
+ name: "channelId",
13667
+ flag: "channel-id",
13668
+ kind: "string",
13669
+ required: true,
13670
+ description: "Channel id."
13671
+ }
13672
+ ],
13673
+ inputSchema: {
13674
+ additionalProperties: false,
13675
+ type: "object",
13676
+ required: [
13677
+ "channelId"
13678
+ ],
13679
+ properties: {
13680
+ channelId: {
13681
+ description: "Channel id.",
13682
+ examples: [
13683
+ "chn_01m45h8q2rf3t9w6y7z0b1c2d3"
13684
+ ],
13685
+ pattern: "^(?:chn_(?:[0-7][0-9a-hjkmnp-tv-z]{25}|(?:[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}|[a-f0-9]{32}))|(?:agc)_(?:[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}|[a-f0-9]{32}))$",
13686
+ type: "string"
13687
+ }
13688
+ }
13689
+ },
13690
+ title: "Delete a channel",
13691
+ description: "Remove a channel; its conversations remain. A phone number stops receiving and placing calls (the number stays in the platform account, where Arbol staff can release it); a WhatsApp number stops sending messages to Raíz. To pause traffic instead, switch it off with `update_channel`. Not an AI tool.",
13692
+ effect: "delete",
13693
+ confirmation: "Delete a channel. This cannot be undone.",
13694
+ hidden: false
13695
+ },
12351
13696
  "raiz channels get": {
12352
13697
  operation: "raiz.channels.get",
12353
13698
  sdkPath: [
@@ -12550,6 +13895,46 @@ var commands = {
12550
13895
  confirmation: null,
12551
13896
  hidden: false
12552
13897
  },
13898
+ "raiz channels renew-setup": {
13899
+ operation: "raiz.channels.renewSetup",
13900
+ sdkPath: [
13901
+ "raiz",
13902
+ "channels",
13903
+ "renewSetup"
13904
+ ],
13905
+ pathField: null,
13906
+ fields: [
13907
+ {
13908
+ name: "channelId",
13909
+ flag: "channel-id",
13910
+ kind: "string",
13911
+ required: true,
13912
+ description: "Channel id."
13913
+ }
13914
+ ],
13915
+ inputSchema: {
13916
+ additionalProperties: false,
13917
+ type: "object",
13918
+ required: [
13919
+ "channelId"
13920
+ ],
13921
+ properties: {
13922
+ channelId: {
13923
+ description: "Channel id.",
13924
+ examples: [
13925
+ "chn_01m45h8q2rf3t9w6y7z0b1c2d3"
13926
+ ],
13927
+ pattern: "^(?:chn_(?:[0-7][0-9a-hjkmnp-tv-z]{25}|(?:[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}|[a-f0-9]{32}))|(?:agc)_(?:[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}|[a-f0-9]{32}))$",
13928
+ type: "string"
13929
+ }
13930
+ }
13931
+ },
13932
+ title: "Renew a WhatsApp setup link",
13933
+ description: "Issue a new setup link for a pending WhatsApp channel, returned in `setup`, when the previous one was lost or must go to someone else; the previous link stops working. The setup is checked first: if the business already connected its number, the channel is completed as `verify_channel` does and no link is returned. A channel that is not a pending WhatsApp number fails with INVALID_STATE or CHANNEL_TYPE_MISMATCH. Not an AI tool.",
13934
+ effect: "write",
13935
+ confirmation: null,
13936
+ hidden: false
13937
+ },
12553
13938
  "raiz channels update": {
12554
13939
  operation: "raiz.channels.update",
12555
13940
  sdkPath: [
@@ -17786,11 +19171,12 @@ var commands = {
17786
19171
  flag: "name",
17787
19172
  kind: "string",
17788
19173
  required: true,
17789
- description: "`conversations_daily`: conversations the AI took part in per day, Agent, channel type and direction, with outcomes, escalations to the team and the conversations to review (filters `agentId`, `channelType`); WhatsApp conversations the organization's people handled on their own are left out. `tool_calls_daily`: AI tool calls per day, Agent and tool, with failures and durations (filter `agentId`). `tool_calls`: the same calls one by one, newest first, each with its conversation, status, duration and error code, never its input or output (filter `agentId`). `assessment_results_daily`: yes/no assessments per day and definition (filter `definitionId`). `campaign_progress`: recipients per campaign by status (filter `campaignId`; no date range).",
19174
+ description: "`conversations_daily`: conversations the AI took part in per day, Agent, channel type and direction, with outcomes and escalations (filters `agentId`, `channelType`). `booking_outcomes`: verified saved booking receipts per completion day, Agent and integration, excluding test/import/deleted conversations; confirmed new bookings, reschedules, cancellations, failed, pending, unverified and duplicate receipts separately (filter `agentId`). Historical evidence, not current appointment status; hasMore requires splitting the range and returns no partial totals. `tool_calls_daily`: tool calls per day, Agent and tool with failures/durations (filter `agentId`). `tool_calls`: individual calls, never inputs/outputs (filter `agentId`). `assessment_results_daily`: assessments per day/definition (filter `definitionId`). `campaign_progress`: recipients by status (filter `campaignId`; no dates).",
17790
19175
  choices: [
17791
19176
  "conversations_daily",
17792
19177
  "tool_calls_daily",
17793
19178
  "tool_calls",
19179
+ "booking_outcomes",
17794
19180
  "assessment_results_daily",
17795
19181
  "campaign_progress"
17796
19182
  ]
@@ -17852,7 +19238,7 @@ var commands = {
17852
19238
  type: "string"
17853
19239
  },
17854
19240
  name: {
17855
- description: "`conversations_daily`: conversations the AI took part in per day, Agent, channel type and direction, with outcomes, escalations to the team and the conversations to review (filters `agentId`, `channelType`); WhatsApp conversations the organization's people handled on their own are left out. `tool_calls_daily`: AI tool calls per day, Agent and tool, with failures and durations (filter `agentId`). `tool_calls`: the same calls one by one, newest first, each with its conversation, status, duration and error code, never its input or output (filter `agentId`). `assessment_results_daily`: yes/no assessments per day and definition (filter `definitionId`). `campaign_progress`: recipients per campaign by status (filter `campaignId`; no date range).",
19241
+ description: "`conversations_daily`: conversations the AI took part in per day, Agent, channel type and direction, with outcomes and escalations (filters `agentId`, `channelType`). `booking_outcomes`: verified saved booking receipts per completion day, Agent and integration, excluding test/import/deleted conversations; confirmed new bookings, reschedules, cancellations, failed, pending, unverified and duplicate receipts separately (filter `agentId`). Historical evidence, not current appointment status; hasMore requires splitting the range and returns no partial totals. `tool_calls_daily`: tool calls per day, Agent and tool with failures/durations (filter `agentId`). `tool_calls`: individual calls, never inputs/outputs (filter `agentId`). `assessment_results_daily`: assessments per day/definition (filter `definitionId`). `campaign_progress`: recipients by status (filter `campaignId`; no dates).",
17856
19242
  anyOf: [
17857
19243
  {
17858
19244
  const: "conversations_daily",
@@ -17866,6 +19252,10 @@ var commands = {
17866
19252
  const: "tool_calls",
17867
19253
  type: "string"
17868
19254
  },
19255
+ {
19256
+ const: "booking_outcomes",
19257
+ type: "string"
19258
+ },
17869
19259
  {
17870
19260
  const: "assessment_results_daily",
17871
19261
  type: "string"
@@ -17888,7 +19278,7 @@ var commands = {
17888
19278
  additionalProperties: false
17889
19279
  },
17890
19280
  title: "Get a report",
17891
- description: "Get the numbers behind a question. `name`: `conversations_daily` (conversations the AI took part in, per day), `tool_calls_daily` (Agent tool calls per day), `tool_calls` (each call, newest first), `assessment_results_daily` (assessment results per day), each over days in the organization's time zone (`from`, `to`; the last 30 days by default), or `campaign_progress`. Narrow with `agentId`, `channelType`, `campaignId` or `definitionId`; a filter that does not apply to the report fails with REPORT_FILTER_UNSUPPORTED. At most 1000 rows: `hasMore` means narrow the range. The `reports-and-charts` skill turns results into a chart or table.",
19281
+ description: "Get the numbers behind a question. `name`: `conversations_daily` (conversations the AI took part in, per day), `booking_outcomes` (verified saved booking receipts by completion day and integration, excluding tests, imports and deleted conversations; new bookings, reschedules, cancellations, failures, pending and unverified results separately), `tool_calls_daily` (Agent tool calls per day), `tool_calls` (each call, newest first), `assessment_results_daily` (assessment results per day), each over days in the organization's time zone (`from`, `to`; the last 30 days by default), or `campaign_progress`. Narrow with `agentId`, `channelType`, `campaignId` or `definitionId`; unsupported filters fail. At most 1000 rows: `hasMore` means split the range or filter. Booking outcomes return no partial totals when their evidence scan exceeds its bound. Conversation success and completed tool calls never establish a booking; these are historical receipts, not the provider's current appointment status.",
17892
19282
  effect: "read",
17893
19283
  confirmation: null,
17894
19284
  hidden: false
@@ -31950,10 +33340,6 @@ var schemaComponents = {
31950
33340
  }
31951
33341
  }
31952
33342
  },
31953
- AgendaOrganizationId: {
31954
- pattern: "^org_[A-Za-z0-9]{16}$",
31955
- type: "string"
31956
- },
31957
33343
  AgendaPatientIdentity: {
31958
33344
  additionalProperties: false,
31959
33345
  type: "object",
@@ -38777,6 +40163,10 @@ var schemaComponents = {
38777
40163
  }
38778
40164
  }
38779
40165
  },
40166
+ OrganizationId: {
40167
+ pattern: "^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$",
40168
+ type: "string"
40169
+ },
38780
40170
  PageInfo: {
38781
40171
  additionalProperties: false,
38782
40172
  type: "object",
@@ -49353,7 +50743,7 @@ var schemaComponents = {
49353
50743
  type: "string"
49354
50744
  },
49355
50745
  id: {
49356
- $ref: "#/components/schemas/RaizOrganizationId",
50746
+ $ref: "#/components/schemas/OrganizationId",
49357
50747
  description: "Verified organization identifier."
49358
50748
  },
49359
50749
  language: {
@@ -49498,10 +50888,6 @@ var schemaComponents = {
49498
50888
  }
49499
50889
  }
49500
50890
  },
49501
- RaizOrganizationId: {
49502
- pattern: "^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$",
49503
- type: "string"
49504
- },
49505
50891
  RaizPhoneNumber: {
49506
50892
  pattern: "^\\+[1-9][0-9]{1,14}$",
49507
50893
  type: "string"
@@ -50155,7 +51541,206 @@ var schemaComponents = {
50155
51541
  type: "string"
50156
51542
  },
50157
51543
  name: {
50158
- const: "tool_calls",
51544
+ const: "tool_calls",
51545
+ type: "string"
51546
+ },
51547
+ rows: {
51548
+ maxItems: 1000,
51549
+ type: "array",
51550
+ items: {
51551
+ additionalProperties: false,
51552
+ type: "object",
51553
+ required: [
51554
+ "agentId",
51555
+ "agentName",
51556
+ "connectionId",
51557
+ "conversationId",
51558
+ "durationMs",
51559
+ "errorCode",
51560
+ "executedBy",
51561
+ "messageId",
51562
+ "occurredAt",
51563
+ "requestId",
51564
+ "status",
51565
+ "toolCallId",
51566
+ "toolkit",
51567
+ "toolName"
51568
+ ],
51569
+ properties: {
51570
+ agentId: {
51571
+ anyOf: [
51572
+ {
51573
+ description: "Agent id.",
51574
+ examples: [
51575
+ "agt_01m45h8q2rf3t9w6y7z0b1c2d3"
51576
+ ],
51577
+ pattern: "^agt_(?:[0-7][0-9a-hjkmnp-tv-z]{25}|(?:[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}|[a-f0-9]{32}))$",
51578
+ type: "string"
51579
+ },
51580
+ {
51581
+ type: "null"
51582
+ }
51583
+ ]
51584
+ },
51585
+ agentName: {
51586
+ anyOf: [
51587
+ {
51588
+ type: "string"
51589
+ },
51590
+ {
51591
+ type: "null"
51592
+ }
51593
+ ]
51594
+ },
51595
+ connectionId: {
51596
+ anyOf: [
51597
+ {
51598
+ description: "The integration connection the tool ran on, for an integration's tool.",
51599
+ type: "string"
51600
+ },
51601
+ {
51602
+ type: "null"
51603
+ }
51604
+ ]
51605
+ },
51606
+ conversationId: {
51607
+ description: "The conversation the call was in.",
51608
+ examples: [
51609
+ "cnv_01m45h8q2rf3t9w6y7z0b1c2d3"
51610
+ ],
51611
+ pattern: "^cnv_(?:[0-7][0-9a-hjkmnp-tv-z]{25}|(?:[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}|[a-f0-9]{32}))$",
51612
+ type: "string"
51613
+ },
51614
+ durationMs: {
51615
+ anyOf: [
51616
+ {
51617
+ minimum: 0,
51618
+ type: "integer"
51619
+ },
51620
+ {
51621
+ type: "null"
51622
+ }
51623
+ ]
51624
+ },
51625
+ errorCode: {
51626
+ anyOf: [
51627
+ {
51628
+ description: "Why the call failed, when it failed.",
51629
+ type: "string"
51630
+ },
51631
+ {
51632
+ type: "null"
51633
+ }
51634
+ ]
51635
+ },
51636
+ executedBy: {
51637
+ anyOf: [
51638
+ {
51639
+ description: "Who ran it: `arbol` (a Raíz tool), `browser`, `voice` (Raíz, during a call), `gateway` (an Arbol integration through the platform) or `custom` (the organization's own server).",
51640
+ type: "string"
51641
+ },
51642
+ {
51643
+ type: "null"
51644
+ }
51645
+ ]
51646
+ },
51647
+ messageId: {
51648
+ description: "The Agent message that made the call.",
51649
+ examples: [
51650
+ "msg_01m45h8q2rf3t9w6y7z0b1c2d3"
51651
+ ],
51652
+ pattern: "^msg_(?:[0-7][0-9a-hjkmnp-tv-z]{25}|(?:[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}|[a-f0-9]{32}))$",
51653
+ type: "string"
51654
+ },
51655
+ occurredAt: {
51656
+ description: "An instant in RFC 3339 format, in UTC.",
51657
+ format: "date-time",
51658
+ type: "string"
51659
+ },
51660
+ requestId: {
51661
+ anyOf: [
51662
+ {
51663
+ description: "The id an integration call carried; the integration's own logs of the call carry it too.",
51664
+ type: "string"
51665
+ },
51666
+ {
51667
+ type: "null"
51668
+ }
51669
+ ]
51670
+ },
51671
+ status: {
51672
+ anyOf: [
51673
+ {
51674
+ description: "`pending`, `completed`, `failed` or `denied`.",
51675
+ type: "string"
51676
+ },
51677
+ {
51678
+ type: "null"
51679
+ }
51680
+ ]
51681
+ },
51682
+ toolCallId: {
51683
+ anyOf: [
51684
+ {
51685
+ type: "string"
51686
+ },
51687
+ {
51688
+ type: "null"
51689
+ }
51690
+ ]
51691
+ },
51692
+ toolkit: {
51693
+ anyOf: [
51694
+ {
51695
+ type: "string"
51696
+ },
51697
+ {
51698
+ type: "null"
51699
+ }
51700
+ ]
51701
+ },
51702
+ toolName: {
51703
+ anyOf: [
51704
+ {
51705
+ type: "string"
51706
+ },
51707
+ {
51708
+ type: "null"
51709
+ }
51710
+ ]
51711
+ }
51712
+ }
51713
+ }
51714
+ }
51715
+ }
51716
+ },
51717
+ {
51718
+ additionalProperties: false,
51719
+ type: "object",
51720
+ required: [
51721
+ "from",
51722
+ "hasMore",
51723
+ "to",
51724
+ "name",
51725
+ "rows"
51726
+ ],
51727
+ properties: {
51728
+ from: {
51729
+ description: "A calendar day in the organization's time zone.",
51730
+ format: "date",
51731
+ type: "string"
51732
+ },
51733
+ hasMore: {
51734
+ description: "More than 1000 rows matched: narrow the range or the filters.",
51735
+ type: "boolean"
51736
+ },
51737
+ to: {
51738
+ description: "A calendar day in the organization's time zone.",
51739
+ format: "date",
51740
+ type: "string"
51741
+ },
51742
+ name: {
51743
+ const: "booking_outcomes",
50159
51744
  type: "string"
50160
51745
  },
50161
51746
  rows: {
@@ -50167,18 +51752,15 @@ var schemaComponents = {
50167
51752
  required: [
50168
51753
  "agentId",
50169
51754
  "agentName",
50170
- "connectionId",
50171
- "conversationId",
50172
- "durationMs",
50173
- "errorCode",
50174
- "executedBy",
50175
- "messageId",
50176
- "occurredAt",
50177
- "requestId",
50178
- "status",
50179
- "toolCallId",
50180
- "toolkit",
50181
- "toolName"
51755
+ "day",
51756
+ "source",
51757
+ "confirmedCount",
51758
+ "rescheduledCount",
51759
+ "cancelledCount",
51760
+ "failedCount",
51761
+ "pendingCount",
51762
+ "unverifiedCount",
51763
+ "duplicateCount"
50182
51764
  ],
50183
51765
  properties: {
50184
51766
  agentId: {
@@ -50206,122 +51788,42 @@ var schemaComponents = {
50206
51788
  }
50207
51789
  ]
50208
51790
  },
50209
- connectionId: {
50210
- anyOf: [
50211
- {
50212
- description: "The integration connection the tool ran on, for an integration's tool.",
50213
- type: "string"
50214
- },
50215
- {
50216
- type: "null"
50217
- }
50218
- ]
50219
- },
50220
- conversationId: {
50221
- description: "The conversation the call was in.",
50222
- examples: [
50223
- "cnv_01m45h8q2rf3t9w6y7z0b1c2d3"
50224
- ],
50225
- pattern: "^cnv_(?:[0-7][0-9a-hjkmnp-tv-z]{25}|(?:[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}|[a-f0-9]{32}))$",
51791
+ day: {
51792
+ description: "A calendar day in the organization's time zone.",
51793
+ format: "date",
50226
51794
  type: "string"
50227
51795
  },
50228
- durationMs: {
50229
- anyOf: [
50230
- {
50231
- minimum: 0,
50232
- type: "integer"
50233
- },
50234
- {
50235
- type: "null"
50236
- }
50237
- ]
50238
- },
50239
- errorCode: {
50240
- anyOf: [
50241
- {
50242
- description: "Why the call failed, when it failed.",
50243
- type: "string"
50244
- },
50245
- {
50246
- type: "null"
50247
- }
50248
- ]
50249
- },
50250
- executedBy: {
50251
- anyOf: [
50252
- {
50253
- description: "Who ran it: `arbol` (a Raíz tool), `browser`, `voice` (Raíz, during a call), `gateway` (an Arbol integration through the platform) or `custom` (the organization's own server).",
50254
- type: "string"
50255
- },
50256
- {
50257
- type: "null"
50258
- }
50259
- ]
50260
- },
50261
- messageId: {
50262
- description: "The Agent message that made the call.",
50263
- examples: [
50264
- "msg_01m45h8q2rf3t9w6y7z0b1c2d3"
50265
- ],
50266
- pattern: "^msg_(?:[0-7][0-9a-hjkmnp-tv-z]{25}|(?:[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}|[a-f0-9]{32}))$",
51796
+ source: {
51797
+ description: "Integration recorded in the booking receipt; unknown when absent.",
50267
51798
  type: "string"
50268
51799
  },
50269
- occurredAt: {
50270
- description: "An instant in RFC 3339 format, in UTC.",
50271
- format: "date-time",
50272
- type: "string"
51800
+ confirmedCount: {
51801
+ minimum: 0,
51802
+ type: "integer"
50273
51803
  },
50274
- requestId: {
50275
- anyOf: [
50276
- {
50277
- description: "The id an integration call carried; the integration's own logs of the call carry it too.",
50278
- type: "string"
50279
- },
50280
- {
50281
- type: "null"
50282
- }
50283
- ]
51804
+ rescheduledCount: {
51805
+ minimum: 0,
51806
+ type: "integer"
50284
51807
  },
50285
- status: {
50286
- anyOf: [
50287
- {
50288
- description: "`pending`, `completed`, `failed` or `denied`.",
50289
- type: "string"
50290
- },
50291
- {
50292
- type: "null"
50293
- }
50294
- ]
51808
+ cancelledCount: {
51809
+ minimum: 0,
51810
+ type: "integer"
50295
51811
  },
50296
- toolCallId: {
50297
- anyOf: [
50298
- {
50299
- type: "string"
50300
- },
50301
- {
50302
- type: "null"
50303
- }
50304
- ]
51812
+ failedCount: {
51813
+ minimum: 0,
51814
+ type: "integer"
50305
51815
  },
50306
- toolkit: {
50307
- anyOf: [
50308
- {
50309
- type: "string"
50310
- },
50311
- {
50312
- type: "null"
50313
- }
50314
- ]
51816
+ pendingCount: {
51817
+ minimum: 0,
51818
+ type: "integer"
50315
51819
  },
50316
- toolName: {
50317
- anyOf: [
50318
- {
50319
- type: "string"
50320
- },
50321
- {
50322
- type: "null"
50323
- }
50324
- ]
51820
+ unverifiedCount: {
51821
+ minimum: 0,
51822
+ type: "integer"
51823
+ },
51824
+ duplicateCount: {
51825
+ minimum: 0,
51826
+ type: "integer"
50325
51827
  }
50326
51828
  }
50327
51829
  }
@@ -50605,7 +52107,7 @@ var schemaComponents = {
50605
52107
  ]
50606
52108
  },
50607
52109
  organizationId: {
50608
- $ref: "#/components/schemas/RaizOrganizationId",
52110
+ $ref: "#/components/schemas/OrganizationId",
50609
52111
  description: "Verified organization identifier."
50610
52112
  },
50611
52113
  permissions: {
@@ -51426,7 +52928,7 @@ var schemaComponents = {
51426
52928
  type: "string"
51427
52929
  },
51428
52930
  id: {
51429
- description: "The person's trial.",
52931
+ description: "The authenticated caller's trial.",
51430
52932
  examples: [
51431
52933
  "wts_01m45h8q2rf3t9w6y7z0b1c2d3"
51432
52934
  ],
@@ -57898,122 +59400,7 @@ var schemaComponents = {
57898
59400
  intake: {
57899
59401
  anyOf: [
57900
59402
  {
57901
- additionalProperties: false,
57902
- type: "object",
57903
- required: [],
57904
- properties: {
57905
- authorization: {
57906
- anyOf: [
57907
- {
57908
- type: "string"
57909
- },
57910
- {
57911
- type: "null"
57912
- }
57913
- ],
57914
- default: null,
57915
- description: "Payer authorization reference recorded with this appointment; null when absent."
57916
- },
57917
- conversationUrl: {
57918
- anyOf: [
57919
- {
57920
- format: "uri",
57921
- maxLength: 500,
57922
- type: "string"
57923
- },
57924
- {
57925
- type: "null"
57926
- }
57927
- ],
57928
- default: null,
57929
- description: "HTTPS link to the originating Arbol conversation on an admitted product hostname; null when absent."
57930
- },
57931
- email: {
57932
- description: "Patient email address for enabled appointment notices; null when unknown.",
57933
- anyOf: [
57934
- {
57935
- format: "email",
57936
- maxLength: 254,
57937
- type: "string"
57938
- },
57939
- {
57940
- type: "null"
57941
- }
57942
- ],
57943
- default: null
57944
- },
57945
- entity: {
57946
- anyOf: [
57947
- {
57948
- description: "Patient payer or insurer named by the clinic; unrelated to the verified organization identity.",
57949
- type: "string"
57950
- },
57951
- {
57952
- type: "null"
57953
- }
57954
- ],
57955
- default: null,
57956
- description: "Patient payer or insurer as named by the clinic; null when unknown. It is unrelated to the authenticated organization."
57957
- },
57958
- fields: {
57959
- type: "object",
57960
- patternProperties: {
57961
- "^[a-z][a-z0-9_]{0,39}$": {
57962
- anyOf: [
57963
- {
57964
- type: "string"
57965
- },
57966
- {
57967
- type: "number"
57968
- },
57969
- {
57970
- type: "boolean"
57971
- }
57972
- ]
57973
- }
57974
- },
57975
- default: {},
57976
- description: "Custom patient values keyed by the organization's configured field keys; values retain their declared string, number or boolean type."
57977
- },
57978
- notes: {
57979
- anyOf: [
57980
- {
57981
- type: "string"
57982
- },
57983
- {
57984
- type: "null"
57985
- }
57986
- ],
57987
- default: null,
57988
- description: "Appointment-specific free-text notes; null when none are recorded."
57989
- },
57990
- phone: {
57991
- anyOf: [
57992
- {
57993
- type: "string"
57994
- },
57995
- {
57996
- type: "null"
57997
- }
57998
- ],
57999
- default: null,
58000
- description: "Patient contact phone, preserving its entered formatting; null when unknown."
58001
- },
58002
- priority: {
58003
- anyOf: [
58004
- {
58005
- const: "normal",
58006
- type: "string"
58007
- },
58008
- {
58009
- const: "urgent",
58010
- type: "string"
58011
- }
58012
- ],
58013
- default: "normal",
58014
- description: "Appointment priority: normal by default or urgent when explicitly requested."
58015
- }
58016
- }
59403
+ $ref: "#/components/schemas/AgendaAppointmentIntakeInput"
58017
59404
  },
58018
59405
  {
58019
59406
  type: "null"
@@ -58024,42 +59411,7 @@ var schemaComponents = {
58024
59411
  patient: {
58025
59412
  anyOf: [
58026
59413
  {
58027
- additionalProperties: false,
58028
- type: "object",
58029
- required: [
58030
- "document",
58031
- "name"
58032
- ],
58033
- properties: {
58034
- document: {
58035
- anyOf: [
58036
- {
58037
- type: "string"
58038
- },
58039
- {
58040
- type: "null"
58041
- }
58042
- ],
58043
- description: "Normalized patient document number; null when no document is recorded. Identity combines its type and number."
58044
- },
58045
- documentType: {
58046
- anyOf: [
58047
- {
58048
- description: "Document-type code from the organization’s configured active types. Input is trimmed and uppercased.",
58049
- type: "string"
58050
- },
58051
- {
58052
- type: "null"
58053
- }
58054
- ],
58055
- default: null,
58056
- description: "Organization-configured document type code. A number without a supplied type uses the configured first type; no number means no stored type."
58057
- },
58058
- name: {
58059
- type: "string",
58060
- description: "Patient display name with surrounding whitespace removed."
58061
- }
58062
- }
59414
+ $ref: "#/components/schemas/AgendaPatientIdentityInput"
58063
59415
  },
58064
59416
  {
58065
59417
  type: "null"
@@ -58265,6 +59617,16 @@ var schemaComponents = {
58265
59617
  }
58266
59618
  ]
58267
59619
  },
59620
+ createdAfter: {
59621
+ format: "date-time",
59622
+ description: "Inclusive creation instant, independent of the appointment date. Pair with createdBefore; at most 93 days.",
59623
+ type: "string"
59624
+ },
59625
+ createdBefore: {
59626
+ format: "date-time",
59627
+ description: "Exclusive creation instant. Use for appointments generated during a period, including future appointments.",
59628
+ type: "string"
59629
+ },
58268
59630
  from: {
58269
59631
  format: "date-time",
58270
59632
  description: "Beginning of the appointment range; must be paired with to unless a patient search is supplied.",
@@ -58486,122 +59848,7 @@ var schemaComponents = {
58486
59848
  intake: {
58487
59849
  anyOf: [
58488
59850
  {
58489
- additionalProperties: false,
58490
- type: "object",
58491
- required: [],
58492
- properties: {
58493
- authorization: {
58494
- anyOf: [
58495
- {
58496
- type: "string"
58497
- },
58498
- {
58499
- type: "null"
58500
- }
58501
- ],
58502
- default: null,
58503
- description: "Payer authorization reference recorded with this appointment; null when absent."
58504
- },
58505
- conversationUrl: {
58506
- anyOf: [
58507
- {
58508
- format: "uri",
58509
- maxLength: 500,
58510
- type: "string"
58511
- },
58512
- {
58513
- type: "null"
58514
- }
58515
- ],
58516
- default: null,
58517
- description: "HTTPS link to the originating Arbol conversation on an admitted product hostname; null when absent."
58518
- },
58519
- email: {
58520
- description: "Patient email address for enabled appointment notices; null when unknown.",
58521
- anyOf: [
58522
- {
58523
- format: "email",
58524
- maxLength: 254,
58525
- type: "string"
58526
- },
58527
- {
58528
- type: "null"
58529
- }
58530
- ],
58531
- default: null
58532
- },
58533
- entity: {
58534
- anyOf: [
58535
- {
58536
- description: "Patient payer or insurer named by the clinic; unrelated to the verified organization identity.",
58537
- type: "string"
58538
- },
58539
- {
58540
- type: "null"
58541
- }
58542
- ],
58543
- default: null,
58544
- description: "Patient payer or insurer as named by the clinic; null when unknown. It is unrelated to the authenticated organization."
58545
- },
58546
- fields: {
58547
- type: "object",
58548
- patternProperties: {
58549
- "^[a-z][a-z0-9_]{0,39}$": {
58550
- anyOf: [
58551
- {
58552
- type: "string"
58553
- },
58554
- {
58555
- type: "number"
58556
- },
58557
- {
58558
- type: "boolean"
58559
- }
58560
- ]
58561
- }
58562
- },
58563
- default: {},
58564
- description: "Custom patient values keyed by the organization's configured field keys; values retain their declared string, number or boolean type."
58565
- },
58566
- notes: {
58567
- anyOf: [
58568
- {
58569
- type: "string"
58570
- },
58571
- {
58572
- type: "null"
58573
- }
58574
- ],
58575
- default: null,
58576
- description: "Appointment-specific free-text notes; null when none are recorded."
58577
- },
58578
- phone: {
58579
- anyOf: [
58580
- {
58581
- type: "string"
58582
- },
58583
- {
58584
- type: "null"
58585
- }
58586
- ],
58587
- default: null,
58588
- description: "Patient contact phone, preserving its entered formatting; null when unknown."
58589
- },
58590
- priority: {
58591
- anyOf: [
58592
- {
58593
- const: "normal",
58594
- type: "string"
58595
- },
58596
- {
58597
- const: "urgent",
58598
- type: "string"
58599
- }
58600
- ],
58601
- default: "normal",
58602
- description: "Appointment priority: normal by default or urgent when explicitly requested."
58603
- }
58604
- }
59851
+ $ref: "#/components/schemas/AgendaAppointmentIntakeInput"
58605
59852
  },
58606
59853
  {
58607
59854
  type: "null"
@@ -58612,42 +59859,7 @@ var schemaComponents = {
58612
59859
  patient: {
58613
59860
  anyOf: [
58614
59861
  {
58615
- additionalProperties: false,
58616
- type: "object",
58617
- required: [
58618
- "document",
58619
- "name"
58620
- ],
58621
- properties: {
58622
- document: {
58623
- anyOf: [
58624
- {
58625
- type: "string"
58626
- },
58627
- {
58628
- type: "null"
58629
- }
58630
- ],
58631
- description: "Normalized patient document number; null when no document is recorded. Identity combines its type and number."
58632
- },
58633
- documentType: {
58634
- anyOf: [
58635
- {
58636
- description: "Document-type code from the organization’s configured active types. Input is trimmed and uppercased.",
58637
- type: "string"
58638
- },
58639
- {
58640
- type: "null"
58641
- }
58642
- ],
58643
- default: null,
58644
- description: "Organization-configured document type code. A number without a supplied type uses the configured first type; no number means no stored type."
58645
- },
58646
- name: {
58647
- type: "string",
58648
- description: "Patient display name with surrounding whitespace removed."
58649
- }
58650
- }
59862
+ $ref: "#/components/schemas/AgendaPatientIdentityInput"
58651
59863
  },
58652
59864
  {
58653
59865
  type: "null"
@@ -59232,49 +60444,296 @@ var schemaComponents = {
59232
60444
  ],
59233
60445
  default: "forward"
59234
60446
  },
59235
- limit: {
60447
+ limit: {
60448
+ minimum: 1,
60449
+ maximum: 100,
60450
+ description: "Maximum items returned in one page. Defaults to 25; larger reads require another cursor.",
60451
+ type: "integer",
60452
+ default: 25
60453
+ }
60454
+ }
60455
+ },
60456
+ AgendaOfferingsCreateInput: {
60457
+ additionalProperties: false,
60458
+ type: "object",
60459
+ required: [
60460
+ "durationMinutes",
60461
+ "name",
60462
+ "serviceId"
60463
+ ],
60464
+ properties: {
60465
+ bookingHorizonDays: {
60466
+ minimum: 1,
60467
+ maximum: 730,
60468
+ type: "integer",
60469
+ description: "Farthest number of days ahead that this offering can be booked.",
60470
+ default: 90
60471
+ },
60472
+ bufferAfterMinutes: {
60473
+ minimum: 0,
60474
+ maximum: 1440,
60475
+ type: "integer",
60476
+ description: "Resource occupation added after the visible appointment, in minutes.",
60477
+ default: 0
60478
+ },
60479
+ bufferBeforeMinutes: {
60480
+ minimum: 0,
60481
+ maximum: 1440,
60482
+ type: "integer",
60483
+ description: "Resource occupation added before the visible appointment, in minutes.",
60484
+ default: 0
60485
+ },
60486
+ capacity: {
60487
+ minimum: 1,
60488
+ maximum: 1e4,
60489
+ type: "integer",
60490
+ description: "Maximum concurrent units this resource or offering can accept.",
60491
+ default: 1
60492
+ },
60493
+ details: {
60494
+ type: "object",
60495
+ patternProperties: {
60496
+ "^.{1,200}$": {
60497
+ $ref: "#/components/schemas/AgendaSchedulingJsonValue",
60498
+ description: "JSON-compatible configuration value; strings, arrays and objects have bounded size."
60499
+ }
60500
+ },
60501
+ description: "Bounded JSON configuration owned by this catalog record, including supported domain settings.",
60502
+ default: {}
60503
+ },
60504
+ durationMinutes: {
60505
+ minimum: 1,
60506
+ maximum: 1440,
60507
+ type: "integer",
60508
+ description: "Visible appointment duration for this offering, in minutes; resource buffers apply separately."
60509
+ },
60510
+ minNoticeMinutes: {
60511
+ minimum: 0,
60512
+ maximum: 525600,
60513
+ type: "integer",
60514
+ description: "Minimum advance notice in minutes before this offering can be booked.",
60515
+ default: 0
60516
+ },
60517
+ name: {
60518
+ type: "string",
60519
+ description: "Display name of this catalog or configuration record."
60520
+ },
60521
+ slotIntervalMinutes: {
60522
+ minimum: 5,
60523
+ maximum: 240,
60524
+ type: "integer",
60525
+ description: "Minute spacing between candidate appointment start times.",
60526
+ default: 15
60527
+ },
60528
+ status: {
60529
+ anyOf: [
60530
+ {
60531
+ const: "active",
60532
+ type: "string"
60533
+ },
60534
+ {
60535
+ const: "inactive",
60536
+ type: "string"
60537
+ }
60538
+ ],
60539
+ default: "active",
60540
+ description: "Lifecycle state controlling whether this record remains available to its domain consumers."
60541
+ },
60542
+ resourceRequirements: {
60543
+ maxItems: 30,
60544
+ type: "array",
60545
+ items: {
60546
+ additionalProperties: false,
60547
+ type: "object",
60548
+ required: [
60549
+ "kind"
60550
+ ],
60551
+ properties: {
60552
+ alternatives: {
60553
+ maxItems: 100,
60554
+ type: "array",
60555
+ items: {
60556
+ description: "Stable srs-prefixed Scheduling record identifier; ownership is checked in the authenticated organization.",
60557
+ pattern: "^srs_[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$",
60558
+ type: "string"
60559
+ },
60560
+ default: [],
60561
+ description: "Explicit resource alternatives for this requirement; an empty list allows any resource of the required kind."
60562
+ },
60563
+ kind: {
60564
+ anyOf: [
60565
+ {
60566
+ const: "practitioner",
60567
+ type: "string"
60568
+ },
60569
+ {
60570
+ const: "assistant",
60571
+ type: "string"
60572
+ },
60573
+ {
60574
+ const: "room",
60575
+ type: "string"
60576
+ },
60577
+ {
60578
+ const: "chair",
60579
+ type: "string"
60580
+ },
60581
+ {
60582
+ const: "equipment",
60583
+ type: "string"
60584
+ },
60585
+ {
60586
+ const: "location",
60587
+ type: "string"
60588
+ },
60589
+ {
60590
+ const: "team",
60591
+ type: "string"
60592
+ },
60593
+ {
60594
+ const: "generic",
60595
+ type: "string"
60596
+ }
60597
+ ],
60598
+ description: "Declared domain kind of this record or configuration element."
60599
+ },
60600
+ quantity: {
60601
+ minimum: 1,
60602
+ maximum: 100,
60603
+ type: "integer",
60604
+ default: 1,
60605
+ description: "Number of resources of this kind required by one booking."
60606
+ },
60607
+ required: {
60608
+ type: "boolean",
60609
+ default: true,
60610
+ description: "Whether this resource requirement must be satisfied for the booking to proceed."
60611
+ }
60612
+ }
60613
+ },
60614
+ description: "Resource kinds, quantities and explicit alternatives needed by this offering.",
60615
+ default: []
60616
+ },
60617
+ serviceId: {
60618
+ description: "Stable svc-prefixed Scheduling record identifier; ownership is checked in the authenticated organization.",
60619
+ pattern: "^svc_[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$",
60620
+ type: "string"
60621
+ }
60622
+ }
60623
+ },
60624
+ AgendaOfferingsListInput: {
60625
+ additionalProperties: false,
60626
+ type: "object",
60627
+ required: [],
60628
+ properties: {
60629
+ cursor: {
60630
+ description: "Opaque cursor returned by pageInfo; omit it to request the first page.",
60631
+ type: "string"
60632
+ },
60633
+ direction: {
60634
+ description: "Direction to traverse the stable keyset ordering from the supplied cursor.",
60635
+ anyOf: [
60636
+ {
60637
+ const: "forward",
60638
+ type: "string"
60639
+ },
60640
+ {
60641
+ const: "backward",
60642
+ type: "string"
60643
+ }
60644
+ ],
60645
+ default: "forward"
60646
+ },
60647
+ limit: {
60648
+ minimum: 1,
60649
+ maximum: 100,
60650
+ description: "Maximum items returned in one page. Defaults to 25; larger reads require another cursor.",
60651
+ type: "integer",
60652
+ default: 25
60653
+ },
60654
+ serviceId: {
60655
+ description: "Stable svc-prefixed Scheduling record identifier; ownership is checked in the authenticated organization.",
60656
+ pattern: "^svc_[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$",
60657
+ type: "string"
60658
+ },
60659
+ status: {
60660
+ anyOf: [
60661
+ {
60662
+ const: "active",
60663
+ type: "string"
60664
+ },
60665
+ {
60666
+ const: "inactive",
60667
+ type: "string"
60668
+ }
60669
+ ],
60670
+ description: "Filter the collection by the stored active or inactive lifecycle state; omit it to include both."
60671
+ }
60672
+ }
60673
+ },
60674
+ AgendaOfferingsUpdateInput: {
60675
+ additionalProperties: false,
60676
+ type: "object",
60677
+ required: [
60678
+ "expectedVersion",
60679
+ "id"
60680
+ ],
60681
+ properties: {
60682
+ bookingHorizonDays: {
60683
+ minimum: 1,
60684
+ maximum: 730,
60685
+ type: "integer",
60686
+ description: "Farthest number of days ahead that this offering can be booked."
60687
+ },
60688
+ bufferAfterMinutes: {
60689
+ minimum: 0,
60690
+ maximum: 1440,
60691
+ type: "integer",
60692
+ description: "Resource occupation added after the visible appointment, in minutes."
60693
+ },
60694
+ bufferBeforeMinutes: {
60695
+ minimum: 0,
60696
+ maximum: 1440,
60697
+ type: "integer",
60698
+ description: "Resource occupation added before the visible appointment, in minutes."
60699
+ },
60700
+ capacity: {
59236
60701
  minimum: 1,
59237
- maximum: 100,
59238
- description: "Maximum items returned in one page. Defaults to 25; larger reads require another cursor.",
60702
+ maximum: 1e4,
59239
60703
  type: "integer",
59240
- default: 25
59241
- }
59242
- }
59243
- },
59244
- AgendaOfferingsListInput: {
59245
- additionalProperties: false,
59246
- type: "object",
59247
- required: [],
59248
- properties: {
59249
- cursor: {
59250
- description: "Opaque cursor returned by pageInfo; omit it to request the first page.",
59251
- type: "string"
60704
+ description: "Maximum concurrent units this resource or offering can accept."
59252
60705
  },
59253
- direction: {
59254
- description: "Direction to traverse the stable keyset ordering from the supplied cursor.",
59255
- anyOf: [
59256
- {
59257
- const: "forward",
59258
- type: "string"
59259
- },
59260
- {
59261
- const: "backward",
59262
- type: "string"
60706
+ details: {
60707
+ type: "object",
60708
+ patternProperties: {
60709
+ "^.{1,200}$": {
60710
+ $ref: "#/components/schemas/AgendaSchedulingJsonValue",
60711
+ description: "JSON-compatible configuration value; strings, arrays and objects have bounded size."
59263
60712
  }
59264
- ],
59265
- default: "forward"
60713
+ },
60714
+ description: "Bounded JSON configuration owned by this catalog record, including supported domain settings."
59266
60715
  },
59267
- limit: {
60716
+ durationMinutes: {
59268
60717
  minimum: 1,
59269
- maximum: 100,
59270
- description: "Maximum items returned in one page. Defaults to 25; larger reads require another cursor.",
60718
+ maximum: 1440,
59271
60719
  type: "integer",
59272
- default: 25
60720
+ description: "Visible appointment duration for this offering, in minutes; resource buffers apply separately."
59273
60721
  },
59274
- serviceId: {
59275
- description: "Stable svc-prefixed Scheduling record identifier; ownership is checked in the authenticated organization.",
59276
- pattern: "^svc_[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$",
59277
- type: "string"
60722
+ minNoticeMinutes: {
60723
+ minimum: 0,
60724
+ maximum: 525600,
60725
+ type: "integer",
60726
+ description: "Minimum advance notice in minutes before this offering can be booked."
60727
+ },
60728
+ name: {
60729
+ type: "string",
60730
+ description: "Display name of this catalog or configuration record."
60731
+ },
60732
+ slotIntervalMinutes: {
60733
+ minimum: 5,
60734
+ maximum: 240,
60735
+ type: "integer",
60736
+ description: "Minute spacing between candidate appointment start times."
59278
60737
  },
59279
60738
  status: {
59280
60739
  anyOf: [
@@ -59287,7 +60746,17 @@ var schemaComponents = {
59287
60746
  type: "string"
59288
60747
  }
59289
60748
  ],
59290
- description: "Filter the collection by the stored active or inactive lifecycle state; omit it to include both."
60749
+ description: "Lifecycle state controlling whether this record remains available to its domain consumers."
60750
+ },
60751
+ expectedVersion: {
60752
+ exclusiveMinimum: 0,
60753
+ description: "Version last read by the caller. The mutation fails if another writer has changed this record.",
60754
+ type: "integer"
60755
+ },
60756
+ id: {
60757
+ description: "Stable off-prefixed Scheduling record identifier; ownership is checked in the authenticated organization.",
60758
+ pattern: "^off_[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$",
60759
+ type: "string"
59291
60760
  }
59292
60761
  }
59293
60762
  },
@@ -59375,6 +60844,108 @@ var schemaComponents = {
59375
60844
  }
59376
60845
  }
59377
60846
  },
60847
+ AgendaResourcesCreateInput: {
60848
+ additionalProperties: false,
60849
+ type: "object",
60850
+ required: [
60851
+ "kind",
60852
+ "name",
60853
+ "timezone"
60854
+ ],
60855
+ properties: {
60856
+ capacity: {
60857
+ exclusiveMinimum: 0,
60858
+ type: "integer",
60859
+ description: "Maximum simultaneous capacity units available on this resource; each booking consumes its declared share.",
60860
+ maximum: 1e4,
60861
+ default: 1
60862
+ },
60863
+ details: {
60864
+ type: "object",
60865
+ patternProperties: {
60866
+ "^.{1,200}$": {
60867
+ $ref: "#/components/schemas/AgendaSchedulingJsonValue",
60868
+ description: "JSON-compatible configuration value; strings, arrays and objects have bounded size."
60869
+ }
60870
+ },
60871
+ description: "Bounded JSON configuration owned by this catalog record, including supported domain settings.",
60872
+ default: {}
60873
+ },
60874
+ kind: {
60875
+ anyOf: [
60876
+ {
60877
+ const: "practitioner",
60878
+ type: "string"
60879
+ },
60880
+ {
60881
+ const: "assistant",
60882
+ type: "string"
60883
+ },
60884
+ {
60885
+ const: "room",
60886
+ type: "string"
60887
+ },
60888
+ {
60889
+ const: "chair",
60890
+ type: "string"
60891
+ },
60892
+ {
60893
+ const: "equipment",
60894
+ type: "string"
60895
+ },
60896
+ {
60897
+ const: "location",
60898
+ type: "string"
60899
+ },
60900
+ {
60901
+ const: "team",
60902
+ type: "string"
60903
+ },
60904
+ {
60905
+ const: "generic",
60906
+ type: "string"
60907
+ }
60908
+ ],
60909
+ description: "Resource category used to match booking requirements, such as practitioner, room or equipment."
60910
+ },
60911
+ locationId: {
60912
+ anyOf: [
60913
+ {
60914
+ description: "Stable loc-prefixed Scheduling record identifier; ownership is checked in the authenticated organization.",
60915
+ pattern: "^loc_[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$",
60916
+ type: "string"
60917
+ },
60918
+ {
60919
+ type: "null"
60920
+ }
60921
+ ],
60922
+ description: "Clinic site associated with this record; null means it is not tied to a site.",
60923
+ default: null
60924
+ },
60925
+ name: {
60926
+ type: "string",
60927
+ description: "Display name of this catalog or configuration record."
60928
+ },
60929
+ status: {
60930
+ anyOf: [
60931
+ {
60932
+ const: "active",
60933
+ type: "string"
60934
+ },
60935
+ {
60936
+ const: "inactive",
60937
+ type: "string"
60938
+ }
60939
+ ],
60940
+ default: "active",
60941
+ description: "Lifecycle state controlling whether this record remains available to its domain consumers."
60942
+ },
60943
+ timezone: {
60944
+ description: "IANA timezone used to interpret the record’s local dates and time bands.",
60945
+ type: "string"
60946
+ }
60947
+ }
60948
+ },
59378
60949
  AgendaResourcesListInput: {
59379
60950
  additionalProperties: false,
59380
60951
  type: "object",
@@ -59457,6 +61028,420 @@ var schemaComponents = {
59457
61028
  }
59458
61029
  }
59459
61030
  },
61031
+ AgendaResourcesUpdateInput: {
61032
+ additionalProperties: false,
61033
+ type: "object",
61034
+ required: [
61035
+ "expectedVersion",
61036
+ "id"
61037
+ ],
61038
+ properties: {
61039
+ capacity: {
61040
+ exclusiveMinimum: 0,
61041
+ type: "integer",
61042
+ description: "Maximum simultaneous capacity units available on this resource; each booking consumes its declared share.",
61043
+ maximum: 1e4
61044
+ },
61045
+ details: {
61046
+ type: "object",
61047
+ patternProperties: {
61048
+ "^.{1,200}$": {
61049
+ $ref: "#/components/schemas/AgendaSchedulingJsonValue",
61050
+ description: "JSON-compatible configuration value; strings, arrays and objects have bounded size."
61051
+ }
61052
+ },
61053
+ description: "Bounded JSON configuration owned by this catalog record, including supported domain settings."
61054
+ },
61055
+ kind: {
61056
+ anyOf: [
61057
+ {
61058
+ const: "practitioner",
61059
+ type: "string"
61060
+ },
61061
+ {
61062
+ const: "assistant",
61063
+ type: "string"
61064
+ },
61065
+ {
61066
+ const: "room",
61067
+ type: "string"
61068
+ },
61069
+ {
61070
+ const: "chair",
61071
+ type: "string"
61072
+ },
61073
+ {
61074
+ const: "equipment",
61075
+ type: "string"
61076
+ },
61077
+ {
61078
+ const: "location",
61079
+ type: "string"
61080
+ },
61081
+ {
61082
+ const: "team",
61083
+ type: "string"
61084
+ },
61085
+ {
61086
+ const: "generic",
61087
+ type: "string"
61088
+ }
61089
+ ],
61090
+ description: "Resource category used to match booking requirements, such as practitioner, room or equipment."
61091
+ },
61092
+ locationId: {
61093
+ anyOf: [
61094
+ {
61095
+ description: "Stable loc-prefixed Scheduling record identifier; ownership is checked in the authenticated organization.",
61096
+ pattern: "^loc_[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$",
61097
+ type: "string"
61098
+ },
61099
+ {
61100
+ type: "null"
61101
+ }
61102
+ ],
61103
+ description: "Clinic site associated with this record; null means it is not tied to a site."
61104
+ },
61105
+ name: {
61106
+ type: "string",
61107
+ description: "Display name of this catalog or configuration record."
61108
+ },
61109
+ status: {
61110
+ anyOf: [
61111
+ {
61112
+ const: "active",
61113
+ type: "string"
61114
+ },
61115
+ {
61116
+ const: "inactive",
61117
+ type: "string"
61118
+ }
61119
+ ],
61120
+ description: "Lifecycle state controlling whether this record remains available to its domain consumers."
61121
+ },
61122
+ timezone: {
61123
+ description: "IANA timezone used to interpret the record’s local dates and time bands.",
61124
+ type: "string"
61125
+ },
61126
+ expectedVersion: {
61127
+ exclusiveMinimum: 0,
61128
+ description: "Version last read by the caller. The mutation fails if another writer has changed this record.",
61129
+ type: "integer"
61130
+ },
61131
+ id: {
61132
+ description: "Stable srs-prefixed Scheduling record identifier; ownership is checked in the authenticated organization.",
61133
+ pattern: "^srs_[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$",
61134
+ type: "string"
61135
+ }
61136
+ }
61137
+ },
61138
+ AgendaScheduleRulesUpsertInput: {
61139
+ additionalProperties: false,
61140
+ type: "object",
61141
+ required: [
61142
+ "endTime",
61143
+ "kind",
61144
+ "resourceId",
61145
+ "startTime",
61146
+ "timezone"
61147
+ ],
61148
+ properties: {
61149
+ date: {
61150
+ anyOf: [
61151
+ {
61152
+ format: "date",
61153
+ type: "string"
61154
+ },
61155
+ {
61156
+ type: "null"
61157
+ }
61158
+ ],
61159
+ description: "Specific local calendar date for a dated band or closure; null for a weekly band.",
61160
+ default: null
61161
+ },
61162
+ effectiveFrom: {
61163
+ anyOf: [
61164
+ {
61165
+ format: "date",
61166
+ type: "string"
61167
+ },
61168
+ {
61169
+ type: "null"
61170
+ }
61171
+ ],
61172
+ description: "First local date on which this weekly band applies; null means no lower date bound.",
61173
+ default: null
61174
+ },
61175
+ effectiveTo: {
61176
+ anyOf: [
61177
+ {
61178
+ format: "date",
61179
+ type: "string"
61180
+ },
61181
+ {
61182
+ type: "null"
61183
+ }
61184
+ ],
61185
+ description: "Last local date on which this weekly band applies; null means no upper date bound.",
61186
+ default: null
61187
+ },
61188
+ endTime: {
61189
+ pattern: "^(?:[01]\\d|2[0-3]):[0-5]\\d$",
61190
+ description: "End of this local time band in HH:MM, interpreted in its resource’s timezone.",
61191
+ type: "string"
61192
+ },
61193
+ kind: {
61194
+ anyOf: [
61195
+ {
61196
+ const: "weekly",
61197
+ type: "string"
61198
+ },
61199
+ {
61200
+ const: "date_override",
61201
+ type: "string"
61202
+ },
61203
+ {
61204
+ const: "time_off",
61205
+ type: "string"
61206
+ },
61207
+ {
61208
+ const: "block",
61209
+ type: "string"
61210
+ }
61211
+ ],
61212
+ description: "Declared domain kind of this record or configuration element."
61213
+ },
61214
+ resourceId: {
61215
+ description: "Scheduling resource addressed by this request or associated with this record.",
61216
+ pattern: "^srs_[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$",
61217
+ type: "string"
61218
+ },
61219
+ startTime: {
61220
+ pattern: "^(?:[01]\\d|2[0-3]):[0-5]\\d$",
61221
+ description: "Start of this local time band in HH:MM, interpreted in its resource’s timezone.",
61222
+ type: "string"
61223
+ },
61224
+ timezone: {
61225
+ description: "IANA timezone used to interpret the record’s local dates and time bands.",
61226
+ type: "string"
61227
+ },
61228
+ weekdays: {
61229
+ maxItems: 7,
61230
+ type: "array",
61231
+ items: {
61232
+ minimum: 0,
61233
+ maximum: 6,
61234
+ type: "integer"
61235
+ },
61236
+ description: "Local weekdays on which a weekly band applies, numbered Sunday 0 through Saturday 6.",
61237
+ default: []
61238
+ },
61239
+ expectedVersion: {
61240
+ exclusiveMinimum: 0,
61241
+ description: "Version last read by the caller. The mutation fails if another writer has changed this record.",
61242
+ type: "integer"
61243
+ },
61244
+ id: {
61245
+ description: "Identifier of the record addressed or returned by this schema.",
61246
+ pattern: "^sch_[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$",
61247
+ type: "string"
61248
+ }
61249
+ }
61250
+ },
61251
+ AgendaScheduleRulesReplaceInput: {
61252
+ additionalProperties: false,
61253
+ type: "object",
61254
+ required: [
61255
+ "expectedRules",
61256
+ "resourceId",
61257
+ "rules"
61258
+ ],
61259
+ properties: {
61260
+ expectedRules: {
61261
+ maxItems: 400,
61262
+ type: "array",
61263
+ items: {
61264
+ additionalProperties: false,
61265
+ type: "object",
61266
+ required: [
61267
+ "id",
61268
+ "version"
61269
+ ],
61270
+ properties: {
61271
+ id: {
61272
+ description: "Stable sch-prefixed Scheduling record identifier; ownership is checked in the authenticated organization.",
61273
+ pattern: "^sch_[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$",
61274
+ type: "string"
61275
+ },
61276
+ version: {
61277
+ exclusiveMinimum: 0,
61278
+ description: "Version last read by the caller. The mutation fails when another writer has changed this record.",
61279
+ type: "integer"
61280
+ }
61281
+ }
61282
+ },
61283
+ description: "Identifiers and versions of the complete schedule loaded by the editor; concurrent changes reject the replacement."
61284
+ },
61285
+ resourceId: {
61286
+ description: "Stable srs-prefixed Scheduling record identifier; ownership is checked in the authenticated organization.",
61287
+ pattern: "^srs_[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$",
61288
+ type: "string"
61289
+ },
61290
+ rules: {
61291
+ maxItems: 400,
61292
+ type: "array",
61293
+ items: {
61294
+ additionalProperties: false,
61295
+ type: "object",
61296
+ required: [
61297
+ "endTime",
61298
+ "kind",
61299
+ "startTime"
61300
+ ],
61301
+ properties: {
61302
+ date: {
61303
+ anyOf: [
61304
+ {
61305
+ format: "date",
61306
+ type: "string"
61307
+ },
61308
+ {
61309
+ type: "null"
61310
+ }
61311
+ ],
61312
+ description: "Specific local calendar date for a dated band or closure; null for a weekly band.",
61313
+ default: null
61314
+ },
61315
+ effectiveFrom: {
61316
+ anyOf: [
61317
+ {
61318
+ format: "date",
61319
+ type: "string"
61320
+ },
61321
+ {
61322
+ type: "null"
61323
+ }
61324
+ ],
61325
+ description: "First local date on which this weekly band applies; null means no lower date bound.",
61326
+ default: null
61327
+ },
61328
+ effectiveTo: {
61329
+ anyOf: [
61330
+ {
61331
+ format: "date",
61332
+ type: "string"
61333
+ },
61334
+ {
61335
+ type: "null"
61336
+ }
61337
+ ],
61338
+ description: "Last local date on which this weekly band applies; null means no upper date bound.",
61339
+ default: null
61340
+ },
61341
+ endTime: {
61342
+ pattern: "^(?:[01]\\d|2[0-3]):[0-5]\\d$",
61343
+ description: "End of this local time band in HH:MM, interpreted in its resource’s timezone.",
61344
+ type: "string"
61345
+ },
61346
+ kind: {
61347
+ anyOf: [
61348
+ {
61349
+ const: "weekly",
61350
+ type: "string"
61351
+ },
61352
+ {
61353
+ const: "date_override",
61354
+ type: "string"
61355
+ },
61356
+ {
61357
+ const: "time_off",
61358
+ type: "string"
61359
+ },
61360
+ {
61361
+ const: "block",
61362
+ type: "string"
61363
+ }
61364
+ ],
61365
+ description: "Declared domain kind of this record or configuration element."
61366
+ },
61367
+ startTime: {
61368
+ pattern: "^(?:[01]\\d|2[0-3]):[0-5]\\d$",
61369
+ description: "Start of this local time band in HH:MM, interpreted in its resource’s timezone.",
61370
+ type: "string"
61371
+ },
61372
+ weekdays: {
61373
+ maxItems: 7,
61374
+ type: "array",
61375
+ items: {
61376
+ minimum: 0,
61377
+ maximum: 6,
61378
+ type: "integer"
61379
+ },
61380
+ description: "Local weekdays on which a weekly band applies, numbered Sunday 0 through Saturday 6.",
61381
+ default: []
61382
+ }
61383
+ }
61384
+ },
61385
+ description: "Schedule bands or profile policy rules owned by this configuration."
61386
+ }
61387
+ }
61388
+ },
61389
+ AgendaScheduleRulesListInput: {
61390
+ additionalProperties: false,
61391
+ type: "object",
61392
+ properties: {
61393
+ resourceId: {
61394
+ description: "Scheduling resource addressed by this request or associated with this record.",
61395
+ pattern: "^srs_[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$",
61396
+ type: "string"
61397
+ }
61398
+ }
61399
+ },
61400
+ AgendaServicesCreateInput: {
61401
+ additionalProperties: false,
61402
+ type: "object",
61403
+ required: [
61404
+ "defaultDurationMinutes",
61405
+ "name"
61406
+ ],
61407
+ properties: {
61408
+ defaultDurationMinutes: {
61409
+ minimum: 1,
61410
+ maximum: 1440,
61411
+ description: "Default appointment duration for this service, in minutes. Each offering can specify its own duration.",
61412
+ type: "integer"
61413
+ },
61414
+ details: {
61415
+ type: "object",
61416
+ patternProperties: {
61417
+ "^.{1,200}$": {
61418
+ $ref: "#/components/schemas/AgendaSchedulingJsonValue",
61419
+ description: "JSON-compatible configuration value; strings, arrays and objects have bounded size."
61420
+ }
61421
+ },
61422
+ description: "Bounded JSON configuration owned by this catalog record, including supported domain settings.",
61423
+ default: {}
61424
+ },
61425
+ name: {
61426
+ type: "string",
61427
+ description: "Display name of this catalog or configuration record."
61428
+ },
61429
+ status: {
61430
+ anyOf: [
61431
+ {
61432
+ const: "active",
61433
+ type: "string"
61434
+ },
61435
+ {
61436
+ const: "inactive",
61437
+ type: "string"
61438
+ }
61439
+ ],
61440
+ default: "active",
61441
+ description: "Lifecycle state controlling whether this record remains available to its domain consumers."
61442
+ }
61443
+ }
61444
+ },
59460
61445
  AgendaServicesListInput: {
59461
61446
  additionalProperties: false,
59462
61447
  type: "object",
@@ -59502,6 +61487,59 @@ var schemaComponents = {
59502
61487
  }
59503
61488
  }
59504
61489
  },
61490
+ AgendaServicesUpdateInput: {
61491
+ additionalProperties: false,
61492
+ type: "object",
61493
+ required: [
61494
+ "expectedVersion",
61495
+ "id"
61496
+ ],
61497
+ properties: {
61498
+ defaultDurationMinutes: {
61499
+ minimum: 1,
61500
+ maximum: 1440,
61501
+ description: "Default appointment duration for this service, in minutes. Each offering can specify its own duration.",
61502
+ type: "integer"
61503
+ },
61504
+ details: {
61505
+ type: "object",
61506
+ patternProperties: {
61507
+ "^.{1,200}$": {
61508
+ $ref: "#/components/schemas/AgendaSchedulingJsonValue",
61509
+ description: "JSON-compatible configuration value; strings, arrays and objects have bounded size."
61510
+ }
61511
+ },
61512
+ description: "Bounded JSON configuration owned by this catalog record, including supported domain settings."
61513
+ },
61514
+ name: {
61515
+ type: "string",
61516
+ description: "Display name of this catalog or configuration record."
61517
+ },
61518
+ status: {
61519
+ anyOf: [
61520
+ {
61521
+ const: "active",
61522
+ type: "string"
61523
+ },
61524
+ {
61525
+ const: "inactive",
61526
+ type: "string"
61527
+ }
61528
+ ],
61529
+ description: "Lifecycle state controlling whether this record remains available to its domain consumers."
61530
+ },
61531
+ expectedVersion: {
61532
+ exclusiveMinimum: 0,
61533
+ description: "Version last read by the caller. The mutation fails if another writer has changed this record.",
61534
+ type: "integer"
61535
+ },
61536
+ id: {
61537
+ description: "Stable svc-prefixed Scheduling record identifier; ownership is checked in the authenticated organization.",
61538
+ pattern: "^svc_[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$",
61539
+ type: "string"
61540
+ }
61541
+ }
61542
+ },
59505
61543
  AgendaAvailabilityFirstInput: {
59506
61544
  additionalProperties: false,
59507
61545
  type: "object",
@@ -59621,42 +61659,7 @@ var schemaComponents = {
59621
61659
  description: "Desk note attached to the waiting-list entry; null means no note is recorded."
59622
61660
  },
59623
61661
  patient: {
59624
- additionalProperties: false,
59625
- type: "object",
59626
- required: [
59627
- "document",
59628
- "name"
59629
- ],
59630
- properties: {
59631
- document: {
59632
- anyOf: [
59633
- {
59634
- type: "string"
59635
- },
59636
- {
59637
- type: "null"
59638
- }
59639
- ],
59640
- description: "Normalized patient document number; null when no document is recorded. Identity combines its type and number."
59641
- },
59642
- documentType: {
59643
- anyOf: [
59644
- {
59645
- description: "Document-type code from the organization’s configured active types. Input is trimmed and uppercased.",
59646
- type: "string"
59647
- },
59648
- {
59649
- type: "null"
59650
- }
59651
- ],
59652
- default: null,
59653
- description: "Organization-configured document type code. A number without a supplied type uses the configured first type; no number means no stored type."
59654
- },
59655
- name: {
59656
- type: "string",
59657
- description: "Patient display name with surrounding whitespace removed."
59658
- }
59659
- },
61662
+ $ref: "#/components/schemas/AgendaPatientIdentityInput",
59660
61663
  description: "Patient identity copied into the booking; null when no patient identity was supplied."
59661
61664
  },
59662
61665
  payer: {
@@ -63114,6 +65117,241 @@ var schemaComponents = {
63114
65117
  },
63115
65118
  additionalProperties: false
63116
65119
  },
65120
+ RaizChannelsCreateInput: {
65121
+ anyOf: [
65122
+ {
65123
+ description: "A pending WhatsApp channel and the setup link where the customer connects their number. Call `verifyChannel` once they finish.",
65124
+ additionalProperties: false,
65125
+ type: "object",
65126
+ required: [
65127
+ "channelType"
65128
+ ],
65129
+ properties: {
65130
+ agentId: {
65131
+ description: "Agent id.",
65132
+ examples: [
65133
+ "agt_01m45h8q2rf3t9w6y7z0b1c2d3"
65134
+ ],
65135
+ pattern: "^agt_(?:[0-7][0-9a-hjkmnp-tv-z]{25}|(?:[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}|[a-f0-9]{32}))$",
65136
+ type: "string"
65137
+ },
65138
+ inboundEnabled: {
65139
+ description: "Inbound traffic needs an assigned Agent. WhatsApp outbound traffic can send notifications without one; other channel types require an Agent. Defaults to on when created with an Agent.",
65140
+ type: "boolean"
65141
+ },
65142
+ name: {
65143
+ maxLength: 120,
65144
+ minLength: 1,
65145
+ type: "string"
65146
+ },
65147
+ outboundEnabled: {
65148
+ description: "Inbound traffic needs an assigned Agent. WhatsApp outbound traffic can send notifications without one; other channel types require an Agent. Defaults to on when created with an Agent.",
65149
+ type: "boolean"
65150
+ },
65151
+ channelType: {
65152
+ const: "whatsapp",
65153
+ type: "string"
65154
+ }
65155
+ }
65156
+ },
65157
+ {
65158
+ description: "A voice number, connected at once.",
65159
+ additionalProperties: false,
65160
+ type: "object",
65161
+ required: [
65162
+ "channelType",
65163
+ "endpoint"
65164
+ ],
65165
+ properties: {
65166
+ agentId: {
65167
+ description: "Agent id.",
65168
+ examples: [
65169
+ "agt_01m45h8q2rf3t9w6y7z0b1c2d3"
65170
+ ],
65171
+ pattern: "^agt_(?:[0-7][0-9a-hjkmnp-tv-z]{25}|(?:[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}|[a-f0-9]{32}))$",
65172
+ type: "string"
65173
+ },
65174
+ inboundEnabled: {
65175
+ description: "Inbound traffic needs an assigned Agent. WhatsApp outbound traffic can send notifications without one; other channel types require an Agent. Defaults to on when created with an Agent.",
65176
+ type: "boolean"
65177
+ },
65178
+ name: {
65179
+ maxLength: 120,
65180
+ minLength: 1,
65181
+ type: "string"
65182
+ },
65183
+ outboundEnabled: {
65184
+ description: "Inbound traffic needs an assigned Agent. WhatsApp outbound traffic can send notifications without one; other channel types require an Agent. Defaults to on when created with an Agent.",
65185
+ type: "boolean"
65186
+ },
65187
+ channelType: {
65188
+ const: "voice",
65189
+ type: "string"
65190
+ },
65191
+ endpoint: {
65192
+ anyOf: [
65193
+ {
65194
+ description: "A phone number the platform already owns.",
65195
+ additionalProperties: false,
65196
+ type: "object",
65197
+ required: [
65198
+ "kind",
65199
+ "phoneNumber"
65200
+ ],
65201
+ properties: {
65202
+ kind: {
65203
+ const: "platform_number",
65204
+ type: "string"
65205
+ },
65206
+ label: {
65207
+ maxLength: 120,
65208
+ type: "string"
65209
+ },
65210
+ phoneNumber: {
65211
+ $ref: "#/components/schemas/RaizPhoneNumber",
65212
+ description: "Phone number in E.164 format."
65213
+ }
65214
+ }
65215
+ },
65216
+ {
65217
+ description: "The organization's own carrier, reached over SIP.",
65218
+ additionalProperties: false,
65219
+ type: "object",
65220
+ required: [
65221
+ "address",
65222
+ "kind",
65223
+ "phoneNumber"
65224
+ ],
65225
+ properties: {
65226
+ address: {
65227
+ description: "The SIP host or IP the carrier receives calls at, with an optional port.",
65228
+ maxLength: 253,
65229
+ pattern: "^[A-Za-z0-9]([A-Za-z0-9.-]*[A-Za-z0-9])?(:[0-9]{1,5})?$",
65230
+ type: "string"
65231
+ },
65232
+ kind: {
65233
+ const: "sip_trunk",
65234
+ type: "string"
65235
+ },
65236
+ label: {
65237
+ maxLength: 120,
65238
+ type: "string"
65239
+ },
65240
+ mediaEncryption: {
65241
+ anyOf: [
65242
+ {
65243
+ const: "disabled",
65244
+ type: "string"
65245
+ },
65246
+ {
65247
+ const: "allowed",
65248
+ type: "string"
65249
+ },
65250
+ {
65251
+ const: "required",
65252
+ type: "string"
65253
+ }
65254
+ ]
65255
+ },
65256
+ password: {
65257
+ description: "Digest credentials, used once to connect the carrier and never stored.",
65258
+ maxLength: 256,
65259
+ writeOnly: true,
65260
+ type: "string"
65261
+ },
65262
+ phoneNumber: {
65263
+ $ref: "#/components/schemas/RaizPhoneNumber",
65264
+ description: "Phone number in E.164 format."
65265
+ },
65266
+ transport: {
65267
+ anyOf: [
65268
+ {
65269
+ const: "auto",
65270
+ type: "string"
65271
+ },
65272
+ {
65273
+ const: "udp",
65274
+ type: "string"
65275
+ },
65276
+ {
65277
+ const: "tcp",
65278
+ type: "string"
65279
+ },
65280
+ {
65281
+ const: "tls",
65282
+ type: "string"
65283
+ }
65284
+ ]
65285
+ },
65286
+ username: {
65287
+ maxLength: 256,
65288
+ type: "string"
65289
+ }
65290
+ }
65291
+ }
65292
+ ]
65293
+ }
65294
+ }
65295
+ },
65296
+ {
65297
+ description: "The chat widget, with its configuration.",
65298
+ additionalProperties: false,
65299
+ type: "object",
65300
+ required: [
65301
+ "channelType",
65302
+ "widget"
65303
+ ],
65304
+ properties: {
65305
+ agentId: {
65306
+ description: "Agent id.",
65307
+ examples: [
65308
+ "agt_01m45h8q2rf3t9w6y7z0b1c2d3"
65309
+ ],
65310
+ pattern: "^agt_(?:[0-7][0-9a-hjkmnp-tv-z]{25}|(?:[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}|[a-f0-9]{32}))$",
65311
+ type: "string"
65312
+ },
65313
+ inboundEnabled: {
65314
+ description: "Inbound traffic needs an assigned Agent. WhatsApp outbound traffic can send notifications without one; other channel types require an Agent. Defaults to on when created with an Agent.",
65315
+ type: "boolean"
65316
+ },
65317
+ name: {
65318
+ maxLength: 120,
65319
+ minLength: 1,
65320
+ type: "string"
65321
+ },
65322
+ outboundEnabled: {
65323
+ description: "Inbound traffic needs an assigned Agent. WhatsApp outbound traffic can send notifications without one; other channel types require an Agent. Defaults to on when created with an Agent.",
65324
+ type: "boolean"
65325
+ },
65326
+ channelType: {
65327
+ const: "web",
65328
+ type: "string"
65329
+ },
65330
+ widget: {
65331
+ $ref: "#/components/schemas/RaizWidgetSettingsInput",
65332
+ description: "The web chat widget's configuration."
65333
+ }
65334
+ }
65335
+ }
65336
+ ]
65337
+ },
65338
+ RaizChannelsDeleteInput: {
65339
+ additionalProperties: false,
65340
+ type: "object",
65341
+ required: [
65342
+ "channelId"
65343
+ ],
65344
+ properties: {
65345
+ channelId: {
65346
+ description: "Channel id.",
65347
+ examples: [
65348
+ "chn_01m45h8q2rf3t9w6y7z0b1c2d3"
65349
+ ],
65350
+ pattern: "^(?:chn_(?:[0-7][0-9a-hjkmnp-tv-z]{25}|(?:[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}|[a-f0-9]{32}))|(?:agc)_(?:[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}|[a-f0-9]{32}))$",
65351
+ type: "string"
65352
+ }
65353
+ }
65354
+ },
63117
65355
  RaizChannelsGetInput: {
63118
65356
  type: "object",
63119
65357
  properties: {
@@ -63139,6 +65377,23 @@ var schemaComponents = {
63139
65377
  ],
63140
65378
  additionalProperties: false
63141
65379
  },
65380
+ RaizChannelsRenewSetupInput: {
65381
+ additionalProperties: false,
65382
+ type: "object",
65383
+ required: [
65384
+ "channelId"
65385
+ ],
65386
+ properties: {
65387
+ channelId: {
65388
+ description: "Channel id.",
65389
+ examples: [
65390
+ "chn_01m45h8q2rf3t9w6y7z0b1c2d3"
65391
+ ],
65392
+ pattern: "^(?:chn_(?:[0-7][0-9a-hjkmnp-tv-z]{25}|(?:[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}|[a-f0-9]{32}))|(?:agc)_(?:[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}|[a-f0-9]{32}))$",
65393
+ type: "string"
65394
+ }
65395
+ }
65396
+ },
63142
65397
  RaizChannelsUpdateInput: {
63143
65398
  additionalProperties: false,
63144
65399
  type: "object",
@@ -66155,7 +68410,7 @@ var schemaComponents = {
66155
68410
  type: "string"
66156
68411
  },
66157
68412
  name: {
66158
- description: "`conversations_daily`: conversations the AI took part in per day, Agent, channel type and direction, with outcomes, escalations to the team and the conversations to review (filters `agentId`, `channelType`); WhatsApp conversations the organization's people handled on their own are left out. `tool_calls_daily`: AI tool calls per day, Agent and tool, with failures and durations (filter `agentId`). `tool_calls`: the same calls one by one, newest first, each with its conversation, status, duration and error code, never its input or output (filter `agentId`). `assessment_results_daily`: yes/no assessments per day and definition (filter `definitionId`). `campaign_progress`: recipients per campaign by status (filter `campaignId`; no date range).",
68413
+ description: "`conversations_daily`: conversations the AI took part in per day, Agent, channel type and direction, with outcomes and escalations (filters `agentId`, `channelType`). `booking_outcomes`: verified saved booking receipts per completion day, Agent and integration, excluding test/import/deleted conversations; confirmed new bookings, reschedules, cancellations, failed, pending, unverified and duplicate receipts separately (filter `agentId`). Historical evidence, not current appointment status; hasMore requires splitting the range and returns no partial totals. `tool_calls_daily`: tool calls per day, Agent and tool with failures/durations (filter `agentId`). `tool_calls`: individual calls, never inputs/outputs (filter `agentId`). `assessment_results_daily`: assessments per day/definition (filter `definitionId`). `campaign_progress`: recipients by status (filter `campaignId`; no dates).",
66159
68414
  anyOf: [
66160
68415
  {
66161
68416
  const: "conversations_daily",
@@ -66169,6 +68424,10 @@ var schemaComponents = {
66169
68424
  const: "tool_calls",
66170
68425
  type: "string"
66171
68426
  },
68427
+ {
68428
+ const: "booking_outcomes",
68429
+ type: "string"
68430
+ },
66172
68431
  {
66173
68432
  const: "assessment_results_daily",
66174
68433
  type: "string"
@@ -69500,9 +71759,9 @@ var schemaComponents = {
69500
71759
  // src/generated/generation.json
69501
71760
  var generation_default = {
69502
71761
  formatVersion: 6,
69503
- release: "1.20261019.214511",
69504
- openapiSha256: "7074f19dfc5c4078da43165defb4b208d5680a0ce3b7d8d80719974b9bb02618",
69505
- openapiContentSha256: "84dc23076d7f8fcdd9fc8ff13bb53ba4093f93613e32d3097f43fecf50e4f0d3",
71762
+ release: "1.20261020.162831",
71763
+ openapiSha256: "d684366d945dec0cfe5900fed4e51473963873db416e99cfd182b99561d82454",
71764
+ openapiContentSha256: "3c0996ddbfb92924b8d8bc8f0ccaef401eb19e2f6168ec412558a37cf0709240",
69506
71765
  forge: {
69507
71766
  repository: "https://github.com/cloudflare/forge",
69508
71767
  commit: "7f86447210b7bea3779bfdab3cd5655eade0eadb",
@@ -69515,7 +71774,7 @@ var generation_default = {
69515
71774
  outputs: [
69516
71775
  {
69517
71776
  path: "src/generated/commands.ts",
69518
- sha256: "1d28abb5d7863563d51223ec5d0fc681c28eb26dd9d252f705ccfe26962dc4cc"
71777
+ sha256: "47d6deb6fa4529adfd2f12cf375336fbd77960017760f56c7ea51abb8f08d216"
69519
71778
  }
69520
71779
  ]
69521
71780
  };
@@ -69870,7 +72129,7 @@ ${name}`);
69870
72129
  }
69871
72130
 
69872
72131
  // src/index.ts
69873
- var VERSION = "2.2.0";
72132
+ var VERSION = "2.3.0";
69874
72133
  var RELEASE = generation_default.release;
69875
72134
  var SDK_PATHS = new Map(Object.values(commands).map((command) => [command.operation, command.sdkPath]));
69876
72135
  var SERVICES = [...new Set(Object.keys(commands).map((name) => name.split(" ")[0]))].toSorted();