@epilot/customer-portal-client 0.39.14 → 0.40.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- (()=>{"use strict";var e={438(e,r,t){var a=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(r,"__esModule",{value:!0});var n=a(t(466));r.default=n.default},466(e){e.exports=JSON.parse('{"openapi":"3.0.3","info":{"title":"","version":""},"paths":{"/v2/portal/portal":{"post":{"operationId":"upsertPortal","parameters":[{"in":"query","name":"origin","required":true},{"in":"query","name":"portal_id","required":false}],"requestBody":{"required":true,"content":{"application/json":{}}},"responses":{}}},"/v2/portal/public/user":{"post":{"operationId":"createUser","deprecated":true,"parameters":[{"in":"query","name":"origin","required":true}],"requestBody":{"required":true,"content":{"application/json":{}}},"responses":{}}},"/v3/portal/public/user":{"post":{"operationId":"createUserV3","parameters":[{"in":"query","name":"portal_id","required":false},{"in":"query","name":"domain","required":false}],"requestBody":{"required":true,"content":{"application/json":{}}},"responses":{}}},"/v2/portal/token/validate":{"post":{"operationId":"validateToken","responses":{}}},"/v2/portal/token/revoke":{"post":{"operationId":"revokeToken","requestBody":{"required":true,"content":{"application/json":{}}},"responses":{}}},"/v2/portal/public/config":{"get":{"operationId":"getPortalConfigByDomain","parameters":[{"in":"query","name":"domain","required":true}],"responses":{}}},"/v2/portal/config":{"get":{"operationId":"getPortalConfig","parameters":[{"in":"query","name":"origin","required":false}],"responses":{}},"delete":{"operationId":"deletePortal","parameters":[{"in":"query","name":"origin","required":true}],"responses":{}}},"/v1/portal/exports":{"post":{"operationId":"createExport","requestBody":{"required":true,"content":{"application/json":{}}},"responses":{}}},"/v1/portal/exports/{jobId}":{"get":{"operationId":"getExport","parameters":[{"in":"path","name":"jobId","required":true}],"responses":{}}},"/v2/portal/extensions":{"get":{"operationId":"getPortalExtensions","parameters":[{"in":"query","name":"origin","required":false}],"responses":{}}},"/v2/portal/public/extensions":{"get":{"operationId":"getPublicPortalExtensionDetails","parameters":[{"in":"query","name":"org_id","required":true},{"in":"query","name":"origin","required":true}],"responses":{}}},"/v3/portal/extensions":{"get":{"operationId":"getPortalExtensionsV3","parameters":[{"in":"query","name":"portal_id","required":true}],"responses":{}}},"/v3/portal/public/extensions":{"get":{"operationId":"getPublicPortalExtensionDetailsV3","parameters":[{"in":"query","name":"org_id","required":false},{"in":"query","name":"portal_id","required":false},{"in":"query","name":"domain","required":false}],"responses":{}}},"/v2/portal/consumption":{"get":{"operationId":"getConsumption","parameters":[{"in":"query","name":"app_id","required":false},{"in":"query","name":"extensionId","required":true},{"in":"query","name":"hookId","required":false},{"in":"query","name":"meter_id","required":false,"deprecated":true},{"in":"query","name":"from","required":true},{"in":"query","name":"to","required":true},{"in":"query","name":"interval","required":true},{"in":"query","name":"context_entities","required":false}],"responses":{}}},"/v2/portal/visualization:export":{"post":{"operationId":"prepareVisualizationExport","requestBody":{"required":true,"content":{"application/json":{}}},"responses":{}}},"/v2/portal/visualization/metadata":{"get":{"operationId":"getVisualizationMetadata","parameters":[{"in":"query","name":"app_id","required":true},{"in":"query","name":"extensionId","required":true},{"in":"query","name":"context_entities","required":false}],"responses":{}}},"/v2/portal/costs":{"get":{"operationId":"getCosts","parameters":[{"in":"query","name":"app_id","required":false},{"in":"query","name":"extensionId","required":true},{"in":"query","name":"hookId","required":false},{"in":"query","name":"meter_id","required":false,"deprecated":true},{"in":"query","name":"from","required":true},{"in":"query","name":"to","required":true},{"in":"query","name":"interval","required":true},{"in":"query","name":"context_entities","required":false}],"responses":{}}},"/v2/portal/prices":{"get":{"operationId":"getPrices","parameters":[{"in":"query","name":"app_id","required":false},{"in":"query","name":"extensionId","required":true},{"in":"query","name":"hookId","required":false},{"in":"query","name":"meter_id","required":false,"deprecated":true},{"in":"query","name":"from","required":true},{"in":"query","name":"to","required":true},{"in":"query","name":"interval","required":true},{"in":"query","name":"context_entities","required":false}],"responses":{}}},"/v2/portal/external-links":{"get":{"operationId":"getExternalLinks","parameters":[{"in":"query","name":"origin","required":false},{"in":"query","name":"contactId","required":false}],"responses":{}}},"/v2/portal/resolve:external-link/{id}":{"get":{"operationId":"getResolvedExternalLink","deprecated":true,"parameters":[{"in":"path","name":"id","required":true},{"in":"query","name":"origin","required":false},{"in":"query","name":"contactId","required":false}],"responses":{}}},"/v3/portal/external-links":{"get":{"operationId":"getExternalLinksV3","parameters":[{"in":"query","name":"portal_id","required":false},{"in":"query","name":"contactId","required":false}],"responses":{}}},"/v3/portal/resolve:external-link/{id}":{"get":{"operationId":"getResolvedExternalLinkV3","deprecated":true,"parameters":[{"in":"path","name":"id","required":true},{"in":"query","name":"portal_id","required":false},{"in":"query","name":"contactId","required":false}],"responses":{}}},"/v2/portal/resolve:seamless-link":{"get":{"operationId":"getResolvedSeamlessLink","parameters":[{"in":"query","name":"app_id","required":false},{"in":"query","name":"extension_id","required":true},{"in":"query","name":"link_id","required":true},{"in":"query","name":"context_entities","required":false}],"responses":{}}},"/v2/portal/public/portal/config":{"get":{"operationId":"getPublicPortalConfig","parameters":[{"in":"query","name":"org_id","required":true},{"in":"query","name":"origin","required":true}],"responses":{}}},"/v2/portal/org/portal/config":{"get":{"operationId":"getOrgPortalConfig","parameters":[{"in":"query","name":"origin","required":true}],"responses":{}}},"/v3/portal/public/portal/config":{"get":{"operationId":"getPublicPortalConfigV3","parameters":[{"in":"query","name":"org_id","required":true},{"in":"query","name":"portal_id","required":true}],"responses":{}}},"/v3/portal/org/portal/config":{"get":{"operationId":"getOrgPortalConfigV3","parameters":[{"in":"query","name":"portal_id","required":true}],"responses":{}}},"/v2/portal/configs":{"get":{"operationId":"getAllPortalConfigs","responses":{}}},"/v2/portal/email-templates":{"post":{"operationId":"upsertEmailTemplates","parameters":[{"in":"query","name":"origin","required":true}],"requestBody":{"required":true,"content":{"application/json":{}}},"responses":{}},"get":{"operationId":"getEmailTemplates","parameters":[{"in":"query","name":"origin","required":true}],"responses":{}}},"/v3/portal/email-templates:migrate-references":{"post":{"operationId":"migrateEmailTemplateReferences","requestBody":{"required":true,"content":{"application/json":{}}},"responses":{}}},"/v3/portal/email-templates:list-references":{"post":{"operationId":"listEmailTemplateReferences","requestBody":{"required":true,"content":{"application/json":{}}},"responses":{}}},"/v3/portal/email-templates/{portal_id}":{"post":{"operationId":"upsertEmailTemplatesByPortalId","parameters":[{"in":"path","name":"portal_id","required":true}],"requestBody":{"required":true,"content":{"application/json":{}}},"responses":{}},"get":{"operationId":"getEmailTemplatesByPortalId","parameters":[{"in":"path","name":"portal_id","required":true}],"responses":{}}},"/v2/portal/public-widgets":{"get":{"operationId":"getPublicPortalWidgets","deprecated":true,"parameters":[{"in":"query","name":"org_id","required":true},{"in":"query","name":"origin","required":true}],"responses":{}}},"/v3/portal/public/widgets":{"get":{"operationId":"getPublicPortalWidgetsV3","parameters":[{"in":"query","name":"org_id","required":false},{"in":"query","name":"portal_id","required":false},{"in":"query","name":"domain","required":false}],"responses":{}}},"/v2/portal/widgets":{"post":{"operationId":"upsertPortalWidget","deprecated":true,"parameters":[{"in":"query","name":"origin","required":true}],"requestBody":{"required":true,"content":{"application/json":{}}},"responses":{}},"get":{"operationId":"getPortalWidgets","deprecated":true,"parameters":[{"in":"query","name":"origin","required":false},{"in":"query","name":"contract_id","required":false}],"responses":{}}},"/v3/portal/widgets":{"get":{"operationId":"getPortalWidgetsV3","parameters":[{"in":"query","name":"portal_id","required":true},{"in":"query","name":"contract_id","required":false}],"responses":{}},"post":{"operationId":"upsertPortalWidgetV3","parameters":[{"in":"query","name":"portal_id","required":true}],"requestBody":{"required":true,"content":{"application/json":{}}},"responses":{}}},"/v3/portal/portal/files":{"post":{"operationId":"savePortalFilesV3","parameters":[{"in":"query","name":"portal_id","required":true}],"requestBody":{"required":true,"content":{"application/json":{}}},"responses":{}}},"/v2/portal/replace-ecp-template-variables":{"post":{"operationId":"replaceECPTemplateVariables","requestBody":{"content":{"application/json":{}}},"responses":{}}},"/v2/portal/org/settings":{"get":{"operationId":"getOrganizationSettings","deprecated":true,"responses":{}}},"/v2/portal/schemas":{"get":{"operationId":"getSchemas","responses":{}}},"/v2/portal/public/schemas":{"get":{"operationId":"getSchemasByDomain","parameters":[{"in":"query","name":"domain","required":true}],"responses":{}}},"/v3/portal/public/schemas":{"get":{"operationId":"getPublicSchemasV3","parameters":[{"in":"query","name":"org_id","required":false},{"in":"query","name":"portal_id","required":false},{"in":"query","name":"domain","required":false}],"responses":{}}},"/v2/portal/public/org/settings":{"get":{"operationId":"getOrganizationSettingsByDomain","parameters":[{"in":"query","name":"domain","required":true}],"responses":{}}},"/v2/portal/extra-permission-attributes":{"get":{"operationId":"extraPermissionAttributes","responses":{}}},"/v2/portal/validate/caa-records":{"post":{"operationId":"validateCaaRecords","parameters":[{"in":"query","name":"origin","required":true}],"responses":{}}},"/v3/portal/validate/caa-records":{"post":{"operationId":"validateCaaRecordsV3","parameters":[{"in":"query","name":"portal_id","required":true}],"responses":{}}},"/v2/portal/contact":{"get":{"operationId":"getContact","responses":{}},"patch":{"operationId":"updateContact","deprecated":true,"requestBody":{"content":{"application/json":{}}},"responses":{}}},"/v2/portal/ecp/contact":{"get":{"operationId":"getECPContact","parameters":[{"in":"query","name":"id","required":true}],"responses":{}}},"/v2/portal/public/contact/exists":{"post":{"operationId":"checkContactExists","parameters":[{"in":"query","name":"origin","required":true}],"requestBody":{"required":true,"content":{"application/json":{}}},"responses":{}}},"/v3/portal/public/contact/exists":{"post":{"operationId":"checkContactExistsV3","parameters":[{"in":"query","name":"portal_id","required":false},{"in":"query","name":"domain","required":false}],"requestBody":{"required":true,"content":{"application/json":{}}},"responses":{}}},"/v3/portal/public/account/exists":{"post":{"operationId":"checkAccountExists","parameters":[{"in":"query","name":"portal_id","required":false},{"in":"query","name":"domain","required":false}],"requestBody":{"required":true,"content":{"application/json":{}}},"responses":{}}},"/v2/portal/contact/valid/secondary/attributes":{"get":{"operationId":"getValidSecondaryAttributes","responses":{}}},"/v2/portal/user":{"get":{"operationId":"getPortalUser","responses":{}},"patch":{"operationId":"updatePortalUser","requestBody":{"content":{"application/json":{}}},"responses":{}},"delete":{"operationId":"deletePortalUser","responses":{}}},"/v2/portal/user/update/email":{"put":{"operationId":"updatePortalUserEmail","requestBody":{"required":true,"content":{"application/json":{}}},"responses":{}}},"/v2/portal/user/change/password":{"put":{"operationId":"changePortalUserPassword","requestBody":{"required":false,"content":{"application/json":{}}},"responses":{}}},"/v2/portal/user/resend/confirmation-email/{id}":{"post":{"operationId":"resendConfirmationEmail","parameters":[{"in":"path","name":"id","required":true}],"responses":{}}},"/v2/portal/users/by-related-entity":{"get":{"operationId":"fetchPortalUsersByRelatedEntity","parameters":[{"in":"query","name":"entity_id","required":true},{"in":"query","name":"slug","required":true}],"responses":{}}},"/v2/portal/user/confirm":{"get":{"operationId":"confirmUser","parameters":[{"in":"query","name":"confirmation_link_token","required":true},{"in":"query","name":"use_redirect","required":false}],"responses":{}}},"/v2/portal/user/confirm/{id}":{"get":{"operationId":"confirmUserWithUserId","parameters":[{"in":"query","name":"origin","required":true},{"in":"path","name":"id","required":true},{"in":"query","name":"org_id","required":true}],"responses":{}}},"/v2/portal/public/user/exists":{"get":{"operationId":"userExists","parameters":[{"in":"query","name":"email","required":true},{"in":"query","name":"org_id","required":true},{"in":"query","name":"origin","required":false}],"responses":{}}},"/v3/portal/public/user/exists":{"get":{"operationId":"userExistsV3","parameters":[{"in":"query","name":"email","required":true},{"in":"query","name":"org_id","required":false},{"in":"query","name":"portal_id","required":false},{"in":"query","name":"domain","required":false}],"responses":{}}},"/v2/portal/recipients-to-notify":{"post":{"operationId":"getRecipientsToNotifyOnAutomation","requestBody":{"content":{"application/json":{}}},"responses":{}}},"/v2/portal/configure-distribution":{"get":{"operationId":"configureDistribution","parameters":[{"in":"query","name":"origin","required":true}],"responses":{}}},"/v3/portal/configure-distribution":{"get":{"operationId":"configureDistributionV3","parameters":[{"in":"query","name":"portal_id","required":true}],"responses":{}}},"/v2/portal/order":{"get":{"operationId":"getAllOrders","deprecated":true,"parameters":[{"in":"query","name":"from","required":false},{"in":"query","name":"size","required":false}],"responses":{}}},"/v2/portal/order/{id}/acceptance":{"post":{"operationId":"postOrderAcceptance","parameters":[{"in":"path","name":"id","required":true}],"requestBody":{"content":{"application/json":{}}},"responses":{}}},"/v2/portal/order/{id}":{"get":{"operationId":"getOrder","deprecated":true,"parameters":[{"in":"path","name":"id","required":true}],"responses":{}},"patch":{"operationId":"updateOrder","deprecated":true,"parameters":[{"in":"path","name":"id","required":true}],"requestBody":{"content":{"application/json":{}}},"responses":{}}},"/v2/portal/opportunity":{"get":{"operationId":"getAllOpportunities","deprecated":true,"parameters":[{"in":"query","name":"from","required":false},{"in":"query","name":"size","required":false}],"responses":{}}},"/v2/portal/opportunities/searchable-attributes":{"get":{"operationId":"getSearchableAttributesForOpportunities","deprecated":true,"parameters":[{"in":"query","name":"from","required":false},{"in":"query","name":"size","required":false}],"responses":{}}},"/v2/portal/opportunities/search":{"post":{"operationId":"getSearchResultsForOpportunities","deprecated":true,"parameters":[{"in":"query","name":"from","required":false},{"in":"query","name":"size","required":false}],"requestBody":{"required":true,"content":{"application/json":{}}},"responses":{}}},"/v2/portal/opportunities/{id}":{"get":{"operationId":"getOpportunity","deprecated":true,"parameters":[{"in":"path","name":"id","required":true}],"responses":{}},"patch":{"operationId":"updateOpportunity","deprecated":true,"parameters":[{"in":"path","name":"id","required":true}],"requestBody":{"required":true,"content":{"application/json":{}}},"responses":{}}},"/v2/portal/request":{"get":{"operationId":"getAllRequests","deprecated":true,"parameters":[{"in":"query","name":"from","required":false},{"in":"query","name":"size","required":false}],"responses":{}}},"/v2/portal/contract":{"get":{"operationId":"getAllContracts","deprecated":true,"parameters":[{"in":"query","name":"from","required":false},{"in":"query","name":"size","required":false}],"responses":{}}},"/v2/portal/contract/{id}":{"get":{"operationId":"getContract","deprecated":true,"parameters":[{"in":"path","name":"id","required":true}],"responses":{}},"patch":{"operationId":"updateContract","deprecated":true,"parameters":[{"in":"path","name":"id","required":true}],"requestBody":{"required":true,"content":{"application/json":{}}},"responses":{}}},"/v2/portal/contract/{id}/resolve-templates":{"post":{"operationId":"getContractWithTemplates","parameters":[{"in":"path","name":"id","required":true}],"requestBody":{"required":false,"content":{"application/json":{}}},"responses":{}}},"/v2/portal/contract/by-identifiers":{"post":{"operationId":"addContractByIdentifiers","requestBody":{"required":true,"content":{"application/json":{}}},"responses":{}}},"/v2/portal/entity/identifiers/{slug}":{"get":{"operationId":"getEntityIdentifiers","parameters":[{"in":"path","name":"slug","required":true}],"responses":{}}},"/v2/portal/entity/{slug}/{id}/activity":{"get":{"operationId":"getEntityActivityFeed","parameters":[{"in":"path","name":"slug","required":true},{"in":"path","name":"id","required":true},{"in":"query","name":"after"},{"in":"query","name":"before"},{"in":"query","name":"from"},{"in":"query","name":"size"},{"in":"query","name":"type"},{"in":"query","name":"include_relations"}],"responses":{}}},"/v2/portal/{slug}/{id}:validateRule":{"get":{"operationId":"validateCadenceEntityEditRules","parameters":[{"in":"path","name":"slug","required":true},{"in":"path","name":"id","required":true},{"in":"query","name":"attribute"}],"responses":{}}},"/v2/portal/entities-by-payment/{id}":{"get":{"operationId":"searchPaymentRelationsInEntities","parameters":[{"in":"path","name":"id","required":true}],"responses":{}}},"/v2/portal/entity/activity":{"put":{"operationId":"createCustomEntityActivity","parameters":[{"in":"query","name":"entities","deprecated":true,"style":"form"}],"requestBody":{"content":{"application/json":{}}},"responses":{}}},"/v2/portal/entity/file":{"post":{"operationId":"saveEntityFile","requestBody":{"required":true,"content":{"application/json":{}}},"responses":{}},"delete":{"operationId":"deleteEntityFile","requestBody":{"required":true,"content":{"application/json":{}}},"responses":{}}},"/v2/portal/portal/files":{"post":{"operationId":"savePortalFiles","requestBody":{"required":true,"content":{"application/json":{}}},"responses":{}}},"/v2/portal/registration/identifiers":{"get":{"operationId":"getRegistrationIdentifiers","responses":{}}},"/v2/portal/user/files":{"get":{"operationId":"getAllFiles","deprecated":true,"parameters":[{"in":"query","name":"from","required":true},{"in":"query","name":"size","required":true},{"in":"query","name":"entity_ids"},{"in":"query","name":"file_types"}],"responses":{}}},"/v2/portal/user/file/{id}":{"get":{"operationId":"getFileById","deprecated":true,"parameters":[{"in":"path","name":"id","required":true}],"responses":{}}},"/v2/portal/user/file/{id}/downloaded":{"post":{"operationId":"trackFileDownloaded","parameters":[{"in":"path","name":"id","required":true}],"responses":{}}},"/v2/portal/user/files/count-by-entity":{"get":{"operationId":"getFilesCountByEntity","deprecated":true,"responses":{}}},"/v2/portal/billing/events":{"get":{"operationId":"getBillingEvents","parameters":[{"in":"query","name":"from","required":false},{"in":"query","name":"size","required":false},{"name":"entity_id","in":"query","required":false},{"name":"event_type","in":"query"},{"name":"paid","in":"query"},{"name":"date_after","in":"query"},{"name":"date_before","in":"query"},{"name":"sort","in":"query"}],"responses":{}}},"/v2/portal/billing/customers/balance":{"get":{"operationId":"getCustomerBalance","responses":{}}},"/v2/portal/billing/accounts/{id}":{"parameters":[{"in":"path","name":"id","required":true}],"get":{"operationId":"getBillingAccount","responses":{}}},"/v2/portal/admin:login-as-user":{"post":{"operationId":"loginToPortalAsUser","requestBody":{"required":true,"content":{"application/json":{}}},"responses":{}}},"/v2/portal/entity/{schema}/access":{"post":{"operationId":"triggerEntityAccessEvent","parameters":[{"name":"schema","in":"path","required":true},{"name":"entity_id","in":"query","required":false},{"name":"origin","in":"query","required":true}],"responses":{}}},"/v3/portal/entity/{schema}/access":{"post":{"operationId":"triggerEntityAccessEventV3","parameters":[{"name":"schema","in":"path","required":true},{"name":"entity_id","in":"query","required":false},{"name":"portal_id","in":"query","required":false},{"name":"domain","in":"query","required":false}],"responses":{}}},"/v2/portal/entity:get":{"post":{"operationId":"getPortalUserEntity","requestBody":{"content":{"application/json":{}}},"responses":{}}},"/v2/portal/entity:search":{"post":{"operationId":"searchPortalUserEntities","requestBody":{"content":{"application/json":{}}},"responses":{}}},"/v2/portal/entity/{slug}":{"post":{"operationId":"createPortalUserEntity","deprecated":true,"parameters":[{"in":"path","name":"slug","required":true}],"requestBody":{"required":true,"content":{"application/json":{}}},"responses":{}}},"/v2/portal/entity/{slug}/{id}":{"patch":{"operationId":"patchPortalUserEntity","deprecated":true,"parameters":[{"in":"path","name":"slug","required":true},{"in":"path","name":"id","required":true}],"requestBody":{"required":true,"content":{"application/json":{}}},"responses":{}}},"/v2/portal/can-trigger-portal-flow":{"post":{"operationId":"canTriggerPortalFlow","parameters":[{"in":"query","name":"origin","required":false,"deprecated":true},{"in":"query","name":"portal_id","required":true}],"requestBody":{"required":true,"content":{"application/json":{}}},"responses":{}}},"/v2/portal/automation-context":{"get":{"operationId":"getAutomationContext","parameters":[{"in":"query","name":"activity_id","required":true},{"in":"query","name":"type","required":true}],"responses":{}}},"/v2/portal/workflow/{workflow_id}/{step_id}:markDone":{"put":{"operationId":"updateWorkflowStepAsDone","parameters":[{"in":"path","name":"workflow_id","required":true},{"in":"path","name":"step_id","required":true}],"responses":{}}},"/v2/portal/entity/{slug}/{id}/workflows":{"get":{"operationId":"getEntityWorkflows","parameters":[{"in":"path","name":"slug","required":true},{"in":"path","name":"id","required":true}],"responses":{}}},"/v2/portal/metering/reading/photo":{"post":{"operationId":"uploadMeterReadingPhoto","requestBody":{"required":true,"content":{"application/json":{}}},"responses":{}}},"/v2/portal/metering/reading":{"post":{"operationId":"createMeterReading","parameters":[{"name":"override_plausibility","in":"query","required":false}],"requestBody":{"required":true,"content":{"application/json":{}}},"responses":{}}},"/v2/portal/metering/reading/allowed-range/{meter_id}":{"get":{"operationId":"getAllowedMeterReadingRange","parameters":[{"in":"path","name":"meter_id","required":true},{"in":"query","name":"origin","required":false},{"in":"query","name":"timestamp","required":false},{"in":"query","name":"context_entities","required":false}],"responses":{}}},"/v2/portal/metering/readings":{"post":{"operationId":"getMeterReadings","requestBody":{"required":true,"content":{"application/json":{}}},"responses":{}}},"/v2/portal/public/sso/providers/{provider_slug}":{"get":{"operationId":"getSSOProvider","parameters":[{"in":"path","name":"provider_slug","required":true},{"in":"query","name":"org_id","required":false},{"in":"query","name":"origin","required":false},{"in":"query","name":"portal_id","required":false},{"in":"query","name":"domain","required":false}],"responses":{}}},"/v2/portal/public/sso/login":{"post":{"operationId":"ssoLogin","parameters":[{"in":"query","name":"origin","required":true},{"in":"query","name":"org_id","required":true},{"in":"query","name":"contact_id","required":false}],"requestBody":{"content":{"application/json":{}}},"responses":{}}},"/v3/portal/public/sso/login":{"post":{"operationId":"ssoLoginV3","parameters":[{"in":"query","name":"portal_id","required":false},{"in":"query","name":"org_id","required":false},{"in":"query","name":"domain","required":false},{"in":"query","name":"contact_id","required":false}],"requestBody":{"content":{"application/json":{}}},"responses":{}}},"/v2/portal/public/sso/redirect":{"post":{"operationId":"ssoRedirect","parameters":[{"in":"query","name":"web_uri","required":true}],"requestBody":{"required":true,"content":{"multipart/form-data":{}}},"responses":{}}},"/v2/portal/public/sso/callback":{"post":{"operationId":"ssoCallback","parameters":[{"in":"query","name":"domain"}],"requestBody":{"required":true,"content":{"application/json":{}}},"responses":{}}},"/v2/portal/pages/{id}":{"parameters":[{"in":"path","name":"id","required":true}],"get":{"operationId":"getPortalPage","responses":{}},"put":{"operationId":"updatePortalPage","requestBody":{"required":true,"content":{"application/json":{}}},"responses":{}},"delete":{"operationId":"deletePortalPage","responses":{}}},"/v2/portal/pages":{"parameters":[{"in":"query","name":"domain","required":true}],"get":{"operationId":"getPortalPages","parameters":[{"in":"query","name":"fields","required":false},{"in":"query","name":"filter","required":false},{"in":"query","name":"contract_id","required":false,"deprecated":true},{"in":"query","name":"context_entities","required":false}],"responses":{}},"post":{"operationId":"createPortalPage","requestBody":{"required":true,"content":{"application/json":{}}},"responses":{}}},"/v2/portal/public/pages":{"get":{"operationId":"getPublicPages","parameters":[{"in":"query","name":"domain","required":true},{"in":"query","name":"fields","required":false},{"in":"query","name":"filter","required":false}],"responses":{}}},"/v2/portal/pages/interpolate":{"post":{"operationId":"interpolatePortalPages","requestBody":{"required":true,"content":{"application/json":{}}},"responses":{}}},"/v2/portal/config/triggered-journeys/{trigger_name}":{"parameters":[{"in":"path","name":"trigger_name","required":true,"description":"The trigger event for the auto-triggered journey"}],"get":{"operationId":"getTriggeredJourney","parameters":[{"in":"query","name":"context_entities","required":false}],"responses":{}}},"/v2/portal/pages/default":{"get":{"operationId":"getDefaultPages","responses":{}}},"/v2/portal/pages/{id}/blocks":{"parameters":[{"in":"path","name":"id","required":true}],"post":{"operationId":"createPortalPageBlock","requestBody":{"required":true,"content":{"application/json":{}}},"responses":{}},"get":{"operationId":"getPortalPageBlocks","responses":{}}},"/v2/portal/pages/{id}/blocks/{block_id}":{"parameters":[{"in":"path","name":"id","required":true},{"in":"path","name":"block_id","required":true}],"get":{"operationId":"getPortalPageBlock","responses":{}},"put":{"operationId":"updatePortalPageBlock","requestBody":{"required":true,"content":{"application/json":{}}},"responses":{}},"delete":{"operationId":"deletePortalPageBlock","responses":{}}},"/v2/portal/public/user/entry-point":{"get":{"operationId":"getUserEntryPoint","parameters":[{"in":"query","name":"email","required":true},{"in":"query","name":"domain","required":true}],"responses":{}}},"/v2/portal/campaign/{campaign_id}/entity:status":{"put":{"operationId":"updateCampaignPortalBlockStatus","parameters":[{"in":"path","name":"campaign_id","required":true}],"requestBody":{"required":true,"content":{"application/json":{}}},"responses":{}}},"/v2/portal/notifications/entity:status":{"put":{"operationId":"updateNotificationsStatus","requestBody":{"required":true,"content":{"application/json":{}}},"responses":{}}},"/v2/portal/public/m-login/deregister/{client_id}/{user_id}":{"delete":{"operationId":"deRegisterMLoginUser","parameters":[{"in":"path","name":"client_id","required":true},{"in":"path","name":"user_id","required":true}],"responses":{}}},"/v2/portal/public/m-login/notify-interest-change/{client_id}/{user_id}":{"post":{"operationId":"notifyMLoginInterestChange","parameters":[{"in":"path","name":"client_id","required":true},{"in":"path","name":"user_id","required":true}],"requestBody":{"required":true,"content":{"application/json":{}}},"responses":{}}},"/v3/portal/config":{"post":{"operationId":"createPortalConfig","requestBody":{"required":true,"content":{"application/json":{}}},"responses":{}}},"/v3/portal/config/{portal_id}":{"get":{"operationId":"getPortalConfigV3","parameters":[{"in":"path","name":"portal_id","required":true}],"responses":{}},"put":{"operationId":"putPortalConfig","parameters":[{"in":"path","name":"portal_id","required":true},{"in":"query","name":"page_upsert_mode","required":false}],"requestBody":{"required":true,"content":{"application/json":{}}},"responses":{}},"delete":{"operationId":"deletePortalConfig","parameters":[{"in":"path","name":"portal_id","required":true}],"responses":{}}},"/v3/portal/configs":{"get":{"operationId":"listAllPortalConfigs","responses":{}}},"/v3/portal/config/swap":{"post":{"operationId":"swapPortalConfig","requestBody":{"required":true,"content":{"application/json":{}}},"responses":{}}},"/v3/portal/config/clone":{"post":{"operationId":"clonePortalConfig","requestBody":{"required":true,"content":{"application/json":{}}},"responses":{}}},"/v3/portal/partner/invite":{"post":{"operationId":"invitePartner","requestBody":{"required":true,"content":{"application/json":{}}},"responses":{}}},"/v3/portal/partner/list":{"get":{"operationId":"listBusinessPartners","responses":{}}},"/v3/portal/partner/{partner_id}/resend-invitation":{"post":{"operationId":"resendPartnerInvitation","parameters":[{"name":"partner_id","in":"path","required":true}],"responses":{}}},"/v3/portal/partner/{partner_id}/revoke":{"delete":{"operationId":"revokePartner","parameters":[{"name":"partner_id","in":"path","required":true}],"responses":{}}},"/v3/portal/partner/{partner_id}/disable":{"post":{"operationId":"disablePartner","parameters":[{"name":"partner_id","in":"path","required":true}],"responses":{}}},"/v3/portal/partner/{partner_id}/enable":{"post":{"operationId":"enablePartner","parameters":[{"name":"partner_id","in":"path","required":true}],"responses":{}}},"/v3/portal/verify-dns":{"post":{"operationId":"verifyDns","parameters":[{"in":"query","name":"portal_id","required":true}],"responses":{}}},"/v2/portal/proxy/execute":{"post":{"operationId":"portalProxyExecute","requestBody":{"required":true,"content":{"application/json":{}}},"responses":{}}},"/v1/portal/mobile-config":{"get":{"operationId":"getMobileConfig","parameters":[{"in":"query","name":"portal_id","required":true},{"in":"query","name":"raw","required":false}],"responses":{}},"put":{"operationId":"putMobileConfig","parameters":[{"in":"query","name":"portal_id","required":true}],"requestBody":{"required":true,"content":{"application/json":{}}},"responses":{}}}},"components":{"responses":{"InvalidRequest":{"content":{"application/json":{}}},"Unauthorized":{"content":{"application/json":{}}},"Forbidden":{"content":{"application/json":{}}},"ForbiddenByRule":{"content":{"application/json":{}}},"Conflict":{"content":{"application/json":{}}},"ContractAssignmentConflict":{"content":{"application/json":{}}},"NotFound":{"content":{"application/json":{}}},"InternalServerError":{"content":{"application/json":{}}},"ConfirmUserInvalidRequest":{"content":{"application/json":{}}},"InvalidRequestCreateMeterReading":{"content":{"application/json":{}}}}},"servers":[{"url":"https://customer-portal-api.sls.epilot.io"}]}')}},r={},t=function t(a){var n=r[a];if(void 0!==n)return n.exports;var i=r[a]={exports:{}};return e[a].call(i.exports,i,i.exports,t),i.exports}(438),a=exports;for(var n in t)a[n]=t[n];t.__esModule&&Object.defineProperty(a,"__esModule",{value:!0})})();
1
+ (()=>{"use strict";var e={330(e,r,t){var a=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(r,"__esModule",{value:!0});var n=a(t(466));r.default=n.default},466(e){e.exports=JSON.parse('{"openapi":"3.0.3","info":{"title":"","version":""},"paths":{"/v2/portal/portal":{"post":{"operationId":"upsertPortal","parameters":[{"in":"query","name":"origin","required":true},{"in":"query","name":"portal_id","required":false}],"requestBody":{"required":true,"content":{"application/json":{}}},"responses":{}}},"/v2/portal/public/user":{"post":{"operationId":"createUser","deprecated":true,"parameters":[{"in":"query","name":"origin","required":true}],"requestBody":{"required":true,"content":{"application/json":{}}},"responses":{}}},"/v3/portal/public/user":{"post":{"operationId":"createUserV3","parameters":[{"in":"query","name":"portal_id","required":false},{"in":"query","name":"domain","required":false}],"requestBody":{"required":true,"content":{"application/json":{}}},"responses":{}}},"/v2/portal/token/validate":{"post":{"operationId":"validateToken","responses":{}}},"/v2/portal/token/revoke":{"post":{"operationId":"revokeToken","requestBody":{"required":true,"content":{"application/json":{}}},"responses":{}}},"/v2/portal/public/config":{"get":{"operationId":"getPortalConfigByDomain","parameters":[{"in":"query","name":"domain","required":true}],"responses":{}}},"/v2/portal/config":{"get":{"operationId":"getPortalConfig","parameters":[{"in":"query","name":"origin","required":false}],"responses":{}},"delete":{"operationId":"deletePortal","parameters":[{"in":"query","name":"origin","required":true}],"responses":{}}},"/v1/portal/exports":{"post":{"operationId":"createExport","requestBody":{"required":true,"content":{"application/json":{}}},"responses":{}}},"/v1/portal/exports/{jobId}":{"get":{"operationId":"getExport","parameters":[{"in":"path","name":"jobId","required":true}],"responses":{}}},"/v2/portal/extensions":{"get":{"operationId":"getPortalExtensions","parameters":[{"in":"query","name":"origin","required":false}],"responses":{}}},"/v2/portal/public/extensions":{"get":{"operationId":"getPublicPortalExtensionDetails","parameters":[{"in":"query","name":"org_id","required":true},{"in":"query","name":"origin","required":true}],"responses":{}}},"/v3/portal/extensions":{"get":{"operationId":"getPortalExtensionsV3","parameters":[{"in":"query","name":"portal_id","required":true}],"responses":{}}},"/v3/portal/public/extensions":{"get":{"operationId":"getPublicPortalExtensionDetailsV3","parameters":[{"in":"query","name":"org_id","required":false},{"in":"query","name":"portal_id","required":false},{"in":"query","name":"domain","required":false}],"responses":{}}},"/v2/portal/consumption":{"get":{"operationId":"getConsumption","parameters":[{"in":"query","name":"app_id","required":false},{"in":"query","name":"extensionId","required":true},{"in":"query","name":"hookId","required":false},{"in":"query","name":"meter_id","required":false,"deprecated":true},{"in":"query","name":"from","required":true},{"in":"query","name":"to","required":true},{"in":"query","name":"interval","required":true},{"in":"query","name":"context_entities","required":false}],"responses":{}}},"/v2/portal/visualization:export":{"post":{"operationId":"prepareVisualizationExport","requestBody":{"required":true,"content":{"application/json":{}}},"responses":{}}},"/v2/portal/visualization/metadata":{"get":{"operationId":"getVisualizationMetadata","parameters":[{"in":"query","name":"app_id","required":true},{"in":"query","name":"extensionId","required":true},{"in":"query","name":"context_entities","required":false}],"responses":{}}},"/v2/portal/costs":{"get":{"operationId":"getCosts","parameters":[{"in":"query","name":"app_id","required":false},{"in":"query","name":"extensionId","required":true},{"in":"query","name":"hookId","required":false},{"in":"query","name":"meter_id","required":false,"deprecated":true},{"in":"query","name":"from","required":true},{"in":"query","name":"to","required":true},{"in":"query","name":"interval","required":true},{"in":"query","name":"context_entities","required":false}],"responses":{}}},"/v2/portal/prices":{"get":{"operationId":"getPrices","parameters":[{"in":"query","name":"app_id","required":false},{"in":"query","name":"extensionId","required":true},{"in":"query","name":"hookId","required":false},{"in":"query","name":"meter_id","required":false,"deprecated":true},{"in":"query","name":"from","required":true},{"in":"query","name":"to","required":true},{"in":"query","name":"interval","required":true},{"in":"query","name":"context_entities","required":false}],"responses":{}}},"/v2/portal/external-links":{"get":{"operationId":"getExternalLinks","parameters":[{"in":"query","name":"origin","required":false},{"in":"query","name":"contactId","required":false}],"responses":{}}},"/v2/portal/resolve:external-link/{id}":{"get":{"operationId":"getResolvedExternalLink","deprecated":true,"parameters":[{"in":"path","name":"id","required":true},{"in":"query","name":"origin","required":false},{"in":"query","name":"contactId","required":false}],"responses":{}}},"/v3/portal/external-links":{"get":{"operationId":"getExternalLinksV3","parameters":[{"in":"query","name":"portal_id","required":false},{"in":"query","name":"contactId","required":false}],"responses":{}}},"/v3/portal/resolve:external-link/{id}":{"get":{"operationId":"getResolvedExternalLinkV3","deprecated":true,"parameters":[{"in":"path","name":"id","required":true},{"in":"query","name":"portal_id","required":false},{"in":"query","name":"contactId","required":false}],"responses":{}}},"/v2/portal/resolve:seamless-link":{"get":{"operationId":"getResolvedSeamlessLink","parameters":[{"in":"query","name":"app_id","required":false},{"in":"query","name":"extension_id","required":true},{"in":"query","name":"link_id","required":true},{"in":"query","name":"context_entities","required":false}],"responses":{}}},"/v2/portal/public/portal/config":{"get":{"operationId":"getPublicPortalConfig","parameters":[{"in":"query","name":"org_id","required":true},{"in":"query","name":"origin","required":true}],"responses":{}}},"/v2/portal/org/portal/config":{"get":{"operationId":"getOrgPortalConfig","parameters":[{"in":"query","name":"origin","required":true}],"responses":{}}},"/v3/portal/public/portal/config":{"get":{"operationId":"getPublicPortalConfigV3","parameters":[{"in":"query","name":"org_id","required":true},{"in":"query","name":"portal_id","required":true}],"responses":{}}},"/v3/portal/org/portal/config":{"get":{"operationId":"getOrgPortalConfigV3","parameters":[{"in":"query","name":"portal_id","required":true}],"responses":{}}},"/v2/portal/configs":{"get":{"operationId":"getAllPortalConfigs","responses":{}}},"/v2/portal/email-templates":{"post":{"operationId":"upsertEmailTemplates","parameters":[{"in":"query","name":"origin","required":true}],"requestBody":{"required":true,"content":{"application/json":{}}},"responses":{}},"get":{"operationId":"getEmailTemplates","parameters":[{"in":"query","name":"origin","required":true}],"responses":{}}},"/v3/portal/email-templates:migrate-references":{"post":{"operationId":"migrateEmailTemplateReferences","requestBody":{"required":true,"content":{"application/json":{}}},"responses":{}}},"/v3/portal/email-templates:list-references":{"post":{"operationId":"listEmailTemplateReferences","requestBody":{"required":true,"content":{"application/json":{}}},"responses":{}}},"/v3/portal/email-templates/{portal_id}":{"post":{"operationId":"upsertEmailTemplatesByPortalId","parameters":[{"in":"path","name":"portal_id","required":true}],"requestBody":{"required":true,"content":{"application/json":{}}},"responses":{}},"get":{"operationId":"getEmailTemplatesByPortalId","parameters":[{"in":"path","name":"portal_id","required":true}],"responses":{}}},"/v2/portal/public-widgets":{"get":{"operationId":"getPublicPortalWidgets","deprecated":true,"parameters":[{"in":"query","name":"org_id","required":true},{"in":"query","name":"origin","required":true}],"responses":{}}},"/v3/portal/public/widgets":{"get":{"operationId":"getPublicPortalWidgetsV3","parameters":[{"in":"query","name":"org_id","required":false},{"in":"query","name":"portal_id","required":false},{"in":"query","name":"domain","required":false}],"responses":{}}},"/v2/portal/widgets":{"post":{"operationId":"upsertPortalWidget","deprecated":true,"parameters":[{"in":"query","name":"origin","required":true}],"requestBody":{"required":true,"content":{"application/json":{}}},"responses":{}},"get":{"operationId":"getPortalWidgets","deprecated":true,"parameters":[{"in":"query","name":"origin","required":false},{"in":"query","name":"contract_id","required":false}],"responses":{}}},"/v3/portal/widgets":{"get":{"operationId":"getPortalWidgetsV3","parameters":[{"in":"query","name":"portal_id","required":true},{"in":"query","name":"contract_id","required":false}],"responses":{}},"post":{"operationId":"upsertPortalWidgetV3","parameters":[{"in":"query","name":"portal_id","required":true}],"requestBody":{"required":true,"content":{"application/json":{}}},"responses":{}}},"/v3/portal/portal/files":{"post":{"operationId":"savePortalFilesV3","parameters":[{"in":"query","name":"portal_id","required":true}],"requestBody":{"required":true,"content":{"application/json":{}}},"responses":{}}},"/v2/portal/replace-ecp-template-variables":{"post":{"operationId":"replaceECPTemplateVariables","requestBody":{"content":{"application/json":{}}},"responses":{}}},"/v2/portal/org/settings":{"get":{"operationId":"getOrganizationSettings","deprecated":true,"responses":{}}},"/v2/portal/schemas":{"get":{"operationId":"getSchemas","responses":{}}},"/v2/portal/public/schemas":{"get":{"operationId":"getSchemasByDomain","parameters":[{"in":"query","name":"domain","required":true}],"responses":{}}},"/v3/portal/public/schemas":{"get":{"operationId":"getPublicSchemasV3","parameters":[{"in":"query","name":"org_id","required":false},{"in":"query","name":"portal_id","required":false},{"in":"query","name":"domain","required":false}],"responses":{}}},"/v2/portal/public/org/settings":{"get":{"operationId":"getOrganizationSettingsByDomain","parameters":[{"in":"query","name":"domain","required":true}],"responses":{}}},"/v2/portal/extra-permission-attributes":{"get":{"operationId":"extraPermissionAttributes","responses":{}}},"/v2/portal/validate/caa-records":{"post":{"operationId":"validateCaaRecords","parameters":[{"in":"query","name":"origin","required":true}],"responses":{}}},"/v3/portal/validate/caa-records":{"post":{"operationId":"validateCaaRecordsV3","parameters":[{"in":"query","name":"portal_id","required":true}],"responses":{}}},"/v2/portal/contact":{"get":{"operationId":"getContact","responses":{}},"patch":{"operationId":"updateContact","deprecated":true,"requestBody":{"content":{"application/json":{}}},"responses":{}}},"/v2/portal/ecp/contact":{"get":{"operationId":"getECPContact","parameters":[{"in":"query","name":"id","required":true}],"responses":{}}},"/v2/portal/public/contact/exists":{"post":{"operationId":"checkContactExists","parameters":[{"in":"query","name":"origin","required":true}],"requestBody":{"required":true,"content":{"application/json":{}}},"responses":{}}},"/v3/portal/public/contact/exists":{"post":{"operationId":"checkContactExistsV3","parameters":[{"in":"query","name":"portal_id","required":false},{"in":"query","name":"domain","required":false}],"requestBody":{"required":true,"content":{"application/json":{}}},"responses":{}}},"/v3/portal/public/account/exists":{"post":{"operationId":"checkAccountExists","parameters":[{"in":"query","name":"portal_id","required":false},{"in":"query","name":"domain","required":false}],"requestBody":{"required":true,"content":{"application/json":{}}},"responses":{}}},"/v2/portal/contact/valid/secondary/attributes":{"get":{"operationId":"getValidSecondaryAttributes","responses":{}}},"/v2/portal/user":{"get":{"operationId":"getPortalUser","responses":{}},"patch":{"operationId":"updatePortalUser","requestBody":{"content":{"application/json":{}}},"responses":{}},"delete":{"operationId":"deletePortalUser","responses":{}}},"/v2/portal/user/update/email":{"put":{"operationId":"updatePortalUserEmail","requestBody":{"required":true,"content":{"application/json":{}}},"responses":{}}},"/v2/portal/user/change/password":{"put":{"operationId":"changePortalUserPassword","requestBody":{"required":false,"content":{"application/json":{}}},"responses":{}}},"/v2/portal/user/resend/confirmation-email/{id}":{"post":{"operationId":"resendConfirmationEmail","parameters":[{"in":"path","name":"id","required":true}],"responses":{}}},"/v2/portal/users/by-related-entity":{"get":{"operationId":"fetchPortalUsersByRelatedEntity","parameters":[{"in":"query","name":"entity_id","required":true},{"in":"query","name":"slug","required":true}],"responses":{}}},"/v2/portal/user/confirm":{"get":{"operationId":"confirmUser","parameters":[{"in":"query","name":"confirmation_link_token","required":true},{"in":"query","name":"use_redirect","required":false}],"responses":{}}},"/v2/portal/user/confirm/{id}":{"get":{"operationId":"confirmUserWithUserId","parameters":[{"in":"query","name":"origin","required":true},{"in":"path","name":"id","required":true},{"in":"query","name":"org_id","required":true}],"responses":{}}},"/v2/portal/public/user/exists":{"get":{"operationId":"userExists","parameters":[{"in":"query","name":"email","required":true},{"in":"query","name":"org_id","required":true},{"in":"query","name":"origin","required":false}],"responses":{}}},"/v3/portal/public/user/exists":{"get":{"operationId":"userExistsV3","parameters":[{"in":"query","name":"email","required":true},{"in":"query","name":"org_id","required":false},{"in":"query","name":"portal_id","required":false},{"in":"query","name":"domain","required":false}],"responses":{}}},"/v2/portal/recipients-to-notify":{"post":{"operationId":"getRecipientsToNotifyOnAutomation","requestBody":{"content":{"application/json":{}}},"responses":{}}},"/v2/portal/configure-distribution":{"get":{"operationId":"configureDistribution","parameters":[{"in":"query","name":"origin","required":true}],"responses":{}}},"/v3/portal/configure-distribution":{"get":{"operationId":"configureDistributionV3","parameters":[{"in":"query","name":"portal_id","required":true}],"responses":{}}},"/v2/portal/order":{"get":{"operationId":"getAllOrders","deprecated":true,"parameters":[{"in":"query","name":"from","required":false},{"in":"query","name":"size","required":false}],"responses":{}}},"/v2/portal/order/{id}/acceptance":{"post":{"operationId":"postOrderAcceptance","parameters":[{"in":"path","name":"id","required":true}],"requestBody":{"content":{"application/json":{}}},"responses":{}}},"/v2/portal/order/{id}":{"get":{"operationId":"getOrder","deprecated":true,"parameters":[{"in":"path","name":"id","required":true}],"responses":{}},"patch":{"operationId":"updateOrder","deprecated":true,"parameters":[{"in":"path","name":"id","required":true}],"requestBody":{"content":{"application/json":{}}},"responses":{}}},"/v2/portal/opportunity":{"get":{"operationId":"getAllOpportunities","deprecated":true,"parameters":[{"in":"query","name":"from","required":false},{"in":"query","name":"size","required":false}],"responses":{}}},"/v2/portal/opportunities/searchable-attributes":{"get":{"operationId":"getSearchableAttributesForOpportunities","deprecated":true,"parameters":[{"in":"query","name":"from","required":false},{"in":"query","name":"size","required":false}],"responses":{}}},"/v2/portal/opportunities/search":{"post":{"operationId":"getSearchResultsForOpportunities","deprecated":true,"parameters":[{"in":"query","name":"from","required":false},{"in":"query","name":"size","required":false}],"requestBody":{"required":true,"content":{"application/json":{}}},"responses":{}}},"/v2/portal/opportunities/{id}":{"get":{"operationId":"getOpportunity","deprecated":true,"parameters":[{"in":"path","name":"id","required":true}],"responses":{}},"patch":{"operationId":"updateOpportunity","deprecated":true,"parameters":[{"in":"path","name":"id","required":true}],"requestBody":{"required":true,"content":{"application/json":{}}},"responses":{}}},"/v2/portal/request":{"get":{"operationId":"getAllRequests","deprecated":true,"parameters":[{"in":"query","name":"from","required":false},{"in":"query","name":"size","required":false}],"responses":{}}},"/v2/portal/contract":{"get":{"operationId":"getAllContracts","deprecated":true,"parameters":[{"in":"query","name":"from","required":false},{"in":"query","name":"size","required":false}],"responses":{}}},"/v2/portal/contract/{id}":{"get":{"operationId":"getContract","deprecated":true,"parameters":[{"in":"path","name":"id","required":true}],"responses":{}},"patch":{"operationId":"updateContract","deprecated":true,"parameters":[{"in":"path","name":"id","required":true}],"requestBody":{"required":true,"content":{"application/json":{}}},"responses":{}}},"/v2/portal/contract/{id}/resolve-templates":{"post":{"operationId":"getContractWithTemplates","parameters":[{"in":"path","name":"id","required":true}],"requestBody":{"required":false,"content":{"application/json":{}}},"responses":{}}},"/v2/portal/contract/by-identifiers":{"post":{"operationId":"addContractByIdentifiers","requestBody":{"required":true,"content":{"application/json":{}}},"responses":{}}},"/v2/portal/entity/identifiers/{slug}":{"get":{"operationId":"getEntityIdentifiers","parameters":[{"in":"path","name":"slug","required":true}],"responses":{}}},"/v2/portal/entity/{slug}/{id}/activity":{"get":{"operationId":"getEntityActivityFeed","parameters":[{"in":"path","name":"slug","required":true},{"in":"path","name":"id","required":true},{"in":"query","name":"after"},{"in":"query","name":"before"},{"in":"query","name":"from"},{"in":"query","name":"size"},{"in":"query","name":"type"},{"in":"query","name":"include_relations"}],"responses":{}}},"/v2/portal/{slug}/{id}:validateRule":{"get":{"operationId":"validateCadenceEntityEditRules","parameters":[{"in":"path","name":"slug","required":true},{"in":"path","name":"id","required":true},{"in":"query","name":"attribute"}],"responses":{}}},"/v2/portal/entities-by-payment/{id}":{"get":{"operationId":"searchPaymentRelationsInEntities","parameters":[{"in":"path","name":"id","required":true}],"responses":{}}},"/v2/portal/entity/activity":{"put":{"operationId":"createCustomEntityActivity","parameters":[{"in":"query","name":"entities","deprecated":true,"style":"form"}],"requestBody":{"content":{"application/json":{}}},"responses":{}}},"/v2/portal/entity/file":{"post":{"operationId":"saveEntityFile","requestBody":{"required":true,"content":{"application/json":{}}},"responses":{}},"delete":{"operationId":"deleteEntityFile","requestBody":{"required":true,"content":{"application/json":{}}},"responses":{}}},"/v2/portal/portal/files":{"post":{"operationId":"savePortalFiles","requestBody":{"required":true,"content":{"application/json":{}}},"responses":{}}},"/v2/portal/registration/identifiers":{"get":{"operationId":"getRegistrationIdentifiers","responses":{}}},"/v2/portal/user/files":{"get":{"operationId":"getAllFiles","deprecated":true,"parameters":[{"in":"query","name":"from","required":true},{"in":"query","name":"size","required":true},{"in":"query","name":"entity_ids"},{"in":"query","name":"file_types"}],"responses":{}}},"/v2/portal/user/file/{id}":{"get":{"operationId":"getFileById","deprecated":true,"parameters":[{"in":"path","name":"id","required":true}],"responses":{}}},"/v2/portal/user/file/{id}/downloaded":{"post":{"operationId":"trackFileDownloaded","parameters":[{"in":"path","name":"id","required":true}],"responses":{}}},"/v2/portal/user/files/count-by-entity":{"get":{"operationId":"getFilesCountByEntity","deprecated":true,"responses":{}}},"/v2/portal/billing/events":{"get":{"operationId":"getBillingEvents","parameters":[{"in":"query","name":"from","required":false},{"in":"query","name":"size","required":false},{"name":"entity_id","in":"query","required":false},{"name":"event_type","in":"query"},{"name":"paid","in":"query"},{"name":"date_after","in":"query"},{"name":"date_before","in":"query"},{"name":"sort","in":"query"}],"responses":{}}},"/v2/portal/billing/customers/balance":{"get":{"operationId":"getCustomerBalance","responses":{}}},"/v2/portal/billing/accounts/{id}":{"parameters":[{"in":"path","name":"id","required":true}],"get":{"operationId":"getBillingAccount","responses":{}}},"/v2/portal/admin:login-as-user":{"post":{"operationId":"loginToPortalAsUser","requestBody":{"required":true,"content":{"application/json":{}}},"responses":{}}},"/v2/portal/entity/{schema}/access":{"post":{"operationId":"triggerEntityAccessEvent","parameters":[{"name":"schema","in":"path","required":true},{"name":"entity_id","in":"query","required":false},{"name":"origin","in":"query","required":true}],"responses":{}}},"/v3/portal/entity/{schema}/access":{"post":{"operationId":"triggerEntityAccessEventV3","parameters":[{"name":"schema","in":"path","required":true},{"name":"entity_id","in":"query","required":false},{"name":"portal_id","in":"query","required":false},{"name":"domain","in":"query","required":false}],"responses":{}}},"/v2/portal/entity:get":{"post":{"operationId":"getPortalUserEntity","requestBody":{"content":{"application/json":{}}},"responses":{}}},"/v2/portal/entity:search":{"post":{"operationId":"searchPortalUserEntities","requestBody":{"content":{"application/json":{}}},"responses":{}}},"/v2/portal/entity/{slug}":{"post":{"operationId":"createPortalUserEntity","deprecated":true,"parameters":[{"in":"path","name":"slug","required":true}],"requestBody":{"required":true,"content":{"application/json":{}}},"responses":{}}},"/v2/portal/entity/{slug}/{id}":{"patch":{"operationId":"patchPortalUserEntity","deprecated":true,"parameters":[{"in":"path","name":"slug","required":true},{"in":"path","name":"id","required":true}],"requestBody":{"required":true,"content":{"application/json":{}}},"responses":{}}},"/v2/portal/can-trigger-portal-flow":{"post":{"operationId":"canTriggerPortalFlow","parameters":[{"in":"query","name":"origin","required":false,"deprecated":true},{"in":"query","name":"portal_id","required":true}],"requestBody":{"required":true,"content":{"application/json":{}}},"responses":{}}},"/v2/portal/automation-context":{"get":{"operationId":"getAutomationContext","parameters":[{"in":"query","name":"activity_id","required":true},{"in":"query","name":"type","required":true}],"responses":{}}},"/v2/portal/workflow/{workflow_id}/{step_id}:markDone":{"put":{"operationId":"updateWorkflowStepAsDone","parameters":[{"in":"path","name":"workflow_id","required":true},{"in":"path","name":"step_id","required":true}],"responses":{}}},"/v2/portal/entity/{slug}/{id}/workflows":{"get":{"operationId":"getEntityWorkflows","parameters":[{"in":"path","name":"slug","required":true},{"in":"path","name":"id","required":true}],"responses":{}}},"/v2/portal/entity/{slug}/{id}/workflows/linearized":{"get":{"operationId":"getEntityPortalWorkflows","parameters":[{"in":"path","name":"slug","required":true},{"in":"path","name":"id","required":true}],"responses":{}}},"/v2/portal/metering/reading/photo":{"post":{"operationId":"uploadMeterReadingPhoto","requestBody":{"required":true,"content":{"application/json":{}}},"responses":{}}},"/v2/portal/metering/reading":{"post":{"operationId":"createMeterReading","parameters":[{"name":"override_plausibility","in":"query","required":false}],"requestBody":{"required":true,"content":{"application/json":{}}},"responses":{}}},"/v2/portal/metering/reading/allowed-range/{meter_id}":{"get":{"operationId":"getAllowedMeterReadingRange","parameters":[{"in":"path","name":"meter_id","required":true},{"in":"query","name":"origin","required":false},{"in":"query","name":"timestamp","required":false},{"in":"query","name":"context_entities","required":false}],"responses":{}}},"/v2/portal/metering/readings":{"post":{"operationId":"getMeterReadings","requestBody":{"required":true,"content":{"application/json":{}}},"responses":{}}},"/v2/portal/public/sso/providers/{provider_slug}":{"get":{"operationId":"getSSOProvider","parameters":[{"in":"path","name":"provider_slug","required":true},{"in":"query","name":"org_id","required":false},{"in":"query","name":"origin","required":false},{"in":"query","name":"portal_id","required":false},{"in":"query","name":"domain","required":false}],"responses":{}}},"/v2/portal/public/sso/login":{"post":{"operationId":"ssoLogin","parameters":[{"in":"query","name":"origin","required":true},{"in":"query","name":"org_id","required":true},{"in":"query","name":"contact_id","required":false}],"requestBody":{"content":{"application/json":{}}},"responses":{}}},"/v3/portal/public/sso/login":{"post":{"operationId":"ssoLoginV3","parameters":[{"in":"query","name":"portal_id","required":false},{"in":"query","name":"org_id","required":false},{"in":"query","name":"domain","required":false},{"in":"query","name":"contact_id","required":false}],"requestBody":{"content":{"application/json":{}}},"responses":{}}},"/v2/portal/public/sso/redirect":{"post":{"operationId":"ssoRedirect","parameters":[{"in":"query","name":"web_uri","required":true}],"requestBody":{"required":true,"content":{"multipart/form-data":{}}},"responses":{}}},"/v2/portal/public/sso/callback":{"post":{"operationId":"ssoCallback","parameters":[{"in":"query","name":"domain"}],"requestBody":{"required":true,"content":{"application/json":{}}},"responses":{}}},"/v2/portal/pages/{id}":{"parameters":[{"in":"path","name":"id","required":true}],"get":{"operationId":"getPortalPage","responses":{}},"put":{"operationId":"updatePortalPage","requestBody":{"required":true,"content":{"application/json":{}}},"responses":{}},"delete":{"operationId":"deletePortalPage","responses":{}}},"/v2/portal/pages":{"parameters":[{"in":"query","name":"domain","required":true}],"get":{"operationId":"getPortalPages","parameters":[{"in":"query","name":"fields","required":false},{"in":"query","name":"filter","required":false},{"in":"query","name":"contract_id","required":false,"deprecated":true},{"in":"query","name":"context_entities","required":false}],"responses":{}},"post":{"operationId":"createPortalPage","requestBody":{"required":true,"content":{"application/json":{}}},"responses":{}}},"/v2/portal/public/pages":{"get":{"operationId":"getPublicPages","parameters":[{"in":"query","name":"domain","required":true},{"in":"query","name":"fields","required":false},{"in":"query","name":"filter","required":false}],"responses":{}}},"/v2/portal/pages/interpolate":{"post":{"operationId":"interpolatePortalPages","requestBody":{"required":true,"content":{"application/json":{}}},"responses":{}}},"/v2/portal/config/triggered-journeys/{trigger_name}":{"parameters":[{"in":"path","name":"trigger_name","required":true,"description":"The trigger event for the auto-triggered journey"}],"get":{"operationId":"getTriggeredJourney","parameters":[{"in":"query","name":"context_entities","required":false}],"responses":{}}},"/v2/portal/pages/default":{"get":{"operationId":"getDefaultPages","responses":{}}},"/v2/portal/pages/{id}/blocks":{"parameters":[{"in":"path","name":"id","required":true}],"post":{"operationId":"createPortalPageBlock","requestBody":{"required":true,"content":{"application/json":{}}},"responses":{}},"get":{"operationId":"getPortalPageBlocks","responses":{}}},"/v2/portal/pages/{id}/blocks/{block_id}":{"parameters":[{"in":"path","name":"id","required":true},{"in":"path","name":"block_id","required":true}],"get":{"operationId":"getPortalPageBlock","responses":{}},"put":{"operationId":"updatePortalPageBlock","requestBody":{"required":true,"content":{"application/json":{}}},"responses":{}},"delete":{"operationId":"deletePortalPageBlock","responses":{}}},"/v2/portal/public/user/entry-point":{"get":{"operationId":"getUserEntryPoint","parameters":[{"in":"query","name":"email","required":true},{"in":"query","name":"domain","required":true}],"responses":{}}},"/v2/portal/campaign/{campaign_id}/entity:status":{"put":{"operationId":"updateCampaignPortalBlockStatus","parameters":[{"in":"path","name":"campaign_id","required":true}],"requestBody":{"required":true,"content":{"application/json":{}}},"responses":{}}},"/v2/portal/notifications/entity:status":{"put":{"operationId":"updateNotificationsStatus","requestBody":{"required":true,"content":{"application/json":{}}},"responses":{}}},"/v2/portal/public/m-login/deregister/{client_id}/{user_id}":{"delete":{"operationId":"deRegisterMLoginUser","parameters":[{"in":"path","name":"client_id","required":true},{"in":"path","name":"user_id","required":true}],"responses":{}}},"/v2/portal/public/m-login/notify-interest-change/{client_id}/{user_id}":{"post":{"operationId":"notifyMLoginInterestChange","parameters":[{"in":"path","name":"client_id","required":true},{"in":"path","name":"user_id","required":true}],"requestBody":{"required":true,"content":{"application/json":{}}},"responses":{}}},"/v3/portal/config":{"post":{"operationId":"createPortalConfig","requestBody":{"required":true,"content":{"application/json":{}}},"responses":{}}},"/v3/portal/config/{portal_id}":{"get":{"operationId":"getPortalConfigV3","parameters":[{"in":"path","name":"portal_id","required":true}],"responses":{}},"put":{"operationId":"putPortalConfig","parameters":[{"in":"path","name":"portal_id","required":true},{"in":"query","name":"page_upsert_mode","required":false}],"requestBody":{"required":true,"content":{"application/json":{}}},"responses":{}},"delete":{"operationId":"deletePortalConfig","parameters":[{"in":"path","name":"portal_id","required":true}],"responses":{}}},"/v3/portal/configs":{"get":{"operationId":"listAllPortalConfigs","responses":{}}},"/v3/portal/config/swap":{"post":{"operationId":"swapPortalConfig","requestBody":{"required":true,"content":{"application/json":{}}},"responses":{}}},"/v3/portal/config/clone":{"post":{"operationId":"clonePortalConfig","requestBody":{"required":true,"content":{"application/json":{}}},"responses":{}}},"/v3/portal/partner/invite":{"post":{"operationId":"invitePartner","requestBody":{"required":true,"content":{"application/json":{}}},"responses":{}}},"/v3/portal/partner/list":{"get":{"operationId":"listBusinessPartners","responses":{}}},"/v3/portal/partner/{partner_id}/resend-invitation":{"post":{"operationId":"resendPartnerInvitation","parameters":[{"name":"partner_id","in":"path","required":true}],"responses":{}}},"/v3/portal/partner/{partner_id}/revoke":{"delete":{"operationId":"revokePartner","parameters":[{"name":"partner_id","in":"path","required":true}],"responses":{}}},"/v3/portal/partner/{partner_id}/disable":{"post":{"operationId":"disablePartner","parameters":[{"name":"partner_id","in":"path","required":true}],"responses":{}}},"/v3/portal/partner/{partner_id}/enable":{"post":{"operationId":"enablePartner","parameters":[{"name":"partner_id","in":"path","required":true}],"responses":{}}},"/v3/portal/verify-dns":{"post":{"operationId":"verifyDns","parameters":[{"in":"query","name":"portal_id","required":true}],"responses":{}}},"/v2/portal/proxy/execute":{"post":{"operationId":"portalProxyExecute","requestBody":{"required":true,"content":{"application/json":{}}},"responses":{}}},"/v1/portal/mobile-config":{"get":{"operationId":"getMobileConfig","parameters":[{"in":"query","name":"portal_id","required":true},{"in":"query","name":"raw","required":false}],"responses":{}},"put":{"operationId":"putMobileConfig","parameters":[{"in":"query","name":"portal_id","required":true}],"requestBody":{"required":true,"content":{"application/json":{}}},"responses":{}}}},"components":{"responses":{"InvalidRequest":{"content":{"application/json":{}}},"Unauthorized":{"content":{"application/json":{}}},"Forbidden":{"content":{"application/json":{}}},"ForbiddenByRule":{"content":{"application/json":{}}},"Conflict":{"content":{"application/json":{}}},"ContractAssignmentConflict":{"content":{"application/json":{}}},"NotFound":{"content":{"application/json":{}}},"InternalServerError":{"content":{"application/json":{}}},"ConfirmUserInvalidRequest":{"content":{"application/json":{}}},"InvalidRequestCreateMeterReading":{"content":{"application/json":{}}}}},"servers":[{"url":"https://customer-portal-api.sls.epilot.io"}]}')}},r={},t=function t(a){var n=r[a];if(void 0!==n)return n.exports;var i=r[a]={exports:{}};return e[a].call(i.exports,i,i.exports,t),i.exports}(330),a=exports;for(var n in t)a[n]=t[n];t.__esModule&&Object.defineProperty(a,"__esModule",{value:!0})})();
@@ -1954,6 +1954,24 @@
1954
1954
  "responses": {}
1955
1955
  }
1956
1956
  },
1957
+ "/v2/portal/entity/{slug}/{id}/workflows/linearized": {
1958
+ "get": {
1959
+ "operationId": "getEntityPortalWorkflows",
1960
+ "parameters": [
1961
+ {
1962
+ "in": "path",
1963
+ "name": "slug",
1964
+ "required": true
1965
+ },
1966
+ {
1967
+ "in": "path",
1968
+ "name": "id",
1969
+ "required": true
1970
+ }
1971
+ ],
1972
+ "responses": {}
1973
+ }
1974
+ },
1957
1975
  "/v2/portal/metering/reading/photo": {
1958
1976
  "post": {
1959
1977
  "operationId": "uploadMeterReadingPhoto",
package/dist/openapi.d.ts CHANGED
@@ -1051,7 +1051,7 @@ declare namespace Components {
1051
1051
  * example:
1052
1052
  * office-365-login
1053
1053
  */
1054
- ProviderSlug /* [0-9a-z-]+ */[];
1054
+ ProviderSlug /* [0-9a-z_-]+ */[];
1055
1055
  /**
1056
1056
  * Decide whether to automatically redirect to the provider page during login, which would completely bypass showing the portal authentication page.
1057
1057
  */
@@ -1578,7 +1578,7 @@ declare namespace Components {
1578
1578
  * example:
1579
1579
  * office-365-login
1580
1580
  */
1581
- ProviderSlug /* [0-9a-z-]+ */[];
1581
+ ProviderSlug /* [0-9a-z_-]+ */[];
1582
1582
  /**
1583
1583
  * Decide whether to automatically redirect to the provider page during login, which would completely bypass showing the portal authentication page.
1584
1584
  */
@@ -3506,7 +3506,11 @@ declare namespace Components {
3506
3506
  *
3507
3507
  */
3508
3508
  ExtensionHookVisualizationMetadata | /**
3509
- * Hook that replaces the built-in change email functionality for portal users. When configured, the portal does not change the user's login email itself. Instead, this hook makes an HTTP call to the third-party system, which is expected to handle the email change (most likely by sending the user instructions to confirm the new email address).
3509
+ * Hook that replaces the built-in change email functionality for portal users. When configured, the portal does not run its own change email flow. Instead, this hook makes an HTTP call to the third-party system, which is expected to handle the email change.
3510
+ * The `change_mode` controls what the portal does after the call:
3511
+ * - `asynchronous`: The third-party system takes the email change over entirely (most likely by sending the user instructions to confirm the new email address). The portal does not change the login email itself.
3512
+ * - `synchronous`: The third-party system applies the email change immediately. The portal waits for a successful (2xx) response and then also changes the portal user's login email right away, without sending a confirmation email. The user has to sign in again with the new email address afterwards.
3513
+ *
3510
3514
  * The expected response http status code to the call is:
3511
3515
  * - 2xx if the request was accepted
3512
3516
  * - non-2xx if the request failed (optionally with a human-readable message resolved via `resolved.error_message_path`)
@@ -3525,6 +3529,8 @@ declare namespace Components {
3525
3529
  * - `synchronous`: The third-party system deletes the user immediately. The portal waits for a successful (2xx) response and then also deletes the epilot user.
3526
3530
  * - `asynchronous`: The third-party system handles deletion out-of-band. The portal does not delete anything immediately; cleanup is expected to happen later (e.g. via the user deletion API or webhooks).
3527
3531
  *
3532
+ * The optional `delete_contact` additionally deletes the contact related to the portal user, once the portal user itself was deleted (`synchronous` mode only).
3533
+ *
3528
3534
  * The expected response http status code to the call is:
3529
3535
  * - 2xx if the request was accepted
3530
3536
  * - non-2xx if the request failed (optionally with a human-readable message resolved via `resolved.error_message_path`)
@@ -3597,7 +3603,11 @@ declare namespace Components {
3597
3603
  id?: string;
3598
3604
  }
3599
3605
  /**
3600
- * Hook that replaces the built-in change email functionality for portal users. When configured, the portal does not change the user's login email itself. Instead, this hook makes an HTTP call to the third-party system, which is expected to handle the email change (most likely by sending the user instructions to confirm the new email address).
3606
+ * Hook that replaces the built-in change email functionality for portal users. When configured, the portal does not run its own change email flow. Instead, this hook makes an HTTP call to the third-party system, which is expected to handle the email change.
3607
+ * The `change_mode` controls what the portal does after the call:
3608
+ * - `asynchronous`: The third-party system takes the email change over entirely (most likely by sending the user instructions to confirm the new email address). The portal does not change the login email itself.
3609
+ * - `synchronous`: The third-party system applies the email change immediately. The portal waits for a successful (2xx) response and then also changes the portal user's login email right away, without sending a confirmation email. The user has to sign in again with the new email address afterwards.
3610
+ *
3601
3611
  * The expected response http status code to the call is:
3602
3612
  * - 2xx if the request was accepted
3603
3613
  * - non-2xx if the request failed (optionally with a human-readable message resolved via `resolved.error_message_path`)
@@ -3606,7 +3616,12 @@ declare namespace Components {
3606
3616
  export interface ExtensionHookChangeEmail {
3607
3617
  type: "changeEmail";
3608
3618
  /**
3609
- * Whether the portal user must confirm their current password before the change email request is handed over to the third-party system. When true, the portal collects and verifies the current password before calling the hook.
3619
+ * Controls how the email change is handled once the third-party system accepted it. `asynchronous` hands the email change over entirely to the third-party system and the portal does not change the login email itself. `synchronous` waits for the third-party system to respond and then changes the portal user's login email immediately, without a confirmation email.
3620
+ *
3621
+ */
3622
+ change_mode?: "synchronous" | "asynchronous";
3623
+ /**
3624
+ * Whether the portal user must confirm their current password before the change email request is handed over to the third-party system. When true, the portal collects and verifies the current password before calling the hook. Skipped for portal users whose identity is managed by an identity provider: an SSO login has no password to confirm. When no password is confirmed and `change_mode` is `synchronous`, the re-created login gets a random password and the portal user signs in through their identity provider, or sets a new password via the email code flow.
3610
3625
  *
3611
3626
  */
3612
3627
  require_password_confirmation?: boolean;
@@ -4015,6 +4030,8 @@ declare namespace Components {
4015
4030
  * - `synchronous`: The third-party system deletes the user immediately. The portal waits for a successful (2xx) response and then also deletes the epilot user.
4016
4031
  * - `asynchronous`: The third-party system handles deletion out-of-band. The portal does not delete anything immediately; cleanup is expected to happen later (e.g. via the user deletion API or webhooks).
4017
4032
  *
4033
+ * The optional `delete_contact` additionally deletes the contact related to the portal user, once the portal user itself was deleted (`synchronous` mode only).
4034
+ *
4018
4035
  * The expected response http status code to the call is:
4019
4036
  * - 2xx if the request was accepted
4020
4037
  * - non-2xx if the request failed (optionally with a human-readable message resolved via `resolved.error_message_path`)
@@ -4027,6 +4044,11 @@ declare namespace Components {
4027
4044
  *
4028
4045
  */
4029
4046
  deletion_mode?: "synchronous" | "asynchronous";
4047
+ /**
4048
+ * Opt-in deletion of the contact related to the portal user, applied after the portal user itself was deleted. `none` (default) leaves the contact untouched. `soft` deletes the contact, so it can still be restored from the trash. `hard` permanently purges the contact. Only applied in `synchronous` deletion mode, as `asynchronous` mode hands the cleanup over to the third-party system.
4049
+ *
4050
+ */
4051
+ delete_contact?: "none" | "soft" | "hard";
4030
4052
  /**
4031
4053
  * Optional explanation shown to the user in the delete account confirmation dialog.
4032
4054
  */
@@ -6063,7 +6085,7 @@ declare namespace Components {
6063
6085
  * example:
6064
6086
  * office-365-login
6065
6087
  */
6066
- ProviderSlug /* [0-9a-z-]+ */[];
6088
+ ProviderSlug /* [0-9a-z_-]+ */[];
6067
6089
  /**
6068
6090
  * Decide whether to automatically redirect to the provider page during login, which would completely bypass showing the portal authentication page.
6069
6091
  */
@@ -6682,7 +6704,7 @@ declare namespace Components {
6682
6704
  * example:
6683
6705
  * office-365-login
6684
6706
  */
6685
- ProviderSlug /* [0-9a-z-]+ */[];
6707
+ ProviderSlug /* [0-9a-z_-]+ */[];
6686
6708
  /**
6687
6709
  * Decide whether to automatically redirect to the provider page during login, which would completely bypass showing the portal authentication page.
6688
6710
  */
@@ -7185,6 +7207,20 @@ declare namespace Components {
7185
7207
  * 453ad7bf-86d5-46c8-8252-bcc868df5e3c
7186
7208
  */
7187
7209
  export type PortalId = string;
7210
+ /**
7211
+ * Portal-specific (ECP / installer) display config of a workflow task
7212
+ */
7213
+ export interface PortalTaskConfig {
7214
+ enabled?: boolean;
7215
+ label?: string;
7216
+ description?: string;
7217
+ journey?: {
7218
+ id?: string;
7219
+ journeyId?: string;
7220
+ name?: string;
7221
+ complete_task_automatically?: boolean;
7222
+ };
7223
+ }
7188
7224
  /**
7189
7225
  * The portal user entity
7190
7226
  */
@@ -7254,6 +7290,122 @@ declare namespace Components {
7254
7290
  }
7255
7291
  export type PortalUserRegistrationStatus = "Registration Pending" | "Confirmation Email Sent" | "Registered" | "Email Update In Progress";
7256
7292
  export type PortalWidget = EntityWidget | ContentWidget | ActionWidget | TeaserWidget | DocumentWidget | PaymentWidget | MeterReadingWidget | MeterChartWidget | CampaignWidget | ProductRecommendationsWidget;
7293
+ /**
7294
+ * A portal-facing projection of a workflow execution (V1 or V2), with the execution
7295
+ * graph already linearized by the Workflows API into a flat, ordered list of
7296
+ * portal-visible tasks.
7297
+ *
7298
+ */
7299
+ export interface PortalWorkflow {
7300
+ /**
7301
+ * Id of the workflow / flow execution
7302
+ */
7303
+ id: string;
7304
+ /**
7305
+ * Id of the workflow definition / flow template this execution was created from
7306
+ */
7307
+ definition_id?: string;
7308
+ name: string;
7309
+ status: "STARTED" | "DONE" | "CLOSED";
7310
+ /**
7311
+ * 2 = legacy V1 workflow execution (linear model), 3 = V2 flow execution (graph model)
7312
+ */
7313
+ version: 2 | 3;
7314
+ /**
7315
+ * Creation timestamp, doubles as started time
7316
+ */
7317
+ created_at?: string;
7318
+ /**
7319
+ * Last update timestamp
7320
+ */
7321
+ updated_at?: string;
7322
+ /**
7323
+ * Timestamp when the execution was completed, if it is
7324
+ */
7325
+ completed_at?: string;
7326
+ due_date?: string;
7327
+ assigned_to?: string[];
7328
+ contexts?: {
7329
+ entity_id?: string;
7330
+ entity_schema?: string;
7331
+ is_primary?: boolean;
7332
+ }[];
7333
+ /**
7334
+ * True when the linearized path reached the end of the execution graph. False when an
7335
+ * unevaluated decision task was encountered, meaning additional tasks may appear once
7336
+ * the decision is resolved (the returned tasks are still the guaranteed active path).
7337
+ * Always true for V1 executions.
7338
+ *
7339
+ */
7340
+ is_path_complete: boolean;
7341
+ /**
7342
+ * Portal-visible tasks in linear (timeline) order
7343
+ */
7344
+ tasks: /* A single portal-visible task of a linearized workflow execution */ PortalWorkflowTask[];
7345
+ }
7346
+ /**
7347
+ * A single portal-visible task of a linearized workflow execution
7348
+ */
7349
+ export interface PortalWorkflowTask {
7350
+ /**
7351
+ * Id of the underlying task (V2) or step (V1)
7352
+ */
7353
+ id: string;
7354
+ /**
7355
+ * Internal task/step name (fallback label when the portal config has none)
7356
+ */
7357
+ name: string;
7358
+ /**
7359
+ * Zero-based position of the task in the linearized timeline
7360
+ */
7361
+ order: number;
7362
+ /**
7363
+ * Normalized task status:
7364
+ * - COMPLETED / SKIPPED: the task is done (skipped tasks count as done for progress)
7365
+ * - IN_PROGRESS: the task has been reached and work has started
7366
+ * - PENDING: the task has not been completed yet
7367
+ *
7368
+ */
7369
+ status: "COMPLETED" | "SKIPPED" | "IN_PROGRESS" | "PENDING";
7370
+ /**
7371
+ * True when the task has been reached in the execution — all predecessor tasks on its
7372
+ * path are completed/skipped — so the portal user can act on it (e.g. start its journey).
7373
+ * Tasks that are only part of the projected future path are returned with is_active false.
7374
+ *
7375
+ */
7376
+ is_active: boolean;
7377
+ ecp?: /* Portal-specific (ECP / installer) display config of a workflow task */ PortalTaskConfig;
7378
+ installer?: /* Portal-specific (ECP / installer) display config of a workflow task */ PortalTaskConfig;
7379
+ /**
7380
+ * Journey linked to the task, if any
7381
+ */
7382
+ journey?: {
7383
+ id?: string;
7384
+ journeyId?: string;
7385
+ name?: string;
7386
+ /**
7387
+ * If true, the task is auto completed when the journey is completed
7388
+ */
7389
+ complete_task_automatically?: boolean;
7390
+ };
7391
+ assigned_to?: string[];
7392
+ /**
7393
+ * Id of the phase the underlying task belongs to, if any (V2 only)
7394
+ */
7395
+ phase_id?: string;
7396
+ /**
7397
+ * Name of the phase the underlying task belongs to, if any (V2 only)
7398
+ */
7399
+ phase_name?: string;
7400
+ /**
7401
+ * Timestamp when the task was completed or skipped
7402
+ */
7403
+ completed_at?: string;
7404
+ /**
7405
+ * Last update timestamp of the underlying task/step
7406
+ */
7407
+ updated_at?: string;
7408
+ }
7257
7409
  /**
7258
7410
  * The product entity
7259
7411
  */
@@ -7369,7 +7521,7 @@ declare namespace Components {
7369
7521
  * example:
7370
7522
  * office-365-login
7371
7523
  */
7372
- ProviderSlug /* [0-9a-z-]+ */;
7524
+ ProviderSlug /* [0-9a-z_-]+ */;
7373
7525
  display_name: /**
7374
7526
  * Human-readable display name for identity provider shown in login
7375
7527
  * example:
@@ -7421,7 +7573,7 @@ declare namespace Components {
7421
7573
  * example:
7422
7574
  * office-365-login
7423
7575
  */
7424
- ProviderSlug /* [0-9a-z-]+ */;
7576
+ ProviderSlug /* [0-9a-z_-]+ */;
7425
7577
  display_name: /**
7426
7578
  * Human-readable display name for identity provider shown in login
7427
7579
  * example:
@@ -7451,7 +7603,7 @@ declare namespace Components {
7451
7603
  * example:
7452
7604
  * office-365-login
7453
7605
  */
7454
- export type ProviderSlug = string; // [0-9a-z-]+
7606
+ export type ProviderSlug = string; // [0-9a-z_-]+
7455
7607
  export interface PublicAppDetails {
7456
7608
  /**
7457
7609
  * Identifier of the app.
@@ -7470,8 +7622,16 @@ declare namespace Components {
7470
7622
  * Identifier of the hook.
7471
7623
  */
7472
7624
  id?: string;
7625
+ /**
7626
+ * Whether the third-party system applies the email change immediately (`synchronous`) or takes it over entirely (`asynchronous`).
7627
+ * In synchronous mode the login email is changed as soon as the request succeeds and the portal user has to sign in again with the new address.
7628
+ *
7629
+ */
7630
+ change_mode?: "synchronous" | "asynchronous";
7473
7631
  /**
7474
7632
  * Whether the portal user must confirm their current password before the email change is handed over to the third-party system.
7633
+ * Not required for portal users whose identity is managed by an identity provider - an SSO login has no password to confirm.
7634
+ *
7475
7635
  */
7476
7636
  require_password_confirmation?: boolean;
7477
7637
  explanation?: /* Explanation of the hook. */ PublicSelfManagementExplanation;
@@ -7748,7 +7908,7 @@ declare namespace Components {
7748
7908
  * example:
7749
7909
  * office-365-login
7750
7910
  */
7751
- ProviderSlug /* [0-9a-z-]+ */;
7911
+ ProviderSlug /* [0-9a-z_-]+ */;
7752
7912
  /**
7753
7913
  * URL of the authorization endpoint
7754
7914
  * example:
@@ -8244,7 +8404,7 @@ declare namespace Components {
8244
8404
  * example:
8245
8405
  * office-365-login
8246
8406
  */
8247
- ProviderSlug /* [0-9a-z-]+ */[];
8407
+ ProviderSlug /* [0-9a-z_-]+ */[];
8248
8408
  /**
8249
8409
  * Decide whether to automatically redirect to the provider page during login, which would completely bypass showing the portal authentication page.
8250
8410
  */
@@ -8831,7 +8991,7 @@ declare namespace Components {
8831
8991
  * example:
8832
8992
  * office-365-login
8833
8993
  */
8834
- ProviderSlug /* [0-9a-z-]+ */[];
8994
+ ProviderSlug /* [0-9a-z_-]+ */[];
8835
8995
  /**
8836
8996
  * Decide whether to automatically redirect to the provider page during login, which would completely bypass showing the portal authentication page.
8837
8997
  */
@@ -11538,6 +11698,51 @@ declare namespace Paths {
11538
11698
  export type $500 = Components.Responses.InternalServerError;
11539
11699
  }
11540
11700
  }
11701
+ namespace GetEntityPortalWorkflows {
11702
+ namespace Parameters {
11703
+ /**
11704
+ * ID of the entity
11705
+ * example:
11706
+ * abc123
11707
+ */
11708
+ export type Id = string;
11709
+ /**
11710
+ * Schema slug of the entity
11711
+ * example:
11712
+ * opportunity
11713
+ */
11714
+ export type Slug = string;
11715
+ }
11716
+ export interface PathParameters {
11717
+ slug: /**
11718
+ * Schema slug of the entity
11719
+ * example:
11720
+ * opportunity
11721
+ */
11722
+ Parameters.Slug;
11723
+ id: /**
11724
+ * ID of the entity
11725
+ * example:
11726
+ * abc123
11727
+ */
11728
+ Parameters.Id;
11729
+ }
11730
+ namespace Responses {
11731
+ export interface $200 {
11732
+ portal_workflows?: /**
11733
+ * A portal-facing projection of a workflow execution (V1 or V2), with the execution
11734
+ * graph already linearized by the Workflows API into a flat, ordered list of
11735
+ * portal-visible tasks.
11736
+ *
11737
+ */
11738
+ Components.Schemas.PortalWorkflow[];
11739
+ }
11740
+ export type $401 = Components.Responses.Unauthorized;
11741
+ export type $403 = Components.Responses.Forbidden;
11742
+ export type $404 = Components.Responses.NotFound;
11743
+ export type $500 = Components.Responses.InternalServerError;
11744
+ }
11745
+ }
11541
11746
  namespace GetEntityWorkflows {
11542
11747
  namespace Parameters {
11543
11748
  /**
@@ -12086,7 +12291,7 @@ declare namespace Paths {
12086
12291
  * example:
12087
12292
  * office-365-login
12088
12293
  */
12089
- Components.Schemas.ProviderSlug /* [0-9a-z-]+ */[];
12294
+ Components.Schemas.ProviderSlug /* [0-9a-z_-]+ */[];
12090
12295
  /**
12091
12296
  * Decide whether to automatically redirect to the provider page during login, which would completely bypass showing the portal authentication page.
12092
12297
  */
@@ -12704,7 +12909,7 @@ declare namespace Paths {
12704
12909
  * example:
12705
12910
  * office-365-login
12706
12911
  */
12707
- Components.Schemas.ProviderSlug /* [0-9a-z-]+ */[];
12912
+ Components.Schemas.ProviderSlug /* [0-9a-z_-]+ */[];
12708
12913
  /**
12709
12914
  * Decide whether to automatically redirect to the provider page during login, which would completely bypass showing the portal authentication page.
12710
12915
  */
@@ -14055,7 +14260,7 @@ declare namespace Paths {
14055
14260
  * example:
14056
14261
  * office-365-login
14057
14262
  */
14058
- Components.Schemas.ProviderSlug /* [0-9a-z-]+ */;
14263
+ Components.Schemas.ProviderSlug /* [0-9a-z_-]+ */;
14059
14264
  }
14060
14265
  export interface PathParameters {
14061
14266
  provider_slug: Parameters.ProviderSlug;
@@ -14284,7 +14489,7 @@ declare namespace Paths {
14284
14489
  * example:
14285
14490
  * office-365-login
14286
14491
  */
14287
- Components.Schemas.ProviderSlug /* [0-9a-z-]+ */[];
14492
+ Components.Schemas.ProviderSlug /* [0-9a-z_-]+ */[];
14288
14493
  /**
14289
14494
  * Whether the user is soft deleted
14290
14495
  * example:
@@ -15115,7 +15320,7 @@ declare namespace Paths {
15115
15320
  * example:
15116
15321
  * office-365-login
15117
15322
  */
15118
- Components.Schemas.ProviderSlug /* [0-9a-z-]+ */;
15323
+ Components.Schemas.ProviderSlug /* [0-9a-z_-]+ */;
15119
15324
  }
15120
15325
  namespace Responses {
15121
15326
  export interface $200 {
@@ -15169,7 +15374,7 @@ declare namespace Paths {
15169
15374
  * example:
15170
15375
  * office-365-login
15171
15376
  */
15172
- Components.Schemas.ProviderSlug /* [0-9a-z-]+ */;
15377
+ Components.Schemas.ProviderSlug /* [0-9a-z_-]+ */;
15173
15378
  }
15174
15379
  namespace Responses {
15175
15380
  export interface $200 {
@@ -15567,7 +15772,8 @@ declare namespace Paths {
15567
15772
  email: string;
15568
15773
  /**
15569
15774
  * Password of the portal user for confirmation.
15570
- * Required unless a `changeEmail` portal extension hook with `require_password_confirmation` disabled is configured for the portal.
15775
+ * Required unless a `changeEmail` portal extension hook with `require_password_confirmation` disabled is configured for the portal,
15776
+ * or the portal user's identity is managed by an identity provider - an SSO login has no password to confirm.
15571
15777
  *
15572
15778
  */
15573
15779
  password?: string;
@@ -15576,8 +15782,10 @@ declare namespace Paths {
15576
15782
  export interface $200 {
15577
15783
  /**
15578
15784
  * `You will receive a confirmation mail soon on your updated email address.` for the built-in flow,
15579
- * or `Your email change request has been received.` when a changeEmail portal extension hook handed
15580
- * the change over to a third party.
15785
+ * `Your email change request has been received.` when a changeEmail portal extension hook handed
15786
+ * the change over to a third party, or `Your email has been changed.` when a synchronous changeEmail
15787
+ * portal extension hook changed the login email immediately - the portal user has to sign in again
15788
+ * with the new email address in that case.
15581
15789
  *
15582
15790
  * example:
15583
15791
  * You will receive a confirmation mail soon on your updated email address.
@@ -17278,6 +17486,26 @@ export interface OperationMethods {
17278
17486
  data?: any,
17279
17487
  config?: AxiosRequestConfig
17280
17488
  ): OperationResponse<Paths.GetEntityWorkflows.Responses.$200>
17489
+ /**
17490
+ * getEntityPortalWorkflows - Get linearized workflows for an entity
17491
+ *
17492
+ * Get all portal-relevant workflows associated with an entity (requires access to the entity),
17493
+ * linearized by the Workflows API into a flat, ordered list of portal-visible tasks.
17494
+ *
17495
+ * Unlike `getEntityWorkflows`, this endpoint returns a single uniform shape for both legacy
17496
+ * (V1) workflow executions and graph-based (V2) flow executions — the execution graph is
17497
+ * already resolved server-side (active path, task reachability, chronological ordering), so
17498
+ * clients can render a timeline without any graph traversal logic.
17499
+ *
17500
+ * Tasks carry the config of both portal audiences (`ecp` and `installer`); clients filter
17501
+ * per their configured audience, so one response serves every block on a page.
17502
+ *
17503
+ */
17504
+ 'getEntityPortalWorkflows'(
17505
+ parameters?: Parameters<Paths.GetEntityPortalWorkflows.PathParameters> | null,
17506
+ data?: any,
17507
+ config?: AxiosRequestConfig
17508
+ ): OperationResponse<Paths.GetEntityPortalWorkflows.Responses.$200>
17281
17509
  /**
17282
17510
  * uploadMeterReadingPhoto - Upload Meter Reading Photo
17283
17511
  *
@@ -19180,6 +19408,28 @@ export interface PathsDictionary {
19180
19408
  config?: AxiosRequestConfig
19181
19409
  ): OperationResponse<Paths.GetEntityWorkflows.Responses.$200>
19182
19410
  }
19411
+ ['/v2/portal/entity/{slug}/{id}/workflows/linearized']: {
19412
+ /**
19413
+ * getEntityPortalWorkflows - Get linearized workflows for an entity
19414
+ *
19415
+ * Get all portal-relevant workflows associated with an entity (requires access to the entity),
19416
+ * linearized by the Workflows API into a flat, ordered list of portal-visible tasks.
19417
+ *
19418
+ * Unlike `getEntityWorkflows`, this endpoint returns a single uniform shape for both legacy
19419
+ * (V1) workflow executions and graph-based (V2) flow executions — the execution graph is
19420
+ * already resolved server-side (active path, task reachability, chronological ordering), so
19421
+ * clients can render a timeline without any graph traversal logic.
19422
+ *
19423
+ * Tasks carry the config of both portal audiences (`ecp` and `installer`); clients filter
19424
+ * per their configured audience, so one response serves every block on a page.
19425
+ *
19426
+ */
19427
+ 'get'(
19428
+ parameters?: Parameters<Paths.GetEntityPortalWorkflows.PathParameters> | null,
19429
+ data?: any,
19430
+ config?: AxiosRequestConfig
19431
+ ): OperationResponse<Paths.GetEntityPortalWorkflows.Responses.$200>
19432
+ }
19183
19433
  ['/v2/portal/metering/reading/photo']: {
19184
19434
  /**
19185
19435
  * uploadMeterReadingPhoto - Upload Meter Reading Photo
@@ -19863,9 +20113,12 @@ export type PortalConfig = Components.Schemas.PortalConfig;
19863
20113
  export type PortalConfigV3 = Components.Schemas.PortalConfigV3;
19864
20114
  export type PortalDataExportColumn = Components.Schemas.PortalDataExportColumn;
19865
20115
  export type PortalId = Components.Schemas.PortalId;
20116
+ export type PortalTaskConfig = Components.Schemas.PortalTaskConfig;
19866
20117
  export type PortalUser = Components.Schemas.PortalUser;
19867
20118
  export type PortalUserRegistrationStatus = Components.Schemas.PortalUserRegistrationStatus;
19868
20119
  export type PortalWidget = Components.Schemas.PortalWidget;
20120
+ export type PortalWorkflow = Components.Schemas.PortalWorkflow;
20121
+ export type PortalWorkflowTask = Components.Schemas.PortalWorkflowTask;
19869
20122
  export type Product = Components.Schemas.Product;
19870
20123
  export type ProductRecommendationsWidget = Components.Schemas.ProductRecommendationsWidget;
19871
20124
  export type ProviderConfig = Components.Schemas.ProviderConfig;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@epilot/customer-portal-client",
3
- "version": "0.39.14",
3
+ "version": "0.40.0",
4
4
  "description": "API Client for epilot portal API",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -1954,6 +1954,24 @@
1954
1954
  "responses": {}
1955
1955
  }
1956
1956
  },
1957
+ "/v2/portal/entity/{slug}/{id}/workflows/linearized": {
1958
+ "get": {
1959
+ "operationId": "getEntityPortalWorkflows",
1960
+ "parameters": [
1961
+ {
1962
+ "in": "path",
1963
+ "name": "slug",
1964
+ "required": true
1965
+ },
1966
+ {
1967
+ "in": "path",
1968
+ "name": "id",
1969
+ "required": true
1970
+ }
1971
+ ],
1972
+ "responses": {}
1973
+ }
1974
+ },
1957
1975
  "/v2/portal/metering/reading/photo": {
1958
1976
  "post": {
1959
1977
  "operationId": "uploadMeterReadingPhoto",
package/src/openapi.json CHANGED
@@ -4252,7 +4252,7 @@
4252
4252
  },
4253
4253
  "password": {
4254
4254
  "type": "string",
4255
- "description": "Password of the portal user for confirmation.\nRequired unless a `changeEmail` portal extension hook with `require_password_confirmation` disabled is configured for the portal.\n"
4255
+ "description": "Password of the portal user for confirmation.\nRequired unless a `changeEmail` portal extension hook with `require_password_confirmation` disabled is configured for the portal,\nor the portal user's identity is managed by an identity provider - an SSO login has no password to confirm.\n"
4256
4256
  }
4257
4257
  }
4258
4258
  }
@@ -4261,7 +4261,7 @@
4261
4261
  },
4262
4262
  "responses": {
4263
4263
  "200": {
4264
- "description": "Portal user email updated successfully and will receive a confirmation email soon.",
4264
+ "description": "Portal user email updated successfully.\nThe user receives a confirmation email, unless a `changeEmail` portal extension hook with\n`change_mode` set to `synchronous` changed the login email right away.\n",
4265
4265
  "content": {
4266
4266
  "application/json": {
4267
4267
  "schema": {
@@ -4269,7 +4269,7 @@
4269
4269
  "properties": {
4270
4270
  "message": {
4271
4271
  "type": "string",
4272
- "description": "`You will receive a confirmation mail soon on your updated email address.` for the built-in flow,\nor `Your email change request has been received.` when a changeEmail portal extension hook handed\nthe change over to a third party.\n",
4272
+ "description": "`You will receive a confirmation mail soon on your updated email address.` for the built-in flow,\n`Your email change request has been received.` when a changeEmail portal extension hook handed\nthe change over to a third party, or `Your email has been changed.` when a synchronous changeEmail\nportal extension hook changed the login email immediately - the portal user has to sign in again\nwith the new email address in that case.\n",
4273
4273
  "example": "You will receive a confirmation mail soon on your updated email address."
4274
4274
  }
4275
4275
  }
@@ -7977,6 +7977,75 @@
7977
7977
  }
7978
7978
  }
7979
7979
  },
7980
+ "/v2/portal/entity/{slug}/{id}/workflows/linearized": {
7981
+ "get": {
7982
+ "operationId": "getEntityPortalWorkflows",
7983
+ "summary": "Get linearized workflows for an entity",
7984
+ "description": "Get all portal-relevant workflows associated with an entity (requires access to the entity),\nlinearized by the Workflows API into a flat, ordered list of portal-visible tasks.\n\nUnlike `getEntityWorkflows`, this endpoint returns a single uniform shape for both legacy\n(V1) workflow executions and graph-based (V2) flow executions — the execution graph is\nalready resolved server-side (active path, task reachability, chronological ordering), so\nclients can render a timeline without any graph traversal logic.\n\nTasks carry the config of both portal audiences (`ecp` and `installer`); clients filter\nper their configured audience, so one response serves every block on a page.\n",
7985
+ "tags": [
7986
+ "ECP"
7987
+ ],
7988
+ "security": [
7989
+ {
7990
+ "PortalAuth": []
7991
+ }
7992
+ ],
7993
+ "parameters": [
7994
+ {
7995
+ "in": "path",
7996
+ "name": "slug",
7997
+ "required": true,
7998
+ "schema": {
7999
+ "type": "string",
8000
+ "description": "Schema slug of the entity",
8001
+ "example": "opportunity"
8002
+ }
8003
+ },
8004
+ {
8005
+ "in": "path",
8006
+ "name": "id",
8007
+ "required": true,
8008
+ "schema": {
8009
+ "type": "string",
8010
+ "description": "ID of the entity",
8011
+ "example": "abc123"
8012
+ }
8013
+ }
8014
+ ],
8015
+ "responses": {
8016
+ "200": {
8017
+ "description": "Portal-relevant workflows for the entity, each with linearized tasks",
8018
+ "content": {
8019
+ "application/json": {
8020
+ "schema": {
8021
+ "type": "object",
8022
+ "properties": {
8023
+ "portal_workflows": {
8024
+ "type": "array",
8025
+ "items": {
8026
+ "$ref": "#/components/schemas/PortalWorkflow"
8027
+ }
8028
+ }
8029
+ }
8030
+ }
8031
+ }
8032
+ }
8033
+ },
8034
+ "401": {
8035
+ "$ref": "#/components/responses/Unauthorized"
8036
+ },
8037
+ "403": {
8038
+ "$ref": "#/components/responses/Forbidden"
8039
+ },
8040
+ "404": {
8041
+ "$ref": "#/components/responses/NotFound"
8042
+ },
8043
+ "500": {
8044
+ "$ref": "#/components/responses/InternalServerError"
8045
+ }
8046
+ }
8047
+ }
8048
+ },
7980
8049
  "/v2/portal/metering/reading/photo": {
7981
8050
  "post": {
7982
8051
  "operationId": "uploadMeterReadingPhoto",
@@ -14623,6 +14692,214 @@
14623
14692
  "completedTime": "2024-01-13T05:18:43.827Z"
14624
14693
  }
14625
14694
  },
14695
+ "PortalWorkflow": {
14696
+ "type": "object",
14697
+ "description": "A portal-facing projection of a workflow execution (V1 or V2), with the execution\ngraph already linearized by the Workflows API into a flat, ordered list of\nportal-visible tasks.\n",
14698
+ "properties": {
14699
+ "id": {
14700
+ "type": "string",
14701
+ "description": "Id of the workflow / flow execution"
14702
+ },
14703
+ "definition_id": {
14704
+ "type": "string",
14705
+ "description": "Id of the workflow definition / flow template this execution was created from"
14706
+ },
14707
+ "name": {
14708
+ "type": "string"
14709
+ },
14710
+ "status": {
14711
+ "type": "string",
14712
+ "enum": [
14713
+ "STARTED",
14714
+ "DONE",
14715
+ "CLOSED"
14716
+ ]
14717
+ },
14718
+ "version": {
14719
+ "type": "integer",
14720
+ "description": "2 = legacy V1 workflow execution (linear model), 3 = V2 flow execution (graph model)",
14721
+ "enum": [
14722
+ 2,
14723
+ 3
14724
+ ]
14725
+ },
14726
+ "created_at": {
14727
+ "type": "string",
14728
+ "description": "Creation timestamp, doubles as started time"
14729
+ },
14730
+ "updated_at": {
14731
+ "type": "string",
14732
+ "description": "Last update timestamp"
14733
+ },
14734
+ "completed_at": {
14735
+ "type": "string",
14736
+ "description": "Timestamp when the execution was completed, if it is"
14737
+ },
14738
+ "due_date": {
14739
+ "type": "string"
14740
+ },
14741
+ "assigned_to": {
14742
+ "type": "array",
14743
+ "items": {
14744
+ "type": "string"
14745
+ }
14746
+ },
14747
+ "contexts": {
14748
+ "type": "array",
14749
+ "items": {
14750
+ "type": "object",
14751
+ "properties": {
14752
+ "entity_id": {
14753
+ "type": "string"
14754
+ },
14755
+ "entity_schema": {
14756
+ "type": "string"
14757
+ },
14758
+ "is_primary": {
14759
+ "type": "boolean"
14760
+ }
14761
+ }
14762
+ }
14763
+ },
14764
+ "is_path_complete": {
14765
+ "type": "boolean",
14766
+ "description": "True when the linearized path reached the end of the execution graph. False when an\nunevaluated decision task was encountered, meaning additional tasks may appear once\nthe decision is resolved (the returned tasks are still the guaranteed active path).\nAlways true for V1 executions.\n"
14767
+ },
14768
+ "tasks": {
14769
+ "type": "array",
14770
+ "description": "Portal-visible tasks in linear (timeline) order",
14771
+ "items": {
14772
+ "$ref": "#/components/schemas/PortalWorkflowTask"
14773
+ }
14774
+ }
14775
+ },
14776
+ "required": [
14777
+ "id",
14778
+ "name",
14779
+ "status",
14780
+ "version",
14781
+ "is_path_complete",
14782
+ "tasks"
14783
+ ]
14784
+ },
14785
+ "PortalWorkflowTask": {
14786
+ "type": "object",
14787
+ "description": "A single portal-visible task of a linearized workflow execution",
14788
+ "properties": {
14789
+ "id": {
14790
+ "type": "string",
14791
+ "description": "Id of the underlying task (V2) or step (V1)"
14792
+ },
14793
+ "name": {
14794
+ "type": "string",
14795
+ "description": "Internal task/step name (fallback label when the portal config has none)"
14796
+ },
14797
+ "order": {
14798
+ "type": "integer",
14799
+ "description": "Zero-based position of the task in the linearized timeline"
14800
+ },
14801
+ "status": {
14802
+ "type": "string",
14803
+ "enum": [
14804
+ "COMPLETED",
14805
+ "SKIPPED",
14806
+ "IN_PROGRESS",
14807
+ "PENDING"
14808
+ ],
14809
+ "description": "Normalized task status:\n- COMPLETED / SKIPPED: the task is done (skipped tasks count as done for progress)\n- IN_PROGRESS: the task has been reached and work has started\n- PENDING: the task has not been completed yet\n"
14810
+ },
14811
+ "is_active": {
14812
+ "type": "boolean",
14813
+ "description": "True when the task has been reached in the execution — all predecessor tasks on its\npath are completed/skipped — so the portal user can act on it (e.g. start its journey).\nTasks that are only part of the projected future path are returned with is_active false.\n"
14814
+ },
14815
+ "ecp": {
14816
+ "$ref": "#/components/schemas/PortalTaskConfig"
14817
+ },
14818
+ "installer": {
14819
+ "$ref": "#/components/schemas/PortalTaskConfig"
14820
+ },
14821
+ "journey": {
14822
+ "type": "object",
14823
+ "description": "Journey linked to the task, if any",
14824
+ "properties": {
14825
+ "id": {
14826
+ "type": "string"
14827
+ },
14828
+ "journeyId": {
14829
+ "type": "string"
14830
+ },
14831
+ "name": {
14832
+ "type": "string"
14833
+ },
14834
+ "complete_task_automatically": {
14835
+ "type": "boolean",
14836
+ "description": "If true, the task is auto completed when the journey is completed"
14837
+ }
14838
+ }
14839
+ },
14840
+ "assigned_to": {
14841
+ "type": "array",
14842
+ "items": {
14843
+ "type": "string"
14844
+ }
14845
+ },
14846
+ "phase_id": {
14847
+ "type": "string",
14848
+ "description": "Id of the phase the underlying task belongs to, if any (V2 only)"
14849
+ },
14850
+ "phase_name": {
14851
+ "type": "string",
14852
+ "description": "Name of the phase the underlying task belongs to, if any (V2 only)"
14853
+ },
14854
+ "completed_at": {
14855
+ "type": "string",
14856
+ "description": "Timestamp when the task was completed or skipped"
14857
+ },
14858
+ "updated_at": {
14859
+ "type": "string",
14860
+ "description": "Last update timestamp of the underlying task/step"
14861
+ }
14862
+ },
14863
+ "required": [
14864
+ "id",
14865
+ "name",
14866
+ "order",
14867
+ "status",
14868
+ "is_active"
14869
+ ]
14870
+ },
14871
+ "PortalTaskConfig": {
14872
+ "type": "object",
14873
+ "description": "Portal-specific (ECP / installer) display config of a workflow task",
14874
+ "properties": {
14875
+ "enabled": {
14876
+ "type": "boolean"
14877
+ },
14878
+ "label": {
14879
+ "type": "string"
14880
+ },
14881
+ "description": {
14882
+ "type": "string"
14883
+ },
14884
+ "journey": {
14885
+ "type": "object",
14886
+ "properties": {
14887
+ "id": {
14888
+ "type": "string"
14889
+ },
14890
+ "journeyId": {
14891
+ "type": "string"
14892
+ },
14893
+ "name": {
14894
+ "type": "string"
14895
+ },
14896
+ "complete_task_automatically": {
14897
+ "type": "boolean"
14898
+ }
14899
+ }
14900
+ }
14901
+ }
14902
+ },
14626
14903
  "BaseBillingEvent": {
14627
14904
  "allOf": [
14628
14905
  {
@@ -15481,9 +15758,18 @@
15481
15758
  "type": "string",
15482
15759
  "description": "Identifier of the hook."
15483
15760
  },
15761
+ "change_mode": {
15762
+ "type": "string",
15763
+ "enum": [
15764
+ "synchronous",
15765
+ "asynchronous"
15766
+ ],
15767
+ "description": "Whether the third-party system applies the email change immediately (`synchronous`) or takes it over entirely (`asynchronous`).\nIn synchronous mode the login email is changed as soon as the request succeeds and the portal user has to sign in again with the new address.\n",
15768
+ "default": "asynchronous"
15769
+ },
15484
15770
  "require_password_confirmation": {
15485
15771
  "type": "boolean",
15486
- "description": "Whether the portal user must confirm their current password before the email change is handed over to the third-party system.",
15772
+ "description": "Whether the portal user must confirm their current password before the email change is handed over to the third-party system.\nNot required for portal users whose identity is managed by an identity provider - an SSO login has no password to confirm.\n",
15487
15773
  "default": true
15488
15774
  },
15489
15775
  "explanation": {
@@ -16803,7 +17089,7 @@
16803
17089
  ]
16804
17090
  },
16805
17091
  "ExtensionHookChangeEmail": {
16806
- "description": "Hook that replaces the built-in change email functionality for portal users. When configured, the portal does not change the user's login email itself. Instead, this hook makes an HTTP call to the third-party system, which is expected to handle the email change (most likely by sending the user instructions to confirm the new email address).\nThe expected response http status code to the call is:\n - 2xx if the request was accepted\n - non-2xx if the request failed (optionally with a human-readable message resolved via `resolved.error_message_path`)\n",
17092
+ "description": "Hook that replaces the built-in change email functionality for portal users. When configured, the portal does not run its own change email flow. Instead, this hook makes an HTTP call to the third-party system, which is expected to handle the email change.\nThe `change_mode` controls what the portal does after the call:\n - `asynchronous`: The third-party system takes the email change over entirely (most likely by sending the user instructions to confirm the new email address). The portal does not change the login email itself.\n - `synchronous`: The third-party system applies the email change immediately. The portal waits for a successful (2xx) response and then also changes the portal user's login email right away, without sending a confirmation email. The user has to sign in again with the new email address afterwards.\n\nThe expected response http status code to the call is:\n - 2xx if the request was accepted\n - non-2xx if the request failed (optionally with a human-readable message resolved via `resolved.error_message_path`)\n",
16807
17093
  "type": "object",
16808
17094
  "properties": {
16809
17095
  "type": {
@@ -16812,9 +17098,18 @@
16812
17098
  "changeEmail"
16813
17099
  ]
16814
17100
  },
17101
+ "change_mode": {
17102
+ "type": "string",
17103
+ "enum": [
17104
+ "synchronous",
17105
+ "asynchronous"
17106
+ ],
17107
+ "description": "Controls how the email change is handled once the third-party system accepted it. `asynchronous` hands the email change over entirely to the third-party system and the portal does not change the login email itself. `synchronous` waits for the third-party system to respond and then changes the portal user's login email immediately, without a confirmation email.\n",
17108
+ "default": "asynchronous"
17109
+ },
16815
17110
  "require_password_confirmation": {
16816
17111
  "type": "boolean",
16817
- "description": "Whether the portal user must confirm their current password before the change email request is handed over to the third-party system. When true, the portal collects and verifies the current password before calling the hook.\n",
17112
+ "description": "Whether the portal user must confirm their current password before the change email request is handed over to the third-party system. When true, the portal collects and verifies the current password before calling the hook. Skipped for portal users whose identity is managed by an identity provider: an SSO login has no password to confirm. When no password is confirmed and `change_mode` is `synchronous`, the re-created login gets a random password and the portal user signs in through their identity provider, or sets a new password via the email code flow.\n",
16818
17113
  "default": true
16819
17114
  },
16820
17115
  "explanation": {
@@ -16989,7 +17284,7 @@
16989
17284
  ]
16990
17285
  },
16991
17286
  "ExtensionHookDeleteAccount": {
16992
- "description": "Hook that replaces the built-in delete account functionality for portal users. When configured, the portal does not delete the user itself. Instead, this hook makes an HTTP call to the third-party system, which is expected to handle the deletion.\nThe `deletion_mode` controls what the portal does after the call:\n - `synchronous`: The third-party system deletes the user immediately. The portal waits for a successful (2xx) response and then also deletes the epilot user.\n - `asynchronous`: The third-party system handles deletion out-of-band. The portal does not delete anything immediately; cleanup is expected to happen later (e.g. via the user deletion API or webhooks).\n\nThe expected response http status code to the call is:\n - 2xx if the request was accepted\n - non-2xx if the request failed (optionally with a human-readable message resolved via `resolved.error_message_path`)\n",
17287
+ "description": "Hook that replaces the built-in delete account functionality for portal users. When configured, the portal does not delete the user itself. Instead, this hook makes an HTTP call to the third-party system, which is expected to handle the deletion.\nThe `deletion_mode` controls what the portal does after the call:\n - `synchronous`: The third-party system deletes the user immediately. The portal waits for a successful (2xx) response and then also deletes the epilot user.\n - `asynchronous`: The third-party system handles deletion out-of-band. The portal does not delete anything immediately; cleanup is expected to happen later (e.g. via the user deletion API or webhooks).\n\nThe optional `delete_contact` additionally deletes the contact related to the portal user, once the portal user itself was deleted (`synchronous` mode only).\n\nThe expected response http status code to the call is:\n - 2xx if the request was accepted\n - non-2xx if the request failed (optionally with a human-readable message resolved via `resolved.error_message_path`)\n",
16993
17288
  "type": "object",
16994
17289
  "properties": {
16995
17290
  "type": {
@@ -17007,6 +17302,16 @@
17007
17302
  "description": "Controls how the account deletion is handled. `synchronous` waits for the third-party system to respond and then also deletes the epilot user. `asynchronous` hands the deletion over entirely to the third-party system and the portal does not delete anything immediately.\n",
17008
17303
  "default": "synchronous"
17009
17304
  },
17305
+ "delete_contact": {
17306
+ "type": "string",
17307
+ "enum": [
17308
+ "none",
17309
+ "soft",
17310
+ "hard"
17311
+ ],
17312
+ "description": "Opt-in deletion of the contact related to the portal user, applied after the portal user itself was deleted. `none` (default) leaves the contact untouched. `soft` deletes the contact, so it can still be restored from the trash. `hard` permanently purges the contact. Only applied in `synchronous` deletion mode, as `asynchronous` mode hands the cleanup over to the third-party system.\n",
17313
+ "default": "none"
17314
+ },
17010
17315
  "explanation": {
17011
17316
  "type": "object",
17012
17317
  "properties": {
@@ -17379,7 +17684,7 @@
17379
17684
  "type": "string",
17380
17685
  "example": "office-365-login",
17381
17686
  "description": "URL-friendly slug to use as organization-unique identifier for Provider",
17382
- "pattern": "[0-9a-z-]+"
17687
+ "pattern": "[0-9a-z_-]+"
17383
17688
  },
17384
17689
  "ProviderDisplayName": {
17385
17690
  "type": "string",