node-autotask 0.39.0 → 0.39.1

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 (39) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/MCP_TOOL_MANIFEST.md +4 -4
  3. package/N8N_MCP_MANIFEST.json +2 -2
  4. package/N8N_MCP_MANIFEST.md +3 -3
  5. package/capabilities.json +144 -144
  6. package/dist/capabilities.cjs +2 -2
  7. package/dist/capabilities.js +1 -1
  8. package/dist/{chunk-KSNK6UEW.cjs → chunk-73QNAEAF.cjs} +143 -143
  9. package/dist/{chunk-OKFTECIE.js → chunk-CQXB7KAO.js} +2 -2
  10. package/dist/{chunk-2KQS3RHQ.js → chunk-GDSCYY2G.js} +143 -143
  11. package/dist/{chunk-6ROB5KXB.cjs → chunk-GIVYTQ6R.cjs} +285 -285
  12. package/dist/{chunk-45PLS73K.cjs → chunk-LB34VFQY.cjs} +132 -99
  13. package/dist/{chunk-LD5UPSDB.js → chunk-LDTJNLX7.js} +2 -2
  14. package/dist/{chunk-FV5PJLIZ.js → chunk-LN3HQQBR.js} +48 -15
  15. package/dist/{chunk-RAZEXOLC.cjs → chunk-VR6RYXTD.cjs} +143 -143
  16. package/dist/{index-Bmoiwhx2.d.ts → index-C-Oqef4y.d.cts} +7169 -51
  17. package/dist/{index-BVOOHPvr.d.cts → index-C-Oqef4y.d.ts} +7169 -51
  18. package/dist/index.cjs +22 -22
  19. package/dist/index.d.cts +2 -4
  20. package/dist/index.d.ts +2 -4
  21. package/dist/index.js +4 -4
  22. package/dist/operations/index.cjs +179 -177
  23. package/dist/operations/index.d.cts +3 -221
  24. package/dist/operations/index.d.ts +3 -221
  25. package/dist/operations/index.js +4 -2
  26. package/dist/pool.cjs +9 -9
  27. package/dist/pool.d.cts +1 -2
  28. package/dist/pool.d.ts +1 -2
  29. package/dist/pool.js +4 -4
  30. package/dist/resources/index.cjs +4 -4
  31. package/dist/resources/index.d.cts +1 -2
  32. package/dist/resources/index.d.ts +1 -2
  33. package/dist/resources/index.js +3 -3
  34. package/dist/types/index.d.cts +1 -1
  35. package/dist/types/index.d.ts +1 -1
  36. package/docs/API.md +37 -7
  37. package/package.json +1 -1
  38. package/dist/index-BQVStxwi.d.cts +0 -6893
  39. package/dist/index-BQVStxwi.d.ts +0 -6893
@@ -2,7 +2,7 @@
2
2
  var CAPABILITY_GROUPS = {
3
3
  "B": {
4
4
  "planHash": "9bb87de7bcbda60f6c44955dba52b8e61e9c5547750ea8acacfcb6f261d7734f",
5
- "builtAt": "2026-10-29T10:49:12.431Z",
5
+ "builtAt": "2026-10-29T20:28:49.329Z",
6
6
  "records": [
7
7
  {
8
8
  "id": "appointments.count",
@@ -617,7 +617,7 @@ var CAPABILITY_GROUPS = {
617
617
  "params": {
618
618
  "type": "object",
619
619
  "required": false,
620
- "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null/0 or unresolved value; a names summary appears only when the 20 uncached name-read cap left ids unlabelled; false = raw ids), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
620
+ "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null value, a 0 id or an unresolved value (a picklist 0 is labelled when the picklist defines it); a names summary appears only when something was left unlabelled (the 20 uncached name-read cap, an unresolved picklist value, or a failed field-catalog read: names.catalogError); false = raw ids, ~30% smaller on a full tickets row), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
621
621
  "properties": [
622
622
  {
623
623
  "name": "filter",
@@ -1469,7 +1469,7 @@ var CAPABILITY_GROUPS = {
1469
1469
  "params": {
1470
1470
  "type": "object",
1471
1471
  "required": false,
1472
- "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null/0 or unresolved value; a names summary appears only when the 20 uncached name-read cap left ids unlabelled; false = raw ids), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
1472
+ "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null value, a 0 id or an unresolved value (a picklist 0 is labelled when the picklist defines it); a names summary appears only when something was left unlabelled (the 20 uncached name-read cap, an unresolved picklist value, or a failed field-catalog read: names.catalogError); false = raw ids, ~30% smaller on a full tickets row), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
1473
1473
  "properties": [
1474
1474
  {
1475
1475
  "name": "filter",
@@ -2108,7 +2108,7 @@ var CAPABILITY_GROUPS = {
2108
2108
  "params": {
2109
2109
  "type": "object",
2110
2110
  "required": false,
2111
- "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null/0 or unresolved value; a names summary appears only when the 20 uncached name-read cap left ids unlabelled; false = raw ids), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
2111
+ "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null value, a 0 id or an unresolved value (a picklist 0 is labelled when the picklist defines it); a names summary appears only when something was left unlabelled (the 20 uncached name-read cap, an unresolved picklist value, or a failed field-catalog read: names.catalogError); false = raw ids, ~30% smaller on a full tickets row), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
2112
2112
  "properties": [
2113
2113
  {
2114
2114
  "name": "filter",
@@ -3766,7 +3766,7 @@ var CAPABILITY_GROUPS = {
3766
3766
  "params": {
3767
3767
  "type": "object",
3768
3768
  "required": false,
3769
- "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null/0 or unresolved value; a names summary appears only when the 20 uncached name-read cap left ids unlabelled; false = raw ids), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
3769
+ "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null value, a 0 id or an unresolved value (a picklist 0 is labelled when the picklist defines it); a names summary appears only when something was left unlabelled (the 20 uncached name-read cap, an unresolved picklist value, or a failed field-catalog read: names.catalogError); false = raw ids, ~30% smaller on a full tickets row), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
3770
3770
  "properties": [
3771
3771
  {
3772
3772
  "name": "filter",
@@ -4983,7 +4983,7 @@ var CAPABILITY_GROUPS = {
4983
4983
  "params": {
4984
4984
  "type": "object",
4985
4985
  "required": false,
4986
- "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null/0 or unresolved value; a names summary appears only when the 20 uncached name-read cap left ids unlabelled; false = raw ids), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
4986
+ "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null value, a 0 id or an unresolved value (a picklist 0 is labelled when the picklist defines it); a names summary appears only when something was left unlabelled (the 20 uncached name-read cap, an unresolved picklist value, or a failed field-catalog read: names.catalogError); false = raw ids, ~30% smaller on a full tickets row), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
4987
4987
  "properties": [
4988
4988
  {
4989
4989
  "name": "filter",
@@ -5821,7 +5821,7 @@ var CAPABILITY_GROUPS = {
5821
5821
  "params": {
5822
5822
  "type": "object",
5823
5823
  "required": false,
5824
- "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null/0 or unresolved value; a names summary appears only when the 20 uncached name-read cap left ids unlabelled; false = raw ids), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
5824
+ "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null value, a 0 id or an unresolved value (a picklist 0 is labelled when the picklist defines it); a names summary appears only when something was left unlabelled (the 20 uncached name-read cap, an unresolved picklist value, or a failed field-catalog read: names.catalogError); false = raw ids, ~30% smaller on a full tickets row), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
5825
5825
  "properties": [
5826
5826
  {
5827
5827
  "name": "filter",
@@ -6883,7 +6883,7 @@ var CAPABILITY_GROUPS = {
6883
6883
  "params": {
6884
6884
  "type": "object",
6885
6885
  "required": false,
6886
- "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null/0 or unresolved value; a names summary appears only when the 20 uncached name-read cap left ids unlabelled; false = raw ids), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
6886
+ "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null value, a 0 id or an unresolved value (a picklist 0 is labelled when the picklist defines it); a names summary appears only when something was left unlabelled (the 20 uncached name-read cap, an unresolved picklist value, or a failed field-catalog read: names.catalogError); false = raw ids, ~30% smaller on a full tickets row), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
6887
6887
  "properties": [
6888
6888
  {
6889
6889
  "name": "filter",
@@ -7655,7 +7655,7 @@ var CAPABILITY_GROUPS = {
7655
7655
  "params": {
7656
7656
  "type": "object",
7657
7657
  "required": false,
7658
- "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null/0 or unresolved value; a names summary appears only when the 20 uncached name-read cap left ids unlabelled; false = raw ids), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
7658
+ "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null value, a 0 id or an unresolved value (a picklist 0 is labelled when the picklist defines it); a names summary appears only when something was left unlabelled (the 20 uncached name-read cap, an unresolved picklist value, or a failed field-catalog read: names.catalogError); false = raw ids, ~30% smaller on a full tickets row), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
7659
7659
  "properties": [
7660
7660
  {
7661
7661
  "name": "filter",
@@ -8527,7 +8527,7 @@ var CAPABILITY_GROUPS = {
8527
8527
  "params": {
8528
8528
  "type": "object",
8529
8529
  "required": false,
8530
- "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null/0 or unresolved value; a names summary appears only when the 20 uncached name-read cap left ids unlabelled; false = raw ids), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
8530
+ "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null value, a 0 id or an unresolved value (a picklist 0 is labelled when the picklist defines it); a names summary appears only when something was left unlabelled (the 20 uncached name-read cap, an unresolved picklist value, or a failed field-catalog read: names.catalogError); false = raw ids, ~30% smaller on a full tickets row), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
8531
8531
  "properties": [
8532
8532
  {
8533
8533
  "name": "filter",
@@ -9568,7 +9568,7 @@ var CAPABILITY_GROUPS = {
9568
9568
  "params": {
9569
9569
  "type": "object",
9570
9570
  "required": false,
9571
- "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null/0 or unresolved value; a names summary appears only when the 20 uncached name-read cap left ids unlabelled; false = raw ids), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
9571
+ "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null value, a 0 id or an unresolved value (a picklist 0 is labelled when the picklist defines it); a names summary appears only when something was left unlabelled (the 20 uncached name-read cap, an unresolved picklist value, or a failed field-catalog read: names.catalogError); false = raw ids, ~30% smaller on a full tickets row), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
9572
9572
  "properties": [
9573
9573
  {
9574
9574
  "name": "filter",
@@ -10496,7 +10496,7 @@ var CAPABILITY_GROUPS = {
10496
10496
  "params": {
10497
10497
  "type": "object",
10498
10498
  "required": false,
10499
- "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null/0 or unresolved value; a names summary appears only when the 20 uncached name-read cap left ids unlabelled; false = raw ids), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
10499
+ "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null value, a 0 id or an unresolved value (a picklist 0 is labelled when the picklist defines it); a names summary appears only when something was left unlabelled (the 20 uncached name-read cap, an unresolved picklist value, or a failed field-catalog read: names.catalogError); false = raw ids, ~30% smaller on a full tickets row), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
10500
10500
  "properties": [
10501
10501
  {
10502
10502
  "name": "filter",
@@ -11528,7 +11528,7 @@ var CAPABILITY_GROUPS = {
11528
11528
  "params": {
11529
11529
  "type": "object",
11530
11530
  "required": false,
11531
- "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null/0 or unresolved value; a names summary appears only when the 20 uncached name-read cap left ids unlabelled; false = raw ids), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
11531
+ "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null value, a 0 id or an unresolved value (a picklist 0 is labelled when the picklist defines it); a names summary appears only when something was left unlabelled (the 20 uncached name-read cap, an unresolved picklist value, or a failed field-catalog read: names.catalogError); false = raw ids, ~30% smaller on a full tickets row), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
11532
11532
  "properties": [
11533
11533
  {
11534
11534
  "name": "filter",
@@ -12359,7 +12359,7 @@ var CAPABILITY_GROUPS = {
12359
12359
  "params": {
12360
12360
  "type": "object",
12361
12361
  "required": false,
12362
- "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null/0 or unresolved value; a names summary appears only when the 20 uncached name-read cap left ids unlabelled; false = raw ids), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
12362
+ "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null value, a 0 id or an unresolved value (a picklist 0 is labelled when the picklist defines it); a names summary appears only when something was left unlabelled (the 20 uncached name-read cap, an unresolved picklist value, or a failed field-catalog read: names.catalogError); false = raw ids, ~30% smaller on a full tickets row), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
12363
12363
  "properties": [
12364
12364
  {
12365
12365
  "name": "filter",
@@ -13396,7 +13396,7 @@ var CAPABILITY_GROUPS = {
13396
13396
  "params": {
13397
13397
  "type": "object",
13398
13398
  "required": false,
13399
- "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null/0 or unresolved value; a names summary appears only when the 20 uncached name-read cap left ids unlabelled; false = raw ids), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
13399
+ "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null value, a 0 id or an unresolved value (a picklist 0 is labelled when the picklist defines it); a names summary appears only when something was left unlabelled (the 20 uncached name-read cap, an unresolved picklist value, or a failed field-catalog read: names.catalogError); false = raw ids, ~30% smaller on a full tickets row), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
13400
13400
  "properties": [
13401
13401
  {
13402
13402
  "name": "filter",
@@ -14221,7 +14221,7 @@ var CAPABILITY_GROUPS = {
14221
14221
  "params": {
14222
14222
  "type": "object",
14223
14223
  "required": false,
14224
- "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null/0 or unresolved value; a names summary appears only when the 20 uncached name-read cap left ids unlabelled; false = raw ids), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
14224
+ "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null value, a 0 id or an unresolved value (a picklist 0 is labelled when the picklist defines it); a names summary appears only when something was left unlabelled (the 20 uncached name-read cap, an unresolved picklist value, or a failed field-catalog read: names.catalogError); false = raw ids, ~30% smaller on a full tickets row), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
14225
14225
  "properties": [
14226
14226
  {
14227
14227
  "name": "filter",
@@ -15059,7 +15059,7 @@ var CAPABILITY_GROUPS = {
15059
15059
  "params": {
15060
15060
  "type": "object",
15061
15061
  "required": false,
15062
- "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null/0 or unresolved value; a names summary appears only when the 20 uncached name-read cap left ids unlabelled; false = raw ids), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
15062
+ "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null value, a 0 id or an unresolved value (a picklist 0 is labelled when the picklist defines it); a names summary appears only when something was left unlabelled (the 20 uncached name-read cap, an unresolved picklist value, or a failed field-catalog read: names.catalogError); false = raw ids, ~30% smaller on a full tickets row), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
15063
15063
  "properties": [
15064
15064
  {
15065
15065
  "name": "filter",
@@ -15941,7 +15941,7 @@ var CAPABILITY_GROUPS = {
15941
15941
  "params": {
15942
15942
  "type": "object",
15943
15943
  "required": false,
15944
- "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null/0 or unresolved value; a names summary appears only when the 20 uncached name-read cap left ids unlabelled; false = raw ids), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
15944
+ "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null value, a 0 id or an unresolved value (a picklist 0 is labelled when the picklist defines it); a names summary appears only when something was left unlabelled (the 20 uncached name-read cap, an unresolved picklist value, or a failed field-catalog read: names.catalogError); false = raw ids, ~30% smaller on a full tickets row), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
15945
15945
  "properties": [
15946
15946
  {
15947
15947
  "name": "filter",
@@ -16823,7 +16823,7 @@ var CAPABILITY_GROUPS = {
16823
16823
  "params": {
16824
16824
  "type": "object",
16825
16825
  "required": false,
16826
- "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null/0 or unresolved value; a names summary appears only when the 20 uncached name-read cap left ids unlabelled; false = raw ids), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
16826
+ "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null value, a 0 id or an unresolved value (a picklist 0 is labelled when the picklist defines it); a names summary appears only when something was left unlabelled (the 20 uncached name-read cap, an unresolved picklist value, or a failed field-catalog read: names.catalogError); false = raw ids, ~30% smaller on a full tickets row), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
16827
16827
  "properties": [
16828
16828
  {
16829
16829
  "name": "filter",
@@ -17695,7 +17695,7 @@ var CAPABILITY_GROUPS = {
17695
17695
  "params": {
17696
17696
  "type": "object",
17697
17697
  "required": false,
17698
- "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null/0 or unresolved value; a names summary appears only when the 20 uncached name-read cap left ids unlabelled; false = raw ids), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
17698
+ "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null value, a 0 id or an unresolved value (a picklist 0 is labelled when the picklist defines it); a names summary appears only when something was left unlabelled (the 20 uncached name-read cap, an unresolved picklist value, or a failed field-catalog read: names.catalogError); false = raw ids, ~30% smaller on a full tickets row), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
17699
17699
  "properties": [
17700
17700
  {
17701
17701
  "name": "filter",
@@ -18660,7 +18660,7 @@ var CAPABILITY_GROUPS = {
18660
18660
  "params": {
18661
18661
  "type": "object",
18662
18662
  "required": false,
18663
- "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null/0 or unresolved value; a names summary appears only when the 20 uncached name-read cap left ids unlabelled; false = raw ids), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
18663
+ "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null value, a 0 id or an unresolved value (a picklist 0 is labelled when the picklist defines it); a names summary appears only when something was left unlabelled (the 20 uncached name-read cap, an unresolved picklist value, or a failed field-catalog read: names.catalogError); false = raw ids, ~30% smaller on a full tickets row), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
18664
18664
  "properties": [
18665
18665
  {
18666
18666
  "name": "filter",
@@ -19875,7 +19875,7 @@ var CAPABILITY_GROUPS = {
19875
19875
  "params": {
19876
19876
  "type": "object",
19877
19877
  "required": false,
19878
- "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null/0 or unresolved value; a names summary appears only when the 20 uncached name-read cap left ids unlabelled; false = raw ids), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
19878
+ "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null value, a 0 id or an unresolved value (a picklist 0 is labelled when the picklist defines it); a names summary appears only when something was left unlabelled (the 20 uncached name-read cap, an unresolved picklist value, or a failed field-catalog read: names.catalogError); false = raw ids, ~30% smaller on a full tickets row), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
19879
19879
  "properties": [
19880
19880
  {
19881
19881
  "name": "filter",
@@ -20899,7 +20899,7 @@ var CAPABILITY_GROUPS = {
20899
20899
  "params": {
20900
20900
  "type": "object",
20901
20901
  "required": false,
20902
- "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null/0 or unresolved value; a names summary appears only when the 20 uncached name-read cap left ids unlabelled; false = raw ids), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
20902
+ "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null value, a 0 id or an unresolved value (a picklist 0 is labelled when the picklist defines it); a names summary appears only when something was left unlabelled (the 20 uncached name-read cap, an unresolved picklist value, or a failed field-catalog read: names.catalogError); false = raw ids, ~30% smaller on a full tickets row), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
20903
20903
  "properties": [
20904
20904
  {
20905
20905
  "name": "filter",
@@ -21954,7 +21954,7 @@ var CAPABILITY_GROUPS = {
21954
21954
  "params": {
21955
21955
  "type": "object",
21956
21956
  "required": false,
21957
- "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null/0 or unresolved value; a names summary appears only when the 20 uncached name-read cap left ids unlabelled; false = raw ids), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
21957
+ "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null value, a 0 id or an unresolved value (a picklist 0 is labelled when the picklist defines it); a names summary appears only when something was left unlabelled (the 20 uncached name-read cap, an unresolved picklist value, or a failed field-catalog read: names.catalogError); false = raw ids, ~30% smaller on a full tickets row), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
21958
21958
  "properties": [
21959
21959
  {
21960
21960
  "name": "filter",
@@ -23172,7 +23172,7 @@ var CAPABILITY_GROUPS = {
23172
23172
  "params": {
23173
23173
  "type": "object",
23174
23174
  "required": false,
23175
- "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null/0 or unresolved value; a names summary appears only when the 20 uncached name-read cap left ids unlabelled; false = raw ids), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
23175
+ "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null value, a 0 id or an unresolved value (a picklist 0 is labelled when the picklist defines it); a names summary appears only when something was left unlabelled (the 20 uncached name-read cap, an unresolved picklist value, or a failed field-catalog read: names.catalogError); false = raw ids, ~30% smaller on a full tickets row), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
23176
23176
  "properties": [
23177
23177
  {
23178
23178
  "name": "filter",
@@ -24223,7 +24223,7 @@ var CAPABILITY_GROUPS = {
24223
24223
  "params": {
24224
24224
  "type": "object",
24225
24225
  "required": false,
24226
- "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null/0 or unresolved value; a names summary appears only when the 20 uncached name-read cap left ids unlabelled; false = raw ids), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
24226
+ "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null value, a 0 id or an unresolved value (a picklist 0 is labelled when the picklist defines it); a names summary appears only when something was left unlabelled (the 20 uncached name-read cap, an unresolved picklist value, or a failed field-catalog read: names.catalogError); false = raw ids, ~30% smaller on a full tickets row), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
24227
24227
  "properties": [
24228
24228
  {
24229
24229
  "name": "filter",
@@ -25160,7 +25160,7 @@ var CAPABILITY_GROUPS = {
25160
25160
  "params": {
25161
25161
  "type": "object",
25162
25162
  "required": false,
25163
- "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null/0 or unresolved value; a names summary appears only when the 20 uncached name-read cap left ids unlabelled; false = raw ids), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
25163
+ "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null value, a 0 id or an unresolved value (a picklist 0 is labelled when the picklist defines it); a names summary appears only when something was left unlabelled (the 20 uncached name-read cap, an unresolved picklist value, or a failed field-catalog read: names.catalogError); false = raw ids, ~30% smaller on a full tickets row), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
25164
25164
  "properties": [
25165
25165
  {
25166
25166
  "name": "filter",
@@ -26194,7 +26194,7 @@ var CAPABILITY_GROUPS = {
26194
26194
  "params": {
26195
26195
  "type": "object",
26196
26196
  "required": false,
26197
- "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null/0 or unresolved value; a names summary appears only when the 20 uncached name-read cap left ids unlabelled; false = raw ids), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
26197
+ "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null value, a 0 id or an unresolved value (a picklist 0 is labelled when the picklist defines it); a names summary appears only when something was left unlabelled (the 20 uncached name-read cap, an unresolved picklist value, or a failed field-catalog read: names.catalogError); false = raw ids, ~30% smaller on a full tickets row), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
26198
26198
  "properties": [
26199
26199
  {
26200
26200
  "name": "filter",
@@ -26844,7 +26844,7 @@ var CAPABILITY_GROUPS = {
26844
26844
  "params": {
26845
26845
  "type": "object",
26846
26846
  "required": false,
26847
- "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null/0 or unresolved value; a names summary appears only when the 20 uncached name-read cap left ids unlabelled; false = raw ids), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
26847
+ "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null value, a 0 id or an unresolved value (a picklist 0 is labelled when the picklist defines it); a names summary appears only when something was left unlabelled (the 20 uncached name-read cap, an unresolved picklist value, or a failed field-catalog read: names.catalogError); false = raw ids, ~30% smaller on a full tickets row), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
26848
26848
  "properties": [
26849
26849
  {
26850
26850
  "name": "filter",
@@ -27520,7 +27520,7 @@ var CAPABILITY_GROUPS = {
27520
27520
  "params": {
27521
27521
  "type": "object",
27522
27522
  "required": false,
27523
- "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null/0 or unresolved value; a names summary appears only when the 20 uncached name-read cap left ids unlabelled; false = raw ids), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
27523
+ "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null value, a 0 id or an unresolved value (a picklist 0 is labelled when the picklist defines it); a names summary appears only when something was left unlabelled (the 20 uncached name-read cap, an unresolved picklist value, or a failed field-catalog read: names.catalogError); false = raw ids, ~30% smaller on a full tickets row), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
27524
27524
  "properties": [
27525
27525
  {
27526
27526
  "name": "filter",
@@ -28467,7 +28467,7 @@ var CAPABILITY_GROUPS = {
28467
28467
  "params": {
28468
28468
  "type": "object",
28469
28469
  "required": false,
28470
- "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null/0 or unresolved value; a names summary appears only when the 20 uncached name-read cap left ids unlabelled; false = raw ids), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
28470
+ "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null value, a 0 id or an unresolved value (a picklist 0 is labelled when the picklist defines it); a names summary appears only when something was left unlabelled (the 20 uncached name-read cap, an unresolved picklist value, or a failed field-catalog read: names.catalogError); false = raw ids, ~30% smaller on a full tickets row), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
28471
28471
  "properties": [
28472
28472
  {
28473
28473
  "name": "filter",
@@ -29218,7 +29218,7 @@ var CAPABILITY_GROUPS = {
29218
29218
  "params": {
29219
29219
  "type": "object",
29220
29220
  "required": false,
29221
- "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null/0 or unresolved value; a names summary appears only when the 20 uncached name-read cap left ids unlabelled; false = raw ids), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
29221
+ "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null value, a 0 id or an unresolved value (a picklist 0 is labelled when the picklist defines it); a names summary appears only when something was left unlabelled (the 20 uncached name-read cap, an unresolved picklist value, or a failed field-catalog read: names.catalogError); false = raw ids, ~30% smaller on a full tickets row), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
29222
29222
  "properties": [
29223
29223
  {
29224
29224
  "name": "filter",
@@ -29977,7 +29977,7 @@ var CAPABILITY_GROUPS = {
29977
29977
  "params": {
29978
29978
  "type": "object",
29979
29979
  "required": false,
29980
- "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null/0 or unresolved value; a names summary appears only when the 20 uncached name-read cap left ids unlabelled; false = raw ids), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
29980
+ "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null value, a 0 id or an unresolved value (a picklist 0 is labelled when the picklist defines it); a names summary appears only when something was left unlabelled (the 20 uncached name-read cap, an unresolved picklist value, or a failed field-catalog read: names.catalogError); false = raw ids, ~30% smaller on a full tickets row), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
29981
29981
  "properties": [
29982
29982
  {
29983
29983
  "name": "filter",
@@ -30722,7 +30722,7 @@ var CAPABILITY_GROUPS = {
30722
30722
  "params": {
30723
30723
  "type": "object",
30724
30724
  "required": false,
30725
- "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null/0 or unresolved value; a names summary appears only when the 20 uncached name-read cap left ids unlabelled; false = raw ids), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
30725
+ "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null value, a 0 id or an unresolved value (a picklist 0 is labelled when the picklist defines it); a names summary appears only when something was left unlabelled (the 20 uncached name-read cap, an unresolved picklist value, or a failed field-catalog read: names.catalogError); false = raw ids, ~30% smaller on a full tickets row), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
30726
30726
  "properties": [
30727
30727
  {
30728
30728
  "name": "filter",
@@ -31717,7 +31717,7 @@ var CAPABILITY_GROUPS = {
31717
31717
  "params": {
31718
31718
  "type": "object",
31719
31719
  "required": false,
31720
- "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null/0 or unresolved value; a names summary appears only when the 20 uncached name-read cap left ids unlabelled; false = raw ids), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
31720
+ "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null value, a 0 id or an unresolved value (a picklist 0 is labelled when the picklist defines it); a names summary appears only when something was left unlabelled (the 20 uncached name-read cap, an unresolved picklist value, or a failed field-catalog read: names.catalogError); false = raw ids, ~30% smaller on a full tickets row), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
31721
31721
  "properties": [
31722
31722
  {
31723
31723
  "name": "filter",
@@ -32691,7 +32691,7 @@ var CAPABILITY_GROUPS = {
32691
32691
  "params": {
32692
32692
  "type": "object",
32693
32693
  "required": false,
32694
- "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null/0 or unresolved value; a names summary appears only when the 20 uncached name-read cap left ids unlabelled; false = raw ids), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
32694
+ "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null value, a 0 id or an unresolved value (a picklist 0 is labelled when the picklist defines it); a names summary appears only when something was left unlabelled (the 20 uncached name-read cap, an unresolved picklist value, or a failed field-catalog read: names.catalogError); false = raw ids, ~30% smaller on a full tickets row), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
32695
32695
  "properties": [
32696
32696
  {
32697
32697
  "name": "filter",
@@ -33539,7 +33539,7 @@ var CAPABILITY_GROUPS = {
33539
33539
  "params": {
33540
33540
  "type": "object",
33541
33541
  "required": false,
33542
- "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null/0 or unresolved value; a names summary appears only when the 20 uncached name-read cap left ids unlabelled; false = raw ids), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
33542
+ "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null value, a 0 id or an unresolved value (a picklist 0 is labelled when the picklist defines it); a names summary appears only when something was left unlabelled (the 20 uncached name-read cap, an unresolved picklist value, or a failed field-catalog read: names.catalogError); false = raw ids, ~30% smaller on a full tickets row), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
33543
33543
  "properties": [
33544
33544
  {
33545
33545
  "name": "filter",
@@ -34298,7 +34298,7 @@ var CAPABILITY_GROUPS = {
34298
34298
  "params": {
34299
34299
  "type": "object",
34300
34300
  "required": false,
34301
- "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null/0 or unresolved value; a names summary appears only when the 20 uncached name-read cap left ids unlabelled; false = raw ids), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
34301
+ "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null value, a 0 id or an unresolved value (a picklist 0 is labelled when the picklist defines it); a names summary appears only when something was left unlabelled (the 20 uncached name-read cap, an unresolved picklist value, or a failed field-catalog read: names.catalogError); false = raw ids, ~30% smaller on a full tickets row), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
34302
34302
  "properties": [
34303
34303
  {
34304
34304
  "name": "filter",
@@ -35171,7 +35171,7 @@ var CAPABILITY_GROUPS = {
35171
35171
  "params": {
35172
35172
  "type": "object",
35173
35173
  "required": false,
35174
- "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null/0 or unresolved value; a names summary appears only when the 20 uncached name-read cap left ids unlabelled; false = raw ids), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
35174
+ "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null value, a 0 id or an unresolved value (a picklist 0 is labelled when the picklist defines it); a names summary appears only when something was left unlabelled (the 20 uncached name-read cap, an unresolved picklist value, or a failed field-catalog read: names.catalogError); false = raw ids, ~30% smaller on a full tickets row), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
35175
35175
  "properties": [
35176
35176
  {
35177
35177
  "name": "filter",
@@ -35950,7 +35950,7 @@ var CAPABILITY_GROUPS = {
35950
35950
  "params": {
35951
35951
  "type": "object",
35952
35952
  "required": false,
35953
- "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null/0 or unresolved value; a names summary appears only when the 20 uncached name-read cap left ids unlabelled; false = raw ids), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
35953
+ "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null value, a 0 id or an unresolved value (a picklist 0 is labelled when the picklist defines it); a names summary appears only when something was left unlabelled (the 20 uncached name-read cap, an unresolved picklist value, or a failed field-catalog read: names.catalogError); false = raw ids, ~30% smaller on a full tickets row), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
35954
35954
  "properties": [
35955
35955
  {
35956
35956
  "name": "filter",
@@ -36808,7 +36808,7 @@ var CAPABILITY_GROUPS = {
36808
36808
  "params": {
36809
36809
  "type": "object",
36810
36810
  "required": false,
36811
- "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null/0 or unresolved value; a names summary appears only when the 20 uncached name-read cap left ids unlabelled; false = raw ids), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
36811
+ "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null value, a 0 id or an unresolved value (a picklist 0 is labelled when the picklist defines it); a names summary appears only when something was left unlabelled (the 20 uncached name-read cap, an unresolved picklist value, or a failed field-catalog read: names.catalogError); false = raw ids, ~30% smaller on a full tickets row), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
36812
36812
  "properties": [
36813
36813
  {
36814
36814
  "name": "filter",
@@ -37556,7 +37556,7 @@ var CAPABILITY_GROUPS = {
37556
37556
  "params": {
37557
37557
  "type": "object",
37558
37558
  "required": false,
37559
- "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null/0 or unresolved value; a names summary appears only when the 20 uncached name-read cap left ids unlabelled; false = raw ids), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
37559
+ "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null value, a 0 id or an unresolved value (a picklist 0 is labelled when the picklist defines it); a names summary appears only when something was left unlabelled (the 20 uncached name-read cap, an unresolved picklist value, or a failed field-catalog read: names.catalogError); false = raw ids, ~30% smaller on a full tickets row), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
37560
37560
  "properties": [
37561
37561
  {
37562
37562
  "name": "filter",
@@ -38222,7 +38222,7 @@ var CAPABILITY_GROUPS = {
38222
38222
  "params": {
38223
38223
  "type": "object",
38224
38224
  "required": false,
38225
- "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null/0 or unresolved value; a names summary appears only when the 20 uncached name-read cap left ids unlabelled; false = raw ids), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
38225
+ "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null value, a 0 id or an unresolved value (a picklist 0 is labelled when the picklist defines it); a names summary appears only when something was left unlabelled (the 20 uncached name-read cap, an unresolved picklist value, or a failed field-catalog read: names.catalogError); false = raw ids, ~30% smaller on a full tickets row), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
38226
38226
  "properties": [
38227
38227
  {
38228
38228
  "name": "filter",
@@ -39464,7 +39464,7 @@ var CAPABILITY_GROUPS = {
39464
39464
  "params": {
39465
39465
  "type": "object",
39466
39466
  "required": false,
39467
- "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null/0 or unresolved value; a names summary appears only when the 20 uncached name-read cap left ids unlabelled; false = raw ids), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
39467
+ "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null value, a 0 id or an unresolved value (a picklist 0 is labelled when the picklist defines it); a names summary appears only when something was left unlabelled (the 20 uncached name-read cap, an unresolved picklist value, or a failed field-catalog read: names.catalogError); false = raw ids, ~30% smaller on a full tickets row), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
39468
39468
  "properties": [
39469
39469
  {
39470
39470
  "name": "filter",
@@ -40780,7 +40780,7 @@ var CAPABILITY_GROUPS = {
40780
40780
  "params": {
40781
40781
  "type": "object",
40782
40782
  "required": false,
40783
- "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null/0 or unresolved value; a names summary appears only when the 20 uncached name-read cap left ids unlabelled; false = raw ids), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
40783
+ "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null value, a 0 id or an unresolved value (a picklist 0 is labelled when the picklist defines it); a names summary appears only when something was left unlabelled (the 20 uncached name-read cap, an unresolved picklist value, or a failed field-catalog read: names.catalogError); false = raw ids, ~30% smaller on a full tickets row), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
40784
40784
  "properties": [
40785
40785
  {
40786
40786
  "name": "filter",
@@ -42009,7 +42009,7 @@ var CAPABILITY_GROUPS = {
42009
42009
  "params": {
42010
42010
  "type": "object",
42011
42011
  "required": false,
42012
- "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null/0 or unresolved value; a names summary appears only when the 20 uncached name-read cap left ids unlabelled; false = raw ids), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
42012
+ "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null value, a 0 id or an unresolved value (a picklist 0 is labelled when the picklist defines it); a names summary appears only when something was left unlabelled (the 20 uncached name-read cap, an unresolved picklist value, or a failed field-catalog read: names.catalogError); false = raw ids, ~30% smaller on a full tickets row), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
42013
42013
  "properties": [
42014
42014
  {
42015
42015
  "name": "filter",
@@ -43011,7 +43011,7 @@ var CAPABILITY_GROUPS = {
43011
43011
  "params": {
43012
43012
  "type": "object",
43013
43013
  "required": false,
43014
- "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null/0 or unresolved value; a names summary appears only when the 20 uncached name-read cap left ids unlabelled; false = raw ids), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
43014
+ "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null value, a 0 id or an unresolved value (a picklist 0 is labelled when the picklist defines it); a names summary appears only when something was left unlabelled (the 20 uncached name-read cap, an unresolved picklist value, or a failed field-catalog read: names.catalogError); false = raw ids, ~30% smaller on a full tickets row), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
43015
43015
  "properties": [
43016
43016
  {
43017
43017
  "name": "filter",
@@ -43888,7 +43888,7 @@ var CAPABILITY_GROUPS = {
43888
43888
  "params": {
43889
43889
  "type": "object",
43890
43890
  "required": false,
43891
- "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null/0 or unresolved value; a names summary appears only when the 20 uncached name-read cap left ids unlabelled; false = raw ids), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
43891
+ "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null value, a 0 id or an unresolved value (a picklist 0 is labelled when the picklist defines it); a names summary appears only when something was left unlabelled (the 20 uncached name-read cap, an unresolved picklist value, or a failed field-catalog read: names.catalogError); false = raw ids, ~30% smaller on a full tickets row), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
43892
43892
  "properties": [
43893
43893
  {
43894
43894
  "name": "filter",
@@ -44713,7 +44713,7 @@ var CAPABILITY_GROUPS = {
44713
44713
  "params": {
44714
44714
  "type": "object",
44715
44715
  "required": false,
44716
- "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null/0 or unresolved value; a names summary appears only when the 20 uncached name-read cap left ids unlabelled; false = raw ids), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
44716
+ "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null value, a 0 id or an unresolved value (a picklist 0 is labelled when the picklist defines it); a names summary appears only when something was left unlabelled (the 20 uncached name-read cap, an unresolved picklist value, or a failed field-catalog read: names.catalogError); false = raw ids, ~30% smaller on a full tickets row), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
44717
44717
  "properties": [
44718
44718
  {
44719
44719
  "name": "filter",
@@ -45538,7 +45538,7 @@ var CAPABILITY_GROUPS = {
45538
45538
  "params": {
45539
45539
  "type": "object",
45540
45540
  "required": false,
45541
- "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null/0 or unresolved value; a names summary appears only when the 20 uncached name-read cap left ids unlabelled; false = raw ids), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
45541
+ "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null value, a 0 id or an unresolved value (a picklist 0 is labelled when the picklist defines it); a names summary appears only when something was left unlabelled (the 20 uncached name-read cap, an unresolved picklist value, or a failed field-catalog read: names.catalogError); false = raw ids, ~30% smaller on a full tickets row), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
45542
45542
  "properties": [
45543
45543
  {
45544
45544
  "name": "filter",
@@ -46363,7 +46363,7 @@ var CAPABILITY_GROUPS = {
46363
46363
  "params": {
46364
46364
  "type": "object",
46365
46365
  "required": false,
46366
- "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null/0 or unresolved value; a names summary appears only when the 20 uncached name-read cap left ids unlabelled; false = raw ids), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
46366
+ "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null value, a 0 id or an unresolved value (a picklist 0 is labelled when the picklist defines it); a names summary appears only when something was left unlabelled (the 20 uncached name-read cap, an unresolved picklist value, or a failed field-catalog read: names.catalogError); false = raw ids, ~30% smaller on a full tickets row), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
46367
46367
  "properties": [
46368
46368
  {
46369
46369
  "name": "filter",
@@ -47194,7 +47194,7 @@ var CAPABILITY_GROUPS = {
47194
47194
  "params": {
47195
47195
  "type": "object",
47196
47196
  "required": false,
47197
- "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null/0 or unresolved value; a names summary appears only when the 20 uncached name-read cap left ids unlabelled; false = raw ids), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
47197
+ "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null value, a 0 id or an unresolved value (a picklist 0 is labelled when the picklist defines it); a names summary appears only when something was left unlabelled (the 20 uncached name-read cap, an unresolved picklist value, or a failed field-catalog read: names.catalogError); false = raw ids, ~30% smaller on a full tickets row), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
47198
47198
  "properties": [
47199
47199
  {
47200
47200
  "name": "filter",
@@ -47959,7 +47959,7 @@ var CAPABILITY_GROUPS = {
47959
47959
  "params": {
47960
47960
  "type": "object",
47961
47961
  "required": false,
47962
- "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null/0 or unresolved value; a names summary appears only when the 20 uncached name-read cap left ids unlabelled; false = raw ids), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
47962
+ "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null value, a 0 id or an unresolved value (a picklist 0 is labelled when the picklist defines it); a names summary appears only when something was left unlabelled (the 20 uncached name-read cap, an unresolved picklist value, or a failed field-catalog read: names.catalogError); false = raw ids, ~30% smaller on a full tickets row), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
47963
47963
  "properties": [
47964
47964
  {
47965
47965
  "name": "filter",
@@ -48857,7 +48857,7 @@ var CAPABILITY_GROUPS = {
48857
48857
  "params": {
48858
48858
  "type": "object",
48859
48859
  "required": false,
48860
- "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null/0 or unresolved value; a names summary appears only when the 20 uncached name-read cap left ids unlabelled; false = raw ids), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
48860
+ "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null value, a 0 id or an unresolved value (a picklist 0 is labelled when the picklist defines it); a names summary appears only when something was left unlabelled (the 20 uncached name-read cap, an unresolved picklist value, or a failed field-catalog read: names.catalogError); false = raw ids, ~30% smaller on a full tickets row), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
48861
48861
  "properties": [
48862
48862
  {
48863
48863
  "name": "filter",
@@ -49832,7 +49832,7 @@ var CAPABILITY_GROUPS = {
49832
49832
  "params": {
49833
49833
  "type": "object",
49834
49834
  "required": false,
49835
- "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null/0 or unresolved value; a names summary appears only when the 20 uncached name-read cap left ids unlabelled; false = raw ids), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
49835
+ "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null value, a 0 id or an unresolved value (a picklist 0 is labelled when the picklist defines it); a names summary appears only when something was left unlabelled (the 20 uncached name-read cap, an unresolved picklist value, or a failed field-catalog read: names.catalogError); false = raw ids, ~30% smaller on a full tickets row), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
49836
49836
  "properties": [
49837
49837
  {
49838
49838
  "name": "filter",
@@ -50595,7 +50595,7 @@ var CAPABILITY_GROUPS = {
50595
50595
  "params": {
50596
50596
  "type": "object",
50597
50597
  "required": false,
50598
- "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null/0 or unresolved value; a names summary appears only when the 20 uncached name-read cap left ids unlabelled; false = raw ids), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
50598
+ "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null value, a 0 id or an unresolved value (a picklist 0 is labelled when the picklist defines it); a names summary appears only when something was left unlabelled (the 20 uncached name-read cap, an unresolved picklist value, or a failed field-catalog read: names.catalogError); false = raw ids, ~30% smaller on a full tickets row), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
50599
50599
  "properties": [
50600
50600
  {
50601
50601
  "name": "filter",
@@ -51241,7 +51241,7 @@ var CAPABILITY_GROUPS = {
51241
51241
  "params": {
51242
51242
  "type": "object",
51243
51243
  "required": false,
51244
- "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null/0 or unresolved value; a names summary appears only when the 20 uncached name-read cap left ids unlabelled; false = raw ids), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
51244
+ "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null value, a 0 id or an unresolved value (a picklist 0 is labelled when the picklist defines it); a names summary appears only when something was left unlabelled (the 20 uncached name-read cap, an unresolved picklist value, or a failed field-catalog read: names.catalogError); false = raw ids, ~30% smaller on a full tickets row), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
51245
51245
  "properties": [
51246
51246
  {
51247
51247
  "name": "filter",
@@ -51912,7 +51912,7 @@ var CAPABILITY_GROUPS = {
51912
51912
  "params": {
51913
51913
  "type": "object",
51914
51914
  "required": false,
51915
- "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null/0 or unresolved value; a names summary appears only when the 20 uncached name-read cap left ids unlabelled; false = raw ids), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
51915
+ "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null value, a 0 id or an unresolved value (a picklist 0 is labelled when the picklist defines it); a names summary appears only when something was left unlabelled (the 20 uncached name-read cap, an unresolved picklist value, or a failed field-catalog read: names.catalogError); false = raw ids, ~30% smaller on a full tickets row), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
51916
51916
  "properties": [
51917
51917
  {
51918
51918
  "name": "filter",
@@ -52878,7 +52878,7 @@ var CAPABILITY_GROUPS = {
52878
52878
  "params": {
52879
52879
  "type": "object",
52880
52880
  "required": false,
52881
- "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null/0 or unresolved value; a names summary appears only when the 20 uncached name-read cap left ids unlabelled; false = raw ids), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
52881
+ "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null value, a 0 id or an unresolved value (a picklist 0 is labelled when the picklist defines it); a names summary appears only when something was left unlabelled (the 20 uncached name-read cap, an unresolved picklist value, or a failed field-catalog read: names.catalogError); false = raw ids, ~30% smaller on a full tickets row), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
52882
52882
  "properties": [
52883
52883
  {
52884
52884
  "name": "filter",
@@ -53715,7 +53715,7 @@ var CAPABILITY_GROUPS = {
53715
53715
  "params": {
53716
53716
  "type": "object",
53717
53717
  "required": false,
53718
- "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null/0 or unresolved value; a names summary appears only when the 20 uncached name-read cap left ids unlabelled; false = raw ids), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
53718
+ "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null value, a 0 id or an unresolved value (a picklist 0 is labelled when the picklist defines it); a names summary appears only when something was left unlabelled (the 20 uncached name-read cap, an unresolved picklist value, or a failed field-catalog read: names.catalogError); false = raw ids, ~30% smaller on a full tickets row), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
53719
53719
  "properties": [
53720
53720
  {
53721
53721
  "name": "filter",
@@ -54650,7 +54650,7 @@ var CAPABILITY_GROUPS = {
54650
54650
  "params": {
54651
54651
  "type": "object",
54652
54652
  "required": false,
54653
- "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null/0 or unresolved value; a names summary appears only when the 20 uncached name-read cap left ids unlabelled; false = raw ids), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
54653
+ "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null value, a 0 id or an unresolved value (a picklist 0 is labelled when the picklist defines it); a names summary appears only when something was left unlabelled (the 20 uncached name-read cap, an unresolved picklist value, or a failed field-catalog read: names.catalogError); false = raw ids, ~30% smaller on a full tickets row), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
54654
54654
  "properties": [
54655
54655
  {
54656
54656
  "name": "filter",
@@ -55503,7 +55503,7 @@ var CAPABILITY_GROUPS = {
55503
55503
  "params": {
55504
55504
  "type": "object",
55505
55505
  "required": false,
55506
- "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null/0 or unresolved value; a names summary appears only when the 20 uncached name-read cap left ids unlabelled; false = raw ids), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
55506
+ "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null value, a 0 id or an unresolved value (a picklist 0 is labelled when the picklist defines it); a names summary appears only when something was left unlabelled (the 20 uncached name-read cap, an unresolved picklist value, or a failed field-catalog read: names.catalogError); false = raw ids, ~30% smaller on a full tickets row), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
55507
55507
  "properties": [
55508
55508
  {
55509
55509
  "name": "filter",
@@ -56242,7 +56242,7 @@ var CAPABILITY_GROUPS = {
56242
56242
  "params": {
56243
56243
  "type": "object",
56244
56244
  "required": false,
56245
- "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null/0 or unresolved value; a names summary appears only when the 20 uncached name-read cap left ids unlabelled; false = raw ids), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
56245
+ "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null value, a 0 id or an unresolved value (a picklist 0 is labelled when the picklist defines it); a names summary appears only when something was left unlabelled (the 20 uncached name-read cap, an unresolved picklist value, or a failed field-catalog read: names.catalogError); false = raw ids, ~30% smaller on a full tickets row), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
56246
56246
  "properties": [
56247
56247
  {
56248
56248
  "name": "filter",
@@ -57134,7 +57134,7 @@ var CAPABILITY_GROUPS = {
57134
57134
  "params": {
57135
57135
  "type": "object",
57136
57136
  "required": false,
57137
- "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null/0 or unresolved value; a names summary appears only when the 20 uncached name-read cap left ids unlabelled; false = raw ids), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
57137
+ "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null value, a 0 id or an unresolved value (a picklist 0 is labelled when the picklist defines it); a names summary appears only when something was left unlabelled (the 20 uncached name-read cap, an unresolved picklist value, or a failed field-catalog read: names.catalogError); false = raw ids, ~30% smaller on a full tickets row), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
57138
57138
  "properties": [
57139
57139
  {
57140
57140
  "name": "filter",
@@ -57810,7 +57810,7 @@ var CAPABILITY_GROUPS = {
57810
57810
  "params": {
57811
57811
  "type": "object",
57812
57812
  "required": false,
57813
- "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null/0 or unresolved value; a names summary appears only when the 20 uncached name-read cap left ids unlabelled; false = raw ids), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
57813
+ "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null value, a 0 id or an unresolved value (a picklist 0 is labelled when the picklist defines it); a names summary appears only when something was left unlabelled (the 20 uncached name-read cap, an unresolved picklist value, or a failed field-catalog read: names.catalogError); false = raw ids, ~30% smaller on a full tickets row), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
57814
57814
  "properties": [
57815
57815
  {
57816
57816
  "name": "filter",
@@ -58751,7 +58751,7 @@ var CAPABILITY_GROUPS = {
58751
58751
  "params": {
58752
58752
  "type": "object",
58753
58753
  "required": false,
58754
- "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null/0 or unresolved value; a names summary appears only when the 20 uncached name-read cap left ids unlabelled; false = raw ids), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
58754
+ "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null value, a 0 id or an unresolved value (a picklist 0 is labelled when the picklist defines it); a names summary appears only when something was left unlabelled (the 20 uncached name-read cap, an unresolved picklist value, or a failed field-catalog read: names.catalogError); false = raw ids, ~30% smaller on a full tickets row), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
58755
58755
  "properties": [
58756
58756
  {
58757
58757
  "name": "filter",
@@ -59603,7 +59603,7 @@ var CAPABILITY_GROUPS = {
59603
59603
  "params": {
59604
59604
  "type": "object",
59605
59605
  "required": false,
59606
- "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null/0 or unresolved value; a names summary appears only when the 20 uncached name-read cap left ids unlabelled; false = raw ids), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
59606
+ "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null value, a 0 id or an unresolved value (a picklist 0 is labelled when the picklist defines it); a names summary appears only when something was left unlabelled (the 20 uncached name-read cap, an unresolved picklist value, or a failed field-catalog read: names.catalogError); false = raw ids, ~30% smaller on a full tickets row), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
59607
59607
  "properties": [
59608
59608
  {
59609
59609
  "name": "filter",
@@ -64010,7 +64010,7 @@ var CAPABILITY_GROUPS = {
64010
64010
  "params": {
64011
64011
  "type": "object",
64012
64012
  "required": false,
64013
- "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null/0 or unresolved value; a names summary appears only when the 20 uncached name-read cap left ids unlabelled; false = raw ids), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
64013
+ "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null value, a 0 id or an unresolved value (a picklist 0 is labelled when the picklist defines it); a names summary appears only when something was left unlabelled (the 20 uncached name-read cap, an unresolved picklist value, or a failed field-catalog read: names.catalogError); false = raw ids, ~30% smaller on a full tickets row), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
64014
64014
  "properties": [
64015
64015
  {
64016
64016
  "name": "filter",
@@ -65696,7 +65696,7 @@ var CAPABILITY_GROUPS = {
65696
65696
  "params": {
65697
65697
  "type": "object",
65698
65698
  "required": false,
65699
- "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null/0 or unresolved value; a names summary appears only when the 20 uncached name-read cap left ids unlabelled; false = raw ids), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
65699
+ "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null value, a 0 id or an unresolved value (a picklist 0 is labelled when the picklist defines it); a names summary appears only when something was left unlabelled (the 20 uncached name-read cap, an unresolved picklist value, or a failed field-catalog read: names.catalogError); false = raw ids, ~30% smaller on a full tickets row), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
65700
65700
  "properties": [
65701
65701
  {
65702
65702
  "name": "filter",
@@ -66459,7 +66459,7 @@ var CAPABILITY_GROUPS = {
66459
66459
  "params": {
66460
66460
  "type": "object",
66461
66461
  "required": false,
66462
- "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null/0 or unresolved value; a names summary appears only when the 20 uncached name-read cap left ids unlabelled; false = raw ids), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
66462
+ "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null value, a 0 id or an unresolved value (a picklist 0 is labelled when the picklist defines it); a names summary appears only when something was left unlabelled (the 20 uncached name-read cap, an unresolved picklist value, or a failed field-catalog read: names.catalogError); false = raw ids, ~30% smaller on a full tickets row), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
66463
66463
  "properties": [
66464
66464
  {
66465
66465
  "name": "filter",
@@ -67003,7 +67003,7 @@ var CAPABILITY_GROUPS = {
67003
67003
  },
67004
67004
  "A": {
67005
67005
  "planHash": "9bb87de7bcbda60f6c44955dba52b8e61e9c5547750ea8acacfcb6f261d7734f",
67006
- "builtAt": "2026-10-29T10:49:12.432Z",
67006
+ "builtAt": "2026-10-29T20:28:49.330Z",
67007
67007
  "records": [
67008
67008
  {
67009
67009
  "id": "companies.count",
@@ -68160,7 +68160,7 @@ var CAPABILITY_GROUPS = {
68160
68160
  "params": {
68161
68161
  "type": "object",
68162
68162
  "required": false,
68163
- "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null/0 or unresolved value; a names summary appears only when the 20 uncached name-read cap left ids unlabelled; false = raw ids), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
68163
+ "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null value, a 0 id or an unresolved value (a picklist 0 is labelled when the picklist defines it); a names summary appears only when something was left unlabelled (the 20 uncached name-read cap, an unresolved picklist value, or a failed field-catalog read: names.catalogError); false = raw ids, ~30% smaller on a full tickets row), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
68164
68164
  "properties": [
68165
68165
  {
68166
68166
  "name": "filter",
@@ -70026,7 +70026,7 @@ var CAPABILITY_GROUPS = {
70026
70026
  "params": {
70027
70027
  "type": "object",
70028
70028
  "required": false,
70029
- "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null/0 or unresolved value; a names summary appears only when the 20 uncached name-read cap left ids unlabelled; false = raw ids), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
70029
+ "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null value, a 0 id or an unresolved value (a picklist 0 is labelled when the picklist defines it); a names summary appears only when something was left unlabelled (the 20 uncached name-read cap, an unresolved picklist value, or a failed field-catalog read: names.catalogError); false = raw ids, ~30% smaller on a full tickets row), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
70030
70030
  "properties": [
70031
70031
  {
70032
70032
  "name": "filter",
@@ -70985,7 +70985,7 @@ var CAPABILITY_GROUPS = {
70985
70985
  "params": {
70986
70986
  "type": "object",
70987
70987
  "required": false,
70988
- "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null/0 or unresolved value; a names summary appears only when the 20 uncached name-read cap left ids unlabelled; false = raw ids), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
70988
+ "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null value, a 0 id or an unresolved value (a picklist 0 is labelled when the picklist defines it); a names summary appears only when something was left unlabelled (the 20 uncached name-read cap, an unresolved picklist value, or a failed field-catalog read: names.catalogError); false = raw ids, ~30% smaller on a full tickets row), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
70989
70989
  "properties": [
70990
70990
  {
70991
70991
  "name": "filter",
@@ -71968,7 +71968,7 @@ var CAPABILITY_GROUPS = {
71968
71968
  "params": {
71969
71969
  "type": "object",
71970
71970
  "required": false,
71971
- "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null/0 or unresolved value; a names summary appears only when the 20 uncached name-read cap left ids unlabelled; false = raw ids), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
71971
+ "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null value, a 0 id or an unresolved value (a picklist 0 is labelled when the picklist defines it); a names summary appears only when something was left unlabelled (the 20 uncached name-read cap, an unresolved picklist value, or a failed field-catalog read: names.catalogError); false = raw ids, ~30% smaller on a full tickets row), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
71972
71972
  "properties": [
71973
71973
  {
71974
71974
  "name": "filter",
@@ -72957,7 +72957,7 @@ var CAPABILITY_GROUPS = {
72957
72957
  "params": {
72958
72958
  "type": "object",
72959
72959
  "required": false,
72960
- "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null/0 or unresolved value; a names summary appears only when the 20 uncached name-read cap left ids unlabelled; false = raw ids), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
72960
+ "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null value, a 0 id or an unresolved value (a picklist 0 is labelled when the picklist defines it); a names summary appears only when something was left unlabelled (the 20 uncached name-read cap, an unresolved picklist value, or a failed field-catalog read: names.catalogError); false = raw ids, ~30% smaller on a full tickets row), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
72961
72961
  "properties": [
72962
72962
  {
72963
72963
  "name": "filter",
@@ -73969,7 +73969,7 @@ var CAPABILITY_GROUPS = {
73969
73969
  "params": {
73970
73970
  "type": "object",
73971
73971
  "required": false,
73972
- "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null/0 or unresolved value; a names summary appears only when the 20 uncached name-read cap left ids unlabelled; false = raw ids), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
73972
+ "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null value, a 0 id or an unresolved value (a picklist 0 is labelled when the picklist defines it); a names summary appears only when something was left unlabelled (the 20 uncached name-read cap, an unresolved picklist value, or a failed field-catalog read: names.catalogError); false = raw ids, ~30% smaller on a full tickets row), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
73973
73973
  "properties": [
73974
73974
  {
73975
73975
  "name": "filter",
@@ -75009,7 +75009,7 @@ var CAPABILITY_GROUPS = {
75009
75009
  "params": {
75010
75010
  "type": "object",
75011
75011
  "required": false,
75012
- "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null/0 or unresolved value; a names summary appears only when the 20 uncached name-read cap left ids unlabelled; false = raw ids), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
75012
+ "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null value, a 0 id or an unresolved value (a picklist 0 is labelled when the picklist defines it); a names summary appears only when something was left unlabelled (the 20 uncached name-read cap, an unresolved picklist value, or a failed field-catalog read: names.catalogError); false = raw ids, ~30% smaller on a full tickets row), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
75013
75013
  "properties": [
75014
75014
  {
75015
75015
  "name": "filter",
@@ -75870,7 +75870,7 @@ var CAPABILITY_GROUPS = {
75870
75870
  "params": {
75871
75871
  "type": "object",
75872
75872
  "required": false,
75873
- "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null/0 or unresolved value; a names summary appears only when the 20 uncached name-read cap left ids unlabelled; false = raw ids), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
75873
+ "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null value, a 0 id or an unresolved value (a picklist 0 is labelled when the picklist defines it); a names summary appears only when something was left unlabelled (the 20 uncached name-read cap, an unresolved picklist value, or a failed field-catalog read: names.catalogError); false = raw ids, ~30% smaller on a full tickets row), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
75874
75874
  "properties": [
75875
75875
  {
75876
75876
  "name": "filter",
@@ -76643,7 +76643,7 @@ var CAPABILITY_GROUPS = {
76643
76643
  "params": {
76644
76644
  "type": "object",
76645
76645
  "required": false,
76646
- "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null/0 or unresolved value; a names summary appears only when the 20 uncached name-read cap left ids unlabelled; false = raw ids), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
76646
+ "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null value, a 0 id or an unresolved value (a picklist 0 is labelled when the picklist defines it); a names summary appears only when something was left unlabelled (the 20 uncached name-read cap, an unresolved picklist value, or a failed field-catalog read: names.catalogError); false = raw ids, ~30% smaller on a full tickets row), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
76647
76647
  "properties": [
76648
76648
  {
76649
76649
  "name": "filter",
@@ -77577,7 +77577,7 @@ var CAPABILITY_GROUPS = {
77577
77577
  "params": {
77578
77578
  "type": "object",
77579
77579
  "required": false,
77580
- "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null/0 or unresolved value; a names summary appears only when the 20 uncached name-read cap left ids unlabelled; false = raw ids), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
77580
+ "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null value, a 0 id or an unresolved value (a picklist 0 is labelled when the picklist defines it); a names summary appears only when something was left unlabelled (the 20 uncached name-read cap, an unresolved picklist value, or a failed field-catalog read: names.catalogError); false = raw ids, ~30% smaller on a full tickets row), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
77581
77581
  "properties": [
77582
77582
  {
77583
77583
  "name": "filter",
@@ -78335,7 +78335,7 @@ var CAPABILITY_GROUPS = {
78335
78335
  "params": {
78336
78336
  "type": "object",
78337
78337
  "required": false,
78338
- "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null/0 or unresolved value; a names summary appears only when the 20 uncached name-read cap left ids unlabelled; false = raw ids), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
78338
+ "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null value, a 0 id or an unresolved value (a picklist 0 is labelled when the picklist defines it); a names summary appears only when something was left unlabelled (the 20 uncached name-read cap, an unresolved picklist value, or a failed field-catalog read: names.catalogError); false = raw ids, ~30% smaller on a full tickets row), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
78339
78339
  "properties": [
78340
78340
  {
78341
78341
  "name": "filter",
@@ -79400,7 +79400,7 @@ var CAPABILITY_GROUPS = {
79400
79400
  "params": {
79401
79401
  "type": "object",
79402
79402
  "required": false,
79403
- "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null/0 or unresolved value; a names summary appears only when the 20 uncached name-read cap left ids unlabelled; false = raw ids), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
79403
+ "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null value, a 0 id or an unresolved value (a picklist 0 is labelled when the picklist defines it); a names summary appears only when something was left unlabelled (the 20 uncached name-read cap, an unresolved picklist value, or a failed field-catalog read: names.catalogError); false = raw ids, ~30% smaller on a full tickets row), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
79404
79404
  "properties": [
79405
79405
  {
79406
79406
  "name": "filter",
@@ -81114,7 +81114,7 @@ var CAPABILITY_GROUPS = {
81114
81114
  "params": {
81115
81115
  "type": "object",
81116
81116
  "required": false,
81117
- "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null/0 or unresolved value; a names summary appears only when the 20 uncached name-read cap left ids unlabelled; false = raw ids), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
81117
+ "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null value, a 0 id or an unresolved value (a picklist 0 is labelled when the picklist defines it); a names summary appears only when something was left unlabelled (the 20 uncached name-read cap, an unresolved picklist value, or a failed field-catalog read: names.catalogError); false = raw ids, ~30% smaller on a full tickets row), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
81118
81118
  "properties": [
81119
81119
  {
81120
81120
  "name": "filter",
@@ -82260,7 +82260,7 @@ var CAPABILITY_GROUPS = {
82260
82260
  "params": {
82261
82261
  "type": "object",
82262
82262
  "required": false,
82263
- "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null/0 or unresolved value; a names summary appears only when the 20 uncached name-read cap left ids unlabelled; false = raw ids), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
82263
+ "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null value, a 0 id or an unresolved value (a picklist 0 is labelled when the picklist defines it); a names summary appears only when something was left unlabelled (the 20 uncached name-read cap, an unresolved picklist value, or a failed field-catalog read: names.catalogError); false = raw ids, ~30% smaller on a full tickets row), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
82264
82264
  "properties": [
82265
82265
  {
82266
82266
  "name": "filter",
@@ -83858,7 +83858,7 @@ var CAPABILITY_GROUPS = {
83858
83858
  "params": {
83859
83859
  "type": "object",
83860
83860
  "required": false,
83861
- "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null/0 or unresolved value; a names summary appears only when the 20 uncached name-read cap left ids unlabelled; false = raw ids), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
83861
+ "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null value, a 0 id or an unresolved value (a picklist 0 is labelled when the picklist defines it); a names summary appears only when something was left unlabelled (the 20 uncached name-read cap, an unresolved picklist value, or a failed field-catalog read: names.catalogError); false = raw ids, ~30% smaller on a full tickets row), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
83862
83862
  "properties": [
83863
83863
  {
83864
83864
  "name": "filter",
@@ -85192,7 +85192,7 @@ var CAPABILITY_GROUPS = {
85192
85192
  "params": {
85193
85193
  "type": "object",
85194
85194
  "required": false,
85195
- "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null/0 or unresolved value; a names summary appears only when the 20 uncached name-read cap left ids unlabelled; false = raw ids), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
85195
+ "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null value, a 0 id or an unresolved value (a picklist 0 is labelled when the picklist defines it); a names summary appears only when something was left unlabelled (the 20 uncached name-read cap, an unresolved picklist value, or a failed field-catalog read: names.catalogError); false = raw ids, ~30% smaller on a full tickets row), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
85196
85196
  "properties": [
85197
85197
  {
85198
85198
  "name": "filter",
@@ -86039,7 +86039,7 @@ var CAPABILITY_GROUPS = {
86039
86039
  "params": {
86040
86040
  "type": "object",
86041
86041
  "required": false,
86042
- "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null/0 or unresolved value; a names summary appears only when the 20 uncached name-read cap left ids unlabelled; false = raw ids), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
86042
+ "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null value, a 0 id or an unresolved value (a picklist 0 is labelled when the picklist defines it); a names summary appears only when something was left unlabelled (the 20 uncached name-read cap, an unresolved picklist value, or a failed field-catalog read: names.catalogError); false = raw ids, ~30% smaller on a full tickets row), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
86043
86043
  "properties": [
86044
86044
  {
86045
86045
  "name": "filter",
@@ -86877,7 +86877,7 @@ var CAPABILITY_GROUPS = {
86877
86877
  "params": {
86878
86878
  "type": "object",
86879
86879
  "required": false,
86880
- "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null/0 or unresolved value; a names summary appears only when the 20 uncached name-read cap left ids unlabelled; false = raw ids), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
86880
+ "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null value, a 0 id or an unresolved value (a picklist 0 is labelled when the picklist defines it); a names summary appears only when something was left unlabelled (the 20 uncached name-read cap, an unresolved picklist value, or a failed field-catalog read: names.catalogError); false = raw ids, ~30% smaller on a full tickets row), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
86881
86881
  "properties": [
86882
86882
  {
86883
86883
  "name": "filter",
@@ -87934,7 +87934,7 @@ var CAPABILITY_GROUPS = {
87934
87934
  "params": {
87935
87935
  "type": "object",
87936
87936
  "required": false,
87937
- "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null/0 or unresolved value; a names summary appears only when the 20 uncached name-read cap left ids unlabelled; false = raw ids), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
87937
+ "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null value, a 0 id or an unresolved value (a picklist 0 is labelled when the picklist defines it); a names summary appears only when something was left unlabelled (the 20 uncached name-read cap, an unresolved picklist value, or a failed field-catalog read: names.catalogError); false = raw ids, ~30% smaller on a full tickets row), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
87938
87938
  "properties": [
87939
87939
  {
87940
87940
  "name": "filter",
@@ -88981,7 +88981,7 @@ var CAPABILITY_GROUPS = {
88981
88981
  "params": {
88982
88982
  "type": "object",
88983
88983
  "required": false,
88984
- "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null/0 or unresolved value; a names summary appears only when the 20 uncached name-read cap left ids unlabelled; false = raw ids), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
88984
+ "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null value, a 0 id or an unresolved value (a picklist 0 is labelled when the picklist defines it); a names summary appears only when something was left unlabelled (the 20 uncached name-read cap, an unresolved picklist value, or a failed field-catalog read: names.catalogError); false = raw ids, ~30% smaller on a full tickets row), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
88985
88985
  "properties": [
88986
88986
  {
88987
88987
  "name": "filter",
@@ -89806,7 +89806,7 @@ var CAPABILITY_GROUPS = {
89806
89806
  "params": {
89807
89807
  "type": "object",
89808
89808
  "required": false,
89809
- "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null/0 or unresolved value; a names summary appears only when the 20 uncached name-read cap left ids unlabelled; false = raw ids), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
89809
+ "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null value, a 0 id or an unresolved value (a picklist 0 is labelled when the picklist defines it); a names summary appears only when something was left unlabelled (the 20 uncached name-read cap, an unresolved picklist value, or a failed field-catalog read: names.catalogError); false = raw ids, ~30% smaller on a full tickets row), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
89810
89810
  "properties": [
89811
89811
  {
89812
89812
  "name": "filter",
@@ -90571,7 +90571,7 @@ var CAPABILITY_GROUPS = {
90571
90571
  "params": {
90572
90572
  "type": "object",
90573
90573
  "required": false,
90574
- "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null/0 or unresolved value; a names summary appears only when the 20 uncached name-read cap left ids unlabelled; false = raw ids), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
90574
+ "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null value, a 0 id or an unresolved value (a picklist 0 is labelled when the picklist defines it); a names summary appears only when something was left unlabelled (the 20 uncached name-read cap, an unresolved picklist value, or a failed field-catalog read: names.catalogError); false = raw ids, ~30% smaller on a full tickets row), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
90575
90575
  "properties": [
90576
90576
  {
90577
90577
  "name": "filter",
@@ -91445,7 +91445,7 @@ var CAPABILITY_GROUPS = {
91445
91445
  "params": {
91446
91446
  "type": "object",
91447
91447
  "required": false,
91448
- "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null/0 or unresolved value; a names summary appears only when the 20 uncached name-read cap left ids unlabelled; false = raw ids), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
91448
+ "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null value, a 0 id or an unresolved value (a picklist 0 is labelled when the picklist defines it); a names summary appears only when something was left unlabelled (the 20 uncached name-read cap, an unresolved picklist value, or a failed field-catalog read: names.catalogError); false = raw ids, ~30% smaller on a full tickets row), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
91449
91449
  "properties": [
91450
91450
  {
91451
91451
  "name": "filter",
@@ -92295,7 +92295,7 @@ var CAPABILITY_GROUPS = {
92295
92295
  "params": {
92296
92296
  "type": "object",
92297
92297
  "required": false,
92298
- "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null/0 or unresolved value; a names summary appears only when the 20 uncached name-read cap left ids unlabelled; false = raw ids), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
92298
+ "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null value, a 0 id or an unresolved value (a picklist 0 is labelled when the picklist defines it); a names summary appears only when something was left unlabelled (the 20 uncached name-read cap, an unresolved picklist value, or a failed field-catalog read: names.catalogError); false = raw ids, ~30% smaller on a full tickets row), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
92299
92299
  "properties": [
92300
92300
  {
92301
92301
  "name": "filter",
@@ -93133,7 +93133,7 @@ var CAPABILITY_GROUPS = {
93133
93133
  "params": {
93134
93134
  "type": "object",
93135
93135
  "required": false,
93136
- "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null/0 or unresolved value; a names summary appears only when the 20 uncached name-read cap left ids unlabelled; false = raw ids), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
93136
+ "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null value, a 0 id or an unresolved value (a picklist 0 is labelled when the picklist defines it); a names summary appears only when something was left unlabelled (the 20 uncached name-read cap, an unresolved picklist value, or a failed field-catalog read: names.catalogError); false = raw ids, ~30% smaller on a full tickets row), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
93137
93137
  "properties": [
93138
93138
  {
93139
93139
  "name": "filter",
@@ -93971,7 +93971,7 @@ var CAPABILITY_GROUPS = {
93971
93971
  "params": {
93972
93972
  "type": "object",
93973
93973
  "required": false,
93974
- "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null/0 or unresolved value; a names summary appears only when the 20 uncached name-read cap left ids unlabelled; false = raw ids), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
93974
+ "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null value, a 0 id or an unresolved value (a picklist 0 is labelled when the picklist defines it); a names summary appears only when something was left unlabelled (the 20 uncached name-read cap, an unresolved picklist value, or a failed field-catalog read: names.catalogError); false = raw ids, ~30% smaller on a full tickets row), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
93975
93975
  "properties": [
93976
93976
  {
93977
93977
  "name": "filter",
@@ -95531,7 +95531,7 @@ var CAPABILITY_GROUPS = {
95531
95531
  "params": {
95532
95532
  "type": "object",
95533
95533
  "required": false,
95534
- "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null/0 or unresolved value; a names summary appears only when the 20 uncached name-read cap left ids unlabelled; false = raw ids), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
95534
+ "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null value, a 0 id or an unresolved value (a picklist 0 is labelled when the picklist defines it); a names summary appears only when something was left unlabelled (the 20 uncached name-read cap, an unresolved picklist value, or a failed field-catalog read: names.catalogError); false = raw ids, ~30% smaller on a full tickets row), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
95535
95535
  "properties": [
95536
95536
  {
95537
95537
  "name": "filter",
@@ -96296,7 +96296,7 @@ var CAPABILITY_GROUPS = {
96296
96296
  "params": {
96297
96297
  "type": "object",
96298
96298
  "required": false,
96299
- "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null/0 or unresolved value; a names summary appears only when the 20 uncached name-read cap left ids unlabelled; false = raw ids), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
96299
+ "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null value, a 0 id or an unresolved value (a picklist 0 is labelled when the picklist defines it); a names summary appears only when something was left unlabelled (the 20 uncached name-read cap, an unresolved picklist value, or a failed field-catalog read: names.catalogError); false = raw ids, ~30% smaller on a full tickets row), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
96300
96300
  "properties": [
96301
96301
  {
96302
96302
  "name": "filter",
@@ -97056,7 +97056,7 @@ var CAPABILITY_GROUPS = {
97056
97056
  "params": {
97057
97057
  "type": "object",
97058
97058
  "required": false,
97059
- "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null/0 or unresolved value; a names summary appears only when the 20 uncached name-read cap left ids unlabelled; false = raw ids), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
97059
+ "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null value, a 0 id or an unresolved value (a picklist 0 is labelled when the picklist defines it); a names summary appears only when something was left unlabelled (the 20 uncached name-read cap, an unresolved picklist value, or a failed field-catalog read: names.catalogError); false = raw ids, ~30% smaller on a full tickets row), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
97060
97060
  "properties": [
97061
97061
  {
97062
97062
  "name": "filter",
@@ -97920,7 +97920,7 @@ var CAPABILITY_GROUPS = {
97920
97920
  "params": {
97921
97921
  "type": "object",
97922
97922
  "required": false,
97923
- "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null/0 or unresolved value; a names summary appears only when the 20 uncached name-read cap left ids unlabelled; false = raw ids), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
97923
+ "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null value, a 0 id or an unresolved value (a picklist 0 is labelled when the picklist defines it); a names summary appears only when something was left unlabelled (the 20 uncached name-read cap, an unresolved picklist value, or a failed field-catalog read: names.catalogError); false = raw ids, ~30% smaller on a full tickets row), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
97924
97924
  "properties": [
97925
97925
  {
97926
97926
  "name": "filter",
@@ -98770,7 +98770,7 @@ var CAPABILITY_GROUPS = {
98770
98770
  "params": {
98771
98771
  "type": "object",
98772
98772
  "required": false,
98773
- "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null/0 or unresolved value; a names summary appears only when the 20 uncached name-read cap left ids unlabelled; false = raw ids), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
98773
+ "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null value, a 0 id or an unresolved value (a picklist 0 is labelled when the picklist defines it); a names summary appears only when something was left unlabelled (the 20 uncached name-read cap, an unresolved picklist value, or a failed field-catalog read: names.catalogError); false = raw ids, ~30% smaller on a full tickets row), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
98774
98774
  "properties": [
98775
98775
  {
98776
98776
  "name": "filter",
@@ -100246,7 +100246,7 @@ var CAPABILITY_GROUPS = {
100246
100246
  "params": {
100247
100247
  "type": "object",
100248
100248
  "required": false,
100249
- "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null/0 or unresolved value; a names summary appears only when the 20 uncached name-read cap left ids unlabelled; false = raw ids), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
100249
+ "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null value, a 0 id or an unresolved value (a picklist 0 is labelled when the picklist defines it); a names summary appears only when something was left unlabelled (the 20 uncached name-read cap, an unresolved picklist value, or a failed field-catalog read: names.catalogError); false = raw ids, ~30% smaller on a full tickets row), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
100250
100250
  "properties": [
100251
100251
  {
100252
100252
  "name": "filter",
@@ -102518,7 +102518,7 @@ var CAPABILITY_GROUPS = {
102518
102518
  "params": {
102519
102519
  "type": "object",
102520
102520
  "required": false,
102521
- "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null/0 or unresolved value; a names summary appears only when the 20 uncached name-read cap left ids unlabelled; false = raw ids), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
102521
+ "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null value, a 0 id or an unresolved value (a picklist 0 is labelled when the picklist defines it); a names summary appears only when something was left unlabelled (the 20 uncached name-read cap, an unresolved picklist value, or a failed field-catalog read: names.catalogError); false = raw ids, ~30% smaller on a full tickets row), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
102522
102522
  "properties": [
102523
102523
  {
102524
102524
  "name": "filter",
@@ -103875,7 +103875,7 @@ var CAPABILITY_GROUPS = {
103875
103875
  "params": {
103876
103876
  "type": "object",
103877
103877
  "required": false,
103878
- "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null/0 or unresolved value; a names summary appears only when the 20 uncached name-read cap left ids unlabelled; false = raw ids), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
103878
+ "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null value, a 0 id or an unresolved value (a picklist 0 is labelled when the picklist defines it); a names summary appears only when something was left unlabelled (the 20 uncached name-read cap, an unresolved picklist value, or a failed field-catalog read: names.catalogError); false = raw ids, ~30% smaller on a full tickets row), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
103879
103879
  "properties": [
103880
103880
  {
103881
103881
  "name": "filter",
@@ -104998,7 +104998,7 @@ var CAPABILITY_GROUPS = {
104998
104998
  "params": {
104999
104999
  "type": "object",
105000
105000
  "required": false,
105001
- "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null/0 or unresolved value; a names summary appears only when the 20 uncached name-read cap left ids unlabelled; false = raw ids), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
105001
+ "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null value, a 0 id or an unresolved value (a picklist 0 is labelled when the picklist defines it); a names summary appears only when something was left unlabelled (the 20 uncached name-read cap, an unresolved picklist value, or a failed field-catalog read: names.catalogError); false = raw ids, ~30% smaller on a full tickets row), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
105002
105002
  "properties": [
105003
105003
  {
105004
105004
  "name": "filter",
@@ -105769,7 +105769,7 @@ var CAPABILITY_GROUPS = {
105769
105769
  "params": {
105770
105770
  "type": "object",
105771
105771
  "required": false,
105772
- "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null/0 or unresolved value; a names summary appears only when the 20 uncached name-read cap left ids unlabelled; false = raw ids), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
105772
+ "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null value, a 0 id or an unresolved value (a picklist 0 is labelled when the picklist defines it); a names summary appears only when something was left unlabelled (the 20 uncached name-read cap, an unresolved picklist value, or a failed field-catalog read: names.catalogError); false = raw ids, ~30% smaller on a full tickets row), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
105773
105773
  "properties": [
105774
105774
  {
105775
105775
  "name": "filter",
@@ -106846,7 +106846,7 @@ var CAPABILITY_GROUPS = {
106846
106846
  "params": {
106847
106847
  "type": "object",
106848
106848
  "required": false,
106849
- "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null/0 or unresolved value; a names summary appears only when the 20 uncached name-read cap left ids unlabelled; false = raw ids), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
106849
+ "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null value, a 0 id or an unresolved value (a picklist 0 is labelled when the picklist defines it); a names summary appears only when something was left unlabelled (the 20 uncached name-read cap, an unresolved picklist value, or a failed field-catalog read: names.catalogError); false = raw ids, ~30% smaller on a full tickets row), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
106850
106850
  "properties": [
106851
106851
  {
106852
106852
  "name": "filter",
@@ -107833,7 +107833,7 @@ var CAPABILITY_GROUPS = {
107833
107833
  "params": {
107834
107834
  "type": "object",
107835
107835
  "required": false,
107836
- "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null/0 or unresolved value; a names summary appears only when the 20 uncached name-read cap left ids unlabelled; false = raw ids), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
107836
+ "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null value, a 0 id or an unresolved value (a picklist 0 is labelled when the picklist defines it); a names summary appears only when something was left unlabelled (the 20 uncached name-read cap, an unresolved picklist value, or a failed field-catalog read: names.catalogError); false = raw ids, ~30% smaller on a full tickets row), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
107837
107837
  "properties": [
107838
107838
  {
107839
107839
  "name": "filter",
@@ -108965,7 +108965,7 @@ var CAPABILITY_GROUPS = {
108965
108965
  "params": {
108966
108966
  "type": "object",
108967
108967
  "required": false,
108968
- "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null/0 or unresolved value; a names summary appears only when the 20 uncached name-read cap left ids unlabelled; false = raw ids), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
108968
+ "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null value, a 0 id or an unresolved value (a picklist 0 is labelled when the picklist defines it); a names summary appears only when something was left unlabelled (the 20 uncached name-read cap, an unresolved picklist value, or a failed field-catalog read: names.catalogError); false = raw ids, ~30% smaller on a full tickets row), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
108969
108969
  "properties": [
108970
108970
  {
108971
108971
  "name": "filter",
@@ -110118,7 +110118,7 @@ var CAPABILITY_GROUPS = {
110118
110118
  "params": {
110119
110119
  "type": "object",
110120
110120
  "required": false,
110121
- "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null/0 or unresolved value; a names summary appears only when the 20 uncached name-read cap left ids unlabelled; false = raw ids), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
110121
+ "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null value, a 0 id or an unresolved value (a picklist 0 is labelled when the picklist defines it); a names summary appears only when something was left unlabelled (the 20 uncached name-read cap, an unresolved picklist value, or a failed field-catalog read: names.catalogError); false = raw ids, ~30% smaller on a full tickets row), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
110122
110122
  "properties": [
110123
110123
  {
110124
110124
  "name": "filter",
@@ -111067,7 +111067,7 @@ var CAPABILITY_GROUPS = {
111067
111067
  "params": {
111068
111068
  "type": "object",
111069
111069
  "required": false,
111070
- "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null/0 or unresolved value; a names summary appears only when the 20 uncached name-read cap left ids unlabelled; false = raw ids), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
111070
+ "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null value, a 0 id or an unresolved value (a picklist 0 is labelled when the picklist defines it); a names summary appears only when something was left unlabelled (the 20 uncached name-read cap, an unresolved picklist value, or a failed field-catalog read: names.catalogError); false = raw ids, ~30% smaller on a full tickets row), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
111071
111071
  "properties": [
111072
111072
  {
111073
111073
  "name": "filter",
@@ -111927,7 +111927,7 @@ var CAPABILITY_GROUPS = {
111927
111927
  "params": {
111928
111928
  "type": "object",
111929
111929
  "required": false,
111930
- "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null/0 or unresolved value; a names summary appears only when the 20 uncached name-read cap left ids unlabelled; false = raw ids), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
111930
+ "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null value, a 0 id or an unresolved value (a picklist 0 is labelled when the picklist defines it); a names summary appears only when something was left unlabelled (the 20 uncached name-read cap, an unresolved picklist value, or a failed field-catalog read: names.catalogError); false = raw ids, ~30% smaller on a full tickets row), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
111931
111931
  "properties": [
111932
111932
  {
111933
111933
  "name": "filter",
@@ -113134,7 +113134,7 @@ var CAPABILITY_GROUPS = {
113134
113134
  "params": {
113135
113135
  "type": "object",
113136
113136
  "required": false,
113137
- "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null/0 or unresolved value; a names summary appears only when the 20 uncached name-read cap left ids unlabelled; false = raw ids), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
113137
+ "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null value, a 0 id or an unresolved value (a picklist 0 is labelled when the picklist defines it); a names summary appears only when something was left unlabelled (the 20 uncached name-read cap, an unresolved picklist value, or a failed field-catalog read: names.catalogError); false = raw ids, ~30% smaller on a full tickets row), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
113138
113138
  "properties": [
113139
113139
  {
113140
113140
  "name": "filter",
@@ -114126,7 +114126,7 @@ var CAPABILITY_GROUPS = {
114126
114126
  "params": {
114127
114127
  "type": "object",
114128
114128
  "required": false,
114129
- "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null/0 or unresolved value; a names summary appears only when the 20 uncached name-read cap left ids unlabelled; false = raw ids), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
114129
+ "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null value, a 0 id or an unresolved value (a picklist 0 is labelled when the picklist defines it); a names summary appears only when something was left unlabelled (the 20 uncached name-read cap, an unresolved picklist value, or a failed field-catalog read: names.catalogError); false = raw ids, ~30% smaller on a full tickets row), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
114130
114130
  "properties": [
114131
114131
  {
114132
114132
  "name": "filter",
@@ -115017,7 +115017,7 @@ var CAPABILITY_GROUPS = {
115017
115017
  "params": {
115018
115018
  "type": "object",
115019
115019
  "required": false,
115020
- "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null/0 or unresolved value; a names summary appears only when the 20 uncached name-read cap left ids unlabelled; false = raw ids), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
115020
+ "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null value, a 0 id or an unresolved value (a picklist 0 is labelled when the picklist defines it); a names summary appears only when something was left unlabelled (the 20 uncached name-read cap, an unresolved picklist value, or a failed field-catalog read: names.catalogError); false = raw ids, ~30% smaller on a full tickets row), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
115021
115021
  "properties": [
115022
115022
  {
115023
115023
  "name": "filter",
@@ -116235,7 +116235,7 @@ var CAPABILITY_GROUPS = {
116235
116235
  "params": {
116236
116236
  "type": "object",
116237
116237
  "required": false,
116238
- "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null/0 or unresolved value; a names summary appears only when the 20 uncached name-read cap left ids unlabelled; false = raw ids), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
116238
+ "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null value, a 0 id or an unresolved value (a picklist 0 is labelled when the picklist defines it); a names summary appears only when something was left unlabelled (the 20 uncached name-read cap, an unresolved picklist value, or a failed field-catalog read: names.catalogError); false = raw ids, ~30% smaller on a full tickets row), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
116239
116239
  "properties": [
116240
116240
  {
116241
116241
  "name": "filter",
@@ -117155,7 +117155,7 @@ var CAPABILITY_GROUPS = {
117155
117155
  "params": {
117156
117156
  "type": "object",
117157
117157
  "required": false,
117158
- "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null/0 or unresolved value; a names summary appears only when the 20 uncached name-read cap left ids unlabelled; false = raw ids), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
117158
+ "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null value, a 0 id or an unresolved value (a picklist 0 is labelled when the picklist defines it); a names summary appears only when something was left unlabelled (the 20 uncached name-read cap, an unresolved picklist value, or a failed field-catalog read: names.catalogError); false = raw ids, ~30% smaller on a full tickets row), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
117159
117159
  "properties": [
117160
117160
  {
117161
117161
  "name": "filter",
@@ -118087,7 +118087,7 @@ var CAPABILITY_GROUPS = {
118087
118087
  "params": {
118088
118088
  "type": "object",
118089
118089
  "required": false,
118090
- "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null/0 or unresolved value; a names summary appears only when the 20 uncached name-read cap left ids unlabelled; false = raw ids), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
118090
+ "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null value, a 0 id or an unresolved value (a picklist 0 is labelled when the picklist defines it); a names summary appears only when something was left unlabelled (the 20 uncached name-read cap, an unresolved picklist value, or a failed field-catalog read: names.catalogError); false = raw ids, ~30% smaller on a full tickets row), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
118091
118091
  "properties": [
118092
118092
  {
118093
118093
  "name": "filter",
@@ -118939,7 +118939,7 @@ var CAPABILITY_GROUPS = {
118939
118939
  "params": {
118940
118940
  "type": "object",
118941
118941
  "required": false,
118942
- "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null/0 or unresolved value; a names summary appears only when the 20 uncached name-read cap left ids unlabelled; false = raw ids), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
118942
+ "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null value, a 0 id or an unresolved value (a picklist 0 is labelled when the picklist defines it); a names summary appears only when something was left unlabelled (the 20 uncached name-read cap, an unresolved picklist value, or a failed field-catalog read: names.catalogError); false = raw ids, ~30% smaller on a full tickets row), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
118943
118943
  "properties": [
118944
118944
  {
118945
118945
  "name": "filter",
@@ -120005,7 +120005,7 @@ var CAPABILITY_GROUPS = {
120005
120005
  "params": {
120006
120006
  "type": "object",
120007
120007
  "required": false,
120008
- "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null/0 or unresolved value; a names summary appears only when the 20 uncached name-read cap left ids unlabelled; false = raw ids), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
120008
+ "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null value, a 0 id or an unresolved value (a picklist 0 is labelled when the picklist defines it); a names summary appears only when something was left unlabelled (the 20 uncached name-read cap, an unresolved picklist value, or a failed field-catalog read: names.catalogError); false = raw ids, ~30% smaller on a full tickets row), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
120009
120009
  "properties": [
120010
120010
  {
120011
120011
  "name": "filter",
@@ -121083,7 +121083,7 @@ var CAPABILITY_GROUPS = {
121083
121083
  "params": {
121084
121084
  "type": "object",
121085
121085
  "required": false,
121086
- "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null/0 or unresolved value; a names summary appears only when the 20 uncached name-read cap left ids unlabelled; false = raw ids), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
121086
+ "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null value, a 0 id or an unresolved value (a picklist 0 is labelled when the picklist defines it); a names summary appears only when something was left unlabelled (the 20 uncached name-read cap, an unresolved picklist value, or a failed field-catalog read: names.catalogError); false = raw ids, ~30% smaller on a full tickets row), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
121087
121087
  "properties": [
121088
121088
  {
121089
121089
  "name": "filter",
@@ -122467,7 +122467,7 @@ var CAPABILITY_GROUPS = {
122467
122467
  "params": {
122468
122468
  "type": "object",
122469
122469
  "required": false,
122470
- "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null/0 or unresolved value; a names summary appears only when the 20 uncached name-read cap left ids unlabelled; false = raw ids), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
122470
+ "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null value, a 0 id or an unresolved value (a picklist 0 is labelled when the picklist defines it); a names summary appears only when something was left unlabelled (the 20 uncached name-read cap, an unresolved picklist value, or a failed field-catalog read: names.catalogError); false = raw ids, ~30% smaller on a full tickets row), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
122471
122471
  "properties": [
122472
122472
  {
122473
122473
  "name": "filter",
@@ -123401,7 +123401,7 @@ var CAPABILITY_GROUPS = {
123401
123401
  "params": {
123402
123402
  "type": "object",
123403
123403
  "required": false,
123404
- "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null/0 or unresolved value; a names summary appears only when the 20 uncached name-read cap left ids unlabelled; false = raw ids), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
123404
+ "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null value, a 0 id or an unresolved value (a picklist 0 is labelled when the picklist defines it); a names summary appears only when something was left unlabelled (the 20 uncached name-read cap, an unresolved picklist value, or a failed field-catalog read: names.catalogError); false = raw ids, ~30% smaller on a full tickets row), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
123405
123405
  "properties": [
123406
123406
  {
123407
123407
  "name": "filter",
@@ -124247,7 +124247,7 @@ var CAPABILITY_GROUPS = {
124247
124247
  "params": {
124248
124248
  "type": "object",
124249
124249
  "required": false,
124250
- "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null/0 or unresolved value; a names summary appears only when the 20 uncached name-read cap left ids unlabelled; false = raw ids), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
124250
+ "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null value, a 0 id or an unresolved value (a picklist 0 is labelled when the picklist defines it); a names summary appears only when something was left unlabelled (the 20 uncached name-read cap, an unresolved picklist value, or a failed field-catalog read: names.catalogError); false = raw ids, ~30% smaller on a full tickets row), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
124251
124251
  "properties": [
124252
124252
  {
124253
124253
  "name": "filter",
@@ -126642,7 +126642,7 @@ var CAPABILITY_GROUPS = {
126642
126642
  "params": {
126643
126643
  "type": "object",
126644
126644
  "required": false,
126645
- "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null/0 or unresolved value; a names summary appears only when the 20 uncached name-read cap left ids unlabelled; false = raw ids), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
126645
+ "description": `The query params object (CLOSED \u2014 unknown keys are refused pre-request with a typed error naming the key + the valid keys): { filter?: FilterCondition[], limit?: number (total cap, default 500, max 2500 \u2014 NOT a page size), latest?: number (1-2500; the N highest-id rows \u2014 the vendor has no sort; count-probe + id-threshold semantics, see docs/API.md \xA74; the same-process latest-walk count probes are briefly cached per client \u2014 a 30 s TTL, cleared on a write through this client (a probe in flight across the write is discarded by the cache's invalidation epoch \u2014 issue #139); the plain count op and aggregate stay fresh \u2014 issue #127; limit and latest may coexist only when limit >= latest), noteChars?: number (integer >= 1; opt-in per-field char cap on the untrusted-class free-text fields of the resource (notes/descriptions/UDF prose): each capped value = the first N chars + the explicit marker \u2026 [+N chars truncated] (N = chars removed), applied at result-build BEFORE the server-side untrusted wrapper; absent = the raw, untruncated result), fieldsPreset?: string (a closed includeFields preset name \u2014 v1: "billing_join" (billing_items): resolved to its field list pre-walk, the vendor column selection on the IncludeFields wire; mutually exclusive with an explicit includeFields; docs/API.md \xA711.23), includeFields?: string[], fieldCheck?: boolean (default true: every includeFields NAME and every filter condition FIELD NAME is checked pre-request against the live field set (the vendored spec when that read faults \u2014 the resource's plan-pinned live-only fields, metadata.liveOnlyFields, are exempt from the vendored refusal: the live entity carries them and the vendor model omits them (e.g. time_entries postedDate/postedOnTime) \u2014 a truly unknown name is still refused); a refusal costs zero QUERY wire \u2014 the query POST and the count probe that anchors latest are never issued, a COLD fieldCache performs one authority metadata GET first (zero on a warm one); the one udf:true condition per query is exempt (a tenant UDF name is absent from the vendored spec by definition); false disables both name checks, never the shape/grammar checks; the count verb's bag is name-checked the same way (issue #140) and carries the same fieldCheck opt-out (issue #145); a direct queryBounded/queryAll call is not checked (no bag contract there)), names?: boolean (default true \u2014 rows gain label siblings: picklist <field>Label (statusLabel), <fk>Name for companyID/contractID/ticketID/roleID/billingCodeID/*ResourceID (contractIDName, assignedResourceIDName) \u2014 null, never missing, when the field is keyed with a null value, a 0 id or an unresolved value (a picklist 0 is labelled when the picklist defines it); a names summary appears only when something was left unlabelled (the 20 uncached name-read cap, an unresolved picklist value, or a failed field-catalog read: names.catalogError); false = raw ids, ~30% smaller on a full tickets row), via?: "post" | "get" (vendor GET has a 2048-char cap) }. Filter grammar: 13 operators (eq, noteq, gt, gte, lt, lte, beginsWith, endsWith, contains, exist, notExist, in, notIn; in/notIn: array or "1,2,3") + and/or grouping (no not-group); field names in vendor API casing (via operations.fieldCatalog); caps: 500 OR-conditions / 1 UDF / 8000 chars.`,
126646
126646
  "properties": [
126647
126647
  {
126648
126648
  "name": "filter",
@@ -127743,7 +127743,7 @@ var CAPABILITY_GROUPS = {
127743
127743
  },
127744
127744
  "operations": {
127745
127745
  "planHash": "9bb87de7bcbda60f6c44955dba52b8e61e9c5547750ea8acacfcb6f261d7734f",
127746
- "builtAt": "2026-10-29T10:49:12.432Z",
127746
+ "builtAt": "2026-10-29T20:28:49.330Z",
127747
127747
  "records": [
127748
127748
  {
127749
127749
  "id": "operations.aggregate",
@@ -127770,7 +127770,7 @@ var CAPABILITY_GROUPS = {
127770
127770
  "opts": {
127771
127771
  "type": "object",
127772
127772
  "required": false,
127773
- "description": "AggregateOptions \u2014 { groupBy?: string[] (vendor field names), sum?: string[] (numeric vendor fields), top?: number (default 25, clamped 1..100 \u2014 the group-row cap), limit?: number (total-record cap for the walk modes, default 2500 = the house BOUNDED_QUERY_MAX_LIMIT \u2014 the hard max), names?: boolean (default true \u2014 group keys gain label siblings, e.g. key.ticketIDName, key.statusLabel \u2014 null, never missing, when the field is keyed with a null/0 or unresolved value; false = raw ids) }. NEITHER groupBy nor sum = COUNT mode (one vendor /query/count call \u2014 no walk; a 0 on a plan-pinned blind surface is marked blind: true with the S12-C sentinel \u2014 never a silent absence; a FILTERED 0 on an unfiltered-blind surface is a true zero). The walk modes fold client-side: hasMore/totalScanned carry the truncation honesty (no silent partial sums) and a mid-walk RATE_LIMITED propagates (the partial fold is discarded).",
127773
+ "description": "AggregateOptions \u2014 { groupBy?: string[] (vendor field names), sum?: string[] (numeric vendor fields), top?: number (default 25, clamped 1..100 \u2014 the group-row cap), limit?: number (total-record cap for the walk modes, default 2500 = the house BOUNDED_QUERY_MAX_LIMIT \u2014 the hard max), names?: boolean (default true \u2014 group keys gain label siblings, e.g. key.ticketIDName, key.statusLabel \u2014 null, never missing, when the field is keyed with a null value, a 0 id or an unresolved value (a picklist 0 is labelled when the picklist defines it); false = raw ids) }. NEITHER groupBy nor sum = COUNT mode (one vendor /query/count call \u2014 no walk; a 0 on a plan-pinned blind surface is marked blind: true with the S12-C sentinel \u2014 never a silent absence; a FILTERED 0 on an unfiltered-blind surface is a true zero). The walk modes fold client-side: hasMore/totalScanned carry the truncation honesty (no silent partial sums) and a mid-walk RATE_LIMITED propagates (the partial fold is discarded).",
127774
127774
  "properties": [
127775
127775
  {
127776
127776
  "name": "groupBy",
@@ -128016,7 +128016,7 @@ var CAPABILITY_GROUPS = {
128016
128016
  "staleCheck": {
128017
128017
  "planHash": "9bb87de7bcbda60f6c44955dba52b8e61e9c5547750ea8acacfcb6f261d7734f",
128018
128018
  "sourceFile": "src/operations/index.ts",
128019
- "sourceHash": "b4d6ab1e99e967439ce3d56028984701796de5ea2c5c941bda4897f6b14d1c19"
128019
+ "sourceHash": "66b9818ed94330f4ef2bef2698b1902b81cf1b0f3dc325e2a53b3204e4a6463e"
128020
128020
  }
128021
128021
  },
128022
128022
  {
@@ -128135,7 +128135,7 @@ var CAPABILITY_GROUPS = {
128135
128135
  "staleCheck": {
128136
128136
  "planHash": "9bb87de7bcbda60f6c44955dba52b8e61e9c5547750ea8acacfcb6f261d7734f",
128137
128137
  "sourceFile": "src/operations/index.ts",
128138
- "sourceHash": "b4d6ab1e99e967439ce3d56028984701796de5ea2c5c941bda4897f6b14d1c19"
128138
+ "sourceHash": "66b9818ed94330f4ef2bef2698b1902b81cf1b0f3dc325e2a53b3204e4a6463e"
128139
128139
  }
128140
128140
  },
128141
128141
  {
@@ -128258,7 +128258,7 @@ var CAPABILITY_GROUPS = {
128258
128258
  "staleCheck": {
128259
128259
  "planHash": "9bb87de7bcbda60f6c44955dba52b8e61e9c5547750ea8acacfcb6f261d7734f",
128260
128260
  "sourceFile": "src/operations/index.ts",
128261
- "sourceHash": "b4d6ab1e99e967439ce3d56028984701796de5ea2c5c941bda4897f6b14d1c19"
128261
+ "sourceHash": "66b9818ed94330f4ef2bef2698b1902b81cf1b0f3dc325e2a53b3204e4a6463e"
128262
128262
  }
128263
128263
  },
128264
128264
  {
@@ -128391,7 +128391,7 @@ var CAPABILITY_GROUPS = {
128391
128391
  "staleCheck": {
128392
128392
  "planHash": "9bb87de7bcbda60f6c44955dba52b8e61e9c5547750ea8acacfcb6f261d7734f",
128393
128393
  "sourceFile": "src/operations/index.ts",
128394
- "sourceHash": "b4d6ab1e99e967439ce3d56028984701796de5ea2c5c941bda4897f6b14d1c19"
128394
+ "sourceHash": "66b9818ed94330f4ef2bef2698b1902b81cf1b0f3dc325e2a53b3204e4a6463e"
128395
128395
  }
128396
128396
  },
128397
128397
  {
@@ -128520,7 +128520,7 @@ var CAPABILITY_GROUPS = {
128520
128520
  "staleCheck": {
128521
128521
  "planHash": "9bb87de7bcbda60f6c44955dba52b8e61e9c5547750ea8acacfcb6f261d7734f",
128522
128522
  "sourceFile": "src/operations/index.ts",
128523
- "sourceHash": "b4d6ab1e99e967439ce3d56028984701796de5ea2c5c941bda4897f6b14d1c19"
128523
+ "sourceHash": "66b9818ed94330f4ef2bef2698b1902b81cf1b0f3dc325e2a53b3204e4a6463e"
128524
128524
  }
128525
128525
  },
128526
128526
  {
@@ -128543,7 +128543,7 @@ var CAPABILITY_GROUPS = {
128543
128543
  "opts": {
128544
128544
  "type": "object",
128545
128545
  "required": false,
128546
- "description": "FetchManyOptions \u2014 { maxItems?: number (may lower the 20-item cap, never raise it), names?: boolean (default true \u2014 found records gain label siblings, e.g. statusLabel, contractIDName \u2014 null, never missing, when the field is keyed with a null/0 or unresolved value; false = raw records), liveFields?: boolean (opt-in live field validation \u2014 requested fields are validated against the tenant's LIVE entity field metadata (the cached metadata channel: a warm fieldCache costs zero wire; a cold run is one entityInformation/fields GET per distinct resource in the batch); when a resource's metadata is unavailable the validation falls back to the vendored-spec field set for that resource; when available the live set is authoritative \u2014 a field it lacks is refused even if the spec lists it, and a live field the spec lacks (e.g. time_entries postedDate) is accepted) }",
128546
+ "description": "FetchManyOptions \u2014 { maxItems?: number (may lower the 20-item cap, never raise it), names?: boolean (default true \u2014 found records gain label siblings, e.g. statusLabel, contractIDName \u2014 null, never missing, when the field is keyed with a null value, a 0 id or an unresolved value (a picklist 0 is labelled when the picklist defines it); false = raw records), liveFields?: boolean (opt-in live field validation \u2014 requested fields are validated against the tenant's LIVE entity field metadata (the cached metadata channel: a warm fieldCache costs zero wire; a cold run is one entityInformation/fields GET per distinct resource in the batch); when a resource's metadata is unavailable the validation falls back to the vendored-spec field set for that resource; when available the live set is authoritative \u2014 a field it lacks is refused even if the spec lists it, and a live field the spec lacks (e.g. time_entries postedDate) is accepted) }",
128547
128547
  "properties": [
128548
128548
  {
128549
128549
  "name": "maxItems",
@@ -128712,7 +128712,7 @@ var CAPABILITY_GROUPS = {
128712
128712
  "staleCheck": {
128713
128713
  "planHash": "9bb87de7bcbda60f6c44955dba52b8e61e9c5547750ea8acacfcb6f261d7734f",
128714
128714
  "sourceFile": "src/operations/index.ts",
128715
- "sourceHash": "b4d6ab1e99e967439ce3d56028984701796de5ea2c5c941bda4897f6b14d1c19"
128715
+ "sourceHash": "66b9818ed94330f4ef2bef2698b1902b81cf1b0f3dc325e2a53b3204e4a6463e"
128716
128716
  }
128717
128717
  },
128718
128718
  {
@@ -128952,7 +128952,7 @@ var CAPABILITY_GROUPS = {
128952
128952
  "staleCheck": {
128953
128953
  "planHash": "9bb87de7bcbda60f6c44955dba52b8e61e9c5547750ea8acacfcb6f261d7734f",
128954
128954
  "sourceFile": "src/operations/index.ts",
128955
- "sourceHash": "b4d6ab1e99e967439ce3d56028984701796de5ea2c5c941bda4897f6b14d1c19"
128955
+ "sourceHash": "66b9818ed94330f4ef2bef2698b1902b81cf1b0f3dc325e2a53b3204e4a6463e"
128956
128956
  }
128957
128957
  },
128958
128958
  {
@@ -129087,7 +129087,7 @@ var CAPABILITY_GROUPS = {
129087
129087
  "staleCheck": {
129088
129088
  "planHash": "9bb87de7bcbda60f6c44955dba52b8e61e9c5547750ea8acacfcb6f261d7734f",
129089
129089
  "sourceFile": "src/operations/index.ts",
129090
- "sourceHash": "b4d6ab1e99e967439ce3d56028984701796de5ea2c5c941bda4897f6b14d1c19"
129090
+ "sourceHash": "66b9818ed94330f4ef2bef2698b1902b81cf1b0f3dc325e2a53b3204e4a6463e"
129091
129091
  }
129092
129092
  },
129093
129093
  {
@@ -129255,7 +129255,7 @@ var CAPABILITY_GROUPS = {
129255
129255
  "staleCheck": {
129256
129256
  "planHash": "9bb87de7bcbda60f6c44955dba52b8e61e9c5547750ea8acacfcb6f261d7734f",
129257
129257
  "sourceFile": "src/operations/index.ts",
129258
- "sourceHash": "b4d6ab1e99e967439ce3d56028984701796de5ea2c5c941bda4897f6b14d1c19"
129258
+ "sourceHash": "66b9818ed94330f4ef2bef2698b1902b81cf1b0f3dc325e2a53b3204e4a6463e"
129259
129259
  }
129260
129260
  },
129261
129261
  {
@@ -129362,7 +129362,7 @@ var CAPABILITY_GROUPS = {
129362
129362
  "staleCheck": {
129363
129363
  "planHash": "9bb87de7bcbda60f6c44955dba52b8e61e9c5547750ea8acacfcb6f261d7734f",
129364
129364
  "sourceFile": "src/operations/index.ts",
129365
- "sourceHash": "b4d6ab1e99e967439ce3d56028984701796de5ea2c5c941bda4897f6b14d1c19"
129365
+ "sourceHash": "66b9818ed94330f4ef2bef2698b1902b81cf1b0f3dc325e2a53b3204e4a6463e"
129366
129366
  }
129367
129367
  },
129368
129368
  {
@@ -129466,7 +129466,7 @@ var CAPABILITY_GROUPS = {
129466
129466
  "staleCheck": {
129467
129467
  "planHash": "9bb87de7bcbda60f6c44955dba52b8e61e9c5547750ea8acacfcb6f261d7734f",
129468
129468
  "sourceFile": "src/operations/index.ts",
129469
- "sourceHash": "b4d6ab1e99e967439ce3d56028984701796de5ea2c5c941bda4897f6b14d1c19"
129469
+ "sourceHash": "66b9818ed94330f4ef2bef2698b1902b81cf1b0f3dc325e2a53b3204e4a6463e"
129470
129470
  }
129471
129471
  },
129472
129472
  {
@@ -129834,7 +129834,7 @@ var CAPABILITY_GROUPS = {
129834
129834
  "staleCheck": {
129835
129835
  "planHash": "9bb87de7bcbda60f6c44955dba52b8e61e9c5547750ea8acacfcb6f261d7734f",
129836
129836
  "sourceFile": "src/operations/index.ts",
129837
- "sourceHash": "b4d6ab1e99e967439ce3d56028984701796de5ea2c5c941bda4897f6b14d1c19"
129837
+ "sourceHash": "66b9818ed94330f4ef2bef2698b1902b81cf1b0f3dc325e2a53b3204e4a6463e"
129838
129838
  }
129839
129839
  },
129840
129840
  {
@@ -129948,7 +129948,7 @@ var CAPABILITY_GROUPS = {
129948
129948
  "staleCheck": {
129949
129949
  "planHash": "9bb87de7bcbda60f6c44955dba52b8e61e9c5547750ea8acacfcb6f261d7734f",
129950
129950
  "sourceFile": "src/operations/index.ts",
129951
- "sourceHash": "b4d6ab1e99e967439ce3d56028984701796de5ea2c5c941bda4897f6b14d1c19"
129951
+ "sourceHash": "66b9818ed94330f4ef2bef2698b1902b81cf1b0f3dc325e2a53b3204e4a6463e"
129952
129952
  }
129953
129953
  },
129954
129954
  {
@@ -130065,7 +130065,7 @@ var CAPABILITY_GROUPS = {
130065
130065
  "staleCheck": {
130066
130066
  "planHash": "9bb87de7bcbda60f6c44955dba52b8e61e9c5547750ea8acacfcb6f261d7734f",
130067
130067
  "sourceFile": "src/operations/index.ts",
130068
- "sourceHash": "b4d6ab1e99e967439ce3d56028984701796de5ea2c5c941bda4897f6b14d1c19"
130068
+ "sourceHash": "66b9818ed94330f4ef2bef2698b1902b81cf1b0f3dc325e2a53b3204e4a6463e"
130069
130069
  }
130070
130070
  }
130071
130071
  ]