@epilot/entity-client 7.2.1 → 7.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/dist/definition.js +1 -1
- package/dist/openapi-runtime.json +55 -0
- package/dist/openapi.d.ts +1270 -173
- package/dist/openapi.json +558 -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,34 @@
|
|
|
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
|
+
}
|
|
4970
5100
|
}
|
|
4971
5101
|
}
|
|
4972
5102
|
},
|
|
@@ -5094,6 +5224,14 @@
|
|
|
5094
5224
|
"items": {
|
|
5095
5225
|
"$ref": "#/components/schemas/GroupHeadline"
|
|
5096
5226
|
}
|
|
5227
|
+
},
|
|
5228
|
+
"conditions": {
|
|
5229
|
+
"type": "array",
|
|
5230
|
+
"nullable": true,
|
|
5231
|
+
"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",
|
|
5232
|
+
"items": {
|
|
5233
|
+
"$ref": "#/components/schemas/ConditionDefinition"
|
|
5234
|
+
}
|
|
5097
5235
|
}
|
|
5098
5236
|
},
|
|
5099
5237
|
"required": [
|
|
@@ -5523,6 +5661,11 @@
|
|
|
5523
5661
|
"type": "boolean",
|
|
5524
5662
|
"default": false
|
|
5525
5663
|
},
|
|
5664
|
+
"variant_overridable": {
|
|
5665
|
+
"type": "boolean",
|
|
5666
|
+
"default": false,
|
|
5667
|
+
"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"
|
|
5668
|
+
},
|
|
5526
5669
|
"default_value": {},
|
|
5527
5670
|
"group": {
|
|
5528
5671
|
"description": "Which group the attribute should appear in. Accepts group ID or group name",
|
|
@@ -5549,6 +5692,14 @@
|
|
|
5549
5692
|
"type": "string",
|
|
5550
5693
|
"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
5694
|
},
|
|
5695
|
+
"data_classification": {
|
|
5696
|
+
"type": "string",
|
|
5697
|
+
"enum": [
|
|
5698
|
+
"public",
|
|
5699
|
+
"pii"
|
|
5700
|
+
],
|
|
5701
|
+
"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"
|
|
5702
|
+
},
|
|
5552
5703
|
"_purpose": {
|
|
5553
5704
|
"type": "array",
|
|
5554
5705
|
"items": {
|
|
@@ -5640,14 +5791,12 @@
|
|
|
5640
5791
|
"type": "boolean"
|
|
5641
5792
|
},
|
|
5642
5793
|
"edit_mode": {
|
|
5643
|
-
"
|
|
5644
|
-
|
|
5645
|
-
|
|
5646
|
-
|
|
5647
|
-
"external",
|
|
5648
|
-
"approval"
|
|
5794
|
+
"allOf": [
|
|
5795
|
+
{
|
|
5796
|
+
"$ref": "#/components/schemas/EditMode"
|
|
5797
|
+
}
|
|
5649
5798
|
],
|
|
5650
|
-
"
|
|
5799
|
+
"description": "Controls how updates to this attribute are handled. See the `EditMode`\nschema for the per-mode semantics. Defaults to `direct`.\n"
|
|
5651
5800
|
},
|
|
5652
5801
|
"edit_mode_config": {
|
|
5653
5802
|
"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,6 +7266,139 @@
|
|
|
7117
7266
|
}
|
|
7118
7267
|
]
|
|
7119
7268
|
},
|
|
7269
|
+
"BaseConditionDefinition": {
|
|
7270
|
+
"type": "object",
|
|
7271
|
+
"properties": {
|
|
7272
|
+
"id": {
|
|
7273
|
+
"type": "string",
|
|
7274
|
+
"format": "uuid",
|
|
7275
|
+
"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",
|
|
7276
|
+
"example": "d5839b94-ba20-4225-a78e-76951d352bd6"
|
|
7277
|
+
},
|
|
7278
|
+
"name": {
|
|
7279
|
+
"type": "string",
|
|
7280
|
+
"pattern": "^[a-z0-9_]+$",
|
|
7281
|
+
"description": "The key variant values are stored under. Unique within the schema and immutable\nonce the condition has been saved.\n",
|
|
7282
|
+
"example": "delivery_area"
|
|
7283
|
+
},
|
|
7284
|
+
"label": {
|
|
7285
|
+
"type": "string",
|
|
7286
|
+
"description": "Display label. Always editable.",
|
|
7287
|
+
"example": "Delivery Area"
|
|
7288
|
+
}
|
|
7289
|
+
},
|
|
7290
|
+
"required": [
|
|
7291
|
+
"id",
|
|
7292
|
+
"name",
|
|
7293
|
+
"label"
|
|
7294
|
+
]
|
|
7295
|
+
},
|
|
7296
|
+
"ScalarConditionDefinition": {
|
|
7297
|
+
"allOf": [
|
|
7298
|
+
{
|
|
7299
|
+
"$ref": "#/components/schemas/BaseConditionDefinition"
|
|
7300
|
+
},
|
|
7301
|
+
{
|
|
7302
|
+
"type": "object",
|
|
7303
|
+
"description": "A condition whose value is a plain scalar, with no further configuration.",
|
|
7304
|
+
"properties": {
|
|
7305
|
+
"type": {
|
|
7306
|
+
"type": "string",
|
|
7307
|
+
"description": "Immutable once the condition has been saved.",
|
|
7308
|
+
"enum": [
|
|
7309
|
+
"string",
|
|
7310
|
+
"number",
|
|
7311
|
+
"date",
|
|
7312
|
+
"daterange",
|
|
7313
|
+
"boolean"
|
|
7314
|
+
]
|
|
7315
|
+
}
|
|
7316
|
+
},
|
|
7317
|
+
"required": [
|
|
7318
|
+
"type"
|
|
7319
|
+
]
|
|
7320
|
+
}
|
|
7321
|
+
]
|
|
7322
|
+
},
|
|
7323
|
+
"SelectConditionDefinition": {
|
|
7324
|
+
"allOf": [
|
|
7325
|
+
{
|
|
7326
|
+
"$ref": "#/components/schemas/BaseConditionDefinition"
|
|
7327
|
+
},
|
|
7328
|
+
{
|
|
7329
|
+
"type": "object",
|
|
7330
|
+
"description": "A condition whose value is one of a fixed set of options.",
|
|
7331
|
+
"properties": {
|
|
7332
|
+
"type": {
|
|
7333
|
+
"type": "string",
|
|
7334
|
+
"description": "Immutable once the condition has been saved.",
|
|
7335
|
+
"enum": [
|
|
7336
|
+
"select"
|
|
7337
|
+
]
|
|
7338
|
+
},
|
|
7339
|
+
"values": {
|
|
7340
|
+
"type": "array",
|
|
7341
|
+
"description": "Selectable options. May be empty while the condition is being configured.",
|
|
7342
|
+
"items": {
|
|
7343
|
+
"type": "string"
|
|
7344
|
+
},
|
|
7345
|
+
"example": [
|
|
7346
|
+
"12_months",
|
|
7347
|
+
"24_months"
|
|
7348
|
+
]
|
|
7349
|
+
}
|
|
7350
|
+
},
|
|
7351
|
+
"required": [
|
|
7352
|
+
"type"
|
|
7353
|
+
]
|
|
7354
|
+
}
|
|
7355
|
+
]
|
|
7356
|
+
},
|
|
7357
|
+
"LocationConditionDefinition": {
|
|
7358
|
+
"allOf": [
|
|
7359
|
+
{
|
|
7360
|
+
"$ref": "#/components/schemas/BaseConditionDefinition"
|
|
7361
|
+
},
|
|
7362
|
+
{
|
|
7363
|
+
"type": "object",
|
|
7364
|
+
"description": "A condition whose value identifies a place.",
|
|
7365
|
+
"properties": {
|
|
7366
|
+
"type": {
|
|
7367
|
+
"type": "string",
|
|
7368
|
+
"description": "Immutable once the condition has been saved.",
|
|
7369
|
+
"enum": [
|
|
7370
|
+
"location"
|
|
7371
|
+
]
|
|
7372
|
+
},
|
|
7373
|
+
"format": {
|
|
7374
|
+
"type": "string",
|
|
7375
|
+
"description": "The shape of the location value. Immutable once the condition has been saved.",
|
|
7376
|
+
"enum": [
|
|
7377
|
+
"zipcode",
|
|
7378
|
+
"zipcode_town"
|
|
7379
|
+
]
|
|
7380
|
+
}
|
|
7381
|
+
},
|
|
7382
|
+
"required": [
|
|
7383
|
+
"type"
|
|
7384
|
+
]
|
|
7385
|
+
}
|
|
7386
|
+
]
|
|
7387
|
+
},
|
|
7388
|
+
"ConditionDefinition": {
|
|
7389
|
+
"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",
|
|
7390
|
+
"oneOf": [
|
|
7391
|
+
{
|
|
7392
|
+
"$ref": "#/components/schemas/ScalarConditionDefinition"
|
|
7393
|
+
},
|
|
7394
|
+
{
|
|
7395
|
+
"$ref": "#/components/schemas/SelectConditionDefinition"
|
|
7396
|
+
},
|
|
7397
|
+
{
|
|
7398
|
+
"$ref": "#/components/schemas/LocationConditionDefinition"
|
|
7399
|
+
}
|
|
7400
|
+
]
|
|
7401
|
+
},
|
|
7120
7402
|
"EntitySlug": {
|
|
7121
7403
|
"description": "URL-friendly identifier for the entity schema",
|
|
7122
7404
|
"type": "string",
|
|
@@ -7581,7 +7863,7 @@
|
|
|
7581
7863
|
"readOnly": true,
|
|
7582
7864
|
"type": "object",
|
|
7583
7865
|
"nullable": true,
|
|
7584
|
-
"description": "Pending attribute changesets for attributes configured with external or approval edit mode.\nRead-only via normal entity PATCH/PUT operations —
|
|
7866
|
+
"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
7867
|
"additionalProperties": {
|
|
7586
7868
|
"$ref": "#/components/schemas/Changeset"
|
|
7587
7869
|
}
|
|
@@ -8092,6 +8374,7 @@
|
|
|
8092
8374
|
"from": {},
|
|
8093
8375
|
"size": {},
|
|
8094
8376
|
"hydrate": {},
|
|
8377
|
+
"anonymize": {},
|
|
8095
8378
|
"fields": {},
|
|
8096
8379
|
"aggs": {},
|
|
8097
8380
|
"include_deleted": {},
|
|
@@ -8176,6 +8459,7 @@
|
|
|
8176
8459
|
"from": {},
|
|
8177
8460
|
"size": {},
|
|
8178
8461
|
"hydrate": {},
|
|
8462
|
+
"anonymize": {},
|
|
8179
8463
|
"fields": {},
|
|
8180
8464
|
"aggs": {},
|
|
8181
8465
|
"include_deleted": {},
|
|
@@ -8400,6 +8684,11 @@
|
|
|
8400
8684
|
"description": "When true, enables entity hydration to resolve nested $relation & $relation_ref references in-place.",
|
|
8401
8685
|
"default": false
|
|
8402
8686
|
},
|
|
8687
|
+
"anonymize": {
|
|
8688
|
+
"type": "boolean",
|
|
8689
|
+
"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",
|
|
8690
|
+
"default": false
|
|
8691
|
+
},
|
|
8403
8692
|
"fields": {
|
|
8404
8693
|
"$ref": "#/components/schemas/FieldsParam"
|
|
8405
8694
|
},
|
|
@@ -9032,6 +9321,9 @@
|
|
|
9032
9321
|
}
|
|
9033
9322
|
}
|
|
9034
9323
|
},
|
|
9324
|
+
"source_context": {
|
|
9325
|
+
"$ref": "#/components/schemas/EntityOperationSourceContext"
|
|
9326
|
+
},
|
|
9035
9327
|
"_workflow_origin": {
|
|
9036
9328
|
"type": "object",
|
|
9037
9329
|
"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 +9337,13 @@
|
|
|
9045
9337
|
"description": "The flow template ID - used to detect and prevent circular triggering"
|
|
9046
9338
|
}
|
|
9047
9339
|
}
|
|
9340
|
+
},
|
|
9341
|
+
"_automation_chain": {
|
|
9342
|
+
"type": "array",
|
|
9343
|
+
"description": "Ordered automation flow ids that caused this change; used to break multi-automation trigger loops.",
|
|
9344
|
+
"items": {
|
|
9345
|
+
"type": "string"
|
|
9346
|
+
}
|
|
9048
9347
|
}
|
|
9049
9348
|
},
|
|
9050
9349
|
"required": [
|
|
@@ -9053,6 +9352,59 @@
|
|
|
9053
9352
|
"operation"
|
|
9054
9353
|
]
|
|
9055
9354
|
},
|
|
9355
|
+
"EntityOperationSourceContext": {
|
|
9356
|
+
"type": "object",
|
|
9357
|
+
"description": "Billing and audit source context for the operation event.",
|
|
9358
|
+
"properties": {
|
|
9359
|
+
"source": {
|
|
9360
|
+
"type": "string",
|
|
9361
|
+
"description": "Normalized source bucket for the operation.",
|
|
9362
|
+
"enum": [
|
|
9363
|
+
"portal",
|
|
9364
|
+
"epilot",
|
|
9365
|
+
"erp",
|
|
9366
|
+
"system",
|
|
9367
|
+
"api",
|
|
9368
|
+
"external",
|
|
9369
|
+
"journey",
|
|
9370
|
+
"automation",
|
|
9371
|
+
"unknown"
|
|
9372
|
+
]
|
|
9373
|
+
},
|
|
9374
|
+
"source_label": {
|
|
9375
|
+
"type": "string",
|
|
9376
|
+
"description": "Original free-form source label from the caller or changeset, when available."
|
|
9377
|
+
},
|
|
9378
|
+
"source_system": {
|
|
9379
|
+
"type": "string",
|
|
9380
|
+
"description": "Optional upstream system label, for example an ERP system name."
|
|
9381
|
+
},
|
|
9382
|
+
"source_reference": {
|
|
9383
|
+
"type": "string",
|
|
9384
|
+
"description": "Optional upstream change reference."
|
|
9385
|
+
},
|
|
9386
|
+
"actor_type": {
|
|
9387
|
+
"type": "string",
|
|
9388
|
+
"enum": [
|
|
9389
|
+
"user",
|
|
9390
|
+
"portal_user",
|
|
9391
|
+
"api_client",
|
|
9392
|
+
"automation",
|
|
9393
|
+
"system"
|
|
9394
|
+
]
|
|
9395
|
+
},
|
|
9396
|
+
"actor_id": {
|
|
9397
|
+
"type": "string"
|
|
9398
|
+
},
|
|
9399
|
+
"effective_at": {
|
|
9400
|
+
"type": "string",
|
|
9401
|
+
"format": "date-time"
|
|
9402
|
+
}
|
|
9403
|
+
},
|
|
9404
|
+
"required": [
|
|
9405
|
+
"source"
|
|
9406
|
+
]
|
|
9407
|
+
},
|
|
9056
9408
|
"BaseActivityItem": {
|
|
9057
9409
|
"allOf": [
|
|
9058
9410
|
{
|
|
@@ -9194,6 +9546,11 @@
|
|
|
9194
9546
|
"user_id": {
|
|
9195
9547
|
"type": "string",
|
|
9196
9548
|
"example": "10598"
|
|
9549
|
+
},
|
|
9550
|
+
"org_id": {
|
|
9551
|
+
"type": "string",
|
|
9552
|
+
"description": "The organization ID of the user who created the view. Used for partner access control.",
|
|
9553
|
+
"example": "739224"
|
|
9197
9554
|
}
|
|
9198
9555
|
}
|
|
9199
9556
|
},
|
|
@@ -9374,7 +9731,8 @@
|
|
|
9374
9731
|
"message",
|
|
9375
9732
|
"portal_user",
|
|
9376
9733
|
"request",
|
|
9377
|
-
"comment"
|
|
9734
|
+
"comment",
|
|
9735
|
+
"user"
|
|
9378
9736
|
]
|
|
9379
9737
|
},
|
|
9380
9738
|
"TaxonomySearchIncludeArchivedParam": {
|
|
@@ -9771,6 +10129,185 @@
|
|
|
9771
10129
|
"$ref": "#/components/schemas/Changeset"
|
|
9772
10130
|
}
|
|
9773
10131
|
},
|
|
10132
|
+
"MeterReadingChangesetEntry": {
|
|
10133
|
+
"type": "object",
|
|
10134
|
+
"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",
|
|
10135
|
+
"required": [
|
|
10136
|
+
"changeset_id",
|
|
10137
|
+
"meter_id",
|
|
10138
|
+
"counter_id",
|
|
10139
|
+
"value",
|
|
10140
|
+
"edit_mode",
|
|
10141
|
+
"created_at"
|
|
10142
|
+
],
|
|
10143
|
+
"properties": {
|
|
10144
|
+
"value": {
|
|
10145
|
+
"type": "number"
|
|
10146
|
+
},
|
|
10147
|
+
"direction": {
|
|
10148
|
+
"type": "string",
|
|
10149
|
+
"enum": [
|
|
10150
|
+
"feed-in",
|
|
10151
|
+
"feed-out"
|
|
10152
|
+
]
|
|
10153
|
+
},
|
|
10154
|
+
"timestamp": {
|
|
10155
|
+
"type": "string",
|
|
10156
|
+
"format": "date-time"
|
|
10157
|
+
},
|
|
10158
|
+
"meter_id": {
|
|
10159
|
+
"type": "string",
|
|
10160
|
+
"format": "uuid"
|
|
10161
|
+
},
|
|
10162
|
+
"counter_id": {
|
|
10163
|
+
"type": "string",
|
|
10164
|
+
"format": "uuid"
|
|
10165
|
+
},
|
|
10166
|
+
"source": {
|
|
10167
|
+
"type": "string"
|
|
10168
|
+
},
|
|
10169
|
+
"reason": {
|
|
10170
|
+
"type": "string"
|
|
10171
|
+
},
|
|
10172
|
+
"read_by": {
|
|
10173
|
+
"type": "string"
|
|
10174
|
+
},
|
|
10175
|
+
"status": {
|
|
10176
|
+
"type": "string",
|
|
10177
|
+
"enum": [
|
|
10178
|
+
"valid",
|
|
10179
|
+
"in-validation",
|
|
10180
|
+
"implausible"
|
|
10181
|
+
]
|
|
10182
|
+
},
|
|
10183
|
+
"external_id": {
|
|
10184
|
+
"type": "string"
|
|
10185
|
+
},
|
|
10186
|
+
"remark": {
|
|
10187
|
+
"type": "string"
|
|
10188
|
+
},
|
|
10189
|
+
"metadata": {
|
|
10190
|
+
"type": "object",
|
|
10191
|
+
"additionalProperties": {
|
|
10192
|
+
"type": "string"
|
|
10193
|
+
}
|
|
10194
|
+
},
|
|
10195
|
+
"changeset_id": {
|
|
10196
|
+
"type": "string",
|
|
10197
|
+
"description": "Unique changeset identifier (UUID v4)."
|
|
10198
|
+
},
|
|
10199
|
+
"edit_mode": {
|
|
10200
|
+
"type": "string",
|
|
10201
|
+
"enum": [
|
|
10202
|
+
"external",
|
|
10203
|
+
"approval"
|
|
10204
|
+
]
|
|
10205
|
+
},
|
|
10206
|
+
"match_strategy": {
|
|
10207
|
+
"type": "string",
|
|
10208
|
+
"enum": [
|
|
10209
|
+
"exact",
|
|
10210
|
+
"fuzzy"
|
|
10211
|
+
]
|
|
10212
|
+
},
|
|
10213
|
+
"timestamp_tolerance": {
|
|
10214
|
+
"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",
|
|
10215
|
+
"oneOf": [
|
|
10216
|
+
{
|
|
10217
|
+
"type": "string",
|
|
10218
|
+
"enum": [
|
|
10219
|
+
"exact"
|
|
10220
|
+
]
|
|
10221
|
+
},
|
|
10222
|
+
{
|
|
10223
|
+
"type": "object",
|
|
10224
|
+
"required": [
|
|
10225
|
+
"type"
|
|
10226
|
+
],
|
|
10227
|
+
"properties": {
|
|
10228
|
+
"type": {
|
|
10229
|
+
"type": "string",
|
|
10230
|
+
"enum": [
|
|
10231
|
+
"same-day"
|
|
10232
|
+
]
|
|
10233
|
+
},
|
|
10234
|
+
"timezone": {
|
|
10235
|
+
"type": "string",
|
|
10236
|
+
"description": "IANA timezone identifier (e.g. `'Europe/Berlin'`, `'UTC'`).\nWhen omitted, the day is bucketed in UTC.\n"
|
|
10237
|
+
}
|
|
10238
|
+
}
|
|
10239
|
+
},
|
|
10240
|
+
{
|
|
10241
|
+
"type": "object",
|
|
10242
|
+
"required": [
|
|
10243
|
+
"type",
|
|
10244
|
+
"seconds"
|
|
10245
|
+
],
|
|
10246
|
+
"properties": {
|
|
10247
|
+
"type": {
|
|
10248
|
+
"type": "string",
|
|
10249
|
+
"enum": [
|
|
10250
|
+
"within-seconds"
|
|
10251
|
+
]
|
|
10252
|
+
},
|
|
10253
|
+
"seconds": {
|
|
10254
|
+
"type": "integer",
|
|
10255
|
+
"minimum": 0,
|
|
10256
|
+
"description": "Tolerance in seconds. e.g. 60 = ±1 minute, 3600 = ±1 hour."
|
|
10257
|
+
}
|
|
10258
|
+
}
|
|
10259
|
+
}
|
|
10260
|
+
]
|
|
10261
|
+
},
|
|
10262
|
+
"fuzzy_config": {
|
|
10263
|
+
"type": "object",
|
|
10264
|
+
"properties": {
|
|
10265
|
+
"percentage_threshold": {
|
|
10266
|
+
"type": "number"
|
|
10267
|
+
},
|
|
10268
|
+
"absolute_threshold": {
|
|
10269
|
+
"type": "number"
|
|
10270
|
+
}
|
|
10271
|
+
}
|
|
10272
|
+
},
|
|
10273
|
+
"created_at": {
|
|
10274
|
+
"type": "string",
|
|
10275
|
+
"format": "date-time"
|
|
10276
|
+
},
|
|
10277
|
+
"created_by": {
|
|
10278
|
+
"$ref": "#/components/schemas/ChangesetCreator"
|
|
10279
|
+
},
|
|
10280
|
+
"previous": {
|
|
10281
|
+
"type": "object",
|
|
10282
|
+
"properties": {
|
|
10283
|
+
"value": {
|
|
10284
|
+
"type": "number"
|
|
10285
|
+
},
|
|
10286
|
+
"direction": {
|
|
10287
|
+
"type": "string",
|
|
10288
|
+
"enum": [
|
|
10289
|
+
"feed-in",
|
|
10290
|
+
"feed-out"
|
|
10291
|
+
]
|
|
10292
|
+
},
|
|
10293
|
+
"timestamp": {
|
|
10294
|
+
"type": "string",
|
|
10295
|
+
"format": "date-time"
|
|
10296
|
+
}
|
|
10297
|
+
}
|
|
10298
|
+
}
|
|
10299
|
+
}
|
|
10300
|
+
},
|
|
10301
|
+
"EditMode": {
|
|
10302
|
+
"type": "string",
|
|
10303
|
+
"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",
|
|
10304
|
+
"enum": [
|
|
10305
|
+
"direct",
|
|
10306
|
+
"external",
|
|
10307
|
+
"approval"
|
|
10308
|
+
],
|
|
10309
|
+
"default": "direct"
|
|
10310
|
+
},
|
|
9774
10311
|
"EditModeConfig": {
|
|
9775
10312
|
"type": "object",
|
|
9776
10313
|
"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 +10412,16 @@
|
|
|
9875
10412
|
}
|
|
9876
10413
|
},
|
|
9877
10414
|
"parameters": {
|
|
10415
|
+
"AnonymizeQueryParam": {
|
|
10416
|
+
"name": "anonymize",
|
|
10417
|
+
"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",
|
|
10418
|
+
"in": "query",
|
|
10419
|
+
"required": false,
|
|
10420
|
+
"schema": {
|
|
10421
|
+
"type": "boolean",
|
|
10422
|
+
"default": false
|
|
10423
|
+
}
|
|
10424
|
+
},
|
|
9878
10425
|
"EntityIdPathParam": {
|
|
9879
10426
|
"name": "id",
|
|
9880
10427
|
"description": "Entity id",
|