@smartytalent/openai-tools 0.9.35 → 0.9.37

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 +55 -30
  2. package/package.json +1 -1
package/dist/tools.json CHANGED
@@ -166,20 +166,24 @@
166
166
  "type": "object",
167
167
  "properties": {
168
168
  "ad": {
169
- "type": "object"
169
+ "type": "object",
170
+ "description": "DEPRECATED (2026-09-24, S.K., PLAN_TENANT_SETTINGS_CLEANUP): ignored by the backend and stripped on write. Ads and their images are built for every recruitment process; `enabled` never gated anything, `generateImages` is always on (the env kill switch AD_IMAGE_GENERATION remains), `platforms` were never read (the platform lists are fixed in code). Removed in a later, breaking release together with settings.feedback; declared until then because the generated model whitelists keys."
170
171
  },
171
172
  "brand": {
172
173
  "type": "object",
173
174
  "description": "Brand rules the ad and careers generators read. Split by who can\nact on what: exact colours are applied by CODE (an image model\nonly ever approximates a hex), while the look-and-feel strings\nare fed to the image prompt. Keys: primaryColor / secondaryColor\n(^#[0-9a-fA-F]{6}$), photography, avoid, tone. Freeform for now;\na dedicated brand service is the endgame once logo variants,\ntypefaces and versioning arrive."
174
175
  },
175
176
  "conversation": {
176
- "type": "object"
177
+ "type": "object",
178
+ "description": "DEPRECATED (2026-09-24, S.K., PLAN_TENANT_SETTINGS_CLEANUP): ignored by the backend and stripped on write. The AI interview is part of the recruitment process (settings.automation on the job); `jobInterview.enabled` never had a reader. Removed in a later, breaking release; declared until then because the generated model whitelists keys."
177
179
  },
178
180
  "report": {
179
- "type": "object"
181
+ "type": "object",
182
+ "description": "DEPRECATED (2026-09-24, S.K., PLAN_TENANT_SETTINGS_CLEANUP): ignored by the backend and stripped on write. Reports run for EVERY active tenant (daily, weekly, monthly) and are downloaded in the report app (showReport meta.pdf); e-mail delivery is gone (a per-user preference is a later phase), so `emails` and `period` gate nothing. Removed in a later, breaking release; declared until then because the generated model whitelists keys."
180
183
  },
181
184
  "email": {
182
- "type": "object"
185
+ "type": "object",
186
+ "description": "DEPRECATED (2026-09-24, S.K., PLAN_TENANT_SETTINGS_CLEANUP): ignored by the backend and stripped on write. `domains` (trusted e-mail domains) never had a reader - inbound trust comes from the user registry and SPF/DKIM alignment. Removed in a later, breaking release; declared until then because the generated model whitelists keys."
183
187
  },
184
188
  "operation": {
185
189
  "type": "object",
@@ -188,7 +192,7 @@
188
192
  "feedback": {
189
193
  "title": "TenantAttributesSettingsFeedbackSchema",
190
194
  "type": "object",
191
- "description": "Organisation-wide switch for outbound candidate feedback. Absent = enabled. enabled=false makes feedback:resolve return enabled=false with reason disabled:tenant BEFORE any policy lookup; default and per-job feedback rows stay stored and come back to life when re-enabled. Explicitly validated: enabled must be a JSON boolean (a string is a 400). NOTE: the generated model whitelists keys, so this property MUST be declared for the SDK to carry it. Since the automation switches (2026-09-24) this is the legacy kill switch; the three-state default is settings.automation.feedback.",
195
+ "description": "DEPRECATED (2026-09-24, S.K.: settings.automation.feedback is the ONE control of feedback; this field will be removed in a later, breaking release). Organisation-wide legacy switch for outbound candidate feedback: absent = enabled; enabled=false makes feedback:resolve return enabled=false with reason disabled:tenant ONLY while settings.automation.feedback is absent on both the job and the tenant - once the new key is set at either level this field is ignored; default and per-job feedback rows stay stored. Explicitly validated: enabled must be a JSON boolean (a string is a 400). NOTE: the generated model whitelists keys, so this property MUST stay declared until the removal release.",
192
196
  "properties": {
193
197
  "enabled": {
194
198
  "type": "boolean"
@@ -732,20 +736,24 @@
732
736
  "type": "object",
733
737
  "properties": {
734
738
  "ad": {
735
- "type": "object"
739
+ "type": "object",
740
+ "description": "DEPRECATED (2026-09-24, S.K., PLAN_TENANT_SETTINGS_CLEANUP): ignored by the backend and stripped on write. Ads and their images are built for every recruitment process; `enabled` never gated anything, `generateImages` is always on (the env kill switch AD_IMAGE_GENERATION remains), `platforms` were never read (the platform lists are fixed in code). Removed in a later, breaking release together with settings.feedback; declared until then because the generated model whitelists keys."
736
741
  },
737
742
  "brand": {
738
743
  "type": "object",
739
744
  "description": "Brand rules the ad and careers generators read. Split by who can\nact on what: exact colours are applied by CODE (an image model\nonly ever approximates a hex), while the look-and-feel strings\nare fed to the image prompt. Keys: primaryColor / secondaryColor\n(^#[0-9a-fA-F]{6}$), photography, avoid, tone. Freeform for now;\na dedicated brand service is the endgame once logo variants,\ntypefaces and versioning arrive."
740
745
  },
741
746
  "conversation": {
742
- "type": "object"
747
+ "type": "object",
748
+ "description": "DEPRECATED (2026-09-24, S.K., PLAN_TENANT_SETTINGS_CLEANUP): ignored by the backend and stripped on write. The AI interview is part of the recruitment process (settings.automation on the job); `jobInterview.enabled` never had a reader. Removed in a later, breaking release; declared until then because the generated model whitelists keys."
743
749
  },
744
750
  "report": {
745
- "type": "object"
751
+ "type": "object",
752
+ "description": "DEPRECATED (2026-09-24, S.K., PLAN_TENANT_SETTINGS_CLEANUP): ignored by the backend and stripped on write. Reports run for EVERY active tenant (daily, weekly, monthly) and are downloaded in the report app (showReport meta.pdf); e-mail delivery is gone (a per-user preference is a later phase), so `emails` and `period` gate nothing. Removed in a later, breaking release; declared until then because the generated model whitelists keys."
746
753
  },
747
754
  "email": {
748
- "type": "object"
755
+ "type": "object",
756
+ "description": "DEPRECATED (2026-09-24, S.K., PLAN_TENANT_SETTINGS_CLEANUP): ignored by the backend and stripped on write. `domains` (trusted e-mail domains) never had a reader - inbound trust comes from the user registry and SPF/DKIM alignment. Removed in a later, breaking release; declared until then because the generated model whitelists keys."
749
757
  },
750
758
  "operation": {
751
759
  "type": "object",
@@ -754,7 +762,7 @@
754
762
  "feedback": {
755
763
  "title": "TenantAttributesSettingsFeedbackSchema",
756
764
  "type": "object",
757
- "description": "Organisation-wide switch for outbound candidate feedback. Absent = enabled. enabled=false makes feedback:resolve return enabled=false with reason disabled:tenant BEFORE any policy lookup; default and per-job feedback rows stay stored and come back to life when re-enabled. Explicitly validated: enabled must be a JSON boolean (a string is a 400). NOTE: the generated model whitelists keys, so this property MUST be declared for the SDK to carry it. Since the automation switches (2026-09-24) this is the legacy kill switch; the three-state default is settings.automation.feedback.",
765
+ "description": "DEPRECATED (2026-09-24, S.K.: settings.automation.feedback is the ONE control of feedback; this field will be removed in a later, breaking release). Organisation-wide legacy switch for outbound candidate feedback: absent = enabled; enabled=false makes feedback:resolve return enabled=false with reason disabled:tenant ONLY while settings.automation.feedback is absent on both the job and the tenant - once the new key is set at either level this field is ignored; default and per-job feedback rows stay stored. Explicitly validated: enabled must be a JSON boolean (a string is a 400). NOTE: the generated model whitelists keys, so this property MUST stay declared until the removal release.",
758
766
  "properties": {
759
767
  "enabled": {
760
768
  "type": "boolean"
@@ -5231,7 +5239,7 @@
5231
5239
  "feedback": {
5232
5240
  "title": "JobAttributesSettingsFeedbackSchema",
5233
5241
  "type": "object",
5234
- "description": "Per-job switch for outbound candidate feedback. Absent = enabled. enabled=false makes feedback:resolve return enabled=false with reason disabled:job for candidates of this job, before the job override / tenant default lookup. The tenant-level switch (tenant.settings.feedback.enabled) wins over this one. Explicitly validated: enabled must be a JSON boolean. Since the automation switches (2026-09-24) this is the legacy kill switch; the three-state control is settings.automation.feedback.",
5242
+ "description": "DEPRECATED (2026-09-24, S.K.: settings.automation.feedback is the ONE control of feedback; this field will be removed in a later, breaking release). Per-job legacy switch for outbound candidate feedback: absent = enabled; enabled=false makes feedback:resolve return enabled=false with reason disabled:job ONLY while settings.automation.feedback is absent on both the job and the tenant - once the new key is set at either level this field is ignored. Between the two legacy switches the tenant's wins. Explicitly validated: enabled must be a JSON boolean.",
5235
5243
  "properties": {
5236
5244
  "enabled": {
5237
5245
  "type": "boolean"
@@ -5241,7 +5249,7 @@
5241
5249
  "automation": {
5242
5250
  "title": "JobAttributesSettingsAutomationSchema",
5243
5251
  "type": "object",
5244
- "description": "Per-job automation switches (PLAN_PROCESS_AUTOMATION, 2026-09-24): who runs each stage of THIS recruitment process. Values per key: auto = Boe runs the stage, manual = a human runs it (Boe leaves a task on the RecOps board and waits), off = the stage is not part of this process (the candidate moves on). Every key is optional: absent = the organisation's default (tenant.settings.automation), else the platform default (sourcing manual, everything else auto); the job overrides the tenant in BOTH directions. Read by the automation:resolve action at the head of the candidate-facing workflows and by feedback:resolve (feedback). PATCH merges this block PER KEY (send one switch at a time; a key sent as null clears the override). Writable only by sysowner / owner / admin / recops - any other role gets 403 on a payload that carries it, on POST and PATCH. Validated in code: interview and offer accept auto|manual, surveys accepts auto|off, the rest auto|manual|off; an unknown key or value is a 400 naming it. The legacy settings.feedback.enabled=false (job or tenant) still disables feedback with kill-switch precedence. The job build (Create Job From Brief) never generates this block: it keeps the row's values and seeds `off` for the stages the manager declared out of the process in the intake (brief.intakeContext.process).",
5252
+ "description": "Per-job automation switches (PLAN_PROCESS_AUTOMATION, 2026-09-24): who runs each stage of THIS recruitment process. Values per key: auto = Boe runs the stage, manual = a human runs it (Boe leaves a task on the RecOps board and waits), off = the stage is not part of this process (the candidate moves on). Every key is optional: absent = the organisation's default (tenant.settings.automation), else the platform default (sourcing manual, everything else auto); the job overrides the tenant in BOTH directions. Read by the automation:resolve action at the head of the candidate-facing workflows and by feedback:resolve (feedback). PATCH merges this block PER KEY (send one switch at a time; a key sent as null clears the override). Writable only by sysowner / owner / admin / recops - any other role gets 403 on a payload that carries it, on POST and PATCH. Validated in code: interview and offer accept auto|manual, surveys accepts auto|off, the rest auto|manual|off; an unknown key or value is a 400 naming it. `feedback` here is the ONE control of feedback e-mails (S.K. 2026-09-24): the deprecated settings.feedback.enabled counts only while this key is absent on both the job and the tenant. The job build (Create Job From Brief) never generates this block: it keeps the row's values and seeds `off` for the stages the manager declared out of the process in the intake (brief.intakeContext.process).",
5245
5253
  "properties": {
5246
5254
  "sourcing": {
5247
5255
  "type": "string",
@@ -6125,7 +6133,7 @@
6125
6133
  "feedback": {
6126
6134
  "title": "JobAttributesSettingsFeedbackSchema",
6127
6135
  "type": "object",
6128
- "description": "Per-job switch for outbound candidate feedback. Absent = enabled. enabled=false makes feedback:resolve return enabled=false with reason disabled:job for candidates of this job, before the job override / tenant default lookup. The tenant-level switch (tenant.settings.feedback.enabled) wins over this one. Explicitly validated: enabled must be a JSON boolean. Since the automation switches (2026-09-24) this is the legacy kill switch; the three-state control is settings.automation.feedback.",
6136
+ "description": "DEPRECATED (2026-09-24, S.K.: settings.automation.feedback is the ONE control of feedback; this field will be removed in a later, breaking release). Per-job legacy switch for outbound candidate feedback: absent = enabled; enabled=false makes feedback:resolve return enabled=false with reason disabled:job ONLY while settings.automation.feedback is absent on both the job and the tenant - once the new key is set at either level this field is ignored. Between the two legacy switches the tenant's wins. Explicitly validated: enabled must be a JSON boolean.",
6129
6137
  "properties": {
6130
6138
  "enabled": {
6131
6139
  "type": "boolean"
@@ -6135,7 +6143,7 @@
6135
6143
  "automation": {
6136
6144
  "title": "JobAttributesSettingsAutomationSchema",
6137
6145
  "type": "object",
6138
- "description": "Per-job automation switches (PLAN_PROCESS_AUTOMATION, 2026-09-24): who runs each stage of THIS recruitment process. Values per key: auto = Boe runs the stage, manual = a human runs it (Boe leaves a task on the RecOps board and waits), off = the stage is not part of this process (the candidate moves on). Every key is optional: absent = the organisation's default (tenant.settings.automation), else the platform default (sourcing manual, everything else auto); the job overrides the tenant in BOTH directions. Read by the automation:resolve action at the head of the candidate-facing workflows and by feedback:resolve (feedback). PATCH merges this block PER KEY (send one switch at a time; a key sent as null clears the override). Writable only by sysowner / owner / admin / recops - any other role gets 403 on a payload that carries it, on POST and PATCH. Validated in code: interview and offer accept auto|manual, surveys accepts auto|off, the rest auto|manual|off; an unknown key or value is a 400 naming it. The legacy settings.feedback.enabled=false (job or tenant) still disables feedback with kill-switch precedence. The job build (Create Job From Brief) never generates this block: it keeps the row's values and seeds `off` for the stages the manager declared out of the process in the intake (brief.intakeContext.process).",
6146
+ "description": "Per-job automation switches (PLAN_PROCESS_AUTOMATION, 2026-09-24): who runs each stage of THIS recruitment process. Values per key: auto = Boe runs the stage, manual = a human runs it (Boe leaves a task on the RecOps board and waits), off = the stage is not part of this process (the candidate moves on). Every key is optional: absent = the organisation's default (tenant.settings.automation), else the platform default (sourcing manual, everything else auto); the job overrides the tenant in BOTH directions. Read by the automation:resolve action at the head of the candidate-facing workflows and by feedback:resolve (feedback). PATCH merges this block PER KEY (send one switch at a time; a key sent as null clears the override). Writable only by sysowner / owner / admin / recops - any other role gets 403 on a payload that carries it, on POST and PATCH. Validated in code: interview and offer accept auto|manual, surveys accepts auto|off, the rest auto|manual|off; an unknown key or value is a 400 naming it. `feedback` here is the ONE control of feedback e-mails (S.K. 2026-09-24): the deprecated settings.feedback.enabled counts only while this key is absent on both the job and the tenant. The job build (Create Job From Brief) never generates this block: it keeps the row's values and seeds `off` for the stages the manager declared out of the process in the intake (brief.intakeContext.process).",
6139
6147
  "properties": {
6140
6148
  "sourcing": {
6141
6149
  "type": "string",
@@ -21856,12 +21864,23 @@
21856
21864
  "properties": {
21857
21865
  "filterStatus": {
21858
21866
  "type": "string",
21859
- "description": "Returns reports with the current status (active, archived). If not provided, the default value will be set to 'active'.",
21867
+ "description": "Returns reports with the given status. Pass it explicitly - the backend applies NO default, so without it pending and failed rows come back too. The report app's history query is `filterStatus=active&sort=-created&pageNumber=1` (newest first): the sort is honoured next to filterStatus ONLY with page-number pagination (`pageNumber`); the cursor pagination (`pageAfter` / `pageBefore`, the default without pageNumber) keeps the index order and ignores `sort` (measured on dev03 2026-09-24). One filter at a time: the backend serves a single index per request.",
21860
21868
  "enum": [
21861
21869
  "active",
21862
- "archived"
21870
+ "inactive",
21871
+ "pending",
21872
+ "archived",
21873
+ "failed"
21863
21874
  ]
21864
21875
  },
21876
+ "filterResourceId": {
21877
+ "type": "string",
21878
+ "description": "Returns the reports of ONE resource (a job id, or the tenant id for the scheduled tenant reports). Served from the ResourceIndex in index order: `sort` is IGNORED next to it, and it cannot be combined with filterStatus or the created/modified window (one filter at a time). For the tenant history use `filterStatus=active&sort=-created` instead and read `resourceType` / `period` off the rows."
21879
+ },
21880
+ "sort": {
21881
+ "type": "string",
21882
+ "description": "`created` / `-created` / `modified` / `-modified`. Honoured alone (any pagination) and next to filterStatus with page-number pagination only (`pageNumber`; the cursor pagination ignores it there); ignored next to filterResourceId (index order); the date windows keep their own index order."
21883
+ },
21865
21884
  "filterCreatedFrom": {
21866
21885
  "type": "string",
21867
21886
  "description": "Filters results to include only those created from the specified date and time. The value must be in ISO 8601 format."
@@ -21934,7 +21953,7 @@
21934
21953
  "properties": {
21935
21954
  "resourceId": {
21936
21955
  "type": "string",
21937
- "description": "Identifier of the resource this report is associated with (job ID or tenant ID)"
21956
+ "description": "Identifier of the resource this report is associated with: the tenant id for the scheduled tenant reports (resourceType tenants), a job id for a job report. On the wire since 2026-09-24 (it was stored but not returned)."
21938
21957
  },
21939
21958
  "resourceType": {
21940
21959
  "type": "string",
@@ -21956,12 +21975,14 @@
21956
21975
  ]
21957
21976
  },
21958
21977
  "reportContent": {
21959
- "type": "string",
21960
- "description": "Merged analytics and AI analysis content"
21978
+ "type": "object",
21979
+ "additionalProperties": true,
21980
+ "description": "Merged analytics and AI analysis content, an OBJECT (declared as a string until 2026-09-24): keyed by locale for a non-English tenant (`en-US` + the tenant language, each holding the sections kpis / alerts / notes / insights / dailyData / topJobs / ...), the sections directly at the top level for an en-US tenant; `{}` while the row is pending."
21961
21981
  },
21962
21982
  "settings": {
21963
- "type": "string",
21964
- "description": "Report configuration including email recipients and period preferences"
21983
+ "type": "object",
21984
+ "additionalProperties": true,
21985
+ "description": "The analysis window the broker stamps at creation, an OBJECT (declared as a string until 2026-09-24): startDate, endDate (naive calendar stamps `YYYY-MM-DD HH:MM:SS`), reportPeriod, displayName and the period's own fields (day / month / year, isoWeek / isoYear / dateRange, monthName / daysCount). Since 2026-09-24 (PLAN_TENANT_SETTINGS_CLEANUP) no `emails`: reports are downloaded in the report app, not mailed."
21965
21986
  },
21966
21987
  "shortCode": {
21967
21988
  "type": "string",
@@ -21983,8 +22004,9 @@
21983
22004
  ]
21984
22005
  },
21985
22006
  "ttl": {
21986
- "type": "string",
21987
- "description": "Time-to-live value for automatic report expiration"
22007
+ "type": "integer",
22008
+ "format": "int64",
22009
+ "description": "Epoch seconds at which DynamoDB expires the row (an INTEGER, declared as a string until 2026-09-24): created + 400 days on every scheduled report since 2026-09-24; null on rows born before that."
21988
22010
  },
21989
22011
  "timestamps": {
21990
22012
  "title": "ResourceTimestampsSchema",
@@ -22095,7 +22117,7 @@
22095
22117
  "properties": {
22096
22118
  "resourceId": {
22097
22119
  "type": "string",
22098
- "description": "Identifier of the resource this report is associated with (job ID or tenant ID)"
22120
+ "description": "Identifier of the resource this report is associated with: the tenant id for the scheduled tenant reports (resourceType tenants), a job id for a job report. On the wire since 2026-09-24 (it was stored but not returned)."
22099
22121
  },
22100
22122
  "resourceType": {
22101
22123
  "type": "string",
@@ -22117,12 +22139,14 @@
22117
22139
  ]
22118
22140
  },
22119
22141
  "reportContent": {
22120
- "type": "string",
22121
- "description": "Merged analytics and AI analysis content"
22142
+ "type": "object",
22143
+ "additionalProperties": true,
22144
+ "description": "Merged analytics and AI analysis content, an OBJECT (declared as a string until 2026-09-24): keyed by locale for a non-English tenant (`en-US` + the tenant language, each holding the sections kpis / alerts / notes / insights / dailyData / topJobs / ...), the sections directly at the top level for an en-US tenant; `{}` while the row is pending."
22122
22145
  },
22123
22146
  "settings": {
22124
- "type": "string",
22125
- "description": "Report configuration including email recipients and period preferences"
22147
+ "type": "object",
22148
+ "additionalProperties": true,
22149
+ "description": "The analysis window the broker stamps at creation, an OBJECT (declared as a string until 2026-09-24): startDate, endDate (naive calendar stamps `YYYY-MM-DD HH:MM:SS`), reportPeriod, displayName and the period's own fields (day / month / year, isoWeek / isoYear / dateRange, monthName / daysCount). Since 2026-09-24 (PLAN_TENANT_SETTINGS_CLEANUP) no `emails`: reports are downloaded in the report app, not mailed."
22126
22150
  },
22127
22151
  "shortCode": {
22128
22152
  "type": "string",
@@ -22144,8 +22168,9 @@
22144
22168
  ]
22145
22169
  },
22146
22170
  "ttl": {
22147
- "type": "string",
22148
- "description": "Time-to-live value for automatic report expiration"
22171
+ "type": "integer",
22172
+ "format": "int64",
22173
+ "description": "Epoch seconds at which DynamoDB expires the row (an INTEGER, declared as a string until 2026-09-24): created + 400 days on every scheduled report since 2026-09-24; null on rows born before that."
22149
22174
  },
22150
22175
  "timestamps": {
22151
22176
  "title": "ResourceTimestampsSchema",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@smartytalent/openai-tools",
3
- "version": "0.9.35",
3
+ "version": "0.9.37",
4
4
  "description": "OpenAI function/tool definitions for SmartyTalent API",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",