@epilot/cli 0.1.26 → 0.1.28
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/app.json +539 -31
- package/definitions/automation.json +42 -0
- package/definitions/configuration-hub.json +757 -7
- package/definitions/customer-portal.json +1063 -63
- package/definitions/email-settings.json +86 -4
- package/definitions/entity.json +568 -4
- package/definitions/event-catalog.json +256 -1
- package/definitions/file.json +262 -4
- package/definitions/integration-toolkit.json +480 -4
- package/definitions/journey.json +21 -1
- package/definitions/kanban.json +2 -1
- package/definitions/metering.json +728 -64
- package/definitions/notes.json +175 -130
- package/definitions/pricing.json +163 -84
- package/definitions/webhooks.json +149 -4
- package/definitions/workflow-definition.json +52 -0
- package/definitions/workflow.json +24 -0
- package/dist/bin/epilot.js +6 -6
- package/dist/{chunk-QSYX2PUB.js → chunk-OBSR3RKB.js} +51 -15
- package/dist/{completion-AZYWK6IZ.js → completion-AUP6EFBO.js} +1 -1
- package/dist/{upgrade-O5G6HRVY.js → upgrade-C6AGEAVE.js} +1 -1
- package/package.json +1 -1
|
@@ -733,8 +733,8 @@
|
|
|
733
733
|
"schema": {
|
|
734
734
|
"type": "string"
|
|
735
735
|
},
|
|
736
|
-
"required":
|
|
737
|
-
"description": "Hook ID
|
|
736
|
+
"required": false,
|
|
737
|
+
"description": "Optional Hook ID. If omitted, the only matching hook on the extension is used; if the extension has multiple hooks of the relevant type, this becomes required."
|
|
738
738
|
},
|
|
739
739
|
{
|
|
740
740
|
"in": "query",
|
|
@@ -818,16 +818,10 @@
|
|
|
818
818
|
"description": "Optional type of the consumption, such as 'nt' (night time) and 'ht' (high time) or 'feed-in' and 'feed-out'. Can be any string.",
|
|
819
819
|
"example": "nt"
|
|
820
820
|
},
|
|
821
|
-
"
|
|
821
|
+
"unit": {
|
|
822
822
|
"type": "string",
|
|
823
|
-
"description": "
|
|
824
|
-
"
|
|
825
|
-
"sum",
|
|
826
|
-
"average",
|
|
827
|
-
"max",
|
|
828
|
-
"min"
|
|
829
|
-
],
|
|
830
|
-
"example": "sum"
|
|
823
|
+
"description": "Optional unit of the consumption value. Defaults to unit present on the relevant Meter Counter.",
|
|
824
|
+
"example": "kWh"
|
|
831
825
|
}
|
|
832
826
|
},
|
|
833
827
|
"required": [
|
|
@@ -856,6 +850,178 @@
|
|
|
856
850
|
}
|
|
857
851
|
}
|
|
858
852
|
},
|
|
853
|
+
"/v2/portal/visualization:export": {
|
|
854
|
+
"post": {
|
|
855
|
+
"operationId": "prepareVisualizationExport",
|
|
856
|
+
"summary": "Prepare Visualization Export",
|
|
857
|
+
"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",
|
|
858
|
+
"tags": [
|
|
859
|
+
"ECP"
|
|
860
|
+
],
|
|
861
|
+
"security": [
|
|
862
|
+
{
|
|
863
|
+
"PortalAuth": []
|
|
864
|
+
}
|
|
865
|
+
],
|
|
866
|
+
"requestBody": {
|
|
867
|
+
"required": true,
|
|
868
|
+
"content": {
|
|
869
|
+
"application/json": {
|
|
870
|
+
"schema": {
|
|
871
|
+
"type": "object",
|
|
872
|
+
"properties": {
|
|
873
|
+
"app_id": {
|
|
874
|
+
"type": "string",
|
|
875
|
+
"description": "App ID providing the dataExport hook."
|
|
876
|
+
},
|
|
877
|
+
"extension_id": {
|
|
878
|
+
"type": "string",
|
|
879
|
+
"description": "Extension ID providing the dataExport hook."
|
|
880
|
+
},
|
|
881
|
+
"hook_id": {
|
|
882
|
+
"type": "string",
|
|
883
|
+
"description": "Optional Hook ID. If omitted, the only `dataExport` hook on the extension is used; if the extension has multiple `dataExport` hooks, this becomes required."
|
|
884
|
+
},
|
|
885
|
+
"from": {
|
|
886
|
+
"type": "string",
|
|
887
|
+
"format": "date-time",
|
|
888
|
+
"description": "Optional start date for the export window (ISO 8601 format)."
|
|
889
|
+
},
|
|
890
|
+
"to": {
|
|
891
|
+
"type": "string",
|
|
892
|
+
"format": "date-time",
|
|
893
|
+
"description": "Optional end date for the export window (ISO 8601 format)."
|
|
894
|
+
},
|
|
895
|
+
"context_entities": {
|
|
896
|
+
"$ref": "#/components/schemas/ContextEntities"
|
|
897
|
+
}
|
|
898
|
+
},
|
|
899
|
+
"required": [
|
|
900
|
+
"app_id",
|
|
901
|
+
"extension_id"
|
|
902
|
+
],
|
|
903
|
+
"additionalProperties": false
|
|
904
|
+
}
|
|
905
|
+
}
|
|
906
|
+
}
|
|
907
|
+
},
|
|
908
|
+
"responses": {
|
|
909
|
+
"200": {
|
|
910
|
+
"description": "Export descriptor returned by the App.",
|
|
911
|
+
"content": {
|
|
912
|
+
"application/json": {
|
|
913
|
+
"schema": {
|
|
914
|
+
"type": "object",
|
|
915
|
+
"properties": {
|
|
916
|
+
"download_url": {
|
|
917
|
+
"type": "string",
|
|
918
|
+
"description": "URL the client can use to download the exported file. May be a pre-signed or short-lived URL."
|
|
919
|
+
},
|
|
920
|
+
"filename": {
|
|
921
|
+
"type": "string",
|
|
922
|
+
"description": "Suggested filename for the exported file."
|
|
923
|
+
},
|
|
924
|
+
"content_type": {
|
|
925
|
+
"type": "string",
|
|
926
|
+
"description": "MIME type of the exported file.",
|
|
927
|
+
"example": "text/csv"
|
|
928
|
+
},
|
|
929
|
+
"expires_at": {
|
|
930
|
+
"type": "string",
|
|
931
|
+
"format": "date-time",
|
|
932
|
+
"description": "Optional expiration timestamp for the download URL."
|
|
933
|
+
}
|
|
934
|
+
},
|
|
935
|
+
"required": [
|
|
936
|
+
"download_url"
|
|
937
|
+
]
|
|
938
|
+
}
|
|
939
|
+
}
|
|
940
|
+
}
|
|
941
|
+
},
|
|
942
|
+
"401": {
|
|
943
|
+
"$ref": "#/components/responses/Unauthorized"
|
|
944
|
+
},
|
|
945
|
+
"403": {
|
|
946
|
+
"$ref": "#/components/responses/Forbidden"
|
|
947
|
+
},
|
|
948
|
+
"404": {
|
|
949
|
+
"$ref": "#/components/responses/NotFound"
|
|
950
|
+
},
|
|
951
|
+
"500": {
|
|
952
|
+
"$ref": "#/components/responses/InternalServerError"
|
|
953
|
+
}
|
|
954
|
+
}
|
|
955
|
+
}
|
|
956
|
+
},
|
|
957
|
+
"/v2/portal/visualization/metadata": {
|
|
958
|
+
"get": {
|
|
959
|
+
"operationId": "getVisualizationMetadata",
|
|
960
|
+
"summary": "Get Visualization Metadata",
|
|
961
|
+
"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",
|
|
962
|
+
"tags": [
|
|
963
|
+
"ECP"
|
|
964
|
+
],
|
|
965
|
+
"security": [
|
|
966
|
+
{
|
|
967
|
+
"PortalAuth": []
|
|
968
|
+
}
|
|
969
|
+
],
|
|
970
|
+
"parameters": [
|
|
971
|
+
{
|
|
972
|
+
"in": "query",
|
|
973
|
+
"name": "app_id",
|
|
974
|
+
"schema": {
|
|
975
|
+
"type": "string"
|
|
976
|
+
},
|
|
977
|
+
"required": true,
|
|
978
|
+
"description": "App ID providing the visualizationMetadata hook."
|
|
979
|
+
},
|
|
980
|
+
{
|
|
981
|
+
"in": "query",
|
|
982
|
+
"name": "extensionId",
|
|
983
|
+
"schema": {
|
|
984
|
+
"type": "string"
|
|
985
|
+
},
|
|
986
|
+
"required": true,
|
|
987
|
+
"description": "Extension ID providing the visualizationMetadata hook."
|
|
988
|
+
},
|
|
989
|
+
{
|
|
990
|
+
"in": "query",
|
|
991
|
+
"name": "context_entities",
|
|
992
|
+
"required": false,
|
|
993
|
+
"description": "Entities to include in the context for variable interpolation in the hook (typically the meter and any other entities that scope the visualization).",
|
|
994
|
+
"schema": {
|
|
995
|
+
"$ref": "#/components/schemas/ContextEntities"
|
|
996
|
+
}
|
|
997
|
+
}
|
|
998
|
+
],
|
|
999
|
+
"responses": {
|
|
1000
|
+
"200": {
|
|
1001
|
+
"description": "Visualization metadata returned successfully.",
|
|
1002
|
+
"content": {
|
|
1003
|
+
"application/json": {
|
|
1004
|
+
"schema": {
|
|
1005
|
+
"$ref": "#/components/schemas/VisualizationMetadata"
|
|
1006
|
+
}
|
|
1007
|
+
}
|
|
1008
|
+
}
|
|
1009
|
+
},
|
|
1010
|
+
"401": {
|
|
1011
|
+
"$ref": "#/components/responses/Unauthorized"
|
|
1012
|
+
},
|
|
1013
|
+
"403": {
|
|
1014
|
+
"$ref": "#/components/responses/Forbidden"
|
|
1015
|
+
},
|
|
1016
|
+
"404": {
|
|
1017
|
+
"$ref": "#/components/responses/NotFound"
|
|
1018
|
+
},
|
|
1019
|
+
"500": {
|
|
1020
|
+
"$ref": "#/components/responses/InternalServerError"
|
|
1021
|
+
}
|
|
1022
|
+
}
|
|
1023
|
+
}
|
|
1024
|
+
},
|
|
859
1025
|
"/v2/portal/costs": {
|
|
860
1026
|
"get": {
|
|
861
1027
|
"operationId": "getCosts",
|
|
@@ -894,8 +1060,8 @@
|
|
|
894
1060
|
"schema": {
|
|
895
1061
|
"type": "string"
|
|
896
1062
|
},
|
|
897
|
-
"required":
|
|
898
|
-
"description": "Hook ID
|
|
1063
|
+
"required": false,
|
|
1064
|
+
"description": "Optional Hook ID. If omitted, the only matching hook on the extension is used; if the extension has multiple hooks of the relevant type, this becomes required."
|
|
899
1065
|
},
|
|
900
1066
|
{
|
|
901
1067
|
"in": "query",
|
|
@@ -1068,8 +1234,8 @@
|
|
|
1068
1234
|
"schema": {
|
|
1069
1235
|
"type": "string"
|
|
1070
1236
|
},
|
|
1071
|
-
"required":
|
|
1072
|
-
"description": "Hook ID
|
|
1237
|
+
"required": false,
|
|
1238
|
+
"description": "Optional Hook ID. If omitted, the only matching hook on the extension is used; if the extension has multiple hooks of the relevant type, this becomes required."
|
|
1073
1239
|
},
|
|
1074
1240
|
{
|
|
1075
1241
|
"in": "query",
|
|
@@ -1701,6 +1867,13 @@
|
|
|
1701
1867
|
"example": "CAA_ERROR"
|
|
1702
1868
|
}
|
|
1703
1869
|
}
|
|
1870
|
+
},
|
|
1871
|
+
"identity_providers": {
|
|
1872
|
+
"type": "array",
|
|
1873
|
+
"description": "SSO identity providers configured for the portal. Includes raw\n`oidc_config.client_secret` values so the admin UI can round-trip\nthem. Customers are encouraged to reference secrets via env\ntemplates (`{{ env.VAR }}`) rather than embed raw values.\n",
|
|
1874
|
+
"items": {
|
|
1875
|
+
"$ref": "#/components/schemas/ProviderConfig"
|
|
1876
|
+
}
|
|
1704
1877
|
}
|
|
1705
1878
|
}
|
|
1706
1879
|
}
|
|
@@ -1828,6 +2001,13 @@
|
|
|
1828
2001
|
"example": "CAA_ERROR"
|
|
1829
2002
|
}
|
|
1830
2003
|
}
|
|
2004
|
+
},
|
|
2005
|
+
"identity_providers": {
|
|
2006
|
+
"type": "array",
|
|
2007
|
+
"description": "SSO identity providers configured for the portal. Includes raw\n`oidc_config.client_secret` values so the admin UI can round-trip\nthem. Customers are encouraged to reference secrets via env\ntemplates (`{{ env.VAR }}`) rather than embed raw values.\n",
|
|
2008
|
+
"items": {
|
|
2009
|
+
"$ref": "#/components/schemas/ProviderConfig"
|
|
2010
|
+
}
|
|
1831
2011
|
}
|
|
1832
2012
|
}
|
|
1833
2013
|
}
|
|
@@ -3395,6 +3575,84 @@
|
|
|
3395
3575
|
"contactId": {
|
|
3396
3576
|
"$ref": "#/components/schemas/EntityId",
|
|
3397
3577
|
"description": "ID of the contact if exists"
|
|
3578
|
+
},
|
|
3579
|
+
"accountId": {
|
|
3580
|
+
"$ref": "#/components/schemas/EntityId",
|
|
3581
|
+
"description": "ID of the resolved account when the portal is configured for account-based registration"
|
|
3582
|
+
}
|
|
3583
|
+
}
|
|
3584
|
+
}
|
|
3585
|
+
}
|
|
3586
|
+
}
|
|
3587
|
+
},
|
|
3588
|
+
"400": {
|
|
3589
|
+
"$ref": "#/components/responses/InvalidRequest"
|
|
3590
|
+
},
|
|
3591
|
+
"404": {
|
|
3592
|
+
"$ref": "#/components/responses/NotFound"
|
|
3593
|
+
},
|
|
3594
|
+
"500": {
|
|
3595
|
+
"$ref": "#/components/responses/InternalServerError"
|
|
3596
|
+
}
|
|
3597
|
+
}
|
|
3598
|
+
}
|
|
3599
|
+
},
|
|
3600
|
+
"/v3/portal/public/account/exists": {
|
|
3601
|
+
"post": {
|
|
3602
|
+
"operationId": "checkAccountExists",
|
|
3603
|
+
"summary": "checkAccountExists",
|
|
3604
|
+
"description": "True if account with given identifiers exists.\nSupports two identification methods:\n1. Using portal_id\n2. Using domain\n",
|
|
3605
|
+
"security": [],
|
|
3606
|
+
"tags": [
|
|
3607
|
+
"Public"
|
|
3608
|
+
],
|
|
3609
|
+
"parameters": [
|
|
3610
|
+
{
|
|
3611
|
+
"in": "query",
|
|
3612
|
+
"name": "portal_id",
|
|
3613
|
+
"required": false,
|
|
3614
|
+
"schema": {
|
|
3615
|
+
"$ref": "#/components/schemas/PortalId"
|
|
3616
|
+
},
|
|
3617
|
+
"description": "PortalId of the portal (required if domain is not provided)"
|
|
3618
|
+
},
|
|
3619
|
+
{
|
|
3620
|
+
"in": "query",
|
|
3621
|
+
"name": "domain",
|
|
3622
|
+
"required": false,
|
|
3623
|
+
"schema": {
|
|
3624
|
+
"type": "string"
|
|
3625
|
+
},
|
|
3626
|
+
"description": "Portal domain for identification (alternative to portal_id)"
|
|
3627
|
+
}
|
|
3628
|
+
],
|
|
3629
|
+
"requestBody": {
|
|
3630
|
+
"description": "Request payload",
|
|
3631
|
+
"required": true,
|
|
3632
|
+
"content": {
|
|
3633
|
+
"application/json": {
|
|
3634
|
+
"schema": {
|
|
3635
|
+
"$ref": "#/components/schemas/AccountExistsRequest"
|
|
3636
|
+
}
|
|
3637
|
+
}
|
|
3638
|
+
}
|
|
3639
|
+
},
|
|
3640
|
+
"responses": {
|
|
3641
|
+
"200": {
|
|
3642
|
+
"description": "Return result true|false if the account with given identifiers exists.",
|
|
3643
|
+
"content": {
|
|
3644
|
+
"application/json": {
|
|
3645
|
+
"schema": {
|
|
3646
|
+
"type": "object",
|
|
3647
|
+
"properties": {
|
|
3648
|
+
"exists": {
|
|
3649
|
+
"type": "boolean",
|
|
3650
|
+
"description": "Whether the account exists with the given identifier values",
|
|
3651
|
+
"example": true
|
|
3652
|
+
},
|
|
3653
|
+
"accountId": {
|
|
3654
|
+
"$ref": "#/components/schemas/EntityId",
|
|
3655
|
+
"description": "ID of the account if exists"
|
|
3398
3656
|
}
|
|
3399
3657
|
}
|
|
3400
3658
|
}
|
|
@@ -7361,31 +7619,30 @@
|
|
|
7361
7619
|
}
|
|
7362
7620
|
}
|
|
7363
7621
|
},
|
|
7364
|
-
"/v2/portal/public/sso/
|
|
7365
|
-
"
|
|
7366
|
-
"operationId": "
|
|
7367
|
-
"summary": "
|
|
7368
|
-
"description": "
|
|
7369
|
-
"security": [
|
|
7370
|
-
|
|
7371
|
-
|
|
7372
|
-
}
|
|
7622
|
+
"/v2/portal/public/sso/providers/{provider_slug}": {
|
|
7623
|
+
"get": {
|
|
7624
|
+
"operationId": "getSSOProvider",
|
|
7625
|
+
"summary": "getSSOProvider",
|
|
7626
|
+
"description": "Returns the public configuration of a single SSO identity provider with env var\nplaceholders (incl. secrets) already resolved against the organization's environment.\n\nUse this endpoint at SSO initiation time (i.e. when the end user clicks \"Sign in with X\")\nto obtain the resolved OIDC settings needed to construct the authorization URL.\nThe web `client_secret` is intentionally never returned — it is used server-side by\nthe SSO callback to exchange the authorization code for tokens.\n\nSupports three identification methods:\n1. `org_id` + `origin`\n2. `org_id` + `portal_id`\n3. `domain`\n",
|
|
7627
|
+
"security": [],
|
|
7628
|
+
"tags": [
|
|
7629
|
+
"Public"
|
|
7373
7630
|
],
|
|
7374
7631
|
"parameters": [
|
|
7375
7632
|
{
|
|
7376
|
-
"in": "
|
|
7377
|
-
"name": "
|
|
7633
|
+
"in": "path",
|
|
7634
|
+
"name": "provider_slug",
|
|
7378
7635
|
"required": true,
|
|
7379
|
-
"description": "
|
|
7636
|
+
"description": "Provider slug (organization-unique)",
|
|
7380
7637
|
"schema": {
|
|
7381
|
-
"$ref": "#/components/schemas/
|
|
7638
|
+
"$ref": "#/components/schemas/ProviderSlug"
|
|
7382
7639
|
}
|
|
7383
7640
|
},
|
|
7384
7641
|
{
|
|
7385
7642
|
"in": "query",
|
|
7386
7643
|
"name": "org_id",
|
|
7387
|
-
"
|
|
7388
|
-
"
|
|
7644
|
+
"required": false,
|
|
7645
|
+
"description": "epilot organization id (required with `origin` or `portal_id`)",
|
|
7389
7646
|
"schema": {
|
|
7390
7647
|
"type": "string",
|
|
7391
7648
|
"example": 123
|
|
@@ -7393,25 +7650,110 @@
|
|
|
7393
7650
|
},
|
|
7394
7651
|
{
|
|
7395
7652
|
"in": "query",
|
|
7396
|
-
"name": "
|
|
7397
|
-
"description": "contact id in the epilot system",
|
|
7653
|
+
"name": "origin",
|
|
7398
7654
|
"required": false,
|
|
7655
|
+
"description": "Origin of the Portal",
|
|
7399
7656
|
"schema": {
|
|
7400
7657
|
"type": "string",
|
|
7401
|
-
"
|
|
7402
|
-
|
|
7658
|
+
"enum": [
|
|
7659
|
+
"END_CUSTOMER_PORTAL",
|
|
7660
|
+
"INSTALLER_PORTAL"
|
|
7661
|
+
]
|
|
7403
7662
|
}
|
|
7404
|
-
}
|
|
7405
|
-
|
|
7406
|
-
|
|
7407
|
-
|
|
7408
|
-
|
|
7409
|
-
|
|
7410
|
-
|
|
7411
|
-
|
|
7412
|
-
|
|
7413
|
-
|
|
7414
|
-
|
|
7663
|
+
},
|
|
7664
|
+
{
|
|
7665
|
+
"in": "query",
|
|
7666
|
+
"name": "portal_id",
|
|
7667
|
+
"required": false,
|
|
7668
|
+
"description": "ID of the Portal",
|
|
7669
|
+
"schema": {
|
|
7670
|
+
"$ref": "#/components/schemas/PortalId"
|
|
7671
|
+
}
|
|
7672
|
+
},
|
|
7673
|
+
{
|
|
7674
|
+
"in": "query",
|
|
7675
|
+
"name": "domain",
|
|
7676
|
+
"required": false,
|
|
7677
|
+
"description": "Portal domain for identification (alternative to org_id + origin/portal_id)",
|
|
7678
|
+
"schema": {
|
|
7679
|
+
"type": "string"
|
|
7680
|
+
}
|
|
7681
|
+
}
|
|
7682
|
+
],
|
|
7683
|
+
"responses": {
|
|
7684
|
+
"200": {
|
|
7685
|
+
"description": "Resolved public SSO provider configuration. The handler strips `oidc_config.client_secret` from the response (kept server-side for the token exchange); the schema includes it for shape compatibility with the portal-config response.",
|
|
7686
|
+
"content": {
|
|
7687
|
+
"application/json": {
|
|
7688
|
+
"schema": {
|
|
7689
|
+
"$ref": "#/components/schemas/ProviderPublicConfig"
|
|
7690
|
+
}
|
|
7691
|
+
}
|
|
7692
|
+
}
|
|
7693
|
+
},
|
|
7694
|
+
"400": {
|
|
7695
|
+
"$ref": "#/components/responses/InvalidRequest"
|
|
7696
|
+
},
|
|
7697
|
+
"404": {
|
|
7698
|
+
"$ref": "#/components/responses/NotFound"
|
|
7699
|
+
},
|
|
7700
|
+
"500": {
|
|
7701
|
+
"$ref": "#/components/responses/InternalServerError"
|
|
7702
|
+
}
|
|
7703
|
+
}
|
|
7704
|
+
}
|
|
7705
|
+
},
|
|
7706
|
+
"/v2/portal/public/sso/login": {
|
|
7707
|
+
"post": {
|
|
7708
|
+
"operationId": "ssoLogin",
|
|
7709
|
+
"summary": "ssoLogin",
|
|
7710
|
+
"description": "Initiate login using external SSO identity.\n\nVerifies the user with the issuer and matches the identity to an epilot user (or creates a new user).\n\nReturns parameters to be used with CUSTOM_AUTH flow against Cognito\n",
|
|
7711
|
+
"security": [
|
|
7712
|
+
{
|
|
7713
|
+
"ExternalOIDCAuth": []
|
|
7714
|
+
}
|
|
7715
|
+
],
|
|
7716
|
+
"parameters": [
|
|
7717
|
+
{
|
|
7718
|
+
"in": "query",
|
|
7719
|
+
"name": "origin",
|
|
7720
|
+
"required": true,
|
|
7721
|
+
"description": "Origin of the Portal",
|
|
7722
|
+
"schema": {
|
|
7723
|
+
"$ref": "#/components/schemas/Origin"
|
|
7724
|
+
}
|
|
7725
|
+
},
|
|
7726
|
+
{
|
|
7727
|
+
"in": "query",
|
|
7728
|
+
"name": "org_id",
|
|
7729
|
+
"description": "epilot organization id",
|
|
7730
|
+
"required": true,
|
|
7731
|
+
"schema": {
|
|
7732
|
+
"type": "string",
|
|
7733
|
+
"example": 123
|
|
7734
|
+
}
|
|
7735
|
+
},
|
|
7736
|
+
{
|
|
7737
|
+
"in": "query",
|
|
7738
|
+
"name": "contact_id",
|
|
7739
|
+
"description": "contact id in the epilot system",
|
|
7740
|
+
"required": false,
|
|
7741
|
+
"schema": {
|
|
7742
|
+
"type": "string",
|
|
7743
|
+
"format": "uuid",
|
|
7744
|
+
"example": "5da0a718-c822-403d-9f5d-20d4584e0528"
|
|
7745
|
+
}
|
|
7746
|
+
}
|
|
7747
|
+
],
|
|
7748
|
+
"tags": [
|
|
7749
|
+
"Login"
|
|
7750
|
+
],
|
|
7751
|
+
"requestBody": {
|
|
7752
|
+
"content": {
|
|
7753
|
+
"application/json": {
|
|
7754
|
+
"schema": {
|
|
7755
|
+
"type": "object",
|
|
7756
|
+
"properties": {
|
|
7415
7757
|
"provider_slug": {
|
|
7416
7758
|
"$ref": "#/components/schemas/ProviderSlug"
|
|
7417
7759
|
}
|
|
@@ -9552,6 +9894,149 @@
|
|
|
9552
9894
|
}
|
|
9553
9895
|
}
|
|
9554
9896
|
}
|
|
9897
|
+
},
|
|
9898
|
+
"/v3/portal/verify-dns": {
|
|
9899
|
+
"post": {
|
|
9900
|
+
"operationId": "verifyDns",
|
|
9901
|
+
"summary": "verifyDns",
|
|
9902
|
+
"description": "Manually triggers DNS verification for a portal's domain setup. Runs the same verification logic as the scheduled processAllPendingNetworks lambda.",
|
|
9903
|
+
"tags": [
|
|
9904
|
+
"ECP Admin"
|
|
9905
|
+
],
|
|
9906
|
+
"security": [
|
|
9907
|
+
{
|
|
9908
|
+
"EpilotAuth": []
|
|
9909
|
+
}
|
|
9910
|
+
],
|
|
9911
|
+
"parameters": [
|
|
9912
|
+
{
|
|
9913
|
+
"in": "query",
|
|
9914
|
+
"name": "portal_id",
|
|
9915
|
+
"required": true,
|
|
9916
|
+
"schema": {
|
|
9917
|
+
"$ref": "#/components/schemas/PortalId"
|
|
9918
|
+
},
|
|
9919
|
+
"description": "PortalId of the portal"
|
|
9920
|
+
}
|
|
9921
|
+
],
|
|
9922
|
+
"responses": {
|
|
9923
|
+
"200": {
|
|
9924
|
+
"description": "DNS verification result",
|
|
9925
|
+
"content": {
|
|
9926
|
+
"application/json": {
|
|
9927
|
+
"schema": {
|
|
9928
|
+
"type": "object",
|
|
9929
|
+
"properties": {
|
|
9930
|
+
"domain_status": {
|
|
9931
|
+
"type": "string",
|
|
9932
|
+
"description": "The status of the custom domain verification",
|
|
9933
|
+
"enum": [
|
|
9934
|
+
"PENDING",
|
|
9935
|
+
"SUCCEED"
|
|
9936
|
+
]
|
|
9937
|
+
},
|
|
9938
|
+
"message": {
|
|
9939
|
+
"type": "string",
|
|
9940
|
+
"description": "A message describing the result"
|
|
9941
|
+
}
|
|
9942
|
+
}
|
|
9943
|
+
}
|
|
9944
|
+
}
|
|
9945
|
+
}
|
|
9946
|
+
},
|
|
9947
|
+
"401": {
|
|
9948
|
+
"$ref": "#/components/responses/Unauthorized"
|
|
9949
|
+
},
|
|
9950
|
+
"403": {
|
|
9951
|
+
"$ref": "#/components/responses/Forbidden"
|
|
9952
|
+
},
|
|
9953
|
+
"500": {
|
|
9954
|
+
"$ref": "#/components/responses/InternalServerError"
|
|
9955
|
+
}
|
|
9956
|
+
}
|
|
9957
|
+
}
|
|
9958
|
+
},
|
|
9959
|
+
"/v2/portal/proxy/execute": {
|
|
9960
|
+
"post": {
|
|
9961
|
+
"operationId": "portalProxyExecute",
|
|
9962
|
+
"summary": "portalProxyExecute",
|
|
9963
|
+
"description": "Execute an Integration Hub managed-call use case on behalf of a portal user.\nBridges PortalAuth to the Integration API by generating an internal token.\n",
|
|
9964
|
+
"security": [
|
|
9965
|
+
{
|
|
9966
|
+
"PortalAuth": []
|
|
9967
|
+
}
|
|
9968
|
+
],
|
|
9969
|
+
"tags": [
|
|
9970
|
+
"ECP"
|
|
9971
|
+
],
|
|
9972
|
+
"requestBody": {
|
|
9973
|
+
"required": true,
|
|
9974
|
+
"content": {
|
|
9975
|
+
"application/json": {
|
|
9976
|
+
"schema": {
|
|
9977
|
+
"type": "object",
|
|
9978
|
+
"required": [
|
|
9979
|
+
"integration_id",
|
|
9980
|
+
"use_case_slug"
|
|
9981
|
+
],
|
|
9982
|
+
"properties": {
|
|
9983
|
+
"integration_id": {
|
|
9984
|
+
"type": "string",
|
|
9985
|
+
"format": "uuid",
|
|
9986
|
+
"description": "Integration ID containing the managed-call use case"
|
|
9987
|
+
},
|
|
9988
|
+
"use_case_slug": {
|
|
9989
|
+
"type": "string",
|
|
9990
|
+
"description": "Use case slug (acts as the RPC method name)"
|
|
9991
|
+
},
|
|
9992
|
+
"payload": {
|
|
9993
|
+
"type": "object",
|
|
9994
|
+
"description": "Input data for the managed-call operation",
|
|
9995
|
+
"additionalProperties": true
|
|
9996
|
+
}
|
|
9997
|
+
}
|
|
9998
|
+
}
|
|
9999
|
+
}
|
|
10000
|
+
}
|
|
10001
|
+
},
|
|
10002
|
+
"responses": {
|
|
10003
|
+
"200": {
|
|
10004
|
+
"description": "Managed-call execution result envelope.",
|
|
10005
|
+
"content": {
|
|
10006
|
+
"application/json": {
|
|
10007
|
+
"schema": {
|
|
10008
|
+
"type": "object",
|
|
10009
|
+
"required": [
|
|
10010
|
+
"success"
|
|
10011
|
+
],
|
|
10012
|
+
"properties": {
|
|
10013
|
+
"success": {
|
|
10014
|
+
"type": "boolean"
|
|
10015
|
+
},
|
|
10016
|
+
"data": {
|
|
10017
|
+
"type": "object",
|
|
10018
|
+
"additionalProperties": true,
|
|
10019
|
+
"description": "Managed-call response payload. Shape is defined by the use\ncase's JSONata response_mapping; if no mapping is\nconfigured the raw external API response is returned.\n"
|
|
10020
|
+
}
|
|
10021
|
+
}
|
|
10022
|
+
}
|
|
10023
|
+
}
|
|
10024
|
+
}
|
|
10025
|
+
},
|
|
10026
|
+
"400": {
|
|
10027
|
+
"$ref": "#/components/responses/InvalidRequest"
|
|
10028
|
+
},
|
|
10029
|
+
"401": {
|
|
10030
|
+
"$ref": "#/components/responses/Unauthorized"
|
|
10031
|
+
},
|
|
10032
|
+
"403": {
|
|
10033
|
+
"$ref": "#/components/responses/Forbidden"
|
|
10034
|
+
},
|
|
10035
|
+
"500": {
|
|
10036
|
+
"$ref": "#/components/responses/InternalServerError"
|
|
10037
|
+
}
|
|
10038
|
+
}
|
|
10039
|
+
}
|
|
9555
10040
|
}
|
|
9556
10041
|
},
|
|
9557
10042
|
"components": {
|
|
@@ -10237,6 +10722,13 @@
|
|
|
10237
10722
|
"description": "Default admin users for pending user notification to notify"
|
|
10238
10723
|
}
|
|
10239
10724
|
}
|
|
10725
|
+
},
|
|
10726
|
+
"identity_providers": {
|
|
10727
|
+
"type": "array",
|
|
10728
|
+
"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\nEach provider is persisted verbatim — `oidc_config.client_secret` is stored\nas sent. Customers are encouraged to reference an org env secret via\n`{{ env.VAR }}` rather than embed raw values.\n",
|
|
10729
|
+
"items": {
|
|
10730
|
+
"$ref": "#/components/schemas/ProviderConfig"
|
|
10731
|
+
}
|
|
10240
10732
|
}
|
|
10241
10733
|
}
|
|
10242
10734
|
},
|
|
@@ -10264,6 +10756,14 @@
|
|
|
10264
10756
|
"type": "boolean",
|
|
10265
10757
|
"description": "Mark true if the domain is an Epilot domain"
|
|
10266
10758
|
},
|
|
10759
|
+
"epilot_domain": {
|
|
10760
|
+
"type": "string",
|
|
10761
|
+
"description": "The URL on which the portal is accessible",
|
|
10762
|
+
"example": "example-portal-12345.ecp.epilot.cloud"
|
|
10763
|
+
},
|
|
10764
|
+
"domain_settings": {
|
|
10765
|
+
"$ref": "#/components/schemas/DomainSettings"
|
|
10766
|
+
},
|
|
10267
10767
|
"design_id": {
|
|
10268
10768
|
"$ref": "#/components/schemas/EntityId",
|
|
10269
10769
|
"description": "ID of the design used to build the portal"
|
|
@@ -10290,6 +10790,24 @@
|
|
|
10290
10790
|
"BLOCK_IF_PORTAL_USER_EXISTS"
|
|
10291
10791
|
]
|
|
10292
10792
|
},
|
|
10793
|
+
"self_registration_account_setting": {
|
|
10794
|
+
"type": "string",
|
|
10795
|
+
"description": "Controls behavior of self-registration when account is used as the registration entity",
|
|
10796
|
+
"enum": [
|
|
10797
|
+
"ALLOW_WITH_CONTACT_CREATION",
|
|
10798
|
+
"DENY",
|
|
10799
|
+
"ALWAYS_CREATE_CONTACT",
|
|
10800
|
+
"DISALLOW_COMPLETELY"
|
|
10801
|
+
]
|
|
10802
|
+
},
|
|
10803
|
+
"self_registration_entity": {
|
|
10804
|
+
"type": "string",
|
|
10805
|
+
"description": "Entity type used as the primary identifier for self-registration",
|
|
10806
|
+
"enum": [
|
|
10807
|
+
"contact",
|
|
10808
|
+
"account"
|
|
10809
|
+
]
|
|
10810
|
+
},
|
|
10293
10811
|
"user_account_self_management": {
|
|
10294
10812
|
"type": "boolean",
|
|
10295
10813
|
"description": "Enable or disable user account self management",
|
|
@@ -10714,6 +11232,13 @@
|
|
|
10714
11232
|
"additionalProperties": {
|
|
10715
11233
|
"$ref": "#/components/schemas/Page"
|
|
10716
11234
|
}
|
|
11235
|
+
},
|
|
11236
|
+
"global_blocks": {
|
|
11237
|
+
"type": "object",
|
|
11238
|
+
"description": "Portal-level blocks shared across all pages (e.g. footer). Keyed by block id.",
|
|
11239
|
+
"additionalProperties": {
|
|
11240
|
+
"$ref": "#/components/schemas/Block"
|
|
11241
|
+
}
|
|
10717
11242
|
}
|
|
10718
11243
|
}
|
|
10719
11244
|
},
|
|
@@ -10804,6 +11329,14 @@
|
|
|
10804
11329
|
"widgets"
|
|
10805
11330
|
],
|
|
10806
11331
|
"properties": {
|
|
11332
|
+
"portal_sk_v3": {
|
|
11333
|
+
"type": "string",
|
|
11334
|
+
"description": "V3 portal-scoped storage key for the widget configuration"
|
|
11335
|
+
},
|
|
11336
|
+
"is_v3_item": {
|
|
11337
|
+
"type": "boolean",
|
|
11338
|
+
"description": "Indicates whether the widget configuration is stored as a V3 portal-scoped item"
|
|
11339
|
+
},
|
|
10807
11340
|
"widgets": {
|
|
10808
11341
|
"type": "array",
|
|
10809
11342
|
"items": {
|
|
@@ -10812,6 +11345,24 @@
|
|
|
10812
11345
|
}
|
|
10813
11346
|
}
|
|
10814
11347
|
},
|
|
11348
|
+
"DomainSettings": {
|
|
11349
|
+
"type": "object",
|
|
11350
|
+
"description": "Domain settings for the portal",
|
|
11351
|
+
"properties": {
|
|
11352
|
+
"is_custom_domain_enabled": {
|
|
11353
|
+
"type": "boolean",
|
|
11354
|
+
"description": "Whether the custom domain is enabled"
|
|
11355
|
+
},
|
|
11356
|
+
"is_epilot_domain_enabled": {
|
|
11357
|
+
"type": "boolean",
|
|
11358
|
+
"description": "Whether the Epilot domain is enabled"
|
|
11359
|
+
},
|
|
11360
|
+
"is_redirection_enabled": {
|
|
11361
|
+
"type": "boolean",
|
|
11362
|
+
"description": "Whether the redirection is enabled"
|
|
11363
|
+
}
|
|
11364
|
+
}
|
|
11365
|
+
},
|
|
10815
11366
|
"WidgetBase": {
|
|
10816
11367
|
"type": "object",
|
|
10817
11368
|
"required": [
|
|
@@ -11168,14 +11719,46 @@
|
|
|
11168
11719
|
}
|
|
11169
11720
|
}
|
|
11170
11721
|
},
|
|
11171
|
-
"
|
|
11722
|
+
"AccountExistsRequest": {
|
|
11172
11723
|
"type": "object",
|
|
11724
|
+
"required": [
|
|
11725
|
+
"registration_identifiers",
|
|
11726
|
+
"org_id"
|
|
11727
|
+
],
|
|
11173
11728
|
"properties": {
|
|
11174
|
-
"
|
|
11729
|
+
"org_id": {
|
|
11175
11730
|
"type": "string",
|
|
11176
|
-
"example":
|
|
11177
|
-
"description": "
|
|
11178
|
-
},
|
|
11731
|
+
"example": 728,
|
|
11732
|
+
"description": "ID of the organization"
|
|
11733
|
+
},
|
|
11734
|
+
"registration_identifiers": {
|
|
11735
|
+
"type": "object",
|
|
11736
|
+
"description": "Identifier-value pairs per schema to identify an account during portal user registration",
|
|
11737
|
+
"additionalProperties": {
|
|
11738
|
+
"type": "object",
|
|
11739
|
+
"additionalProperties": {
|
|
11740
|
+
"type": "string"
|
|
11741
|
+
}
|
|
11742
|
+
},
|
|
11743
|
+
"example": {
|
|
11744
|
+
"account": {
|
|
11745
|
+
"customer_number": "ACC-123456"
|
|
11746
|
+
},
|
|
11747
|
+
"contract": {
|
|
11748
|
+
"contract_number": "123456"
|
|
11749
|
+
}
|
|
11750
|
+
}
|
|
11751
|
+
}
|
|
11752
|
+
}
|
|
11753
|
+
},
|
|
11754
|
+
"UserRequest": {
|
|
11755
|
+
"type": "object",
|
|
11756
|
+
"properties": {
|
|
11757
|
+
"email": {
|
|
11758
|
+
"type": "string",
|
|
11759
|
+
"example": "testemail921@yopmail.com",
|
|
11760
|
+
"description": "User's email address"
|
|
11761
|
+
},
|
|
11179
11762
|
"first_name": {
|
|
11180
11763
|
"type": "string",
|
|
11181
11764
|
"example": "John",
|
|
@@ -13479,6 +14062,12 @@
|
|
|
13479
14062
|
"$ref": "#/components/schemas/DataRetrievalItem"
|
|
13480
14063
|
}
|
|
13481
14064
|
},
|
|
14065
|
+
"dataExport": {
|
|
14066
|
+
"type": "array",
|
|
14067
|
+
"items": {
|
|
14068
|
+
"$ref": "#/components/schemas/DataRetrievalItem"
|
|
14069
|
+
}
|
|
14070
|
+
},
|
|
13482
14071
|
"priceDataRetrieval": {
|
|
13483
14072
|
"type": "array",
|
|
13484
14073
|
"items": {
|
|
@@ -13518,6 +14107,9 @@
|
|
|
13518
14107
|
"DataRetrievalItem": {
|
|
13519
14108
|
"type": "object",
|
|
13520
14109
|
"properties": {
|
|
14110
|
+
"app": {
|
|
14111
|
+
"$ref": "#/components/schemas/PublicAppDetails"
|
|
14112
|
+
},
|
|
13521
14113
|
"extension": {
|
|
13522
14114
|
"$ref": "#/components/schemas/PublicExtensionDetails"
|
|
13523
14115
|
},
|
|
@@ -13526,6 +14118,31 @@
|
|
|
13526
14118
|
}
|
|
13527
14119
|
}
|
|
13528
14120
|
},
|
|
14121
|
+
"PublicAppDetails": {
|
|
14122
|
+
"type": "object",
|
|
14123
|
+
"properties": {
|
|
14124
|
+
"app_id": {
|
|
14125
|
+
"type": "string",
|
|
14126
|
+
"description": "Identifier of the app."
|
|
14127
|
+
},
|
|
14128
|
+
"name": {
|
|
14129
|
+
"type": "object",
|
|
14130
|
+
"properties": {
|
|
14131
|
+
"en": {
|
|
14132
|
+
"type": "string",
|
|
14133
|
+
"description": "Name of the app in English."
|
|
14134
|
+
}
|
|
14135
|
+
},
|
|
14136
|
+
"additionalProperties": {
|
|
14137
|
+
"type": "string",
|
|
14138
|
+
"description": "Name of the app in some other language denoted by ISO 3166-1 alpha-2 code."
|
|
14139
|
+
},
|
|
14140
|
+
"required": [
|
|
14141
|
+
"en"
|
|
14142
|
+
]
|
|
14143
|
+
}
|
|
14144
|
+
}
|
|
14145
|
+
},
|
|
13529
14146
|
"PublicExtensionDetails": {
|
|
13530
14147
|
"type": "object",
|
|
13531
14148
|
"properties": {
|
|
@@ -13575,11 +14192,122 @@
|
|
|
13575
14192
|
]
|
|
13576
14193
|
},
|
|
13577
14194
|
"intervals": {
|
|
14195
|
+
"type": "array",
|
|
14196
|
+
"deprecated": true,
|
|
14197
|
+
"items": {
|
|
14198
|
+
"type": "string"
|
|
14199
|
+
},
|
|
14200
|
+
"description": "Deprecated. Prefer fetching `intervals` from the `visualizationMetadata` endpoint\n(`GET /v2/portal/visualization/metadata`) so the supported intervals can vary per\nmeter/contract. Still emitted as a fallback for clients that have not migrated yet.\n"
|
|
14201
|
+
},
|
|
14202
|
+
"block_types": {
|
|
13578
14203
|
"type": "array",
|
|
13579
14204
|
"items": {
|
|
13580
14205
|
"type": "string"
|
|
13581
14206
|
},
|
|
13582
|
-
"description": "
|
|
14207
|
+
"description": "Optional list of portal block types the hook supports. Empty/missing means the hook is usable on any export-capable block."
|
|
14208
|
+
}
|
|
14209
|
+
}
|
|
14210
|
+
},
|
|
14211
|
+
"VisualizationMetadata": {
|
|
14212
|
+
"type": "object",
|
|
14213
|
+
"description": "Runtime metadata describing how a visualization should be rendered for a given portal context. Returned by `GET /v2/portal/visualization/metadata`.\n",
|
|
14214
|
+
"properties": {
|
|
14215
|
+
"type_options": {
|
|
14216
|
+
"type": "array",
|
|
14217
|
+
"description": "Types advertised for the current context (e.g. `ht`/`nt`, `feed-in`/`feed-out`). The `id` matches the `type` field returned by the data hook.\n",
|
|
14218
|
+
"items": {
|
|
14219
|
+
"$ref": "#/components/schemas/VisualizationTypeOption"
|
|
14220
|
+
}
|
|
14221
|
+
},
|
|
14222
|
+
"intervals": {
|
|
14223
|
+
"type": "array",
|
|
14224
|
+
"description": "Intervals supported for the current context. If omitted, all intervals are assumed supported.",
|
|
14225
|
+
"items": {
|
|
14226
|
+
"type": "string",
|
|
14227
|
+
"enum": [
|
|
14228
|
+
"PT15M",
|
|
14229
|
+
"PT1H",
|
|
14230
|
+
"P1D",
|
|
14231
|
+
"P1M"
|
|
14232
|
+
]
|
|
14233
|
+
}
|
|
14234
|
+
},
|
|
14235
|
+
"data_range": {
|
|
14236
|
+
"$ref": "#/components/schemas/VisualizationDataRange"
|
|
14237
|
+
}
|
|
14238
|
+
}
|
|
14239
|
+
},
|
|
14240
|
+
"VisualizationTypeOption": {
|
|
14241
|
+
"type": "object",
|
|
14242
|
+
"properties": {
|
|
14243
|
+
"id": {
|
|
14244
|
+
"type": "string",
|
|
14245
|
+
"description": "Identifier of the type. Matches the `type` field on the data hook response."
|
|
14246
|
+
},
|
|
14247
|
+
"label": {
|
|
14248
|
+
"type": "object",
|
|
14249
|
+
"additionalProperties": {
|
|
14250
|
+
"type": "string"
|
|
14251
|
+
},
|
|
14252
|
+
"description": "Localized label for the type, keyed by ISO 3166-1 alpha-2 language code."
|
|
14253
|
+
},
|
|
14254
|
+
"aggregation_group": {
|
|
14255
|
+
"type": "string",
|
|
14256
|
+
"description": "Optional grouping key. Types in the same `aggregation_group` are visually combined; types in different groups (or without a group) render separately. How they combine depends on each type's `statistical_method`:\n - bar chart (`sum`): same-group types are stacked into a single bar (e.g. ht/nt\n summed into total consumption); different-group types render side-by-side.\n - line chart (`min` / `average` / `max`): same-group types are rendered as an\n area chart; different-group types render as separate lines.\n"
|
|
14257
|
+
},
|
|
14258
|
+
"statistical_method": {
|
|
14259
|
+
"type": "string",
|
|
14260
|
+
"enum": [
|
|
14261
|
+
"sum",
|
|
14262
|
+
"average",
|
|
14263
|
+
"min",
|
|
14264
|
+
"max"
|
|
14265
|
+
],
|
|
14266
|
+
"description": "Statistical method already applied to this type's data. Determines the chart shape used to render the type's values: `sum` is shown as a bar chart; `min`, `average`, and `max` are shown as a line chart. Each type advertises its own method, so a single visualization can mix bar-shaped types with line-shaped types. Defaults to `sum` when omitted.\n"
|
|
14267
|
+
},
|
|
14268
|
+
"unit": {
|
|
14269
|
+
"type": "string",
|
|
14270
|
+
"description": "Unit shared by all values of this type (e.g. \"kWh\")."
|
|
14271
|
+
},
|
|
14272
|
+
"color": {
|
|
14273
|
+
"type": "string",
|
|
14274
|
+
"enum": [
|
|
14275
|
+
"primary",
|
|
14276
|
+
"slate",
|
|
14277
|
+
"mauve",
|
|
14278
|
+
"orange",
|
|
14279
|
+
"red",
|
|
14280
|
+
"tomato",
|
|
14281
|
+
"amber",
|
|
14282
|
+
"green",
|
|
14283
|
+
"blue"
|
|
14284
|
+
],
|
|
14285
|
+
"description": "Optional Spark color token used to render this type in the visualization. Maps onto the portal's Spark palette (`primary` is the org's primary brand color). When omitted the consumer falls back to its own per-type default.\n"
|
|
14286
|
+
},
|
|
14287
|
+
"precision": {
|
|
14288
|
+
"type": "integer",
|
|
14289
|
+
"minimum": 0,
|
|
14290
|
+
"maximum": 10,
|
|
14291
|
+
"description": "Optional number of decimal places to show when rendering values of this type in the visualization (axis labels, tooltips, summaries). When omitted the consumer falls back to its own default precision.\n"
|
|
14292
|
+
}
|
|
14293
|
+
},
|
|
14294
|
+
"required": [
|
|
14295
|
+
"id"
|
|
14296
|
+
]
|
|
14297
|
+
},
|
|
14298
|
+
"VisualizationDataRange": {
|
|
14299
|
+
"type": "object",
|
|
14300
|
+
"description": "Earliest / latest timestamps for which data is available in the current context.",
|
|
14301
|
+
"properties": {
|
|
14302
|
+
"from": {
|
|
14303
|
+
"type": "string",
|
|
14304
|
+
"format": "date-time",
|
|
14305
|
+
"description": "ISO 8601 timestamp of the earliest available data point."
|
|
14306
|
+
},
|
|
14307
|
+
"to": {
|
|
14308
|
+
"type": "string",
|
|
14309
|
+
"format": "date-time",
|
|
14310
|
+
"description": "ISO 8601 timestamp of the latest available data point."
|
|
13583
14311
|
}
|
|
13584
14312
|
}
|
|
13585
14313
|
},
|
|
@@ -13774,11 +14502,17 @@
|
|
|
13774
14502
|
{
|
|
13775
14503
|
"$ref": "#/components/schemas/ExtensionHookConsumptionDataRetrieval"
|
|
13776
14504
|
},
|
|
14505
|
+
{
|
|
14506
|
+
"$ref": "#/components/schemas/ExtensionHookDataExport"
|
|
14507
|
+
},
|
|
13777
14508
|
{
|
|
13778
14509
|
"$ref": "#/components/schemas/ExtensionHookCostDataRetrieval"
|
|
13779
14510
|
},
|
|
13780
14511
|
{
|
|
13781
14512
|
"$ref": "#/components/schemas/ExtensionHookMeterReadingPlausibilityCheck"
|
|
14513
|
+
},
|
|
14514
|
+
{
|
|
14515
|
+
"$ref": "#/components/schemas/ExtensionHookVisualizationMetadata"
|
|
13782
14516
|
}
|
|
13783
14517
|
]
|
|
13784
14518
|
}
|
|
@@ -13937,7 +14671,8 @@
|
|
|
13937
14671
|
},
|
|
13938
14672
|
"use_static_ips": {
|
|
13939
14673
|
"type": "boolean",
|
|
13940
|
-
"
|
|
14674
|
+
"deprecated": true,
|
|
14675
|
+
"description": "Deprecated. Prefer `secure_proxy` instead.\nIf true, requests are made from a set of static IP addresses and only allow connections to a set of allowed IP addresses. Get in touch with us to add your IP addresses.\n",
|
|
13941
14676
|
"default": false
|
|
13942
14677
|
},
|
|
13943
14678
|
"secure_proxy": {
|
|
@@ -14039,7 +14774,8 @@
|
|
|
14039
14774
|
},
|
|
14040
14775
|
"use_static_ips": {
|
|
14041
14776
|
"type": "boolean",
|
|
14042
|
-
"
|
|
14777
|
+
"deprecated": true,
|
|
14778
|
+
"description": "Deprecated. Prefer `secure_proxy` instead.\nIf true, requests are made from a set of static IP addresses and only allow connections to a set of allowed IP addresses. Get in touch with us to add your IP addresses.\n",
|
|
14043
14779
|
"default": false
|
|
14044
14780
|
},
|
|
14045
14781
|
"secure_proxy": {
|
|
@@ -14144,12 +14880,18 @@
|
|
|
14144
14880
|
"type": "string",
|
|
14145
14881
|
"description": "Lower allowed limit of the meter reading",
|
|
14146
14882
|
"example": "{{CallResponse.data.lower_limit}}"
|
|
14883
|
+
},
|
|
14884
|
+
"errorMessagePath": {
|
|
14885
|
+
"type": "string",
|
|
14886
|
+
"description": "Optional path to a human-readable error message in the third-party response body, used when the call fails (non-2xx status).\nIf specified and the path resolves to a string, that message is forwarded to the end user instead of a generic error.\n",
|
|
14887
|
+
"example": "error.message"
|
|
14147
14888
|
}
|
|
14148
14889
|
}
|
|
14149
14890
|
},
|
|
14150
14891
|
"use_static_ips": {
|
|
14151
14892
|
"type": "boolean",
|
|
14152
|
-
"
|
|
14893
|
+
"deprecated": true,
|
|
14894
|
+
"description": "Deprecated. Prefer `secure_proxy` instead.\nIf true, requests are made from a set of static IP addresses and only allow connections to a set of allowed IP addresses. Get in touch with us to add your IP addresses.\n",
|
|
14153
14895
|
"default": false
|
|
14154
14896
|
},
|
|
14155
14897
|
"secure_proxy": {
|
|
@@ -14222,12 +14964,18 @@
|
|
|
14222
14964
|
"dataPath": {
|
|
14223
14965
|
"type": "string",
|
|
14224
14966
|
"description": "Optional path to the data (array) in the response. If omitted, the data is assumed to be on the top level."
|
|
14967
|
+
},
|
|
14968
|
+
"errorMessagePath": {
|
|
14969
|
+
"type": "string",
|
|
14970
|
+
"description": "Optional path to a human-readable error message in the third-party response body, used when the call fails (non-2xx status).\nIf specified and the path resolves to a string, that message is forwarded to the end user instead of a generic error.\n",
|
|
14971
|
+
"example": "error.message"
|
|
14225
14972
|
}
|
|
14226
14973
|
}
|
|
14227
14974
|
},
|
|
14228
14975
|
"use_static_ips": {
|
|
14229
14976
|
"type": "boolean",
|
|
14230
|
-
"
|
|
14977
|
+
"deprecated": true,
|
|
14978
|
+
"description": "Deprecated. Prefer `secure_proxy` instead.\nIf true, requests are made from a set of static IP addresses and only allow connections to a set of allowed IP addresses. Get in touch with us to add your IP addresses.\n",
|
|
14231
14979
|
"default": false
|
|
14232
14980
|
},
|
|
14233
14981
|
"secure_proxy": {
|
|
@@ -14299,12 +15047,187 @@
|
|
|
14299
15047
|
"dataPath": {
|
|
14300
15048
|
"type": "string",
|
|
14301
15049
|
"description": "Optional path to the data (array) in the response. If omitted, the data is assumed to be on the top level."
|
|
15050
|
+
},
|
|
15051
|
+
"errorMessagePath": {
|
|
15052
|
+
"type": "string",
|
|
15053
|
+
"description": "Optional path to a human-readable error message in the third-party response body, used when the call fails (non-2xx status).\nIf specified and the path resolves to a string, that message is forwarded to the end user instead of a generic error.\n",
|
|
15054
|
+
"example": "error.message"
|
|
15055
|
+
}
|
|
15056
|
+
}
|
|
15057
|
+
},
|
|
15058
|
+
"use_static_ips": {
|
|
15059
|
+
"type": "boolean",
|
|
15060
|
+
"deprecated": true,
|
|
15061
|
+
"description": "Deprecated. Prefer `secure_proxy` instead.\nIf true, requests are made from a set of static IP addresses and only allow connections to a set of allowed IP addresses. Get in touch with us to add your IP addresses.\n",
|
|
15062
|
+
"default": false
|
|
15063
|
+
},
|
|
15064
|
+
"secure_proxy": {
|
|
15065
|
+
"$ref": "#/components/schemas/SecureProxyConfig"
|
|
15066
|
+
}
|
|
15067
|
+
},
|
|
15068
|
+
"required": [
|
|
15069
|
+
"type",
|
|
15070
|
+
"call"
|
|
15071
|
+
]
|
|
15072
|
+
},
|
|
15073
|
+
"ExtensionHookDataExport": {
|
|
15074
|
+
"description": "Generic data export hook. When configured on a visualization block, the portal delegates the export action (e.g. CSV/Excel/PDF download) to the configured external source instead of generating the file itself. Can be used by any block that supports export — consumption charts, dynamic tariff charts, etc. The expected response to the call is:\n - 200 with a JSON body describing the exported file (download_url, optional filename, content_type, expires_at)\n",
|
|
15075
|
+
"type": "object",
|
|
15076
|
+
"properties": {
|
|
15077
|
+
"type": {
|
|
15078
|
+
"type": "string",
|
|
15079
|
+
"enum": [
|
|
15080
|
+
"dataExport"
|
|
15081
|
+
]
|
|
15082
|
+
},
|
|
15083
|
+
"block_types": {
|
|
15084
|
+
"type": "array",
|
|
15085
|
+
"description": "Optional list of portal block types this hook supports. If omitted,\nthe hook is usable on any export-capable block. Allowed values match\nthe block type identifiers used by the portal builder\n(e.g. `consumption_visualization`, `dynamic_tariff`).\n",
|
|
15086
|
+
"items": {
|
|
15087
|
+
"type": "string"
|
|
15088
|
+
}
|
|
15089
|
+
},
|
|
15090
|
+
"auth": {
|
|
15091
|
+
"$ref": "#/components/schemas/ExtensionAuthBlock"
|
|
15092
|
+
},
|
|
15093
|
+
"call": {
|
|
15094
|
+
"type": "object",
|
|
15095
|
+
"properties": {
|
|
15096
|
+
"method": {
|
|
15097
|
+
"type": "string",
|
|
15098
|
+
"description": "HTTP method to use for the call",
|
|
15099
|
+
"default": "GET"
|
|
15100
|
+
},
|
|
15101
|
+
"url": {
|
|
15102
|
+
"type": "string",
|
|
15103
|
+
"description": "URL to call. Supports variable interpolation."
|
|
15104
|
+
},
|
|
15105
|
+
"params": {
|
|
15106
|
+
"type": "object",
|
|
15107
|
+
"description": "Parameters to append to the URL. Supports variable interpolation.",
|
|
15108
|
+
"additionalProperties": {
|
|
15109
|
+
"type": "string"
|
|
15110
|
+
},
|
|
15111
|
+
"default": {}
|
|
15112
|
+
},
|
|
15113
|
+
"headers": {
|
|
15114
|
+
"type": "object",
|
|
15115
|
+
"description": "Headers to use. Supports variable interpolation.",
|
|
15116
|
+
"additionalProperties": {
|
|
15117
|
+
"type": "string"
|
|
15118
|
+
},
|
|
15119
|
+
"default": {}
|
|
15120
|
+
},
|
|
15121
|
+
"body": {
|
|
15122
|
+
"type": "object",
|
|
15123
|
+
"description": "Request body to send. Supports variable interpolation. Content format is determined by Content-Type header.",
|
|
15124
|
+
"additionalProperties": {
|
|
15125
|
+
"type": "string"
|
|
15126
|
+
},
|
|
15127
|
+
"default": {}
|
|
15128
|
+
}
|
|
15129
|
+
},
|
|
15130
|
+
"required": [
|
|
15131
|
+
"url"
|
|
15132
|
+
]
|
|
15133
|
+
},
|
|
15134
|
+
"resolved": {
|
|
15135
|
+
"type": "object",
|
|
15136
|
+
"properties": {
|
|
15137
|
+
"errorMessagePath": {
|
|
15138
|
+
"type": "string",
|
|
15139
|
+
"description": "Optional path to a human-readable error message in the third-party response body, used when the call fails (non-2xx status).\nIf specified and the path resolves to a string, that message is forwarded to the end user instead of a generic error.\n",
|
|
15140
|
+
"example": "error.message"
|
|
14302
15141
|
}
|
|
14303
15142
|
}
|
|
14304
15143
|
},
|
|
14305
15144
|
"use_static_ips": {
|
|
14306
15145
|
"type": "boolean",
|
|
14307
|
-
"
|
|
15146
|
+
"deprecated": true,
|
|
15147
|
+
"description": "Deprecated. Prefer `secure_proxy` instead.\nIf true, requests are made from a set of static IP addresses and only allow connections to a set of allowed IP addresses. Get in touch with us to add your IP addresses.\n",
|
|
15148
|
+
"default": false
|
|
15149
|
+
},
|
|
15150
|
+
"secure_proxy": {
|
|
15151
|
+
"$ref": "#/components/schemas/SecureProxyConfig"
|
|
15152
|
+
}
|
|
15153
|
+
},
|
|
15154
|
+
"required": [
|
|
15155
|
+
"type",
|
|
15156
|
+
"call"
|
|
15157
|
+
]
|
|
15158
|
+
},
|
|
15159
|
+
"ExtensionHookVisualizationMetadata": {
|
|
15160
|
+
"description": "Hook that returns runtime metadata describing how a visualization should be rendered for a given portal context. Invoked by the portal before fetching data, with the same context the data hook receives.\n",
|
|
15161
|
+
"type": "object",
|
|
15162
|
+
"properties": {
|
|
15163
|
+
"type": {
|
|
15164
|
+
"type": "string",
|
|
15165
|
+
"enum": [
|
|
15166
|
+
"visualizationMetadata"
|
|
15167
|
+
]
|
|
15168
|
+
},
|
|
15169
|
+
"auth": {
|
|
15170
|
+
"$ref": "#/components/schemas/ExtensionAuthBlock"
|
|
15171
|
+
},
|
|
15172
|
+
"call": {
|
|
15173
|
+
"type": "object",
|
|
15174
|
+
"properties": {
|
|
15175
|
+
"method": {
|
|
15176
|
+
"type": "string",
|
|
15177
|
+
"description": "HTTP method to use for the call",
|
|
15178
|
+
"default": "GET"
|
|
15179
|
+
},
|
|
15180
|
+
"url": {
|
|
15181
|
+
"type": "string",
|
|
15182
|
+
"description": "URL to call. Supports variable interpolation."
|
|
15183
|
+
},
|
|
15184
|
+
"params": {
|
|
15185
|
+
"type": "object",
|
|
15186
|
+
"description": "Parameters to append to the URL. Supports variable interpolation.",
|
|
15187
|
+
"additionalProperties": {
|
|
15188
|
+
"type": "string"
|
|
15189
|
+
},
|
|
15190
|
+
"default": {}
|
|
15191
|
+
},
|
|
15192
|
+
"headers": {
|
|
15193
|
+
"type": "object",
|
|
15194
|
+
"description": "Headers to use. Supports variable interpolation.",
|
|
15195
|
+
"additionalProperties": {
|
|
15196
|
+
"type": "string"
|
|
15197
|
+
},
|
|
15198
|
+
"default": {}
|
|
15199
|
+
},
|
|
15200
|
+
"body": {
|
|
15201
|
+
"type": "object",
|
|
15202
|
+
"description": "Request body to send. Supports variable interpolation. Content format is determined by Content-Type header.",
|
|
15203
|
+
"additionalProperties": {
|
|
15204
|
+
"type": "string"
|
|
15205
|
+
},
|
|
15206
|
+
"default": {}
|
|
15207
|
+
}
|
|
15208
|
+
},
|
|
15209
|
+
"required": [
|
|
15210
|
+
"url"
|
|
15211
|
+
]
|
|
15212
|
+
},
|
|
15213
|
+
"resolved": {
|
|
15214
|
+
"type": "object",
|
|
15215
|
+
"properties": {
|
|
15216
|
+
"dataPath": {
|
|
15217
|
+
"type": "string",
|
|
15218
|
+
"description": "Optional path to the metadata object in the response. If omitted, the metadata is assumed to be on the top level."
|
|
15219
|
+
},
|
|
15220
|
+
"errorMessagePath": {
|
|
15221
|
+
"type": "string",
|
|
15222
|
+
"description": "Optional path to a human-readable error message in the third-party response body, used when the call fails (non-2xx status).\nIf specified and the path resolves to a string, that message is forwarded to the end user instead of a generic error.\n",
|
|
15223
|
+
"example": "error.message"
|
|
15224
|
+
}
|
|
15225
|
+
}
|
|
15226
|
+
},
|
|
15227
|
+
"use_static_ips": {
|
|
15228
|
+
"type": "boolean",
|
|
15229
|
+
"deprecated": true,
|
|
15230
|
+
"description": "Deprecated. Prefer `secure_proxy` instead.\nIf true, requests are made from a set of static IP addresses and only allow connections to a set of allowed IP addresses. Get in touch with us to add your IP addresses.\n",
|
|
14308
15231
|
"default": false
|
|
14309
15232
|
},
|
|
14310
15233
|
"secure_proxy": {
|
|
@@ -14376,12 +15299,18 @@
|
|
|
14376
15299
|
"dataPath": {
|
|
14377
15300
|
"type": "string",
|
|
14378
15301
|
"description": "Optional path to the data (array) in the response. If omitted, the data is assumed to be on the top level."
|
|
15302
|
+
},
|
|
15303
|
+
"errorMessagePath": {
|
|
15304
|
+
"type": "string",
|
|
15305
|
+
"description": "Optional path to a human-readable error message in the third-party response body, used when the call fails (non-2xx status).\nIf specified and the path resolves to a string, that message is forwarded to the end user instead of a generic error.\n",
|
|
15306
|
+
"example": "error.message"
|
|
14379
15307
|
}
|
|
14380
15308
|
}
|
|
14381
15309
|
},
|
|
14382
15310
|
"use_static_ips": {
|
|
14383
15311
|
"type": "boolean",
|
|
14384
|
-
"
|
|
15312
|
+
"deprecated": true,
|
|
15313
|
+
"description": "Deprecated. Prefer `secure_proxy` instead.\nIf true, requests are made from a set of static IP addresses and only allow connections to a set of allowed IP addresses. Get in touch with us to add your IP addresses.\n",
|
|
14385
15314
|
"default": false
|
|
14386
15315
|
},
|
|
14387
15316
|
"secure_proxy": {
|
|
@@ -14672,6 +15601,11 @@
|
|
|
14672
15601
|
"example": [
|
|
14673
15602
|
"00123456"
|
|
14674
15603
|
]
|
|
15604
|
+
},
|
|
15605
|
+
"file_id": {
|
|
15606
|
+
"type": "string",
|
|
15607
|
+
"description": "ID of the created file entity for the uploaded photo.",
|
|
15608
|
+
"example": "abc123def456"
|
|
14675
15609
|
}
|
|
14676
15610
|
}
|
|
14677
15611
|
},
|
|
@@ -14691,6 +15625,7 @@
|
|
|
14691
15625
|
},
|
|
14692
15626
|
"ProviderConfig": {
|
|
14693
15627
|
"type": "object",
|
|
15628
|
+
"description": "SSO identity provider configuration.\n\nEnv var interpolation: only string fields under `oidc_config` and\n`mobile_oidc_config` (incl. their nested `metadata`) are passed through\nLiquid templating, so they may contain `{{ env.VAR }}` placeholders that\nget resolved at runtime against the organization's environment.\n\nThe following fields are used as literal values and MUST NOT contain\ntemplate syntax: `slug`, `display_name`, `provider_type`, all keys and\nvalues under `attribute_mappings` (used as JSONPath-like accessors into\ntoken claims), and all keys and values under `entity_matching`.\n",
|
|
14694
15629
|
"properties": {
|
|
14695
15630
|
"slug": {
|
|
14696
15631
|
"$ref": "#/components/schemas/ProviderSlug"
|
|
@@ -14882,6 +15817,7 @@
|
|
|
14882
15817
|
},
|
|
14883
15818
|
"OIDCProviderConfig": {
|
|
14884
15819
|
"type": "object",
|
|
15820
|
+
"description": "OIDC provider configuration. Values are resolved at SSO invocation time\n(login / callback), so the fields below may reference org env vars via\nmustache-like templates, e.g. `{{ env.MY_PROVIDER_CLIENT_SECRET }}`.\n\nFields used to render the SSO buttons up-front (`ProviderConfig.slug`,\n`ProviderConfig.display_name`) are NOT interpolated and must be literal.\n",
|
|
14885
15821
|
"properties": {
|
|
14886
15822
|
"type": {
|
|
14887
15823
|
"type": "string",
|
|
@@ -14893,20 +15829,22 @@
|
|
|
14893
15829
|
},
|
|
14894
15830
|
"oidc_issuer": {
|
|
14895
15831
|
"type": "string",
|
|
14896
|
-
"description": "Issuing Authority URL",
|
|
15832
|
+
"description": "Issuing Authority URL. Supports env var interpolation, e.g. `{{ env.MY_ISSUER }}`.",
|
|
14897
15833
|
"example": "https://login.microsoftonline.com/33d4f3e5-3df2-421e-b92e-a63cfa680a88/v2.0"
|
|
14898
15834
|
},
|
|
14899
15835
|
"redirect_uri": {
|
|
14900
15836
|
"type": "string",
|
|
14901
|
-
"description": "Redirect URI for the OIDC flow",
|
|
15837
|
+
"description": "Redirect URI for the OIDC flow. Supports env var interpolation.",
|
|
14902
15838
|
"example": "https://customer-portal.com/login"
|
|
14903
15839
|
},
|
|
14904
15840
|
"client_id": {
|
|
14905
15841
|
"type": "string",
|
|
15842
|
+
"description": "Supports env var interpolation, e.g. `{{ env.MY_CLIENT_ID }}`.",
|
|
14906
15843
|
"example": "ab81daf8-8b1f-42d6-94ca-c51621054c75"
|
|
14907
15844
|
},
|
|
14908
15845
|
"client_secret": {
|
|
14909
15846
|
"type": "string",
|
|
15847
|
+
"description": "Client Secret. Supports env var interpolation (incl. secrets), e.g.\n`{{ env.MY_CLIENT_SECRET }}`. Prefer storing the actual secret as an org\nenv var and referencing it here.\n",
|
|
14910
15848
|
"example": "7BIUnn~6shh.7fNtXb..3k1Mp3s6k6WK3B"
|
|
14911
15849
|
},
|
|
14912
15850
|
"has_client_secret": {
|
|
@@ -14939,15 +15877,16 @@
|
|
|
14939
15877
|
},
|
|
14940
15878
|
"MoblieOIDCConfig": {
|
|
14941
15879
|
"type": "object",
|
|
15880
|
+
"description": "Mobile OIDC configuration. Values are resolved at SSO invocation time, so the\nfields below may reference org env vars via mustache-like templates, e.g.\n`{{ env.MOBILE_CLIENT_SECRET }}`.\n",
|
|
14942
15881
|
"properties": {
|
|
14943
15882
|
"client_id": {
|
|
14944
15883
|
"type": "string",
|
|
14945
|
-
"description": "Client ID for the mobile app",
|
|
15884
|
+
"description": "Client ID for the mobile app. Supports env var interpolation.",
|
|
14946
15885
|
"example": 123456
|
|
14947
15886
|
},
|
|
14948
15887
|
"client_secret": {
|
|
14949
15888
|
"type": "string",
|
|
14950
|
-
"description": "Client Secret for the mobile app",
|
|
15889
|
+
"description": "Client Secret for the mobile app. Supports env var interpolation (incl. secrets),\ne.g. `{{ env.MOBILE_CLIENT_SECRET }}`.\n",
|
|
14951
15890
|
"example": 123456
|
|
14952
15891
|
}
|
|
14953
15892
|
}
|
|
@@ -14955,6 +15894,18 @@
|
|
|
14955
15894
|
"OIDCProviderMetadata": {
|
|
14956
15895
|
"type": "object",
|
|
14957
15896
|
"properties": {
|
|
15897
|
+
"response_modes_supported": {
|
|
15898
|
+
"type": "array",
|
|
15899
|
+
"description": "Response modes the provider accepts (e.g. `form_post` for Apple)",
|
|
15900
|
+
"items": {
|
|
15901
|
+
"type": "string",
|
|
15902
|
+
"enum": [
|
|
15903
|
+
"form_post",
|
|
15904
|
+
"fragment",
|
|
15905
|
+
"query"
|
|
15906
|
+
]
|
|
15907
|
+
}
|
|
15908
|
+
},
|
|
14958
15909
|
"authorization_endpoint": {
|
|
14959
15910
|
"type": "string",
|
|
14960
15911
|
"description": "URL of the authorization endpoint",
|
|
@@ -14992,12 +15943,12 @@
|
|
|
14992
15943
|
},
|
|
14993
15944
|
"test_auth_username": {
|
|
14994
15945
|
"type": "string",
|
|
14995
|
-
"description": "The username for the test auth, only used for testing on auth code flow",
|
|
15946
|
+
"description": "The username for the test auth, only used for testing on auth code flow.\nSupports env var interpolation, e.g. `{{ env.MY_TEST_AUTH_USERNAME }}`.\n",
|
|
14996
15947
|
"example": "test@epilot.io"
|
|
14997
15948
|
},
|
|
14998
15949
|
"test_auth_password": {
|
|
14999
15950
|
"type": "string",
|
|
15000
|
-
"description": "The password for the test auth, only used for testing on auth code flow"
|
|
15951
|
+
"description": "The password for the test auth, only used for testing on auth code flow.\nSupports env var interpolation (incl. secrets), e.g. `{{ env.MY_TEST_AUTH_PASSWORD }}`.\n"
|
|
15001
15952
|
}
|
|
15002
15953
|
}
|
|
15003
15954
|
},
|
|
@@ -15397,6 +16348,17 @@
|
|
|
15397
16348
|
"type": "string",
|
|
15398
16349
|
"description": "The id of the portal",
|
|
15399
16350
|
"example": "453ad7bf-86d5-46c8-8252-bcc868df5e3c"
|
|
16351
|
+
},
|
|
16352
|
+
"past_routes": {
|
|
16353
|
+
"type": "array",
|
|
16354
|
+
"description": "Slugs that previously belonged to this page. The portal redirects requests for these slugs to the current slug. Managed by the server: when a page's slug changes, the old slug is appended here, and when another page claims one of these slugs it is removed from this list.\n",
|
|
16355
|
+
"items": {
|
|
16356
|
+
"type": "string"
|
|
16357
|
+
},
|
|
16358
|
+
"example": [
|
|
16359
|
+
"old-dashboard",
|
|
16360
|
+
"home"
|
|
16361
|
+
]
|
|
15400
16362
|
}
|
|
15401
16363
|
}
|
|
15402
16364
|
}
|
|
@@ -15423,6 +16385,14 @@
|
|
|
15423
16385
|
"type": "boolean",
|
|
15424
16386
|
"description": "Mark true if the domain is an Epilot domain"
|
|
15425
16387
|
},
|
|
16388
|
+
"epilot_domain": {
|
|
16389
|
+
"type": "string",
|
|
16390
|
+
"description": "The Epilot domain on which the portal is accessible",
|
|
16391
|
+
"example": "example-portal-1.ecp.epilot.io"
|
|
16392
|
+
},
|
|
16393
|
+
"domain_settings": {
|
|
16394
|
+
"$ref": "#/components/schemas/DomainSettings"
|
|
16395
|
+
},
|
|
15426
16396
|
"design_id": {
|
|
15427
16397
|
"$ref": "#/components/schemas/EntityId",
|
|
15428
16398
|
"description": "ID of the design used to build the portal"
|
|
@@ -15449,6 +16419,24 @@
|
|
|
15449
16419
|
"BLOCK_IF_PORTAL_USER_EXISTS"
|
|
15450
16420
|
]
|
|
15451
16421
|
},
|
|
16422
|
+
"self_registration_account_setting": {
|
|
16423
|
+
"type": "string",
|
|
16424
|
+
"description": "Controls behavior of self-registration when account is used as the registration entity",
|
|
16425
|
+
"enum": [
|
|
16426
|
+
"ALLOW_WITH_CONTACT_CREATION",
|
|
16427
|
+
"DENY",
|
|
16428
|
+
"ALWAYS_CREATE_CONTACT",
|
|
16429
|
+
"DISALLOW_COMPLETELY"
|
|
16430
|
+
]
|
|
16431
|
+
},
|
|
16432
|
+
"self_registration_entity": {
|
|
16433
|
+
"type": "string",
|
|
16434
|
+
"description": "Entity type used as the primary identifier for self-registration",
|
|
16435
|
+
"enum": [
|
|
16436
|
+
"contact",
|
|
16437
|
+
"account"
|
|
16438
|
+
]
|
|
16439
|
+
},
|
|
15452
16440
|
"user_account_self_management": {
|
|
15453
16441
|
"type": "boolean",
|
|
15454
16442
|
"description": "Enable or disable user account self management",
|
|
@@ -15867,6 +16855,13 @@
|
|
|
15867
16855
|
},
|
|
15868
16856
|
"origin": {
|
|
15869
16857
|
"$ref": "#/components/schemas/Origin"
|
|
16858
|
+
},
|
|
16859
|
+
"global_blocks": {
|
|
16860
|
+
"type": "object",
|
|
16861
|
+
"description": "Portal-level blocks shared across all pages (e.g. footer). Keyed by block id.",
|
|
16862
|
+
"additionalProperties": {
|
|
16863
|
+
"$ref": "#/components/schemas/Block"
|
|
16864
|
+
}
|
|
15870
16865
|
}
|
|
15871
16866
|
}
|
|
15872
16867
|
},
|
|
@@ -15979,6 +16974,11 @@
|
|
|
15979
16974
|
"is_canary": {
|
|
15980
16975
|
"type": "boolean",
|
|
15981
16976
|
"description": "Whether the org is in canary mode"
|
|
16977
|
+
},
|
|
16978
|
+
"redirect_to": {
|
|
16979
|
+
"type": "string",
|
|
16980
|
+
"description": "The URL to redirect to",
|
|
16981
|
+
"example": "https://example.com"
|
|
15982
16982
|
}
|
|
15983
16983
|
}
|
|
15984
16984
|
},
|