@epilot/entity-client 7.2.1 → 7.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/dist/definition.js +1 -1
- package/dist/openapi-runtime.json +55 -0
- package/dist/openapi.d.ts +1364 -173
- package/dist/openapi.json +605 -11
- package/package.json +1 -1
package/dist/openapi.json
CHANGED
|
@@ -1419,6 +1419,9 @@
|
|
|
1419
1419
|
{
|
|
1420
1420
|
"$ref": "#/components/parameters/HydrateEntitiesQueryParam"
|
|
1421
1421
|
},
|
|
1422
|
+
{
|
|
1423
|
+
"$ref": "#/components/parameters/AnonymizeQueryParam"
|
|
1424
|
+
},
|
|
1422
1425
|
{
|
|
1423
1426
|
"in": "query",
|
|
1424
1427
|
"name": "fields",
|
|
@@ -1568,6 +1571,9 @@
|
|
|
1568
1571
|
},
|
|
1569
1572
|
{
|
|
1570
1573
|
"$ref": "#/components/parameters/HydrateEntitiesQueryParam"
|
|
1574
|
+
},
|
|
1575
|
+
{
|
|
1576
|
+
"$ref": "#/components/parameters/AnonymizeQueryParam"
|
|
1571
1577
|
}
|
|
1572
1578
|
],
|
|
1573
1579
|
"responses": {
|
|
@@ -1776,6 +1782,9 @@
|
|
|
1776
1782
|
"Entities"
|
|
1777
1783
|
],
|
|
1778
1784
|
"parameters": [
|
|
1785
|
+
{
|
|
1786
|
+
"$ref": "#/components/parameters/AnonymizeQueryParam"
|
|
1787
|
+
},
|
|
1779
1788
|
{
|
|
1780
1789
|
"name": "input",
|
|
1781
1790
|
"in": "query",
|
|
@@ -1944,6 +1953,9 @@
|
|
|
1944
1953
|
"Activity"
|
|
1945
1954
|
],
|
|
1946
1955
|
"parameters": [
|
|
1956
|
+
{
|
|
1957
|
+
"$ref": "#/components/parameters/AnonymizeQueryParam"
|
|
1958
|
+
},
|
|
1947
1959
|
{
|
|
1948
1960
|
"$ref": "#/components/parameters/ActivityIdPathParam"
|
|
1949
1961
|
},
|
|
@@ -2140,6 +2152,9 @@
|
|
|
2140
2152
|
"Entities"
|
|
2141
2153
|
],
|
|
2142
2154
|
"parameters": [
|
|
2155
|
+
{
|
|
2156
|
+
"$ref": "#/components/parameters/AnonymizeQueryParam"
|
|
2157
|
+
},
|
|
2143
2158
|
{
|
|
2144
2159
|
"$ref": "#/components/parameters/EntitySlugPathParam"
|
|
2145
2160
|
},
|
|
@@ -2173,6 +2188,9 @@
|
|
|
2173
2188
|
"Activity"
|
|
2174
2189
|
],
|
|
2175
2190
|
"parameters": [
|
|
2191
|
+
{
|
|
2192
|
+
"$ref": "#/components/parameters/AnonymizeQueryParam"
|
|
2193
|
+
},
|
|
2176
2194
|
{
|
|
2177
2195
|
"$ref": "#/components/parameters/EntitySlugPathParam"
|
|
2178
2196
|
},
|
|
@@ -2325,6 +2343,9 @@
|
|
|
2325
2343
|
{
|
|
2326
2344
|
"$ref": "#/components/parameters/HydrateEntitiesQueryParam"
|
|
2327
2345
|
},
|
|
2346
|
+
{
|
|
2347
|
+
"$ref": "#/components/parameters/AnonymizeQueryParam"
|
|
2348
|
+
},
|
|
2328
2349
|
{
|
|
2329
2350
|
"$ref": "#/components/parameters/IncludeReverseQueryParam"
|
|
2330
2351
|
},
|
|
@@ -2551,6 +2572,9 @@
|
|
|
2551
2572
|
{
|
|
2552
2573
|
"$ref": "#/components/parameters/HydrateEntitiesQueryParam"
|
|
2553
2574
|
},
|
|
2575
|
+
{
|
|
2576
|
+
"$ref": "#/components/parameters/AnonymizeQueryParam"
|
|
2577
|
+
},
|
|
2554
2578
|
{
|
|
2555
2579
|
"in": "query",
|
|
2556
2580
|
"name": "query",
|
|
@@ -2620,6 +2644,9 @@
|
|
|
2620
2644
|
{
|
|
2621
2645
|
"$ref": "#/components/parameters/HydrateEntitiesQueryParam"
|
|
2622
2646
|
},
|
|
2647
|
+
{
|
|
2648
|
+
"$ref": "#/components/parameters/AnonymizeQueryParam"
|
|
2649
|
+
},
|
|
2623
2650
|
{
|
|
2624
2651
|
"$ref": "#/components/parameters/IncludeReverseDeprecatedQueryParam"
|
|
2625
2652
|
},
|
|
@@ -2940,6 +2967,69 @@
|
|
|
2940
2967
|
}
|
|
2941
2968
|
}
|
|
2942
2969
|
},
|
|
2970
|
+
"/v1/entity:abortImport": {
|
|
2971
|
+
"post": {
|
|
2972
|
+
"operationId": "abortEntityImport",
|
|
2973
|
+
"summary": "Abort a running entity import",
|
|
2974
|
+
"description": "Asks a running import to stop. Rows already imported are **kept** - this is a stop, not a\nrollback - and the job still produces its result reports for everything that landed before\nthe stop, then reaches the terminal status `CANCELLED`.\n\nThe stop is cooperative: the worker notices the request at its next batch boundary, so the\njob typically reaches `CANCELLED` within seconds. Poll `POST /v1/entity:import` with the\n`job_id` as usual to observe it.\n\nIdempotent - aborting an already-aborted or already-finished job is not an error.\n",
|
|
2975
|
+
"tags": [
|
|
2976
|
+
"Import-Export"
|
|
2977
|
+
],
|
|
2978
|
+
"parameters": [
|
|
2979
|
+
{
|
|
2980
|
+
"in": "query",
|
|
2981
|
+
"name": "job_id",
|
|
2982
|
+
"required": true,
|
|
2983
|
+
"description": "The ID of the import job to stop.",
|
|
2984
|
+
"schema": {
|
|
2985
|
+
"$ref": "#/components/schemas/ExportJobId"
|
|
2986
|
+
}
|
|
2987
|
+
},
|
|
2988
|
+
{
|
|
2989
|
+
"in": "query",
|
|
2990
|
+
"name": "schema",
|
|
2991
|
+
"required": true,
|
|
2992
|
+
"description": "Slug of the schema being imported, used to authorize the caller.",
|
|
2993
|
+
"schema": {
|
|
2994
|
+
"type": "string"
|
|
2995
|
+
}
|
|
2996
|
+
}
|
|
2997
|
+
],
|
|
2998
|
+
"responses": {
|
|
2999
|
+
"202": {
|
|
3000
|
+
"description": "The stop was requested. The job is still running until the worker picks the request up.\n",
|
|
3001
|
+
"content": {
|
|
3002
|
+
"application/json": {
|
|
3003
|
+
"schema": {
|
|
3004
|
+
"type": "object",
|
|
3005
|
+
"properties": {
|
|
3006
|
+
"status": {
|
|
3007
|
+
"type": "string",
|
|
3008
|
+
"description": "The job status at the time of the request."
|
|
3009
|
+
},
|
|
3010
|
+
"jobPollId": {
|
|
3011
|
+
"type": "string"
|
|
3012
|
+
}
|
|
3013
|
+
}
|
|
3014
|
+
}
|
|
3015
|
+
}
|
|
3016
|
+
}
|
|
3017
|
+
},
|
|
3018
|
+
"400": {
|
|
3019
|
+
"description": "Bad Request"
|
|
3020
|
+
},
|
|
3021
|
+
"403": {
|
|
3022
|
+
"description": "Forbidden"
|
|
3023
|
+
},
|
|
3024
|
+
"404": {
|
|
3025
|
+
"description": "No such import job"
|
|
3026
|
+
},
|
|
3027
|
+
"429": {
|
|
3028
|
+
"$ref": "#/components/responses/TooManyRequestsError"
|
|
3029
|
+
}
|
|
3030
|
+
}
|
|
3031
|
+
}
|
|
3032
|
+
},
|
|
2943
3033
|
"/v1/entity/views": {
|
|
2944
3034
|
"get": {
|
|
2945
3035
|
"operationId": "listSavedViews",
|
|
@@ -2990,6 +3080,15 @@
|
|
|
2990
3080
|
"maximum": 250
|
|
2991
3081
|
}
|
|
2992
3082
|
},
|
|
3083
|
+
{
|
|
3084
|
+
"in": "query",
|
|
3085
|
+
"name": "q",
|
|
3086
|
+
"description": "Free-text search on the saved view name (case-insensitive)",
|
|
3087
|
+
"required": false,
|
|
3088
|
+
"schema": {
|
|
3089
|
+
"type": "string"
|
|
3090
|
+
}
|
|
3091
|
+
},
|
|
2993
3092
|
{
|
|
2994
3093
|
"in": "query",
|
|
2995
3094
|
"name": "fields",
|
|
@@ -3158,7 +3257,10 @@
|
|
|
3158
3257
|
],
|
|
3159
3258
|
"responses": {
|
|
3160
3259
|
"200": {
|
|
3161
|
-
"description": "
|
|
3260
|
+
"description": "The saved view was deleted"
|
|
3261
|
+
},
|
|
3262
|
+
"404": {
|
|
3263
|
+
"$ref": "#/components/responses/NotFoundError"
|
|
3162
3264
|
},
|
|
3163
3265
|
"429": {
|
|
3164
3266
|
"$ref": "#/components/responses/TooManyRequestsError"
|
|
@@ -3845,7 +3947,7 @@
|
|
|
3845
3947
|
"description": "ISO 8601 timestamp to filter jobs created after this time (e.g., 2023-01-01T00:00:00Z).",
|
|
3846
3948
|
"type": "string",
|
|
3847
3949
|
"format": "date-time",
|
|
3848
|
-
"example": "2023-01-01T00:00:
|
|
3950
|
+
"example": "2023-01-01T00:00:00.000Z"
|
|
3849
3951
|
}
|
|
3850
3952
|
},
|
|
3851
3953
|
{
|
|
@@ -4967,6 +5069,45 @@
|
|
|
4967
5069
|
"example": true
|
|
4968
5070
|
}
|
|
4969
5071
|
}
|
|
5072
|
+
},
|
|
5073
|
+
"grid_layout": {
|
|
5074
|
+
"type": "object",
|
|
5075
|
+
"description": "Widget-grid layout for the entity-details page (builder-authored); columns/cells drive the grid geometry.",
|
|
5076
|
+
"properties": {
|
|
5077
|
+
"id": {
|
|
5078
|
+
"type": "string",
|
|
5079
|
+
"description": "Identifier of the chosen grid-layout preset."
|
|
5080
|
+
},
|
|
5081
|
+
"columns": {
|
|
5082
|
+
"type": "number",
|
|
5083
|
+
"description": "Number of columns in the widget grid."
|
|
5084
|
+
},
|
|
5085
|
+
"cells": {
|
|
5086
|
+
"type": "array",
|
|
5087
|
+
"description": "Per-cell column span, positionally paired with the widgets in order.",
|
|
5088
|
+
"items": {
|
|
5089
|
+
"type": "number"
|
|
5090
|
+
}
|
|
5091
|
+
}
|
|
5092
|
+
}
|
|
5093
|
+
},
|
|
5094
|
+
"widget_order": {
|
|
5095
|
+
"type": "array",
|
|
5096
|
+
"description": "Ordered list of widget ids controlling the entity-details widget-grid order. Each id is a capability widget's `component` (or `summary` for the synthesized summary card); widgets absent from the list keep their natural order at the end.",
|
|
5097
|
+
"items": {
|
|
5098
|
+
"type": "string"
|
|
5099
|
+
}
|
|
5100
|
+
},
|
|
5101
|
+
"widget_visibility": {
|
|
5102
|
+
"type": "object",
|
|
5103
|
+
"description": "Per-widget on/off state for the entity-details widget grid, keyed by widget id (a capability widget's `component`, or `summary` for the synthesized summary card). Holds only the admin's deviations from each widget's declared default: a widget absent from this map falls back to its ui_hook `default_visible`, and then to visible. Do not seed this map from migrations — doing so would freeze today's defaults into the schema.",
|
|
5104
|
+
"additionalProperties": {
|
|
5105
|
+
"type": "boolean"
|
|
5106
|
+
},
|
|
5107
|
+
"example": {
|
|
5108
|
+
"next_best_action": true,
|
|
5109
|
+
"address_map": false
|
|
5110
|
+
}
|
|
4970
5111
|
}
|
|
4971
5112
|
}
|
|
4972
5113
|
},
|
|
@@ -5094,6 +5235,14 @@
|
|
|
5094
5235
|
"items": {
|
|
5095
5236
|
"$ref": "#/components/schemas/GroupHeadline"
|
|
5096
5237
|
}
|
|
5238
|
+
},
|
|
5239
|
+
"conditions": {
|
|
5240
|
+
"type": "array",
|
|
5241
|
+
"nullable": true,
|
|
5242
|
+
"description": "Dimensions that conditional variants of this entity type are keyed by.\n\nAbsent or `null` means entities of this type are not conditional. Attributes whose\nvalues a variant may override are marked with `variant_overridable`.\n",
|
|
5243
|
+
"items": {
|
|
5244
|
+
"$ref": "#/components/schemas/ConditionDefinition"
|
|
5245
|
+
}
|
|
5097
5246
|
}
|
|
5098
5247
|
},
|
|
5099
5248
|
"required": [
|
|
@@ -5523,6 +5672,11 @@
|
|
|
5523
5672
|
"type": "boolean",
|
|
5524
5673
|
"default": false
|
|
5525
5674
|
},
|
|
5675
|
+
"variant_overridable": {
|
|
5676
|
+
"type": "boolean",
|
|
5677
|
+
"default": false,
|
|
5678
|
+
"description": "Allow conditional variants of the entity to override this attribute's value.\nOnly meaningful on schemas that declare `conditions`. Unflagged attributes stay\nfixed on the base entity.\n"
|
|
5679
|
+
},
|
|
5526
5680
|
"default_value": {},
|
|
5527
5681
|
"group": {
|
|
5528
5682
|
"description": "Which group the attribute should appear in. Accepts group ID or group name",
|
|
@@ -5549,6 +5703,14 @@
|
|
|
5549
5703
|
"type": "string",
|
|
5550
5704
|
"description": "Defines the conditional rendering expression for showing this field.\nWhen a valid expression is parsed, their evaluation defines the visibility of this attribute.\nNote: Empty or invalid expression have no effect on the field visibility.\n"
|
|
5551
5705
|
},
|
|
5706
|
+
"data_classification": {
|
|
5707
|
+
"type": "string",
|
|
5708
|
+
"enum": [
|
|
5709
|
+
"public",
|
|
5710
|
+
"pii"
|
|
5711
|
+
],
|
|
5712
|
+
"description": "Data classification of the attribute, used by anonymized responses (`?anonymize=true` or tokens minted with `anonymize: true`).\n\n- `pii`: the attribute value is always anonymized in anonymized responses (use to opt in free-text fields containing personal data)\n- `public`: the attribute value is never anonymized (use to opt out fields matched by built-in defaults, e.g. non-personal identifiers)\n\nWhen unset, built-in defaults apply based on the attribute type (email, phone, address, payment) and a curated list of well-known PII fields.\n"
|
|
5713
|
+
},
|
|
5552
5714
|
"_purpose": {
|
|
5553
5715
|
"type": "array",
|
|
5554
5716
|
"items": {
|
|
@@ -5640,14 +5802,12 @@
|
|
|
5640
5802
|
"type": "boolean"
|
|
5641
5803
|
},
|
|
5642
5804
|
"edit_mode": {
|
|
5643
|
-
"
|
|
5644
|
-
|
|
5645
|
-
|
|
5646
|
-
|
|
5647
|
-
"external",
|
|
5648
|
-
"approval"
|
|
5805
|
+
"allOf": [
|
|
5806
|
+
{
|
|
5807
|
+
"$ref": "#/components/schemas/EditMode"
|
|
5808
|
+
}
|
|
5649
5809
|
],
|
|
5650
|
-
"
|
|
5810
|
+
"description": "Controls how updates to this attribute are handled. See the `EditMode`\nschema for the per-mode semantics. Defaults to `direct`.\n"
|
|
5651
5811
|
},
|
|
5652
5812
|
"edit_mode_config": {
|
|
5653
5813
|
"description": "Configuration for auto-clear matching on `edit_mode: external` attributes.\n`match_strategy` and `fuzzy_config` are only consulted for `external` mode —\nthey are ignored for `approval` mode, which resolves via explicit\n`:apply` / `:dismiss` endpoints and never auto-clears.\n",
|
|
@@ -7117,12 +7277,163 @@
|
|
|
7117
7277
|
}
|
|
7118
7278
|
]
|
|
7119
7279
|
},
|
|
7280
|
+
"BaseConditionDefinition": {
|
|
7281
|
+
"type": "object",
|
|
7282
|
+
"properties": {
|
|
7283
|
+
"id": {
|
|
7284
|
+
"type": "string",
|
|
7285
|
+
"format": "uuid",
|
|
7286
|
+
"description": "Stable identity of the condition, generated by the client when the condition is\ncreated. It is what makes a rename distinguishable from a remove + add, so it must\nbe round-tripped unchanged for the lifetime of the condition.\n",
|
|
7287
|
+
"example": "d5839b94-ba20-4225-a78e-76951d352bd6"
|
|
7288
|
+
},
|
|
7289
|
+
"name": {
|
|
7290
|
+
"type": "string",
|
|
7291
|
+
"pattern": "^[a-z0-9_]+$",
|
|
7292
|
+
"description": "The key variant values are stored under. Unique within the schema and immutable\nonce the condition has been saved.\n",
|
|
7293
|
+
"example": "delivery_area"
|
|
7294
|
+
},
|
|
7295
|
+
"label": {
|
|
7296
|
+
"type": "string",
|
|
7297
|
+
"description": "Display label. Always editable.",
|
|
7298
|
+
"example": "Delivery Area"
|
|
7299
|
+
}
|
|
7300
|
+
},
|
|
7301
|
+
"required": [
|
|
7302
|
+
"id",
|
|
7303
|
+
"name",
|
|
7304
|
+
"label"
|
|
7305
|
+
]
|
|
7306
|
+
},
|
|
7307
|
+
"ScalarConditionDefinition": {
|
|
7308
|
+
"allOf": [
|
|
7309
|
+
{
|
|
7310
|
+
"$ref": "#/components/schemas/BaseConditionDefinition"
|
|
7311
|
+
},
|
|
7312
|
+
{
|
|
7313
|
+
"type": "object",
|
|
7314
|
+
"description": "A condition whose value is a plain scalar, with no further configuration.",
|
|
7315
|
+
"properties": {
|
|
7316
|
+
"type": {
|
|
7317
|
+
"type": "string",
|
|
7318
|
+
"description": "Immutable once the condition has been saved.",
|
|
7319
|
+
"enum": [
|
|
7320
|
+
"string",
|
|
7321
|
+
"number",
|
|
7322
|
+
"date",
|
|
7323
|
+
"daterange",
|
|
7324
|
+
"boolean"
|
|
7325
|
+
]
|
|
7326
|
+
}
|
|
7327
|
+
},
|
|
7328
|
+
"required": [
|
|
7329
|
+
"type"
|
|
7330
|
+
]
|
|
7331
|
+
}
|
|
7332
|
+
]
|
|
7333
|
+
},
|
|
7334
|
+
"SelectConditionDefinition": {
|
|
7335
|
+
"allOf": [
|
|
7336
|
+
{
|
|
7337
|
+
"$ref": "#/components/schemas/BaseConditionDefinition"
|
|
7338
|
+
},
|
|
7339
|
+
{
|
|
7340
|
+
"type": "object",
|
|
7341
|
+
"description": "A condition whose value is one of a fixed set of options.",
|
|
7342
|
+
"properties": {
|
|
7343
|
+
"type": {
|
|
7344
|
+
"type": "string",
|
|
7345
|
+
"description": "Immutable once the condition has been saved.",
|
|
7346
|
+
"enum": [
|
|
7347
|
+
"select"
|
|
7348
|
+
]
|
|
7349
|
+
},
|
|
7350
|
+
"values": {
|
|
7351
|
+
"type": "array",
|
|
7352
|
+
"description": "Selectable options. May be empty while the condition is being configured.",
|
|
7353
|
+
"items": {
|
|
7354
|
+
"type": "string"
|
|
7355
|
+
},
|
|
7356
|
+
"example": [
|
|
7357
|
+
"12_months",
|
|
7358
|
+
"24_months"
|
|
7359
|
+
]
|
|
7360
|
+
}
|
|
7361
|
+
},
|
|
7362
|
+
"required": [
|
|
7363
|
+
"type"
|
|
7364
|
+
]
|
|
7365
|
+
}
|
|
7366
|
+
]
|
|
7367
|
+
},
|
|
7368
|
+
"LocationConditionDefinition": {
|
|
7369
|
+
"allOf": [
|
|
7370
|
+
{
|
|
7371
|
+
"$ref": "#/components/schemas/BaseConditionDefinition"
|
|
7372
|
+
},
|
|
7373
|
+
{
|
|
7374
|
+
"type": "object",
|
|
7375
|
+
"description": "A condition whose value identifies a place.",
|
|
7376
|
+
"properties": {
|
|
7377
|
+
"type": {
|
|
7378
|
+
"type": "string",
|
|
7379
|
+
"description": "Immutable once the condition has been saved.",
|
|
7380
|
+
"enum": [
|
|
7381
|
+
"location"
|
|
7382
|
+
]
|
|
7383
|
+
},
|
|
7384
|
+
"format": {
|
|
7385
|
+
"type": "string",
|
|
7386
|
+
"description": "The shape of the location value. Immutable once the condition has been saved.",
|
|
7387
|
+
"enum": [
|
|
7388
|
+
"zipcode",
|
|
7389
|
+
"zipcode_town"
|
|
7390
|
+
]
|
|
7391
|
+
}
|
|
7392
|
+
},
|
|
7393
|
+
"required": [
|
|
7394
|
+
"type"
|
|
7395
|
+
]
|
|
7396
|
+
}
|
|
7397
|
+
]
|
|
7398
|
+
},
|
|
7399
|
+
"ConditionDefinition": {
|
|
7400
|
+
"description": "One dimension that conditional variants of an entity type are keyed by. `type`\ndiscriminates the variants: only a `select` condition carries `values`, and only a\n`location` condition carries `format`.\n",
|
|
7401
|
+
"oneOf": [
|
|
7402
|
+
{
|
|
7403
|
+
"$ref": "#/components/schemas/ScalarConditionDefinition"
|
|
7404
|
+
},
|
|
7405
|
+
{
|
|
7406
|
+
"$ref": "#/components/schemas/SelectConditionDefinition"
|
|
7407
|
+
},
|
|
7408
|
+
{
|
|
7409
|
+
"$ref": "#/components/schemas/LocationConditionDefinition"
|
|
7410
|
+
}
|
|
7411
|
+
]
|
|
7412
|
+
},
|
|
7120
7413
|
"EntitySlug": {
|
|
7121
7414
|
"description": "URL-friendly identifier for the entity schema",
|
|
7122
7415
|
"type": "string",
|
|
7123
7416
|
"pattern": "^[a-zA-Z0-9_-]+$",
|
|
7124
7417
|
"example": "contact"
|
|
7125
7418
|
},
|
|
7419
|
+
"AdjustInstallmentCapabilityConfig": {
|
|
7420
|
+
"description": "Configuration for adjusting a contract installment through a Journey.",
|
|
7421
|
+
"type": "object",
|
|
7422
|
+
"additionalProperties": false,
|
|
7423
|
+
"example": {
|
|
7424
|
+
"journey_id": "adjust-installment-flow"
|
|
7425
|
+
},
|
|
7426
|
+
"required": [
|
|
7427
|
+
"journey_id"
|
|
7428
|
+
],
|
|
7429
|
+
"properties": {
|
|
7430
|
+
"journey_id": {
|
|
7431
|
+
"type": "string",
|
|
7432
|
+
"minLength": 1,
|
|
7433
|
+
"description": "ID of the Flow Journey to open when adjusting the installment."
|
|
7434
|
+
}
|
|
7435
|
+
}
|
|
7436
|
+
},
|
|
7126
7437
|
"EntityCapability": {
|
|
7127
7438
|
"description": "Capabilities the Entity has. Turn features on/off for entities.",
|
|
7128
7439
|
"type": "object",
|
|
@@ -7148,6 +7459,11 @@
|
|
|
7148
7459
|
"$ref": "#/components/schemas/Attribute"
|
|
7149
7460
|
}
|
|
7150
7461
|
},
|
|
7462
|
+
"variant_overridable": {
|
|
7463
|
+
"type": "boolean",
|
|
7464
|
+
"default": false,
|
|
7465
|
+
"description": "Allow conditional variants of the entity to override the values managed by this\ncapability. Only meaningful on schemas that declare `conditions` and on capabilities\nthat render an attribute group (`EntityAttributes:Group` ui hook), e.g. pricing tiers.\nAttributes carried by the capability opt in individually via their own\n`variant_overridable` flag.\n"
|
|
7466
|
+
},
|
|
7151
7467
|
"_purpose": {
|
|
7152
7468
|
"type": "array",
|
|
7153
7469
|
"items": {
|
|
@@ -7169,6 +7485,9 @@
|
|
|
7169
7485
|
"description": "ID of the app if the capability is provided by an app",
|
|
7170
7486
|
"example": "123e4567-e89b-12d3-a456-426614174000"
|
|
7171
7487
|
},
|
|
7488
|
+
"adjust_installment": {
|
|
7489
|
+
"$ref": "#/components/schemas/AdjustInstallmentCapabilityConfig"
|
|
7490
|
+
},
|
|
7172
7491
|
"ui_config": {
|
|
7173
7492
|
"type": "object",
|
|
7174
7493
|
"properties": {
|
|
@@ -7252,6 +7571,16 @@
|
|
|
7252
7571
|
"required": [
|
|
7253
7572
|
"action"
|
|
7254
7573
|
]
|
|
7574
|
+
},
|
|
7575
|
+
"default_visible": {
|
|
7576
|
+
"type": "boolean",
|
|
7577
|
+
"description": "Whether this widget is switched on by default for entity types that have the capability. Only meaningful on the `EntityDetailsV2:Widget` hook. Defaults to true when omitted. An admin's explicit choice in the entity builder is stored in the schema's `ui_config.widget_visibility` and wins over this.",
|
|
7578
|
+
"example": false
|
|
7579
|
+
},
|
|
7580
|
+
"pricing_tier_setting": {
|
|
7581
|
+
"type": "string",
|
|
7582
|
+
"description": "The pricing-tier settings key an organisation must have enabled to use this widget. Omit for widgets available to everyone. Resolved against `GET /v2/pricing-tiers/me` as `override_settings[key].enabled ?? settings[key].enabled`. Note this is commercial packaging enforced in the UI, not a security control — the key must also be added to the pricing tier settings list in epilot-admin-portal, or it can never be switched on for a tier.",
|
|
7583
|
+
"example": "entity_address_maps"
|
|
7255
7584
|
}
|
|
7256
7585
|
},
|
|
7257
7586
|
"required": [
|
|
@@ -7581,7 +7910,7 @@
|
|
|
7581
7910
|
"readOnly": true,
|
|
7582
7911
|
"type": "object",
|
|
7583
7912
|
"nullable": true,
|
|
7584
|
-
"description": "Pending attribute changesets for attributes configured with external or approval edit mode.\nRead-only via normal entity PATCH/PUT operations —
|
|
7913
|
+
"description": "Pending attribute changesets for attributes configured with external or approval edit mode.\n\nThe value shape is `Changeset` (`proposed_value`, `created_at`, `edit_mode`, ...)\nand is what `:apply` / `:dismiss` operate on.\n\nRead-only via normal entity PATCH/PUT operations — those handlers strip `_changesets`\nfrom request bodies. Use the changeset management endpoints to mutate this field.\n",
|
|
7585
7914
|
"additionalProperties": {
|
|
7586
7915
|
"$ref": "#/components/schemas/Changeset"
|
|
7587
7916
|
}
|
|
@@ -8092,6 +8421,7 @@
|
|
|
8092
8421
|
"from": {},
|
|
8093
8422
|
"size": {},
|
|
8094
8423
|
"hydrate": {},
|
|
8424
|
+
"anonymize": {},
|
|
8095
8425
|
"fields": {},
|
|
8096
8426
|
"aggs": {},
|
|
8097
8427
|
"include_deleted": {},
|
|
@@ -8176,6 +8506,7 @@
|
|
|
8176
8506
|
"from": {},
|
|
8177
8507
|
"size": {},
|
|
8178
8508
|
"hydrate": {},
|
|
8509
|
+
"anonymize": {},
|
|
8179
8510
|
"fields": {},
|
|
8180
8511
|
"aggs": {},
|
|
8181
8512
|
"include_deleted": {},
|
|
@@ -8400,6 +8731,11 @@
|
|
|
8400
8731
|
"description": "When true, enables entity hydration to resolve nested $relation & $relation_ref references in-place.",
|
|
8401
8732
|
"default": false
|
|
8402
8733
|
},
|
|
8734
|
+
"anonymize": {
|
|
8735
|
+
"type": "boolean",
|
|
8736
|
+
"description": "When true, anonymizes PII in the response: identifiers are replaced with deterministic pseudonyms,\naddresses are generalized and well-known free-text fields are redacted.\nAnonymization is forced (regardless of this parameter) when the access token was created with `anonymize: true`.\n",
|
|
8737
|
+
"default": false
|
|
8738
|
+
},
|
|
8403
8739
|
"fields": {
|
|
8404
8740
|
"$ref": "#/components/schemas/FieldsParam"
|
|
8405
8741
|
},
|
|
@@ -9032,6 +9368,9 @@
|
|
|
9032
9368
|
}
|
|
9033
9369
|
}
|
|
9034
9370
|
},
|
|
9371
|
+
"source_context": {
|
|
9372
|
+
"$ref": "#/components/schemas/EntityOperationSourceContext"
|
|
9373
|
+
},
|
|
9035
9374
|
"_workflow_origin": {
|
|
9036
9375
|
"type": "object",
|
|
9037
9376
|
"description": "Internal property for workflow origin tracking and infinite loop prevention.\nPopulated when an entity update originates from a workflow execution.\nThis allows downstream automation services to prevent circular triggering.\n",
|
|
@@ -9045,6 +9384,13 @@
|
|
|
9045
9384
|
"description": "The flow template ID - used to detect and prevent circular triggering"
|
|
9046
9385
|
}
|
|
9047
9386
|
}
|
|
9387
|
+
},
|
|
9388
|
+
"_automation_chain": {
|
|
9389
|
+
"type": "array",
|
|
9390
|
+
"description": "Ordered automation flow ids that caused this change; used to break multi-automation trigger loops.",
|
|
9391
|
+
"items": {
|
|
9392
|
+
"type": "string"
|
|
9393
|
+
}
|
|
9048
9394
|
}
|
|
9049
9395
|
},
|
|
9050
9396
|
"required": [
|
|
@@ -9053,6 +9399,59 @@
|
|
|
9053
9399
|
"operation"
|
|
9054
9400
|
]
|
|
9055
9401
|
},
|
|
9402
|
+
"EntityOperationSourceContext": {
|
|
9403
|
+
"type": "object",
|
|
9404
|
+
"description": "Billing and audit source context for the operation event.",
|
|
9405
|
+
"properties": {
|
|
9406
|
+
"source": {
|
|
9407
|
+
"type": "string",
|
|
9408
|
+
"description": "Normalized source bucket for the operation.",
|
|
9409
|
+
"enum": [
|
|
9410
|
+
"portal",
|
|
9411
|
+
"epilot",
|
|
9412
|
+
"erp",
|
|
9413
|
+
"system",
|
|
9414
|
+
"api",
|
|
9415
|
+
"external",
|
|
9416
|
+
"journey",
|
|
9417
|
+
"automation",
|
|
9418
|
+
"unknown"
|
|
9419
|
+
]
|
|
9420
|
+
},
|
|
9421
|
+
"source_label": {
|
|
9422
|
+
"type": "string",
|
|
9423
|
+
"description": "Original free-form source label from the caller or changeset, when available."
|
|
9424
|
+
},
|
|
9425
|
+
"source_system": {
|
|
9426
|
+
"type": "string",
|
|
9427
|
+
"description": "Optional upstream system label, for example an ERP system name."
|
|
9428
|
+
},
|
|
9429
|
+
"source_reference": {
|
|
9430
|
+
"type": "string",
|
|
9431
|
+
"description": "Optional upstream change reference."
|
|
9432
|
+
},
|
|
9433
|
+
"actor_type": {
|
|
9434
|
+
"type": "string",
|
|
9435
|
+
"enum": [
|
|
9436
|
+
"user",
|
|
9437
|
+
"portal_user",
|
|
9438
|
+
"api_client",
|
|
9439
|
+
"automation",
|
|
9440
|
+
"system"
|
|
9441
|
+
]
|
|
9442
|
+
},
|
|
9443
|
+
"actor_id": {
|
|
9444
|
+
"type": "string"
|
|
9445
|
+
},
|
|
9446
|
+
"effective_at": {
|
|
9447
|
+
"type": "string",
|
|
9448
|
+
"format": "date-time"
|
|
9449
|
+
}
|
|
9450
|
+
},
|
|
9451
|
+
"required": [
|
|
9452
|
+
"source"
|
|
9453
|
+
]
|
|
9454
|
+
},
|
|
9056
9455
|
"BaseActivityItem": {
|
|
9057
9456
|
"allOf": [
|
|
9058
9457
|
{
|
|
@@ -9194,6 +9593,11 @@
|
|
|
9194
9593
|
"user_id": {
|
|
9195
9594
|
"type": "string",
|
|
9196
9595
|
"example": "10598"
|
|
9596
|
+
},
|
|
9597
|
+
"org_id": {
|
|
9598
|
+
"type": "string",
|
|
9599
|
+
"description": "The organization ID of the user who created the view. Used for partner access control.",
|
|
9600
|
+
"example": "739224"
|
|
9197
9601
|
}
|
|
9198
9602
|
}
|
|
9199
9603
|
},
|
|
@@ -9374,7 +9778,8 @@
|
|
|
9374
9778
|
"message",
|
|
9375
9779
|
"portal_user",
|
|
9376
9780
|
"request",
|
|
9377
|
-
"comment"
|
|
9781
|
+
"comment",
|
|
9782
|
+
"user"
|
|
9378
9783
|
]
|
|
9379
9784
|
},
|
|
9380
9785
|
"TaxonomySearchIncludeArchivedParam": {
|
|
@@ -9771,6 +10176,185 @@
|
|
|
9771
10176
|
"$ref": "#/components/schemas/Changeset"
|
|
9772
10177
|
}
|
|
9773
10178
|
},
|
|
10179
|
+
"MeterReadingChangesetEntry": {
|
|
10180
|
+
"type": "object",
|
|
10181
|
+
"description": "A meter readings changeset entry — service-managed by metering-api.\nStored on `Meter._meter_readings_changeset` array attribute. Each entry mirrors a\nClickHouse meter reading row plus a changeset metadata overlay.\n\nNote: `org_id` is NOT stored on the entry. The entries live on the Meter entity,\nwhich is already org-scoped (`_org`). Round-tripping it would only invite drift;\ndownstream consumers receive the org from the meter / handler context.\n",
|
|
10182
|
+
"required": [
|
|
10183
|
+
"changeset_id",
|
|
10184
|
+
"meter_id",
|
|
10185
|
+
"counter_id",
|
|
10186
|
+
"value",
|
|
10187
|
+
"edit_mode",
|
|
10188
|
+
"created_at"
|
|
10189
|
+
],
|
|
10190
|
+
"properties": {
|
|
10191
|
+
"value": {
|
|
10192
|
+
"type": "number"
|
|
10193
|
+
},
|
|
10194
|
+
"direction": {
|
|
10195
|
+
"type": "string",
|
|
10196
|
+
"enum": [
|
|
10197
|
+
"feed-in",
|
|
10198
|
+
"feed-out"
|
|
10199
|
+
]
|
|
10200
|
+
},
|
|
10201
|
+
"timestamp": {
|
|
10202
|
+
"type": "string",
|
|
10203
|
+
"format": "date-time"
|
|
10204
|
+
},
|
|
10205
|
+
"meter_id": {
|
|
10206
|
+
"type": "string",
|
|
10207
|
+
"format": "uuid"
|
|
10208
|
+
},
|
|
10209
|
+
"counter_id": {
|
|
10210
|
+
"type": "string",
|
|
10211
|
+
"format": "uuid"
|
|
10212
|
+
},
|
|
10213
|
+
"source": {
|
|
10214
|
+
"type": "string"
|
|
10215
|
+
},
|
|
10216
|
+
"reason": {
|
|
10217
|
+
"type": "string"
|
|
10218
|
+
},
|
|
10219
|
+
"read_by": {
|
|
10220
|
+
"type": "string"
|
|
10221
|
+
},
|
|
10222
|
+
"status": {
|
|
10223
|
+
"type": "string",
|
|
10224
|
+
"enum": [
|
|
10225
|
+
"valid",
|
|
10226
|
+
"in-validation",
|
|
10227
|
+
"implausible"
|
|
10228
|
+
]
|
|
10229
|
+
},
|
|
10230
|
+
"external_id": {
|
|
10231
|
+
"type": "string"
|
|
10232
|
+
},
|
|
10233
|
+
"remark": {
|
|
10234
|
+
"type": "string"
|
|
10235
|
+
},
|
|
10236
|
+
"metadata": {
|
|
10237
|
+
"type": "object",
|
|
10238
|
+
"additionalProperties": {
|
|
10239
|
+
"type": "string"
|
|
10240
|
+
}
|
|
10241
|
+
},
|
|
10242
|
+
"changeset_id": {
|
|
10243
|
+
"type": "string",
|
|
10244
|
+
"description": "Unique changeset identifier (UUID v4)."
|
|
10245
|
+
},
|
|
10246
|
+
"edit_mode": {
|
|
10247
|
+
"type": "string",
|
|
10248
|
+
"enum": [
|
|
10249
|
+
"external",
|
|
10250
|
+
"approval"
|
|
10251
|
+
]
|
|
10252
|
+
},
|
|
10253
|
+
"match_strategy": {
|
|
10254
|
+
"type": "string",
|
|
10255
|
+
"enum": [
|
|
10256
|
+
"exact",
|
|
10257
|
+
"fuzzy"
|
|
10258
|
+
]
|
|
10259
|
+
},
|
|
10260
|
+
"timestamp_tolerance": {
|
|
10261
|
+
"description": "Slack on `reading.timestamp` when metering-api auto-clear matches an\nincoming reading against this pending changeset.\n\nVariants:\n- `'exact'`: strict millisecond equality.\n- `{ type: 'same-day', timezone? }`: strip the time component and\n compare year-month-day. Optional `timezone` is an IANA name\n (e.g. `'Europe/Berlin'`); the day is bucketed in that zone.\n Defaults to UTC when omitted.\n- `{ type: 'within-seconds', seconds }`: symmetric ±N-second window.\n",
|
|
10262
|
+
"oneOf": [
|
|
10263
|
+
{
|
|
10264
|
+
"type": "string",
|
|
10265
|
+
"enum": [
|
|
10266
|
+
"exact"
|
|
10267
|
+
]
|
|
10268
|
+
},
|
|
10269
|
+
{
|
|
10270
|
+
"type": "object",
|
|
10271
|
+
"required": [
|
|
10272
|
+
"type"
|
|
10273
|
+
],
|
|
10274
|
+
"properties": {
|
|
10275
|
+
"type": {
|
|
10276
|
+
"type": "string",
|
|
10277
|
+
"enum": [
|
|
10278
|
+
"same-day"
|
|
10279
|
+
]
|
|
10280
|
+
},
|
|
10281
|
+
"timezone": {
|
|
10282
|
+
"type": "string",
|
|
10283
|
+
"description": "IANA timezone identifier (e.g. `'Europe/Berlin'`, `'UTC'`).\nWhen omitted, the day is bucketed in UTC.\n"
|
|
10284
|
+
}
|
|
10285
|
+
}
|
|
10286
|
+
},
|
|
10287
|
+
{
|
|
10288
|
+
"type": "object",
|
|
10289
|
+
"required": [
|
|
10290
|
+
"type",
|
|
10291
|
+
"seconds"
|
|
10292
|
+
],
|
|
10293
|
+
"properties": {
|
|
10294
|
+
"type": {
|
|
10295
|
+
"type": "string",
|
|
10296
|
+
"enum": [
|
|
10297
|
+
"within-seconds"
|
|
10298
|
+
]
|
|
10299
|
+
},
|
|
10300
|
+
"seconds": {
|
|
10301
|
+
"type": "integer",
|
|
10302
|
+
"minimum": 0,
|
|
10303
|
+
"description": "Tolerance in seconds. e.g. 60 = ±1 minute, 3600 = ±1 hour."
|
|
10304
|
+
}
|
|
10305
|
+
}
|
|
10306
|
+
}
|
|
10307
|
+
]
|
|
10308
|
+
},
|
|
10309
|
+
"fuzzy_config": {
|
|
10310
|
+
"type": "object",
|
|
10311
|
+
"properties": {
|
|
10312
|
+
"percentage_threshold": {
|
|
10313
|
+
"type": "number"
|
|
10314
|
+
},
|
|
10315
|
+
"absolute_threshold": {
|
|
10316
|
+
"type": "number"
|
|
10317
|
+
}
|
|
10318
|
+
}
|
|
10319
|
+
},
|
|
10320
|
+
"created_at": {
|
|
10321
|
+
"type": "string",
|
|
10322
|
+
"format": "date-time"
|
|
10323
|
+
},
|
|
10324
|
+
"created_by": {
|
|
10325
|
+
"$ref": "#/components/schemas/ChangesetCreator"
|
|
10326
|
+
},
|
|
10327
|
+
"previous": {
|
|
10328
|
+
"type": "object",
|
|
10329
|
+
"properties": {
|
|
10330
|
+
"value": {
|
|
10331
|
+
"type": "number"
|
|
10332
|
+
},
|
|
10333
|
+
"direction": {
|
|
10334
|
+
"type": "string",
|
|
10335
|
+
"enum": [
|
|
10336
|
+
"feed-in",
|
|
10337
|
+
"feed-out"
|
|
10338
|
+
]
|
|
10339
|
+
},
|
|
10340
|
+
"timestamp": {
|
|
10341
|
+
"type": "string",
|
|
10342
|
+
"format": "date-time"
|
|
10343
|
+
}
|
|
10344
|
+
}
|
|
10345
|
+
}
|
|
10346
|
+
}
|
|
10347
|
+
},
|
|
10348
|
+
"EditMode": {
|
|
10349
|
+
"type": "string",
|
|
10350
|
+
"description": "Controls whether a write goes through immediately or is held as a pending entry\non the parent entity's `_changesets` map.\n\n- `direct`: write applied immediately. No changeset created.\n- `external`: write held as a pending changeset; auto-cleared on a matching direct/ERP write.\n- `approval`: write held as a pending changeset; requires explicit human apply/dismiss.\n\nUsed at two levels: per-attribute (entity-attribute changesets) and per-capability\n(currently the `meter_readings` capability on the Meter schema, gating reading submissions).\n",
|
|
10351
|
+
"enum": [
|
|
10352
|
+
"direct",
|
|
10353
|
+
"external",
|
|
10354
|
+
"approval"
|
|
10355
|
+
],
|
|
10356
|
+
"default": "direct"
|
|
10357
|
+
},
|
|
9774
10358
|
"EditModeConfig": {
|
|
9775
10359
|
"type": "object",
|
|
9776
10360
|
"description": "Configuration for `edit_mode: external` auto-clear matching.\nFields here (`match_strategy`, `fuzzy_config`) only take effect when\n`edit_mode` is `external`. They are ignored for `edit_mode: approval`,\nwhich never auto-clears and is resolved exclusively via the\n`:apply` / `:dismiss` changeset endpoints.\n",
|
|
@@ -9875,6 +10459,16 @@
|
|
|
9875
10459
|
}
|
|
9876
10460
|
},
|
|
9877
10461
|
"parameters": {
|
|
10462
|
+
"AnonymizeQueryParam": {
|
|
10463
|
+
"name": "anonymize",
|
|
10464
|
+
"description": "When true, anonymizes PII in the response: identifiers (names, emails, phone numbers, IBANs) are replaced\nwith deterministic pseudonyms (stable within an org), addresses are generalized to postal code / city / country,\nand well-known free-text fields (e.g. note content) are redacted.\n\nUseful for AI agents and data analysis use cases that must not access personal data.\n\nAnonymization is forced (regardless of this parameter) when the access token was created with `anonymize: true`.\n",
|
|
10465
|
+
"in": "query",
|
|
10466
|
+
"required": false,
|
|
10467
|
+
"schema": {
|
|
10468
|
+
"type": "boolean",
|
|
10469
|
+
"default": false
|
|
10470
|
+
}
|
|
10471
|
+
},
|
|
9878
10472
|
"EntityIdPathParam": {
|
|
9879
10473
|
"name": "id",
|
|
9880
10474
|
"description": "Entity id",
|