@epilot/customer-portal-client 0.39.15 → 0.41.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/dist/definition.js +1 -1
- package/dist/openapi-runtime.json +43 -0
- package/dist/openapi.d.ts +1182 -210
- package/package.json +1 -1
- package/src/openapi-runtime.json +43 -0
- package/src/openapi.json +486 -19
package/src/openapi.json
CHANGED
|
@@ -884,7 +884,7 @@
|
|
|
884
884
|
"/v2/portal/consumption": {
|
|
885
885
|
"get": {
|
|
886
886
|
"operationId": "getConsumption",
|
|
887
|
-
"summary": "
|
|
887
|
+
"summary": "getConsumption",
|
|
888
888
|
"description": "Get energy consumption data between a given time period.",
|
|
889
889
|
"tags": [
|
|
890
890
|
"ECP"
|
|
@@ -1039,7 +1039,7 @@
|
|
|
1039
1039
|
"/v2/portal/visualization:export": {
|
|
1040
1040
|
"post": {
|
|
1041
1041
|
"operationId": "prepareVisualizationExport",
|
|
1042
|
-
"summary": "
|
|
1042
|
+
"summary": "prepareVisualizationExport",
|
|
1043
1043
|
"description": "Asks an installed App to prepare a downloadable export of a visualization (consumption chart, dynamic tariff chart, etc.). The export is produced by the third-party App via a configured portal extension hook of type `dataExport` — this endpoint does not generate the file itself, it forwards the request to the configured hook and returns the descriptor the App provides (typically a `download_url`).\n",
|
|
1044
1044
|
"tags": [
|
|
1045
1045
|
"ECP"
|
|
@@ -1143,7 +1143,7 @@
|
|
|
1143
1143
|
"/v2/portal/visualization/metadata": {
|
|
1144
1144
|
"get": {
|
|
1145
1145
|
"operationId": "getVisualizationMetadata",
|
|
1146
|
-
"summary": "
|
|
1146
|
+
"summary": "getVisualizationMetadata",
|
|
1147
1147
|
"description": "Returns runtime metadata describing how a visualization (consumption / price / cost chart) should be rendered for a given portal context (meter, contract, etc). Resolves the extension's `visualizationMetadata` hook implicitly from `app_id` + `extensionId` and invokes it. Supplies the response as a structured payload that the portal uses to configure type/aggregation options, supported intervals, and the available data range.\n",
|
|
1148
1148
|
"tags": [
|
|
1149
1149
|
"ECP"
|
|
@@ -1211,7 +1211,7 @@
|
|
|
1211
1211
|
"/v2/portal/costs": {
|
|
1212
1212
|
"get": {
|
|
1213
1213
|
"operationId": "getCosts",
|
|
1214
|
-
"summary": "
|
|
1214
|
+
"summary": "getCosts",
|
|
1215
1215
|
"description": "Get energy cost data between a given time period.",
|
|
1216
1216
|
"tags": [
|
|
1217
1217
|
"ECP"
|
|
@@ -1385,7 +1385,7 @@
|
|
|
1385
1385
|
"/v2/portal/prices": {
|
|
1386
1386
|
"get": {
|
|
1387
1387
|
"operationId": "getPrices",
|
|
1388
|
-
"summary": "
|
|
1388
|
+
"summary": "getPrices",
|
|
1389
1389
|
"description": "Get energy prices data between a given time period.",
|
|
1390
1390
|
"tags": [
|
|
1391
1391
|
"ECP"
|
|
@@ -3119,6 +3119,10 @@
|
|
|
3119
3119
|
"journey_registration_email": {
|
|
3120
3120
|
"type": "string",
|
|
3121
3121
|
"description": "The email address registered in the journey's Login & Registration block"
|
|
3122
|
+
},
|
|
3123
|
+
"journey_registration_portal_id": {
|
|
3124
|
+
"type": "string",
|
|
3125
|
+
"description": "The portal selected on the journey's Login & Registration block, used to target the registration link to that portal"
|
|
3122
3126
|
}
|
|
3123
3127
|
}
|
|
3124
3128
|
}
|
|
@@ -4252,7 +4256,7 @@
|
|
|
4252
4256
|
},
|
|
4253
4257
|
"password": {
|
|
4254
4258
|
"type": "string",
|
|
4255
|
-
"description": "Password of the portal user for confirmation.\nRequired unless a `changeEmail` portal extension hook with `require_password_confirmation` disabled is configured for the portal
|
|
4259
|
+
"description": "Password of the portal user for confirmation.\nRequired unless a `changeEmail` portal extension hook with `require_password_confirmation` disabled is configured for the portal,\nor the portal user's identity is managed by an identity provider - an SSO login has no password to confirm.\n"
|
|
4256
4260
|
}
|
|
4257
4261
|
}
|
|
4258
4262
|
}
|
|
@@ -6965,6 +6969,56 @@
|
|
|
6965
6969
|
}
|
|
6966
6970
|
}
|
|
6967
6971
|
},
|
|
6972
|
+
"/v2/portal/user/file/{id}/preview": {
|
|
6973
|
+
"get": {
|
|
6974
|
+
"operationId": "getFilePreview",
|
|
6975
|
+
"summary": "getFilePreview",
|
|
6976
|
+
"description": "resolves an in-portal preview for a file. Returns a Content-Disposition: inline URL for directly-previewable files (PDF, common image formats), or a document-api PDF conversion result for the Office formats it currently supports (docx/xls/xlsx/xlsm) -- NOT doc/csv/pptx, which document-api's conversion does not cover today. Returns { kind: \"unsupported\" } (no url) for anything else, so the caller can fall back to the existing download flow. An optional `download_url` is returned for all kinds — including \"unsupported\" — whenever the file entity exposes one, so the client can render a real anchor for its Download action; it is only a Content-Disposition: attachment URL for private files, and for other access levels it is the plain object URL, which may render inline. The previewability decision is made server-side from the file's own filename/mime_type — never trust a client-supplied kind for anything security-sensitive.",
|
|
6977
|
+
"tags": [
|
|
6978
|
+
"ECP"
|
|
6979
|
+
],
|
|
6980
|
+
"security": [
|
|
6981
|
+
{
|
|
6982
|
+
"PortalAuth": []
|
|
6983
|
+
}
|
|
6984
|
+
],
|
|
6985
|
+
"parameters": [
|
|
6986
|
+
{
|
|
6987
|
+
"in": "path",
|
|
6988
|
+
"name": "id",
|
|
6989
|
+
"schema": {
|
|
6990
|
+
"$ref": "#/components/schemas/EntityId"
|
|
6991
|
+
},
|
|
6992
|
+
"required": true,
|
|
6993
|
+
"description": "The Id of a file"
|
|
6994
|
+
}
|
|
6995
|
+
],
|
|
6996
|
+
"responses": {
|
|
6997
|
+
"200": {
|
|
6998
|
+
"description": "The file preview was resolved (which may still indicate kind \"unsupported\" with no url).",
|
|
6999
|
+
"content": {
|
|
7000
|
+
"application/json": {
|
|
7001
|
+
"schema": {
|
|
7002
|
+
"$ref": "#/components/schemas/FilePreviewResult"
|
|
7003
|
+
}
|
|
7004
|
+
}
|
|
7005
|
+
}
|
|
7006
|
+
},
|
|
7007
|
+
"401": {
|
|
7008
|
+
"$ref": "#/components/responses/Unauthorized"
|
|
7009
|
+
},
|
|
7010
|
+
"403": {
|
|
7011
|
+
"$ref": "#/components/responses/Forbidden"
|
|
7012
|
+
},
|
|
7013
|
+
"404": {
|
|
7014
|
+
"$ref": "#/components/responses/NotFound"
|
|
7015
|
+
},
|
|
7016
|
+
"500": {
|
|
7017
|
+
"$ref": "#/components/responses/InternalServerError"
|
|
7018
|
+
}
|
|
7019
|
+
}
|
|
7020
|
+
}
|
|
7021
|
+
},
|
|
6968
7022
|
"/v2/portal/user/file/{id}/downloaded": {
|
|
6969
7023
|
"post": {
|
|
6970
7024
|
"operationId": "trackFileDownloaded",
|
|
@@ -7023,7 +7077,7 @@
|
|
|
7023
7077
|
"/v2/portal/user/files/count-by-entity": {
|
|
7024
7078
|
"get": {
|
|
7025
7079
|
"operationId": "getFilesCountByEntity",
|
|
7026
|
-
"summary": "
|
|
7080
|
+
"summary": "getFilesCountByEntity",
|
|
7027
7081
|
"description": "Fetch file counts for all ECP user related entities",
|
|
7028
7082
|
"deprecated": true,
|
|
7029
7083
|
"tags": [
|
|
@@ -7911,7 +7965,7 @@
|
|
|
7911
7965
|
"/v2/portal/entity/{slug}/{id}/workflows": {
|
|
7912
7966
|
"get": {
|
|
7913
7967
|
"operationId": "getEntityWorkflows",
|
|
7914
|
-
"summary": "
|
|
7968
|
+
"summary": "getEntityWorkflows",
|
|
7915
7969
|
"description": "Get all workflows associated with an entity (requires access to the entity)",
|
|
7916
7970
|
"tags": [
|
|
7917
7971
|
"ECP"
|
|
@@ -7977,10 +8031,165 @@
|
|
|
7977
8031
|
}
|
|
7978
8032
|
}
|
|
7979
8033
|
},
|
|
8034
|
+
"/v2/portal/entity/{slug}/{id}/workflows/linearized": {
|
|
8035
|
+
"get": {
|
|
8036
|
+
"operationId": "getEntityPortalWorkflows",
|
|
8037
|
+
"summary": "getEntityPortalWorkflows",
|
|
8038
|
+
"description": "Get all portal-relevant workflows associated with an entity (requires access to the entity),\nlinearized by the Workflows API into a flat, ordered list of portal-visible tasks.\n\nUnlike `getEntityWorkflows`, this endpoint returns a single uniform shape for both legacy\n(V1) workflow executions and graph-based (V2) flow executions — the execution graph is\nalready resolved server-side (active path, task reachability, chronological ordering), so\nclients can render a timeline without any graph traversal logic.\n\nTasks carry the config of both portal audiences (`ecp` and `installer`); clients filter\nper their configured audience, so one response serves every block on a page.\n",
|
|
8039
|
+
"tags": [
|
|
8040
|
+
"ECP"
|
|
8041
|
+
],
|
|
8042
|
+
"security": [
|
|
8043
|
+
{
|
|
8044
|
+
"PortalAuth": []
|
|
8045
|
+
}
|
|
8046
|
+
],
|
|
8047
|
+
"parameters": [
|
|
8048
|
+
{
|
|
8049
|
+
"in": "path",
|
|
8050
|
+
"name": "slug",
|
|
8051
|
+
"required": true,
|
|
8052
|
+
"schema": {
|
|
8053
|
+
"type": "string",
|
|
8054
|
+
"description": "Schema slug of the entity",
|
|
8055
|
+
"example": "opportunity"
|
|
8056
|
+
}
|
|
8057
|
+
},
|
|
8058
|
+
{
|
|
8059
|
+
"in": "path",
|
|
8060
|
+
"name": "id",
|
|
8061
|
+
"required": true,
|
|
8062
|
+
"schema": {
|
|
8063
|
+
"type": "string",
|
|
8064
|
+
"description": "ID of the entity",
|
|
8065
|
+
"example": "abc123"
|
|
8066
|
+
}
|
|
8067
|
+
}
|
|
8068
|
+
],
|
|
8069
|
+
"responses": {
|
|
8070
|
+
"200": {
|
|
8071
|
+
"description": "Portal-relevant workflows for the entity, each with linearized tasks",
|
|
8072
|
+
"content": {
|
|
8073
|
+
"application/json": {
|
|
8074
|
+
"schema": {
|
|
8075
|
+
"type": "object",
|
|
8076
|
+
"properties": {
|
|
8077
|
+
"portal_workflows": {
|
|
8078
|
+
"type": "array",
|
|
8079
|
+
"items": {
|
|
8080
|
+
"$ref": "#/components/schemas/PortalWorkflow"
|
|
8081
|
+
}
|
|
8082
|
+
}
|
|
8083
|
+
}
|
|
8084
|
+
}
|
|
8085
|
+
}
|
|
8086
|
+
}
|
|
8087
|
+
},
|
|
8088
|
+
"401": {
|
|
8089
|
+
"$ref": "#/components/responses/Unauthorized"
|
|
8090
|
+
},
|
|
8091
|
+
"403": {
|
|
8092
|
+
"$ref": "#/components/responses/Forbidden"
|
|
8093
|
+
},
|
|
8094
|
+
"404": {
|
|
8095
|
+
"$ref": "#/components/responses/NotFound"
|
|
8096
|
+
},
|
|
8097
|
+
"500": {
|
|
8098
|
+
"$ref": "#/components/responses/InternalServerError"
|
|
8099
|
+
}
|
|
8100
|
+
}
|
|
8101
|
+
}
|
|
8102
|
+
},
|
|
8103
|
+
"/v2/portal/entities/workflows/linearized/batch": {
|
|
8104
|
+
"post": {
|
|
8105
|
+
"operationId": "getEntityPortalWorkflowsBatch",
|
|
8106
|
+
"summary": "getEntityPortalWorkflowsBatch",
|
|
8107
|
+
"description": "Batch variant of `getEntityPortalWorkflows`: returns portal-relevant workflows for\nup to 50 entities — schemas may differ — in a single call, each already linearized\nby the Workflows API into a flat, ordered list of portal-visible tasks.\n\nIntended for portal list views (e.g. an entity list where every card shows its\nworkflow progress). Entities the portal user cannot access are omitted from the\nresponse; an entry with an empty task list means the entity has no portal-relevant\nworkflow.\n",
|
|
8108
|
+
"tags": [
|
|
8109
|
+
"ECP"
|
|
8110
|
+
],
|
|
8111
|
+
"security": [
|
|
8112
|
+
{
|
|
8113
|
+
"PortalAuth": []
|
|
8114
|
+
}
|
|
8115
|
+
],
|
|
8116
|
+
"requestBody": {
|
|
8117
|
+
"description": "Entities to load portal workflows for",
|
|
8118
|
+
"required": true,
|
|
8119
|
+
"content": {
|
|
8120
|
+
"application/json": {
|
|
8121
|
+
"schema": {
|
|
8122
|
+
"type": "object",
|
|
8123
|
+
"properties": {
|
|
8124
|
+
"entities": {
|
|
8125
|
+
"type": "array",
|
|
8126
|
+
"items": {
|
|
8127
|
+
"type": "object",
|
|
8128
|
+
"properties": {
|
|
8129
|
+
"id": {
|
|
8130
|
+
"type": "string",
|
|
8131
|
+
"description": "ID of the entity"
|
|
8132
|
+
},
|
|
8133
|
+
"slug": {
|
|
8134
|
+
"type": "string",
|
|
8135
|
+
"description": "Schema slug of the entity",
|
|
8136
|
+
"example": "order"
|
|
8137
|
+
}
|
|
8138
|
+
},
|
|
8139
|
+
"required": [
|
|
8140
|
+
"id",
|
|
8141
|
+
"slug"
|
|
8142
|
+
]
|
|
8143
|
+
},
|
|
8144
|
+
"minItems": 1,
|
|
8145
|
+
"maxItems": 50
|
|
8146
|
+
}
|
|
8147
|
+
},
|
|
8148
|
+
"required": [
|
|
8149
|
+
"entities"
|
|
8150
|
+
]
|
|
8151
|
+
}
|
|
8152
|
+
}
|
|
8153
|
+
}
|
|
8154
|
+
},
|
|
8155
|
+
"responses": {
|
|
8156
|
+
"200": {
|
|
8157
|
+
"description": "One entry per accessible entity, each with its linearized workflows",
|
|
8158
|
+
"content": {
|
|
8159
|
+
"application/json": {
|
|
8160
|
+
"schema": {
|
|
8161
|
+
"type": "object",
|
|
8162
|
+
"properties": {
|
|
8163
|
+
"results": {
|
|
8164
|
+
"type": "array",
|
|
8165
|
+
"items": {
|
|
8166
|
+
"$ref": "#/components/schemas/EntityPortalWorkflows"
|
|
8167
|
+
}
|
|
8168
|
+
}
|
|
8169
|
+
}
|
|
8170
|
+
}
|
|
8171
|
+
}
|
|
8172
|
+
}
|
|
8173
|
+
},
|
|
8174
|
+
"400": {
|
|
8175
|
+
"$ref": "#/components/responses/InvalidRequest"
|
|
8176
|
+
},
|
|
8177
|
+
"401": {
|
|
8178
|
+
"$ref": "#/components/responses/Unauthorized"
|
|
8179
|
+
},
|
|
8180
|
+
"403": {
|
|
8181
|
+
"$ref": "#/components/responses/Forbidden"
|
|
8182
|
+
},
|
|
8183
|
+
"500": {
|
|
8184
|
+
"$ref": "#/components/responses/InternalServerError"
|
|
8185
|
+
}
|
|
8186
|
+
}
|
|
8187
|
+
}
|
|
8188
|
+
},
|
|
7980
8189
|
"/v2/portal/metering/reading/photo": {
|
|
7981
8190
|
"post": {
|
|
7982
8191
|
"operationId": "uploadMeterReadingPhoto",
|
|
7983
|
-
"summary": "
|
|
8192
|
+
"summary": "uploadMeterReadingPhoto",
|
|
7984
8193
|
"description": "Uploads a Meter Reading photo and - if enabled - gives back data extracted from the photo.",
|
|
7985
8194
|
"tags": [
|
|
7986
8195
|
"ECP"
|
|
@@ -8035,7 +8244,7 @@
|
|
|
8035
8244
|
"/v2/portal/metering/reading": {
|
|
8036
8245
|
"post": {
|
|
8037
8246
|
"operationId": "createMeterReading",
|
|
8038
|
-
"summary": "
|
|
8247
|
+
"summary": "createMeterReading",
|
|
8039
8248
|
"description": "Inserts a new meter reading.",
|
|
8040
8249
|
"tags": [
|
|
8041
8250
|
"ECP"
|
|
@@ -8102,6 +8311,7 @@
|
|
|
8102
8311
|
"/v2/portal/metering/reading/allowed-range/{meter_id}": {
|
|
8103
8312
|
"get": {
|
|
8104
8313
|
"operationId": "getAllowedMeterReadingRange",
|
|
8314
|
+
"summary": "getAllowedMeterReadingRange",
|
|
8105
8315
|
"description": "Get allowed reading range for all counters of a meter from the configured\nthird-party plausibility check hook using 'range' mode. This endpoint requires\na plausibility check hook to be configured for the portal.\n",
|
|
8106
8316
|
"tags": [
|
|
8107
8317
|
"ECP"
|
|
@@ -8203,7 +8413,7 @@
|
|
|
8203
8413
|
"/v2/portal/metering/readings": {
|
|
8204
8414
|
"post": {
|
|
8205
8415
|
"operationId": "getMeterReadings",
|
|
8206
|
-
"summary": "
|
|
8416
|
+
"summary": "getMeterReadings",
|
|
8207
8417
|
"description": "Fetches meter readings for a counter and optionally resolves Handlebars\ntemplate strings against each reading object using @epilot/variables.\n",
|
|
8208
8418
|
"tags": [
|
|
8209
8419
|
"ECP"
|
|
@@ -9548,7 +9758,7 @@
|
|
|
9548
9758
|
"/v2/portal/campaign/{campaign_id}/entity:status": {
|
|
9549
9759
|
"put": {
|
|
9550
9760
|
"operationId": "updateCampaignPortalBlockStatus",
|
|
9551
|
-
"summary": "
|
|
9761
|
+
"summary": "updateCampaignPortalBlockStatus",
|
|
9552
9762
|
"description": "Updates the status of a campaign portal block for multiple recipients.",
|
|
9553
9763
|
"tags": [
|
|
9554
9764
|
"ECP"
|
|
@@ -10202,7 +10412,7 @@
|
|
|
10202
10412
|
"items": {
|
|
10203
10413
|
"$ref": "#/components/schemas/SwappableConfig"
|
|
10204
10414
|
},
|
|
10205
|
-
"description": "
|
|
10415
|
+
"description": "Optional, opt-in configuration items to additionally swap on top of the always-swapped pages and functional config. Defaults to an empty list (nothing extra swapped). Domain and access/security settings can never be swapped."
|
|
10206
10416
|
}
|
|
10207
10417
|
}
|
|
10208
10418
|
}
|
|
@@ -11510,6 +11720,10 @@
|
|
|
11510
11720
|
"message": {
|
|
11511
11721
|
"type": "string",
|
|
11512
11722
|
"description": "Error message"
|
|
11723
|
+
},
|
|
11724
|
+
"reason": {
|
|
11725
|
+
"type": "string",
|
|
11726
|
+
"description": "Machine-readable cause, when the API can name one. `PORTAL_USER_PENDING_ACTIVATION` means the portal user is authenticated but not mapped to a contact yet, so re-authenticating will not help."
|
|
11513
11727
|
}
|
|
11514
11728
|
}
|
|
11515
11729
|
},
|
|
@@ -11925,7 +12139,7 @@
|
|
|
11925
12139
|
},
|
|
11926
12140
|
"identity_providers": {
|
|
11927
12141
|
"type": "array",
|
|
11928
|
-
"description": "SSO identity providers for the portal. When sent on a portal save (PUT/POST),\nthe list is fully synced — incoming providers are upserted and any existing\nproviders not in the list are deleted. Omit the field to leave SSO\nconfiguration unchanged; send an empty array to remove all providers.\n\
|
|
12142
|
+
"description": "SSO identity providers for the portal. When sent on a portal save (PUT/POST),\nthe list is fully synced — incoming providers are upserted and any existing\nproviders not in the list are deleted. Omit the field to leave SSO\nconfiguration unchanged; send an empty array to remove all providers.\n\nSecrets: a provider sent without `oidc_config.client_secret` keeps the\nstored secret for the same slug; an explicit empty string clears it.\n`getPortalConfigV3` returns providers with raw secrets redacted;\n`{{ env.VAR }}` references pass through.\n",
|
|
11929
12143
|
"items": {
|
|
11930
12144
|
"$ref": "#/components/schemas/ProviderConfig"
|
|
11931
12145
|
}
|
|
@@ -14300,6 +14514,33 @@
|
|
|
14300
14514
|
}
|
|
14301
14515
|
]
|
|
14302
14516
|
},
|
|
14517
|
+
"FilePreviewResult": {
|
|
14518
|
+
"type": "object",
|
|
14519
|
+
"required": [
|
|
14520
|
+
"kind"
|
|
14521
|
+
],
|
|
14522
|
+
"properties": {
|
|
14523
|
+
"kind": {
|
|
14524
|
+
"type": "string",
|
|
14525
|
+
"description": "What kind of preview (if any) is available. \"pdf\" covers both native PDFs and Office documents that were converted to PDF server-side. \"unsupported\" means no preview is available and the caller should fall back to download.",
|
|
14526
|
+
"enum": [
|
|
14527
|
+
"pdf",
|
|
14528
|
+
"image",
|
|
14529
|
+
"unsupported"
|
|
14530
|
+
]
|
|
14531
|
+
},
|
|
14532
|
+
"url": {
|
|
14533
|
+
"type": "string",
|
|
14534
|
+
"format": "uri",
|
|
14535
|
+
"description": "A Content-Disposition: inline URL to render in a preview viewer. Present only when kind is \"pdf\" or \"image\". Short-lived — do not cache across dialog opens."
|
|
14536
|
+
},
|
|
14537
|
+
"download_url": {
|
|
14538
|
+
"type": "string",
|
|
14539
|
+
"format": "uri",
|
|
14540
|
+
"description": "Optional download URL for the file, returned for any kind — including \"unsupported\" — whenever the file entity exposes one. It is only a Content-Disposition: attachment URL for files with access_control \"private\", where it is a short-lived signed URL; for any other access level it is the file entity's plain public/CDN object URL, which carries no attachment disposition and may render inline in the browser. Absent when the file entity exposes no usable URL, so clients must handle it being missing."
|
|
14541
|
+
}
|
|
14542
|
+
}
|
|
14543
|
+
},
|
|
14303
14544
|
"EntityFileCount": {
|
|
14304
14545
|
"type": "object",
|
|
14305
14546
|
"required": [
|
|
@@ -14623,6 +14864,234 @@
|
|
|
14623
14864
|
"completedTime": "2024-01-13T05:18:43.827Z"
|
|
14624
14865
|
}
|
|
14625
14866
|
},
|
|
14867
|
+
"PortalWorkflow": {
|
|
14868
|
+
"type": "object",
|
|
14869
|
+
"description": "A portal-facing projection of a workflow execution (V1 or V2), with the execution\ngraph already linearized by the Workflows API into a flat, ordered list of\nportal-visible tasks.\n",
|
|
14870
|
+
"properties": {
|
|
14871
|
+
"id": {
|
|
14872
|
+
"type": "string",
|
|
14873
|
+
"description": "Id of the workflow / flow execution"
|
|
14874
|
+
},
|
|
14875
|
+
"definition_id": {
|
|
14876
|
+
"type": "string",
|
|
14877
|
+
"description": "Id of the workflow definition / flow template this execution was created from"
|
|
14878
|
+
},
|
|
14879
|
+
"name": {
|
|
14880
|
+
"type": "string"
|
|
14881
|
+
},
|
|
14882
|
+
"status": {
|
|
14883
|
+
"type": "string",
|
|
14884
|
+
"enum": [
|
|
14885
|
+
"STARTED",
|
|
14886
|
+
"DONE",
|
|
14887
|
+
"CLOSED"
|
|
14888
|
+
]
|
|
14889
|
+
},
|
|
14890
|
+
"version": {
|
|
14891
|
+
"type": "integer",
|
|
14892
|
+
"description": "2 = legacy V1 workflow execution (linear model), 3 = V2 flow execution (graph model)",
|
|
14893
|
+
"enum": [
|
|
14894
|
+
2,
|
|
14895
|
+
3
|
|
14896
|
+
]
|
|
14897
|
+
},
|
|
14898
|
+
"created_at": {
|
|
14899
|
+
"type": "string",
|
|
14900
|
+
"description": "Creation timestamp, doubles as started time"
|
|
14901
|
+
},
|
|
14902
|
+
"updated_at": {
|
|
14903
|
+
"type": "string",
|
|
14904
|
+
"description": "Last update timestamp"
|
|
14905
|
+
},
|
|
14906
|
+
"completed_at": {
|
|
14907
|
+
"type": "string",
|
|
14908
|
+
"description": "Timestamp when the execution was completed, if it is"
|
|
14909
|
+
},
|
|
14910
|
+
"due_date": {
|
|
14911
|
+
"type": "string"
|
|
14912
|
+
},
|
|
14913
|
+
"assigned_to": {
|
|
14914
|
+
"type": "array",
|
|
14915
|
+
"items": {
|
|
14916
|
+
"type": "string"
|
|
14917
|
+
}
|
|
14918
|
+
},
|
|
14919
|
+
"contexts": {
|
|
14920
|
+
"type": "array",
|
|
14921
|
+
"items": {
|
|
14922
|
+
"type": "object",
|
|
14923
|
+
"properties": {
|
|
14924
|
+
"entity_id": {
|
|
14925
|
+
"type": "string"
|
|
14926
|
+
},
|
|
14927
|
+
"entity_schema": {
|
|
14928
|
+
"type": "string"
|
|
14929
|
+
},
|
|
14930
|
+
"is_primary": {
|
|
14931
|
+
"type": "boolean"
|
|
14932
|
+
}
|
|
14933
|
+
}
|
|
14934
|
+
}
|
|
14935
|
+
},
|
|
14936
|
+
"is_path_complete": {
|
|
14937
|
+
"type": "boolean",
|
|
14938
|
+
"description": "True when the linearized path reached the end of the execution graph. False when an\nunevaluated decision task was encountered, meaning additional tasks may appear once\nthe decision is resolved (the returned tasks are still the guaranteed active path).\nAlways true for V1 executions.\n"
|
|
14939
|
+
},
|
|
14940
|
+
"tasks": {
|
|
14941
|
+
"type": "array",
|
|
14942
|
+
"description": "Portal-visible tasks in linear (timeline) order",
|
|
14943
|
+
"items": {
|
|
14944
|
+
"$ref": "#/components/schemas/PortalWorkflowTask"
|
|
14945
|
+
}
|
|
14946
|
+
}
|
|
14947
|
+
},
|
|
14948
|
+
"required": [
|
|
14949
|
+
"id",
|
|
14950
|
+
"name",
|
|
14951
|
+
"status",
|
|
14952
|
+
"version",
|
|
14953
|
+
"is_path_complete",
|
|
14954
|
+
"tasks"
|
|
14955
|
+
]
|
|
14956
|
+
},
|
|
14957
|
+
"PortalWorkflowTask": {
|
|
14958
|
+
"type": "object",
|
|
14959
|
+
"description": "A single portal-visible task of a linearized workflow execution",
|
|
14960
|
+
"properties": {
|
|
14961
|
+
"id": {
|
|
14962
|
+
"type": "string",
|
|
14963
|
+
"description": "Id of the underlying task (V2) or step (V1)"
|
|
14964
|
+
},
|
|
14965
|
+
"name": {
|
|
14966
|
+
"type": "string",
|
|
14967
|
+
"description": "Internal task/step name (fallback label when the portal config has none)"
|
|
14968
|
+
},
|
|
14969
|
+
"order": {
|
|
14970
|
+
"type": "integer",
|
|
14971
|
+
"description": "Zero-based position of the task in the linearized timeline"
|
|
14972
|
+
},
|
|
14973
|
+
"status": {
|
|
14974
|
+
"type": "string",
|
|
14975
|
+
"enum": [
|
|
14976
|
+
"COMPLETED",
|
|
14977
|
+
"SKIPPED",
|
|
14978
|
+
"IN_PROGRESS",
|
|
14979
|
+
"PENDING"
|
|
14980
|
+
],
|
|
14981
|
+
"description": "Normalized task status:\n- COMPLETED / SKIPPED: the task is done (skipped tasks count as done for progress)\n- IN_PROGRESS: the task has been reached and work has started\n- PENDING: the task has not been completed yet\n"
|
|
14982
|
+
},
|
|
14983
|
+
"is_active": {
|
|
14984
|
+
"type": "boolean",
|
|
14985
|
+
"description": "True when the task has been reached in the execution — all predecessor tasks on its\npath are completed/skipped — so the portal user can act on it (e.g. start its journey).\nTasks that are only part of the projected future path are returned with is_active false.\n"
|
|
14986
|
+
},
|
|
14987
|
+
"ecp": {
|
|
14988
|
+
"$ref": "#/components/schemas/PortalTaskConfig"
|
|
14989
|
+
},
|
|
14990
|
+
"installer": {
|
|
14991
|
+
"$ref": "#/components/schemas/PortalTaskConfig"
|
|
14992
|
+
},
|
|
14993
|
+
"journey": {
|
|
14994
|
+
"type": "object",
|
|
14995
|
+
"description": "Journey linked to the task, if any",
|
|
14996
|
+
"properties": {
|
|
14997
|
+
"id": {
|
|
14998
|
+
"type": "string"
|
|
14999
|
+
},
|
|
15000
|
+
"journeyId": {
|
|
15001
|
+
"type": "string"
|
|
15002
|
+
},
|
|
15003
|
+
"name": {
|
|
15004
|
+
"type": "string"
|
|
15005
|
+
},
|
|
15006
|
+
"complete_task_automatically": {
|
|
15007
|
+
"type": "boolean",
|
|
15008
|
+
"description": "If true, the task is auto completed when the journey is completed"
|
|
15009
|
+
}
|
|
15010
|
+
}
|
|
15011
|
+
},
|
|
15012
|
+
"assigned_to": {
|
|
15013
|
+
"type": "array",
|
|
15014
|
+
"items": {
|
|
15015
|
+
"type": "string"
|
|
15016
|
+
}
|
|
15017
|
+
},
|
|
15018
|
+
"phase_id": {
|
|
15019
|
+
"type": "string",
|
|
15020
|
+
"description": "Id of the phase the underlying task belongs to, if any (V2 only)"
|
|
15021
|
+
},
|
|
15022
|
+
"phase_name": {
|
|
15023
|
+
"type": "string",
|
|
15024
|
+
"description": "Name of the phase the underlying task belongs to, if any (V2 only)"
|
|
15025
|
+
},
|
|
15026
|
+
"completed_at": {
|
|
15027
|
+
"type": "string",
|
|
15028
|
+
"description": "Timestamp when the task was completed or skipped"
|
|
15029
|
+
},
|
|
15030
|
+
"updated_at": {
|
|
15031
|
+
"type": "string",
|
|
15032
|
+
"description": "Last update timestamp of the underlying task/step"
|
|
15033
|
+
}
|
|
15034
|
+
},
|
|
15035
|
+
"required": [
|
|
15036
|
+
"id",
|
|
15037
|
+
"name",
|
|
15038
|
+
"order",
|
|
15039
|
+
"status",
|
|
15040
|
+
"is_active"
|
|
15041
|
+
]
|
|
15042
|
+
},
|
|
15043
|
+
"EntityPortalWorkflows": {
|
|
15044
|
+
"type": "object",
|
|
15045
|
+
"description": "Linearized portal workflows of a single entity",
|
|
15046
|
+
"properties": {
|
|
15047
|
+
"entity_id": {
|
|
15048
|
+
"type": "string"
|
|
15049
|
+
},
|
|
15050
|
+
"portal_workflows": {
|
|
15051
|
+
"type": "array",
|
|
15052
|
+
"description": "Empty when the entity has no portal-relevant workflow",
|
|
15053
|
+
"items": {
|
|
15054
|
+
"$ref": "#/components/schemas/PortalWorkflow"
|
|
15055
|
+
}
|
|
15056
|
+
}
|
|
15057
|
+
},
|
|
15058
|
+
"required": [
|
|
15059
|
+
"entity_id",
|
|
15060
|
+
"portal_workflows"
|
|
15061
|
+
]
|
|
15062
|
+
},
|
|
15063
|
+
"PortalTaskConfig": {
|
|
15064
|
+
"type": "object",
|
|
15065
|
+
"description": "Portal-specific (ECP / installer) display config of a workflow task",
|
|
15066
|
+
"properties": {
|
|
15067
|
+
"enabled": {
|
|
15068
|
+
"type": "boolean"
|
|
15069
|
+
},
|
|
15070
|
+
"label": {
|
|
15071
|
+
"type": "string"
|
|
15072
|
+
},
|
|
15073
|
+
"description": {
|
|
15074
|
+
"type": "string"
|
|
15075
|
+
},
|
|
15076
|
+
"journey": {
|
|
15077
|
+
"type": "object",
|
|
15078
|
+
"properties": {
|
|
15079
|
+
"id": {
|
|
15080
|
+
"type": "string"
|
|
15081
|
+
},
|
|
15082
|
+
"journeyId": {
|
|
15083
|
+
"type": "string"
|
|
15084
|
+
},
|
|
15085
|
+
"name": {
|
|
15086
|
+
"type": "string"
|
|
15087
|
+
},
|
|
15088
|
+
"complete_task_automatically": {
|
|
15089
|
+
"type": "boolean"
|
|
15090
|
+
}
|
|
15091
|
+
}
|
|
15092
|
+
}
|
|
15093
|
+
}
|
|
15094
|
+
},
|
|
14626
15095
|
"BaseBillingEvent": {
|
|
14627
15096
|
"allOf": [
|
|
14628
15097
|
{
|
|
@@ -15492,7 +15961,7 @@
|
|
|
15492
15961
|
},
|
|
15493
15962
|
"require_password_confirmation": {
|
|
15494
15963
|
"type": "boolean",
|
|
15495
|
-
"description": "Whether the portal user must confirm their current password before the email change is handed over to the third-party system.\
|
|
15964
|
+
"description": "Whether the portal user must confirm their current password before the email change is handed over to the third-party system.\nNot required for portal users whose identity is managed by an identity provider - an SSO login has no password to confirm.\n",
|
|
15496
15965
|
"default": true
|
|
15497
15966
|
},
|
|
15498
15967
|
"explanation": {
|
|
@@ -16832,7 +17301,7 @@
|
|
|
16832
17301
|
},
|
|
16833
17302
|
"require_password_confirmation": {
|
|
16834
17303
|
"type": "boolean",
|
|
16835
|
-
"description": "Whether the portal user must confirm their current password before the change email request is handed over to the third-party system. When true, the portal collects and verifies the current password before calling the hook.
|
|
17304
|
+
"description": "Whether the portal user must confirm their current password before the change email request is handed over to the third-party system. When true, the portal collects and verifies the current password before calling the hook. Skipped for portal users whose identity is managed by an identity provider: an SSO login has no password to confirm. When no password is confirmed and `change_mode` is `synchronous`, the re-created login gets a random password and the portal user signs in through their identity provider, or sets a new password via the email code flow.\n",
|
|
16836
17305
|
"default": true
|
|
16837
17306
|
},
|
|
16838
17307
|
"explanation": {
|
|
@@ -18934,10 +19403,8 @@
|
|
|
18934
19403
|
},
|
|
18935
19404
|
"SwappableConfig": {
|
|
18936
19405
|
"type": "string",
|
|
19406
|
+
"description": "Optional configuration item that a portal swap can additionally include. The swap always transfers the pages and the functional experience config that keep the portal working. These items are opt-in on top of that and are OFF by default. Domain and access/security settings (domain, cognito_details, auth_settings) can never be swapped and are therefore not part of this enum.",
|
|
18937
19407
|
"enum": [
|
|
18938
|
-
"all",
|
|
18939
|
-
"domain",
|
|
18940
|
-
"users",
|
|
18941
19408
|
"email_templates"
|
|
18942
19409
|
]
|
|
18943
19410
|
},
|