@smartytalent/openai-tools 0.1.33-dev.2 → 0.1.33-dev.20

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 (2) hide show
  1. package/dist/tools.json +1110 -122
  2. package/package.json +1 -1
package/dist/tools.json CHANGED
@@ -6501,6 +6501,7 @@
6501
6501
  "sent",
6502
6502
  "suppressed",
6503
6503
  "archived",
6504
+ "trashed",
6504
6505
  "failed",
6505
6506
  "pending"
6506
6507
  ]
@@ -6509,6 +6510,32 @@
6509
6510
  "type": "string",
6510
6511
  "description": "Return only emails belonging to this conversation. Resolved via the ConversationIdIndex GSI (top-level denormalisation of relationships.conversations[0].data.id). Pass the full conversation id (e.g. `980434e7...-2`)."
6511
6512
  },
6513
+ "filterDirection": {
6514
+ "type": "string",
6515
+ "description": "Return only emails with this direction. `inbound` = received from an external sender (Inbox), `outbound` = composed by the tenant (Sent). Resolved via the DirectionIndex GSI. Mutually exclusive with `filterStatus` and `filterConversationId` at the pagination layer.",
6516
+ "enum": [
6517
+ "inbound",
6518
+ "outbound"
6519
+ ]
6520
+ },
6521
+ "filterIds": {
6522
+ "type": "string",
6523
+ "description": "Batch-fetch emails by id. Pass a comma-separated list (e.g. `abc-1,def-2,ghi-3`). Resolves each id's shard from its suffix and issues a BatchGetItem. Used by the inbox UI to hydrate emails referenced by state rows (folder=unseen / starred / spam) without N showEmail calls. Cap: 500 ids per request; beyond that, page the state list and batch again. Bypasses pagination - the returned `data` is the full batch result with no `nextPage` cursor."
6524
+ },
6525
+ "filterIsSystemSpam": {
6526
+ "type": "boolean",
6527
+ "description": "Return only emails the system (broker / classifier) flagged as spam. Used by the Spam folder's `isSystemSpam=true` leg - the other leg comes from `/v1/states?folder=spam`. Backed by a filter-expression scan across shards for v1; promote to a sparse `SystemSpamIndex` if load warrants. Mutually exclusive with the other index-backed filters at the pagination layer."
6528
+ },
6529
+ "sort": {
6530
+ "type": "string",
6531
+ "description": "Order results by a time field. Leading `-` means descending\n(newest-first). Accepted values:\n `-created` newest-first by creation time (CreatedIndex)\n `created` oldest-first by creation time\n `-modified` most-recently-modified first (ModifiedIndex)\n `modified` least-recently-modified first\nTakes effect only when no equality filter (filterStatus,\nfilterConversationId, filterDirection) dictates a different\nindex; equality filters win. Compatible with date-range filters\n(filterCreatedFrom/To, filterModifiedFrom/To) which already use\nthe same indexes; sort just picks the direction.",
6532
+ "enum": [
6533
+ "-created",
6534
+ "created",
6535
+ "-modified",
6536
+ "modified"
6537
+ ]
6538
+ },
6512
6539
  "filterCreatedFrom": {
6513
6540
  "type": "string",
6514
6541
  "description": "Filters results to include only those created from the specified date and time. The value must be in ISO 8601 format."
@@ -6584,12 +6611,14 @@
6584
6611
  "draft",
6585
6612
  "scheduled",
6586
6613
  "sent",
6614
+ "received",
6587
6615
  "suppressed",
6588
6616
  "archived",
6617
+ "trashed",
6589
6618
  "failed",
6590
6619
  "pending"
6591
6620
  ],
6592
- "description": "Lifecycle status. draft = composing, scheduled = workflow owns the send, sent = delivered to SES, suppressed = SES bounce/complaint, archived = user soft-deleted, failed = internal error, pending = transitional."
6621
+ "description": "Lifecycle status. draft = composing, scheduled = workflow owns the send, sent = outbound delivered to SES, received = inbound accepted by broker (replaces the legacy `sent` value used for inbound), suppressed = SES bounce/complaint, archived = user explicitly archived (kept indefinitely, hidden from inbox view), trashed = user moved to Trash bin (default soft DELETE; recoverable, candidate for periodic permanent purge), failed = internal error, pending = transitional."
6593
6622
  },
6594
6623
  "direction": {
6595
6624
  "type": "string",
@@ -6620,26 +6649,18 @@
6620
6649
  "description": "BCC recipients. Each entry is an RFC 5322 address string."
6621
6650
  },
6622
6651
  "subject": {
6623
- "oneOf": [
6624
- {
6625
- "type": "string"
6626
- },
6627
- {
6628
- "type": "object",
6629
- "additionalProperties": true
6630
- }
6631
- ]
6652
+ "type": "object",
6653
+ "additionalProperties": {
6654
+ "type": "string"
6655
+ },
6656
+ "description": "Multilingual subject keyed by IETF BCP 47 locale code (e.g. `en-US`, `pl-PL`). The DAL writes per-locale entries from the AI analyze + translate steps; the UI picks the right key based on `conversationLanguageCode`."
6632
6657
  },
6633
6658
  "body": {
6634
- "oneOf": [
6635
- {
6636
- "type": "string"
6637
- },
6638
- {
6639
- "type": "object",
6640
- "additionalProperties": true
6641
- }
6642
- ]
6659
+ "type": "object",
6660
+ "additionalProperties": {
6661
+ "type": "string"
6662
+ },
6663
+ "description": "Multilingual HTML body keyed by IETF BCP 47 locale code. Same shape as `subject`. Body values are HTML strings; plain-text fallback is derived on send."
6643
6664
  },
6644
6665
  "shortCode": {
6645
6666
  "type": "string"
@@ -6662,23 +6683,65 @@
6662
6683
  "type": "object",
6663
6684
  "properties": {
6664
6685
  "fileName": {
6665
- "type": "string"
6686
+ "type": "string",
6687
+ "description": "Display name shown in the mail client and used as the attachment filename on send."
6666
6688
  },
6667
6689
  "url": {
6668
- "type": "string"
6690
+ "type": "string",
6691
+ "description": "S3 URL of the stored file. For user-uploaded attachments this is the path returned by POST /v1/files; for system-generated attachments (job/persona/report PDFs) it is the resource's own S3 path."
6669
6692
  },
6670
6693
  "type": {
6671
6694
  "type": "string",
6672
- "description": "Resource type this attachment belongs to: jobs, personas, talents, candidates, reports, files, ads."
6695
+ "description": "Resource type this attachment belongs to. User-uploaded attachments use `files`; system-generated attachments use the owning resource type: `jobs`, `personas`, `talents`, `candidates`, `reports`, `ads`."
6696
+ },
6697
+ "fileId": {
6698
+ "type": "string",
6699
+ "description": "When `type == \"files\"`, the file resource ID so the frontend can resolve the latest file metadata (status, processing state) without parsing the URL."
6700
+ },
6701
+ "size": {
6702
+ "type": "integer",
6703
+ "description": "File size in bytes. Frontend displays it in the compose preview and mail list. Set by the upload flow from the Content-Length of the S3 object; absent on legacy rows."
6704
+ },
6705
+ "contentType": {
6706
+ "type": "string",
6707
+ "description": "MIME type (e.g. `application/pdf`, `image/png`). Drives icon selection in the UI and the Content-Type header in the outbound MIME part. Absent on legacy rows; frontend should fall back to extension inference."
6708
+ },
6709
+ "thumbnailUrl": {
6710
+ "type": "string",
6711
+ "description": "Optional S3 URL of a PNG preview (first-page render for PDFs/DOCX). Populated by the file service's conversion pipeline when a preview is available. Absent for non-previewable types."
6673
6712
  }
6674
6713
  }
6675
6714
  },
6676
- "description": "Attachments referenced by URL into the service-owned S3 buckets. Presigned fetch URLs are not included; use the corresponding resource's download flow."
6715
+ "description": "Attachments on the email. For user-uploaded attachments: frontend creates a File via POST /v1/files (which returns a presigned PUT URL), uploads to S3, then references the File here with `type: \"files\"` and the returned `url`/`fileId`. For system-generated attachments (job/persona/report PDFs) the eventbus / outbound path populates these automatically."
6677
6716
  },
6678
6717
  "conversationLanguageCode": {
6679
6718
  "type": "string",
6680
6719
  "description": "Denormalised copy of the related conversation's languageCode (e.g. `pl-PL`, `en-US`). Avoids an N+1 fetch when the list/detail view needs to pick the right locale for the multilingual subject/body dicts. Source of truth is the conversation row; read-only from the email's perspective."
6681
6720
  },
6721
+ "parentEmailId": {
6722
+ "type": "string",
6723
+ "description": "Application-layer pointer to the email this one replies to. Used by the UI to render an 'in reply to' link in thread views. Set by the compose flow (frontend passes the parent on Reply) and by the broker when an inbound email matches an outbound via RFC 5322 In-Reply-To. Separate from meta.reference which carries the raw SMTP header chain."
6724
+ },
6725
+ "fromUserId": {
6726
+ "type": "string",
6727
+ "description": "Denormalised user id of the sender for outbound emails (the boe workflow user, or the human composer). Frontend joins this against its local user cache to render avatar + display name without a per-row API call. Null on inbound mail."
6728
+ },
6729
+ "fromCandidateId": {
6730
+ "type": "string",
6731
+ "description": "Denormalised candidate id of the sender for inbound replies from a candidate in an active conversation. Frontend joins this against its local candidate cache to render initials and the candidate name. Null on outbound mail and on anonymous inbound that didn't match a candidate."
6732
+ },
6733
+ "isSystemSpam": {
6734
+ "type": "boolean",
6735
+ "description": "System-level spam verdict on this email. Set by the broker (or a future classifier) at inbound time; never reflects a single user's opinion. Distinct from `status=suppressed`, which is SES reporting we cannot deliver on OUTBOUND. Frontend's Spam folder unions (my states where isSpam=true) with (emails where isSystemSpam=true)."
6736
+ },
6737
+ "scheduleId": {
6738
+ "type": "string",
6739
+ "description": "Foreign key to the Schedule resource driving this email's send. Populated by the wait:process workflow action right after it creates the Schedule. Null when no delayed send is pending (drafts, already-sent rows, inbound mail). To cancel the scheduled send, call DELETE /v1/schedules/{scheduleId} - the email eventbus handler listens for SCHEDULE_CANCELLED and reverts the row back to draft automatically."
6740
+ },
6741
+ "scheduledFireAt": {
6742
+ "type": "string",
6743
+ "description": "Denormalised copy of the owning Schedule's `fireAt` timestamp (ISO 8601). The scheduled-send banner reads this directly so the UI never has to round-trip to /v1/schedules just to render 'Send scheduled for X'. Source of truth is the Schedule; this field stays stable because Schedule.fireAt is immutable post-create."
6744
+ },
6682
6745
  "ttl": {
6683
6746
  "type": "string"
6684
6747
  },
@@ -6806,6 +6869,25 @@
6806
6869
  }
6807
6870
  }
6808
6871
  }
6872
+ },
6873
+ "schedule": {
6874
+ "title": "EmailRelationshipsScheduleSchema",
6875
+ "type": "object",
6876
+ "description": "The Schedule arming this email's delayed send. Denormalised mirror of scheduleId so clients can `?include=schedule` in a single request. Populated by the email eventbus handler reacting to SCHEDULE_CREATED. Null while the email is draft / already-sent / inbound.",
6877
+ "properties": {
6878
+ "data": {
6879
+ "title": "EmailRelationshipsScheduleDataSchema",
6880
+ "type": "object",
6881
+ "properties": {
6882
+ "type": {
6883
+ "type": "string"
6884
+ },
6885
+ "id": {
6886
+ "type": "string"
6887
+ }
6888
+ }
6889
+ }
6890
+ }
6809
6891
  }
6810
6892
  }
6811
6893
  },
@@ -6884,12 +6966,14 @@
6884
6966
  "draft",
6885
6967
  "scheduled",
6886
6968
  "sent",
6969
+ "received",
6887
6970
  "suppressed",
6888
6971
  "archived",
6972
+ "trashed",
6889
6973
  "failed",
6890
6974
  "pending"
6891
6975
  ],
6892
- "description": "Lifecycle status. draft = composing, scheduled = workflow owns the send, sent = delivered to SES, suppressed = SES bounce/complaint, archived = user soft-deleted, failed = internal error, pending = transitional."
6976
+ "description": "Lifecycle status. draft = composing, scheduled = workflow owns the send, sent = outbound delivered to SES, received = inbound accepted by broker (replaces the legacy `sent` value used for inbound), suppressed = SES bounce/complaint, archived = user explicitly archived (kept indefinitely, hidden from inbox view), trashed = user moved to Trash bin (default soft DELETE; recoverable, candidate for periodic permanent purge), failed = internal error, pending = transitional."
6893
6977
  },
6894
6978
  "direction": {
6895
6979
  "type": "string",
@@ -6920,26 +7004,18 @@
6920
7004
  "description": "BCC recipients. Each entry is an RFC 5322 address string."
6921
7005
  },
6922
7006
  "subject": {
6923
- "oneOf": [
6924
- {
6925
- "type": "string"
6926
- },
6927
- {
6928
- "type": "object",
6929
- "additionalProperties": true
6930
- }
6931
- ]
7007
+ "type": "object",
7008
+ "additionalProperties": {
7009
+ "type": "string"
7010
+ },
7011
+ "description": "Multilingual subject keyed by IETF BCP 47 locale code (e.g. `en-US`, `pl-PL`). The DAL writes per-locale entries from the AI analyze + translate steps; the UI picks the right key based on `conversationLanguageCode`."
6932
7012
  },
6933
7013
  "body": {
6934
- "oneOf": [
6935
- {
6936
- "type": "string"
6937
- },
6938
- {
6939
- "type": "object",
6940
- "additionalProperties": true
6941
- }
6942
- ]
7014
+ "type": "object",
7015
+ "additionalProperties": {
7016
+ "type": "string"
7017
+ },
7018
+ "description": "Multilingual HTML body keyed by IETF BCP 47 locale code. Same shape as `subject`. Body values are HTML strings; plain-text fallback is derived on send."
6943
7019
  },
6944
7020
  "shortCode": {
6945
7021
  "type": "string"
@@ -6962,23 +7038,65 @@
6962
7038
  "type": "object",
6963
7039
  "properties": {
6964
7040
  "fileName": {
6965
- "type": "string"
7041
+ "type": "string",
7042
+ "description": "Display name shown in the mail client and used as the attachment filename on send."
6966
7043
  },
6967
7044
  "url": {
6968
- "type": "string"
7045
+ "type": "string",
7046
+ "description": "S3 URL of the stored file. For user-uploaded attachments this is the path returned by POST /v1/files; for system-generated attachments (job/persona/report PDFs) it is the resource's own S3 path."
6969
7047
  },
6970
7048
  "type": {
6971
7049
  "type": "string",
6972
- "description": "Resource type this attachment belongs to: jobs, personas, talents, candidates, reports, files, ads."
7050
+ "description": "Resource type this attachment belongs to. User-uploaded attachments use `files`; system-generated attachments use the owning resource type: `jobs`, `personas`, `talents`, `candidates`, `reports`, `ads`."
7051
+ },
7052
+ "fileId": {
7053
+ "type": "string",
7054
+ "description": "When `type == \"files\"`, the file resource ID so the frontend can resolve the latest file metadata (status, processing state) without parsing the URL."
7055
+ },
7056
+ "size": {
7057
+ "type": "integer",
7058
+ "description": "File size in bytes. Frontend displays it in the compose preview and mail list. Set by the upload flow from the Content-Length of the S3 object; absent on legacy rows."
7059
+ },
7060
+ "contentType": {
7061
+ "type": "string",
7062
+ "description": "MIME type (e.g. `application/pdf`, `image/png`). Drives icon selection in the UI and the Content-Type header in the outbound MIME part. Absent on legacy rows; frontend should fall back to extension inference."
7063
+ },
7064
+ "thumbnailUrl": {
7065
+ "type": "string",
7066
+ "description": "Optional S3 URL of a PNG preview (first-page render for PDFs/DOCX). Populated by the file service's conversion pipeline when a preview is available. Absent for non-previewable types."
6973
7067
  }
6974
7068
  }
6975
7069
  },
6976
- "description": "Attachments referenced by URL into the service-owned S3 buckets. Presigned fetch URLs are not included; use the corresponding resource's download flow."
7070
+ "description": "Attachments on the email. For user-uploaded attachments: frontend creates a File via POST /v1/files (which returns a presigned PUT URL), uploads to S3, then references the File here with `type: \"files\"` and the returned `url`/`fileId`. For system-generated attachments (job/persona/report PDFs) the eventbus / outbound path populates these automatically."
6977
7071
  },
6978
7072
  "conversationLanguageCode": {
6979
7073
  "type": "string",
6980
7074
  "description": "Denormalised copy of the related conversation's languageCode (e.g. `pl-PL`, `en-US`). Avoids an N+1 fetch when the list/detail view needs to pick the right locale for the multilingual subject/body dicts. Source of truth is the conversation row; read-only from the email's perspective."
6981
7075
  },
7076
+ "parentEmailId": {
7077
+ "type": "string",
7078
+ "description": "Application-layer pointer to the email this one replies to. Used by the UI to render an 'in reply to' link in thread views. Set by the compose flow (frontend passes the parent on Reply) and by the broker when an inbound email matches an outbound via RFC 5322 In-Reply-To. Separate from meta.reference which carries the raw SMTP header chain."
7079
+ },
7080
+ "fromUserId": {
7081
+ "type": "string",
7082
+ "description": "Denormalised user id of the sender for outbound emails (the boe workflow user, or the human composer). Frontend joins this against its local user cache to render avatar + display name without a per-row API call. Null on inbound mail."
7083
+ },
7084
+ "fromCandidateId": {
7085
+ "type": "string",
7086
+ "description": "Denormalised candidate id of the sender for inbound replies from a candidate in an active conversation. Frontend joins this against its local candidate cache to render initials and the candidate name. Null on outbound mail and on anonymous inbound that didn't match a candidate."
7087
+ },
7088
+ "isSystemSpam": {
7089
+ "type": "boolean",
7090
+ "description": "System-level spam verdict on this email. Set by the broker (or a future classifier) at inbound time; never reflects a single user's opinion. Distinct from `status=suppressed`, which is SES reporting we cannot deliver on OUTBOUND. Frontend's Spam folder unions (my states where isSpam=true) with (emails where isSystemSpam=true)."
7091
+ },
7092
+ "scheduleId": {
7093
+ "type": "string",
7094
+ "description": "Foreign key to the Schedule resource driving this email's send. Populated by the wait:process workflow action right after it creates the Schedule. Null when no delayed send is pending (drafts, already-sent rows, inbound mail). To cancel the scheduled send, call DELETE /v1/schedules/{scheduleId} - the email eventbus handler listens for SCHEDULE_CANCELLED and reverts the row back to draft automatically."
7095
+ },
7096
+ "scheduledFireAt": {
7097
+ "type": "string",
7098
+ "description": "Denormalised copy of the owning Schedule's `fireAt` timestamp (ISO 8601). The scheduled-send banner reads this directly so the UI never has to round-trip to /v1/schedules just to render 'Send scheduled for X'. Source of truth is the Schedule; this field stays stable because Schedule.fireAt is immutable post-create."
7099
+ },
6982
7100
  "ttl": {
6983
7101
  "type": "string"
6984
7102
  },
@@ -7020,7 +7138,16 @@
7020
7138
  "description": "Delete Email",
7021
7139
  "parameters": {
7022
7140
  "type": "object",
7023
- "properties": {}
7141
+ "properties": {
7142
+ "permanentDelete": {
7143
+ "type": "string",
7144
+ "description": "Set to true for permanent deletion (row removed from DynamoDB). Defaults to false (soft delete to Trash).",
7145
+ "enum": [
7146
+ "true",
7147
+ "false"
7148
+ ]
7149
+ }
7150
+ }
7024
7151
  }
7025
7152
  }
7026
7153
  },
@@ -8264,10 +8391,6 @@
8264
8391
  "attributes": {
8265
8392
  "title": "ScheduleAttributesSchema",
8266
8393
  "type": "object",
8267
- "required": [
8268
- "fireAt",
8269
- "target"
8270
- ],
8271
8394
  "properties": {
8272
8395
  "name": {
8273
8396
  "type": "string",
@@ -8279,8 +8402,10 @@
8279
8402
  "pending",
8280
8403
  "fired",
8281
8404
  "cancelled",
8282
- "failed"
8283
- ]
8405
+ "failed",
8406
+ "paused"
8407
+ ],
8408
+ "description": "Lifecycle. `pending` is armed and will fire. `fired`/`failed` are terminal. `cancelled` is terminal (hard cancel via DELETE). `paused` is pause-for-edit: EventBridge entry is removed but the row stays re-activatable by PATCH back to `pending` with a new `fireAt`."
8284
8409
  },
8285
8410
  "fireAt": {
8286
8411
  "type": "string",
@@ -8427,6 +8552,24 @@
8427
8552
  }
8428
8553
  }
8429
8554
  }
8555
+ },
8556
+ "email": {
8557
+ "title": "ScheduleRelationshipsEmailSchema",
8558
+ "type": "object",
8559
+ "description": "The email this schedule was armed for. Set by wait:process so the email service can denormalise scheduleId back onto the email row when SCHEDULE_CREATED fires.",
8560
+ "properties": {
8561
+ "data": {
8562
+ "type": "object",
8563
+ "properties": {
8564
+ "type": {
8565
+ "type": "string"
8566
+ },
8567
+ "id": {
8568
+ "type": "string"
8569
+ }
8570
+ }
8571
+ }
8572
+ }
8430
8573
  }
8431
8574
  }
8432
8575
  }
@@ -8505,10 +8648,6 @@
8505
8648
  "attributes": {
8506
8649
  "title": "ScheduleAttributesSchema",
8507
8650
  "type": "object",
8508
- "required": [
8509
- "fireAt",
8510
- "target"
8511
- ],
8512
8651
  "properties": {
8513
8652
  "name": {
8514
8653
  "type": "string",
@@ -8520,8 +8659,10 @@
8520
8659
  "pending",
8521
8660
  "fired",
8522
8661
  "cancelled",
8523
- "failed"
8524
- ]
8662
+ "failed",
8663
+ "paused"
8664
+ ],
8665
+ "description": "Lifecycle. `pending` is armed and will fire. `fired`/`failed` are terminal. `cancelled` is terminal (hard cancel via DELETE). `paused` is pause-for-edit: EventBridge entry is removed but the row stays re-activatable by PATCH back to `pending` with a new `fireAt`."
8525
8666
  },
8526
8667
  "fireAt": {
8527
8668
  "type": "string",
@@ -8668,6 +8809,24 @@
8668
8809
  }
8669
8810
  }
8670
8811
  }
8812
+ },
8813
+ "email": {
8814
+ "title": "ScheduleRelationshipsEmailSchema",
8815
+ "type": "object",
8816
+ "description": "The email this schedule was armed for. Set by wait:process so the email service can denormalise scheduleId back onto the email row when SCHEDULE_CREATED fires.",
8817
+ "properties": {
8818
+ "data": {
8819
+ "type": "object",
8820
+ "properties": {
8821
+ "type": {
8822
+ "type": "string"
8823
+ },
8824
+ "id": {
8825
+ "type": "string"
8826
+ }
8827
+ }
8828
+ }
8829
+ }
8671
8830
  }
8672
8831
  }
8673
8832
  }
@@ -11645,45 +11804,37 @@
11645
11804
  {
11646
11805
  "type": "function",
11647
11806
  "function": {
11648
- "name": "list_meetings",
11649
- "description": "List Meetings",
11807
+ "name": "list_states",
11808
+ "description": "List States",
11650
11809
  "parameters": {
11651
11810
  "type": "object",
11652
11811
  "properties": {
11653
- "filterStatus": {
11812
+ "filterResourceType": {
11654
11813
  "type": "string",
11655
- "description": "Returns meetings with the current status (active, scheduled, ended, archived). If not provided, the default value will be set to 'active'.",
11814
+ "description": "Only return states for this resource type.",
11656
11815
  "enum": [
11657
- "active",
11658
- "scheduled",
11659
- "ended",
11660
- "archived"
11816
+ "emails",
11817
+ "candidates",
11818
+ "conversations",
11819
+ "jobs",
11820
+ "talents",
11821
+ "personas",
11822
+ "reports",
11823
+ "tasks"
11661
11824
  ]
11662
11825
  },
11663
- "filterCreatedFrom": {
11664
- "type": "string",
11665
- "description": "Filters results to include only those created from the specified date and time. The value must be in ISO 8601 format."
11666
- },
11667
- "filterCreatedTo": {
11668
- "type": "string",
11669
- "description": "Filters results to include only those created up to the specified date and time. The value must be in ISO 8601 format."
11670
- },
11671
- "filterModifiedFrom": {
11826
+ "filterResourceIds": {
11672
11827
  "type": "string",
11673
- "description": "Filters results to include only those modified from the specified date and time. The value must be in ISO 8601 format."
11828
+ "description": "Comma-separated list of resource ids to batch-fetch. Requires `filterResourceType`."
11674
11829
  },
11675
- "filterModifiedTo": {
11830
+ "folder": {
11676
11831
  "type": "string",
11677
- "description": "Filters results to include only those modified up to the specified date and time. The value must be in ISO 8601 format."
11832
+ "description": "Folder-style filter. Tagged-union: the fixed folders are an enum,\nand the label folder is a `label:<labelId>` template. Orthogonal\nto filterResourceType and filterResourceIds which scope within\nthe folder.\n\nFixed folders:\n `all` - default, no folder filter\n `unseen` - only unread rows (sparse UnseenIndex)\n `starred` - only starred rows (sparse StarredIndex)\n `spam` - only user-spam-marked rows (sparse SpamIndex)\n\nLabel folder:\n `label:<labelId>` - rows whose `flags.labels` contains labelId\n\nTypeScript callers should narrow this to\n`'all' | 'unseen' | 'starred' | 'spam' | \\`label:${string}\\``\nin their client wrapper; OpenAPI cannot express template-literal\nunions natively."
11678
11833
  },
11679
11834
  "pageSize": {
11680
11835
  "type": "integer",
11681
11836
  "description": "Specifies the number of items to retrieve per page. The maximum value is 100."
11682
11837
  },
11683
- "pageNumber": {
11684
- "type": "integer",
11685
- "description": "Specifies the page number to retrieve. Used for traditional pagination."
11686
- },
11687
11838
  "pageAfter": {
11688
11839
  "type": "string",
11689
11840
  "description": "Opaque base64-encoded cursor returned by a previous list response, used for forward cursor-based pagination. Pass the value verbatim; do not decode or mutate it."
@@ -11699,17 +11850,17 @@
11699
11850
  {
11700
11851
  "type": "function",
11701
11852
  "function": {
11702
- "name": "create_meeting",
11703
- "description": "Create Meeting",
11853
+ "name": "create_state",
11854
+ "description": "Upsert State",
11704
11855
  "parameters": {
11705
- "title": "CreateMeetingRequestBody",
11856
+ "title": "CreateStateRequestBody",
11706
11857
  "type": "object",
11707
11858
  "required": [
11708
11859
  "data"
11709
11860
  ],
11710
11861
  "properties": {
11711
11862
  "data": {
11712
- "title": "CreateMeetingRequestBodyData",
11863
+ "title": "CreateStateRequestBodyData",
11713
11864
  "type": "object",
11714
11865
  "required": [
11715
11866
  "type",
@@ -11719,51 +11870,788 @@
11719
11870
  "type": {
11720
11871
  "type": "string",
11721
11872
  "enum": [
11722
- "meetings"
11873
+ "states"
11723
11874
  ]
11724
11875
  },
11725
11876
  "attributes": {
11726
- "title": "MeetingAttributesSchema",
11877
+ "title": "StateAttributesSchema",
11727
11878
  "type": "object",
11728
11879
  "properties": {
11729
- "title": {
11730
- "type": "string"
11880
+ "userId": {
11881
+ "type": "string",
11882
+ "description": "Owner of this state row. Always the authenticated user; never set by the client."
11731
11883
  },
11732
- "description": {
11733
- "type": "string"
11884
+ "resourceType": {
11885
+ "type": "string",
11886
+ "enum": [
11887
+ "emails",
11888
+ "candidates",
11889
+ "conversations",
11890
+ "jobs",
11891
+ "talents",
11892
+ "personas",
11893
+ "reports",
11894
+ "tasks"
11895
+ ],
11896
+ "description": "The kind of resource this state describes. Lives in the composite id as `{resourceType}:{resourceId}`."
11734
11897
  },
11735
- "scheduledAt": {
11898
+ "resourceId": {
11736
11899
  "type": "string",
11737
- "format": "date-time"
11900
+ "description": "Id of the resource this state describes (e.g. an emailId, candidateId)."
11738
11901
  },
11739
- "duration": {
11740
- "type": "integer"
11902
+ "isSeen": {
11903
+ "type": "boolean",
11904
+ "description": "True if the user has opened the resource at least once. Derived from the presence of `seenAt`; clients can write either `isSeen` or `seenAt` on upsert."
11741
11905
  },
11742
- "mediaRegion": {
11743
- "type": "string"
11906
+ "isStarred": {
11907
+ "type": "boolean",
11908
+ "description": "True if the user has starred/favourited the resource."
11744
11909
  },
11745
- "externalMeetingId": {
11746
- "type": "string"
11910
+ "isSpam": {
11911
+ "type": "boolean",
11912
+ "description": "True if the user marked this resource as spam. Distinct from the email service's `suppressed` status, which is SES-driven on outbound delivery; this is an inbound, per-user action."
11747
11913
  },
11748
- "chimeMeetingId": {
11749
- "type": "string"
11914
+ "seenAt": {
11915
+ "type": "string",
11916
+ "description": "ISO 8601 timestamp of the user's most recent open. Absent means never seen."
11750
11917
  },
11751
- "chimeMeetingData": {
11752
- "type": "object"
11918
+ "starredAt": {
11919
+ "type": "string",
11920
+ "description": "ISO 8601 timestamp of when the user starred the resource. Absent means not starred; used as the sort key for the `Starred` folder."
11753
11921
  },
11754
- "participants": {
11755
- "type": "array",
11756
- "items": {
11757
- "type": "object"
11758
- }
11922
+ "spamAt": {
11923
+ "type": "string",
11924
+ "description": "ISO 8601 timestamp of when the user marked the resource as spam. Absent means not spam; used as the sort key for the `Spam` folder."
11759
11925
  },
11760
- "status": {
11926
+ "resourceCreatedAt": {
11761
11927
  "type": "string",
11762
- "enum": [
11763
- "active",
11764
- "scheduled",
11765
- "ended",
11766
- "archived"
11928
+ "description": "Denormalised copy of the underlying resource's own `created` timestamp. Used as the sparse unread-index sort key so the unread feed surfaces oldest resources first, not oldest state rows."
11929
+ },
11930
+ "flags": {
11931
+ "type": "object",
11932
+ "additionalProperties": true,
11933
+ "description": "Open-ended per-resource flags (e.g. `{muted: true}` on conversations, `{pinned: true}` on candidates). First-class state goes on the top-level attributes; ad-hoc state lives here."
11934
+ },
11935
+ "timestamps": {
11936
+ "title": "ResourceTimestampsSchema",
11937
+ "type": "object",
11938
+ "properties": {
11939
+ "created": {
11940
+ "type": "string",
11941
+ "format": "date-time"
11942
+ },
11943
+ "modified": {
11944
+ "type": "string",
11945
+ "format": "date-time"
11946
+ }
11947
+ }
11948
+ }
11949
+ }
11950
+ }
11951
+ }
11952
+ }
11953
+ }
11954
+ }
11955
+ }
11956
+ },
11957
+ {
11958
+ "type": "function",
11959
+ "function": {
11960
+ "name": "states_options",
11961
+ "description": "States Options",
11962
+ "parameters": {
11963
+ "type": "object",
11964
+ "properties": {}
11965
+ }
11966
+ }
11967
+ },
11968
+ {
11969
+ "type": "function",
11970
+ "function": {
11971
+ "name": "show_state",
11972
+ "description": "Show State",
11973
+ "parameters": {
11974
+ "type": "object",
11975
+ "properties": {}
11976
+ }
11977
+ }
11978
+ },
11979
+ {
11980
+ "type": "function",
11981
+ "function": {
11982
+ "name": "update_state",
11983
+ "description": "Update State",
11984
+ "parameters": {
11985
+ "title": "UpdateStateRequestBody",
11986
+ "type": "object",
11987
+ "required": [
11988
+ "data"
11989
+ ],
11990
+ "properties": {
11991
+ "data": {
11992
+ "title": "UpdateStateRequestBodyData",
11993
+ "type": "object",
11994
+ "required": [
11995
+ "type",
11996
+ "id",
11997
+ "attributes"
11998
+ ],
11999
+ "properties": {
12000
+ "type": {
12001
+ "type": "string",
12002
+ "enum": [
12003
+ "states"
12004
+ ]
12005
+ },
12006
+ "id": {
12007
+ "type": "string"
12008
+ },
12009
+ "attributes": {
12010
+ "title": "StateAttributesSchema",
12011
+ "type": "object",
12012
+ "properties": {
12013
+ "userId": {
12014
+ "type": "string",
12015
+ "description": "Owner of this state row. Always the authenticated user; never set by the client."
12016
+ },
12017
+ "resourceType": {
12018
+ "type": "string",
12019
+ "enum": [
12020
+ "emails",
12021
+ "candidates",
12022
+ "conversations",
12023
+ "jobs",
12024
+ "talents",
12025
+ "personas",
12026
+ "reports",
12027
+ "tasks"
12028
+ ],
12029
+ "description": "The kind of resource this state describes. Lives in the composite id as `{resourceType}:{resourceId}`."
12030
+ },
12031
+ "resourceId": {
12032
+ "type": "string",
12033
+ "description": "Id of the resource this state describes (e.g. an emailId, candidateId)."
12034
+ },
12035
+ "isSeen": {
12036
+ "type": "boolean",
12037
+ "description": "True if the user has opened the resource at least once. Derived from the presence of `seenAt`; clients can write either `isSeen` or `seenAt` on upsert."
12038
+ },
12039
+ "isStarred": {
12040
+ "type": "boolean",
12041
+ "description": "True if the user has starred/favourited the resource."
12042
+ },
12043
+ "isSpam": {
12044
+ "type": "boolean",
12045
+ "description": "True if the user marked this resource as spam. Distinct from the email service's `suppressed` status, which is SES-driven on outbound delivery; this is an inbound, per-user action."
12046
+ },
12047
+ "seenAt": {
12048
+ "type": "string",
12049
+ "description": "ISO 8601 timestamp of the user's most recent open. Absent means never seen."
12050
+ },
12051
+ "starredAt": {
12052
+ "type": "string",
12053
+ "description": "ISO 8601 timestamp of when the user starred the resource. Absent means not starred; used as the sort key for the `Starred` folder."
12054
+ },
12055
+ "spamAt": {
12056
+ "type": "string",
12057
+ "description": "ISO 8601 timestamp of when the user marked the resource as spam. Absent means not spam; used as the sort key for the `Spam` folder."
12058
+ },
12059
+ "resourceCreatedAt": {
12060
+ "type": "string",
12061
+ "description": "Denormalised copy of the underlying resource's own `created` timestamp. Used as the sparse unread-index sort key so the unread feed surfaces oldest resources first, not oldest state rows."
12062
+ },
12063
+ "flags": {
12064
+ "type": "object",
12065
+ "additionalProperties": true,
12066
+ "description": "Open-ended per-resource flags (e.g. `{muted: true}` on conversations, `{pinned: true}` on candidates). First-class state goes on the top-level attributes; ad-hoc state lives here."
12067
+ },
12068
+ "timestamps": {
12069
+ "title": "ResourceTimestampsSchema",
12070
+ "type": "object",
12071
+ "properties": {
12072
+ "created": {
12073
+ "type": "string",
12074
+ "format": "date-time"
12075
+ },
12076
+ "modified": {
12077
+ "type": "string",
12078
+ "format": "date-time"
12079
+ }
12080
+ }
12081
+ }
12082
+ }
12083
+ }
12084
+ }
12085
+ }
12086
+ }
12087
+ }
12088
+ }
12089
+ },
12090
+ {
12091
+ "type": "function",
12092
+ "function": {
12093
+ "name": "delete_state",
12094
+ "description": "Delete State",
12095
+ "parameters": {
12096
+ "type": "object",
12097
+ "properties": {}
12098
+ }
12099
+ }
12100
+ },
12101
+ {
12102
+ "type": "function",
12103
+ "function": {
12104
+ "name": "state_options",
12105
+ "description": "State Options",
12106
+ "parameters": {
12107
+ "type": "object",
12108
+ "properties": {}
12109
+ }
12110
+ }
12111
+ },
12112
+ {
12113
+ "type": "function",
12114
+ "function": {
12115
+ "name": "list_aggregates",
12116
+ "description": "List Aggregates",
12117
+ "parameters": {
12118
+ "type": "object",
12119
+ "properties": {
12120
+ "filterResourceType": {
12121
+ "type": "string",
12122
+ "description": "Only return aggregates for this resource type (e.g. emails).",
12123
+ "enum": [
12124
+ "emails",
12125
+ "candidates",
12126
+ "conversations",
12127
+ "jobs",
12128
+ "talents",
12129
+ "personas",
12130
+ "reports",
12131
+ "tasks"
12132
+ ]
12133
+ },
12134
+ "filterDimension": {
12135
+ "type": "string",
12136
+ "description": "Only return aggregates for this dimension (e.g. byFolder, byStatus). Triggers the `meta.by{Dimension}` overlay in the response."
12137
+ },
12138
+ "filterCategory": {
12139
+ "type": "string",
12140
+ "description": "Only return aggregates for this category within the dimension (e.g. received, sent)."
12141
+ },
12142
+ "filterKind": {
12143
+ "type": "string",
12144
+ "description": "Only return aggregates for this projection kind.",
12145
+ "enum": [
12146
+ "total",
12147
+ "seen",
12148
+ "unseen"
12149
+ ]
12150
+ },
12151
+ "pageSize": {
12152
+ "type": "integer",
12153
+ "description": "Specifies the number of items to retrieve per page. The maximum value is 100."
12154
+ },
12155
+ "pageAfter": {
12156
+ "type": "string",
12157
+ "description": "Opaque base64-encoded cursor returned by a previous list response, used for forward cursor-based pagination. Pass the value verbatim; do not decode or mutate it."
12158
+ },
12159
+ "pageBefore": {
12160
+ "type": "string",
12161
+ "description": "Returns the data encoded in Base64 format, used for cursor-based pagination"
12162
+ }
12163
+ }
12164
+ }
12165
+ }
12166
+ },
12167
+ {
12168
+ "type": "function",
12169
+ "function": {
12170
+ "name": "aggregates_options",
12171
+ "description": "Aggregates Options",
12172
+ "parameters": {
12173
+ "type": "object",
12174
+ "properties": {}
12175
+ }
12176
+ }
12177
+ },
12178
+ {
12179
+ "type": "function",
12180
+ "function": {
12181
+ "name": "show_aggregate",
12182
+ "description": "Show Aggregate",
12183
+ "parameters": {
12184
+ "type": "object",
12185
+ "properties": {}
12186
+ }
12187
+ }
12188
+ },
12189
+ {
12190
+ "type": "function",
12191
+ "function": {
12192
+ "name": "update_aggregate",
12193
+ "description": "Update Aggregate (admin)",
12194
+ "parameters": {
12195
+ "title": "UpdateAggregateRequestBody",
12196
+ "type": "object",
12197
+ "required": [
12198
+ "data"
12199
+ ],
12200
+ "properties": {
12201
+ "data": {
12202
+ "title": "UpdateAggregateRequestBodyData",
12203
+ "type": "object",
12204
+ "required": [
12205
+ "type",
12206
+ "id",
12207
+ "attributes"
12208
+ ],
12209
+ "properties": {
12210
+ "type": {
12211
+ "type": "string",
12212
+ "enum": [
12213
+ "aggregates"
12214
+ ]
12215
+ },
12216
+ "id": {
12217
+ "type": "string"
12218
+ },
12219
+ "attributes": {
12220
+ "title": "AggregateAttributesSchema",
12221
+ "type": "object",
12222
+ "properties": {
12223
+ "resourceType": {
12224
+ "type": "string",
12225
+ "description": "The resource being counted (e.g. `emails`, `candidates`). Matches the `resourceType` enum used by the state service."
12226
+ },
12227
+ "dimension": {
12228
+ "type": "string",
12229
+ "description": "The categorisation axis (e.g. `byFolder` for emails, `byStatus` for candidates). Each owning service publishes its own dimensions."
12230
+ },
12231
+ "category": {
12232
+ "type": "string",
12233
+ "description": "A specific value within the dimension (e.g. `received`, `sent`, `draft` when dimension=byFolder). Lives in the composite id between dimension and kind."
12234
+ },
12235
+ "kind": {
12236
+ "type": "string",
12237
+ "enum": [
12238
+ "total",
12239
+ "unseen",
12240
+ "seen"
12241
+ ],
12242
+ "description": "Which projection of the category this row holds. `total` counts every resource; `seen` counts states with isSeen=true; `unseen` is total minus seen."
12243
+ },
12244
+ "value": {
12245
+ "type": "integer",
12246
+ "description": "Current counter value. Updated via atomic ADD on event consumption; admin PATCH allows manual correction for drift recovery."
12247
+ },
12248
+ "timestamps": {
12249
+ "title": "ResourceTimestampsSchema",
12250
+ "type": "object",
12251
+ "properties": {
12252
+ "created": {
12253
+ "type": "string",
12254
+ "format": "date-time"
12255
+ },
12256
+ "modified": {
12257
+ "type": "string",
12258
+ "format": "date-time"
12259
+ }
12260
+ }
12261
+ }
12262
+ }
12263
+ }
12264
+ }
12265
+ }
12266
+ }
12267
+ }
12268
+ }
12269
+ },
12270
+ {
12271
+ "type": "function",
12272
+ "function": {
12273
+ "name": "aggregate_options",
12274
+ "description": "Aggregate Options",
12275
+ "parameters": {
12276
+ "type": "object",
12277
+ "properties": {}
12278
+ }
12279
+ }
12280
+ },
12281
+ {
12282
+ "type": "function",
12283
+ "function": {
12284
+ "name": "list_labels",
12285
+ "description": "List Labels",
12286
+ "parameters": {
12287
+ "type": "object",
12288
+ "properties": {
12289
+ "filterStatus": {
12290
+ "type": "string",
12291
+ "description": "filterStatus parameter",
12292
+ "enum": [
12293
+ "active",
12294
+ "archived"
12295
+ ]
12296
+ },
12297
+ "pageSize": {
12298
+ "type": "integer",
12299
+ "description": "Specifies the number of items to retrieve per page. The maximum value is 100."
12300
+ }
12301
+ }
12302
+ }
12303
+ }
12304
+ },
12305
+ {
12306
+ "type": "function",
12307
+ "function": {
12308
+ "name": "create_label",
12309
+ "description": "Create Label",
12310
+ "parameters": {
12311
+ "title": "CreateLabelRequestBody",
12312
+ "type": "object",
12313
+ "required": [
12314
+ "data"
12315
+ ],
12316
+ "properties": {
12317
+ "data": {
12318
+ "title": "CreateLabelRequestBodyData",
12319
+ "type": "object",
12320
+ "required": [
12321
+ "type",
12322
+ "attributes"
12323
+ ],
12324
+ "properties": {
12325
+ "type": {
12326
+ "type": "string",
12327
+ "enum": [
12328
+ "labels"
12329
+ ]
12330
+ },
12331
+ "attributes": {
12332
+ "title": "LabelAttributesSchema",
12333
+ "type": "object",
12334
+ "properties": {
12335
+ "name": {
12336
+ "type": "string",
12337
+ "description": "Display name. Unique within a scope by convention but not enforced."
12338
+ },
12339
+ "color": {
12340
+ "type": "string",
12341
+ "description": "Hex or CSS-named color the UI uses to render the label pill."
12342
+ },
12343
+ "description": {
12344
+ "type": "string"
12345
+ },
12346
+ "scope": {
12347
+ "type": "string",
12348
+ "enum": [
12349
+ "tenant",
12350
+ "user"
12351
+ ],
12352
+ "description": "tenant = visible to every user in the tenant; user = visible only to the owner."
12353
+ },
12354
+ "ownerId": {
12355
+ "type": "string",
12356
+ "description": "Set server-side from the caller. Tenant-scope: tenantId. User-scope: the authenticated user's full userId."
12357
+ },
12358
+ "resourceTypes": {
12359
+ "type": "array",
12360
+ "items": {
12361
+ "type": "string"
12362
+ },
12363
+ "description": "Optional UI hint: if set, the frontend only exposes this label in the picker for these resource types (emails, candidates, ...). Not enforced server-side."
12364
+ },
12365
+ "status": {
12366
+ "type": "string",
12367
+ "enum": [
12368
+ "active",
12369
+ "archived"
12370
+ ],
12371
+ "description": "Archived labels stay readable (for historical assignments) but disappear from the default list."
12372
+ },
12373
+ "timestamps": {
12374
+ "title": "ResourceTimestampsSchema",
12375
+ "type": "object",
12376
+ "properties": {
12377
+ "created": {
12378
+ "type": "string",
12379
+ "format": "date-time"
12380
+ },
12381
+ "modified": {
12382
+ "type": "string",
12383
+ "format": "date-time"
12384
+ }
12385
+ }
12386
+ }
12387
+ }
12388
+ }
12389
+ }
12390
+ }
12391
+ }
12392
+ }
12393
+ }
12394
+ },
12395
+ {
12396
+ "type": "function",
12397
+ "function": {
12398
+ "name": "labels_options",
12399
+ "description": "Labels Options",
12400
+ "parameters": {
12401
+ "type": "object",
12402
+ "properties": {}
12403
+ }
12404
+ }
12405
+ },
12406
+ {
12407
+ "type": "function",
12408
+ "function": {
12409
+ "name": "show_label",
12410
+ "description": "Show Label",
12411
+ "parameters": {
12412
+ "type": "object",
12413
+ "properties": {}
12414
+ }
12415
+ }
12416
+ },
12417
+ {
12418
+ "type": "function",
12419
+ "function": {
12420
+ "name": "update_label",
12421
+ "description": "Update Label",
12422
+ "parameters": {
12423
+ "title": "UpdateLabelRequestBody",
12424
+ "type": "object",
12425
+ "required": [
12426
+ "data"
12427
+ ],
12428
+ "properties": {
12429
+ "data": {
12430
+ "title": "UpdateLabelRequestBodyData",
12431
+ "type": "object",
12432
+ "required": [
12433
+ "type",
12434
+ "id",
12435
+ "attributes"
12436
+ ],
12437
+ "properties": {
12438
+ "type": {
12439
+ "type": "string",
12440
+ "enum": [
12441
+ "labels"
12442
+ ]
12443
+ },
12444
+ "id": {
12445
+ "type": "string"
12446
+ },
12447
+ "attributes": {
12448
+ "title": "LabelAttributesSchema",
12449
+ "type": "object",
12450
+ "properties": {
12451
+ "name": {
12452
+ "type": "string",
12453
+ "description": "Display name. Unique within a scope by convention but not enforced."
12454
+ },
12455
+ "color": {
12456
+ "type": "string",
12457
+ "description": "Hex or CSS-named color the UI uses to render the label pill."
12458
+ },
12459
+ "description": {
12460
+ "type": "string"
12461
+ },
12462
+ "scope": {
12463
+ "type": "string",
12464
+ "enum": [
12465
+ "tenant",
12466
+ "user"
12467
+ ],
12468
+ "description": "tenant = visible to every user in the tenant; user = visible only to the owner."
12469
+ },
12470
+ "ownerId": {
12471
+ "type": "string",
12472
+ "description": "Set server-side from the caller. Tenant-scope: tenantId. User-scope: the authenticated user's full userId."
12473
+ },
12474
+ "resourceTypes": {
12475
+ "type": "array",
12476
+ "items": {
12477
+ "type": "string"
12478
+ },
12479
+ "description": "Optional UI hint: if set, the frontend only exposes this label in the picker for these resource types (emails, candidates, ...). Not enforced server-side."
12480
+ },
12481
+ "status": {
12482
+ "type": "string",
12483
+ "enum": [
12484
+ "active",
12485
+ "archived"
12486
+ ],
12487
+ "description": "Archived labels stay readable (for historical assignments) but disappear from the default list."
12488
+ },
12489
+ "timestamps": {
12490
+ "title": "ResourceTimestampsSchema",
12491
+ "type": "object",
12492
+ "properties": {
12493
+ "created": {
12494
+ "type": "string",
12495
+ "format": "date-time"
12496
+ },
12497
+ "modified": {
12498
+ "type": "string",
12499
+ "format": "date-time"
12500
+ }
12501
+ }
12502
+ }
12503
+ }
12504
+ }
12505
+ }
12506
+ }
12507
+ }
12508
+ }
12509
+ }
12510
+ },
12511
+ {
12512
+ "type": "function",
12513
+ "function": {
12514
+ "name": "delete_label",
12515
+ "description": "Delete Label",
12516
+ "parameters": {
12517
+ "type": "object",
12518
+ "properties": {}
12519
+ }
12520
+ }
12521
+ },
12522
+ {
12523
+ "type": "function",
12524
+ "function": {
12525
+ "name": "label_options",
12526
+ "description": "Label Options",
12527
+ "parameters": {
12528
+ "type": "object",
12529
+ "properties": {}
12530
+ }
12531
+ }
12532
+ },
12533
+ {
12534
+ "type": "function",
12535
+ "function": {
12536
+ "name": "list_meetings",
12537
+ "description": "List Meetings",
12538
+ "parameters": {
12539
+ "type": "object",
12540
+ "properties": {
12541
+ "filterStatus": {
12542
+ "type": "string",
12543
+ "description": "Returns meetings with the current status (active, scheduled, ended, archived). If not provided, the default value will be set to 'active'.",
12544
+ "enum": [
12545
+ "active",
12546
+ "scheduled",
12547
+ "ended",
12548
+ "archived"
12549
+ ]
12550
+ },
12551
+ "filterCreatedFrom": {
12552
+ "type": "string",
12553
+ "description": "Filters results to include only those created from the specified date and time. The value must be in ISO 8601 format."
12554
+ },
12555
+ "filterCreatedTo": {
12556
+ "type": "string",
12557
+ "description": "Filters results to include only those created up to the specified date and time. The value must be in ISO 8601 format."
12558
+ },
12559
+ "filterModifiedFrom": {
12560
+ "type": "string",
12561
+ "description": "Filters results to include only those modified from the specified date and time. The value must be in ISO 8601 format."
12562
+ },
12563
+ "filterModifiedTo": {
12564
+ "type": "string",
12565
+ "description": "Filters results to include only those modified up to the specified date and time. The value must be in ISO 8601 format."
12566
+ },
12567
+ "pageSize": {
12568
+ "type": "integer",
12569
+ "description": "Specifies the number of items to retrieve per page. The maximum value is 100."
12570
+ },
12571
+ "pageNumber": {
12572
+ "type": "integer",
12573
+ "description": "Specifies the page number to retrieve. Used for traditional pagination."
12574
+ },
12575
+ "pageAfter": {
12576
+ "type": "string",
12577
+ "description": "Opaque base64-encoded cursor returned by a previous list response, used for forward cursor-based pagination. Pass the value verbatim; do not decode or mutate it."
12578
+ },
12579
+ "pageBefore": {
12580
+ "type": "string",
12581
+ "description": "Returns the data encoded in Base64 format, used for cursor-based pagination"
12582
+ }
12583
+ }
12584
+ }
12585
+ }
12586
+ },
12587
+ {
12588
+ "type": "function",
12589
+ "function": {
12590
+ "name": "create_meeting",
12591
+ "description": "Create Meeting",
12592
+ "parameters": {
12593
+ "title": "CreateMeetingRequestBody",
12594
+ "type": "object",
12595
+ "required": [
12596
+ "data"
12597
+ ],
12598
+ "properties": {
12599
+ "data": {
12600
+ "title": "CreateMeetingRequestBodyData",
12601
+ "type": "object",
12602
+ "required": [
12603
+ "type",
12604
+ "attributes"
12605
+ ],
12606
+ "properties": {
12607
+ "type": {
12608
+ "type": "string",
12609
+ "enum": [
12610
+ "meetings"
12611
+ ]
12612
+ },
12613
+ "attributes": {
12614
+ "title": "MeetingAttributesSchema",
12615
+ "type": "object",
12616
+ "properties": {
12617
+ "title": {
12618
+ "type": "string"
12619
+ },
12620
+ "description": {
12621
+ "type": "string"
12622
+ },
12623
+ "scheduledAt": {
12624
+ "type": "string",
12625
+ "format": "date-time"
12626
+ },
12627
+ "duration": {
12628
+ "type": "integer"
12629
+ },
12630
+ "mediaRegion": {
12631
+ "type": "string"
12632
+ },
12633
+ "externalMeetingId": {
12634
+ "type": "string"
12635
+ },
12636
+ "chimeMeetingId": {
12637
+ "type": "string"
12638
+ },
12639
+ "chimeMeetingData": {
12640
+ "type": "object"
12641
+ },
12642
+ "participants": {
12643
+ "type": "array",
12644
+ "items": {
12645
+ "type": "object"
12646
+ }
12647
+ },
12648
+ "status": {
12649
+ "type": "string",
12650
+ "enum": [
12651
+ "active",
12652
+ "scheduled",
12653
+ "ended",
12654
+ "archived"
11767
12655
  ]
11768
12656
  },
11769
12657
  "timestamps": {
@@ -14532,12 +15420,62 @@
14532
15420
  "description": "The type of search to perform"
14533
15421
  },
14534
15422
  "query": {
14535
- "type": "object",
14536
- "description": "Search query parameters sent to OpenSearch. Supported keys for talent search: Semantic (full-text match) - \"search\" (multi-match across all text fields), \"name\", \"quickInsights\", \"skillsAndExpertise\", \"professionalExperience\", \"education\", \"experienceAndSeniority\", \"jobPositions\", \"keywords\", \"certifications\", \"industryExperience\", \"languagesSpoken\", \"locationPreferences\", \"personalityAndSoftSkills\", \"availability\", \"workPreferences\", \"workAuthorization\". Filters (exact match) - \"status\", \"source\", \"email\", \"gender\", \"shortCode\", \"isTalentPool\", \"relocationWillingness\", \"requiresSponsorship\", \"careerBreak\". IDs - \"jobId\", \"talentId\"."
15423
+ "description": "Search query parameters sent to OpenSearch. Shape varies by finder `type`. OpenAPI can't express the full type/query correlation as a strict discriminated union (the discriminator lives on the sibling `type` field, not on `query` itself), so this is encoded as `oneOf` over per-type query schemas. Clients should pick the shape matching the `type` they are posting.",
15424
+ "oneOf": [
15425
+ {
15426
+ "$ref": "#/components/schemas/FinderQueryTalentsSchema"
15427
+ },
15428
+ {
15429
+ "$ref": "#/components/schemas/FinderQueryCandidatesSchema"
15430
+ },
15431
+ {
15432
+ "$ref": "#/components/schemas/FinderQueryJobsSchema"
15433
+ },
15434
+ {
15435
+ "$ref": "#/components/schemas/FinderQueryEmailsSchema"
15436
+ }
15437
+ ]
14537
15438
  },
14538
15439
  "results": {
15440
+ "title": "FinderResultsSchema",
14539
15441
  "type": "object",
14540
- "description": "The search results returned from OpenSearch (auto-populated)"
15442
+ "description": "OpenSearch-shaped results attached to the finder record after the search runs. Hits array items carry whatever subset of the index schema was projected.",
15443
+ "properties": {
15444
+ "total": {
15445
+ "type": "integer",
15446
+ "description": "Count of matching documents before pagination."
15447
+ },
15448
+ "hits": {
15449
+ "type": "array",
15450
+ "items": {
15451
+ "title": "FinderResultHitSchema",
15452
+ "type": "object",
15453
+ "description": "Single hit from the OpenSearch query. The `id` equals the underlying resource id (emailId, talentId, candidateId, jobId, ...) so the frontend can navigate directly to that resource. Additional fields vary by finder `type`.",
15454
+ "properties": {
15455
+ "id": {
15456
+ "type": "string",
15457
+ "description": "The underlying resource id (emailId / talentId / candidateId / jobId)."
15458
+ },
15459
+ "tenantId": {
15460
+ "type": "string"
15461
+ },
15462
+ "status": {
15463
+ "type": "string"
15464
+ },
15465
+ "source": {
15466
+ "type": "string"
15467
+ },
15468
+ "created": {
15469
+ "type": "string"
15470
+ },
15471
+ "shortCode": {
15472
+ "type": "string"
15473
+ }
15474
+ },
15475
+ "additionalProperties": true
15476
+ }
15477
+ }
15478
+ }
14541
15479
  },
14542
15480
  "status": {
14543
15481
  "type": "string",
@@ -14759,12 +15697,62 @@
14759
15697
  "description": "The type of search to perform"
14760
15698
  },
14761
15699
  "query": {
14762
- "type": "object",
14763
- "description": "Search query parameters sent to OpenSearch. Supported keys for talent search: Semantic (full-text match) - \"search\" (multi-match across all text fields), \"name\", \"quickInsights\", \"skillsAndExpertise\", \"professionalExperience\", \"education\", \"experienceAndSeniority\", \"jobPositions\", \"keywords\", \"certifications\", \"industryExperience\", \"languagesSpoken\", \"locationPreferences\", \"personalityAndSoftSkills\", \"availability\", \"workPreferences\", \"workAuthorization\". Filters (exact match) - \"status\", \"source\", \"email\", \"gender\", \"shortCode\", \"isTalentPool\", \"relocationWillingness\", \"requiresSponsorship\", \"careerBreak\". IDs - \"jobId\", \"talentId\"."
15700
+ "description": "Search query parameters sent to OpenSearch. Shape varies by finder `type`. OpenAPI can't express the full type/query correlation as a strict discriminated union (the discriminator lives on the sibling `type` field, not on `query` itself), so this is encoded as `oneOf` over per-type query schemas. Clients should pick the shape matching the `type` they are posting.",
15701
+ "oneOf": [
15702
+ {
15703
+ "$ref": "#/components/schemas/FinderQueryTalentsSchema"
15704
+ },
15705
+ {
15706
+ "$ref": "#/components/schemas/FinderQueryCandidatesSchema"
15707
+ },
15708
+ {
15709
+ "$ref": "#/components/schemas/FinderQueryJobsSchema"
15710
+ },
15711
+ {
15712
+ "$ref": "#/components/schemas/FinderQueryEmailsSchema"
15713
+ }
15714
+ ]
14764
15715
  },
14765
15716
  "results": {
15717
+ "title": "FinderResultsSchema",
14766
15718
  "type": "object",
14767
- "description": "The search results returned from OpenSearch (auto-populated)"
15719
+ "description": "OpenSearch-shaped results attached to the finder record after the search runs. Hits array items carry whatever subset of the index schema was projected.",
15720
+ "properties": {
15721
+ "total": {
15722
+ "type": "integer",
15723
+ "description": "Count of matching documents before pagination."
15724
+ },
15725
+ "hits": {
15726
+ "type": "array",
15727
+ "items": {
15728
+ "title": "FinderResultHitSchema",
15729
+ "type": "object",
15730
+ "description": "Single hit from the OpenSearch query. The `id` equals the underlying resource id (emailId, talentId, candidateId, jobId, ...) so the frontend can navigate directly to that resource. Additional fields vary by finder `type`.",
15731
+ "properties": {
15732
+ "id": {
15733
+ "type": "string",
15734
+ "description": "The underlying resource id (emailId / talentId / candidateId / jobId)."
15735
+ },
15736
+ "tenantId": {
15737
+ "type": "string"
15738
+ },
15739
+ "status": {
15740
+ "type": "string"
15741
+ },
15742
+ "source": {
15743
+ "type": "string"
15744
+ },
15745
+ "created": {
15746
+ "type": "string"
15747
+ },
15748
+ "shortCode": {
15749
+ "type": "string"
15750
+ }
15751
+ },
15752
+ "additionalProperties": true
15753
+ }
15754
+ }
15755
+ }
14768
15756
  },
14769
15757
  "status": {
14770
15758
  "type": "string",