@epilot/cli 0.1.117 → 0.1.118
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/README.md +1 -1
- package/definitions/ai-agents.json +121 -27
- package/definitions/customer-portal.json +207 -17
- package/dist/bin/epilot.js +6 -6
- package/dist/{chunk-PKLYEJHD.js → chunk-IKYUAORY.js} +3 -1
- package/dist/{completion-YY2UW6SA.js → completion-CPMUSY3E.js} +1 -1
- package/dist/{upgrade-YQ6STVES.js → upgrade-4B7QBPBL.js} +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -45,7 +45,7 @@
|
|
|
45
45
|
"tags": [
|
|
46
46
|
"Agents Configuration"
|
|
47
47
|
],
|
|
48
|
-
"summary": "
|
|
48
|
+
"summary": "createAgent",
|
|
49
49
|
"description": "Creates a new custom agent. System skills cannot be created via this endpoint.",
|
|
50
50
|
"operationId": "createAgent",
|
|
51
51
|
"security": [
|
|
@@ -90,7 +90,7 @@
|
|
|
90
90
|
"tags": [
|
|
91
91
|
"Agents Configuration"
|
|
92
92
|
],
|
|
93
|
-
"summary": "
|
|
93
|
+
"summary": "listAgents",
|
|
94
94
|
"description": "Lists agents from both system skills and custom agents.\nUse query parameters to filter by source, availability, or entity schema.\n",
|
|
95
95
|
"operationId": "listAgents",
|
|
96
96
|
"parameters": [
|
|
@@ -148,7 +148,7 @@
|
|
|
148
148
|
"tags": [
|
|
149
149
|
"Agents Configuration"
|
|
150
150
|
],
|
|
151
|
-
"summary": "
|
|
151
|
+
"summary": "getAgentById",
|
|
152
152
|
"description": "Retrieves an agent by ID. Supports both:\n- System skill IDs (prefixed): \"skill:email-categorizer\"\n- Custom agent IDs (UUID): \"0336a235-9417-4dd8-894c-fe81285bba75\"\n",
|
|
153
153
|
"operationId": "getAgentById",
|
|
154
154
|
"security": [
|
|
@@ -193,7 +193,7 @@
|
|
|
193
193
|
"tags": [
|
|
194
194
|
"Agents Configuration"
|
|
195
195
|
],
|
|
196
|
-
"summary": "
|
|
196
|
+
"summary": "updateAgentById",
|
|
197
197
|
"description": "Updates a custom agent. System skills cannot be updated via this endpoint.",
|
|
198
198
|
"operationId": "updateAgentById",
|
|
199
199
|
"security": [
|
|
@@ -248,7 +248,7 @@
|
|
|
248
248
|
"tags": [
|
|
249
249
|
"Agents Configuration"
|
|
250
250
|
],
|
|
251
|
-
"summary": "
|
|
251
|
+
"summary": "deleteAgentById",
|
|
252
252
|
"description": "Deletes a custom agent. System skills cannot be deleted via this endpoint.",
|
|
253
253
|
"security": [
|
|
254
254
|
{
|
|
@@ -288,7 +288,7 @@
|
|
|
288
288
|
"tags": [
|
|
289
289
|
"Agent Execution"
|
|
290
290
|
],
|
|
291
|
-
"summary": "
|
|
291
|
+
"summary": "executeAgent",
|
|
292
292
|
"description": "Executes an agent (system skill or custom agent).\nSupports both:\n- System skill IDs (prefixed): \"skill:email-categorizer\"\n- Custom agent IDs (UUID): \"0336a235-9417-4dd8-894c-fe81285bba75\"\n",
|
|
293
293
|
"operationId": "executeAgent",
|
|
294
294
|
"security": [
|
|
@@ -355,7 +355,7 @@
|
|
|
355
355
|
"tags": [
|
|
356
356
|
"Agent Execution"
|
|
357
357
|
],
|
|
358
|
-
"summary": "
|
|
358
|
+
"summary": "executeAgentStream",
|
|
359
359
|
"description": "Executes an agent with real-time streaming of tokens and tool events.\nReturns Server-Sent Events (SSE) stream with token-by-token output,\ntool call progress, and completion status.\n\nUnlike the async `/execute` endpoint which returns immediately with\nan execution_id for polling, this endpoint streams all events in real-time.\n\nSupports both:\n- System skill IDs (prefixed): \"skill:email-categorizer\"\n- Custom agent IDs (UUID): \"0336a235-9417-4dd8-894c-fe81285bba75\"\n",
|
|
360
360
|
"operationId": "executeAgentStream",
|
|
361
361
|
"security": [
|
|
@@ -422,7 +422,8 @@
|
|
|
422
422
|
"tags": [
|
|
423
423
|
"Agent Execution"
|
|
424
424
|
],
|
|
425
|
-
"summary": "
|
|
425
|
+
"summary": "listExecutions",
|
|
426
|
+
"description": "List executions",
|
|
426
427
|
"operationId": "listExecutions",
|
|
427
428
|
"security": [
|
|
428
429
|
{
|
|
@@ -485,7 +486,8 @@
|
|
|
485
486
|
"tags": [
|
|
486
487
|
"Agent Execution"
|
|
487
488
|
],
|
|
488
|
-
"summary": "
|
|
489
|
+
"summary": "getExecution",
|
|
490
|
+
"description": "Get execution by ID",
|
|
489
491
|
"operationId": "getExecution",
|
|
490
492
|
"security": [
|
|
491
493
|
{
|
|
@@ -530,7 +532,8 @@
|
|
|
530
532
|
"tags": [
|
|
531
533
|
"Agent Execution"
|
|
532
534
|
],
|
|
533
|
-
"summary": "
|
|
535
|
+
"summary": "cancelExecution",
|
|
536
|
+
"description": "Cancel execution",
|
|
534
537
|
"operationId": "cancelExecution",
|
|
535
538
|
"security": [
|
|
536
539
|
{
|
|
@@ -587,7 +590,7 @@
|
|
|
587
590
|
"tags": [
|
|
588
591
|
"Agent Execution"
|
|
589
592
|
],
|
|
590
|
-
"summary": "
|
|
593
|
+
"summary": "getExecutionTrace",
|
|
591
594
|
"description": "Returns the step-by-step reasoning and tool calls for ReAct mode executions. Returns empty iterations array for direct mode executions.",
|
|
592
595
|
"operationId": "getExecutionTrace",
|
|
593
596
|
"security": [
|
|
@@ -759,7 +762,7 @@
|
|
|
759
762
|
"tags": [
|
|
760
763
|
"Agent Execution"
|
|
761
764
|
],
|
|
762
|
-
"summary": "
|
|
765
|
+
"summary": "approveExecution",
|
|
763
766
|
"description": "Approves a pending tool action when execution is in waiting_approval status",
|
|
764
767
|
"operationId": "approveExecution",
|
|
765
768
|
"security": [
|
|
@@ -826,7 +829,7 @@
|
|
|
826
829
|
"tags": [
|
|
827
830
|
"Agent Execution"
|
|
828
831
|
],
|
|
829
|
-
"summary": "
|
|
832
|
+
"summary": "rejectExecution",
|
|
830
833
|
"description": "Rejects a pending tool action when execution is in waiting_approval status",
|
|
831
834
|
"operationId": "rejectExecution",
|
|
832
835
|
"security": [
|
|
@@ -894,7 +897,7 @@
|
|
|
894
897
|
"tags": [
|
|
895
898
|
"Agent Execution"
|
|
896
899
|
],
|
|
897
|
-
"summary": "
|
|
900
|
+
"summary": "streamExecution",
|
|
898
901
|
"description": "Reconnects to an execution's event stream after approval. Replays missed events from event log and continues streaming if execution is still running.",
|
|
899
902
|
"operationId": "streamExecution",
|
|
900
903
|
"security": [
|
|
@@ -950,7 +953,7 @@
|
|
|
950
953
|
"tags": [
|
|
951
954
|
"Chat"
|
|
952
955
|
],
|
|
953
|
-
"summary": "
|
|
956
|
+
"summary": "chat",
|
|
954
957
|
"description": "Initiates a streaming chat session with an AI agent. Supports server-side conversation memory via conversationId or client-provided history via clientHistory.",
|
|
955
958
|
"operationId": "chat",
|
|
956
959
|
"security": [
|
|
@@ -1007,7 +1010,7 @@
|
|
|
1007
1010
|
"tags": [
|
|
1008
1011
|
"Conversations"
|
|
1009
1012
|
],
|
|
1010
|
-
"summary": "
|
|
1013
|
+
"summary": "listConversations",
|
|
1011
1014
|
"description": "Lists conversations for the authenticated user, sorted by most recent.",
|
|
1012
1015
|
"operationId": "listConversations",
|
|
1013
1016
|
"security": [
|
|
@@ -1071,7 +1074,7 @@
|
|
|
1071
1074
|
"tags": [
|
|
1072
1075
|
"Conversations"
|
|
1073
1076
|
],
|
|
1074
|
-
"summary": "
|
|
1077
|
+
"summary": "getConversation",
|
|
1075
1078
|
"description": "Retrieves a conversation and its message history.",
|
|
1076
1079
|
"operationId": "getConversation",
|
|
1077
1080
|
"security": [
|
|
@@ -1126,7 +1129,7 @@
|
|
|
1126
1129
|
"tags": [
|
|
1127
1130
|
"Conversations"
|
|
1128
1131
|
],
|
|
1129
|
-
"summary": "
|
|
1132
|
+
"summary": "deleteConversation",
|
|
1130
1133
|
"description": "Deletes a conversation and all its messages.",
|
|
1131
1134
|
"operationId": "deleteConversation",
|
|
1132
1135
|
"security": [
|
|
@@ -1167,7 +1170,7 @@
|
|
|
1167
1170
|
"tags": [
|
|
1168
1171
|
"Conversations"
|
|
1169
1172
|
],
|
|
1170
|
-
"summary": "
|
|
1173
|
+
"summary": "submitConversationFeedback",
|
|
1171
1174
|
"description": "Records a thumbs up/down (with optional comment) for the assistant turn identified by its Langfuse trace id. The rating is persisted on the message and mirrored to Langfuse as a trace score.\n",
|
|
1172
1175
|
"operationId": "submitConversationFeedback",
|
|
1173
1176
|
"security": [
|
|
@@ -1505,14 +1508,6 @@
|
|
|
1505
1508
|
"type": "string"
|
|
1506
1509
|
},
|
|
1507
1510
|
"description": "For batch approval - list of action IDs to reject. Actions not in approved_action_ids are implicitly rejected."
|
|
1508
|
-
},
|
|
1509
|
-
"share_scope": {
|
|
1510
|
-
"type": "string",
|
|
1511
|
-
"enum": [
|
|
1512
|
-
"primary_only",
|
|
1513
|
-
"primary_and_relations"
|
|
1514
|
-
],
|
|
1515
|
-
"description": "For `partnering.proposeAssignment` approvals. `primary_only` (default) shares only the primary entity; `primary_and_relations` also shares every entity in the proposal's `related_entities` as a child of the primary. Ignored by other tools.\n"
|
|
1516
1511
|
}
|
|
1517
1512
|
}
|
|
1518
1513
|
},
|
|
@@ -1887,6 +1882,105 @@
|
|
|
1887
1882
|
}
|
|
1888
1883
|
}
|
|
1889
1884
|
},
|
|
1885
|
+
"AgentExecutionEventStatus": {
|
|
1886
|
+
"type": "string",
|
|
1887
|
+
"description": "Lifecycle status carried on an agent execution event.\n\nDeliberately narrower than `ExecutionStatus`, which is the stored status of\nthe execution row: `pending` and `running` both surface as `started`, and\n`cancelled` surfaces as `failed`. Consumers must not assume the two\nvocabularies are interchangeable.\n",
|
|
1888
|
+
"enum": [
|
|
1889
|
+
"started",
|
|
1890
|
+
"completed",
|
|
1891
|
+
"failed",
|
|
1892
|
+
"approval_required"
|
|
1893
|
+
]
|
|
1894
|
+
},
|
|
1895
|
+
"AgentExecutionEvent": {
|
|
1896
|
+
"type": "object",
|
|
1897
|
+
"description": "Detail payload of the `agent-execution-status-update` event, published on\nthe AI Agents event bus with source `ai-agents`.\n\n`execution_context` and `input` are present on every status, so a consumer\ncan tell whether an execution is theirs, and what it belonged to, from the\nterminal event alone — without a secondary lookup.\n",
|
|
1898
|
+
"required": [
|
|
1899
|
+
"executionId",
|
|
1900
|
+
"agentId",
|
|
1901
|
+
"orgId",
|
|
1902
|
+
"execution_status"
|
|
1903
|
+
],
|
|
1904
|
+
"properties": {
|
|
1905
|
+
"executionId": {
|
|
1906
|
+
"type": "string",
|
|
1907
|
+
"description": "The agent execution this event reports on"
|
|
1908
|
+
},
|
|
1909
|
+
"agentId": {
|
|
1910
|
+
"$ref": "#/components/schemas/AgentId"
|
|
1911
|
+
},
|
|
1912
|
+
"orgId": {
|
|
1913
|
+
"type": "string"
|
|
1914
|
+
},
|
|
1915
|
+
"userId": {
|
|
1916
|
+
"type": "string"
|
|
1917
|
+
},
|
|
1918
|
+
"execution_status": {
|
|
1919
|
+
"$ref": "#/components/schemas/AgentExecutionEventStatus"
|
|
1920
|
+
},
|
|
1921
|
+
"execution_context": {
|
|
1922
|
+
"$ref": "#/components/schemas/ExecutionContext"
|
|
1923
|
+
},
|
|
1924
|
+
"input": {
|
|
1925
|
+
"type": "object",
|
|
1926
|
+
"additionalProperties": true,
|
|
1927
|
+
"description": "The execution input, as supplied by the caller of the execute endpoint"
|
|
1928
|
+
},
|
|
1929
|
+
"output": {
|
|
1930
|
+
"type": "object",
|
|
1931
|
+
"additionalProperties": true,
|
|
1932
|
+
"description": "Present on `completed` — the execution result"
|
|
1933
|
+
},
|
|
1934
|
+
"error": {
|
|
1935
|
+
"type": "object",
|
|
1936
|
+
"description": "Present on `failed`",
|
|
1937
|
+
"properties": {
|
|
1938
|
+
"message": {
|
|
1939
|
+
"type": "string"
|
|
1940
|
+
},
|
|
1941
|
+
"code": {
|
|
1942
|
+
"type": "string"
|
|
1943
|
+
},
|
|
1944
|
+
"stack": {
|
|
1945
|
+
"type": "string"
|
|
1946
|
+
}
|
|
1947
|
+
}
|
|
1948
|
+
},
|
|
1949
|
+
"duration": {
|
|
1950
|
+
"type": "integer",
|
|
1951
|
+
"description": "Wall-clock duration in milliseconds, present on `completed`"
|
|
1952
|
+
},
|
|
1953
|
+
"iterations": {
|
|
1954
|
+
"type": "integer"
|
|
1955
|
+
},
|
|
1956
|
+
"iteration": {
|
|
1957
|
+
"type": "integer"
|
|
1958
|
+
},
|
|
1959
|
+
"message": {
|
|
1960
|
+
"type": "string",
|
|
1961
|
+
"description": "Present on `approval_required` — what is awaiting approval"
|
|
1962
|
+
},
|
|
1963
|
+
"toolCalls": {
|
|
1964
|
+
"type": "array",
|
|
1965
|
+
"items": {
|
|
1966
|
+
"type": "object",
|
|
1967
|
+
"properties": {
|
|
1968
|
+
"name": {
|
|
1969
|
+
"type": "string"
|
|
1970
|
+
},
|
|
1971
|
+
"args": {
|
|
1972
|
+
"type": "object",
|
|
1973
|
+
"additionalProperties": true
|
|
1974
|
+
}
|
|
1975
|
+
}
|
|
1976
|
+
}
|
|
1977
|
+
},
|
|
1978
|
+
"timestamp": {
|
|
1979
|
+
"type": "string",
|
|
1980
|
+
"format": "date-time"
|
|
1981
|
+
}
|
|
1982
|
+
}
|
|
1983
|
+
},
|
|
1890
1984
|
"ToolPreview": {
|
|
1891
1985
|
"type": "object",
|
|
1892
1986
|
"description": "Structured preview data for approval UI. Provides a generic format that any tool can populate.",
|
|
@@ -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
|
}
|
|
@@ -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"
|
|
@@ -7980,7 +8034,7 @@
|
|
|
7980
8034
|
"/v2/portal/entity/{slug}/{id}/workflows/linearized": {
|
|
7981
8035
|
"get": {
|
|
7982
8036
|
"operationId": "getEntityPortalWorkflows",
|
|
7983
|
-
"summary": "
|
|
8037
|
+
"summary": "getEntityPortalWorkflows",
|
|
7984
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",
|
|
7985
8039
|
"tags": [
|
|
7986
8040
|
"ECP"
|
|
@@ -8046,10 +8100,96 @@
|
|
|
8046
8100
|
}
|
|
8047
8101
|
}
|
|
8048
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
|
+
},
|
|
8049
8189
|
"/v2/portal/metering/reading/photo": {
|
|
8050
8190
|
"post": {
|
|
8051
8191
|
"operationId": "uploadMeterReadingPhoto",
|
|
8052
|
-
"summary": "
|
|
8192
|
+
"summary": "uploadMeterReadingPhoto",
|
|
8053
8193
|
"description": "Uploads a Meter Reading photo and - if enabled - gives back data extracted from the photo.",
|
|
8054
8194
|
"tags": [
|
|
8055
8195
|
"ECP"
|
|
@@ -8104,7 +8244,7 @@
|
|
|
8104
8244
|
"/v2/portal/metering/reading": {
|
|
8105
8245
|
"post": {
|
|
8106
8246
|
"operationId": "createMeterReading",
|
|
8107
|
-
"summary": "
|
|
8247
|
+
"summary": "createMeterReading",
|
|
8108
8248
|
"description": "Inserts a new meter reading.",
|
|
8109
8249
|
"tags": [
|
|
8110
8250
|
"ECP"
|
|
@@ -8171,6 +8311,7 @@
|
|
|
8171
8311
|
"/v2/portal/metering/reading/allowed-range/{meter_id}": {
|
|
8172
8312
|
"get": {
|
|
8173
8313
|
"operationId": "getAllowedMeterReadingRange",
|
|
8314
|
+
"summary": "getAllowedMeterReadingRange",
|
|
8174
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",
|
|
8175
8316
|
"tags": [
|
|
8176
8317
|
"ECP"
|
|
@@ -8272,7 +8413,7 @@
|
|
|
8272
8413
|
"/v2/portal/metering/readings": {
|
|
8273
8414
|
"post": {
|
|
8274
8415
|
"operationId": "getMeterReadings",
|
|
8275
|
-
"summary": "
|
|
8416
|
+
"summary": "getMeterReadings",
|
|
8276
8417
|
"description": "Fetches meter readings for a counter and optionally resolves Handlebars\ntemplate strings against each reading object using @epilot/variables.\n",
|
|
8277
8418
|
"tags": [
|
|
8278
8419
|
"ECP"
|
|
@@ -9617,7 +9758,7 @@
|
|
|
9617
9758
|
"/v2/portal/campaign/{campaign_id}/entity:status": {
|
|
9618
9759
|
"put": {
|
|
9619
9760
|
"operationId": "updateCampaignPortalBlockStatus",
|
|
9620
|
-
"summary": "
|
|
9761
|
+
"summary": "updateCampaignPortalBlockStatus",
|
|
9621
9762
|
"description": "Updates the status of a campaign portal block for multiple recipients.",
|
|
9622
9763
|
"tags": [
|
|
9623
9764
|
"ECP"
|
|
@@ -10271,7 +10412,7 @@
|
|
|
10271
10412
|
"items": {
|
|
10272
10413
|
"$ref": "#/components/schemas/SwappableConfig"
|
|
10273
10414
|
},
|
|
10274
|
-
"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."
|
|
10275
10416
|
}
|
|
10276
10417
|
}
|
|
10277
10418
|
}
|
|
@@ -11579,6 +11720,10 @@
|
|
|
11579
11720
|
"message": {
|
|
11580
11721
|
"type": "string",
|
|
11581
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."
|
|
11582
11727
|
}
|
|
11583
11728
|
}
|
|
11584
11729
|
},
|
|
@@ -11994,7 +12139,7 @@
|
|
|
11994
12139
|
},
|
|
11995
12140
|
"identity_providers": {
|
|
11996
12141
|
"type": "array",
|
|
11997
|
-
"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",
|
|
11998
12143
|
"items": {
|
|
11999
12144
|
"$ref": "#/components/schemas/ProviderConfig"
|
|
12000
12145
|
}
|
|
@@ -14369,6 +14514,33 @@
|
|
|
14369
14514
|
}
|
|
14370
14515
|
]
|
|
14371
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
|
+
},
|
|
14372
14544
|
"EntityFileCount": {
|
|
14373
14545
|
"type": "object",
|
|
14374
14546
|
"required": [
|
|
@@ -14868,6 +15040,26 @@
|
|
|
14868
15040
|
"is_active"
|
|
14869
15041
|
]
|
|
14870
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
|
+
},
|
|
14871
15063
|
"PortalTaskConfig": {
|
|
14872
15064
|
"type": "object",
|
|
14873
15065
|
"description": "Portal-specific (ECP / installer) display config of a workflow task",
|
|
@@ -19211,10 +19403,8 @@
|
|
|
19211
19403
|
},
|
|
19212
19404
|
"SwappableConfig": {
|
|
19213
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.",
|
|
19214
19407
|
"enum": [
|
|
19215
|
-
"all",
|
|
19216
|
-
"domain",
|
|
19217
|
-
"users",
|
|
19218
19408
|
"email_templates"
|
|
19219
19409
|
]
|
|
19220
19410
|
},
|
package/dist/bin/epilot.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
API_LIST
|
|
4
|
-
} from "../chunk-
|
|
4
|
+
} from "../chunk-IKYUAORY.js";
|
|
5
5
|
|
|
6
6
|
// bin/epilot.ts
|
|
7
7
|
import { runMain } from "citty";
|
|
@@ -11,7 +11,7 @@ import { defineCommand } from "citty";
|
|
|
11
11
|
var main = defineCommand({
|
|
12
12
|
meta: {
|
|
13
13
|
name: "epilot",
|
|
14
|
-
version: "0.1.
|
|
14
|
+
version: "0.1.118",
|
|
15
15
|
description: "CLI for epilot APIs"
|
|
16
16
|
},
|
|
17
17
|
args: {
|
|
@@ -30,8 +30,8 @@ var main = defineCommand({
|
|
|
30
30
|
auth: () => import("../auth-WMXFMPWE.js").then((m) => m.default),
|
|
31
31
|
profile: () => import("../profile-OZJL5ZPT.js").then((m) => m.default),
|
|
32
32
|
config: () => import("../config-DGZIMLZK.js").then((m) => m.default),
|
|
33
|
-
completion: () => import("../completion-
|
|
34
|
-
upgrade: () => import("../upgrade-
|
|
33
|
+
completion: () => import("../completion-CPMUSY3E.js").then((m) => m.default),
|
|
34
|
+
upgrade: () => import("../upgrade-4B7QBPBL.js").then((m) => m.default),
|
|
35
35
|
"access-token": () => import("../access-token-WWE6BDJH.js").then((m) => m.default),
|
|
36
36
|
address: () => import("../address-EH3C4CVB.js").then((m) => m.default),
|
|
37
37
|
"address-suggestions": () => import("../address-suggestions-RRSLOBFW.js").then((m) => m.default),
|
|
@@ -134,13 +134,13 @@ process.stderr.on("error", (err) => {
|
|
|
134
134
|
if (err.code === "EPIPE") process.exit(0);
|
|
135
135
|
throw err;
|
|
136
136
|
});
|
|
137
|
-
var VERSION = true ? "0.1.
|
|
137
|
+
var VERSION = true ? "0.1.118" : (await null).default.version;
|
|
138
138
|
var reorderedArgv = hoistFlagsAfterSubcommand(process.argv.slice(2));
|
|
139
139
|
process.argv = [process.argv[0], process.argv[1], ...reorderedArgv];
|
|
140
140
|
var args = process.argv.slice(2);
|
|
141
141
|
var completionsIdx = args.indexOf("--_completions");
|
|
142
142
|
if (completionsIdx >= 0) {
|
|
143
|
-
const { handleCompletions } = await import("../completion-
|
|
143
|
+
const { handleCompletions } = await import("../completion-CPMUSY3E.js");
|
|
144
144
|
handleCompletions(args[completionsIdx + 1], args[completionsIdx + 2]);
|
|
145
145
|
process.exit(0);
|
|
146
146
|
}
|
|
@@ -328,7 +328,7 @@ var API_LIST = [
|
|
|
328
328
|
kebabName: "customer-portal",
|
|
329
329
|
title: "Portal API",
|
|
330
330
|
serverUrl: "https://customer-portal-api.sls.epilot.io",
|
|
331
|
-
operationCount:
|
|
331
|
+
operationCount: 162,
|
|
332
332
|
operationIds: [
|
|
333
333
|
"upsertPortal",
|
|
334
334
|
"createUser",
|
|
@@ -428,6 +428,7 @@ var API_LIST = [
|
|
|
428
428
|
"getRegistrationIdentifiers",
|
|
429
429
|
"getAllFiles",
|
|
430
430
|
"getFileById",
|
|
431
|
+
"getFilePreview",
|
|
431
432
|
"trackFileDownloaded",
|
|
432
433
|
"getFilesCountByEntity",
|
|
433
434
|
"getBillingEvents",
|
|
@@ -445,6 +446,7 @@ var API_LIST = [
|
|
|
445
446
|
"updateWorkflowStepAsDone",
|
|
446
447
|
"getEntityWorkflows",
|
|
447
448
|
"getEntityPortalWorkflows",
|
|
449
|
+
"getEntityPortalWorkflowsBatch",
|
|
448
450
|
"uploadMeterReadingPhoto",
|
|
449
451
|
"createMeterReading",
|
|
450
452
|
"getAllowedMeterReadingRange",
|
|
@@ -72,7 +72,7 @@ ${GREEN}${BOLD}Upgraded to @epilot/cli@${latest}${RESET}
|
|
|
72
72
|
}
|
|
73
73
|
});
|
|
74
74
|
var getCurrentVersion = () => {
|
|
75
|
-
if (true) return "0.1.
|
|
75
|
+
if (true) return "0.1.118";
|
|
76
76
|
try {
|
|
77
77
|
const output = execSync("npm ls -g @epilot/cli --depth=0 --json 2>/dev/null", {
|
|
78
78
|
encoding: "utf-8",
|