@epilot/sdk 2.5.0 → 2.6.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/definitions/integration-toolkit-runtime.json +1 -1
- package/definitions/integration-toolkit.json +480 -4
- package/definitions/metering-runtime.json +1 -1
- package/definitions/metering.json +728 -64
- package/dist/apis/access-token.cjs +6 -6
- package/dist/apis/access-token.js +1 -1
- package/dist/apis/address-suggestions.cjs +6 -6
- package/dist/apis/address-suggestions.js +1 -1
- package/dist/apis/address.cjs +6 -6
- package/dist/apis/address.js +1 -1
- package/dist/apis/ai-agents.cjs +6 -6
- package/dist/apis/ai-agents.js +1 -1
- package/dist/apis/app.cjs +6 -6
- package/dist/apis/app.js +1 -1
- package/dist/apis/audit-logs.cjs +6 -6
- package/dist/apis/audit-logs.js +1 -1
- package/dist/apis/automation.cjs +6 -6
- package/dist/apis/automation.js +1 -1
- package/dist/apis/billing.cjs +6 -6
- package/dist/apis/billing.js +1 -1
- package/dist/apis/blueprint-manifest.cjs +6 -6
- package/dist/apis/blueprint-manifest.js +1 -1
- package/dist/apis/calendar.cjs +6 -6
- package/dist/apis/calendar.js +1 -1
- package/dist/apis/configuration-hub.cjs +6 -6
- package/dist/apis/configuration-hub.js +1 -1
- package/dist/apis/consent.cjs +6 -6
- package/dist/apis/consent.js +1 -1
- package/dist/apis/customer-portal.cjs +6 -6
- package/dist/apis/customer-portal.js +1 -1
- package/dist/apis/dashboard.cjs +6 -6
- package/dist/apis/dashboard.js +1 -1
- package/dist/apis/data-governance.cjs +6 -6
- package/dist/apis/data-governance.js +1 -1
- package/dist/apis/deduplication.cjs +6 -6
- package/dist/apis/deduplication.js +1 -1
- package/dist/apis/design.cjs +6 -6
- package/dist/apis/design.js +1 -1
- package/dist/apis/document.cjs +6 -6
- package/dist/apis/document.js +1 -1
- package/dist/apis/email-settings.cjs +6 -6
- package/dist/apis/email-settings.js +1 -1
- package/dist/apis/email-template.cjs +6 -6
- package/dist/apis/email-template.js +1 -1
- package/dist/apis/entity-mapping.cjs +6 -6
- package/dist/apis/entity-mapping.js +1 -1
- package/dist/apis/entity.cjs +6 -6
- package/dist/apis/entity.js +1 -1
- package/dist/apis/environments.cjs +6 -6
- package/dist/apis/environments.js +1 -1
- package/dist/apis/event-catalog.cjs +6 -6
- package/dist/apis/event-catalog.js +1 -1
- package/dist/apis/file.cjs +6 -6
- package/dist/apis/file.js +1 -1
- package/dist/apis/iban.cjs +6 -6
- package/dist/apis/iban.js +1 -1
- package/dist/apis/integration-toolkit.cjs +8 -8
- package/dist/apis/integration-toolkit.d.cts +2 -2
- package/dist/apis/integration-toolkit.d.ts +2 -2
- package/dist/apis/integration-toolkit.js +2 -2
- package/dist/apis/journey.cjs +6 -6
- package/dist/apis/journey.js +1 -1
- package/dist/apis/kanban.cjs +6 -6
- package/dist/apis/kanban.js +1 -1
- package/dist/apis/message.cjs +6 -6
- package/dist/apis/message.js +1 -1
- package/dist/apis/metering.cjs +8 -8
- package/dist/apis/metering.d.cts +2 -2
- package/dist/apis/metering.d.ts +2 -2
- package/dist/apis/metering.js +2 -2
- package/dist/apis/notes.cjs +6 -6
- package/dist/apis/notes.js +1 -1
- package/dist/apis/notification.cjs +6 -6
- package/dist/apis/notification.js +1 -1
- package/dist/apis/organization.cjs +6 -6
- package/dist/apis/organization.js +1 -1
- package/dist/apis/partner-directory.cjs +6 -6
- package/dist/apis/partner-directory.js +1 -1
- package/dist/apis/permissions.cjs +6 -6
- package/dist/apis/permissions.js +1 -1
- package/dist/apis/pricing-tier.cjs +6 -6
- package/dist/apis/pricing-tier.js +1 -1
- package/dist/apis/pricing.cjs +6 -6
- package/dist/apis/pricing.js +1 -1
- package/dist/apis/purpose.cjs +6 -6
- package/dist/apis/purpose.js +1 -1
- package/dist/apis/query.cjs +6 -6
- package/dist/apis/query.js +1 -1
- package/dist/apis/sandbox.cjs +6 -6
- package/dist/apis/sandbox.js +1 -1
- package/dist/apis/sharing.cjs +6 -6
- package/dist/apis/sharing.js +1 -1
- package/dist/apis/submission.cjs +6 -6
- package/dist/apis/submission.js +1 -1
- package/dist/apis/target.cjs +6 -6
- package/dist/apis/target.js +1 -1
- package/dist/apis/targeting.cjs +6 -6
- package/dist/apis/targeting.js +1 -1
- package/dist/apis/template-variables.cjs +6 -6
- package/dist/apis/template-variables.js +1 -1
- package/dist/apis/user.cjs +6 -6
- package/dist/apis/user.js +1 -1
- package/dist/apis/validation-rules.cjs +6 -6
- package/dist/apis/validation-rules.js +1 -1
- package/dist/apis/webhooks.cjs +6 -6
- package/dist/apis/webhooks.js +1 -1
- package/dist/apis/workflow-definition.cjs +6 -6
- package/dist/apis/workflow-definition.js +1 -1
- package/dist/apis/workflow.cjs +6 -6
- package/dist/apis/workflow.js +1 -1
- package/dist/{chunk-JTFWOEZF.cjs → chunk-4FFGRWLS.cjs} +1 -1
- package/dist/chunk-56MMZJOD.js +14 -0
- package/dist/{chunk-WRD2XFHY.js → chunk-QNUU4TTU.js} +4 -4
- package/dist/{chunk-C7GDYBXX.cjs → chunk-SDIGGISZ.cjs} +4 -4
- package/dist/chunk-T6A22LSD.cjs +14 -0
- package/dist/chunk-WM74R3BD.js +14 -0
- package/dist/index.cjs +12 -12
- package/dist/index.d.cts +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.js +3 -3
- package/dist/integration-toolkit-3I3IPVFN.cjs +7 -0
- package/dist/integration-toolkit-XAFQXNQY.js +7 -0
- package/dist/{integration-toolkit-runtime-5KG3LGXF.cjs → integration-toolkit-runtime-YHTU4X5J.cjs} +2 -2
- package/dist/{integration-toolkit-runtime-LYHFVIRW.js → integration-toolkit-runtime-YR4CIMKH.js} +1 -1
- package/dist/{integration-toolkit.d-Ry-KC9ow.d.cts → integration-toolkit.d-BstNqiJb.d.cts} +460 -20
- package/dist/{integration-toolkit.d-Ry-KC9ow.d.ts → integration-toolkit.d-BstNqiJb.d.ts} +460 -20
- package/dist/metering-3IUSYAGN.js +7 -0
- package/dist/metering-MHBFU7QH.cjs +7 -0
- package/dist/{metering-runtime-HAIWXZXJ.cjs → metering-runtime-IUZJHBVS.cjs} +2 -2
- package/dist/{metering-runtime-NJ6NEUMB.js → metering-runtime-KZMJKKUZ.js} +1 -1
- package/dist/{metering.d-DvtPv7wk.d.cts → metering.d-CUICZDiL.d.cts} +718 -130
- package/dist/{metering.d-DvtPv7wk.d.ts → metering.d-CUICZDiL.d.ts} +718 -130
- package/docs/integration-toolkit.md +334 -19
- package/docs/metering.md +570 -48
- package/package.json +1 -1
- package/dist/chunk-265TE2OV.js +0 -14
- package/dist/chunk-4ZMLRFDX.cjs +0 -14
- package/dist/chunk-U4PUHKZC.js +0 -14
- package/dist/integration-toolkit-FRPFOYT2.js +0 -7
- package/dist/integration-toolkit-VNMDI55O.cjs +0 -7
- package/dist/metering-DZNZPPY6.cjs +0 -7
- package/dist/metering-KOSCPPKB.js +0 -7
|
@@ -1 +1 @@
|
|
|
1
|
-
{"s":"https://integration-toolkit.sls.epilot.io","o":[["acknowledgeTracking","post","/v1/erp/tracking/acknowledgement",null,1],["triggerErp","post","/v1/erp/trigger",null,1],["processErpUpdatesEvents","post","/v1/erp/updates/events",null,1],["processErpUpdatesEventsV2","post","/v2/erp/updates/events",null,1],["processErpUpdatesEventsV3","post","/v3/erp/updates/events",null,1],["simulateMappingV2","post","/v2/erp/updates/mapping_simulation",null,1],["simulateMapping","post","/v1/erp/updates/mapping_simulation",null,1],["listIntegrations","get","/v1/integrations"],["createIntegration","post","/v1/integrations",null,1],["getIntegration","get","/v1/integrations/{integrationId}",[["integrationId","p",true]]],["updateIntegration","put","/v1/integrations/{integrationId}",[["integrationId","p",true]],1],["deleteIntegration","delete","/v1/integrations/{integrationId}",[["integrationId","p",true]]],["queryEvents","post","/v1/integrations/{integrationId}/events",[["integrationId","p",true]],1],["replayEvents","post","/v1/integrations/{integrationId}/events/replay",[["integrationId","p",true]],1],["listUseCases","get","/v1/integrations/{integrationId}/use-cases",[["integrationId","p",true]]],["createUseCase","post","/v1/integrations/{integrationId}/use-cases",[["integrationId","p",true]],1],["getUseCase","get","/v1/integrations/{integrationId}/use-cases/{useCaseId}",[["integrationId","p",true],["useCaseId","p",true]]],["updateUseCase","put","/v1/integrations/{integrationId}/use-cases/{useCaseId}",[["integrationId","p",true],["useCaseId","p",true]],1],["deleteUseCase","delete","/v1/integrations/{integrationId}/use-cases/{useCaseId}",[["integrationId","p",true],["useCaseId","p",true]]],["listUseCaseHistory","get","/v1/integrations/{integrationId}/use-cases/{useCaseId}/history",[["integrationId","p",true],["useCaseId","p",true],["cursor","q"]]],["listIntegrationsV2","get","/v2/integrations"],["createIntegrationV2","post","/v2/integrations",null,1],["getIntegrationV2","get","/v2/integrations/{integrationId}",[["integrationId","p",true]]],["updateIntegrationV2","put","/v2/integrations/{integrationId}",[["integrationId","p",true]],1],["deleteIntegrationV2","delete","/v2/integrations/{integrationId}",[["integrationId","p",true]]],["setIntegrationAppMapping","put","/v1/integrations/{integrationId}/app-mapping",[["integrationId","p",true]],1],["deleteIntegrationAppMapping","delete","/v1/integrations/{integrationId}/app-mapping",[["integrationId","p",true]],1],["queryInboundMonitoringEvents","post","/v1/integrations/{integrationId}/monitoring/inbound-events",[["integrationId","p",true]],1],["getMonitoringStats","post","/v1/integrations/{integrationId}/monitoring/stats",[["integrationId","p",true]],1],["getMonitoringTimeSeries","post","/v1/integrations/{integrationId}/monitoring/timeseries",[["integrationId","p",true]],1],["getOutboundStatus","get","/v1/integrations/{integrationId}/outbound-status",[["integrationId","p",true]]],["queryAccessLogs","post","/v1/integrations/{integrationId}/monitoring/access-logs",[["integrationId","p",true]],1],["queryOutboundMonitoringEvents","post","/v1/integrations/{integrationId}/monitoring/outbound-events",[["integrationId","p",true]],1],["queryMonitoringEventsV2","post","/v2/integrations/{integrationId}/monitoring/events",[["integrationId","p",true]],1],["getMonitoringStatsV2","post","/v2/integrations/{integrationId}/monitoring/stats",[["integrationId","p",true]],1],["getMonitoringTimeSeriesV2","post","/v2/integrations/{integrationId}/monitoring/time-series",[["integrationId","p",true]],1],["getAssociatedMonitoringEvents","get","/v2/integrations/{integrationId}/monitoring/events/{eventId}/associated",[["integrationId","p",true],["eventId","p",true]]],["listSecureProxies","get","/v1/integrations/secure-proxies"],["secureProxy","post","/v1/secure-proxy",null,1],["managedCallExecute","post","/v1/managed-call/{slug}/execute",[["slug","p",true]],1],["generateTypesPreview","post","/v1/integrations/{integrationId}/generate-types-preview",[["integrationId","p",true]]],["generateTypes","post","/v1/integrations/{integrationId}/generate-types",[["integrationId","p",true]],1],["commitTypes","post","/v1/integrations/{integrationId}/commit-types",[["integrationId","p",true]],1]],"v":"3.0.3"}
|
|
1
|
+
{"s":"https://integration-toolkit.sls.epilot.io","o":[["acknowledgeTracking","post","/v1/erp/tracking/acknowledgement",null,1],["triggerErp","post","/v1/erp/trigger",null,1],["processErpUpdatesEvents","post","/v1/erp/updates/events",null,1],["processErpUpdatesEventsV2","post","/v2/erp/updates/events",null,1],["processErpUpdatesEventsV3","post","/v3/erp/updates/events",null,1],["simulateMappingV2","post","/v2/erp/updates/mapping_simulation",null,1],["simulateMapping","post","/v1/erp/updates/mapping_simulation",null,1],["listIntegrations","get","/v1/integrations"],["createIntegration","post","/v1/integrations",null,1],["getIntegration","get","/v1/integrations/{integrationId}",[["integrationId","p",true]]],["updateIntegration","put","/v1/integrations/{integrationId}",[["integrationId","p",true]],1],["deleteIntegration","delete","/v1/integrations/{integrationId}",[["integrationId","p",true]]],["queryEvents","post","/v1/integrations/{integrationId}/events",[["integrationId","p",true]],1],["replayEvents","post","/v1/integrations/{integrationId}/events/replay",[["integrationId","p",true]],1],["listUseCases","get","/v1/integrations/{integrationId}/use-cases",[["integrationId","p",true]]],["createUseCase","post","/v1/integrations/{integrationId}/use-cases",[["integrationId","p",true]],1],["getUseCase","get","/v1/integrations/{integrationId}/use-cases/{useCaseId}",[["integrationId","p",true],["useCaseId","p",true]]],["updateUseCase","put","/v1/integrations/{integrationId}/use-cases/{useCaseId}",[["integrationId","p",true],["useCaseId","p",true]],1],["deleteUseCase","delete","/v1/integrations/{integrationId}/use-cases/{useCaseId}",[["integrationId","p",true],["useCaseId","p",true]]],["listUseCaseHistory","get","/v1/integrations/{integrationId}/use-cases/{useCaseId}/history",[["integrationId","p",true],["useCaseId","p",true],["cursor","q"]]],["listIntegrationsV2","get","/v2/integrations"],["createIntegrationV2","post","/v2/integrations",null,1],["getIntegrationV2","get","/v2/integrations/{integrationId}",[["integrationId","p",true]]],["updateIntegrationV2","put","/v2/integrations/{integrationId}",[["integrationId","p",true]],1],["deleteIntegrationV2","delete","/v2/integrations/{integrationId}",[["integrationId","p",true]]],["getSecureProxyWhitelist","get","/v2/integrations/{integrationId}/use-cases/{useCaseId}/secure-proxy-whitelist",[["integrationId","p",true],["useCaseId","p",true]]],["updateSecureProxyWhitelist","put","/v2/integrations/{integrationId}/use-cases/{useCaseId}/secure-proxy-whitelist",[["integrationId","p",true],["useCaseId","p",true]],1],["listSecureProxyWhitelistHistory","get","/v2/integrations/{integrationId}/use-cases/{useCaseId}/secure-proxy-whitelist/history",[["integrationId","p",true],["useCaseId","p",true],["limit","q"]]],["setIntegrationAppMapping","put","/v1/integrations/{integrationId}/app-mapping",[["integrationId","p",true]],1],["deleteIntegrationAppMapping","delete","/v1/integrations/{integrationId}/app-mapping",[["integrationId","p",true]],1],["queryInboundMonitoringEvents","post","/v1/integrations/{integrationId}/monitoring/inbound-events",[["integrationId","p",true]],1],["getMonitoringStats","post","/v1/integrations/{integrationId}/monitoring/stats",[["integrationId","p",true]],1],["getMonitoringTimeSeries","post","/v1/integrations/{integrationId}/monitoring/timeseries",[["integrationId","p",true]],1],["getOutboundStatus","get","/v1/integrations/{integrationId}/outbound-status",[["integrationId","p",true]]],["queryAccessLogs","post","/v1/integrations/{integrationId}/monitoring/access-logs",[["integrationId","p",true]],1],["queryOutboundMonitoringEvents","post","/v1/integrations/{integrationId}/monitoring/outbound-events",[["integrationId","p",true]],1],["queryMonitoringEventsV2","post","/v2/integrations/{integrationId}/monitoring/events",[["integrationId","p",true]],1],["getMonitoringStatsV2","post","/v2/integrations/{integrationId}/monitoring/stats",[["integrationId","p",true]],1],["getMonitoringTimeSeriesV2","post","/v2/integrations/{integrationId}/monitoring/time-series",[["integrationId","p",true]],1],["getAssociatedMonitoringEvents","get","/v2/integrations/{integrationId}/monitoring/events/{eventId}/associated",[["integrationId","p",true],["eventId","p",true]]],["listSecureProxies","get","/v1/integrations/secure-proxies"],["secureProxy","post","/v1/secure-proxy",null,1],["managedCallExecute","post","/v1/managed-call/{slug}/execute",[["slug","p",true]],1],["generateTypesPreview","post","/v1/integrations/{integrationId}/generate-types-preview",[["integrationId","p",true]]],["generateTypes","post","/v1/integrations/{integrationId}/generate-types",[["integrationId","p",true]],1],["commitTypes","post","/v1/integrations/{integrationId}/commit-types",[["integrationId","p",true]],1]],"v":"3.0.3"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"openapi": "3.0.3",
|
|
3
3
|
"info": {
|
|
4
4
|
"title": "Integration Toolkit API",
|
|
5
|
-
"version": "1.0.
|
|
5
|
+
"version": "1.0.11",
|
|
6
6
|
"description": "API for integrating with external systems in a standardised way."
|
|
7
7
|
},
|
|
8
8
|
"tags": [
|
|
@@ -1839,6 +1839,227 @@
|
|
|
1839
1839
|
}
|
|
1840
1840
|
}
|
|
1841
1841
|
},
|
|
1842
|
+
"/v2/integrations/{integrationId}/use-cases/{useCaseId}/secure-proxy-whitelist": {
|
|
1843
|
+
"get": {
|
|
1844
|
+
"operationId": "getSecureProxyWhitelist",
|
|
1845
|
+
"summary": "Get secure_proxy whitelist (admin portal only)",
|
|
1846
|
+
"description": "Returns the current allowed_domains, allowed_ips, and vpc_mode for a secure_proxy use case.\nStaff-only — gated by internal-auth issuer AND admin-portal Cognito user pool membership.\nRejects Login-As tokens.\n",
|
|
1847
|
+
"tags": [
|
|
1848
|
+
"integrations",
|
|
1849
|
+
"proxy"
|
|
1850
|
+
],
|
|
1851
|
+
"security": [
|
|
1852
|
+
{
|
|
1853
|
+
"EpilotAuth": []
|
|
1854
|
+
}
|
|
1855
|
+
],
|
|
1856
|
+
"parameters": [
|
|
1857
|
+
{
|
|
1858
|
+
"name": "integrationId",
|
|
1859
|
+
"in": "path",
|
|
1860
|
+
"required": true,
|
|
1861
|
+
"description": "The integration ID",
|
|
1862
|
+
"schema": {
|
|
1863
|
+
"type": "string",
|
|
1864
|
+
"format": "uuid"
|
|
1865
|
+
}
|
|
1866
|
+
},
|
|
1867
|
+
{
|
|
1868
|
+
"name": "useCaseId",
|
|
1869
|
+
"in": "path",
|
|
1870
|
+
"required": true,
|
|
1871
|
+
"description": "The use case ID",
|
|
1872
|
+
"schema": {
|
|
1873
|
+
"type": "string",
|
|
1874
|
+
"format": "uuid"
|
|
1875
|
+
}
|
|
1876
|
+
}
|
|
1877
|
+
],
|
|
1878
|
+
"responses": {
|
|
1879
|
+
"200": {
|
|
1880
|
+
"description": "Current whitelist",
|
|
1881
|
+
"content": {
|
|
1882
|
+
"application/json": {
|
|
1883
|
+
"schema": {
|
|
1884
|
+
"$ref": "#/components/schemas/SecureProxyWhitelist"
|
|
1885
|
+
}
|
|
1886
|
+
}
|
|
1887
|
+
}
|
|
1888
|
+
},
|
|
1889
|
+
"400": {
|
|
1890
|
+
"$ref": "#/components/responses/BadRequest"
|
|
1891
|
+
},
|
|
1892
|
+
"401": {
|
|
1893
|
+
"$ref": "#/components/responses/Unauthorized"
|
|
1894
|
+
},
|
|
1895
|
+
"403": {
|
|
1896
|
+
"$ref": "#/components/responses/Forbidden"
|
|
1897
|
+
},
|
|
1898
|
+
"404": {
|
|
1899
|
+
"description": "Use case not found or not of type secure_proxy"
|
|
1900
|
+
}
|
|
1901
|
+
}
|
|
1902
|
+
},
|
|
1903
|
+
"put": {
|
|
1904
|
+
"operationId": "updateSecureProxyWhitelist",
|
|
1905
|
+
"summary": "Update secure_proxy whitelist (admin portal only)",
|
|
1906
|
+
"description": "Replaces allowed_domains and/or allowed_ips on a secure_proxy use case.\nAt least one of the two fields is required. Validation mirrors the CLI's\n`validateDomainPatterns` / `validateCidrs`. Writes a USECASE_HISTORY row\nwith the admin user's email as `changed_by`.\n\nUpdate semantics per field:\n - **omitted** — field is not modified; the stored value is preserved.\n - **non-empty array** — the stored value is replaced with the supplied list.\n - **empty array (`[]`)** — the list is cleared (stored as `[]`). This is\n the canonical way to remove all entries. `null` is not accepted.\n\nStaff-only — same auth gates as GET.\n",
|
|
1907
|
+
"tags": [
|
|
1908
|
+
"integrations",
|
|
1909
|
+
"proxy"
|
|
1910
|
+
],
|
|
1911
|
+
"security": [
|
|
1912
|
+
{
|
|
1913
|
+
"EpilotAuth": []
|
|
1914
|
+
}
|
|
1915
|
+
],
|
|
1916
|
+
"parameters": [
|
|
1917
|
+
{
|
|
1918
|
+
"name": "integrationId",
|
|
1919
|
+
"in": "path",
|
|
1920
|
+
"required": true,
|
|
1921
|
+
"description": "The integration ID",
|
|
1922
|
+
"schema": {
|
|
1923
|
+
"type": "string",
|
|
1924
|
+
"format": "uuid"
|
|
1925
|
+
}
|
|
1926
|
+
},
|
|
1927
|
+
{
|
|
1928
|
+
"name": "useCaseId",
|
|
1929
|
+
"in": "path",
|
|
1930
|
+
"required": true,
|
|
1931
|
+
"description": "The use case ID",
|
|
1932
|
+
"schema": {
|
|
1933
|
+
"type": "string",
|
|
1934
|
+
"format": "uuid"
|
|
1935
|
+
}
|
|
1936
|
+
}
|
|
1937
|
+
],
|
|
1938
|
+
"requestBody": {
|
|
1939
|
+
"required": true,
|
|
1940
|
+
"content": {
|
|
1941
|
+
"application/json": {
|
|
1942
|
+
"schema": {
|
|
1943
|
+
"$ref": "#/components/schemas/SecureProxyWhitelistUpdate"
|
|
1944
|
+
}
|
|
1945
|
+
}
|
|
1946
|
+
}
|
|
1947
|
+
},
|
|
1948
|
+
"responses": {
|
|
1949
|
+
"200": {
|
|
1950
|
+
"description": "Updated whitelist (same shape as GET)",
|
|
1951
|
+
"content": {
|
|
1952
|
+
"application/json": {
|
|
1953
|
+
"schema": {
|
|
1954
|
+
"$ref": "#/components/schemas/SecureProxyWhitelist"
|
|
1955
|
+
}
|
|
1956
|
+
}
|
|
1957
|
+
}
|
|
1958
|
+
},
|
|
1959
|
+
"400": {
|
|
1960
|
+
"$ref": "#/components/responses/BadRequest"
|
|
1961
|
+
},
|
|
1962
|
+
"401": {
|
|
1963
|
+
"$ref": "#/components/responses/Unauthorized"
|
|
1964
|
+
},
|
|
1965
|
+
"403": {
|
|
1966
|
+
"$ref": "#/components/responses/Forbidden"
|
|
1967
|
+
},
|
|
1968
|
+
"404": {
|
|
1969
|
+
"description": "Use case not found or not of type secure_proxy"
|
|
1970
|
+
}
|
|
1971
|
+
}
|
|
1972
|
+
}
|
|
1973
|
+
},
|
|
1974
|
+
"/v2/integrations/{integrationId}/use-cases/{useCaseId}/secure-proxy-whitelist/history": {
|
|
1975
|
+
"get": {
|
|
1976
|
+
"operationId": "listSecureProxyWhitelistHistory",
|
|
1977
|
+
"summary": "List secure_proxy whitelist change history (admin portal only)",
|
|
1978
|
+
"description": "Returns the most recent USECASE_HISTORY entries for a secure_proxy use case,\nin reverse chronological order (newest first). Each entry includes the\nactor email (`changed_by`), the ISO-8601 timestamp (`history_created_at`),\nthe `change_description` (free-text action), and the full `configuration`\nsnapshot — from which UI-08 computes a before/after diff between consecutive\nentries.\n\nStaff-only — gated by internal-auth issuer AND admin-portal Cognito user pool\nmembership. Rejects Login-As tokens (same auth gate as the GET / PUT\nsecure-proxy-whitelist operations).\n\nThin wrapper over the service-layer `listUseCaseHistory` that powers\n`GET /v1/integrations/{integrationId}/use-cases/{useCaseId}/history` — the\nseparate path exists because the /v1 variant is tenant-gated and admin-portal\ninternal-auth tokens do not carry tenant permissions.\n",
|
|
1979
|
+
"tags": [
|
|
1980
|
+
"integrations",
|
|
1981
|
+
"proxy"
|
|
1982
|
+
],
|
|
1983
|
+
"security": [
|
|
1984
|
+
{
|
|
1985
|
+
"EpilotAuth": []
|
|
1986
|
+
}
|
|
1987
|
+
],
|
|
1988
|
+
"parameters": [
|
|
1989
|
+
{
|
|
1990
|
+
"name": "integrationId",
|
|
1991
|
+
"in": "path",
|
|
1992
|
+
"required": true,
|
|
1993
|
+
"description": "The integration ID",
|
|
1994
|
+
"schema": {
|
|
1995
|
+
"type": "string",
|
|
1996
|
+
"format": "uuid"
|
|
1997
|
+
}
|
|
1998
|
+
},
|
|
1999
|
+
{
|
|
2000
|
+
"name": "useCaseId",
|
|
2001
|
+
"in": "path",
|
|
2002
|
+
"required": true,
|
|
2003
|
+
"description": "The use case ID (must be of type secure_proxy)",
|
|
2004
|
+
"schema": {
|
|
2005
|
+
"type": "string",
|
|
2006
|
+
"format": "uuid"
|
|
2007
|
+
}
|
|
2008
|
+
},
|
|
2009
|
+
{
|
|
2010
|
+
"name": "limit",
|
|
2011
|
+
"in": "query",
|
|
2012
|
+
"required": false,
|
|
2013
|
+
"description": "Maximum number of history entries to return. Default 10, max 50.\nCapped at the service-layer page size (20) so `limit > 20` is silently\nclamped to 20. UI-08 requests 5-10 for the panel view.\n",
|
|
2014
|
+
"schema": {
|
|
2015
|
+
"type": "integer",
|
|
2016
|
+
"minimum": 1,
|
|
2017
|
+
"maximum": 50,
|
|
2018
|
+
"default": 10
|
|
2019
|
+
}
|
|
2020
|
+
}
|
|
2021
|
+
],
|
|
2022
|
+
"responses": {
|
|
2023
|
+
"200": {
|
|
2024
|
+
"description": "Successfully retrieved secure_proxy history",
|
|
2025
|
+
"content": {
|
|
2026
|
+
"application/json": {
|
|
2027
|
+
"schema": {
|
|
2028
|
+
"type": "object",
|
|
2029
|
+
"required": [
|
|
2030
|
+
"history"
|
|
2031
|
+
],
|
|
2032
|
+
"properties": {
|
|
2033
|
+
"history": {
|
|
2034
|
+
"type": "array",
|
|
2035
|
+
"description": "Entries are `SecureProxyUseCaseHistoryEntry` in reverse\nchronological order (newest first). Entries older than the\nrequested `limit` are not returned.\n",
|
|
2036
|
+
"items": {
|
|
2037
|
+
"$ref": "#/components/schemas/SecureProxyUseCaseHistoryEntry"
|
|
2038
|
+
}
|
|
2039
|
+
}
|
|
2040
|
+
}
|
|
2041
|
+
}
|
|
2042
|
+
}
|
|
2043
|
+
}
|
|
2044
|
+
},
|
|
2045
|
+
"400": {
|
|
2046
|
+
"$ref": "#/components/responses/BadRequest"
|
|
2047
|
+
},
|
|
2048
|
+
"401": {
|
|
2049
|
+
"$ref": "#/components/responses/Unauthorized"
|
|
2050
|
+
},
|
|
2051
|
+
"403": {
|
|
2052
|
+
"$ref": "#/components/responses/Forbidden"
|
|
2053
|
+
},
|
|
2054
|
+
"404": {
|
|
2055
|
+
"description": "Use case not found or not of type secure_proxy"
|
|
2056
|
+
},
|
|
2057
|
+
"500": {
|
|
2058
|
+
"$ref": "#/components/responses/InternalServerError"
|
|
2059
|
+
}
|
|
2060
|
+
}
|
|
2061
|
+
}
|
|
2062
|
+
},
|
|
1842
2063
|
"/v1/integrations/{integrationId}/app-mapping": {
|
|
1843
2064
|
"put": {
|
|
1844
2065
|
"operationId": "setIntegrationAppMapping",
|
|
@@ -3043,6 +3264,12 @@
|
|
|
3043
3264
|
"type": "string",
|
|
3044
3265
|
"description": "Optional ID that identifies the specific request for debugging purposes"
|
|
3045
3266
|
},
|
|
3267
|
+
"group_id": {
|
|
3268
|
+
"type": "string",
|
|
3269
|
+
"description": "Controls ordering and parallelism for this request's events.\n\nBy default, all events for a given `integration_id` are processed\n**strictly in order, one at a time**. For high-volume integrations this\ncan become a throughput bottleneck.\n\nSet `group_id` to opt into **parallel processing**:\n- Events sharing the same `group_id` are processed in the order received.\n- Events with different `group_id` values are processed in parallel.\n\nTypical usage is to derive `group_id` from a logical partition key in\nyour payload — for example the customer ID, contract ID, or meter ID —\nso updates to the same business object remain ordered while unrelated\nobjects are processed concurrently.\n\nNotes:\n- Up to 20 groups per integration are processed concurrently. Using\n more distinct values than that yields no additional parallelism.\n- Omit this field if strict per-integration ordering is required.\n",
|
|
3270
|
+
"maxLength": 128,
|
|
3271
|
+
"example": "customer-42"
|
|
3272
|
+
},
|
|
3046
3273
|
"events": {
|
|
3047
3274
|
"type": "array",
|
|
3048
3275
|
"description": "List of ERP events to process",
|
|
@@ -3817,6 +4044,12 @@
|
|
|
3817
4044
|
},
|
|
3818
4045
|
"file_proxy_url": {
|
|
3819
4046
|
"$ref": "#/components/schemas/FileProxyUrlConfig"
|
|
4047
|
+
},
|
|
4048
|
+
"portal_ref": {
|
|
4049
|
+
"$ref": "#/components/schemas/PortalRefConfig"
|
|
4050
|
+
},
|
|
4051
|
+
"env_var_ref": {
|
|
4052
|
+
"$ref": "#/components/schemas/EnvVarRefConfig"
|
|
3820
4053
|
}
|
|
3821
4054
|
}
|
|
3822
4055
|
},
|
|
@@ -3903,6 +4136,180 @@
|
|
|
3903
4136
|
}
|
|
3904
4137
|
]
|
|
3905
4138
|
},
|
|
4139
|
+
"PortalOrigin": {
|
|
4140
|
+
"type": "string",
|
|
4141
|
+
"enum": [
|
|
4142
|
+
"END_CUSTOMER_PORTAL",
|
|
4143
|
+
"INSTALLER_PORTAL",
|
|
4144
|
+
"B2B_PORTAL",
|
|
4145
|
+
"ADDITIONAL_PORTAL"
|
|
4146
|
+
],
|
|
4147
|
+
"description": "Origin/type of an epilot portal configuration."
|
|
4148
|
+
},
|
|
4149
|
+
"PortalRefFilter": {
|
|
4150
|
+
"type": "object",
|
|
4151
|
+
"description": "Filter applied to the org's portal configurations before selection. All filters default to \"match any\" except `enabled` (default `true`) and `is_dummy` (default `false`). Set `enabled` or `is_dummy` to `null` to opt out of the default.\n",
|
|
4152
|
+
"properties": {
|
|
4153
|
+
"origin": {
|
|
4154
|
+
"oneOf": [
|
|
4155
|
+
{
|
|
4156
|
+
"$ref": "#/components/schemas/PortalOrigin"
|
|
4157
|
+
},
|
|
4158
|
+
{
|
|
4159
|
+
"type": "array",
|
|
4160
|
+
"items": {
|
|
4161
|
+
"$ref": "#/components/schemas/PortalOrigin"
|
|
4162
|
+
}
|
|
4163
|
+
}
|
|
4164
|
+
],
|
|
4165
|
+
"description": "Single origin or array of origins (matches if origin is in the array)."
|
|
4166
|
+
},
|
|
4167
|
+
"enabled": {
|
|
4168
|
+
"type": "boolean",
|
|
4169
|
+
"nullable": true,
|
|
4170
|
+
"description": "Match portals with this `enabled` value. Default `true`. Set to `null` to ignore."
|
|
4171
|
+
},
|
|
4172
|
+
"is_dummy": {
|
|
4173
|
+
"type": "boolean",
|
|
4174
|
+
"nullable": true,
|
|
4175
|
+
"description": "Match portals with this `is_dummy` value. Default `false`. Set to `null` to ignore."
|
|
4176
|
+
},
|
|
4177
|
+
"is_epilot_domain": {
|
|
4178
|
+
"type": "boolean",
|
|
4179
|
+
"description": "Optional restriction on `is_epilot_domain`."
|
|
4180
|
+
},
|
|
4181
|
+
"name": {
|
|
4182
|
+
"type": "string",
|
|
4183
|
+
"description": "Exact match on the portal's `name`."
|
|
4184
|
+
},
|
|
4185
|
+
"domain": {
|
|
4186
|
+
"type": "string",
|
|
4187
|
+
"description": "Exact match on the portal's `domain`."
|
|
4188
|
+
}
|
|
4189
|
+
}
|
|
4190
|
+
},
|
|
4191
|
+
"PortalRefConfig": {
|
|
4192
|
+
"description": "Resolves to a property of one of the calling organization's epilot portal configurations at runtime, replacing hard-coded environment-specific portal UUIDs in inbound mappings. Matched portals are sorted ascending by `(_created_at, portal_id)`; portals without `_created_at` sort first (treated as oldest). When `select: \"single\"` matches more than one portal, the resolver still returns the oldest match and emits a `PORTAL_REF_AMBIGUOUS` warning.\n",
|
|
4193
|
+
"oneOf": [
|
|
4194
|
+
{
|
|
4195
|
+
"type": "object",
|
|
4196
|
+
"properties": {
|
|
4197
|
+
"filter": {
|
|
4198
|
+
"$ref": "#/components/schemas/PortalRefFilter"
|
|
4199
|
+
},
|
|
4200
|
+
"select": {
|
|
4201
|
+
"type": "string",
|
|
4202
|
+
"enum": [
|
|
4203
|
+
"single",
|
|
4204
|
+
"all"
|
|
4205
|
+
],
|
|
4206
|
+
"default": "single",
|
|
4207
|
+
"description": "`single` returns one literal value (the oldest matching portal); `all` returns an array of literal values (0, 1, or many).\n"
|
|
4208
|
+
},
|
|
4209
|
+
"return": {
|
|
4210
|
+
"type": "string",
|
|
4211
|
+
"enum": [
|
|
4212
|
+
"portal_id",
|
|
4213
|
+
"origin",
|
|
4214
|
+
"domain",
|
|
4215
|
+
"name"
|
|
4216
|
+
],
|
|
4217
|
+
"default": "portal_id",
|
|
4218
|
+
"description": "Which portal field to emit."
|
|
4219
|
+
}
|
|
4220
|
+
}
|
|
4221
|
+
},
|
|
4222
|
+
{
|
|
4223
|
+
"type": "object",
|
|
4224
|
+
"required": [
|
|
4225
|
+
"return",
|
|
4226
|
+
"jsonataExpression"
|
|
4227
|
+
],
|
|
4228
|
+
"properties": {
|
|
4229
|
+
"filter": {
|
|
4230
|
+
"$ref": "#/components/schemas/PortalRefFilter"
|
|
4231
|
+
},
|
|
4232
|
+
"select": {
|
|
4233
|
+
"type": "string",
|
|
4234
|
+
"enum": [
|
|
4235
|
+
"single",
|
|
4236
|
+
"all"
|
|
4237
|
+
],
|
|
4238
|
+
"default": "single"
|
|
4239
|
+
},
|
|
4240
|
+
"return": {
|
|
4241
|
+
"type": "string",
|
|
4242
|
+
"enum": [
|
|
4243
|
+
"jsonata"
|
|
4244
|
+
],
|
|
4245
|
+
"description": "Evaluate the sibling `jsonataExpression` against the matched portal(s). With `select: \"single\"` the input is the matched PortalConfig object; with `select: \"all\"` it is the full filtered+sorted array.\n"
|
|
4246
|
+
},
|
|
4247
|
+
"jsonataExpression": {
|
|
4248
|
+
"type": "string",
|
|
4249
|
+
"description": "JSONata expression evaluated against the matched portal(s)."
|
|
4250
|
+
}
|
|
4251
|
+
}
|
|
4252
|
+
}
|
|
4253
|
+
]
|
|
4254
|
+
},
|
|
4255
|
+
"EnvVarRefConfig": {
|
|
4256
|
+
"description": "Resolves to an org-scoped environment variable from the epilot environments-api service at runtime, replacing hard-coded environment-specific values (URLs, prefixes, identifiers) in inbound mappings. Secrets (`SecretString` values) are never exposed; the runtime treats both \"missing key\" and \"secret-typed key\" as identical `undefined` outcomes (no info disclosure via error code). For secret-resolving contexts (e.g. authorization headers in managed-call or file-proxy step configurations), use the templated `{{ env.<key> }}` syntax instead — that mechanism does decrypt secrets.\n",
|
|
4257
|
+
"oneOf": [
|
|
4258
|
+
{
|
|
4259
|
+
"type": "object",
|
|
4260
|
+
"required": [
|
|
4261
|
+
"key"
|
|
4262
|
+
],
|
|
4263
|
+
"properties": {
|
|
4264
|
+
"key": {
|
|
4265
|
+
"type": "string",
|
|
4266
|
+
"pattern": "^[a-z0-9][a-z0-9_.-]{0,127}$",
|
|
4267
|
+
"description": "Environment variable key. Must match the environments-api key contract (lowercase, digits, `_`, `.`, `-`; max 128 chars; starts with a lowercase letter or digit). Supports dot-namespaced keys like `erp_api.base_url`.\n"
|
|
4268
|
+
},
|
|
4269
|
+
"default": {
|
|
4270
|
+
"type": "string",
|
|
4271
|
+
"description": "Literal string returned when the key is missing (or is a secret). When provided, the `ENV_VAR_REF_NOT_FOUND` warning is suppressed because the author signalled the absence is expected.\n"
|
|
4272
|
+
},
|
|
4273
|
+
"return": {
|
|
4274
|
+
"type": "string",
|
|
4275
|
+
"enum": [
|
|
4276
|
+
"value"
|
|
4277
|
+
],
|
|
4278
|
+
"default": "value",
|
|
4279
|
+
"description": "`value` returns the resolved env-var string as-is.\n"
|
|
4280
|
+
}
|
|
4281
|
+
}
|
|
4282
|
+
},
|
|
4283
|
+
{
|
|
4284
|
+
"type": "object",
|
|
4285
|
+
"required": [
|
|
4286
|
+
"key",
|
|
4287
|
+
"return",
|
|
4288
|
+
"jsonataExpression"
|
|
4289
|
+
],
|
|
4290
|
+
"properties": {
|
|
4291
|
+
"key": {
|
|
4292
|
+
"type": "string",
|
|
4293
|
+
"pattern": "^[a-z0-9][a-z0-9_.-]{0,127}$"
|
|
4294
|
+
},
|
|
4295
|
+
"default": {
|
|
4296
|
+
"type": "string"
|
|
4297
|
+
},
|
|
4298
|
+
"return": {
|
|
4299
|
+
"type": "string",
|
|
4300
|
+
"enum": [
|
|
4301
|
+
"jsonata"
|
|
4302
|
+
],
|
|
4303
|
+
"description": "Evaluate the sibling `jsonataExpression` against the resolved env-var value (the input `$` is the string value).\n"
|
|
4304
|
+
},
|
|
4305
|
+
"jsonataExpression": {
|
|
4306
|
+
"type": "string",
|
|
4307
|
+
"description": "JSONata expression evaluated against the resolved env-var value."
|
|
4308
|
+
}
|
|
4309
|
+
}
|
|
4310
|
+
}
|
|
4311
|
+
]
|
|
4312
|
+
},
|
|
3906
4313
|
"EmbeddedUseCaseRequest": {
|
|
3907
4314
|
"oneOf": [
|
|
3908
4315
|
{
|
|
@@ -3956,7 +4363,7 @@
|
|
|
3956
4363
|
"pattern": "^[a-z0-9][a-z0-9_-]*$",
|
|
3957
4364
|
"minLength": 1,
|
|
3958
4365
|
"maxLength": 255,
|
|
3959
|
-
"description": "URL-safe identifier for the use case.
|
|
4366
|
+
"description": "URL-safe identifier for the use case. Optional on this upsert/sync endpoint — when omitted, the server derives one from the name and ensures uniqueness within the integration. Immutable after creation.\n"
|
|
3960
4367
|
},
|
|
3961
4368
|
"enabled": {
|
|
3962
4369
|
"type": "boolean",
|
|
@@ -4352,6 +4759,7 @@
|
|
|
4352
4759
|
"type": "object",
|
|
4353
4760
|
"required": [
|
|
4354
4761
|
"name",
|
|
4762
|
+
"slug",
|
|
4355
4763
|
"type",
|
|
4356
4764
|
"enabled"
|
|
4357
4765
|
],
|
|
@@ -4367,7 +4775,7 @@
|
|
|
4367
4775
|
"pattern": "^[a-z0-9][a-z0-9_-]*$",
|
|
4368
4776
|
"minLength": 1,
|
|
4369
4777
|
"maxLength": 255,
|
|
4370
|
-
"description": "URL-safe identifier for the use case.
|
|
4778
|
+
"description": "URL-safe identifier for the use case. Required for explicit creates so every use case has a portable cross-environment identifier. Must be unique per integration. Immutable after creation. Lowercase alphanumeric, hyphens, and underscores only.\n"
|
|
4371
4779
|
},
|
|
4372
4780
|
"enabled": {
|
|
4373
4781
|
"type": "boolean",
|
|
@@ -4743,6 +5151,10 @@
|
|
|
4743
5151
|
"type": "string",
|
|
4744
5152
|
"description": "Description of the change that was made at this point in history"
|
|
4745
5153
|
},
|
|
5154
|
+
"changed_by": {
|
|
5155
|
+
"type": "string",
|
|
5156
|
+
"description": "User ID of the user who made the change that produced this history entry"
|
|
5157
|
+
},
|
|
4746
5158
|
"created_at": {
|
|
4747
5159
|
"type": "string",
|
|
4748
5160
|
"format": "date-time",
|
|
@@ -4926,6 +5338,61 @@
|
|
|
4926
5338
|
}
|
|
4927
5339
|
}
|
|
4928
5340
|
},
|
|
5341
|
+
"SecureProxyWhitelist": {
|
|
5342
|
+
"type": "object",
|
|
5343
|
+
"required": [
|
|
5344
|
+
"vpc_mode",
|
|
5345
|
+
"allowed_domains",
|
|
5346
|
+
"allowed_ips"
|
|
5347
|
+
],
|
|
5348
|
+
"description": "Current whitelist state for a secure_proxy use case. vpc_mode is read-only\ncontext so the UI can show the user what mode the pool is in.\n",
|
|
5349
|
+
"properties": {
|
|
5350
|
+
"vpc_mode": {
|
|
5351
|
+
"type": "string",
|
|
5352
|
+
"nullable": true,
|
|
5353
|
+
"enum": [
|
|
5354
|
+
"static_ip",
|
|
5355
|
+
"secure_link"
|
|
5356
|
+
],
|
|
5357
|
+
"description": "VPC routing mode (read-only). `null` if not yet set."
|
|
5358
|
+
},
|
|
5359
|
+
"allowed_domains": {
|
|
5360
|
+
"type": "array",
|
|
5361
|
+
"items": {
|
|
5362
|
+
"type": "string"
|
|
5363
|
+
},
|
|
5364
|
+
"description": "Exact domain (\"api.example.com\") or wildcard prefix (\"*.example.com\").\nWildcards must have at least 2 labels in the suffix.\n"
|
|
5365
|
+
},
|
|
5366
|
+
"allowed_ips": {
|
|
5367
|
+
"type": "array",
|
|
5368
|
+
"items": {
|
|
5369
|
+
"type": "string"
|
|
5370
|
+
},
|
|
5371
|
+
"description": "CIDR-notation IP ranges, e.g. \"10.0.0.0/24\"."
|
|
5372
|
+
}
|
|
5373
|
+
}
|
|
5374
|
+
},
|
|
5375
|
+
"SecureProxyWhitelistUpdate": {
|
|
5376
|
+
"type": "object",
|
|
5377
|
+
"description": "Partial update for a secure_proxy whitelist. At least one of\n`allowed_domains` or `allowed_ips` must be provided.\n\nPer-field semantics:\n - **omitted** — the field is not modified; the stored value is preserved.\n - **non-empty array** — the stored value is replaced with the supplied list.\n - **empty array (`[]`)** — the list is cleared (stored as `[]`). This is the\n canonical way to remove all entries from a list. `null` is not accepted.\n",
|
|
5378
|
+
"minProperties": 1,
|
|
5379
|
+
"properties": {
|
|
5380
|
+
"allowed_domains": {
|
|
5381
|
+
"type": "array",
|
|
5382
|
+
"items": {
|
|
5383
|
+
"type": "string"
|
|
5384
|
+
},
|
|
5385
|
+
"description": "Exact domain (\"api.example.com\") or wildcard prefix (\"*.example.com\").\nWildcards must have at least 2 labels in the suffix.\nPass `[]` to clear all allowed domains.\n"
|
|
5386
|
+
},
|
|
5387
|
+
"allowed_ips": {
|
|
5388
|
+
"type": "array",
|
|
5389
|
+
"items": {
|
|
5390
|
+
"type": "string"
|
|
5391
|
+
},
|
|
5392
|
+
"description": "CIDR-notation IP ranges, e.g. \"10.0.0.0/24\".\nPass `[]` to clear all allowed IPs.\n"
|
|
5393
|
+
}
|
|
5394
|
+
}
|
|
5395
|
+
},
|
|
4929
5396
|
"SecureProxySummary": {
|
|
4930
5397
|
"type": "object",
|
|
4931
5398
|
"required": [
|
|
@@ -5467,6 +5934,15 @@
|
|
|
5467
5934
|
},
|
|
5468
5935
|
"description": "Additional use-case-specific parameters expected in the download URL query string (beyond the required orgId, integrationId, and useCaseSlug or useCaseId)"
|
|
5469
5936
|
},
|
|
5937
|
+
"allowed_origins": {
|
|
5938
|
+
"type": "array",
|
|
5939
|
+
"items": {
|
|
5940
|
+
"type": "string",
|
|
5941
|
+
"format": "uri",
|
|
5942
|
+
"pattern": "^https?://"
|
|
5943
|
+
},
|
|
5944
|
+
"description": "Additional origins permitted to call /download for this use case (CORS, exact match). Portal origins are always allowed."
|
|
5945
|
+
},
|
|
5470
5946
|
"steps": {
|
|
5471
5947
|
"type": "array",
|
|
5472
5948
|
"minItems": 1,
|
|
@@ -5847,7 +6323,7 @@
|
|
|
5847
6323
|
"attributes": {
|
|
5848
6324
|
"type": "object",
|
|
5849
6325
|
"additionalProperties": true,
|
|
5850
|
-
"description": "Meter reading attributes. Required: external_id, timestamp, source, value. `source` must be one of: ECP, ERP, 360, journey-submission. `reason` (optional) must be one of: regular, irregular, last, first, meter_change, contract_change, meter_adjustment (or empty/null)."
|
|
6326
|
+
"description": "Meter reading attributes. Required: external_id, timestamp, source, value. `timestamp` must be ISO 8601 — either `YYYY-MM-DD` or `YYYY-MM-DDTHH:mm:ss` (with optional fractional seconds and optional `Z` / `±HH:mm` timezone offset); non-ISO formats (e.g. `DD.MM.YYYY` or epoch numbers) are rejected and must be converted upstream via a `jsonataExpression` (e.g. `$fromMillis(...)`). Date-only values are normalized to midnight UTC and offset-less date-times are anchored to UTC before being forwarded to the metering API. `source` must be one of: ECP, ERP, 360, journey-submission. `reason` (optional) must be one of: regular, irregular, last, first, meter_change, contract_change, meter_adjustment (or empty/null)."
|
|
5851
6327
|
}
|
|
5852
6328
|
}
|
|
5853
6329
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"s":"
|
|
1
|
+
{"s":"","o":[["getCustomerMeters","get","/v1/metering/meter",[["IncludePendingChangesetsQueryParam"]]],["getMetersByContractId","get","/v1/metering/contract/meters/{contract_id}",[["contract_id","p",true]]],["updateMeter","patch","/v1/metering/meter/{id}",[["id","p",true]],1],["getMeter","get","/v1/metering/meter/{id}",[["id","p",true]]],["getMeterCounters","get","/v1/metering/counter",[["meter_id","q",true]]],["getCounterDetails","get","/v1/metering/counter/{counter_id}",[["counter_id","p",true]]],["createMeterReading","post","/v1/metering/reading",[["DirectQueryParam"]],1],["createMeterReadings","post","/v1/metering/readings",[["async","q"],["ActivityIdQueryParam"],["SkipValidationQueryParam"],["DirectQueryParam"]],1],["createPortalMeterReadings","post","/v1/metering/readings/{meter_id}",[["meter_id","p",true],["DirectQueryParam"]],1],["batchWriteMeterReadings","post","/v2/metering/readings",[["async","q"],["SkipValidationQueryParam"],["ActivityIdQueryParam"],["DirectQueryParam"]],1],["createMeterReadingFromSubmission","post","/v1/metering/reading/submission",null,1],["getAllowedReadingForMeter","get","/v1/metering/allowed/reading/{meter_id}",[["meter_id","p",true],["timestamp","q"]]],["createReadingWithMeter","post","/v1/metering/reading/with-meter",null,1],["getReadingsByInterval","get","/v1/metering/reading/{meter_id}/{counter_id}",[["meter_id","p",true],["counter_id","p",true],["start_date","q"],["end_date","q"],["direction","q"],["size","q"],["from","q"],["type","q",true],["sort","q"],["IncludePendingChangesetsQueryParam"]]],["updateMeterReading","put","/v1/metering/reading/{meter_id}/{counter_id}",[["meter_id","p",true],["counter_id","p",true],["timestamp","q",true]],1],["deleteMeterReading","delete","/v1/metering/reading/{meter_id}/{counter_id}",[["meter_id","p",true],["counter_id","p",true],["timestamp","q",true]]],["getReadingChangesets","get","/v1/metering/reading/{meter_id}/{counter_id}/changesets",[["MeterIdParam"],["CounterIdParam"]]],["applyReadingChangeset","post","/v1/metering/reading/{meter_id}/{counter_id}/changesets/{changeset_id}:apply",[["MeterIdParam"],["CounterIdParam"],["changeset_id","p",true]]],["dismissReadingChangeset","post","/v1/metering/reading/{meter_id}/{counter_id}/changesets/{changeset_id}:dismiss",[["MeterIdParam"],["CounterIdParam"],["changeset_id","p",true]],1],["updateReadingChangeset","patch","/v1/metering/reading/{meter_id}/{counter_id}/changesets/{changeset_id}",[["MeterIdParam"],["CounterIdParam"],["changeset_id","p",true]],1]],"v":"3.0.3","cp":{"MeterIdParam":["meter_id","p",true],"CounterIdParam":["counter_id","p",true],"DirectQueryParam":["direct","q"],"IncludePendingChangesetsQueryParam":["include_pending_changesets","q"],"ActivityIdQueryParam":["activity_id","q"],"SkipValidationQueryParam":["skip_validation","q"]}}
|