@epilot/cli 0.1.25 → 0.1.27
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 +151 -19
- package/definitions/configuration-hub.json +623 -0
- package/definitions/customer-portal.json +789 -48
- package/definitions/email-settings.json +86 -4
- package/definitions/entity.json +185 -8
- 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/metering.json +728 -64
- package/definitions/webhooks.json +149 -4
- package/dist/bin/epilot.js +6 -6
- package/dist/{chunk-SGI6WZ57.js → chunk-OBSR3RKB.js} +34 -11
- package/dist/{completion-W6JFZKZI.js → completion-AUP6EFBO.js} +1 -1
- package/dist/{upgrade-EZO5QXKC.js → upgrade-PPGT4OMA.js} +1 -1
- package/package.json +1 -1
|
@@ -818,17 +818,6 @@
|
|
|
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
|
-
"aggregation_method": {
|
|
822
|
-
"type": "string",
|
|
823
|
-
"description": "The method used to aggregate the consumption data. Assumed default is 'sum'.",
|
|
824
|
-
"enum": [
|
|
825
|
-
"sum",
|
|
826
|
-
"average",
|
|
827
|
-
"max",
|
|
828
|
-
"min"
|
|
829
|
-
],
|
|
830
|
-
"example": "sum"
|
|
831
|
-
},
|
|
832
821
|
"unit": {
|
|
833
822
|
"type": "string",
|
|
834
823
|
"description": "Optional unit of the consumption value. Defaults to unit present on the relevant Meter Counter.",
|
|
@@ -965,6 +954,74 @@
|
|
|
965
954
|
}
|
|
966
955
|
}
|
|
967
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
|
+
},
|
|
968
1025
|
"/v2/portal/costs": {
|
|
969
1026
|
"get": {
|
|
970
1027
|
"operationId": "getCosts",
|
|
@@ -1810,6 +1867,13 @@
|
|
|
1810
1867
|
"example": "CAA_ERROR"
|
|
1811
1868
|
}
|
|
1812
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
|
+
}
|
|
1813
1877
|
}
|
|
1814
1878
|
}
|
|
1815
1879
|
}
|
|
@@ -1937,6 +2001,13 @@
|
|
|
1937
2001
|
"example": "CAA_ERROR"
|
|
1938
2002
|
}
|
|
1939
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
|
+
}
|
|
1940
2011
|
}
|
|
1941
2012
|
}
|
|
1942
2013
|
}
|
|
@@ -3504,6 +3575,84 @@
|
|
|
3504
3575
|
"contactId": {
|
|
3505
3576
|
"$ref": "#/components/schemas/EntityId",
|
|
3506
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"
|
|
3507
3656
|
}
|
|
3508
3657
|
}
|
|
3509
3658
|
}
|
|
@@ -7470,6 +7619,90 @@
|
|
|
7470
7619
|
}
|
|
7471
7620
|
}
|
|
7472
7621
|
},
|
|
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"
|
|
7630
|
+
],
|
|
7631
|
+
"parameters": [
|
|
7632
|
+
{
|
|
7633
|
+
"in": "path",
|
|
7634
|
+
"name": "provider_slug",
|
|
7635
|
+
"required": true,
|
|
7636
|
+
"description": "Provider slug (organization-unique)",
|
|
7637
|
+
"schema": {
|
|
7638
|
+
"$ref": "#/components/schemas/ProviderSlug"
|
|
7639
|
+
}
|
|
7640
|
+
},
|
|
7641
|
+
{
|
|
7642
|
+
"in": "query",
|
|
7643
|
+
"name": "org_id",
|
|
7644
|
+
"required": false,
|
|
7645
|
+
"description": "epilot organization id (required with `origin` or `portal_id`)",
|
|
7646
|
+
"schema": {
|
|
7647
|
+
"type": "string",
|
|
7648
|
+
"example": 123
|
|
7649
|
+
}
|
|
7650
|
+
},
|
|
7651
|
+
{
|
|
7652
|
+
"in": "query",
|
|
7653
|
+
"name": "origin",
|
|
7654
|
+
"required": false,
|
|
7655
|
+
"description": "Origin of the Portal",
|
|
7656
|
+
"schema": {
|
|
7657
|
+
"type": "string",
|
|
7658
|
+
"enum": [
|
|
7659
|
+
"END_CUSTOMER_PORTAL",
|
|
7660
|
+
"INSTALLER_PORTAL"
|
|
7661
|
+
]
|
|
7662
|
+
}
|
|
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
|
+
},
|
|
7473
7706
|
"/v2/portal/public/sso/login": {
|
|
7474
7707
|
"post": {
|
|
7475
7708
|
"operationId": "ssoLogin",
|
|
@@ -9661,39 +9894,182 @@
|
|
|
9661
9894
|
}
|
|
9662
9895
|
}
|
|
9663
9896
|
}
|
|
9664
|
-
}
|
|
9665
|
-
|
|
9666
|
-
|
|
9667
|
-
|
|
9668
|
-
|
|
9669
|
-
"description": "
|
|
9670
|
-
"
|
|
9671
|
-
"
|
|
9672
|
-
|
|
9673
|
-
|
|
9674
|
-
|
|
9675
|
-
|
|
9676
|
-
}
|
|
9677
|
-
},
|
|
9678
|
-
"Unauthorized": {
|
|
9679
|
-
"description": "Could not authenticate the user",
|
|
9680
|
-
"content": {
|
|
9681
|
-
"application/json": {
|
|
9682
|
-
"schema": {
|
|
9683
|
-
"$ref": "#/components/schemas/ErrorResp"
|
|
9684
|
-
}
|
|
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": []
|
|
9685
9909
|
}
|
|
9686
|
-
|
|
9687
|
-
|
|
9688
|
-
|
|
9689
|
-
|
|
9690
|
-
|
|
9691
|
-
|
|
9910
|
+
],
|
|
9911
|
+
"parameters": [
|
|
9912
|
+
{
|
|
9913
|
+
"in": "query",
|
|
9914
|
+
"name": "portal_id",
|
|
9915
|
+
"required": true,
|
|
9692
9916
|
"schema": {
|
|
9693
|
-
"$ref": "#/components/schemas/
|
|
9694
|
-
}
|
|
9917
|
+
"$ref": "#/components/schemas/PortalId"
|
|
9918
|
+
},
|
|
9919
|
+
"description": "PortalId of the portal"
|
|
9695
9920
|
}
|
|
9696
|
-
|
|
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
|
+
}
|
|
10040
|
+
}
|
|
10041
|
+
},
|
|
10042
|
+
"components": {
|
|
10043
|
+
"responses": {
|
|
10044
|
+
"InvalidRequest": {
|
|
10045
|
+
"description": "The request could not be validated",
|
|
10046
|
+
"content": {
|
|
10047
|
+
"application/json": {
|
|
10048
|
+
"schema": {
|
|
10049
|
+
"$ref": "#/components/schemas/ErrorResp"
|
|
10050
|
+
}
|
|
10051
|
+
}
|
|
10052
|
+
}
|
|
10053
|
+
},
|
|
10054
|
+
"Unauthorized": {
|
|
10055
|
+
"description": "Could not authenticate the user",
|
|
10056
|
+
"content": {
|
|
10057
|
+
"application/json": {
|
|
10058
|
+
"schema": {
|
|
10059
|
+
"$ref": "#/components/schemas/ErrorResp"
|
|
10060
|
+
}
|
|
10061
|
+
}
|
|
10062
|
+
}
|
|
10063
|
+
},
|
|
10064
|
+
"Forbidden": {
|
|
10065
|
+
"description": "The user is not allowed to access this resource",
|
|
10066
|
+
"content": {
|
|
10067
|
+
"application/json": {
|
|
10068
|
+
"schema": {
|
|
10069
|
+
"$ref": "#/components/schemas/ErrorResp"
|
|
10070
|
+
}
|
|
10071
|
+
}
|
|
10072
|
+
}
|
|
9697
10073
|
},
|
|
9698
10074
|
"ForbiddenByRule": {
|
|
9699
10075
|
"description": "The user is not allowed to access this resource",
|
|
@@ -10346,6 +10722,13 @@
|
|
|
10346
10722
|
"description": "Default admin users for pending user notification to notify"
|
|
10347
10723
|
}
|
|
10348
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
|
+
}
|
|
10349
10732
|
}
|
|
10350
10733
|
}
|
|
10351
10734
|
},
|
|
@@ -10373,6 +10756,14 @@
|
|
|
10373
10756
|
"type": "boolean",
|
|
10374
10757
|
"description": "Mark true if the domain is an Epilot domain"
|
|
10375
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
|
+
},
|
|
10376
10767
|
"design_id": {
|
|
10377
10768
|
"$ref": "#/components/schemas/EntityId",
|
|
10378
10769
|
"description": "ID of the design used to build the portal"
|
|
@@ -10399,6 +10790,24 @@
|
|
|
10399
10790
|
"BLOCK_IF_PORTAL_USER_EXISTS"
|
|
10400
10791
|
]
|
|
10401
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
|
+
},
|
|
10402
10811
|
"user_account_self_management": {
|
|
10403
10812
|
"type": "boolean",
|
|
10404
10813
|
"description": "Enable or disable user account self management",
|
|
@@ -10823,6 +11232,13 @@
|
|
|
10823
11232
|
"additionalProperties": {
|
|
10824
11233
|
"$ref": "#/components/schemas/Page"
|
|
10825
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
|
+
}
|
|
10826
11242
|
}
|
|
10827
11243
|
}
|
|
10828
11244
|
},
|
|
@@ -10929,6 +11345,24 @@
|
|
|
10929
11345
|
}
|
|
10930
11346
|
}
|
|
10931
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
|
+
},
|
|
10932
11366
|
"WidgetBase": {
|
|
10933
11367
|
"type": "object",
|
|
10934
11368
|
"required": [
|
|
@@ -11285,6 +11719,38 @@
|
|
|
11285
11719
|
}
|
|
11286
11720
|
}
|
|
11287
11721
|
},
|
|
11722
|
+
"AccountExistsRequest": {
|
|
11723
|
+
"type": "object",
|
|
11724
|
+
"required": [
|
|
11725
|
+
"registration_identifiers",
|
|
11726
|
+
"org_id"
|
|
11727
|
+
],
|
|
11728
|
+
"properties": {
|
|
11729
|
+
"org_id": {
|
|
11730
|
+
"type": "string",
|
|
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
|
+
},
|
|
11288
11754
|
"UserRequest": {
|
|
11289
11755
|
"type": "object",
|
|
11290
11756
|
"properties": {
|
|
@@ -13727,10 +14193,11 @@
|
|
|
13727
14193
|
},
|
|
13728
14194
|
"intervals": {
|
|
13729
14195
|
"type": "array",
|
|
14196
|
+
"deprecated": true,
|
|
13730
14197
|
"items": {
|
|
13731
14198
|
"type": "string"
|
|
13732
14199
|
},
|
|
13733
|
-
"description": "
|
|
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"
|
|
13734
14201
|
},
|
|
13735
14202
|
"block_types": {
|
|
13736
14203
|
"type": "array",
|
|
@@ -13741,6 +14208,109 @@
|
|
|
13741
14208
|
}
|
|
13742
14209
|
}
|
|
13743
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."
|
|
14311
|
+
}
|
|
14312
|
+
}
|
|
14313
|
+
},
|
|
13744
14314
|
"PublicContractIdentificationDetails": {
|
|
13745
14315
|
"type": "object",
|
|
13746
14316
|
"properties": {
|
|
@@ -13940,6 +14510,9 @@
|
|
|
13940
14510
|
},
|
|
13941
14511
|
{
|
|
13942
14512
|
"$ref": "#/components/schemas/ExtensionHookMeterReadingPlausibilityCheck"
|
|
14513
|
+
},
|
|
14514
|
+
{
|
|
14515
|
+
"$ref": "#/components/schemas/ExtensionHookVisualizationMetadata"
|
|
13943
14516
|
}
|
|
13944
14517
|
]
|
|
13945
14518
|
}
|
|
@@ -14307,6 +14880,11 @@
|
|
|
14307
14880
|
"type": "string",
|
|
14308
14881
|
"description": "Lower allowed limit of the meter reading",
|
|
14309
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"
|
|
14310
14888
|
}
|
|
14311
14889
|
}
|
|
14312
14890
|
},
|
|
@@ -14386,6 +14964,11 @@
|
|
|
14386
14964
|
"dataPath": {
|
|
14387
14965
|
"type": "string",
|
|
14388
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"
|
|
14389
14972
|
}
|
|
14390
14973
|
}
|
|
14391
14974
|
},
|
|
@@ -14464,6 +15047,11 @@
|
|
|
14464
15047
|
"dataPath": {
|
|
14465
15048
|
"type": "string",
|
|
14466
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"
|
|
14467
15055
|
}
|
|
14468
15056
|
}
|
|
14469
15057
|
},
|
|
@@ -14543,6 +15131,99 @@
|
|
|
14543
15131
|
"url"
|
|
14544
15132
|
]
|
|
14545
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"
|
|
15141
|
+
}
|
|
15142
|
+
}
|
|
15143
|
+
},
|
|
15144
|
+
"use_static_ips": {
|
|
15145
|
+
"type": "boolean",
|
|
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
|
+
},
|
|
14546
15227
|
"use_static_ips": {
|
|
14547
15228
|
"type": "boolean",
|
|
14548
15229
|
"deprecated": true,
|
|
@@ -14618,6 +15299,11 @@
|
|
|
14618
15299
|
"dataPath": {
|
|
14619
15300
|
"type": "string",
|
|
14620
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"
|
|
14621
15307
|
}
|
|
14622
15308
|
}
|
|
14623
15309
|
},
|
|
@@ -14939,6 +15625,7 @@
|
|
|
14939
15625
|
},
|
|
14940
15626
|
"ProviderConfig": {
|
|
14941
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",
|
|
14942
15629
|
"properties": {
|
|
14943
15630
|
"slug": {
|
|
14944
15631
|
"$ref": "#/components/schemas/ProviderSlug"
|
|
@@ -15130,6 +15817,7 @@
|
|
|
15130
15817
|
},
|
|
15131
15818
|
"OIDCProviderConfig": {
|
|
15132
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",
|
|
15133
15821
|
"properties": {
|
|
15134
15822
|
"type": {
|
|
15135
15823
|
"type": "string",
|
|
@@ -15141,20 +15829,22 @@
|
|
|
15141
15829
|
},
|
|
15142
15830
|
"oidc_issuer": {
|
|
15143
15831
|
"type": "string",
|
|
15144
|
-
"description": "Issuing Authority URL",
|
|
15832
|
+
"description": "Issuing Authority URL. Supports env var interpolation, e.g. `{{ env.MY_ISSUER }}`.",
|
|
15145
15833
|
"example": "https://login.microsoftonline.com/33d4f3e5-3df2-421e-b92e-a63cfa680a88/v2.0"
|
|
15146
15834
|
},
|
|
15147
15835
|
"redirect_uri": {
|
|
15148
15836
|
"type": "string",
|
|
15149
|
-
"description": "Redirect URI for the OIDC flow",
|
|
15837
|
+
"description": "Redirect URI for the OIDC flow. Supports env var interpolation.",
|
|
15150
15838
|
"example": "https://customer-portal.com/login"
|
|
15151
15839
|
},
|
|
15152
15840
|
"client_id": {
|
|
15153
15841
|
"type": "string",
|
|
15842
|
+
"description": "Supports env var interpolation, e.g. `{{ env.MY_CLIENT_ID }}`.",
|
|
15154
15843
|
"example": "ab81daf8-8b1f-42d6-94ca-c51621054c75"
|
|
15155
15844
|
},
|
|
15156
15845
|
"client_secret": {
|
|
15157
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",
|
|
15158
15848
|
"example": "7BIUnn~6shh.7fNtXb..3k1Mp3s6k6WK3B"
|
|
15159
15849
|
},
|
|
15160
15850
|
"has_client_secret": {
|
|
@@ -15187,15 +15877,16 @@
|
|
|
15187
15877
|
},
|
|
15188
15878
|
"MoblieOIDCConfig": {
|
|
15189
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",
|
|
15190
15881
|
"properties": {
|
|
15191
15882
|
"client_id": {
|
|
15192
15883
|
"type": "string",
|
|
15193
|
-
"description": "Client ID for the mobile app",
|
|
15884
|
+
"description": "Client ID for the mobile app. Supports env var interpolation.",
|
|
15194
15885
|
"example": 123456
|
|
15195
15886
|
},
|
|
15196
15887
|
"client_secret": {
|
|
15197
15888
|
"type": "string",
|
|
15198
|
-
"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",
|
|
15199
15890
|
"example": 123456
|
|
15200
15891
|
}
|
|
15201
15892
|
}
|
|
@@ -15203,6 +15894,18 @@
|
|
|
15203
15894
|
"OIDCProviderMetadata": {
|
|
15204
15895
|
"type": "object",
|
|
15205
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
|
+
},
|
|
15206
15909
|
"authorization_endpoint": {
|
|
15207
15910
|
"type": "string",
|
|
15208
15911
|
"description": "URL of the authorization endpoint",
|
|
@@ -15240,12 +15943,12 @@
|
|
|
15240
15943
|
},
|
|
15241
15944
|
"test_auth_username": {
|
|
15242
15945
|
"type": "string",
|
|
15243
|
-
"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",
|
|
15244
15947
|
"example": "test@epilot.io"
|
|
15245
15948
|
},
|
|
15246
15949
|
"test_auth_password": {
|
|
15247
15950
|
"type": "string",
|
|
15248
|
-
"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"
|
|
15249
15952
|
}
|
|
15250
15953
|
}
|
|
15251
15954
|
},
|
|
@@ -15682,6 +16385,14 @@
|
|
|
15682
16385
|
"type": "boolean",
|
|
15683
16386
|
"description": "Mark true if the domain is an Epilot domain"
|
|
15684
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
|
+
},
|
|
15685
16396
|
"design_id": {
|
|
15686
16397
|
"$ref": "#/components/schemas/EntityId",
|
|
15687
16398
|
"description": "ID of the design used to build the portal"
|
|
@@ -15708,6 +16419,24 @@
|
|
|
15708
16419
|
"BLOCK_IF_PORTAL_USER_EXISTS"
|
|
15709
16420
|
]
|
|
15710
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
|
+
},
|
|
15711
16440
|
"user_account_self_management": {
|
|
15712
16441
|
"type": "boolean",
|
|
15713
16442
|
"description": "Enable or disable user account self management",
|
|
@@ -16126,6 +16855,13 @@
|
|
|
16126
16855
|
},
|
|
16127
16856
|
"origin": {
|
|
16128
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
|
+
}
|
|
16129
16865
|
}
|
|
16130
16866
|
}
|
|
16131
16867
|
},
|
|
@@ -16238,6 +16974,11 @@
|
|
|
16238
16974
|
"is_canary": {
|
|
16239
16975
|
"type": "boolean",
|
|
16240
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"
|
|
16241
16982
|
}
|
|
16242
16983
|
}
|
|
16243
16984
|
},
|