@epilot/sdk 2.1.3 → 2.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/definitions/customer-portal.json +216 -19
- package/dist/apis/access-token.cjs +6 -6
- package/dist/apis/access-token.js +1 -1
- package/dist/apis/address-suggestions.cjs +6 -6
- package/dist/apis/address-suggestions.js +1 -1
- package/dist/apis/address.cjs +6 -6
- package/dist/apis/address.js +1 -1
- package/dist/apis/ai-agents.cjs +6 -6
- package/dist/apis/ai-agents.js +1 -1
- package/dist/apis/app.cjs +6 -6
- package/dist/apis/app.js +1 -1
- package/dist/apis/audit-logs.cjs +6 -6
- package/dist/apis/audit-logs.js +1 -1
- package/dist/apis/automation.cjs +6 -6
- package/dist/apis/automation.js +1 -1
- package/dist/apis/billing.cjs +6 -6
- package/dist/apis/billing.js +1 -1
- package/dist/apis/blueprint-manifest.cjs +6 -6
- package/dist/apis/blueprint-manifest.js +1 -1
- package/dist/apis/consent.cjs +6 -6
- package/dist/apis/consent.js +1 -1
- package/dist/apis/customer-portal.cjs +6 -6
- package/dist/apis/customer-portal.d.cts +2 -2
- package/dist/apis/customer-portal.d.ts +2 -2
- package/dist/apis/customer-portal.js +1 -1
- package/dist/apis/dashboard.cjs +6 -6
- package/dist/apis/dashboard.js +1 -1
- package/dist/apis/data-management.cjs +6 -6
- package/dist/apis/data-management.js +1 -1
- package/dist/apis/deduplication.cjs +6 -6
- package/dist/apis/deduplication.js +1 -1
- package/dist/apis/design.cjs +6 -6
- package/dist/apis/design.js +1 -1
- package/dist/apis/document.cjs +6 -6
- package/dist/apis/document.js +1 -1
- package/dist/apis/email-settings.cjs +6 -6
- package/dist/apis/email-settings.js +1 -1
- package/dist/apis/email-template.cjs +6 -6
- package/dist/apis/email-template.js +1 -1
- package/dist/apis/entity-mapping.cjs +6 -6
- package/dist/apis/entity-mapping.js +1 -1
- package/dist/apis/entity.cjs +6 -6
- package/dist/apis/entity.js +1 -1
- package/dist/apis/environments.cjs +6 -6
- package/dist/apis/environments.js +1 -1
- package/dist/apis/erp-integration.cjs +6 -6
- package/dist/apis/erp-integration.js +1 -1
- package/dist/apis/event-catalog.cjs +6 -6
- package/dist/apis/event-catalog.js +1 -1
- package/dist/apis/file.cjs +6 -6
- package/dist/apis/file.js +1 -1
- package/dist/apis/iban.cjs +6 -6
- package/dist/apis/iban.js +1 -1
- package/dist/apis/journey.cjs +6 -6
- package/dist/apis/journey.js +1 -1
- package/dist/apis/kanban.cjs +6 -6
- package/dist/apis/kanban.js +1 -1
- package/dist/apis/message.cjs +6 -6
- package/dist/apis/message.js +1 -1
- package/dist/apis/metering.cjs +6 -6
- package/dist/apis/metering.js +1 -1
- package/dist/apis/notes.cjs +6 -6
- package/dist/apis/notes.js +1 -1
- package/dist/apis/notification.cjs +6 -6
- package/dist/apis/notification.js +1 -1
- package/dist/apis/organization.cjs +6 -6
- package/dist/apis/organization.js +1 -1
- package/dist/apis/partner-directory.cjs +6 -6
- package/dist/apis/partner-directory.js +1 -1
- package/dist/apis/permissions.cjs +6 -6
- package/dist/apis/permissions.js +1 -1
- package/dist/apis/pricing-tier.cjs +6 -6
- package/dist/apis/pricing-tier.js +1 -1
- package/dist/apis/pricing.cjs +6 -6
- package/dist/apis/pricing.js +1 -1
- package/dist/apis/purpose.cjs +6 -6
- package/dist/apis/purpose.js +1 -1
- package/dist/apis/sandbox.cjs +6 -6
- package/dist/apis/sandbox.js +1 -1
- package/dist/apis/submission.cjs +6 -6
- package/dist/apis/submission.js +1 -1
- package/dist/apis/targeting.cjs +6 -6
- package/dist/apis/targeting.js +1 -1
- package/dist/apis/template-variables.cjs +6 -6
- package/dist/apis/template-variables.js +1 -1
- package/dist/apis/user.cjs +6 -6
- package/dist/apis/user.js +1 -1
- package/dist/apis/validation-rules.cjs +6 -6
- package/dist/apis/validation-rules.js +1 -1
- package/dist/apis/webhooks.cjs +6 -6
- package/dist/apis/webhooks.js +1 -1
- package/dist/apis/workflow-definition.cjs +6 -6
- package/dist/apis/workflow-definition.js +1 -1
- package/dist/apis/workflow.cjs +6 -6
- package/dist/apis/workflow.js +1 -1
- package/dist/{chunk-FPO2GB3J.cjs → chunk-5HXHGSD5.cjs} +1 -1
- package/dist/{chunk-PDALFDYR.js → chunk-YW6UBO24.js} +1 -1
- package/dist/customer-portal-5JVN4Y5Y.js +7 -0
- package/dist/customer-portal-T7KIY3AE.cjs +7 -0
- package/dist/{customer-portal.d-Bh9NF8cY.d.cts → customer-portal.d-uN6lOpvy.d.cts} +174 -32
- package/dist/{customer-portal.d-Bh9NF8cY.d.ts → customer-portal.d-uN6lOpvy.d.ts} +174 -32
- package/dist/index.cjs +8 -8
- package/dist/index.d.cts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/docs/customer-portal.md +351 -1123
- package/package.json +1 -1
- package/dist/customer-portal-D3SLPAHZ.js +0 -7
- package/dist/customer-portal-UR3GN4VU.cjs +0 -7
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import "./chunk-YPSWSI3M.js";
|
|
2
|
-
|
|
3
|
-
// src/docs/customer-portal.json
|
|
4
|
-
var customer_portal_default = '# Portal API\n\n- **Base URL:** `https://customer-portal-api.sls.epilot.io`\n- **Full API Docs:** [https://docs.epilot.io/api/customer-portal](https://docs.epilot.io/api/customer-portal)\n\n## Usage\n\n```ts\nimport { epilot } from \'@epilot/sdk\'\n\nepilot.authorize(() => \'<token>\')\nconst { data } = await epilot.customerPortal.upsertPortal(...)\n```\n\n### Tree-shakeable import\n\n```ts\nimport { getClient, authorize } from \'@epilot/sdk/customer-portal\'\n\nconst customerPortalClient = getClient()\nauthorize(customerPortalClient, () => \'<token>\')\nconst { data } = await customerPortalClient.upsertPortal(...)\n```\n\n## Operations\n\n**ECP Admin**\n- [`upsertPortal`](#upsertportal)\n- [`getPortalConfig`](#getportalconfig)\n- [`deletePortal`](#deleteportal)\n- [`getPortalExtensions`](#getportalextensions)\n- [`getPortalExtensionsV3`](#getportalextensionsv3)\n- [`getExternalLinks`](#getexternallinks)\n- [`getExternalLinksV3`](#getexternallinksv3)\n- [`getOrgPortalConfig`](#getorgportalconfig)\n- [`getOrgPortalConfigV3`](#getorgportalconfigv3)\n- [`getAllPortalConfigs`](#getallportalconfigs)\n- [`upsertEmailTemplates`](#upsertemailtemplates)\n- [`getEmailTemplates`](#getemailtemplates)\n- [`upsertEmailTemplatesByPortalId`](#upsertemailtemplatesbyportalid)\n- [`getEmailTemplatesByPortalId`](#getemailtemplatesbyportalid)\n- [`upsertPortalWidget`](#upsertportalwidget)\n- [`getPortalWidgets`](#getportalwidgets)\n- [`replaceECPTemplateVariables`](#replaceecptemplatevariables)\n- [`extraPermissionAttributes`](#extrapermissionattributes)\n- [`validateCaaRecords`](#validatecaarecords)\n- [`validateCaaRecordsV3`](#validatecaarecordsv3)\n- [`getECPContact`](#getecpcontact)\n- [`getValidSecondaryAttributes`](#getvalidsecondaryattributes)\n- [`resendConfirmationEmail`](#resendconfirmationemail)\n- [`fetchPortalUsersByRelatedEntity`](#fetchportalusersbyrelatedentity)\n- [`getRecipientsToNotifyOnAutomation`](#getrecipientstonotifyonautomation)\n- [`configureDistribution`](#configuredistribution)\n- [`configureDistributionV3`](#configuredistributionv3)\n- [`getEntityIdentifiers`](#getentityidentifiers)\n- [`savePortalFiles`](#saveportalfiles)\n- [`getRegistrationIdentifiers`](#getregistrationidentifiers)\n- [`loginToPortalAsUser`](#logintoportalasuser)\n- [`canTriggerPortalFlow`](#cantriggerportalflow)\n- [`updatePortalPage`](#updateportalpage)\n- [`deletePortalPage`](#deleteportalpage)\n- [`createPortalPage`](#createportalpage)\n- [`interpolatePortalPages`](#interpolateportalpages)\n- [`getDefaultPages`](#getdefaultpages)\n- [`createPortalPageBlock`](#createportalpageblock)\n- [`updatePortalPageBlock`](#updateportalpageblock)\n- [`deletePortalPageBlock`](#deleteportalpageblock)\n- [`createPortalConfig`](#createportalconfig)\n- [`getPortalConfigV3`](#getportalconfigv3)\n- [`putPortalConfig`](#putportalconfig)\n- [`deletePortalConfig`](#deleteportalconfig)\n- [`listAllPortalConfigs`](#listallportalconfigs)\n- [`swapPortalConfig`](#swapportalconfig)\n\n**Public**\n- [`createUser`](#createuser)\n- [`createUserV3`](#createuserv3)\n- [`getPortalConfigByDomain`](#getportalconfigbydomain)\n- [`getPublicPortalExtensionDetails`](#getpublicportalextensiondetails)\n- [`getPublicPortalExtensionDetailsV3`](#getpublicportalextensiondetailsv3)\n- [`getPublicPortalConfig`](#getpublicportalconfig)\n- [`getPublicPortalConfigV3`](#getpublicportalconfigv3)\n- [`getPublicPortalWidgets`](#getpublicportalwidgets)\n- [`getSchemasByDomain`](#getschemasbydomain)\n- [`getOrganizationSettingsByDomain`](#getorganizationsettingsbydomain)\n- [`checkContactExists`](#checkcontactexists)\n- [`checkContactExistsV3`](#checkcontactexistsv3)\n- [`confirmUser`](#confirmuser)\n- [`confirmUserWithUserId`](#confirmuserwithuserid)\n- [`userExists`](#userexists)\n- [`userExistsV3`](#userexistsv3)\n- [`ssoRedirect`](#ssoredirect)\n- [`ssoCallback`](#ssocallback)\n- [`getPublicPages`](#getpublicpages)\n- [`getUserEntryPoint`](#getuserentrypoint)\n- [`deRegisterMLoginUser`](#deregistermloginuser)\n- [`notifyMLoginInterestChange`](#notifymlogininterestchange)\n\n**ECP**\n- [`validateToken`](#validatetoken)\n- [`revokeToken`](#revoketoken)\n- [`getConsumption`](#getconsumption)\n- [`getCosts`](#getcosts)\n- [`getPrices`](#getprices)\n- [`getResolvedSeamlessLink`](#getresolvedseamlesslink)\n- [`getSchemas`](#getschemas)\n- [`getContact`](#getcontact)\n- [`updateContact`](#updatecontact)\n- [`getPortalUser`](#getportaluser)\n- [`updatePortalUser`](#updateportaluser)\n- [`deletePortalUser`](#deleteportaluser)\n- [`updatePortalUserEmail`](#updateportaluseremail)\n- [`getAllOrders`](#getallorders)\n- [`postOrderAcceptance`](#postorderacceptance)\n- [`getOrder`](#getorder)\n- [`updateOrder`](#updateorder)\n- [`getAllOpportunities`](#getallopportunities)\n- [`getSearchableAttributesForOpportunities`](#getsearchableattributesforopportunities)\n- [`getSearchResultsForOpportunities`](#getsearchresultsforopportunities)\n- [`getOpportunity`](#getopportunity)\n- [`updateOpportunity`](#updateopportunity)\n- [`getAllRequests`](#getallrequests)\n- [`getAllContracts`](#getallcontracts)\n- [`getContract`](#getcontract)\n- [`updateContract`](#updatecontract)\n- [`addContractByIdentifiers`](#addcontractbyidentifiers)\n- [`validateCadenceEntityEditRules`](#validatecadenceentityeditrules)\n- [`searchPaymentRelationsInEntities`](#searchpaymentrelationsinentities)\n- [`createCustomEntityActivity`](#createcustomentityactivity)\n- [`saveEntityFile`](#saveentityfile)\n- [`deleteEntityFile`](#deleteentityfile)\n- [`getFileById`](#getfilebyid)\n- [`trackFileDownloaded`](#trackfiledownloaded)\n- [`getBillingEvents`](#getbillingevents)\n- [`triggerEntityAccessEvent`](#triggerentityaccessevent)\n- [`triggerEntityAccessEventV3`](#triggerentityaccesseventv3)\n- [`getPortalUserEntity`](#getportaluserentity)\n- [`searchPortalUserEntities`](#searchportaluserentities)\n- [`getAutomationContext`](#getautomationcontext)\n- [`updateWorkflowStepAsDone`](#updateworkflowstepasdone)\n- [`getEntityWorkflows`](#getentityworkflows)\n- [`uploadMeterReadingPhoto`](#uploadmeterreadingphoto)\n- [`createMeterReading`](#createmeterreading)\n- [`getAllowedMeterReadingRange`](#getallowedmeterreadingrange)\n- [`getPortalPage`](#getportalpage)\n- [`getPortalPages`](#getportalpages)\n- [`getPortalPageBlocks`](#getportalpageblocks)\n- [`getPortalPageBlock`](#getportalpageblock)\n- [`updateCampaignPortalBlockStatus`](#updatecampaignportalblockstatus)\n- [`updateNotificationsStatus`](#updatenotificationsstatus)\n- [`invitePartner`](#invitepartner)\n- [`listBusinessPartners`](#listbusinesspartners)\n- [`resendPartnerInvitation`](#resendpartnerinvitation)\n- [`revokePartner`](#revokepartner)\n- [`disablePartner`](#disablepartner)\n- [`enablePartner`](#enablepartner)\n\n**Activity**\n- [`getEntityActivityFeed`](#getentityactivityfeed)\n\n**Balance**\n- [`getCustomerBalance`](#getcustomerbalance)\n\n**Billing Accounts**\n- [`getBillingAccount`](#getbillingaccount)\n\n**Login**\n- [`ssoLogin`](#ssologin)\n- [`ssoLoginV3`](#ssologinv3)\n\n**Schemas**\n- [`ContextEntity`](#contextentity)\n- [`ContextEntities`](#contextentities)\n- [`ErrorResp`](#errorresp)\n- [`FailedRuleErrorResp`](#failedruleerrorresp)\n- [`EmailTemplates`](#emailtemplates)\n- [`DeleteEntityFile`](#deleteentityfile)\n- [`SaveEntityFile`](#saveentityfile)\n- [`SavePortalFile`](#saveportalfile)\n- [`ExtraSchemaAttributes`](#extraschemaattributes)\n- [`Origin`](#origin)\n- [`AllowedFileExtensions`](#allowedfileextensions)\n- [`UpdateOnlyPortalConfigAttributes`](#updateonlyportalconfigattributes)\n- [`CommonConfigAttributes`](#commonconfigattributes)\n- [`UpsertPortalConfig`](#upsertportalconfig)\n- [`PortalConfig`](#portalconfig)\n- [`UpsertPortalWidget`](#upsertportalwidget)\n- [`WidgetBase`](#widgetbase)\n- [`EntityWidget`](#entitywidget)\n- [`MeterReadingWidget`](#meterreadingwidget)\n- [`MeterChartWidget`](#meterchartwidget)\n- [`WidgetAction`](#widgetaction)\n- [`ActionWidget`](#actionwidget)\n- [`TeaserWidget`](#teaserwidget)\n- [`ContentWidget`](#contentwidget)\n- [`DocumentWidget`](#documentwidget)\n- [`PaymentWidget`](#paymentwidget)\n- [`CampaignWidget`](#campaignwidget)\n- [`ProductRecommendationsWidget`](#productrecommendationswidget)\n- [`PortalWidget`](#portalwidget)\n- [`ContactCountRequest`](#contactcountrequest)\n- [`ContactExistsRequest`](#contactexistsrequest)\n- [`UserRequest`](#userrequest)\n- [`CreateUserRequest`](#createuserrequest)\n- [`OrganizationSettings`](#organizationsettings)\n- [`AuthConfig`](#authconfig)\n- [`Exists`](#exists)\n- [`EntitySlug`](#entityslug)\n- [`EntitySlugConfig`](#entityslugconfig)\n- [`EntityId`](#entityid)\n- [`BaseEntity`](#baseentity)\n- [`Schema`](#schema)\n- [`Entity`](#entity)\n- [`EntityTemplates`](#entitytemplates)\n- [`EntityItem`](#entityitem)\n- [`EntityResponse`](#entityresponse)\n- [`EntityResponseWithHits`](#entityresponsewithhits)\n- [`EntityResponseGroupedWithHits`](#entityresponsegroupedwithhits)\n- [`SearchIncludes`](#searchincludes)\n- [`PortalUser`](#portaluser)\n- [`Contact`](#contact)\n- [`WorfklowIdentifier`](#worfklowidentifier)\n- [`Meter`](#meter)\n- [`Order`](#order)\n- [`Opportunity`](#opportunity)\n- [`Contract`](#contract)\n- [`File`](#file)\n- [`Product`](#product)\n- [`ActivityId`](#activityid)\n- [`ActivityCallerContext`](#activitycallercontext)\n- [`Activity`](#activity)\n- [`EntityEditRule`](#entityeditrule)\n- [`ActivityItem`](#activityitem)\n- [`FileItem`](#fileitem)\n- [`EntityFileCount`](#entityfilecount)\n- [`AdminUser`](#adminuser)\n- [`Grant`](#grant)\n- [`ActionLabel`](#actionlabel)\n- [`Rule`](#rule)\n- [`JourneyActions`](#journeyactions)\n- [`ExternalLink`](#externallink)\n- [`WorkflowExecution`](#workflowexecution)\n- [`WorkflowStep`](#workflowstep)\n- [`BaseBillingEvent`](#basebillingevent)\n- [`InstallmentEvent`](#installmentevent)\n- [`ReimbursementEvent`](#reimbursementevent)\n- [`BillingEvent`](#billingevent)\n- [`BillingAccount`](#billingaccount)\n- [`Balance`](#balance)\n- [`Currency`](#currency)\n- [`EntityGetParams`](#entitygetparams)\n- [`EntitySearchParams`](#entitysearchparams)\n- [`IdentifierAttribute`](#identifierattribute)\n- [`RegistrationIdentifier`](#registrationidentifier)\n- [`ContractIdentifier`](#contractidentifier)\n- [`AcceptanceDecision`](#acceptancedecision)\n- [`TriggerPortalFlow`](#triggerportalflow)\n- [`ExtensionConfig`](#extensionconfig)\n- [`ExtensionHookSelection`](#extensionhookselection)\n- [`PublicExtensionCapabilities`](#publicextensioncapabilities)\n- [`DataRetrievalItem`](#dataretrievalitem)\n- [`PublicExtensionDetails`](#publicextensiondetails)\n- [`PublicDataRetrievalHookDetails`](#publicdataretrievalhookdetails)\n- [`PublicContractIdentificationDetails`](#publiccontractidentificationdetails)\n- [`PublicMeterReadingPlausibilityCheckDetails`](#publicmeterreadingplausibilitycheckdetails)\n- [`Extension`](#extension)\n- [`ExtensionSeamlessLink`](#extensionseamlesslink)\n- [`ExtensionHook`](#extensionhook)\n- [`ExtensionHookRegistrationIdentifiersCheck`](#extensionhookregistrationidentifierscheck)\n- [`ExtensionHookContractIdentification`](#extensionhookcontractidentification)\n- [`ExtensionHookMeterReadingPlausibilityCheck`](#extensionhookmeterreadingplausibilitycheck)\n- [`ExtensionHookPriceDataRetrieval`](#extensionhookpricedataretrieval)\n- [`ExtensionHookConsumptionDataRetrieval`](#extensionhookconsumptiondataretrieval)\n- [`ExtensionHookCostDataRetrieval`](#extensionhookcostdataretrieval)\n- [`ExtensionAuthBlock`](#extensionauthblock)\n- [`Direction`](#direction)\n- [`TariffType`](#tarifftype)\n- [`Source`](#source)\n- [`Reason`](#reason)\n- [`ReadBy`](#readby)\n- [`ReadingStatus`](#readingstatus)\n- [`MeterReading`](#meterreading)\n- [`MeterReadingPhoto`](#meterreadingphoto)\n- [`MeterReadingPhotoData`](#meterreadingphotodata)\n- [`SSOLoginToken`](#ssologintoken)\n- [`ProviderSlug`](#providerslug)\n- [`ProviderDisplayName`](#providerdisplayname)\n- [`ProviderConfig`](#providerconfig)\n- [`ProviderPublicConfig`](#providerpublicconfig)\n- [`AttributeMappingConfig`](#attributemappingconfig)\n- [`EntityMatchingConfig`](#entitymatchingconfig)\n- [`OIDCProviderConfig`](#oidcproviderconfig)\n- [`MoblieOIDCConfig`](#moblieoidcconfig)\n- [`OIDCProviderMetadata`](#oidcprovidermetadata)\n- [`SAMLProviderConfig`](#samlproviderconfig)\n- [`SSOCallbackRequest`](#ssocallbackrequest)\n- [`SSOCallbackResponse`](#ssocallbackresponse)\n- [`BlockProps`](#blockprops)\n- [`BlockType`](#blocktype)\n- [`BlockRequest`](#blockrequest)\n- [`BlockId`](#blockid)\n- [`Block`](#block)\n- [`PageRequest`](#pagerequest)\n- [`Page`](#page)\n- [`CommonConfigAttributesV3`](#commonconfigattributesv3)\n- [`PortalId`](#portalid)\n- [`UpsertPortalConfigV3`](#upsertportalconfigv3)\n- [`PortalConfigV3`](#portalconfigv3)\n- [`JuiceSettings`](#juicesettings)\n- [`SwappableConfig`](#swappableconfig)\n- [`PortalUserRegistrationStatus`](#portaluserregistrationstatus)\n- [`BusinessPartnerItem`](#businesspartneritem)\n\n### `upsertPortal`\n\nUpserts the settings for a portal of an organization.\n\n`POST /v2/portal/portal`\n\n```ts\nconst { data } = await client.upsertPortal(\n {\n origin: \'example\',\n portal_id: \'example\',\n },\n {\n entity_actions: [\n {\n journey_id: \'5da0a718-c822-403d-9f5d-20d4584e0528\',\n slug: \'contact\',\n action_Label: { /* ... */ }\n }\n ],\n extensions: [\n {\n id: \'string\',\n status: \'installed\',\n options: {}\n }\n ],\n extension_hooks: {},\n default_user_to_notify: {\n onPendingUser: [\n { /* ... */ }\n ]\n },\n enabled: true,\n name: \'Installer Portal\',\n domain: \'abc.com\',\n is_epilot_domain: true,\n design_id: \'5da0a718-c822-403d-9f5d-20d4584e0528\',\n allowed_portal_entities: [\'contact\', \'contract\'],\n self_registration_setting: \'ALLOW_WITH_CONTACT_CREATION\',\n user_account_self_management: false,\n feature_settings: {\n start_page: true,\n billing: true,\n change_due_date: true,\n new_design: true\n },\n accessToken: \'string\',\n advanced_mfa: {\n enabled: true\n },\n auth_settings: {\n passwordless_login: {\n enabled: true\n },\n entry_point: \'PASSWORD\',\n preferred_sso_providers: [\'office-365-login\'],\n auto_redirect_to_sso: true\n },\n cognito_details: {\n cognito_user_pool_client_id: \'6bsd0jkgoie74k2i8mrhc1vest\',\n cognito_user_pool_arn: \'arn:aws:cognito-idp:us-east-1:123412341234:userpool/us-east-1_123412341\',\n cognito_user_pool_id: \'eu-central-1_CUEQRNbUb\',\n timeouts: {\n refresh_token: 300,\n access_token: 300,\n id_token: 300\n },\n advanced_authentication: {\n user_activity_logging: true,\n adaptive_authentication: true,\n compromised_credentials_detection: true\n },\n password_policy: {\n minimum_length: 8,\n maximum_length: 256,\n require_lowercase: true,\n require_uppercase: true,\n require_numbers: true,\n require_symbols: true\n }\n },\n config: \'string\',\n contact_identifiers: [\'email\', \'last_name\'],\n approval_state_attributes: {\n contact: [\'name\', \'address\'],\n contract: [\'installment_amount\']\n },\n email_templates: {\n confirmAccount: \'5da0a718-c822-403d-9f5d-20d4584e0528\',\n advancedAuth: \'5da0a718-c822-403d-9f5d-20d4584e0528\',\n advancedMFA: \'5da0a718-c822-403d-9f5d-20d4584e0528\',\n journeySignUp: \'5da0a718-c822-403d-9f5d-20d4584e0528\',\n journeySignInOneTimePassword: \'5da0a718-c822-403d-9f5d-20d4584e0528\',\n journeyLoginOTP: \'5da0a718-c822-403d-9f5d-20d4584e0528\',\n forgotPassword: \'5da0a718-c822-403d-9f5d-20d4584e0528\',\n invitation: \'5da0a718-c822-403d-9f5d-20d4584e0528\',\n partnerInvitation: \'5da0a718-c822-403d-9f5d-20d4584e0528\',\n onNewQuote: \'5da0a718-c822-403d-9f5d-20d4584e0528\',\n onMapAPendingUser: \'5da0a718-c822-403d-9f5d-20d4584e0528\',\n onDocUpload: \'5da0a718-c822-403d-9f5d-20d4584e0528\',\n onWorkflowStepAssigned: \'5da0a718-c822-403d-9f5d-20d4584e0528\',\n confirmEmailUpdate: \'5da0a718-c822-403d-9f5d-20d4584e0528\',\n verifyCodeToSetPassword: \'5da0a718-c822-403d-9f5d-20d4584e0528\'\n },\n images: {\n orderLeftTeaser: \'https://epilot-bucket.s3.eu-central-1.amazonaws.com/12344/6538fddb-f0e9-4f0f-af51-6e57891ff20a/order-left-teaser.jpeg\',\n orderRightTeaser: \'https://epilot-bucket.s3.eu-central-1.amazonaws.com/12344/6538fddb-f0e9-4f0f-af51-6e57891ff20a/order-right-teaser.jpeg\',\n welcomeBanner: \'https://epilot-bucket.s3.eu-central-1.amazonaws.com/12344/6538fddb-f0e9-4f0f-af51-6e57891ff20a/welcome-banner.jpeg\'\n },\n entity_identifiers: {\n type: {\n isEnabled: true,\n attributes: [\'contract_number\']\n }\n },\n contract_identifiers: [\n {\n name: \'email\',\n schema: \'contact\'\n },\n {\n name: \'last_name\',\n schema: \'contact\'\n },\n /* ... 1 more */\n ],\n contract_selector_config: {\n show_inactive: true,\n title_path: \'string\'\n },\n registration_identifiers: [\n {\n name: \'last_name\',\n schema: \'contact\'\n },\n {\n name: \'contract_number\',\n schema: \'contract\'\n }\n ],\n triggered_journeys: [\n {\n trigger_name: \'FIRST_LOGIN\',\n journey_id: \'5da0a718-c822-403d-9f5d-20d4584e0528\'\n }\n ],\n entity_edit_rules: [\n {\n slug: \'contact\',\n attribute: \'first_name\',\n rule_type: \'cadence\',\n cadence_period_type: \'days\',\n cadence_period: 1,\n changes_allowed: 1,\n grace_period: 1,\n allowed_increment: \'10%\',\n allowed_decrement: \'10%\',\n number_of_days_before_restriction: 10\n }\n ],\n allowed_file_extensions: {\n document: [\'pdf\'],\n image: [\'jpg\'],\n spreadsheet: [\'xls\'],\n presentation: [\'ppt\'],\n audioVideo: [\'mp4\'],\n email: [\'eml\'],\n archive: [\'zip\'],\n cad: [\'cad\'],\n calendar: [\'ics\'],\n other: [\'txt\']\n },\n prevent_search_engine_indexing: true,\n meter_reading_grace_period: 0,\n inactive_contract_cutoff_years: 0,\n is_dummy: true,\n is_v3_item: true,\n portal_id: \'453ad7bf-86d5-46c8-8252-bcc868df5e3c\',\n portal_sk_v3: \'PORTAL_CONFIG#453ad7bf-86d5-46c8-8252-bcc868df5e3c\',\n origin: \'string\',\n pages: {}\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "enabled": true,\n "name": "Installer Portal",\n "domain": "abc.com",\n "is_epilot_domain": true,\n "design_id": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "allowed_portal_entities": ["contact", "contract"],\n "self_registration_setting": "ALLOW_WITH_CONTACT_CREATION",\n "user_account_self_management": false,\n "feature_settings": {\n "start_page": true,\n "billing": true,\n "change_due_date": true,\n "new_design": true\n },\n "accessToken": "string",\n "advanced_mfa": {\n "enabled": true\n },\n "auth_settings": {\n "passwordless_login": {\n "enabled": true\n },\n "entry_point": "PASSWORD",\n "preferred_sso_providers": ["office-365-login"],\n "auto_redirect_to_sso": true\n },\n "cognito_details": {\n "cognito_user_pool_client_id": "6bsd0jkgoie74k2i8mrhc1vest",\n "cognito_user_pool_arn": "arn:aws:cognito-idp:us-east-1:123412341234:userpool/us-east-1_123412341",\n "cognito_user_pool_id": "eu-central-1_CUEQRNbUb",\n "timeouts": {\n "refresh_token": 300,\n "access_token": 300,\n "id_token": 300\n },\n "advanced_authentication": {\n "user_activity_logging": true,\n "adaptive_authentication": true,\n "compromised_credentials_detection": true\n },\n "password_policy": {\n "minimum_length": 8,\n "maximum_length": 256,\n "require_lowercase": true,\n "require_uppercase": true,\n "require_numbers": true,\n "require_symbols": true\n }\n },\n "config": "string",\n "contact_identifiers": ["email", "last_name"],\n "approval_state_attributes": {\n "contact": ["name", "address"],\n "contract": ["installment_amount"]\n },\n "email_templates": {\n "confirmAccount": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "advancedAuth": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "advancedMFA": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "journeySignUp": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "journeySignInOneTimePassword": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "journeyLoginOTP": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "forgotPassword": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "invitation": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "partnerInvitation": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "onNewQuote": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "onMapAPendingUser": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "onDocUpload": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "onWorkflowStepAssigned": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "confirmEmailUpdate": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "verifyCodeToSetPassword": "5da0a718-c822-403d-9f5d-20d4584e0528"\n },\n "images": {\n "orderLeftTeaser": "https://epilot-bucket.s3.eu-central-1.amazonaws.com/12344/6538fddb-f0e9-4f0f-af51-6e57891ff20a/order-left-teaser.jpeg",\n "orderRightTeaser": "https://epilot-bucket.s3.eu-central-1.amazonaws.com/12344/6538fddb-f0e9-4f0f-af51-6e57891ff20a/order-right-teaser.jpeg",\n "welcomeBanner": "https://epilot-bucket.s3.eu-central-1.amazonaws.com/12344/6538fddb-f0e9-4f0f-af51-6e57891ff20a/welcome-banner.jpeg"\n },\n "entity_identifiers": {\n "type": {\n "isEnabled": true,\n "attributes": ["contract_number"]\n }\n },\n "contract_identifiers": [\n {\n "name": "email",\n "schema": "contact"\n },\n {\n "name": "last_name",\n "schema": "contact"\n }\n ],\n "contract_selector_config": {\n "show_inactive": true,\n "title_path": "string"\n },\n "registration_identifiers": [\n {\n "name": "last_name",\n "schema": "contact"\n },\n {\n "name": "contract_number",\n "schema": "contract"\n }\n ],\n "triggered_journeys": [\n {\n "trigger_name": "FIRST_LOGIN",\n "journey_id": "5da0a718-c822-403d-9f5d-20d4584e0528"\n }\n ],\n "entity_edit_rules": [\n {\n "slug": "contact",\n "attribute": "first_name",\n "rule_type": "cadence",\n "cadence_period_type": "days",\n "cadence_period": 1,\n "changes_allowed": 1,\n "grace_period": 1,\n "allowed_increment": "10%",\n "allowed_decrement": "10%",\n "number_of_days_before_restriction": 10\n }\n ],\n "allowed_file_extensions": {\n "document": ["pdf"],\n "image": ["jpg"],\n "spreadsheet": ["xls"],\n "presentation": ["ppt"],\n "audioVideo": ["mp4"],\n "email": ["eml"],\n "archive": ["zip"],\n "cad": ["cad"],\n "calendar": ["ics"],\n "other": ["txt"]\n },\n "prevent_search_engine_indexing": true,\n "meter_reading_grace_period": 0,\n "inactive_contract_cutoff_years": 0,\n "is_dummy": true,\n "is_v3_item": true,\n "portal_id": "453ad7bf-86d5-46c8-8252-bcc868df5e3c",\n "portal_sk_v3": "PORTAL_CONFIG#453ad7bf-86d5-46c8-8252-bcc868df5e3c",\n "origin": "string",\n "pages": {},\n "id": 12345,\n "organization_id": 12345,\n "org_settings": {\n "canary": {\n "enabled": true\n },\n "notracking": {\n "enabled": true\n }\n },\n "feature_flags": {},\n "grants": [\n {\n "action": "entity-read",\n "resource": "entity:123:contact:f7c22299-ca72-4bca-8538-0a88eeefc947",\n "effect": "allow"\n }\n ],\n "identity_providers": [\n {\n "slug": "office-365-login",\n "display_name": "Office 365 Login",\n "oidc_config": {},\n "mobile_oidc_config": {}\n }\n ]\n}\n```\n\n</details>\n\n---\n\n### `createUser`\n\nRegisters a portal user\n\n`POST /v2/portal/public/user`\n\n```ts\nconst { data } = await client.createUser(\n {\n origin: \'example\',\n },\n {\n email: \'testemail921@yopmail.com\',\n first_name: \'John\',\n last_name: \'Doe\',\n contactId: \'5da0a718-c822-403d-9f5d-20d4584e0528\',\n orgId: 728,\n password: \'124n$aAJs*d41h4\',\n contactIdentifiers: {},\n registration_identifiers: {\n contact: {\n email: \'john.doe@example.com\'\n },\n contract: {\n contract_number: \'123456\'\n }\n },\n account_id: \'string\'\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "message": "User created successfully"\n}\n```\n\n</details>\n\n---\n\n### `createUserV3`\n\nRegisters a portal user with portal id\n\n`POST /v3/portal/public/user`\n\n```ts\nconst { data } = await client.createUserV3(\n {\n portal_id: \'example\',\n },\n {\n email: \'testemail921@yopmail.com\',\n first_name: \'John\',\n last_name: \'Doe\',\n contactId: \'5da0a718-c822-403d-9f5d-20d4584e0528\',\n orgId: 728,\n password: \'124n$aAJs*d41h4\',\n contactIdentifiers: {},\n registration_identifiers: {\n contact: {\n email: \'john.doe@example.com\'\n },\n contract: {\n contract_number: \'123456\'\n }\n },\n account_id: \'string\'\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "message": "User created successfully"\n}\n```\n\n</details>\n\n---\n\n### `validateToken`\n\nValidates Portal Token is valid. Pass the token via Authorization Header.\n\n`POST /v2/portal/token/validate`\n\n```ts\nconst { data } = await client.validateToken()\n```\n\n---\n\n### `revokeToken`\n\nRevokes all of the access tokens for the given Refresh Token.\n\n`POST /v2/portal/token/revoke`\n\n```ts\nconst { data } = await client.revokeToken(\n null,\n {\n refresh_token: \'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c\'\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "message": "Token revoked successfully"\n}\n```\n\n</details>\n\n---\n\n### `getPortalConfigByDomain`\n\nRetrieves the portal configuration by domain.\n\n`GET /v2/portal/public/config`\n\n```ts\nconst { data } = await client.getPortalConfigByDomain({\n domain: \'example\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "enabled": true,\n "name": "Installer Portal",\n "domain": "abc.com",\n "is_epilot_domain": true,\n "design_id": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "allowed_portal_entities": ["contact", "contract"],\n "self_registration_setting": "ALLOW_WITH_CONTACT_CREATION",\n "user_account_self_management": false,\n "feature_settings": {\n "start_page": true,\n "billing": true,\n "change_due_date": true,\n "new_design": true\n },\n "accessToken": "string",\n "advanced_mfa": {\n "enabled": true\n },\n "auth_settings": {\n "passwordless_login": {\n "enabled": true\n },\n "entry_point": "PASSWORD",\n "preferred_sso_providers": ["office-365-login"],\n "auto_redirect_to_sso": true\n },\n "cognito_details": {\n "cognito_user_pool_client_id": "6bsd0jkgoie74k2i8mrhc1vest",\n "cognito_user_pool_arn": "arn:aws:cognito-idp:us-east-1:123412341234:userpool/us-east-1_123412341",\n "cognito_user_pool_id": "eu-central-1_CUEQRNbUb",\n "timeouts": {\n "refresh_token": 300,\n "access_token": 300,\n "id_token": 300\n },\n "advanced_authentication": {\n "user_activity_logging": true,\n "adaptive_authentication": true,\n "compromised_credentials_detection": true\n },\n "password_policy": {\n "minimum_length": 8,\n "maximum_length": 256,\n "require_lowercase": true,\n "require_uppercase": true,\n "require_numbers": true,\n "require_symbols": true\n }\n },\n "config": "string",\n "contact_identifiers": ["email", "last_name"],\n "approval_state_attributes": {\n "contact": ["name", "address"],\n "contract": ["installment_amount"]\n },\n "email_templates": {\n "confirmAccount": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "advancedAuth": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "advancedMFA": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "journeySignUp": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "journeySignInOneTimePassword": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "journeyLoginOTP": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "forgotPassword": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "invitation": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "partnerInvitation": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "onNewQuote": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "onMapAPendingUser": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "onDocUpload": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "onWorkflowStepAssigned": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "confirmEmailUpdate": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "verifyCodeToSetPassword": "5da0a718-c822-403d-9f5d-20d4584e0528"\n },\n "images": {\n "orderLeftTeaser": "https://epilot-bucket.s3.eu-central-1.amazonaws.com/12344/6538fddb-f0e9-4f0f-af51-6e57891ff20a/order-left-teaser.jpeg",\n "orderRightTeaser": "https://epilot-bucket.s3.eu-central-1.amazonaws.com/12344/6538fddb-f0e9-4f0f-af51-6e57891ff20a/order-right-teaser.jpeg",\n "welcomeBanner": "https://epilot-bucket.s3.eu-central-1.amazonaws.com/12344/6538fddb-f0e9-4f0f-af51-6e57891ff20a/welcome-banner.jpeg"\n },\n "entity_identifiers": {\n "type": {\n "isEnabled": true,\n "attributes": ["contract_number"]\n }\n },\n "contract_identifiers": [\n {\n "name": "email",\n "schema": "contact"\n },\n {\n "name": "last_name",\n "schema": "contact"\n }\n ],\n "contract_selector_config": {\n "show_inactive": true,\n "title_path": "string"\n },\n "registration_identifiers": [\n {\n "name": "last_name",\n "schema": "contact"\n },\n {\n "name": "contract_number",\n "schema": "contract"\n }\n ],\n "triggered_journeys": [\n {\n "trigger_name": "FIRST_LOGIN",\n "journey_id": "5da0a718-c822-403d-9f5d-20d4584e0528"\n }\n ],\n "entity_edit_rules": [\n {\n "slug": "contact",\n "attribute": "first_name",\n "rule_type": "cadence",\n "cadence_period_type": "days",\n "cadence_period": 1,\n "changes_allowed": 1,\n "grace_period": 1,\n "allowed_increment": "10%",\n "allowed_decrement": "10%",\n "number_of_days_before_restriction": 10\n }\n ],\n "allowed_file_extensions": {\n "document": ["pdf"],\n "image": ["jpg"],\n "spreadsheet": ["xls"],\n "presentation": ["ppt"],\n "audioVideo": ["mp4"],\n "email": ["eml"],\n "archive": ["zip"],\n "cad": ["cad"],\n "calendar": ["ics"],\n "other": ["txt"]\n },\n "prevent_search_engine_indexing": true,\n "meter_reading_grace_period": 0,\n "inactive_contract_cutoff_years": 0,\n "is_dummy": true,\n "is_v3_item": true,\n "portal_id": "453ad7bf-86d5-46c8-8252-bcc868df5e3c",\n "portal_sk_v3": "PORTAL_CONFIG#453ad7bf-86d5-46c8-8252-bcc868df5e3c",\n "origin": "string",\n "pages": {},\n "id": 12345,\n "organization_id": 12345,\n "org_settings": {\n "canary": {\n "enabled": true\n },\n "notracking": {\n "enabled": true\n }\n },\n "feature_flags": {},\n "grants": [\n {\n "action": "entity-read",\n "resource": "entity:123:contact:f7c22299-ca72-4bca-8538-0a88eeefc947",\n "effect": "allow"\n }\n ],\n "identity_providers": [\n {\n "slug": "office-365-login",\n "display_name": "Office 365 Login",\n "oidc_config": {},\n "mobile_oidc_config": {}\n }\n ]\n}\n```\n\n</details>\n\n---\n\n### `getPortalConfig`\n\nRetrieves the portal configuration.\n\n`GET /v2/portal/config`\n\n```ts\nconst { data } = await client.getPortalConfig({\n origin: \'example\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "enabled": true,\n "name": "Installer Portal",\n "domain": "abc.com",\n "is_epilot_domain": true,\n "design_id": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "allowed_portal_entities": ["contact", "contract"],\n "self_registration_setting": "ALLOW_WITH_CONTACT_CREATION",\n "user_account_self_management": false,\n "feature_settings": {\n "start_page": true,\n "billing": true,\n "change_due_date": true,\n "new_design": true\n },\n "accessToken": "string",\n "advanced_mfa": {\n "enabled": true\n },\n "auth_settings": {\n "passwordless_login": {\n "enabled": true\n },\n "entry_point": "PASSWORD",\n "preferred_sso_providers": ["office-365-login"],\n "auto_redirect_to_sso": true\n },\n "cognito_details": {\n "cognito_user_pool_client_id": "6bsd0jkgoie74k2i8mrhc1vest",\n "cognito_user_pool_arn": "arn:aws:cognito-idp:us-east-1:123412341234:userpool/us-east-1_123412341",\n "cognito_user_pool_id": "eu-central-1_CUEQRNbUb",\n "timeouts": {\n "refresh_token": 300,\n "access_token": 300,\n "id_token": 300\n },\n "advanced_authentication": {\n "user_activity_logging": true,\n "adaptive_authentication": true,\n "compromised_credentials_detection": true\n },\n "password_policy": {\n "minimum_length": 8,\n "maximum_length": 256,\n "require_lowercase": true,\n "require_uppercase": true,\n "require_numbers": true,\n "require_symbols": true\n }\n },\n "config": "string",\n "contact_identifiers": ["email", "last_name"],\n "approval_state_attributes": {\n "contact": ["name", "address"],\n "contract": ["installment_amount"]\n },\n "email_templates": {\n "confirmAccount": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "advancedAuth": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "advancedMFA": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "journeySignUp": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "journeySignInOneTimePassword": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "journeyLoginOTP": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "forgotPassword": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "invitation": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "partnerInvitation": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "onNewQuote": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "onMapAPendingUser": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "onDocUpload": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "onWorkflowStepAssigned": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "confirmEmailUpdate": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "verifyCodeToSetPassword": "5da0a718-c822-403d-9f5d-20d4584e0528"\n },\n "images": {\n "orderLeftTeaser": "https://epilot-bucket.s3.eu-central-1.amazonaws.com/12344/6538fddb-f0e9-4f0f-af51-6e57891ff20a/order-left-teaser.jpeg",\n "orderRightTeaser": "https://epilot-bucket.s3.eu-central-1.amazonaws.com/12344/6538fddb-f0e9-4f0f-af51-6e57891ff20a/order-right-teaser.jpeg",\n "welcomeBanner": "https://epilot-bucket.s3.eu-central-1.amazonaws.com/12344/6538fddb-f0e9-4f0f-af51-6e57891ff20a/welcome-banner.jpeg"\n },\n "entity_identifiers": {\n "type": {\n "isEnabled": true,\n "attributes": ["contract_number"]\n }\n },\n "contract_identifiers": [\n {\n "name": "email",\n "schema": "contact"\n },\n {\n "name": "last_name",\n "schema": "contact"\n }\n ],\n "contract_selector_config": {\n "show_inactive": true,\n "title_path": "string"\n },\n "registration_identifiers": [\n {\n "name": "last_name",\n "schema": "contact"\n },\n {\n "name": "contract_number",\n "schema": "contract"\n }\n ],\n "triggered_journeys": [\n {\n "trigger_name": "FIRST_LOGIN",\n "journey_id": "5da0a718-c822-403d-9f5d-20d4584e0528"\n }\n ],\n "entity_edit_rules": [\n {\n "slug": "contact",\n "attribute": "first_name",\n "rule_type": "cadence",\n "cadence_period_type": "days",\n "cadence_period": 1,\n "changes_allowed": 1,\n "grace_period": 1,\n "allowed_increment": "10%",\n "allowed_decrement": "10%",\n "number_of_days_before_restriction": 10\n }\n ],\n "allowed_file_extensions": {\n "document": ["pdf"],\n "image": ["jpg"],\n "spreadsheet": ["xls"],\n "presentation": ["ppt"],\n "audioVideo": ["mp4"],\n "email": ["eml"],\n "archive": ["zip"],\n "cad": ["cad"],\n "calendar": ["ics"],\n "other": ["txt"]\n },\n "prevent_search_engine_indexing": true,\n "meter_reading_grace_period": 0,\n "inactive_contract_cutoff_years": 0,\n "is_dummy": true,\n "is_v3_item": true,\n "portal_id": "453ad7bf-86d5-46c8-8252-bcc868df5e3c",\n "portal_sk_v3": "PORTAL_CONFIG#453ad7bf-86d5-46c8-8252-bcc868df5e3c",\n "origin": "string",\n "pages": {},\n "id": 12345,\n "organization_id": 12345,\n "org_settings": {\n "canary": {\n "enabled": true\n },\n "notracking": {\n "enabled": true\n }\n },\n "feature_flags": {},\n "grants": [\n {\n "action": "entity-read",\n "resource": "entity:123:contact:f7c22299-ca72-4bca-8538-0a88eeefc947",\n "effect": "allow"\n }\n ],\n "identity_providers": [\n {\n "slug": "office-365-login",\n "display_name": "Office 365 Login",\n "oidc_config": {},\n "mobile_oidc_config": {}\n }\n ]\n}\n```\n\n</details>\n\n---\n\n### `deletePortal`\n\nDeletes the portal.\n\n`DELETE /v2/portal/config`\n\n```ts\nconst { data } = await client.deletePortal({\n origin: \'example\',\n})\n```\n\n---\n\n### `getPortalExtensions`\n\nRetrieves the installed portal extensions.\n\n`GET /v2/portal/extensions`\n\n```ts\nconst { data } = await client.getPortalExtensions({\n origin: \'example\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n[\n {\n "id": "string",\n "app_id": "string",\n "app_name": "string",\n "name": {\n "en": "string"\n },\n "description": {\n "en": "string"\n },\n "version": "string",\n "options": [\n {\n "id": "string",\n "name": {\n "en": "string"\n },\n "type": "text",\n "description": {\n "en": "string"\n },\n "default": "string",\n "required": false\n }\n ],\n "links": [\n {\n "id": "string",\n "name": {\n "en": "string"\n },\n "description": {\n "en": "string"\n },\n "type": "seamless",\n "condition": "{{Contact.customer_number | is_not_empty}}",\n "auth": {\n "method": "GET",\n "url": "string",\n "params": {},\n "headers": {},\n "body": {},\n "cache": {\n "key": "{{Options.api_key}}",\n "ttl": "{{AuthResponse.data.expires_in}}"\n }\n },\n "redirect": {\n "url": "string",\n "params": {}\n }\n }\n ],\n "hooks": [\n {\n "type": "registrationIdentifiersCheck",\n "auth": {\n "method": "GET",\n "url": "string",\n "params": {},\n "headers": {},\n "body": {},\n "cache": {\n "key": "{{Options.api_key}}",\n "ttl": "{{AuthResponse.data.expires_in}}"\n }\n },\n "call": {\n "method": "POST",\n "url": "string",\n "params": {},\n "headers": {},\n "body": {},\n "result": "string"\n },\n "use_static_ips": false\n }\n ]\n }\n]\n```\n\n</details>\n\n---\n\n### `getPublicPortalExtensionDetails`\n\nGet public extension details shown to end customers and configuring users.\n\n`GET /v2/portal/public/extensions`\n\n```ts\nconst { data } = await client.getPublicPortalExtensionDetails({\n org_id: \'example\',\n origin: \'example\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "consumptionDataRetrieval": [\n {\n "extension": {\n "id": "string",\n "name": {\n "en": "string"\n }\n },\n "hook": {\n "id": "string",\n "name": {\n "en": "string"\n },\n "intervals": ["string"]\n }\n }\n ],\n "priceDataRetrieval": [\n {\n "extension": {\n "id": "string",\n "name": {\n "en": "string"\n }\n },\n "hook": {\n "id": "string",\n "name": {\n "en": "string"\n },\n "intervals": ["string"]\n }\n }\n ],\n "costDataRetrieval": [\n {\n "extension": {\n "id": "string",\n "name": {\n "en": "string"\n }\n },\n "hook": {\n "id": "string",\n "name": {\n "en": "string"\n },\n "intervals": ["string"]\n }\n }\n ],\n "contractIdentification": {\n "extension": {\n "id": "string",\n "name": {\n "en": "string"\n }\n },\n "hook": {\n "explanation": {\n "en": "This process will give you access to all Contracts kept"\n }\n }\n },\n "meterReadingPlausibilityCheck": {\n "extension": {\n "id": "string",\n "name": {\n "en": "string"\n }\n },\n "hook": {\n "plausibility_mode": "check"\n }\n }\n}\n```\n\n</details>\n\n---\n\n### `getPortalExtensionsV3`\n\nRetrieves the installed portal extensions.\n\n`GET /v3/portal/extensions`\n\n```ts\nconst { data } = await client.getPortalExtensionsV3({\n portal_id: \'example\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n[\n {\n "id": "string",\n "app_id": "string",\n "app_name": "string",\n "name": {\n "en": "string"\n },\n "description": {\n "en": "string"\n },\n "version": "string",\n "options": [\n {\n "id": "string",\n "name": {\n "en": "string"\n },\n "type": "text",\n "description": {\n "en": "string"\n },\n "default": "string",\n "required": false\n }\n ],\n "links": [\n {\n "id": "string",\n "name": {\n "en": "string"\n },\n "description": {\n "en": "string"\n },\n "type": "seamless",\n "condition": "{{Contact.customer_number | is_not_empty}}",\n "auth": {\n "method": "GET",\n "url": "string",\n "params": {},\n "headers": {},\n "body": {},\n "cache": {\n "key": "{{Options.api_key}}",\n "ttl": "{{AuthResponse.data.expires_in}}"\n }\n },\n "redirect": {\n "url": "string",\n "params": {}\n }\n }\n ],\n "hooks": [\n {\n "type": "registrationIdentifiersCheck",\n "auth": {\n "method": "GET",\n "url": "string",\n "params": {},\n "headers": {},\n "body": {},\n "cache": {\n "key": "{{Options.api_key}}",\n "ttl": "{{AuthResponse.data.expires_in}}"\n }\n },\n "call": {\n "method": "POST",\n "url": "string",\n "params": {},\n "headers": {},\n "body": {},\n "result": "string"\n },\n "use_static_ips": false\n }\n ]\n }\n]\n```\n\n</details>\n\n---\n\n### `getPublicPortalExtensionDetailsV3`\n\nGet public extension details shown to end customers and configuring users.\nSupports two identification methods:\n1. Using org_id + portal_id\n2. Using domain\n\n`GET /v3/portal/public/extensions`\n\n```ts\nconst { data } = await client.getPublicPortalExtensionDetailsV3({\n org_id: \'example\',\n portal_id: \'example\',\n domain: \'example\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "consumptionDataRetrieval": [\n {\n "extension": {\n "id": "string",\n "name": {\n "en": "string"\n }\n },\n "hook": {\n "id": "string",\n "name": {\n "en": "string"\n },\n "intervals": ["string"]\n }\n }\n ],\n "priceDataRetrieval": [\n {\n "extension": {\n "id": "string",\n "name": {\n "en": "string"\n }\n },\n "hook": {\n "id": "string",\n "name": {\n "en": "string"\n },\n "intervals": ["string"]\n }\n }\n ],\n "costDataRetrieval": [\n {\n "extension": {\n "id": "string",\n "name": {\n "en": "string"\n }\n },\n "hook": {\n "id": "string",\n "name": {\n "en": "string"\n },\n "intervals": ["string"]\n }\n }\n ],\n "contractIdentification": {\n "extension": {\n "id": "string",\n "name": {\n "en": "string"\n }\n },\n "hook": {\n "explanation": {\n "en": "This process will give you access to all Contracts kept"\n }\n }\n },\n "meterReadingPlausibilityCheck": {\n "extension": {\n "id": "string",\n "name": {\n "en": "string"\n }\n },\n "hook": {\n "plausibility_mode": "check"\n }\n }\n}\n```\n\n</details>\n\n---\n\n### `getConsumption`\n\nGet Consumption\n\n`GET /v2/portal/consumption`\n\n```ts\nconst { data } = await client.getConsumption({\n app_id: \'example\',\n extensionId: \'example\',\n hookId: \'example\',\n meter_id: \'example\',\n from: \'example\',\n to: \'example\',\n interval: \'example\',\n context_entities: \'example\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "consumptions": [\n {\n "timestamp": "1970-01-01T00:00:00.000Z",\n "value": 0,\n "type": "string"\n }\n ]\n}\n```\n\n</details>\n\n---\n\n### `getCosts`\n\nGet Costs\n\n`GET /v2/portal/costs`\n\n```ts\nconst { data } = await client.getCosts({\n app_id: \'example\',\n extensionId: \'example\',\n hookId: \'example\',\n meter_id: \'example\',\n from: \'example\',\n to: \'example\',\n interval: \'example\',\n context_entities: \'example\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "costs": [\n {\n "timestamp": "1970-01-01T00:00:00.000Z",\n "unit_amount": 1234,\n "unit_amount_currency": "EUR",\n "unit_amount_decimal": "12.34",\n "tax_behavior": "exclusive",\n "tax_rate": 19\n }\n ]\n}\n```\n\n</details>\n\n---\n\n### `getPrices`\n\nGet Prices\n\n`GET /v2/portal/prices`\n\n```ts\nconst { data } = await client.getPrices({\n app_id: \'example\',\n extensionId: \'example\',\n hookId: \'example\',\n meter_id: \'example\',\n from: \'example\',\n to: \'example\',\n interval: \'example\',\n context_entities: \'example\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "prices": [\n {\n "timestamp": "1970-01-01T00:00:00.000Z",\n "unit_amount": 1234,\n "unit_amount_currency": "EUR",\n "unit_amount_decimal": "12.34",\n "components": {\n "auction_price_amount": 1000,\n "auction_price_amount_decimal": "10.00",\n "taxes_levies_amount": 50,\n "taxes_levies_amount_decimal": "0.50",\n "source_fee_amount": 50,\n "source_fee_amount_decimal": "0.50",\n "grid_fee_amount": 100,\n "grid_fee_amount_decimal": "1.00",\n "margin_amount": 34,\n "margin_amount_decimal": "0.34"\n },\n "tax_behavior": "exclusive",\n "tax_rate": 19\n }\n ]\n}\n```\n\n</details>\n\n---\n\n### `getExternalLinks`\n\nRetrieves the portal configuration external links.\n\n`GET /v2/portal/external-links`\n\n```ts\nconst { data } = await client.getExternalLinks({\n origin: \'example\',\n contactId: \'example\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n[\n {\n "id": "string",\n "label": {},\n "type": "link",\n "link": "string",\n "rules": [\n {}\n ],\n "attribute": "string",\n "entity": "string",\n "attribute_value": "string",\n "icon": {\n "name": "string",\n "color": "string",\n "size": 0\n },\n "extension_link_id": ["string"]\n }\n]\n```\n\n</details>\n\n---\n\n### `getExternalLinksV3`\n\nRetrieves the portal configuration external links.\n\n`GET /v3/portal/external-links`\n\n```ts\nconst { data } = await client.getExternalLinksV3({\n portal_id: \'example\',\n contactId: \'example\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n[\n {\n "id": "string",\n "label": {},\n "type": "link",\n "link": "string",\n "rules": [\n {}\n ],\n "attribute": "string",\n "entity": "string",\n "attribute_value": "string",\n "icon": {\n "name": "string",\n "color": "string",\n "size": 0\n },\n "extension_link_id": ["string"]\n }\n]\n```\n\n</details>\n\n---\n\n### `getResolvedSeamlessLink`\n\nRetrieves a resolved seamless portal link.\n\n`GET /v2/portal/resolve:seamless-link`\n\n```ts\nconst { data } = await client.getResolvedSeamlessLink({\n app_id: \'example\',\n extension_id: \'example\',\n link_id: \'example\',\n context_entities: \'example\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "link": "string"\n}\n```\n\n</details>\n\n---\n\n### `getPublicPortalConfig`\n\nRetrieves the public portal configuration.\n\n`GET /v2/portal/public/portal/config`\n\n```ts\nconst { data } = await client.getPublicPortalConfig({\n org_id: \'example\',\n origin: \'example\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "enabled": true,\n "name": "Installer Portal",\n "domain": "abc.com",\n "is_epilot_domain": true,\n "design_id": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "allowed_portal_entities": ["contact", "contract"],\n "self_registration_setting": "ALLOW_WITH_CONTACT_CREATION",\n "user_account_self_management": false,\n "feature_settings": {\n "start_page": true,\n "billing": true,\n "change_due_date": true,\n "new_design": true\n },\n "accessToken": "string",\n "advanced_mfa": {\n "enabled": true\n },\n "auth_settings": {\n "passwordless_login": {\n "enabled": true\n },\n "entry_point": "PASSWORD",\n "preferred_sso_providers": ["office-365-login"],\n "auto_redirect_to_sso": true\n },\n "cognito_details": {\n "cognito_user_pool_client_id": "6bsd0jkgoie74k2i8mrhc1vest",\n "cognito_user_pool_arn": "arn:aws:cognito-idp:us-east-1:123412341234:userpool/us-east-1_123412341",\n "cognito_user_pool_id": "eu-central-1_CUEQRNbUb",\n "timeouts": {\n "refresh_token": 300,\n "access_token": 300,\n "id_token": 300\n },\n "advanced_authentication": {\n "user_activity_logging": true,\n "adaptive_authentication": true,\n "compromised_credentials_detection": true\n },\n "password_policy": {\n "minimum_length": 8,\n "maximum_length": 256,\n "require_lowercase": true,\n "require_uppercase": true,\n "require_numbers": true,\n "require_symbols": true\n }\n },\n "config": "string",\n "contact_identifiers": ["email", "last_name"],\n "approval_state_attributes": {\n "contact": ["name", "address"],\n "contract": ["installment_amount"]\n },\n "email_templates": {\n "confirmAccount": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "advancedAuth": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "advancedMFA": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "journeySignUp": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "journeySignInOneTimePassword": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "journeyLoginOTP": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "forgotPassword": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "invitation": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "partnerInvitation": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "onNewQuote": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "onMapAPendingUser": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "onDocUpload": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "onWorkflowStepAssigned": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "confirmEmailUpdate": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "verifyCodeToSetPassword": "5da0a718-c822-403d-9f5d-20d4584e0528"\n },\n "images": {\n "orderLeftTeaser": "https://epilot-bucket.s3.eu-central-1.amazonaws.com/12344/6538fddb-f0e9-4f0f-af51-6e57891ff20a/order-left-teaser.jpeg",\n "orderRightTeaser": "https://epilot-bucket.s3.eu-central-1.amazonaws.com/12344/6538fddb-f0e9-4f0f-af51-6e57891ff20a/order-right-teaser.jpeg",\n "welcomeBanner": "https://epilot-bucket.s3.eu-central-1.amazonaws.com/12344/6538fddb-f0e9-4f0f-af51-6e57891ff20a/welcome-banner.jpeg"\n },\n "entity_identifiers": {\n "type": {\n "isEnabled": true,\n "attributes": ["contract_number"]\n }\n },\n "contract_identifiers": [\n {\n "name": "email",\n "schema": "contact"\n },\n {\n "name": "last_name",\n "schema": "contact"\n }\n ],\n "contract_selector_config": {\n "show_inactive": true,\n "title_path": "string"\n },\n "registration_identifiers": [\n {\n "name": "last_name",\n "schema": "contact"\n },\n {\n "name": "contract_number",\n "schema": "contract"\n }\n ],\n "triggered_journeys": [\n {\n "trigger_name": "FIRST_LOGIN",\n "journey_id": "5da0a718-c822-403d-9f5d-20d4584e0528"\n }\n ],\n "entity_edit_rules": [\n {\n "slug": "contact",\n "attribute": "first_name",\n "rule_type": "cadence",\n "cadence_period_type": "days",\n "cadence_period": 1,\n "changes_allowed": 1,\n "grace_period": 1,\n "allowed_increment": "10%",\n "allowed_decrement": "10%",\n "number_of_days_before_restriction": 10\n }\n ],\n "allowed_file_extensions": {\n "document": ["pdf"],\n "image": ["jpg"],\n "spreadsheet": ["xls"],\n "presentation": ["ppt"],\n "audioVideo": ["mp4"],\n "email": ["eml"],\n "archive": ["zip"],\n "cad": ["cad"],\n "calendar": ["ics"],\n "other": ["txt"]\n },\n "prevent_search_engine_indexing": true,\n "meter_reading_grace_period": 0,\n "inactive_contract_cutoff_years": 0,\n "is_dummy": true,\n "is_v3_item": true,\n "portal_id": "453ad7bf-86d5-46c8-8252-bcc868df5e3c",\n "portal_sk_v3": "PORTAL_CONFIG#453ad7bf-86d5-46c8-8252-bcc868df5e3c",\n "origin": "string",\n "pages": {},\n "id": 12345,\n "organization_id": 12345,\n "org_settings": {\n "canary": {\n "enabled": true\n },\n "notracking": {\n "enabled": true\n }\n },\n "feature_flags": {},\n "grants": [\n {\n "action": "entity-read",\n "resource": "entity:123:contact:f7c22299-ca72-4bca-8538-0a88eeefc947",\n "effect": "allow"\n }\n ],\n "identity_providers": [\n {\n "slug": "office-365-login",\n "display_name": "Office 365 Login",\n "oidc_config": {},\n "mobile_oidc_config": {}\n }\n ]\n}\n```\n\n</details>\n\n---\n\n### `getOrgPortalConfig`\n\nRetrieves the portal configuration for the organization.\n\n`GET /v2/portal/org/portal/config`\n\n```ts\nconst { data } = await client.getOrgPortalConfig({\n origin: \'example\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "enabled": true,\n "name": "Installer Portal",\n "domain": "abc.com",\n "is_epilot_domain": true,\n "design_id": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "allowed_portal_entities": ["contact", "contract"],\n "self_registration_setting": "ALLOW_WITH_CONTACT_CREATION",\n "user_account_self_management": false,\n "feature_settings": {\n "start_page": true,\n "billing": true,\n "change_due_date": true,\n "new_design": true\n },\n "accessToken": "string",\n "advanced_mfa": {\n "enabled": true\n },\n "auth_settings": {\n "passwordless_login": {\n "enabled": true\n },\n "entry_point": "PASSWORD",\n "preferred_sso_providers": ["office-365-login"],\n "auto_redirect_to_sso": true\n },\n "cognito_details": {\n "cognito_user_pool_client_id": "6bsd0jkgoie74k2i8mrhc1vest",\n "cognito_user_pool_arn": "arn:aws:cognito-idp:us-east-1:123412341234:userpool/us-east-1_123412341",\n "cognito_user_pool_id": "eu-central-1_CUEQRNbUb",\n "timeouts": {\n "refresh_token": 300,\n "access_token": 300,\n "id_token": 300\n },\n "advanced_authentication": {\n "user_activity_logging": true,\n "adaptive_authentication": true,\n "compromised_credentials_detection": true\n },\n "password_policy": {\n "minimum_length": 8,\n "maximum_length": 256,\n "require_lowercase": true,\n "require_uppercase": true,\n "require_numbers": true,\n "require_symbols": true\n }\n },\n "config": "string",\n "contact_identifiers": ["email", "last_name"],\n "approval_state_attributes": {\n "contact": ["name", "address"],\n "contract": ["installment_amount"]\n },\n "email_templates": {\n "confirmAccount": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "advancedAuth": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "advancedMFA": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "journeySignUp": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "journeySignInOneTimePassword": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "journeyLoginOTP": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "forgotPassword": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "invitation": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "partnerInvitation": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "onNewQuote": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "onMapAPendingUser": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "onDocUpload": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "onWorkflowStepAssigned": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "confirmEmailUpdate": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "verifyCodeToSetPassword": "5da0a718-c822-403d-9f5d-20d4584e0528"\n },\n "images": {\n "orderLeftTeaser": "https://epilot-bucket.s3.eu-central-1.amazonaws.com/12344/6538fddb-f0e9-4f0f-af51-6e57891ff20a/order-left-teaser.jpeg",\n "orderRightTeaser": "https://epilot-bucket.s3.eu-central-1.amazonaws.com/12344/6538fddb-f0e9-4f0f-af51-6e57891ff20a/order-right-teaser.jpeg",\n "welcomeBanner": "https://epilot-bucket.s3.eu-central-1.amazonaws.com/12344/6538fddb-f0e9-4f0f-af51-6e57891ff20a/welcome-banner.jpeg"\n },\n "entity_identifiers": {\n "type": {\n "isEnabled": true,\n "attributes": ["contract_number"]\n }\n },\n "contract_identifiers": [\n {\n "name": "email",\n "schema": "contact"\n },\n {\n "name": "last_name",\n "schema": "contact"\n }\n ],\n "contract_selector_config": {\n "show_inactive": true,\n "title_path": "string"\n },\n "registration_identifiers": [\n {\n "name": "last_name",\n "schema": "contact"\n },\n {\n "name": "contract_number",\n "schema": "contract"\n }\n ],\n "triggered_journeys": [\n {\n "trigger_name": "FIRST_LOGIN",\n "journey_id": "5da0a718-c822-403d-9f5d-20d4584e0528"\n }\n ],\n "entity_edit_rules": [\n {\n "slug": "contact",\n "attribute": "first_name",\n "rule_type": "cadence",\n "cadence_period_type": "days",\n "cadence_period": 1,\n "changes_allowed": 1,\n "grace_period": 1,\n "allowed_increment": "10%",\n "allowed_decrement": "10%",\n "number_of_days_before_restriction": 10\n }\n ],\n "allowed_file_extensions": {\n "document": ["pdf"],\n "image": ["jpg"],\n "spreadsheet": ["xls"],\n "presentation": ["ppt"],\n "audioVideo": ["mp4"],\n "email": ["eml"],\n "archive": ["zip"],\n "cad": ["cad"],\n "calendar": ["ics"],\n "other": ["txt"]\n },\n "prevent_search_engine_indexing": true,\n "meter_reading_grace_period": 0,\n "inactive_contract_cutoff_years": 0,\n "is_dummy": true,\n "is_v3_item": true,\n "portal_id": "453ad7bf-86d5-46c8-8252-bcc868df5e3c",\n "portal_sk_v3": "PORTAL_CONFIG#453ad7bf-86d5-46c8-8252-bcc868df5e3c",\n "origin": "string",\n "pages": {},\n "id": 12345,\n "organization_id": 12345,\n "org_settings": {\n "canary": {\n "enabled": true\n },\n "notracking": {\n "enabled": true\n }\n },\n "feature_flags": {},\n "grants": [\n {\n "action": "entity-read",\n "resource": "entity:123:contact:f7c22299-ca72-4bca-8538-0a88eeefc947",\n "effect": "allow"\n }\n ],\n "identity_providers": [\n {\n "slug": "office-365-login",\n "display_name": "Office 365 Login",\n "oidc_config": {},\n "mobile_oidc_config": {}\n }\n ],\n "certificate_details": {\n "status": "PENDING_VALIDATION",\n "failed_reason": "CAA_ERROR"\n }\n}\n```\n\n</details>\n\n---\n\n### `getPublicPortalConfigV3`\n\nRetrieves the public portal configuration.\n\n`GET /v3/portal/public/portal/config`\n\n```ts\nconst { data } = await client.getPublicPortalConfigV3({\n org_id: \'example\',\n portal_id: \'example\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "enabled": true,\n "name": "Installer Portal",\n "domain": "abc.com",\n "is_epilot_domain": true,\n "design_id": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "allowed_portal_entities": ["contact", "contract"],\n "self_registration_setting": "ALLOW_WITH_CONTACT_CREATION",\n "user_account_self_management": false,\n "feature_settings": {\n "start_page": true,\n "billing": true,\n "change_due_date": true,\n "new_design": true\n },\n "accessToken": "string",\n "advanced_mfa": {\n "enabled": true\n },\n "auth_settings": {\n "passwordless_login": {\n "enabled": true\n },\n "entry_point": "PASSWORD",\n "preferred_sso_providers": ["office-365-login"],\n "auto_redirect_to_sso": true\n },\n "cognito_details": {\n "cognito_user_pool_client_id": "6bsd0jkgoie74k2i8mrhc1vest",\n "cognito_user_pool_arn": "arn:aws:cognito-idp:us-east-1:123412341234:userpool/us-east-1_123412341",\n "cognito_user_pool_id": "eu-central-1_CUEQRNbUb",\n "timeouts": {\n "refresh_token": 300,\n "access_token": 300,\n "id_token": 300\n },\n "advanced_authentication": {\n "user_activity_logging": true,\n "adaptive_authentication": true,\n "compromised_credentials_detection": true\n },\n "password_policy": {\n "minimum_length": 8,\n "maximum_length": 256,\n "require_lowercase": true,\n "require_uppercase": true,\n "require_numbers": true,\n "require_symbols": true\n }\n },\n "config": "string",\n "contact_identifiers": ["email", "last_name"],\n "approval_state_attributes": {\n "contact": ["name", "address"],\n "contract": ["installment_amount"]\n },\n "email_templates": {\n "confirmAccount": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "advancedAuth": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "advancedMFA": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "journeySignUp": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "journeySignInOneTimePassword": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "journeyLoginOTP": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "forgotPassword": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "invitation": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "partnerInvitation": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "onNewQuote": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "onMapAPendingUser": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "onDocUpload": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "onWorkflowStepAssigned": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "confirmEmailUpdate": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "verifyCodeToSetPassword": "5da0a718-c822-403d-9f5d-20d4584e0528"\n },\n "images": {\n "orderLeftTeaser": "https://epilot-bucket.s3.eu-central-1.amazonaws.com/12344/6538fddb-f0e9-4f0f-af51-6e57891ff20a/order-left-teaser.jpeg",\n "orderRightTeaser": "https://epilot-bucket.s3.eu-central-1.amazonaws.com/12344/6538fddb-f0e9-4f0f-af51-6e57891ff20a/order-right-teaser.jpeg",\n "welcomeBanner": "https://epilot-bucket.s3.eu-central-1.amazonaws.com/12344/6538fddb-f0e9-4f0f-af51-6e57891ff20a/welcome-banner.jpeg"\n },\n "entity_identifiers": {\n "type": {\n "isEnabled": true,\n "attributes": ["contract_number"]\n }\n },\n "contract_identifiers": [\n {\n "name": "email",\n "schema": "contact"\n },\n {\n "name": "last_name",\n "schema": "contact"\n }\n ],\n "contract_selector_config": {\n "show_inactive": true,\n "title_path": "string"\n },\n "registration_identifiers": [\n {\n "name": "last_name",\n "schema": "contact"\n },\n {\n "name": "contract_number",\n "schema": "contract"\n }\n ],\n "triggered_journeys": [\n {\n "trigger_name": "FIRST_LOGIN",\n "journey_id": "5da0a718-c822-403d-9f5d-20d4584e0528"\n }\n ],\n "entity_edit_rules": [\n {\n "slug": "contact",\n "attribute": "first_name",\n "rule_type": "cadence",\n "cadence_period_type": "days",\n "cadence_period": 1,\n "changes_allowed": 1,\n "grace_period": 1,\n "allowed_increment": "10%",\n "allowed_decrement": "10%",\n "number_of_days_before_restriction": 10\n }\n ],\n "allowed_file_extensions": {\n "document": ["pdf"],\n "image": ["jpg"],\n "spreadsheet": ["xls"],\n "presentation": ["ppt"],\n "audioVideo": ["mp4"],\n "email": ["eml"],\n "archive": ["zip"],\n "cad": ["cad"],\n "calendar": ["ics"],\n "other": ["txt"]\n },\n "prevent_search_engine_indexing": true,\n "meter_reading_grace_period": 0,\n "inactive_contract_cutoff_years": 0,\n "is_dummy": true,\n "is_v3_item": true,\n "portal_id": "453ad7bf-86d5-46c8-8252-bcc868df5e3c",\n "portal_sk_v3": "PORTAL_CONFIG#453ad7bf-86d5-46c8-8252-bcc868df5e3c",\n "origin": "string",\n "pages": {},\n "id": 12345,\n "organization_id": 12345,\n "org_settings": {\n "canary": {\n "enabled": true\n },\n "notracking": {\n "enabled": true\n }\n },\n "feature_flags": {},\n "grants": [\n {\n "action": "entity-read",\n "resource": "entity:123:contact:f7c22299-ca72-4bca-8538-0a88eeefc947",\n "effect": "allow"\n }\n ],\n "identity_providers": [\n {\n "slug": "office-365-login",\n "display_name": "Office 365 Login",\n "oidc_config": {},\n "mobile_oidc_config": {}\n }\n ]\n}\n```\n\n</details>\n\n---\n\n### `getOrgPortalConfigV3`\n\nRetrieves the portal configuration for the organization.\n\n`GET /v3/portal/org/portal/config`\n\n```ts\nconst { data } = await client.getOrgPortalConfigV3({\n portal_id: \'example\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "enabled": true,\n "name": "Installer Portal",\n "domain": "abc.com",\n "is_epilot_domain": true,\n "design_id": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "allowed_portal_entities": ["contact", "contract"],\n "self_registration_setting": "ALLOW_WITH_CONTACT_CREATION",\n "user_account_self_management": false,\n "feature_settings": {\n "start_page": true,\n "billing": true,\n "change_due_date": true,\n "new_design": true\n },\n "accessToken": "string",\n "advanced_mfa": {\n "enabled": true\n },\n "auth_settings": {\n "passwordless_login": {\n "enabled": true\n },\n "entry_point": "PASSWORD",\n "preferred_sso_providers": ["office-365-login"],\n "auto_redirect_to_sso": true\n },\n "cognito_details": {\n "cognito_user_pool_client_id": "6bsd0jkgoie74k2i8mrhc1vest",\n "cognito_user_pool_arn": "arn:aws:cognito-idp:us-east-1:123412341234:userpool/us-east-1_123412341",\n "cognito_user_pool_id": "eu-central-1_CUEQRNbUb",\n "timeouts": {\n "refresh_token": 300,\n "access_token": 300,\n "id_token": 300\n },\n "advanced_authentication": {\n "user_activity_logging": true,\n "adaptive_authentication": true,\n "compromised_credentials_detection": true\n },\n "password_policy": {\n "minimum_length": 8,\n "maximum_length": 256,\n "require_lowercase": true,\n "require_uppercase": true,\n "require_numbers": true,\n "require_symbols": true\n }\n },\n "config": "string",\n "contact_identifiers": ["email", "last_name"],\n "approval_state_attributes": {\n "contact": ["name", "address"],\n "contract": ["installment_amount"]\n },\n "email_templates": {\n "confirmAccount": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "advancedAuth": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "advancedMFA": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "journeySignUp": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "journeySignInOneTimePassword": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "journeyLoginOTP": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "forgotPassword": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "invitation": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "partnerInvitation": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "onNewQuote": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "onMapAPendingUser": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "onDocUpload": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "onWorkflowStepAssigned": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "confirmEmailUpdate": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "verifyCodeToSetPassword": "5da0a718-c822-403d-9f5d-20d4584e0528"\n },\n "images": {\n "orderLeftTeaser": "https://epilot-bucket.s3.eu-central-1.amazonaws.com/12344/6538fddb-f0e9-4f0f-af51-6e57891ff20a/order-left-teaser.jpeg",\n "orderRightTeaser": "https://epilot-bucket.s3.eu-central-1.amazonaws.com/12344/6538fddb-f0e9-4f0f-af51-6e57891ff20a/order-right-teaser.jpeg",\n "welcomeBanner": "https://epilot-bucket.s3.eu-central-1.amazonaws.com/12344/6538fddb-f0e9-4f0f-af51-6e57891ff20a/welcome-banner.jpeg"\n },\n "entity_identifiers": {\n "type": {\n "isEnabled": true,\n "attributes": ["contract_number"]\n }\n },\n "contract_identifiers": [\n {\n "name": "email",\n "schema": "contact"\n },\n {\n "name": "last_name",\n "schema": "contact"\n }\n ],\n "contract_selector_config": {\n "show_inactive": true,\n "title_path": "string"\n },\n "registration_identifiers": [\n {\n "name": "last_name",\n "schema": "contact"\n },\n {\n "name": "contract_number",\n "schema": "contract"\n }\n ],\n "triggered_journeys": [\n {\n "trigger_name": "FIRST_LOGIN",\n "journey_id": "5da0a718-c822-403d-9f5d-20d4584e0528"\n }\n ],\n "entity_edit_rules": [\n {\n "slug": "contact",\n "attribute": "first_name",\n "rule_type": "cadence",\n "cadence_period_type": "days",\n "cadence_period": 1,\n "changes_allowed": 1,\n "grace_period": 1,\n "allowed_increment": "10%",\n "allowed_decrement": "10%",\n "number_of_days_before_restriction": 10\n }\n ],\n "allowed_file_extensions": {\n "document": ["pdf"],\n "image": ["jpg"],\n "spreadsheet": ["xls"],\n "presentation": ["ppt"],\n "audioVideo": ["mp4"],\n "email": ["eml"],\n "archive": ["zip"],\n "cad": ["cad"],\n "calendar": ["ics"],\n "other": ["txt"]\n },\n "prevent_search_engine_indexing": true,\n "meter_reading_grace_period": 0,\n "inactive_contract_cutoff_years": 0,\n "is_dummy": true,\n "is_v3_item": true,\n "portal_id": "453ad7bf-86d5-46c8-8252-bcc868df5e3c",\n "portal_sk_v3": "PORTAL_CONFIG#453ad7bf-86d5-46c8-8252-bcc868df5e3c",\n "origin": "string",\n "pages": {},\n "id": 12345,\n "organization_id": 12345,\n "org_settings": {\n "canary": {\n "enabled": true\n },\n "notracking": {\n "enabled": true\n }\n },\n "feature_flags": {},\n "grants": [\n {\n "action": "entity-read",\n "resource": "entity:123:contact:f7c22299-ca72-4bca-8538-0a88eeefc947",\n "effect": "allow"\n }\n ],\n "identity_providers": [\n {\n "slug": "office-365-login",\n "display_name": "Office 365 Login",\n "oidc_config": {},\n "mobile_oidc_config": {}\n }\n ],\n "certificate_details": {\n "status": "PENDING_VALIDATION",\n "failed_reason": "CAA_ERROR"\n }\n}\n```\n\n</details>\n\n---\n\n### `getAllPortalConfigs`\n\nRetrieves all portal configurations.\n\n`GET /v2/portal/configs`\n\n```ts\nconst { data } = await client.getAllPortalConfigs()\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "data": [\n {\n "enabled": true,\n "name": "Installer Portal",\n "domain": "abc.com",\n "is_epilot_domain": true,\n "design_id": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "allowed_portal_entities": ["contact", "contract"],\n "self_registration_setting": "ALLOW_WITH_CONTACT_CREATION",\n "user_account_self_management": false,\n "feature_settings": {},\n "accessToken": "string",\n "advanced_mfa": {},\n "auth_settings": {},\n "cognito_details": {},\n "config": "string",\n "contact_identifiers": ["email", "last_name"],\n "approval_state_attributes": {},\n "email_templates": {},\n "images": {},\n "entity_identifiers": {},\n "contract_identifiers": [],\n "contract_selector_config": {},\n "registration_identifiers": [],\n "triggered_journeys": [],\n "entity_edit_rules": [],\n "allowed_file_extensions": {},\n "prevent_search_engine_indexing": true,\n "meter_reading_grace_period": 0,\n "inactive_contract_cutoff_years": 0,\n "is_dummy": true,\n "is_v3_item": true,\n "portal_id": "453ad7bf-86d5-46c8-8252-bcc868df5e3c",\n "portal_sk_v3": "PORTAL_CONFIG#453ad7bf-86d5-46c8-8252-bcc868df5e3c",\n "origin": "string",\n "pages": {},\n "id": 12345,\n "organization_id": 12345,\n "org_settings": {},\n "feature_flags": {},\n "grants": [],\n "identity_providers": []\n }\n ]\n}\n```\n\n</details>\n\n---\n\n### `upsertEmailTemplates`\n\nUpserts the email templates of a portal\n\n`POST /v2/portal/email-templates`\n\n```ts\nconst { data } = await client.upsertEmailTemplates(\n {\n origin: \'example\',\n },\n {\n confirmAccount: \'5da0a718-c822-403d-9f5d-20d4584e0528\',\n advancedAuth: \'5da0a718-c822-403d-9f5d-20d4584e0528\',\n advancedMFA: \'5da0a718-c822-403d-9f5d-20d4584e0528\',\n journeySignUp: \'5da0a718-c822-403d-9f5d-20d4584e0528\',\n journeySignInOneTimePassword: \'5da0a718-c822-403d-9f5d-20d4584e0528\',\n journeyLoginOTP: \'5da0a718-c822-403d-9f5d-20d4584e0528\',\n forgotPassword: \'5da0a718-c822-403d-9f5d-20d4584e0528\',\n invitation: \'5da0a718-c822-403d-9f5d-20d4584e0528\',\n partnerInvitation: \'5da0a718-c822-403d-9f5d-20d4584e0528\',\n onNewQuote: \'5da0a718-c822-403d-9f5d-20d4584e0528\',\n onMapAPendingUser: \'5da0a718-c822-403d-9f5d-20d4584e0528\',\n onDocUpload: \'5da0a718-c822-403d-9f5d-20d4584e0528\',\n onWorkflowStepAssigned: \'5da0a718-c822-403d-9f5d-20d4584e0528\',\n confirmEmailUpdate: \'5da0a718-c822-403d-9f5d-20d4584e0528\',\n verifyCodeToSetPassword: \'5da0a718-c822-403d-9f5d-20d4584e0528\'\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "message": "Email Templates upserted successfully",\n "emailTemplates": {\n "confirmAccount": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "advancedAuth": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "advancedMFA": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "journeySignUp": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "journeySignInOneTimePassword": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "journeyLoginOTP": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "forgotPassword": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "invitation": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "partnerInvitation": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "onNewQuote": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "onMapAPendingUser": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "onDocUpload": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "onWorkflowStepAssigned": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "confirmEmailUpdate": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "verifyCodeToSetPassword": "5da0a718-c822-403d-9f5d-20d4584e0528"\n }\n}\n```\n\n</details>\n\n---\n\n### `getEmailTemplates`\n\nRetrieves the email templates of a portal\n\n`GET /v2/portal/email-templates`\n\n```ts\nconst { data } = await client.getEmailTemplates({\n origin: \'example\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "confirmAccount": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "advancedAuth": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "advancedMFA": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "journeySignUp": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "journeySignInOneTimePassword": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "journeyLoginOTP": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "forgotPassword": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "invitation": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "partnerInvitation": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "onNewQuote": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "onMapAPendingUser": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "onDocUpload": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "onWorkflowStepAssigned": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "confirmEmailUpdate": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "verifyCodeToSetPassword": "5da0a718-c822-403d-9f5d-20d4584e0528"\n}\n```\n\n</details>\n\n---\n\n### `upsertEmailTemplatesByPortalId`\n\nUpserts the email templates of a portal by portal ID\n\n`POST /v3/portal/email-templates/{portal_id}`\n\n```ts\nconst { data } = await client.upsertEmailTemplatesByPortalId(\n {\n portal_id: \'example\',\n },\n {\n confirmAccount: \'5da0a718-c822-403d-9f5d-20d4584e0528\',\n advancedAuth: \'5da0a718-c822-403d-9f5d-20d4584e0528\',\n advancedMFA: \'5da0a718-c822-403d-9f5d-20d4584e0528\',\n journeySignUp: \'5da0a718-c822-403d-9f5d-20d4584e0528\',\n journeySignInOneTimePassword: \'5da0a718-c822-403d-9f5d-20d4584e0528\',\n journeyLoginOTP: \'5da0a718-c822-403d-9f5d-20d4584e0528\',\n forgotPassword: \'5da0a718-c822-403d-9f5d-20d4584e0528\',\n invitation: \'5da0a718-c822-403d-9f5d-20d4584e0528\',\n partnerInvitation: \'5da0a718-c822-403d-9f5d-20d4584e0528\',\n onNewQuote: \'5da0a718-c822-403d-9f5d-20d4584e0528\',\n onMapAPendingUser: \'5da0a718-c822-403d-9f5d-20d4584e0528\',\n onDocUpload: \'5da0a718-c822-403d-9f5d-20d4584e0528\',\n onWorkflowStepAssigned: \'5da0a718-c822-403d-9f5d-20d4584e0528\',\n confirmEmailUpdate: \'5da0a718-c822-403d-9f5d-20d4584e0528\',\n verifyCodeToSetPassword: \'5da0a718-c822-403d-9f5d-20d4584e0528\'\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "message": "Email Templates upserted successfully",\n "emailTemplates": {\n "confirmAccount": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "advancedAuth": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "advancedMFA": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "journeySignUp": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "journeySignInOneTimePassword": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "journeyLoginOTP": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "forgotPassword": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "invitation": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "partnerInvitation": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "onNewQuote": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "onMapAPendingUser": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "onDocUpload": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "onWorkflowStepAssigned": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "confirmEmailUpdate": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "verifyCodeToSetPassword": "5da0a718-c822-403d-9f5d-20d4584e0528"\n }\n}\n```\n\n</details>\n\n---\n\n### `getEmailTemplatesByPortalId`\n\nRetrieves the email templates of a portal by portal ID\n\n`GET /v3/portal/email-templates/{portal_id}`\n\n```ts\nconst { data } = await client.getEmailTemplatesByPortalId({\n portal_id: \'example\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "confirmAccount": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "advancedAuth": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "advancedMFA": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "journeySignUp": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "journeySignInOneTimePassword": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "journeyLoginOTP": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "forgotPassword": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "invitation": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "partnerInvitation": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "onNewQuote": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "onMapAPendingUser": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "onDocUpload": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "onWorkflowStepAssigned": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "confirmEmailUpdate": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "verifyCodeToSetPassword": "5da0a718-c822-403d-9f5d-20d4584e0528"\n}\n```\n\n</details>\n\n---\n\n### `getPublicPortalWidgets`\n\nRetrieves the public widgets of a portal\n\n`GET /v2/portal/public-widgets`\n\n```ts\nconst { data } = await client.getPublicPortalWidgets({\n org_id: \'example\',\n origin: \'example\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "widgets": [\n {\n "id": "string",\n "type": "ACTION_WIDGET",\n "listIndex": 0,\n "headline": {\n "en": "string",\n "de": "string"\n },\n "subHeadline": {\n "en": "string",\n "de": "string"\n },\n "schema": "string"\n },\n {\n "id": "string",\n "type": "ACTION_WIDGET",\n "listIndex": 0,\n "headline": {\n "en": "string",\n "de": "string"\n },\n "subHeadline": {\n "en": "string",\n "de": "string"\n },\n "content": "string"\n }\n ]\n}\n```\n\n</details>\n\n---\n\n### `upsertPortalWidget`\n\nUpsert widget for a portal of an organization.\n\n`POST /v2/portal/widgets`\n\n```ts\nconst { data } = await client.upsertPortalWidget(\n {\n origin: \'example\',\n },\n {\n widgets: [\n {\n id: \'string\',\n type: \'ACTION_WIDGET\',\n listIndex: 0,\n headline: {\n en: \'string\',\n de: \'string\'\n },\n subHeadline: {\n en: \'string\',\n de: \'string\'\n },\n schema: \'string\'\n },\n {\n id: \'string\',\n type: \'ACTION_WIDGET\',\n listIndex: 0,\n headline: {\n en: \'string\',\n de: \'string\'\n },\n subHeadline: {\n en: \'string\',\n de: \'string\'\n },\n content: \'string\'\n },\n /* ... 8 more */\n ]\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "widgets": [\n {\n "id": "string",\n "type": "ACTION_WIDGET",\n "listIndex": 0,\n "headline": {\n "en": "string",\n "de": "string"\n },\n "subHeadline": {\n "en": "string",\n "de": "string"\n },\n "schema": "string"\n },\n {\n "id": "string",\n "type": "ACTION_WIDGET",\n "listIndex": 0,\n "headline": {\n "en": "string",\n "de": "string"\n },\n "subHeadline": {\n "en": "string",\n "de": "string"\n },\n "content": "string"\n }\n ]\n}\n```\n\n</details>\n\n---\n\n### `getPortalWidgets`\n\nRetrieves the widgets of a portal\n\n`GET /v2/portal/widgets`\n\n```ts\nconst { data } = await client.getPortalWidgets({\n origin: \'example\',\n contract_id: \'example\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "widgets": [\n {\n "id": "string",\n "type": "ACTION_WIDGET",\n "listIndex": 0,\n "headline": {\n "en": "string",\n "de": "string"\n },\n "subHeadline": {\n "en": "string",\n "de": "string"\n },\n "schema": "string"\n },\n {\n "id": "string",\n "type": "ACTION_WIDGET",\n "listIndex": 0,\n "headline": {\n "en": "string",\n "de": "string"\n },\n "subHeadline": {\n "en": "string",\n "de": "string"\n },\n "content": "string"\n }\n ]\n}\n```\n\n</details>\n\n---\n\n### `replaceECPTemplateVariables`\n\nReplaces the template variables of a portal\n\n`POST /v2/portal/replace-ecp-template-variables`\n\n```ts\nconst { data } = await client.replaceECPTemplateVariables(\n null,\n {\n template_id: \'5da0a718-c822-403d-9f5d-20d4584e0528\',\n entity_context: {}\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "customerPortal": {\n "invitationLink": "https://end-customer-portal.ecp.dev.epilot.io/register?contactId=7aa44fb8-d60e-40cc-9a3a-ba09a1ff7f51&email=john@doe.com",\n "newDocumentLink": "https://end-customer-portal.ecp.dev.epilot.io/requests/opportunities/b8fef220-abe0-4382-a704-26848f60977b",\n "entityLink": "https://end-customer-portal.ecp.dev.epilot.io/requests/opportunities/b8fef220-abe0-4382-a704-26848f60977b",\n "userEmailsOnEntity": ["john@doe.com", "mary@doe.com"]\n },\n "installerPortal": {\n "invitationLink": "https://installer-portal.ecp.dev.epilot.io/register?contactId=7aa44fb8-d60e-40cc-9a3a-ba09a1ff7f51&email=john@doe.com",\n "newDocumentLink": "https://installer-portal.ecp.dev.epilot.io/requests/opportunities/b8fef220-abe0-4382-a704-26848f60977b",\n "entityLink": "https://installer-portal.ecp.dev.epilot.io/requests/opportunities/b8fef220-abe0-4382-a704-26848f60977b",\n "userEmailsOnEntity": ["peter@doe.com", "jane@doe.com"]\n },\n "portalUser": {\n "invitationLink": "https://employee-portal.ecp.dev.epilot.io/register?contactId=7aa44fb8-d60e-40cc-9a3a-ba09a1ff7f51&email=john@doe.com",\n "newDocumentLink": "https://employee-portal.ecp.dev.epilot.io/requests/opportunities/b8fef220-abe0-4382-a704-26848f60977b",\n "entityLink": "https://employee-portal.ecp.dev.epilot.io/requests/opportunities/b8fef220-abe0-4382-a704-26848f60977b",\n "userEmailsOnEntity": ["peter@doe.com", "jane@doe.com"]\n }\n}\n```\n\n</details>\n\n---\n\n### `getSchemas`\n\nRetrieves the schemas. Only schemas usable in the private part of the portal are returned.\n\n`GET /v2/portal/schemas`\n\n```ts\nconst { data } = await client.getSchemas()\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "schemas": [\n {\n "slug": "contact"\n }\n ]\n}\n```\n\n</details>\n\n---\n\n### `getSchemasByDomain`\n\nRetrieves schemas by domain. Only schemas and attributes used on public pages are returned.\n\n`GET /v2/portal/public/schemas`\n\n```ts\nconst { data } = await client.getSchemasByDomain({\n domain: \'example\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "schemas": [\n {\n "slug": "contact"\n }\n ]\n}\n```\n\n</details>\n\n---\n\n### `getOrganizationSettingsByDomain`\n\nRetrieves organization settings by domain. Only public organization settings are returned.\n\n`GET /v2/portal/public/org/settings`\n\n```ts\nconst { data } = await client.getOrganizationSettingsByDomain({\n domain: \'example\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "data": {\n "automation_entity_mapping": {\n "enabled": true\n },\n "automation_preview": {\n "enabled": true\n },\n "central_inbox_preview_setting": {\n "enabled": true\n },\n "contracts_preview_setting": {\n "enabled": true\n },\n "disable_ivy": {\n "enabled": true\n },\n "double_opt_in": {\n "enabled": true\n },\n "ecommerce_catalog_preview": {\n "enabled": true\n },\n "ecommerce_opportunities_preview": {\n "enabled": true\n },\n "ecommerce_preview": {\n "enabled": true\n },\n "end_customer_portal": {\n "enabled": true\n },\n "installer_portal": {\n "enabled": true\n },\n "entity_schema_builder": {\n "enabled": true\n },\n "logic_editor_preview": {\n "enabled": true\n },\n "new_navigation": {\n "enabled": true\n },\n "partnering": {\n "enabled": true\n },\n "product-availability": {\n "enabled": true\n },\n "sso": {\n "enabled": true\n },\n "submission_preview": {\n "enabled": true\n },\n "user_roles_preview": {\n "enabled": true\n }\n }\n}\n```\n\n</details>\n\n---\n\n### `extraPermissionAttributes`\n\nRetrieves the extra permission attributes.\n\n`GET /v2/portal/extra-permission-attributes`\n\n```ts\nconst { data } = await client.extraPermissionAttributes()\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "data": {\n "contact": [\n {\n "name": "string",\n "label": "string",\n "group": "string"\n }\n ],\n "contract": [\n {\n "name": "string",\n "label": "string",\n "group": "string"\n }\n ],\n "order": [\n {\n "name": "string",\n "label": "string",\n "group": "string"\n }\n ],\n "opportunity": [\n {\n "name": "string",\n "label": "string",\n "group": "string"\n }\n ],\n "meter": [\n {\n "name": "string",\n "label": "string",\n "group": "string"\n }\n ],\n "meter_counter": [\n {\n "name": "string",\n "label": "string",\n "group": "string"\n }\n ]\n }\n}\n```\n\n</details>\n\n---\n\n### `validateCaaRecords`\n\nValidates the CAA records of a portal\n\n`POST /v2/portal/validate/caa-records`\n\n```ts\nconst { data } = await client.validateCaaRecords({\n origin: \'example\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "retry": true,\n "message": "string",\n "isDNSConfigured": true\n}\n```\n\n</details>\n\n---\n\n### `validateCaaRecordsV3`\n\nValidates the CAA records of a portal\n\n`POST /v3/portal/validate/caa-records`\n\n```ts\nconst { data } = await client.validateCaaRecordsV3({\n portal_id: \'example\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "retry": true,\n "message": "string",\n "isDNSConfigured": true\n}\n```\n\n</details>\n\n---\n\n### `getContact`\n\nRetrieves the contact of the logged in user.\n\n`GET /v2/portal/contact`\n\n```ts\nconst { data } = await client.getContact()\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "entity": {\n "_id": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "_title": "Example Entity",\n "_org": "123",\n "_tags": ["example", "mock"],\n "_created_at": "2021-02-09T12:41:43.662Z",\n "_updated_at": "2021-02-09T12:41:43.662Z",\n "_schema": "contact"\n },\n "files": [\n {\n "_id": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "_title": "Example Entity",\n "_org": "123",\n "_tags": ["example", "mock"],\n "_created_at": "2021-02-09T12:41:43.662Z",\n "_updated_at": "2021-02-09T12:41:43.662Z",\n "_schema": "file"\n }\n ],\n "relations": [\n {\n "_id": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "_title": "Example Entity",\n "_org": "123",\n "_tags": ["example", "mock"],\n "_created_at": "2021-02-09T12:41:43.662Z",\n "_updated_at": "2021-02-09T12:41:43.662Z",\n "templates_output": {\n "content_top_name": "Customer #123456",\n "main_content_name": "Orange Flexible A2 (654321)",\n "content_bottom_name": "Porscheplatz 1, 70435 Stuttgart, Germany",\n "nested_content": {\n "title": "Orange Flexible A2",\n "subtitle": "654321"\n }\n },\n "_schema": "contact"\n }\n ],\n "journey_actions": [\n {\n "journey_id": "string",\n "action_label": {\n "en": "string",\n "de": "string"\n },\n "slug": "string",\n "rules": [\n {\n "entity": "string",\n "attribute": "string",\n "attribute_value": "string"\n }\n ]\n }\n ]\n}\n```\n\n</details>\n\n---\n\n### `updateContact`\n\nUpdates the contact details.\n\n`PATCH /v2/portal/contact`\n\n```ts\nconst { data } = await client.updateContact(\n null,\n {},\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "data": {\n "_id": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "_title": "Example Entity",\n "_org": "123",\n "_tags": ["example", "mock"],\n "_created_at": "2021-02-09T12:41:43.662Z",\n "_updated_at": "2021-02-09T12:41:43.662Z",\n "_schema": "contact"\n }\n}\n```\n\n</details>\n\n---\n\n### `getECPContact`\n\nGet the Contact by id\n\n`GET /v2/portal/ecp/contact`\n\n```ts\nconst { data } = await client.getECPContact({\n id: \'123e4567-e89b-12d3-a456-426614174000\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "data": {\n "_id": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "_title": "Example Entity",\n "_org": "123",\n "_tags": ["example", "mock"],\n "_created_at": "2021-02-09T12:41:43.662Z",\n "_updated_at": "2021-02-09T12:41:43.662Z",\n "_schema": "contact"\n }\n}\n```\n\n</details>\n\n---\n\n### `checkContactExists`\n\nTrue if contact with given identifiers exists.\n\n`POST /v2/portal/public/contact/exists`\n\n```ts\nconst { data } = await client.checkContactExists(\n {\n origin: \'example\',\n },\n {\n org_id: 728,\n registration_identifiers: {\n contact: {\n email: \'john.doe@example.com\'\n },\n contract: {\n contract_number: \'123456\'\n }\n }\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "exists": true,\n "contactId": "5da0a718-c822-403d-9f5d-20d4584e0528"\n}\n```\n\n</details>\n\n---\n\n### `checkContactExistsV3`\n\nTrue if contact with given identifiers exists.\n\n`POST /v3/portal/public/contact/exists`\n\n```ts\nconst { data } = await client.checkContactExistsV3(\n {\n portal_id: \'example\',\n },\n {\n org_id: 728,\n registration_identifiers: {\n contact: {\n email: \'john.doe@example.com\'\n },\n contract: {\n contract_number: \'123456\'\n }\n }\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "exists": true,\n "contactId": "5da0a718-c822-403d-9f5d-20d4584e0528"\n}\n```\n\n</details>\n\n---\n\n### `getValidSecondaryAttributes`\n\nGet valid secondary attributes that are used while mapping a contact on registration\n\n`GET /v2/portal/contact/valid/secondary/attributes`\n\n```ts\nconst { data } = await client.getValidSecondaryAttributes()\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "data": [\n {\n "name": "first_name",\n "type": "string"\n }\n ]\n}\n```\n\n</details>\n\n---\n\n### `getPortalUser`\n\nGet the portal user details\n\n`GET /v2/portal/user`\n\n```ts\nconst { data } = await client.getPortalUser()\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "data": {\n "_id": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "_title": "Example Entity",\n "_org": "123",\n "_tags": ["example", "mock"],\n "_created_at": "2021-02-09T12:41:43.662Z",\n "_updated_at": "2021-02-09T12:41:43.662Z",\n "_schema": "portal_user"\n }\n}\n```\n\n</details>\n\n---\n\n### `updatePortalUser`\n\nUpdate the portal user details\n\n`PATCH /v2/portal/user`\n\n```ts\nconst { data } = await client.updatePortalUser(\n null,\n {},\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "data": {\n "_id": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "_title": "Example Entity",\n "_org": "123",\n "_tags": ["example", "mock"],\n "_created_at": "2021-02-09T12:41:43.662Z",\n "_updated_at": "2021-02-09T12:41:43.662Z",\n "_schema": "portal_user"\n }\n}\n```\n\n</details>\n\n---\n\n### `deletePortalUser`\n\nDelete the portal user\n\n`DELETE /v2/portal/user`\n\n```ts\nconst { data } = await client.deletePortalUser()\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "message": "User Succesfully Deleted",\n "data": "5da0a718-c822-403d-9f5d-20d4584e0528"\n}\n```\n\n</details>\n\n---\n\n### `updatePortalUserEmail`\n\nUpdate portal user email\n\n`PUT /v2/portal/user/update/email`\n\n```ts\nconst { data } = await client.updatePortalUserEmail(\n null,\n {\n email: \'john@doe.com\',\n password: \'string\'\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "message": "You will receive a confirmation mail soon on your updated email address."\n}\n```\n\n</details>\n\n---\n\n### `resendConfirmationEmail`\n\nResend confirmation email\n\n`POST /v2/portal/user/resend/confirmation-email/{id}`\n\n```ts\nconst { data } = await client.resendConfirmationEmail({\n id: \'123e4567-e89b-12d3-a456-426614174000\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "message": "Confirmation email sent successfully."\n}\n```\n\n</details>\n\n---\n\n### `fetchPortalUsersByRelatedEntity`\n\nGet all users for a given entity\n\n`GET /v2/portal/users/by-related-entity`\n\n```ts\nconst { data } = await client.fetchPortalUsersByRelatedEntity({\n entity_id: \'example\',\n slug: \'example\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "portalUsers": [\n {\n "_id": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "_title": "Example Entity",\n "_org": "123",\n "_tags": ["example", "mock"],\n "_created_at": "2021-02-09T12:41:43.662Z",\n "_updated_at": "2021-02-09T12:41:43.662Z",\n "_schema": "portal_user"\n }\n ]\n}\n```\n\n</details>\n\n---\n\n### `confirmUser`\n\nConfirm a portal user\n\n`GET /v2/portal/user/confirm`\n\n```ts\nconst { data } = await client.confirmUser({\n confirmation_link_token: \'example\',\n use_redirect: true,\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "confirmed": true,\n "user_already_confirmed": true\n}\n```\n\n</details>\n\n---\n\n### `confirmUserWithUserId`\n\nConfirm a portal user\n\n`GET /v2/portal/user/confirm/{id}`\n\n```ts\nconst { data } = await client.confirmUserWithUserId({\n origin: \'example\',\n id: \'123e4567-e89b-12d3-a456-426614174000\',\n org_id: \'example\',\n})\n```\n\n---\n\n### `userExists`\n\nChecks whether a user exists in the portal\n\n`GET /v2/portal/public/user/exists`\n\n```ts\nconst { data } = await client.userExists({\n email: \'example\',\n org_id: \'example\',\n origin: \'example\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "exists": true\n}\n```\n\n</details>\n\n---\n\n### `userExistsV3`\n\nChecks whether a user exists in the portal\n\n`GET /v3/portal/public/user/exists`\n\n```ts\nconst { data } = await client.userExistsV3({\n email: \'example\',\n org_id: \'example\',\n portal_id: \'example\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "exists": true\n}\n```\n\n</details>\n\n---\n\n### `getRecipientsToNotifyOnAutomation`\n\nGet recipients to notify on automation\n\n`POST /v2/portal/recipients-to-notify`\n\n```ts\nconst { data } = await client.getRecipientsToNotifyOnAutomation(\n null,\n {\n emails: [\'john@doe.com\'],\n template_id: \'5da0a718-c822-403d-9f5d-20d4584e0528\',\n context_id: \'5da0a718-c822-403d-9f5d-20d4584e0528\'\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "recipients": [\n {\n "email": "john@doe.com",\n "recipient_id": "5da0a718-c822-403d-9f5d-20d4584e0528"\n }\n ],\n "message": "string"\n}\n```\n\n</details>\n\n---\n\n### `configureDistribution`\n\nConfigure the distribution for the portal\'s custom domain\n\n`GET /v2/portal/configure-distribution`\n\n```ts\nconst { data } = await client.configureDistribution({\n origin: \'example\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "domainName": "dsj8op4ha01jha23.cloudfront.net"\n}\n```\n\n</details>\n\n---\n\n### `configureDistributionV3`\n\nConfigure the distribution for the portal\'s custom domain\n\n`GET /v3/portal/configure-distribution`\n\n```ts\nconst { data } = await client.configureDistributionV3({\n portal_id: \'example\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "domainName": "dsj8op4ha01jha23.cloudfront.net"\n}\n```\n\n</details>\n\n---\n\n### `getAllOrders`\n\nGet all orders for the portal user\n\n`GET /v2/portal/order`\n\n```ts\nconst { data } = await client.getAllOrders({\n from: 1,\n size: 1,\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "data": [\n {\n "_id": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "_title": "Example Entity",\n "_org": "123",\n "_tags": ["example", "mock"],\n "_created_at": "2021-02-09T12:41:43.662Z",\n "_updated_at": "2021-02-09T12:41:43.662Z",\n "_schema": "order",\n "journey_actions": {\n "journey_id": "string",\n "action_label": {\n "en": "string",\n "de": "string"\n },\n "slug": "string",\n "rules": [\n {\n "entity": "string",\n "attribute": "string",\n "attribute_value": "string"\n }\n ]\n }\n }\n ]\n}\n```\n\n</details>\n\n---\n\n### `postOrderAcceptance`\n\nAccept/decline an offer by id\n\n`POST /v2/portal/order/{id}/acceptance`\n\n```ts\nconst { data } = await client.postOrderAcceptance(\n {\n id: \'123e4567-e89b-12d3-a456-426614174000\',\n },\n {\n decision: \'accept\'\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "data": {\n "_id": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "_title": "Example Entity",\n "_org": "123",\n "_tags": ["example", "mock"],\n "_created_at": "2021-02-09T12:41:43.662Z",\n "_updated_at": "2021-02-09T12:41:43.662Z",\n "_schema": "order"\n }\n}\n```\n\n</details>\n\n---\n\n### `getOrder`\n\nGet an order by id\n\n`GET /v2/portal/order/{id}`\n\n```ts\nconst { data } = await client.getOrder({\n id: \'123e4567-e89b-12d3-a456-426614174000\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "entity": {\n "_id": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "_title": "Example Entity",\n "_org": "123",\n "_tags": ["example", "mock"],\n "_created_at": "2021-02-09T12:41:43.662Z",\n "_updated_at": "2021-02-09T12:41:43.662Z",\n "_schema": "order"\n },\n "files": [\n {\n "_id": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "_title": "Example Entity",\n "_org": "123",\n "_tags": ["example", "mock"],\n "_created_at": "2021-02-09T12:41:43.662Z",\n "_updated_at": "2021-02-09T12:41:43.662Z",\n "_schema": "file"\n }\n ],\n "relations": [\n {\n "_id": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "_title": "Example Entity",\n "_org": "123",\n "_tags": ["example", "mock"],\n "_created_at": "2021-02-09T12:41:43.662Z",\n "_updated_at": "2021-02-09T12:41:43.662Z",\n "templates_output": {},\n "_schema": "contact"\n }\n ],\n "products": [\n {\n "_id": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "_title": "Example Entity",\n "_org": "123",\n "_tags": ["example", "mock"],\n "_created_at": "2021-02-09T12:41:43.662Z",\n "_updated_at": "2021-02-09T12:41:43.662Z",\n "_schema": "product"\n }\n ],\n "crossSellableProducts": [\n {\n "_id": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "_title": "Example Entity",\n "_org": "123",\n "_tags": ["example", "mock"],\n "_created_at": "2021-02-09T12:41:43.662Z",\n "_updated_at": "2021-02-09T12:41:43.662Z",\n "_schema": "product"\n }\n ],\n "workflow": [\n {\n "id": "8gja72h6kas6h",\n "name": "Lead Qualification",\n "trigger": "MANUAL",\n "status": "STARTED",\n "creationTime": "2021-04-27T12:01:13.000Z",\n "lastUpdateTime": "2021-04-27T12:01:13.000Z",\n "dueDate": "2021-04-27T12:01:13.000Z",\n "assignedTo": ["252", "29052"],\n "flow": []\n }\n ],\n "journey_actions": [\n {\n "journey_id": "string",\n "action_label": {},\n "slug": "string",\n "rules": []\n }\n ]\n}\n```\n\n</details>\n\n---\n\n### `updateOrder`\n\nUpdate an order by id\n\n`PATCH /v2/portal/order/{id}`\n\n```ts\nconst { data } = await client.updateOrder(\n {\n id: \'123e4567-e89b-12d3-a456-426614174000\',\n },\n {},\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "data": {\n "_id": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "_title": "Example Entity",\n "_org": "123",\n "_tags": ["example", "mock"],\n "_created_at": "2021-02-09T12:41:43.662Z",\n "_updated_at": "2021-02-09T12:41:43.662Z",\n "_schema": "order"\n }\n}\n```\n\n</details>\n\n---\n\n### `getAllOpportunities`\n\nGet all opportunities of a portal user\n\n`GET /v2/portal/opportunity`\n\n```ts\nconst { data } = await client.getAllOpportunities({\n from: 1,\n size: 1,\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "data": [\n {\n "_id": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "_title": "Example Entity",\n "_org": "123",\n "_tags": ["example", "mock"],\n "_created_at": "2021-02-09T12:41:43.662Z",\n "_updated_at": "2021-02-09T12:41:43.662Z",\n "_schema": "opportunity",\n "journey_actions": {\n "journey_id": "string",\n "action_label": {\n "en": "string",\n "de": "string"\n },\n "slug": "string",\n "rules": [\n {\n "entity": "string",\n "attribute": "string",\n "attribute_value": "string"\n }\n ]\n }\n }\n ]\n}\n```\n\n</details>\n\n---\n\n### `getSearchableAttributesForOpportunities`\n\nGet all opportunity searchable attributes for a portal user\n\n`GET /v2/portal/opportunities/searchable-attributes`\n\n```ts\nconst { data } = await client.getSearchableAttributesForOpportunities({\n from: 1,\n size: 1,\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "data": [\n {\n "_id": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "_title": "Example Entity",\n "_org": "123",\n "_tags": ["example", "mock"],\n "_created_at": "2021-02-09T12:41:43.662Z",\n "_updated_at": "2021-02-09T12:41:43.662Z",\n "_schema": "opportunity"\n }\n ]\n}\n```\n\n</details>\n\n---\n\n### `getSearchResultsForOpportunities`\n\nGet all opportunity with the given serached attributes\n\n`POST /v2/portal/opportunities/search`\n\n```ts\nconst { data } = await client.getSearchResultsForOpportunities(\n {\n from: 1,\n size: 1,\n },\n {\n addresses: [\'string\'],\n customers: [\'string\'],\n purposes: [\'5da0a718-c822-403d-9f5d-20d4584e0528\'],\n workflows: [\n {}\n ]\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "data": [\n {\n "_id": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "_title": "Example Entity",\n "_org": "123",\n "_tags": ["example", "mock"],\n "_created_at": "2021-02-09T12:41:43.662Z",\n "_updated_at": "2021-02-09T12:41:43.662Z",\n "_schema": "opportunity"\n }\n ]\n}\n```\n\n</details>\n\n---\n\n### `getOpportunity`\n\nGet an opportunity by id\n\n`GET /v2/portal/opportunities/{id}`\n\n```ts\nconst { data } = await client.getOpportunity({\n id: \'123e4567-e89b-12d3-a456-426614174000\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "entity": {\n "_id": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "_title": "Example Entity",\n "_org": "123",\n "_tags": ["example", "mock"],\n "_created_at": "2021-02-09T12:41:43.662Z",\n "_updated_at": "2021-02-09T12:41:43.662Z",\n "_schema": "opportunity"\n },\n "orders": [\n {\n "_id": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "_title": "Example Entity",\n "_org": "123",\n "_tags": ["example", "mock"],\n "_created_at": "2021-02-09T12:41:43.662Z",\n "_updated_at": "2021-02-09T12:41:43.662Z",\n "_schema": "order"\n }\n ],\n "files": [\n {\n "_id": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "_title": "Example Entity",\n "_org": "123",\n "_tags": ["example", "mock"],\n "_created_at": "2021-02-09T12:41:43.662Z",\n "_updated_at": "2021-02-09T12:41:43.662Z",\n "_schema": "file"\n }\n ],\n "relations": [\n {\n "_id": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "_title": "Example Entity",\n "_org": "123",\n "_tags": ["example", "mock"],\n "_created_at": "2021-02-09T12:41:43.662Z",\n "_updated_at": "2021-02-09T12:41:43.662Z",\n "templates_output": {},\n "_schema": "contact"\n }\n ],\n "workflow": [\n {\n "id": "8gja72h6kas6h",\n "name": "Lead Qualification",\n "trigger": "MANUAL",\n "status": "STARTED",\n "creationTime": "2021-04-27T12:01:13.000Z",\n "lastUpdateTime": "2021-04-27T12:01:13.000Z",\n "dueDate": "2021-04-27T12:01:13.000Z",\n "assignedTo": ["252", "29052"],\n "flow": []\n }\n ],\n "journey_actions": [\n {\n "journey_id": "string",\n "action_label": {},\n "slug": "string",\n "rules": []\n }\n ]\n}\n```\n\n</details>\n\n---\n\n### `updateOpportunity`\n\nUpdate an opportunity by id\n\n`PATCH /v2/portal/opportunities/{id}`\n\n```ts\nconst { data } = await client.updateOpportunity(\n {\n id: \'123e4567-e89b-12d3-a456-426614174000\',\n },\n {},\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "data": {\n "_id": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "_title": "Example Entity",\n "_org": "123",\n "_tags": ["example", "mock"],\n "_created_at": "2021-02-09T12:41:43.662Z",\n "_updated_at": "2021-02-09T12:41:43.662Z",\n "_schema": "opportunity"\n }\n}\n```\n\n</details>\n\n---\n\n### `getAllRequests`\n\nGet all opportunities & orders of a portal user\n\n`GET /v2/portal/request`\n\n```ts\nconst { data } = await client.getAllRequests({\n from: 1,\n size: 1,\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "hits": 1,\n "results": [\n {\n "_id": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "_title": "Example Entity",\n "_org": "123",\n "_tags": ["example", "mock"],\n "_created_at": "2021-02-09T12:41:43.662Z",\n "_updated_at": "2021-02-09T12:41:43.662Z",\n "_schema": "opportunity"\n }\n ]\n}\n```\n\n</details>\n\n---\n\n### `getAllContracts`\n\nGet all contracts for a portal user\n\n`GET /v2/portal/contract`\n\n```ts\nconst { data } = await client.getAllContracts({\n from: 1,\n size: 1,\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "data": [\n {\n "_id": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "_title": "Example Entity",\n "_org": "123",\n "_tags": ["example", "mock"],\n "_created_at": "2021-02-09T12:41:43.662Z",\n "_updated_at": "2021-02-09T12:41:43.662Z",\n "contract_name": "Grid Contract",\n "contract_number": "12345",\n "status": "approved",\n "description": "This contract is for the supply of widgets.",\n "account_number": "67890",\n "branch": "power",\n "billing_address": "123 Main St, Anytown",\n "delivery_address": "456 Elm St, Anytown",\n "additional_addresses": "789 Oak St, Anytown",\n "termination_date": "2022-01-01",\n "termination_reason": "Non-payment",\n "billing_period": "monthly",\n "billing_duration_amount": 30,\n "renewal_duration_amount": 365,\n "renewal_duration_unit": "years",\n "notice_time_amount": 30,\n "notice_time_unit": "months",\n "start_date": "2021-01-01",\n "billing_due_day": 2,\n "installment_amount": 10050,\n "balance": 8990,\n "balance_currency": "EUR",\n "journey_actions": {\n "journey_id": "string",\n "action_label": {\n "en": "string",\n "de": "string"\n },\n "slug": "string",\n "rules": [\n {\n "entity": "string",\n "attribute": "string",\n "attribute_value": "string"\n }\n ]\n }\n }\n ]\n}\n```\n\n</details>\n\n---\n\n### `getContract`\n\nGet a contract by id\n\n`GET /v2/portal/contract/{id}`\n\n```ts\nconst { data } = await client.getContract({\n id: \'123e4567-e89b-12d3-a456-426614174000\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "entity": {\n "_id": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "_title": "Example Entity",\n "_org": "123",\n "_tags": ["example", "mock"],\n "_created_at": "2021-02-09T12:41:43.662Z",\n "_updated_at": "2021-02-09T12:41:43.662Z",\n "contract_name": "Grid Contract",\n "contract_number": "12345",\n "status": "approved",\n "description": "This contract is for the supply of widgets.",\n "account_number": "67890",\n "branch": "power",\n "billing_address": "123 Main St, Anytown",\n "delivery_address": "456 Elm St, Anytown",\n "additional_addresses": "789 Oak St, Anytown",\n "termination_date": "2022-01-01",\n "termination_reason": "Non-payment",\n "billing_period": "monthly",\n "billing_duration_amount": 30,\n "renewal_duration_amount": 365,\n "renewal_duration_unit": "years",\n "notice_time_amount": 30,\n "notice_time_unit": "months",\n "start_date": "2021-01-01",\n "billing_due_day": 2,\n "installment_amount": 10050,\n "balance": 8990,\n "balance_currency": "EUR"\n },\n "orders": [\n {\n "_id": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "_title": "Example Entity",\n "_org": "123",\n "_tags": ["example", "mock"],\n "_created_at": "2021-02-09T12:41:43.662Z",\n "_updated_at": "2021-02-09T12:41:43.662Z",\n "_schema": "order"\n }\n ],\n "meters": [\n {\n "_id": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "_title": "Example Entity",\n "_org": "123",\n "_tags": ["example", "mock"],\n "_created_at": "2021-02-09T12:41:43.662Z",\n "_updated_at": "2021-02-09T12:41:43.662Z",\n "_schema": "meter"\n }\n ],\n "files": [\n {\n "_id": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "_title": "Example Entity",\n "_org": "123",\n "_tags": ["example", "mock"],\n "_created_at": "2021-02-09T12:41:43.662Z",\n "_updated_at": "2021-02-09T12:41:43.662Z",\n "_schema": "file"\n }\n ],\n "relations": [\n {\n "_id": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "_title": "Example Entity",\n "_org": "123",\n "_tags": ["example", "mock"],\n "_created_at": "2021-02-09T12:41:43.662Z",\n "_updated_at": "2021-02-09T12:41:43.662Z",\n "templates_output": {},\n "_schema": "contact"\n }\n ],\n "workflow": [\n {\n "id": "8gja72h6kas6h",\n "name": "Lead Qualification",\n "trigger": "MANUAL",\n "status": "STARTED",\n "creationTime": "2021-04-27T12:01:13.000Z",\n "lastUpdateTime": "2021-04-27T12:01:13.000Z",\n "dueDate": "2021-04-27T12:01:13.000Z",\n "assignedTo": ["252", "29052"],\n "flow": []\n }\n ],\n "journey_actions": [\n {\n "journey_id": "string",\n "action_label": {},\n "slug": "string",\n "rules": []\n }\n ]\n}\n```\n\n</details>\n\n---\n\n### `updateContract`\n\nUpdate a contract by id\n\n`PATCH /v2/portal/contract/{id}`\n\n```ts\nconst { data } = await client.updateContract(\n {\n id: \'123e4567-e89b-12d3-a456-426614174000\',\n },\n {},\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "data": {\n "_id": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "_title": "Example Entity",\n "_org": "123",\n "_tags": ["example", "mock"],\n "_created_at": "2021-02-09T12:41:43.662Z",\n "_updated_at": "2021-02-09T12:41:43.662Z",\n "contract_name": "Grid Contract",\n "contract_number": "12345",\n "status": "approved",\n "description": "This contract is for the supply of widgets.",\n "account_number": "67890",\n "branch": "power",\n "billing_address": "123 Main St, Anytown",\n "delivery_address": "456 Elm St, Anytown",\n "additional_addresses": "789 Oak St, Anytown",\n "termination_date": "2022-01-01",\n "termination_reason": "Non-payment",\n "billing_period": "monthly",\n "billing_duration_amount": 30,\n "renewal_duration_amount": 365,\n "renewal_duration_unit": "years",\n "notice_time_amount": 30,\n "notice_time_unit": "months",\n "start_date": "2021-01-01",\n "billing_due_day": 2,\n "installment_amount": 10050,\n "balance": 8990,\n "balance_currency": "EUR"\n }\n}\n```\n\n</details>\n\n---\n\n### `addContractByIdentifiers`\n\nSelf-assign contract(s) by pre-configured identifiers.\n\n`POST /v2/portal/contract/by-identifiers`\n\n```ts\nconst { data } = await client.addContractByIdentifiers(\n null,\n {\n contract: {\n contract_number: \'123456\'\n },\n meter: {\n meter_number: \'123456\'\n }\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "data": [\n {\n "_id": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "_title": "Example Entity",\n "_org": "123",\n "_tags": ["example", "mock"],\n "_created_at": "2021-02-09T12:41:43.662Z",\n "_updated_at": "2021-02-09T12:41:43.662Z",\n "templates_output": {\n "content_top_name": "Customer #123456",\n "main_content_name": "Orange Flexible A2 (654321)",\n "content_bottom_name": "Porscheplatz 1, 70435 Stuttgart, Germany",\n "nested_content": {\n "title": "Orange Flexible A2",\n "subtitle": "654321"\n }\n },\n "_schema": "contact"\n }\n ],\n "hits": 0\n}\n```\n\n</details>\n\n---\n\n### `getEntityIdentifiers`\n\nRetrieve a list of entity identifiers used for entity search by portal users.\n\n`GET /v2/portal/entity/identifiers/{slug}`\n\n```ts\nconst { data } = await client.getEntityIdentifiers({\n slug: \'example\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "data": [\n {\n "name": "contract_number",\n "type": "string"\n }\n ]\n}\n```\n\n</details>\n\n---\n\n### `getEntityActivityFeed`\n\nGet activity feed for an entity\n\n`GET /v2/portal/entity/{slug}/{id}/activity`\n\n```ts\nconst { data } = await client.getEntityActivityFeed({\n slug: \'example\',\n id: \'123e4567-e89b-12d3-a456-426614174000\',\n after: \'example\',\n before: \'example\',\n from: 1,\n size: 1,\n type: \'example\',\n include_relations: true,\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "total": 1,\n "results": [\n {\n "_id": "01F130Q52Q6MWSNS8N2AVXV4JN",\n "timestamp": "1970-01-01T00:00:00.000Z",\n "type": "MyCustomActivity",\n "title": "My custom activity",\n "message": "{{caller}} did something with {{entity payload.entity.id}}.",\n "payload": {\n "entity": {\n "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",\n "schema": "contact"\n }\n }\n }\n ]\n}\n```\n\n</details>\n\n---\n\n### `validateCadenceEntityEditRules`\n\nValidate if cadence rule is valid for an entity\n\n`GET /v2/portal/{slug}/{id}:validateRule`\n\n```ts\nconst { data } = await client.validateCadenceEntityEditRules({\n slug: \'example\',\n id: \'123e4567-e89b-12d3-a456-426614174000\',\n attribute: \'example\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "isBlockedByRules": false,\n "failedRule": {\n "slug": "contact",\n "attribute": "string",\n "rule_type": "string",\n "cadence_period_type": "string",\n "changes_allowed": 0,\n "cadence_period": 0,\n "allowed_decrement": "string",\n "allowed_increment": "string",\n "number_of_days_before_restriction": 0,\n "grace_period": 0\n }\n}\n```\n\n</details>\n\n---\n\n### `searchPaymentRelationsInEntities`\n\nSearch for entities that have the payment relation with the given payment id\n\n`GET /v2/portal/entities-by-payment/{id}`\n\n```ts\nconst { data } = await client.searchPaymentRelationsInEntities({\n id: \'123e4567-e89b-12d3-a456-426614174000\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "results": [\n {\n "_id": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "_title": "Example Entity",\n "_org": "123",\n "_tags": ["example", "mock"],\n "_created_at": "2021-02-09T12:41:43.662Z",\n "_updated_at": "2021-02-09T12:41:43.662Z",\n "templates_output": {\n "content_top_name": "Customer #123456",\n "main_content_name": "Orange Flexible A2 (654321)",\n "content_bottom_name": "Porscheplatz 1, 70435 Stuttgart, Germany",\n "nested_content": {\n "title": "Orange Flexible A2",\n "subtitle": "654321"\n }\n },\n "_schema": "contact"\n }\n ],\n "hits": 50\n}\n```\n\n</details>\n\n---\n\n### `createCustomEntityActivity`\n\nCreate a custom activity that can be displayed in activity feed of an entity.\n\n`PUT /v2/portal/entity/activity`\n\n```ts\nconst { data } = await client.createCustomEntityActivity(\n {\n entities: [\'...\'],\n },\n {\n type: \'PortalUserResetPassword\'\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "_id": "01F130Q52Q6MWSNS8N2AVXV4JN",\n "timestamp": "1970-01-01T00:00:00.000Z",\n "type": "MyCustomActivity",\n "title": "My custom activity",\n "message": "{{caller}} did something with {{entity payload.entity.id}}.",\n "payload": {\n "entity": {\n "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",\n "schema": "contact"\n }\n }\n}\n```\n\n</details>\n\n---\n\n### `saveEntityFile`\n\nAdd files to an entity\n\n`POST /v2/portal/entity/file`\n\n```ts\nconst { data } = await client.saveEntityFile(\n null,\n {\n entity_id: \'5da0a718-c822-403d-9f5d-20d4584e0528\',\n entity_type: \'order\',\n files: [\n {\n filename: \'document.pdf\',\n access_control: \'private\',\n s3ref: {\n bucket: 12345,\n key: 12345\n }\n }\n ]\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "createdFiles": [\n {\n "_id": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "_title": "Example Entity",\n "_org": "123",\n "_tags": ["example", "mock"],\n "_created_at": "2021-02-09T12:41:43.662Z",\n "_updated_at": "2021-02-09T12:41:43.662Z",\n "_schema": "file"\n }\n ]\n}\n```\n\n</details>\n\n---\n\n### `deleteEntityFile`\n\nDelete files from an entity\n\n`DELETE /v2/portal/entity/file`\n\n```ts\nconst { data } = await client.deleteEntityFile(\n null,\n {\n entity_id: \'5da0a718-c822-403d-9f5d-20d4584e0528\',\n entity_type: \'order\',\n file_entity_ids: [\'5da0a718-c822-403d-9f5d-20d4584e0528\']\n },\n)\n```\n\n---\n\n### `savePortalFiles`\n\nAdd files to portal\n\n`POST /v2/portal/portal/files`\n\n```ts\nconst { data } = await client.savePortalFiles(\n null,\n {\n origin: \'string\',\n files: [\n {\n filename: 12345,\n file_type: \'orderRightTeaser\',\n _tags: 12345,\n s3ref: {\n bucket: 12345,\n key: 12345\n }\n }\n ]\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "createdFiles": [\n {\n "_id": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "_title": "Example Entity",\n "_org": "123",\n "_tags": ["example", "mock"],\n "_created_at": "2021-02-09T12:41:43.662Z",\n "_updated_at": "2021-02-09T12:41:43.662Z",\n "_schema": "file"\n }\n ]\n}\n```\n\n</details>\n\n---\n\n### `getRegistrationIdentifiers`\n\nGet valid attributes from entities that can be used as identifier to map contact to user on registration\n\n`GET /v2/portal/registration/identifiers`\n\n```ts\nconst { data } = await client.getRegistrationIdentifiers()\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "data": {\n "contact": [\n {\n "label": "First name",\n "name": "first_name",\n "type": "string"\n }\n ],\n "contract": [\n {\n "label": "Contract number",\n "name": "contract_number",\n "type": "string"\n }\n ]\n }\n}\n```\n\n</details>\n\n---\n\n### `getFileById`\n\nFetch a document with ID\n\n`GET /v2/portal/user/file/{id}`\n\n```ts\nconst { data } = await client.getFileById({\n id: \'123e4567-e89b-12d3-a456-426614174000\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "file": {\n "_id": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "_title": "Example Entity",\n "_org": "123",\n "_tags": ["example", "mock"],\n "_created_at": "2021-02-09T12:41:43.662Z",\n "_updated_at": "2021-02-09T12:41:43.662Z",\n "_schema": "file",\n "filename": "document.pdf",\n "access_control": "private",\n "file_date": "2021-02-09T12:41:43.662Z",\n "public_url": "https://epilot-files-prod.s3.eu-central-1.amazonaws.com/123/4d689aeb-1497-4410-a9fe-b36ca9ac4389/document.pdf",\n "type": "document",\n "mime_type": "application/pdf",\n "_relations": [\n {\n "entity_id": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "_schema": "contact",\n "_title": "Opportunity ABC"\n }\n ],\n "is_new": true\n }\n}\n```\n\n</details>\n\n---\n\n### `trackFileDownloaded`\n\nTrack that user has downloaded a file\n\n`POST /v2/portal/user/file/{id}/downloaded`\n\n```ts\nconst { data } = await client.trackFileDownloaded({\n id: \'123e4567-e89b-12d3-a456-426614174000\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "file": {\n "_id": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "_title": "Example Entity",\n "_org": "123",\n "_tags": ["example", "mock"],\n "_created_at": "2021-02-09T12:41:43.662Z",\n "_updated_at": "2021-02-09T12:41:43.662Z",\n "_schema": "file",\n "filename": "document.pdf",\n "access_control": "private",\n "file_date": "2021-02-09T12:41:43.662Z",\n "public_url": "https://epilot-files-prod.s3.eu-central-1.amazonaws.com/123/4d689aeb-1497-4410-a9fe-b36ca9ac4389/document.pdf",\n "type": "document",\n "mime_type": "application/pdf",\n "_relations": [\n {\n "entity_id": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "_schema": "contact",\n "_title": "Opportunity ABC"\n }\n ],\n "is_new": true\n }\n}\n```\n\n</details>\n\n---\n\n### `getBillingEvents`\n\nFetch billing events for a portal user\n\n`GET /v2/portal/billing/events`\n\n```ts\nconst { data } = await client.getBillingEvents({\n from: 1,\n size: 1,\n entity_id: [\'...\'],\n event_type: \'example\',\n paid: true,\n date_after: \'example\',\n date_before: \'example\',\n sort: \'example\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "results": [\n {\n "billing_amount_decimal": "100.50",\n "billing_amount": 10050,\n "billing_currency": "EUR",\n "external_id": "d4fb2a4e-3f74-4fc4-8fba-6fdaaaa3b08e",\n "contract": {\n "$relation": [\n {\n "entity_id": "f589786b-3024-43cd-9cb3-5a3c953f2896"\n }\n ]\n },\n "_id": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "_title": "Example Entity",\n "_org": "123",\n "_tags": ["example", "mock"],\n "_created_at": "2021-02-09T12:41:43.662Z",\n "_updated_at": "2021-02-09T12:41:43.662Z",\n "type": "installment",\n "due_date": "1970-01-01",\n "paid_date": "1970-01-01"\n }\n ],\n "hits": 50\n}\n```\n\n</details>\n\n---\n\n### `getCustomerBalance`\n\nGet total balance across all contracts and orders of a customer entity.\n\n`GET /v2/portal/billing/customers/balance`\n\n```ts\nconst { data } = await client.getCustomerBalance()\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "balance": 8990,\n "balance_decimal": "89.90",\n "balance_currency": "EUR"\n}\n```\n\n</details>\n\n---\n\n### `getBillingAccount`\n\nGet a billing account by id.\n\n`GET /v2/portal/billing/accounts/{id}`\n\n```ts\nconst { data } = await client.getBillingAccount({\n id: \'123e4567-e89b-12d3-a456-426614174000\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "entity": {\n "billing_account_number": "string",\n "balance": 0,\n "balance_decimal": "string",\n "balance_currency": "EUR",\n "billing_contact": {\n "$relation": [\n {\n "entity_id": "f589786b-3024-43cd-9cb3-5a3c953f2896"\n }\n ]\n },\n "billing_address": {\n "$relation_ref": [\n {\n "entity_id": "f589786b-3024-43cd-9cb3-5a3c953f2896",\n "path": "address",\n "_id": "f589786b-3024-43cd-9cb3-5a3c953f2896"\n }\n ]\n },\n "_id": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "_title": "Example Entity",\n "_org": "123",\n "_tags": ["example", "mock"],\n "_created_at": "2021-02-09T12:41:43.662Z",\n "_updated_at": "2021-02-09T12:41:43.662Z"\n },\n "relations": [\n {\n "_id": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "_title": "Example Entity",\n "_org": "123",\n "_tags": ["example", "mock"],\n "_created_at": "2021-02-09T12:41:43.662Z",\n "_updated_at": "2021-02-09T12:41:43.662Z",\n "templates_output": {\n "content_top_name": "Customer #123456",\n "main_content_name": "Orange Flexible A2 (654321)",\n "content_bottom_name": "Porscheplatz 1, 70435 Stuttgart, Germany",\n "nested_content": {\n "title": "Orange Flexible A2",\n "subtitle": "654321"\n }\n },\n "_schema": "contact"\n }\n ]\n}\n```\n\n</details>\n\n---\n\n### `loginToPortalAsUser`\n\nGenerate a token to log in to a portal impersonating a users.\n\n`POST /v2/portal/admin:login-as-user`\n\n```ts\nconst { data } = await client.loginToPortalAsUser(\n null,\n {\n email: \'portal-customer@email.com\',\n origin: \'string\'\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "login_as_token": "string"\n}\n```\n\n</details>\n\n---\n\n### `triggerEntityAccessEvent`\n\nTrigger entity access event for a portal user\n\n`POST /v2/portal/entity/{schema}/access`\n\n```ts\nconst { data } = await client.triggerEntityAccessEvent({\n schema: \'example\',\n entity_id: \'example\',\n origin: \'example\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "eventId": "string"\n}\n```\n\n</details>\n\n---\n\n### `triggerEntityAccessEventV3`\n\nTrigger entity access event for a portal user\n\n`POST /v3/portal/entity/{schema}/access`\n\n```ts\nconst { data } = await client.triggerEntityAccessEventV3({\n schema: \'example\',\n entity_id: \'example\',\n portal_id: \'example\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "eventId": "string"\n}\n```\n\n</details>\n\n---\n\n### `getPortalUserEntity`\n\nGet a single entity for a portal user\n\n`POST /v2/portal/entity:get`\n\n```ts\nconst { data } = await client.getPortalUserEntity(\n null,\n {\n slug: \'contact\',\n entity_id: \'3ec28ab5-8598-41ef-9486-b57fca1d5e2a\',\n hydrate: false,\n fields: [\'_id\', \'_title\'],\n templates: {\n content_top_name: \'Customer #{{contract.customer_number}}\',\n main_content_name: \'{{contract.contract_name}} ({{contract.contract_number}})\',\n content_bottom_name: \'{{custom_contract_delivery_address}}\',\n nested_content: {\n title: \'{{contract.contract_name}}\',\n subtitle: \'{{contract.contract_number}}\'\n }\n },\n filters: [\n {\n term: {\n \'status.keyword\': \'active\'\n }\n },\n {\n range: {\n _created_at: {\n gte: \'2023-01-01\'\n }\n }\n }\n ],\n filters_context: [\n {\n portal_user: true\n },\n {\n contact: true\n },\n /* ... 1 more */\n ],\n targets: [\'3ec28ab5-8598-41ef-9486-b57fca1d5e2a\']\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "result": {\n "_id": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "_title": "Example Entity",\n "_org": "123",\n "_tags": ["example", "mock"],\n "_created_at": "2021-02-09T12:41:43.662Z",\n "_updated_at": "2021-02-09T12:41:43.662Z",\n "templates_output": {\n "content_top_name": "Customer #123456",\n "main_content_name": "Orange Flexible A2 (654321)",\n "content_bottom_name": "Porscheplatz 1, 70435 Stuttgart, Germany",\n "nested_content": {\n "title": "Orange Flexible A2",\n "subtitle": "654321"\n }\n },\n "_schema": "contact"\n }\n}\n```\n\n</details>\n\n---\n\n### `searchPortalUserEntities`\n\nSearch all entities of a portal user\n\n`POST /v2/portal/entity:search`\n\n```ts\nconst { data } = await client.searchPortalUserEntities(\n null,\n {\n slug: \'contact\',\n q: \'contract\',\n q_fields: [\'_title\', \'customer._title\', \'customer.first_name\', \'customer.last_name\'],\n group: \'customer._title\',\n group_title: \'{{customer[Primary].first_name}} {{customer[Primary].last_name}}\',\n group_size: 100,\n group_sort: \'desc\',\n group_after_key: {},\n sort: \'_created_at:desc\',\n from: 0,\n size: 100,\n hydrate: false,\n fields: [\'_id\', \'_title\'],\n templates: {\n content_top_name: \'Customer #{{contract.customer_number}}\',\n main_content_name: \'{{contract.contract_name}} ({{contract.contract_number}})\',\n content_bottom_name: \'{{custom_contract_delivery_address}}\'\n },\n filters: [\n {\n term: {\n \'status.keyword\': \'active\'\n }\n },\n {\n range: {\n _created_at: {\n gte: \'2023-01-01\'\n }\n }\n }\n ],\n filters_context: [\n {\n portal_user: true\n },\n {\n contact: true\n },\n /* ... 1 more */\n ],\n targets: [\'3ec28ab5-8598-41ef-9486-b57fca1d5e2a\'],\n include: [\'active_workflow\']\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "results": [\n {\n "_id": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "_title": "Example Entity",\n "_org": "123",\n "_tags": ["example", "mock"],\n "_created_at": "2021-02-09T12:41:43.662Z",\n "_updated_at": "2021-02-09T12:41:43.662Z",\n "templates_output": {\n "content_top_name": "Customer #123456",\n "main_content_name": "Orange Flexible A2 (654321)",\n "content_bottom_name": "Porscheplatz 1, 70435 Stuttgart, Germany",\n "nested_content": {\n "title": "Orange Flexible A2",\n "subtitle": "654321"\n }\n },\n "_schema": "contact"\n }\n ],\n "pagination": {\n "from": 0,\n "size": 10,\n "total": 50,\n "has_more": true\n },\n "hits": 10,\n "includes": {\n "active_workflow": {}\n }\n}\n```\n\n</details>\n\n---\n\n### `canTriggerPortalFlow`\n\nReturns whether the user can trigger a portal flow\n\n`POST /v2/portal/can-trigger-portal-flow`\n\n```ts\nconst { data } = await client.canTriggerPortalFlow(\n {\n origin: \'example\',\n portal_id: \'example\',\n },\n {\n activity_id: \'01F130Q52Q6MWSNS8N2AVXV4JN\',\n ecp_config: {\n file_config: {\n shared_with_end_customer: true,\n _tags: [\'example\', \'mock\']\n }\n }\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "can_trigger": true\n}\n```\n\n</details>\n\n---\n\n### `getAutomationContext`\n\nRetrieves the automation context.\n\n`GET /v2/portal/automation-context`\n\n```ts\nconst { data } = await client.getAutomationContext({\n activity_id: \'example\',\n type: \'example\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{}\n```\n\n</details>\n\n---\n\n### `updateWorkflowStepAsDone`\n\nUpdate a workflow step as done\n\n`PUT /v2/portal/workflow/{workflow_id}/{step_id}:markDone`\n\n```ts\nconst { data } = await client.updateWorkflowStepAsDone({\n workflow_id: \'example\',\n step_id: \'example\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "startedTime": "2024-01-12T13:29:55.942Z",\n "requirements": [],\n "created": "2023-10-20T17:41:10.256Z",\n "executionType": "MANUAL",\n "assignedToInProgress": "-",\n "sectionId": "lzxsw2sblj7",\n "type": "STEP",\n "entityRefId": "q1d6vcbsqvn",\n "assignedTo": ["10014532"],\n "lastUpdated": "2024-01-13T05:18:43.838Z",\n "ecp": {},\n "userIds": [],\n "name": "Hinterlege den vereinbarten LIC Termin",\n "id": "q1d6vcbsqvn",\n "definitionId": "9UjHKq",\n "status": "COMPLETED",\n "manuallyCreated": false,\n "enabled": true,\n "completedTime": "2024-01-13T05:18:43.827Z"\n}\n```\n\n</details>\n\n---\n\n### `getEntityWorkflows`\n\nGet workflows for an entity\n\n`GET /v2/portal/entity/{slug}/{id}/workflows`\n\n```ts\nconst { data } = await client.getEntityWorkflows({\n slug: \'example\',\n id: \'123e4567-e89b-12d3-a456-426614174000\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "workflow_executions": [\n {\n "id": "8gja72h6kas6h",\n "name": "Lead Qualification",\n "trigger": "MANUAL",\n "status": "STARTED",\n "creationTime": "2021-04-27T12:01:13.000Z",\n "lastUpdateTime": "2021-04-27T12:01:13.000Z",\n "dueDate": "2021-04-27T12:01:13.000Z",\n "assignedTo": ["252", "29052"],\n "flow": [\n {\n "id": "sectionId1",\n "name": "Initial Information Gathering",\n "steps": [\n {\n "id": "sada5641f3a21",\n "name": "Call client and confirm address and product",\n "status": "ASSIGNED",\n "assignedTo": ["11"]\n },\n {\n "id": "sada5641f3a22",\n "name": "Check product availability",\n "status": "UNASSIGNED"\n }\n ]\n },\n {\n "id": "firstLevelStepId1",\n "name": "Print and send catalog",\n "status": "SKIPPED",\n "dueDate": "2023-01-15T20:00:00"\n }\n ]\n }\n ]\n}\n```\n\n</details>\n\n---\n\n### `uploadMeterReadingPhoto`\n\nUpload Meter Reading Photo\n\n`POST /v2/portal/metering/reading/photo`\n\n```ts\nconst { data } = await client.uploadMeterReadingPhoto(\n null,\n {\n filename: \'Reading 10.01.2025.jpg\',\n mime_type: \'image/jpeg\',\n contents: \'data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wCEAAkGBxMTEhUTExMWFhUXGBgYGBgYGBgYGBgYGBgYFxgYFxgYHSggGBolHRgXITEhJSkrLi4uFx8zODMtNygtLisBCgoKDg0OGhAQGy0lHyUt\',\n meter_id: \'5da0a718-c822-403d-9f5d-20d4584e0528\'\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "data": {\n "filename": "Reading 10.01.2025.jpg",\n "s3ref": {\n "bucket": "meter-readings",\n "key": "uuid/reading-10.01.2025.jpg"\n },\n "reading": "000123.45",\n "sector": "water",\n "meter_numbers": ["00123456"]\n }\n}\n```\n\n</details>\n\n---\n\n### `createMeterReading`\n\nCreate Meter Reading\n\n`POST /v2/portal/metering/reading`\n\n```ts\nconst { data } = await client.createMeterReading(\n {\n override_plausibility: true,\n },\n {\n value: 240,\n read_by: \'John Doe\',\n reason: \'Storing the feed-in record\',\n meter_id: \'5da0a718-c822-403d-9f5d-20d4584e0528\',\n counter_id: \'5da0a718-c822-403d-9f5d-20d4584e0528\',\n direction: \'feed-in\',\n timestamp: \'2022-10-10\',\n source: \'ECP\',\n status: \'valid\',\n external_id: \'string\',\n remark: \'Customer reported unusual consumption\',\n metadata: {\n registration_id: \'1234567890\',\n business_unit: \'ABC\'\n }\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "data": {\n "value": 240,\n "read_by": "John Doe",\n "reason": "Storing the feed-in record",\n "meter_id": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "counter_id": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "direction": "feed-in",\n "timestamp": "2022-10-10",\n "source": "ECP",\n "status": "valid",\n "external_id": "string",\n "remark": "Customer reported unusual consumption",\n "metadata": {\n "registration_id": "1234567890",\n "business_unit": "ABC"\n }\n }\n}\n```\n\n</details>\n\n---\n\n### `getAllowedMeterReadingRange`\n\n`GET /v2/portal/metering/reading/allowed-range/{meter_id}`\n\n```ts\nconst { data } = await client.getAllowedMeterReadingRange({\n meter_id: \'example\',\n origin: \'example\',\n timestamp: \'example\',\n context_entities: \'example\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "data": [\n {\n "meter_counter_id": "string",\n "min_value": 0,\n "max_value": 0\n }\n ]\n}\n```\n\n</details>\n\n---\n\n### `ssoLogin`\n\nInitiate login using external SSO identity.\n\n`POST /v2/portal/public/sso/login`\n\n```ts\nconst { data } = await client.ssoLogin(\n {\n origin: \'example\',\n org_id: \'example\',\n contact_id: \'example\',\n },\n {\n provider_slug: \'office-365-login\'\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "token": "string",\n "email": "portal-customer@email.com"\n}\n```\n\n</details>\n\n---\n\n### `ssoLoginV3`\n\nInitiate login using external SSO identity.\n\n`POST /v3/portal/public/sso/login`\n\n```ts\nconst { data } = await client.ssoLoginV3(\n {\n portal_id: \'example\',\n org_id: \'example\',\n contact_id: \'example\',\n },\n {\n provider_slug: \'office-365-login\'\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "token": "string",\n "email": "portal-customer@email.com"\n}\n```\n\n</details>\n\n---\n\n### `ssoRedirect`\n\nHandles the redirect from the external SSO provider. Validates the authorization `code` and `state` received from the provider.\nRedirects the user to the provided `web_uri` with the validated credenti\n\n`POST /v2/portal/public/sso/redirect`\n\n```ts\nconst { data } = await client.ssoRedirect({\n web_uri: \'example\',\n})\n```\n\n---\n\n### `ssoCallback`\n\nHandles the callback from the external SSO provider, validates the authorization `code`\nand generates a external provider token to be used with the CUSTOM_AUTH flow against Cognito.\n\n`POST /v2/portal/public/sso/callback`\n\n```ts\nconst { data } = await client.ssoCallback(\n {\n domain: \'example\',\n },\n {\n provider_slug: \'office-365-login\',\n token_endpoint: \'https://www.facebook.com/v12.0/dialog/oauth\',\n grant_type: \'authorization_code\',\n code: \'123456\',\n redirect_uri: \'https://customer-portal.com/login\',\n client_id: \'123456\',\n code_verifier: \'123456\'\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "access_token": "123456",\n "token_type": "Bearer",\n "expires_in": 3600,\n "refresh_token": "123456",\n "id_token": "123456",\n "scope": "openid email"\n}\n```\n\n</details>\n\n---\n\n### `getPortalPage`\n\nFetch a portal page by id\n\n`GET /v2/portal/pages/{id}`\n\n```ts\nconst { data } = await client.getPortalPage({\n id: \'123e4567-e89b-12d3-a456-426614174000\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "slug": "dashboard",\n "path": "/dashboard",\n "schema": ["string"],\n "visibility": {},\n "content": {},\n "design": {},\n "blocks": {},\n "order": 1,\n "is_system": false,\n "is_detail": false,\n "detail_schema": "contact",\n "show_in_navigation": false,\n "is_public": true,\n "parentId": "c495fef9-eeca-4019-a989-8390dcd9825b",\n "is_entry_route": false,\n "is_deleted": false,\n "id": "c495fef9-eeca-4019-a989-8390dcd9825b",\n "last_modified_at": "2021-02-09T12:41:43.662Z"\n}\n```\n\n</details>\n\n---\n\n### `updatePortalPage`\n\nUpdate a portal page by id\n\n`PUT /v2/portal/pages/{id}`\n\n```ts\nconst { data } = await client.updatePortalPage(\n {\n id: \'123e4567-e89b-12d3-a456-426614174000\',\n },\n {\n slug: \'dashboard\',\n path: \'/dashboard\',\n schema: [\'string\'],\n visibility: {},\n content: {},\n design: {},\n blocks: {},\n order: 1,\n is_system: false,\n is_detail: false,\n detail_schema: \'contact\',\n show_in_navigation: false,\n is_public: true,\n parentId: \'c495fef9-eeca-4019-a989-8390dcd9825b\',\n is_entry_route: false,\n is_deleted: false\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "slug": "dashboard",\n "path": "/dashboard",\n "schema": ["string"],\n "visibility": {},\n "content": {},\n "design": {},\n "blocks": {},\n "order": 1,\n "is_system": false,\n "is_detail": false,\n "detail_schema": "contact",\n "show_in_navigation": false,\n "is_public": true,\n "parentId": "c495fef9-eeca-4019-a989-8390dcd9825b",\n "is_entry_route": false,\n "is_deleted": false,\n "id": "c495fef9-eeca-4019-a989-8390dcd9825b",\n "last_modified_at": "2021-02-09T12:41:43.662Z"\n}\n```\n\n</details>\n\n---\n\n### `deletePortalPage`\n\nDelete a portal page by id\n\n`DELETE /v2/portal/pages/{id}`\n\n```ts\nconst { data } = await client.deletePortalPage({\n id: \'123e4567-e89b-12d3-a456-426614174000\',\n})\n```\n\n---\n\n### `getPortalPages`\n\nFetch all portal pages\n\n`GET /v2/portal/pages`\n\n```ts\nconst { data } = await client.getPortalPages({\n domain: \'example\',\n fields: \'example\',\n filter: \'example\',\n contract_id: \'example\',\n context_entities: \'example\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n[\n {\n "slug": "dashboard",\n "path": "/dashboard",\n "schema": ["string"],\n "visibility": {},\n "content": {},\n "design": {},\n "blocks": {},\n "order": 1,\n "is_system": false,\n "is_detail": false,\n "detail_schema": "contact",\n "show_in_navigation": false,\n "is_public": true,\n "parentId": "c495fef9-eeca-4019-a989-8390dcd9825b",\n "is_entry_route": false,\n "is_deleted": false,\n "id": "c495fef9-eeca-4019-a989-8390dcd9825b",\n "last_modified_at": "2021-02-09T12:41:43.662Z"\n }\n]\n```\n\n</details>\n\n---\n\n### `createPortalPage`\n\nCreate a new portal page\n\n`POST /v2/portal/pages`\n\n```ts\nconst { data } = await client.createPortalPage(\n {\n domain: \'example\',\n },\n {\n slug: \'dashboard\',\n path: \'/dashboard\',\n schema: [\'string\'],\n visibility: {},\n content: {},\n design: {},\n blocks: {},\n order: 1,\n is_system: false,\n is_detail: false,\n detail_schema: \'contact\',\n show_in_navigation: false,\n is_public: true,\n parentId: \'c495fef9-eeca-4019-a989-8390dcd9825b\',\n is_entry_route: false,\n is_deleted: false\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "slug": "dashboard",\n "path": "/dashboard",\n "schema": ["string"],\n "visibility": {},\n "content": {},\n "design": {},\n "blocks": {},\n "order": 1,\n "is_system": false,\n "is_detail": false,\n "detail_schema": "contact",\n "show_in_navigation": false,\n "is_public": true,\n "parentId": "c495fef9-eeca-4019-a989-8390dcd9825b",\n "is_entry_route": false,\n "is_deleted": false,\n "id": "c495fef9-eeca-4019-a989-8390dcd9825b",\n "last_modified_at": "2021-02-09T12:41:43.662Z"\n}\n```\n\n</details>\n\n---\n\n### `getPublicPages`\n\nFetch all public portal pages\n\n`GET /v2/portal/public/pages`\n\n```ts\nconst { data } = await client.getPublicPages({\n domain: \'example\',\n fields: \'example\',\n filter: \'example\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n[\n {\n "slug": "dashboard",\n "path": "/dashboard",\n "schema": ["string"],\n "visibility": {},\n "content": {},\n "design": {},\n "blocks": {},\n "order": 1,\n "is_system": false,\n "is_detail": false,\n "detail_schema": "contact",\n "show_in_navigation": false,\n "is_public": true,\n "parentId": "c495fef9-eeca-4019-a989-8390dcd9825b",\n "is_entry_route": false,\n "is_deleted": false,\n "id": "c495fef9-eeca-4019-a989-8390dcd9825b",\n "last_modified_at": "2021-02-09T12:41:43.662Z"\n }\n]\n```\n\n</details>\n\n---\n\n### `interpolatePortalPages`\n\nInterpolate template variables in portal pages without reading from the database. Accepts pages in the request body and returns them with templates resolved.\n\n`POST /v2/portal/pages/interpolate`\n\n```ts\nconst { data } = await client.interpolatePortalPages(\n null,\n {\n pages: [\n {\n slug: \'dashboard\',\n path: \'/dashboard\',\n schema: [\'string\'],\n visibility: {},\n content: {},\n design: {},\n blocks: {},\n order: 1,\n is_system: false,\n is_detail: false,\n detail_schema: \'contact\',\n show_in_navigation: false,\n is_public: true,\n parentId: \'c495fef9-eeca-4019-a989-8390dcd9825b\',\n is_entry_route: false,\n is_deleted: false,\n id: \'c495fef9-eeca-4019-a989-8390dcd9825b\',\n last_modified_at: \'2021-02-09T12:41:43.662Z\'\n }\n ],\n context_entities: [\n {\n entity_id: \'5da0a718-c822-403d-9f5d-20d4584e0528\',\n entity_schema: \'contract\'\n }\n ]\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n[\n {\n "slug": "dashboard",\n "path": "/dashboard",\n "schema": ["string"],\n "visibility": {},\n "content": {},\n "design": {},\n "blocks": {},\n "order": 1,\n "is_system": false,\n "is_detail": false,\n "detail_schema": "contact",\n "show_in_navigation": false,\n "is_public": true,\n "parentId": "c495fef9-eeca-4019-a989-8390dcd9825b",\n "is_entry_route": false,\n "is_deleted": false,\n "id": "c495fef9-eeca-4019-a989-8390dcd9825b",\n "last_modified_at": "2021-02-09T12:41:43.662Z"\n }\n]\n```\n\n</details>\n\n---\n\n### `getDefaultPages`\n\nFetch all default portal pages\n\n`GET /v2/portal/pages/default`\n\n```ts\nconst { data } = await client.getDefaultPages()\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n[\n {\n "slug": "dashboard",\n "path": "/dashboard",\n "schema": ["string"],\n "visibility": {},\n "content": {},\n "design": {},\n "blocks": {},\n "order": 1,\n "is_system": false,\n "is_detail": false,\n "detail_schema": "contact",\n "show_in_navigation": false,\n "is_public": true,\n "parentId": "c495fef9-eeca-4019-a989-8390dcd9825b",\n "is_entry_route": false,\n "is_deleted": false,\n "id": "c495fef9-eeca-4019-a989-8390dcd9825b",\n "last_modified_at": "2021-02-09T12:41:43.662Z"\n }\n]\n```\n\n</details>\n\n---\n\n### `createPortalPageBlock`\n\nCreate a new portal page block\n\n`POST /v2/portal/pages/{id}/blocks`\n\n```ts\nconst { data } = await client.createPortalPageBlock(\n {\n id: \'123e4567-e89b-12d3-a456-426614174000\',\n },\n {\n props: {\n visibility: {},\n content: {},\n design: {}\n },\n parentId: \'c495fef9-eeca-4019-a989-8390dcd9825b\',\n type: \'tab\',\n order: 1\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "props": {\n "visibility": {},\n "content": {},\n "design": {}\n },\n "parentId": "c495fef9-eeca-4019-a989-8390dcd9825b",\n "type": "tab",\n "order": 1,\n "id": "c495fef9-eeca-4019-a989-8390dcd9825b"\n}\n```\n\n</details>\n\n---\n\n### `getPortalPageBlocks`\n\nFetch all portal page blocks\n\n`GET /v2/portal/pages/{id}/blocks`\n\n```ts\nconst { data } = await client.getPortalPageBlocks({\n id: \'123e4567-e89b-12d3-a456-426614174000\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n[\n {\n "props": {\n "visibility": {},\n "content": {},\n "design": {}\n },\n "parentId": "c495fef9-eeca-4019-a989-8390dcd9825b",\n "type": "tab",\n "order": 1,\n "id": "c495fef9-eeca-4019-a989-8390dcd9825b"\n }\n]\n```\n\n</details>\n\n---\n\n### `getPortalPageBlock`\n\nFetch a portal page block by id\n\n`GET /v2/portal/pages/{id}/blocks/{block_id}`\n\n```ts\nconst { data } = await client.getPortalPageBlock({\n id: \'123e4567-e89b-12d3-a456-426614174000\',\n block_id: \'example\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "props": {\n "visibility": {},\n "content": {},\n "design": {}\n },\n "parentId": "c495fef9-eeca-4019-a989-8390dcd9825b",\n "type": "tab",\n "order": 1,\n "id": "c495fef9-eeca-4019-a989-8390dcd9825b"\n}\n```\n\n</details>\n\n---\n\n### `updatePortalPageBlock`\n\nUpdate a portal page block by id\n\n`PUT /v2/portal/pages/{id}/blocks/{block_id}`\n\n```ts\nconst { data } = await client.updatePortalPageBlock(\n {\n id: \'123e4567-e89b-12d3-a456-426614174000\',\n block_id: \'example\',\n },\n {\n props: {\n visibility: {},\n content: {},\n design: {}\n },\n parentId: \'c495fef9-eeca-4019-a989-8390dcd9825b\',\n type: \'tab\',\n order: 1\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "props": {\n "visibility": {},\n "content": {},\n "design": {}\n },\n "parentId": "c495fef9-eeca-4019-a989-8390dcd9825b",\n "type": "tab",\n "order": 1,\n "id": "c495fef9-eeca-4019-a989-8390dcd9825b"\n}\n```\n\n</details>\n\n---\n\n### `deletePortalPageBlock`\n\nDelete a portal page block by id\n\n`DELETE /v2/portal/pages/{id}/blocks/{block_id}`\n\n```ts\nconst { data } = await client.deletePortalPageBlock({\n id: \'123e4567-e89b-12d3-a456-426614174000\',\n block_id: \'example\',\n})\n```\n\n---\n\n### `getUserEntryPoint`\n\nGet the entry point for the user\n\n`GET /v2/portal/public/user/entry-point`\n\n```ts\nconst { data } = await client.getUserEntryPoint({\n email: \'example\',\n domain: \'example\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "user_exists": true,\n "entry_point": "PASSWORD",\n "preferred_sso_providers": ["office-365-login"],\n "is_soft_deleted": true\n}\n```\n\n</details>\n\n---\n\n### `updateCampaignPortalBlockStatus`\n\nUpdate Campaign Portal Block Status\n\n`PUT /v2/portal/campaign/{campaign_id}/entity:status`\n\n```ts\nconst { data } = await client.updateCampaignPortalBlockStatus(\n {\n campaign_id: \'example\',\n },\n {\n status: \'seen\',\n entity_refs: [\n {\n entity_id: \'5da0a718-c822-403d-9f5d-20d4584e0528\',\n entity_schema: \'string\'\n }\n ]\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "success": true,\n "updated": 2,\n "failed": 0,\n "total": 2\n}\n```\n\n</details>\n\n---\n\n### `updateNotificationsStatus`\n\nUpdates the statuses of multiple notifications at once.\n\n`PUT /v2/portal/notifications/entity:status`\n\n```ts\nconst { data } = await client.updateNotificationsStatus(\n null,\n {\n notifications: [\n {\n id: \'string\',\n status: \'read\'\n }\n ]\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "message": "Notifications status updated successfully."\n}\n```\n\n</details>\n\n---\n\n### `deRegisterMLoginUser`\n\nDeregisters a user from the M Login client\n\n`DELETE /v2/portal/public/m-login/deregister/{client_id}/{user_id}`\n\n```ts\nconst { data } = await client.deRegisterMLoginUser({\n client_id: \'example\',\n user_id: \'example\',\n})\n```\n\n---\n\n### `notifyMLoginInterestChange`\n\nNotifies the interest change of a user in the M Login client\n\n`POST /v2/portal/public/m-login/notify-interest-change/{client_id}/{user_id}`\n\n```ts\nconst { data } = await client.notifyMLoginInterestChange(\n {\n client_id: \'example\',\n user_id: \'example\',\n },\n {\n resource_id: \'string\',\n user_id: \'string\',\n interest_tag: \'string\',\n action: \'string\',\n resource: {\n resource_id: \'string\',\n description: \'string\',\n contact: \'string\',\n kind: \'string\'\n }\n },\n)\n```\n\n---\n\n### `createPortalConfig`\n\nCreates a new portal configuration.\n\n`POST /v3/portal/config`\n\n```ts\nconst { data } = await client.createPortalConfig(\n null,\n {\n entity_actions: [\n {\n journey_id: \'5da0a718-c822-403d-9f5d-20d4584e0528\',\n slug: \'contact\',\n action_Label: { /* ... */ }\n }\n ],\n extensions: [\n {\n id: \'string\',\n status: \'installed\',\n options: {}\n }\n ],\n extension_hooks: {},\n default_user_to_notify: {\n onPendingUser: [\n { /* ... */ }\n ]\n },\n enabled: true,\n name: \'Installer Portal\',\n domain: \'abc.com\',\n is_epilot_domain: true,\n design_id: \'5da0a718-c822-403d-9f5d-20d4584e0528\',\n allowed_portal_entities: [\'contact\', \'contract\'],\n self_registration_setting: \'ALLOW_WITH_CONTACT_CREATION\',\n user_account_self_management: false,\n feature_settings: {\n start_page: true,\n billing: true,\n change_due_date: true,\n new_design: true\n },\n accessToken: \'string\',\n advanced_mfa: {\n enabled: true\n },\n auth_settings: {\n passwordless_login: {\n enabled: true\n },\n entry_point: \'PASSWORD\',\n preferred_sso_providers: [\'office-365-login\'],\n auto_redirect_to_sso: true\n },\n cognito_details: {\n cognito_user_pool_client_id: \'6bsd0jkgoie74k2i8mrhc1vest\',\n cognito_user_pool_arn: \'arn:aws:cognito-idp:us-east-1:123412341234:userpool/us-east-1_123412341\',\n cognito_user_pool_id: \'eu-central-1_CUEQRNbUb\',\n timeouts: {\n refresh_token: 300,\n access_token: 300,\n id_token: 300\n },\n advanced_authentication: {\n user_activity_logging: true,\n adaptive_authentication: true,\n compromised_credentials_detection: true\n },\n password_policy: {\n minimum_length: 8,\n maximum_length: 256,\n require_lowercase: true,\n require_uppercase: true,\n require_numbers: true,\n require_symbols: true\n }\n },\n config: \'string\',\n contact_identifiers: [\'email\', \'last_name\'],\n approval_state_attributes: {\n contact: [\'name\', \'address\'],\n contract: [\'installment_amount\']\n },\n email_templates: {\n confirmAccount: \'5da0a718-c822-403d-9f5d-20d4584e0528\',\n advancedAuth: \'5da0a718-c822-403d-9f5d-20d4584e0528\',\n advancedMFA: \'5da0a718-c822-403d-9f5d-20d4584e0528\',\n journeySignUp: \'5da0a718-c822-403d-9f5d-20d4584e0528\',\n journeySignInOneTimePassword: \'5da0a718-c822-403d-9f5d-20d4584e0528\',\n journeyLoginOTP: \'5da0a718-c822-403d-9f5d-20d4584e0528\',\n forgotPassword: \'5da0a718-c822-403d-9f5d-20d4584e0528\',\n invitation: \'5da0a718-c822-403d-9f5d-20d4584e0528\',\n partnerInvitation: \'5da0a718-c822-403d-9f5d-20d4584e0528\',\n onNewQuote: \'5da0a718-c822-403d-9f5d-20d4584e0528\',\n onMapAPendingUser: \'5da0a718-c822-403d-9f5d-20d4584e0528\',\n onDocUpload: \'5da0a718-c822-403d-9f5d-20d4584e0528\',\n onWorkflowStepAssigned: \'5da0a718-c822-403d-9f5d-20d4584e0528\',\n confirmEmailUpdate: \'5da0a718-c822-403d-9f5d-20d4584e0528\',\n verifyCodeToSetPassword: \'5da0a718-c822-403d-9f5d-20d4584e0528\'\n },\n images: {\n orderLeftTeaser: \'https://epilot-bucket.s3.eu-central-1.amazonaws.com/12344/6538fddb-f0e9-4f0f-af51-6e57891ff20a/order-left-teaser.jpeg\',\n orderRightTeaser: \'https://epilot-bucket.s3.eu-central-1.amazonaws.com/12344/6538fddb-f0e9-4f0f-af51-6e57891ff20a/order-right-teaser.jpeg\',\n welcomeBanner: \'https://epilot-bucket.s3.eu-central-1.amazonaws.com/12344/6538fddb-f0e9-4f0f-af51-6e57891ff20a/welcome-banner.jpeg\'\n },\n entity_identifiers: {\n type: {\n isEnabled: true,\n attributes: [\'contract_number\']\n }\n },\n contract_identifiers: [\n {\n name: \'email\',\n schema: \'contact\'\n },\n {\n name: \'last_name\',\n schema: \'contact\'\n },\n /* ... 1 more */\n ],\n contract_selector_config: {\n show_inactive: true,\n title_path: \'string\'\n },\n registration_identifiers: [\n {\n name: \'last_name\',\n schema: \'contact\'\n },\n {\n name: \'contract_number\',\n schema: \'contract\'\n }\n ],\n triggered_journeys: [\n {\n trigger_name: \'FIRST_LOGIN\',\n journey_id: \'5da0a718-c822-403d-9f5d-20d4584e0528\'\n }\n ],\n entity_edit_rules: [\n {\n slug: \'contact\',\n attribute: \'first_name\',\n rule_type: \'cadence\',\n cadence_period_type: \'days\',\n cadence_period: 1,\n changes_allowed: 1,\n grace_period: 1,\n allowed_increment: \'10%\',\n allowed_decrement: \'10%\',\n number_of_days_before_restriction: 10\n }\n ],\n allowed_file_extensions: {\n document: [\'pdf\'],\n image: [\'jpg\'],\n spreadsheet: [\'xls\'],\n presentation: [\'ppt\'],\n audioVideo: [\'mp4\'],\n email: [\'eml\'],\n archive: [\'zip\'],\n cad: [\'cad\'],\n calendar: [\'ics\'],\n other: [\'txt\']\n },\n prevent_search_engine_indexing: true,\n meter_reading_grace_period: 0,\n inactive_contract_cutoff_years: 0,\n is_dummy: true,\n is_v3_item: true,\n portal_id: \'453ad7bf-86d5-46c8-8252-bcc868df5e3c\',\n portal_sk_v3: \'PORTAL_CONFIG#453ad7bf-86d5-46c8-8252-bcc868df5e3c\',\n origin: \'string\',\n pages: [\n {\n slug: \'dashboard\',\n path: \'/dashboard\',\n schema: [\'string\'],\n visibility: {},\n content: {},\n design: {},\n blocks: {},\n order: 1,\n is_system: false,\n is_detail: false,\n detail_schema: \'contact\',\n show_in_navigation: false,\n is_public: true,\n parentId: \'c495fef9-eeca-4019-a989-8390dcd9825b\',\n is_entry_route: false,\n is_deleted: false\n }\n ]\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "entity_actions": [\n {\n "journey_id": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "slug": "contact",\n "action_Label": {}\n }\n ],\n "extensions": [\n {\n "id": "string",\n "status": "installed",\n "options": {}\n }\n ],\n "extension_hooks": {},\n "default_user_to_notify": {\n "onPendingUser": [\n {}\n ]\n },\n "enabled": true,\n "name": "Installer Portal",\n "domain": "abc.com",\n "is_epilot_domain": true,\n "design_id": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "allowed_portal_entities": ["contact", "contract"],\n "self_registration_setting": "ALLOW_WITH_CONTACT_CREATION",\n "user_account_self_management": false,\n "feature_settings": {\n "start_page": true,\n "billing": true,\n "change_due_date": true,\n "new_design": true\n },\n "accessToken": "string",\n "advanced_mfa": {\n "enabled": true\n },\n "auth_settings": {\n "passwordless_login": {\n "enabled": true\n },\n "entry_point": "PASSWORD",\n "preferred_sso_providers": ["office-365-login"],\n "auto_redirect_to_sso": true\n },\n "cognito_details": {\n "cognito_user_pool_client_id": "6bsd0jkgoie74k2i8mrhc1vest",\n "cognito_user_pool_arn": "arn:aws:cognito-idp:us-east-1:123412341234:userpool/us-east-1_123412341",\n "cognito_user_pool_id": "eu-central-1_CUEQRNbUb",\n "timeouts": {\n "refresh_token": 300,\n "access_token": 300,\n "id_token": 300\n },\n "advanced_authentication": {\n "user_activity_logging": true,\n "adaptive_authentication": true,\n "compromised_credentials_detection": true\n },\n "password_policy": {\n "minimum_length": 8,\n "maximum_length": 256,\n "require_lowercase": true,\n "require_uppercase": true,\n "require_numbers": true,\n "require_symbols": true\n }\n },\n "config": "string",\n "contact_identifiers": ["email", "last_name"],\n "approval_state_attributes": {\n "contact": ["name", "address"],\n "contract": ["installment_amount"]\n },\n "email_templates": {\n "confirmAccount": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "advancedAuth": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "advancedMFA": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "journeySignUp": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "journeySignInOneTimePassword": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "journeyLoginOTP": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "forgotPassword": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "invitation": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "partnerInvitation": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "onNewQuote": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "onMapAPendingUser": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "onDocUpload": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "onWorkflowStepAssigned": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "confirmEmailUpdate": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "verifyCodeToSetPassword": "5da0a718-c822-403d-9f5d-20d4584e0528"\n },\n "images": {\n "orderLeftTeaser": "https://epilot-bucket.s3.eu-central-1.amazonaws.com/12344/6538fddb-f0e9-4f0f-af51-6e57891ff20a/order-left-teaser.jpeg",\n "orderRightTeaser": "https://epilot-bucket.s3.eu-central-1.amazonaws.com/12344/6538fddb-f0e9-4f0f-af51-6e57891ff20a/order-right-teaser.jpeg",\n "welcomeBanner": "https://epilot-bucket.s3.eu-central-1.amazonaws.com/12344/6538fddb-f0e9-4f0f-af51-6e57891ff20a/welcome-banner.jpeg"\n },\n "entity_identifiers": {\n "type": {\n "isEnabled": true,\n "attributes": ["contract_number"]\n }\n },\n "contract_identifiers": [\n {\n "name": "email",\n "schema": "contact"\n },\n {\n "name": "last_name",\n "schema": "contact"\n }\n ],\n "contract_selector_config": {\n "show_inactive": true,\n "title_path": "string"\n },\n "registration_identifiers": [\n {\n "name": "last_name",\n "schema": "contact"\n },\n {\n "name": "contract_number",\n "schema": "contract"\n }\n ],\n "triggered_journeys": [\n {\n "trigger_name": "FIRST_LOGIN",\n "journey_id": "5da0a718-c822-403d-9f5d-20d4584e0528"\n }\n ],\n "entity_edit_rules": [\n {\n "slug": "contact",\n "attribute": "first_name",\n "rule_type": "cadence",\n "cadence_period_type": "days",\n "cadence_period": 1,\n "changes_allowed": 1,\n "grace_period": 1,\n "allowed_increment": "10%",\n "allowed_decrement": "10%",\n "number_of_days_before_restriction": 10\n }\n ],\n "allowed_file_extensions": {\n "document": ["pdf"],\n "image": ["jpg"],\n "spreadsheet": ["xls"],\n "presentation": ["ppt"],\n "audioVideo": ["mp4"],\n "email": ["eml"],\n "archive": ["zip"],\n "cad": ["cad"],\n "calendar": ["ics"],\n "other": ["txt"]\n },\n "prevent_search_engine_indexing": true,\n "meter_reading_grace_period": 0,\n "inactive_contract_cutoff_years": 0,\n "is_dummy": true,\n "is_v3_item": true,\n "portal_id": "453ad7bf-86d5-46c8-8252-bcc868df5e3c",\n "portal_sk_v3": "PORTAL_CONFIG#453ad7bf-86d5-46c8-8252-bcc868df5e3c",\n "origin": "string",\n "organization_id": 12345,\n "org_settings": {\n "canary": {\n "enabled": true\n },\n "notracking": {\n "enabled": true\n }\n },\n "feature_flags": {},\n "grants": [\n {\n "action": "entity-read",\n "resource": "entity:123:contact:f7c22299-ca72-4bca-8538-0a88eeefc947",\n "effect": "allow"\n }\n ],\n "identity_providers": [\n {\n "slug": "office-365-login",\n "display_name": "Office 365 Login",\n "oidc_config": {},\n "mobile_oidc_config": {}\n }\n ],\n "pages": [\n {\n "slug": "dashboard",\n "path": "/dashboard",\n "schema": ["string"],\n "visibility": {},\n "content": {},\n "design": {},\n "blocks": {},\n "order": 1,\n "is_system": false,\n "is_detail": false,\n "detail_schema": "contact",\n "show_in_navigation": false,\n "is_public": true,\n "parentId": "c495fef9-eeca-4019-a989-8390dcd9825b",\n "is_entry_route": false,\n "is_deleted": false,\n "id": "c495fef9-eeca-4019-a989-8390dcd9825b",\n "last_modified_at": "2021-02-09T12:41:43.662Z"\n }\n ]\n}\n```\n\n</details>\n\n---\n\n### `getPortalConfigV3`\n\nRetrieves a specific portal configuration by ID.\n\n`GET /v3/portal/config/{portal_id}`\n\n```ts\nconst { data } = await client.getPortalConfigV3({\n portal_id: \'example\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "entity_actions": [\n {\n "journey_id": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "slug": "contact",\n "action_Label": {}\n }\n ],\n "extensions": [\n {\n "id": "string",\n "status": "installed",\n "options": {}\n }\n ],\n "extension_hooks": {},\n "default_user_to_notify": {\n "onPendingUser": [\n {}\n ]\n },\n "enabled": true,\n "name": "Installer Portal",\n "domain": "abc.com",\n "is_epilot_domain": true,\n "design_id": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "allowed_portal_entities": ["contact", "contract"],\n "self_registration_setting": "ALLOW_WITH_CONTACT_CREATION",\n "user_account_self_management": false,\n "feature_settings": {\n "start_page": true,\n "billing": true,\n "change_due_date": true,\n "new_design": true\n },\n "accessToken": "string",\n "advanced_mfa": {\n "enabled": true\n },\n "auth_settings": {\n "passwordless_login": {\n "enabled": true\n },\n "entry_point": "PASSWORD",\n "preferred_sso_providers": ["office-365-login"],\n "auto_redirect_to_sso": true\n },\n "cognito_details": {\n "cognito_user_pool_client_id": "6bsd0jkgoie74k2i8mrhc1vest",\n "cognito_user_pool_arn": "arn:aws:cognito-idp:us-east-1:123412341234:userpool/us-east-1_123412341",\n "cognito_user_pool_id": "eu-central-1_CUEQRNbUb",\n "timeouts": {\n "refresh_token": 300,\n "access_token": 300,\n "id_token": 300\n },\n "advanced_authentication": {\n "user_activity_logging": true,\n "adaptive_authentication": true,\n "compromised_credentials_detection": true\n },\n "password_policy": {\n "minimum_length": 8,\n "maximum_length": 256,\n "require_lowercase": true,\n "require_uppercase": true,\n "require_numbers": true,\n "require_symbols": true\n }\n },\n "config": "string",\n "contact_identifiers": ["email", "last_name"],\n "approval_state_attributes": {\n "contact": ["name", "address"],\n "contract": ["installment_amount"]\n },\n "email_templates": {\n "confirmAccount": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "advancedAuth": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "advancedMFA": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "journeySignUp": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "journeySignInOneTimePassword": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "journeyLoginOTP": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "forgotPassword": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "invitation": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "partnerInvitation": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "onNewQuote": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "onMapAPendingUser": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "onDocUpload": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "onWorkflowStepAssigned": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "confirmEmailUpdate": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "verifyCodeToSetPassword": "5da0a718-c822-403d-9f5d-20d4584e0528"\n },\n "images": {\n "orderLeftTeaser": "https://epilot-bucket.s3.eu-central-1.amazonaws.com/12344/6538fddb-f0e9-4f0f-af51-6e57891ff20a/order-left-teaser.jpeg",\n "orderRightTeaser": "https://epilot-bucket.s3.eu-central-1.amazonaws.com/12344/6538fddb-f0e9-4f0f-af51-6e57891ff20a/order-right-teaser.jpeg",\n "welcomeBanner": "https://epilot-bucket.s3.eu-central-1.amazonaws.com/12344/6538fddb-f0e9-4f0f-af51-6e57891ff20a/welcome-banner.jpeg"\n },\n "entity_identifiers": {\n "type": {\n "isEnabled": true,\n "attributes": ["contract_number"]\n }\n },\n "contract_identifiers": [\n {\n "name": "email",\n "schema": "contact"\n },\n {\n "name": "last_name",\n "schema": "contact"\n }\n ],\n "contract_selector_config": {\n "show_inactive": true,\n "title_path": "string"\n },\n "registration_identifiers": [\n {\n "name": "last_name",\n "schema": "contact"\n },\n {\n "name": "contract_number",\n "schema": "contract"\n }\n ],\n "triggered_journeys": [\n {\n "trigger_name": "FIRST_LOGIN",\n "journey_id": "5da0a718-c822-403d-9f5d-20d4584e0528"\n }\n ],\n "entity_edit_rules": [\n {\n "slug": "contact",\n "attribute": "first_name",\n "rule_type": "cadence",\n "cadence_period_type": "days",\n "cadence_period": 1,\n "changes_allowed": 1,\n "grace_period": 1,\n "allowed_increment": "10%",\n "allowed_decrement": "10%",\n "number_of_days_before_restriction": 10\n }\n ],\n "allowed_file_extensions": {\n "document": ["pdf"],\n "image": ["jpg"],\n "spreadsheet": ["xls"],\n "presentation": ["ppt"],\n "audioVideo": ["mp4"],\n "email": ["eml"],\n "archive": ["zip"],\n "cad": ["cad"],\n "calendar": ["ics"],\n "other": ["txt"]\n },\n "prevent_search_engine_indexing": true,\n "meter_reading_grace_period": 0,\n "inactive_contract_cutoff_years": 0,\n "is_dummy": true,\n "is_v3_item": true,\n "portal_id": "453ad7bf-86d5-46c8-8252-bcc868df5e3c",\n "portal_sk_v3": "PORTAL_CONFIG#453ad7bf-86d5-46c8-8252-bcc868df5e3c",\n "origin": "string",\n "organization_id": 12345,\n "org_settings": {\n "canary": {\n "enabled": true\n },\n "notracking": {\n "enabled": true\n }\n },\n "feature_flags": {},\n "grants": [\n {\n "action": "entity-read",\n "resource": "entity:123:contact:f7c22299-ca72-4bca-8538-0a88eeefc947",\n "effect": "allow"\n }\n ],\n "identity_providers": [\n {\n "slug": "office-365-login",\n "display_name": "Office 365 Login",\n "oidc_config": {},\n "mobile_oidc_config": {}\n }\n ],\n "pages": [\n {\n "slug": "dashboard",\n "path": "/dashboard",\n "schema": ["string"],\n "visibility": {},\n "content": {},\n "design": {},\n "blocks": {},\n "order": 1,\n "is_system": false,\n "is_detail": false,\n "detail_schema": "contact",\n "show_in_navigation": false,\n "is_public": true,\n "parentId": "c495fef9-eeca-4019-a989-8390dcd9825b",\n "is_entry_route": false,\n "is_deleted": false,\n "id": "c495fef9-eeca-4019-a989-8390dcd9825b",\n "last_modified_at": "2021-02-09T12:41:43.662Z"\n }\n ]\n}\n```\n\n</details>\n\n---\n\n### `putPortalConfig`\n\nUpdates a specific portal configuration by ID.\n\n`PUT /v3/portal/config/{portal_id}`\n\n```ts\nconst { data } = await client.putPortalConfig(\n {\n portal_id: \'example\',\n },\n {\n entity_actions: [\n {\n journey_id: \'5da0a718-c822-403d-9f5d-20d4584e0528\',\n slug: \'contact\',\n action_Label: { /* ... */ }\n }\n ],\n extensions: [\n {\n id: \'string\',\n status: \'installed\',\n options: {}\n }\n ],\n extension_hooks: {},\n default_user_to_notify: {\n onPendingUser: [\n { /* ... */ }\n ]\n },\n enabled: true,\n name: \'Installer Portal\',\n domain: \'abc.com\',\n is_epilot_domain: true,\n design_id: \'5da0a718-c822-403d-9f5d-20d4584e0528\',\n allowed_portal_entities: [\'contact\', \'contract\'],\n self_registration_setting: \'ALLOW_WITH_CONTACT_CREATION\',\n user_account_self_management: false,\n feature_settings: {\n start_page: true,\n billing: true,\n change_due_date: true,\n new_design: true\n },\n accessToken: \'string\',\n advanced_mfa: {\n enabled: true\n },\n auth_settings: {\n passwordless_login: {\n enabled: true\n },\n entry_point: \'PASSWORD\',\n preferred_sso_providers: [\'office-365-login\'],\n auto_redirect_to_sso: true\n },\n cognito_details: {\n cognito_user_pool_client_id: \'6bsd0jkgoie74k2i8mrhc1vest\',\n cognito_user_pool_arn: \'arn:aws:cognito-idp:us-east-1:123412341234:userpool/us-east-1_123412341\',\n cognito_user_pool_id: \'eu-central-1_CUEQRNbUb\',\n timeouts: {\n refresh_token: 300,\n access_token: 300,\n id_token: 300\n },\n advanced_authentication: {\n user_activity_logging: true,\n adaptive_authentication: true,\n compromised_credentials_detection: true\n },\n password_policy: {\n minimum_length: 8,\n maximum_length: 256,\n require_lowercase: true,\n require_uppercase: true,\n require_numbers: true,\n require_symbols: true\n }\n },\n config: \'string\',\n contact_identifiers: [\'email\', \'last_name\'],\n approval_state_attributes: {\n contact: [\'name\', \'address\'],\n contract: [\'installment_amount\']\n },\n email_templates: {\n confirmAccount: \'5da0a718-c822-403d-9f5d-20d4584e0528\',\n advancedAuth: \'5da0a718-c822-403d-9f5d-20d4584e0528\',\n advancedMFA: \'5da0a718-c822-403d-9f5d-20d4584e0528\',\n journeySignUp: \'5da0a718-c822-403d-9f5d-20d4584e0528\',\n journeySignInOneTimePassword: \'5da0a718-c822-403d-9f5d-20d4584e0528\',\n journeyLoginOTP: \'5da0a718-c822-403d-9f5d-20d4584e0528\',\n forgotPassword: \'5da0a718-c822-403d-9f5d-20d4584e0528\',\n invitation: \'5da0a718-c822-403d-9f5d-20d4584e0528\',\n partnerInvitation: \'5da0a718-c822-403d-9f5d-20d4584e0528\',\n onNewQuote: \'5da0a718-c822-403d-9f5d-20d4584e0528\',\n onMapAPendingUser: \'5da0a718-c822-403d-9f5d-20d4584e0528\',\n onDocUpload: \'5da0a718-c822-403d-9f5d-20d4584e0528\',\n onWorkflowStepAssigned: \'5da0a718-c822-403d-9f5d-20d4584e0528\',\n confirmEmailUpdate: \'5da0a718-c822-403d-9f5d-20d4584e0528\',\n verifyCodeToSetPassword: \'5da0a718-c822-403d-9f5d-20d4584e0528\'\n },\n images: {\n orderLeftTeaser: \'https://epilot-bucket.s3.eu-central-1.amazonaws.com/12344/6538fddb-f0e9-4f0f-af51-6e57891ff20a/order-left-teaser.jpeg\',\n orderRightTeaser: \'https://epilot-bucket.s3.eu-central-1.amazonaws.com/12344/6538fddb-f0e9-4f0f-af51-6e57891ff20a/order-right-teaser.jpeg\',\n welcomeBanner: \'https://epilot-bucket.s3.eu-central-1.amazonaws.com/12344/6538fddb-f0e9-4f0f-af51-6e57891ff20a/welcome-banner.jpeg\'\n },\n entity_identifiers: {\n type: {\n isEnabled: true,\n attributes: [\'contract_number\']\n }\n },\n contract_identifiers: [\n {\n name: \'email\',\n schema: \'contact\'\n },\n {\n name: \'last_name\',\n schema: \'contact\'\n },\n /* ... 1 more */\n ],\n contract_selector_config: {\n show_inactive: true,\n title_path: \'string\'\n },\n registration_identifiers: [\n {\n name: \'last_name\',\n schema: \'contact\'\n },\n {\n name: \'contract_number\',\n schema: \'contract\'\n }\n ],\n triggered_journeys: [\n {\n trigger_name: \'FIRST_LOGIN\',\n journey_id: \'5da0a718-c822-403d-9f5d-20d4584e0528\'\n }\n ],\n entity_edit_rules: [\n {\n slug: \'contact\',\n attribute: \'first_name\',\n rule_type: \'cadence\',\n cadence_period_type: \'days\',\n cadence_period: 1,\n changes_allowed: 1,\n grace_period: 1,\n allowed_increment: \'10%\',\n allowed_decrement: \'10%\',\n number_of_days_before_restriction: 10\n }\n ],\n allowed_file_extensions: {\n document: [\'pdf\'],\n image: [\'jpg\'],\n spreadsheet: [\'xls\'],\n presentation: [\'ppt\'],\n audioVideo: [\'mp4\'],\n email: [\'eml\'],\n archive: [\'zip\'],\n cad: [\'cad\'],\n calendar: [\'ics\'],\n other: [\'txt\']\n },\n prevent_search_engine_indexing: true,\n meter_reading_grace_period: 0,\n inactive_contract_cutoff_years: 0,\n is_dummy: true,\n is_v3_item: true,\n portal_id: \'453ad7bf-86d5-46c8-8252-bcc868df5e3c\',\n portal_sk_v3: \'PORTAL_CONFIG#453ad7bf-86d5-46c8-8252-bcc868df5e3c\',\n origin: \'string\',\n organization_id: 12345,\n org_settings: {\n canary: {\n enabled: true\n },\n notracking: {\n enabled: true\n }\n },\n feature_flags: {},\n grants: [\n {\n action: \'entity-read\',\n resource: \'entity:123:contact:f7c22299-ca72-4bca-8538-0a88eeefc947\',\n effect: \'allow\'\n }\n ],\n identity_providers: [\n {\n slug: \'office-365-login\',\n display_name: \'Office 365 Login\',\n oidc_config: { /* ... */ },\n mobile_oidc_config: { /* ... */ }\n }\n ],\n pages: [\n {\n slug: \'dashboard\',\n path: \'/dashboard\',\n schema: [\'string\'],\n visibility: {},\n content: {},\n design: {},\n blocks: {},\n order: 1,\n is_system: false,\n is_detail: false,\n detail_schema: \'contact\',\n show_in_navigation: false,\n is_public: true,\n parentId: \'c495fef9-eeca-4019-a989-8390dcd9825b\',\n is_entry_route: false,\n is_deleted: false,\n id: \'c495fef9-eeca-4019-a989-8390dcd9825b\',\n last_modified_at: \'2021-02-09T12:41:43.662Z\'\n }\n ]\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "entity_actions": [\n {\n "journey_id": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "slug": "contact",\n "action_Label": {}\n }\n ],\n "extensions": [\n {\n "id": "string",\n "status": "installed",\n "options": {}\n }\n ],\n "extension_hooks": {},\n "default_user_to_notify": {\n "onPendingUser": [\n {}\n ]\n },\n "enabled": true,\n "name": "Installer Portal",\n "domain": "abc.com",\n "is_epilot_domain": true,\n "design_id": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "allowed_portal_entities": ["contact", "contract"],\n "self_registration_setting": "ALLOW_WITH_CONTACT_CREATION",\n "user_account_self_management": false,\n "feature_settings": {\n "start_page": true,\n "billing": true,\n "change_due_date": true,\n "new_design": true\n },\n "accessToken": "string",\n "advanced_mfa": {\n "enabled": true\n },\n "auth_settings": {\n "passwordless_login": {\n "enabled": true\n },\n "entry_point": "PASSWORD",\n "preferred_sso_providers": ["office-365-login"],\n "auto_redirect_to_sso": true\n },\n "cognito_details": {\n "cognito_user_pool_client_id": "6bsd0jkgoie74k2i8mrhc1vest",\n "cognito_user_pool_arn": "arn:aws:cognito-idp:us-east-1:123412341234:userpool/us-east-1_123412341",\n "cognito_user_pool_id": "eu-central-1_CUEQRNbUb",\n "timeouts": {\n "refresh_token": 300,\n "access_token": 300,\n "id_token": 300\n },\n "advanced_authentication": {\n "user_activity_logging": true,\n "adaptive_authentication": true,\n "compromised_credentials_detection": true\n },\n "password_policy": {\n "minimum_length": 8,\n "maximum_length": 256,\n "require_lowercase": true,\n "require_uppercase": true,\n "require_numbers": true,\n "require_symbols": true\n }\n },\n "config": "string",\n "contact_identifiers": ["email", "last_name"],\n "approval_state_attributes": {\n "contact": ["name", "address"],\n "contract": ["installment_amount"]\n },\n "email_templates": {\n "confirmAccount": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "advancedAuth": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "advancedMFA": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "journeySignUp": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "journeySignInOneTimePassword": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "journeyLoginOTP": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "forgotPassword": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "invitation": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "partnerInvitation": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "onNewQuote": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "onMapAPendingUser": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "onDocUpload": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "onWorkflowStepAssigned": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "confirmEmailUpdate": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "verifyCodeToSetPassword": "5da0a718-c822-403d-9f5d-20d4584e0528"\n },\n "images": {\n "orderLeftTeaser": "https://epilot-bucket.s3.eu-central-1.amazonaws.com/12344/6538fddb-f0e9-4f0f-af51-6e57891ff20a/order-left-teaser.jpeg",\n "orderRightTeaser": "https://epilot-bucket.s3.eu-central-1.amazonaws.com/12344/6538fddb-f0e9-4f0f-af51-6e57891ff20a/order-right-teaser.jpeg",\n "welcomeBanner": "https://epilot-bucket.s3.eu-central-1.amazonaws.com/12344/6538fddb-f0e9-4f0f-af51-6e57891ff20a/welcome-banner.jpeg"\n },\n "entity_identifiers": {\n "type": {\n "isEnabled": true,\n "attributes": ["contract_number"]\n }\n },\n "contract_identifiers": [\n {\n "name": "email",\n "schema": "contact"\n },\n {\n "name": "last_name",\n "schema": "contact"\n }\n ],\n "contract_selector_config": {\n "show_inactive": true,\n "title_path": "string"\n },\n "registration_identifiers": [\n {\n "name": "last_name",\n "schema": "contact"\n },\n {\n "name": "contract_number",\n "schema": "contract"\n }\n ],\n "triggered_journeys": [\n {\n "trigger_name": "FIRST_LOGIN",\n "journey_id": "5da0a718-c822-403d-9f5d-20d4584e0528"\n }\n ],\n "entity_edit_rules": [\n {\n "slug": "contact",\n "attribute": "first_name",\n "rule_type": "cadence",\n "cadence_period_type": "days",\n "cadence_period": 1,\n "changes_allowed": 1,\n "grace_period": 1,\n "allowed_increment": "10%",\n "allowed_decrement": "10%",\n "number_of_days_before_restriction": 10\n }\n ],\n "allowed_file_extensions": {\n "document": ["pdf"],\n "image": ["jpg"],\n "spreadsheet": ["xls"],\n "presentation": ["ppt"],\n "audioVideo": ["mp4"],\n "email": ["eml"],\n "archive": ["zip"],\n "cad": ["cad"],\n "calendar": ["ics"],\n "other": ["txt"]\n },\n "prevent_search_engine_indexing": true,\n "meter_reading_grace_period": 0,\n "inactive_contract_cutoff_years": 0,\n "is_dummy": true,\n "is_v3_item": true,\n "portal_id": "453ad7bf-86d5-46c8-8252-bcc868df5e3c",\n "portal_sk_v3": "PORTAL_CONFIG#453ad7bf-86d5-46c8-8252-bcc868df5e3c",\n "origin": "string",\n "organization_id": 12345,\n "org_settings": {\n "canary": {\n "enabled": true\n },\n "notracking": {\n "enabled": true\n }\n },\n "feature_flags": {},\n "grants": [\n {\n "action": "entity-read",\n "resource": "entity:123:contact:f7c22299-ca72-4bca-8538-0a88eeefc947",\n "effect": "allow"\n }\n ],\n "identity_providers": [\n {\n "slug": "office-365-login",\n "display_name": "Office 365 Login",\n "oidc_config": {},\n "mobile_oidc_config": {}\n }\n ],\n "pages": [\n {\n "slug": "dashboard",\n "path": "/dashboard",\n "schema": ["string"],\n "visibility": {},\n "content": {},\n "design": {},\n "blocks": {},\n "order": 1,\n "is_system": false,\n "is_detail": false,\n "detail_schema": "contact",\n "show_in_navigation": false,\n "is_public": true,\n "parentId": "c495fef9-eeca-4019-a989-8390dcd9825b",\n "is_entry_route": false,\n "is_deleted": false,\n "id": "c495fef9-eeca-4019-a989-8390dcd9825b",\n "last_modified_at": "2021-02-09T12:41:43.662Z"\n }\n ]\n}\n```\n\n</details>\n\n---\n\n### `deletePortalConfig`\n\nDeletes a specific portal configuration by ID.\n\n`DELETE /v3/portal/config/{portal_id}`\n\n```ts\nconst { data } = await client.deletePortalConfig({\n portal_id: \'example\',\n})\n```\n\n---\n\n### `listAllPortalConfigs`\n\nRetrieves all portal configurations.\n\n`GET /v3/portal/configs`\n\n```ts\nconst { data } = await client.listAllPortalConfigs()\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "data": [\n {\n "entity_actions": [],\n "extensions": [],\n "extension_hooks": {},\n "default_user_to_notify": {},\n "enabled": true,\n "name": "Installer Portal",\n "domain": "abc.com",\n "is_epilot_domain": true,\n "design_id": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "allowed_portal_entities": ["contact", "contract"],\n "self_registration_setting": "ALLOW_WITH_CONTACT_CREATION",\n "user_account_self_management": false,\n "feature_settings": {},\n "accessToken": "string",\n "advanced_mfa": {},\n "auth_settings": {},\n "cognito_details": {},\n "config": "string",\n "contact_identifiers": ["email", "last_name"],\n "approval_state_attributes": {},\n "email_templates": {},\n "images": {},\n "entity_identifiers": {},\n "contract_identifiers": [],\n "contract_selector_config": {},\n "registration_identifiers": [],\n "triggered_journeys": [],\n "entity_edit_rules": [],\n "allowed_file_extensions": {},\n "prevent_search_engine_indexing": true,\n "meter_reading_grace_period": 0,\n "inactive_contract_cutoff_years": 0,\n "is_dummy": true,\n "is_v3_item": true,\n "portal_id": "453ad7bf-86d5-46c8-8252-bcc868df5e3c",\n "portal_sk_v3": "PORTAL_CONFIG#453ad7bf-86d5-46c8-8252-bcc868df5e3c",\n "origin": "string",\n "organization_id": 12345,\n "org_settings": {},\n "feature_flags": {},\n "grants": [],\n "identity_providers": [],\n "pages": []\n }\n ]\n}\n```\n\n</details>\n\n---\n\n### `swapPortalConfig`\n\nSwaps the portal configuration of two portals.\n\n`POST /v3/portal/config/swap`\n\n```ts\nconst { data } = await client.swapPortalConfig(\n null,\n {\n source_portal_id: \'453ad7bf-86d5-46c8-8252-bcc868df5e3c\',\n target_portal_id: \'453ad7bf-86d5-46c8-8252-bcc868df5e3c\',\n items_to_swap: [\'all\']\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "message": "Domain and users swapped successfully."\n}\n```\n\n</details>\n\n---\n\n### `invitePartner`\n\nInvites a partner to a portal\n\n`POST /v3/portal/partner/invite`\n\n```ts\nconst { data } = await client.invitePartner(\n null,\n {\n email: \'string\',\n represents_contact_list: [\'5da0a718-c822-403d-9f5d-20d4584e0528\'],\n contact_data: {}\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "message": "User invited successfully"\n}\n```\n\n</details>\n\n---\n\n### `listBusinessPartners`\n\nLists all business partners linked to the businessaccount\n\n`GET /v3/portal/partner/list`\n\n```ts\nconst { data } = await client.listBusinessPartners()\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "data": [\n {\n "_id": "5da0a718-c822-403d-9f5d-20d4584e0528",\n "has_portal_user": true,\n "registration_status": "Registration Pending",\n "email": "john.doe@example.com",\n "_title": "John Doe",\n "first_name": "John",\n "last_name": "Doe",\n "access_status": true\n }\n ]\n}\n```\n\n</details>\n\n---\n\n### `resendPartnerInvitation`\n\nResends an invitation email to a partner\n\n`POST /v3/portal/partner/{partner_id}/resend-invitation`\n\n```ts\nconst { data } = await client.resendPartnerInvitation({\n partner_id: \'example\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "message": "Partner invitation resent successfully"\n}\n```\n\n</details>\n\n---\n\n### `revokePartner`\n\nRevokes a partner from a portal\n\n`DELETE /v3/portal/partner/{partner_id}/revoke`\n\n```ts\nconst { data } = await client.revokePartner({\n partner_id: \'example\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "message": "Partner revoked from portal successfully"\n}\n```\n\n</details>\n\n---\n\n### `disablePartner`\n\nDisables a partner from a portal\n\n`POST /v3/portal/partner/{partner_id}/disable`\n\n```ts\nconst { data } = await client.disablePartner({\n partner_id: \'example\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "message": "Partner disabled from portal successfully"\n}\n```\n\n</details>\n\n---\n\n### `enablePartner`\n\nEnables a partner from a portal\n\n`POST /v3/portal/partner/{partner_id}/enable`\n\n```ts\nconst { data } = await client.enablePartner({\n partner_id: \'example\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "message": "Partner enabled from portal successfully"\n}\n```\n\n</details>\n\n---\n\n## Schemas\n\n### `ContextEntity`\n\nAn entity reference for context-aware operations\n\n```ts\ntype ContextEntity = {\n entity_schema: string\n entity_id: string // uuid\n}\n```\n\n### `ContextEntities`\n\nAdditional entities to include in the context for variable interpolation. Portal User and Contact entities are automatically part of the context.\n\n```ts\ntype ContextEntities = Array<{\n entity_schema: string\n entity_id: string // uuid\n}>\n```\n\n### `ErrorResp`\n\n```ts\ntype ErrorResp = {\n message?: string\n}\n```\n\n### `FailedRuleErrorResp`\n\n```ts\ntype FailedRuleErrorResp = {\n message?: string\n failed_rule?: object\n}\n```\n\n### `EmailTemplates`\n\nEmail templates used for authentication and internal processes\n\n```ts\ntype EmailTemplates = {\n confirmAccount?: string // uuid\n advancedAuth?: string // uuid\n advancedMFA?: string // uuid\n journeySignUp?: string // uuid\n journeySignInOneTimePassword?: string // uuid\n journeyLoginOTP?: string // uuid\n forgotPassword?: string // uuid\n invitation?: string // uuid\n partnerInvitation?: string // uuid\n onNewQuote?: string // uuid\n onMapAPendingUser?: string // uuid\n onDocUpload?: string // uuid\n onWorkflowStepAssigned?: string // uuid\n confirmEmailUpdate?: string // uuid\n verifyCodeToSetPassword?: string // uuid\n}\n```\n\n### `DeleteEntityFile`\n\n```ts\ntype DeleteEntityFile = {\n entity_id: string // uuid\n entity_type: string\n file_entity_ids: string // uuid[]\n}\n```\n\n### `SaveEntityFile`\n\n```ts\ntype SaveEntityFile = {\n entity_id: string // uuid\n entity_type: string\n files: Array<{\n filename: string\n access_control?: "private" | "public-read"\n s3ref: {\n bucket: { ... }\n key: { ... }\n }\n }>\n}\n```\n\n### `SavePortalFile`\n\n```ts\ntype SavePortalFile = {\n origin: string\n files: Array<{\n filename?: string\n file_type: string\n _tags?: string[]\n s3ref?: {\n bucket: { ... }\n key: { ... }\n }\n }>\n}\n```\n\n### `ExtraSchemaAttributes`\n\n```ts\ntype ExtraSchemaAttributes = Array<{\n name: string\n label: string\n group: string\n}>\n```\n\n### `Origin`\n\nOrigin of the portal\n\n```ts\ntype Origin = string\n```\n\n### `AllowedFileExtensions`\n\nAllowed file extensions for upload\n\n```ts\ntype AllowedFileExtensions = {\n document?: string[]\n image?: string[]\n spreadsheet?: string[]\n presentation?: string[]\n audioVideo?: string[]\n email?: string[]\n archive?: string[]\n cad?: string[]\n calendar?: string[]\n other?: string[]\n}\n```\n\n### `UpdateOnlyPortalConfigAttributes`\n\n```ts\ntype UpdateOnlyPortalConfigAttributes = {\n entity_actions?: Array<{\n journey_id?: string // uuid\n slug?: string\n action_Label?: {\n en?: { ... }\n de?: { ... }\n }\n }>\n extensions?: Array<{\n id: string\n status: "installed" | "enabled"\n options?: Record<string, string>\n }>\n extension_hooks?: Record<string, {\n app_id: string\n extension_id: string\n hook_id: string\n }>\n default_user_to_notify?: {\n onPendingUser?: Array<{\n type?: { ... }\n user_id?: { ... }\n display_name?: { ... }\n image_uri?: { ... }\n org_id?: { ... }\n email?: { ... }\n phone?: { ... }\n }>\n }\n}\n```\n\n### `CommonConfigAttributes`\n\n```ts\ntype CommonConfigAttributes = {\n enabled?: boolean\n name?: string\n domain: string\n is_epilot_domain?: boolean\n design_id?: string // uuid\n allowed_portal_entities?: string[]\n self_registration_setting?: "ALLOW_WITH_CONTACT_CREATION" | "ALLOW_WITHOUT_CONTACT_CREATION" | "DENY" | "ALWAYS_CREATE_CONTACT" | "DISALLOW_COMPLETELY" | "BLOCK_IF_PORTAL_USER_EXISTS"\n user_account_self_management?: boolean\n feature_settings?: {\n start_page?: boolean\n billing?: boolean\n change_due_date?: boolean\n new_design?: boolean\n }\n accessToken?: string\n advanced_mfa?: {\n enabled?: boolean\n }\n auth_settings?: {\n passwordless_login?: {\n enabled?: { ... }\n }\n entry_point?: "PASSWORD" | "SSO"\n preferred_sso_providers?: string[]\n auto_redirect_to_sso?: boolean\n }\n cognito_details?: {\n cognito_user_pool_client_id?: string\n cognito_user_pool_arn?: string\n cognito_user_pool_id?: string\n timeouts?: {\n refresh_token?: { ... }\n access_token?: { ... }\n id_token?: { ... }\n }\n advanced_authentication?: {\n user_activity_logging?: { ... }\n adaptive_authentication?: { ... }\n compromised_credentials_detection?: { ... }\n }\n password_policy?: {\n minimum_length?: { ... }\n maximum_length?: { ... }\n require_lowercase?: { ... }\n require_uppercase?: { ... }\n require_numbers?: { ... }\n require_symbols?: { ... }\n }\n }\n config?: string\n contact_identifiers?: string[]\n approval_state_attributes?: Record<string, string[]>\n email_templates?: {\n confirmAccount?: string // uuid\n advancedAuth?: string // uuid\n advancedMFA?: string // uuid\n journeySignUp?: string // uuid\n journeySignInOneTimePassword?: string // uuid\n journeyLoginOTP?: string // uuid\n forgotPassword?: string // uuid\n invitation?: string // uuid\n partnerInvitation?: string // uuid\n onNewQuote?: string // uuid\n onMapAPendingUser?: string // uuid\n onDocUpload?: string // uuid\n onWorkflowStepAssigned?: string // uuid\n confirmEmailUpdate?: string // uuid\n verifyCodeToSetPassword?: string // uuid\n }\n images?: {\n orderLeftTeaser?: string\n orderRightTeaser?: string\n welcomeBanner?: string\n }\n entity_identifiers?: {\n type?: {\n isEnabled?: { ... }\n attributes?: { ... }\n }\n }\n contract_identifiers?: Array<{\n name?: string\n schema?: string\n }>\n contract_selector_config?: {\n show_inactive?: boolean\n title_path?: string\n }\n registration_identifiers?: Array<{\n name?: string\n schema?: string\n }>\n triggered_journeys?: Array<{\n trigger_name?: "FIRST_LOGIN" | "ACCEPT_ORDER" | "DECLINE_ORDER"\n journey_id?: string // uuid\n }>\n entity_edit_rules?: Array<{\n slug?: string\n attribute?: string\n // ...\n}\n```\n\n### `UpsertPortalConfig`\n\n```ts\ntype UpsertPortalConfig = {\n entity_actions?: Array<{\n journey_id?: string // uuid\n slug?: string\n action_Label?: {\n en?: { ... }\n de?: { ... }\n }\n }>\n extensions?: Array<{\n id: string\n status: "installed" | "enabled"\n options?: Record<string, string>\n }>\n extension_hooks?: Record<string, {\n app_id: string\n extension_id: string\n hook_id: string\n }>\n default_user_to_notify?: {\n onPendingUser?: Array<{\n type?: { ... }\n user_id?: { ... }\n display_name?: { ... }\n image_uri?: { ... }\n org_id?: { ... }\n email?: { ... }\n phone?: { ... }\n }>\n }\n enabled?: boolean\n name?: string\n domain: string\n is_epilot_domain?: boolean\n design_id?: string // uuid\n allowed_portal_entities?: string[]\n self_registration_setting?: "ALLOW_WITH_CONTACT_CREATION" | "ALLOW_WITHOUT_CONTACT_CREATION" | "DENY" | "ALWAYS_CREATE_CONTACT" | "DISALLOW_COMPLETELY" | "BLOCK_IF_PORTAL_USER_EXISTS"\n user_account_self_management?: boolean\n feature_settings?: {\n start_page?: boolean\n billing?: boolean\n change_due_date?: boolean\n new_design?: boolean\n }\n accessToken?: string\n advanced_mfa?: {\n enabled?: boolean\n }\n auth_settings?: {\n passwordless_login?: {\n enabled?: { ... }\n }\n entry_point?: "PASSWORD" | "SSO"\n preferred_sso_providers?: string[]\n auto_redirect_to_sso?: boolean\n }\n cognito_details?: {\n cognito_user_pool_client_id?: string\n cognito_user_pool_arn?: string\n cognito_user_pool_id?: string\n timeouts?: {\n refresh_token?: { ... }\n access_token?: { ... }\n id_token?: { ... }\n }\n advanced_authentication?: {\n user_activity_logging?: { ... }\n adaptive_authentication?: { ... }\n compromised_credentials_detection?: { ... }\n }\n password_policy?: {\n minimum_length?: { ... }\n maximum_length?: { ... }\n require_lowercase?: { ... }\n require_uppercase?: { ... }\n require_numbers?: { ... }\n require_symbols?: { ... }\n }\n }\n config?: string\n contact_identifiers?: string[]\n approval_state_attributes?: Record<string, string[]>\n email_templates?: {\n confirmAccount?: string // uuid\n advancedAuth?: string // uuid\n advancedMFA?: string // uuid\n journeySignUp?: string // uuid\n journeySignInOneTimePassword?: string // uuid\n journeyLoginOTP?: string // uuid\n forgotPassword?: string // uuid\n invitation?: string // uuid\n partnerInvitation?: string // uuid\n onNewQuote?: string // uuid\n onMapAPendingUser?: string // uuid\n onDocUpload?: string // uuid\n onWorkflowStepAssigned?: string // uuid\n confirmEmailUpdate?: string // uuid\n verifyCodeToSetPassword?: string // uuid\n }\n images?: {\n // ...\n}\n```\n\n### `PortalConfig`\n\n```ts\ntype PortalConfig = {\n enabled?: boolean\n name?: string\n domain: string\n is_epilot_domain?: boolean\n design_id?: string // uuid\n allowed_portal_entities?: string[]\n self_registration_setting?: "ALLOW_WITH_CONTACT_CREATION" | "ALLOW_WITHOUT_CONTACT_CREATION" | "DENY" | "ALWAYS_CREATE_CONTACT" | "DISALLOW_COMPLETELY" | "BLOCK_IF_PORTAL_USER_EXISTS"\n user_account_self_management?: boolean\n feature_settings?: {\n start_page?: boolean\n billing?: boolean\n change_due_date?: boolean\n new_design?: boolean\n }\n accessToken?: string\n advanced_mfa?: {\n enabled?: boolean\n }\n auth_settings?: {\n passwordless_login?: {\n enabled?: { ... }\n }\n entry_point?: "PASSWORD" | "SSO"\n preferred_sso_providers?: string[]\n auto_redirect_to_sso?: boolean\n }\n cognito_details?: {\n cognito_user_pool_client_id?: string\n cognito_user_pool_arn?: string\n cognito_user_pool_id?: string\n timeouts?: {\n refresh_token?: { ... }\n access_token?: { ... }\n id_token?: { ... }\n }\n advanced_authentication?: {\n user_activity_logging?: { ... }\n adaptive_authentication?: { ... }\n compromised_credentials_detection?: { ... }\n }\n password_policy?: {\n minimum_length?: { ... }\n maximum_length?: { ... }\n require_lowercase?: { ... }\n require_uppercase?: { ... }\n require_numbers?: { ... }\n require_symbols?: { ... }\n }\n }\n config?: string\n contact_identifiers?: string[]\n approval_state_attributes?: Record<string, string[]>\n email_templates?: {\n confirmAccount?: string // uuid\n advancedAuth?: string // uuid\n advancedMFA?: string // uuid\n journeySignUp?: string // uuid\n journeySignInOneTimePassword?: string // uuid\n journeyLoginOTP?: string // uuid\n forgotPassword?: string // uuid\n invitation?: string // uuid\n partnerInvitation?: string // uuid\n onNewQuote?: string // uuid\n onMapAPendingUser?: string // uuid\n onDocUpload?: string // uuid\n onWorkflowStepAssigned?: string // uuid\n confirmEmailUpdate?: string // uuid\n verifyCodeToSetPassword?: string // uuid\n }\n images?: {\n orderLeftTeaser?: string\n orderRightTeaser?: string\n welcomeBanner?: string\n }\n entity_identifiers?: {\n type?: {\n isEnabled?: { ... }\n attributes?: { ... }\n }\n }\n contract_identifiers?: Array<{\n name?: string\n schema?: string\n }>\n contract_selector_config?: {\n show_inactive?: boolean\n title_path?: string\n }\n registration_identifiers?: Array<{\n name?: string\n schema?: string\n }>\n triggered_journeys?: Array<{\n trigger_name?: "FIRST_LOGIN" | "ACCEPT_ORDER" | "DECLINE_ORDER"\n journey_id?: string // uuid\n }>\n entity_edit_rules?: Array<{\n slug?: string\n attribute?: string\n // ...\n}\n```\n\n### `UpsertPortalWidget`\n\n```ts\ntype UpsertPortalWidget = {\n widgets: Array<{\n id: string\n type: "ACTION_WIDGET" | "CONTENT_WIDGET" | "ENTITY_WIDGET" | "TEASER_WIDGET" | "DOCUMENT_WIDGET" | "PAYMENT_WIDGET" | "METER_READING_WIDGET" | "METER_CHART_WIDGET" | "CAMPAIGN_WIDGET" | "PRODUCT_RECOMMENDATIONS_WIDGET"\n listIndex: number\n headline?: {\n en?: { ... }\n de?: { ... }\n }\n subHeadline?: {\n en?: { ... }\n de?: { ... }\n }\n schema?: string\n } | {\n id: string\n type: "ACTION_WIDGET" | "CONTENT_WIDGET" | "ENTITY_WIDGET" | "TEASER_WIDGET" | "DOCUMENT_WIDGET" | "PAYMENT_WIDGET" | "METER_READING_WIDGET" | "METER_CHART_WIDGET" | "CAMPAIGN_WIDGET" | "PRODUCT_RECOMMENDATIONS_WIDGET"\n listIndex: number\n headline?: {\n en?: { ... }\n de?: { ... }\n }\n subHeadline?: {\n en?: { ... }\n de?: { ... }\n }\n content?: string\n } | {\n id: string\n type: "ACTION_WIDGET" | "CONTENT_WIDGET" | "ENTITY_WIDGET" | "TEASER_WIDGET" | "DOCUMENT_WIDGET" | "PAYMENT_WIDGET" | "METER_READING_WIDGET" | "METER_CHART_WIDGET" | "CAMPAIGN_WIDGET" | "PRODUCT_RECOMMENDATIONS_WIDGET"\n listIndex: number\n headline?: {\n en?: { ... }\n de?: { ... }\n }\n subHeadline?: {\n en?: { ... }\n de?: { ... }\n }\n actions?: Array<{\n _id: { ... }\n type: { ... }\n label: { ... }\n url: { ... }\n rules?: { ... }\n }>\n } | {\n id: string\n type: "ACTION_WIDGET" | "CONTENT_WIDGET" | "ENTITY_WIDGET" | "TEASER_WIDGET" | "DOCUMENT_WIDGET" | "PAYMENT_WIDGET" | "METER_READING_WIDGET" | "METER_CHART_WIDGET" | "CAMPAIGN_WIDGET" | "PRODUCT_RECOMMENDATIONS_WIDGET"\n listIndex: number\n headline?: {\n en?: { ... }\n de?: { ... }\n }\n subHeadline?: {\n en?: { ... }\n de?: { ... }\n }\n imageUrl?: string\n button?: {\n label?: { ... }\n url?: { ... }\n }\n } | {\n id: string\n type: "ACTION_WIDGET" | "CONTENT_WIDGET" | "ENTITY_WIDGET" | "TEASER_WIDGET" | "DOCUMENT_WIDGET" | "PAYMENT_WIDGET" | "METER_READING_WIDGET" | "METER_CHART_WIDGET" | "CAMPAIGN_WIDGET" | "PRODUCT_RECOMMENDATIONS_WIDGET"\n listIndex: number\n headline?: {\n en?: { ... }\n de?: { ... }\n }\n subHeadline?: {\n en?: { ... }\n de?: { ... }\n }\n } | {\n id: string\n type: "ACTION_WIDGET" | "CONTENT_WIDGET" | "ENTITY_WIDGET" | "TEASER_WIDGET" | "DOCUMENT_WIDGET" | "PAYMENT_WIDGET" | "METER_READING_WIDGET" | "METER_CHART_WIDGET" | "CAMPAIGN_WIDGET" | "PRODUCT_RECOMMENDATIONS_WIDGET"\n listIndex: number\n headline?: {\n en?: { ... }\n de?: { ... }\n }\n subHeadline?: {\n en?: { ... }\n de?: { ... }\n }\n } | {\n id: string\n type: "ACTION_WIDGET" | "CONTENT_WIDGET" | "ENTITY_WIDGET" | "TEASER_WIDGET" | "DOCUMENT_WIDGET" | "PAYMENT_WIDGET" | "METER_READING_WIDGET" | "METER_CHART_WIDGET" | "CAMPAIGN_WIDGET" | "PRODUCT_RECOMMENDATIONS_WIDGET"\n listIndex: number\n headline?: {\n en?: { ... }\n de?: { ... }\n }\n subHeadline?: {\n en?: { ... }\n de?: { ... }\n }\n schema?: string\n // ...\n}\n```\n\n### `WidgetBase`\n\n```ts\ntype WidgetBase = {\n id: string\n type: "ACTION_WIDGET" | "CONTENT_WIDGET" | "ENTITY_WIDGET" | "TEASER_WIDGET" | "DOCUMENT_WIDGET" | "PAYMENT_WIDGET" | "METER_READING_WIDGET" | "METER_CHART_WIDGET" | "CAMPAIGN_WIDGET" | "PRODUCT_RECOMMENDATIONS_WIDGET"\n listIndex: number\n headline?: {\n en?: string\n de?: string\n }\n subHeadline?: {\n en?: string\n de?: string\n }\n}\n```\n\n### `EntityWidget`\n\n```ts\ntype EntityWidget = {\n id: string\n type: "ACTION_WIDGET" | "CONTENT_WIDGET" | "ENTITY_WIDGET" | "TEASER_WIDGET" | "DOCUMENT_WIDGET" | "PAYMENT_WIDGET" | "METER_READING_WIDGET" | "METER_CHART_WIDGET" | "CAMPAIGN_WIDGET" | "PRODUCT_RECOMMENDATIONS_WIDGET"\n listIndex: number\n headline?: {\n en?: string\n de?: string\n }\n subHeadline?: {\n en?: string\n de?: string\n }\n schema?: string\n}\n```\n\n### `MeterReadingWidget`\n\n```ts\ntype MeterReadingWidget = {\n id: string\n type: "ACTION_WIDGET" | "CONTENT_WIDGET" | "ENTITY_WIDGET" | "TEASER_WIDGET" | "DOCUMENT_WIDGET" | "PAYMENT_WIDGET" | "METER_READING_WIDGET" | "METER_CHART_WIDGET" | "CAMPAIGN_WIDGET" | "PRODUCT_RECOMMENDATIONS_WIDGET"\n listIndex: number\n headline?: {\n en?: string\n de?: string\n }\n subHeadline?: {\n en?: string\n de?: string\n }\n schema?: string\n}\n```\n\n### `MeterChartWidget`\n\n```ts\ntype MeterChartWidget = {\n id: string\n type: "ACTION_WIDGET" | "CONTENT_WIDGET" | "ENTITY_WIDGET" | "TEASER_WIDGET" | "DOCUMENT_WIDGET" | "PAYMENT_WIDGET" | "METER_READING_WIDGET" | "METER_CHART_WIDGET" | "CAMPAIGN_WIDGET" | "PRODUCT_RECOMMENDATIONS_WIDGET"\n listIndex: number\n headline?: {\n en?: string\n de?: string\n }\n subHeadline?: {\n en?: string\n de?: string\n }\n schema?: string\n}\n```\n\n### `WidgetAction`\n\n```ts\ntype WidgetAction = {\n _id: string\n type: "link" | "journey"\n label: {\n en?: string\n de?: string\n }\n url: string\n rules?: Array<{\n attribute: string\n attribute_value: string\n entity: string\n }>\n}\n```\n\n### `ActionWidget`\n\n```ts\ntype ActionWidget = {\n id: string\n type: "ACTION_WIDGET" | "CONTENT_WIDGET" | "ENTITY_WIDGET" | "TEASER_WIDGET" | "DOCUMENT_WIDGET" | "PAYMENT_WIDGET" | "METER_READING_WIDGET" | "METER_CHART_WIDGET" | "CAMPAIGN_WIDGET" | "PRODUCT_RECOMMENDATIONS_WIDGET"\n listIndex: number\n headline?: {\n en?: string\n de?: string\n }\n subHeadline?: {\n en?: string\n de?: string\n }\n actions?: Array<{\n _id: string\n type: "link" | "journey"\n label: {\n en?: { ... }\n de?: { ... }\n }\n url: string\n rules?: Array<{\n attribute: { ... }\n attribute_value: { ... }\n entity: { ... }\n }>\n }>\n}\n```\n\n### `TeaserWidget`\n\n```ts\ntype TeaserWidget = {\n id: string\n type: "ACTION_WIDGET" | "CONTENT_WIDGET" | "ENTITY_WIDGET" | "TEASER_WIDGET" | "DOCUMENT_WIDGET" | "PAYMENT_WIDGET" | "METER_READING_WIDGET" | "METER_CHART_WIDGET" | "CAMPAIGN_WIDGET" | "PRODUCT_RECOMMENDATIONS_WIDGET"\n listIndex: number\n headline?: {\n en?: string\n de?: string\n }\n subHeadline?: {\n en?: string\n de?: string\n }\n imageUrl?: string\n button?: {\n label?: {\n en?: { ... }\n de?: { ... }\n }\n url?: string\n }\n}\n```\n\n### `ContentWidget`\n\n```ts\ntype ContentWidget = {\n id: string\n type: "ACTION_WIDGET" | "CONTENT_WIDGET" | "ENTITY_WIDGET" | "TEASER_WIDGET" | "DOCUMENT_WIDGET" | "PAYMENT_WIDGET" | "METER_READING_WIDGET" | "METER_CHART_WIDGET" | "CAMPAIGN_WIDGET" | "PRODUCT_RECOMMENDATIONS_WIDGET"\n listIndex: number\n headline?: {\n en?: string\n de?: string\n }\n subHeadline?: {\n en?: string\n de?: string\n }\n content?: string\n}\n```\n\n### `DocumentWidget`\n\n```ts\ntype DocumentWidget = {\n id: string\n type: "ACTION_WIDGET" | "CONTENT_WIDGET" | "ENTITY_WIDGET" | "TEASER_WIDGET" | "DOCUMENT_WIDGET" | "PAYMENT_WIDGET" | "METER_READING_WIDGET" | "METER_CHART_WIDGET" | "CAMPAIGN_WIDGET" | "PRODUCT_RECOMMENDATIONS_WIDGET"\n listIndex: number\n headline?: {\n en?: string\n de?: string\n }\n subHeadline?: {\n en?: string\n de?: string\n }\n}\n```\n\n### `PaymentWidget`\n\n```ts\ntype PaymentWidget = {\n id: string\n type: "ACTION_WIDGET" | "CONTENT_WIDGET" | "ENTITY_WIDGET" | "TEASER_WIDGET" | "DOCUMENT_WIDGET" | "PAYMENT_WIDGET" | "METER_READING_WIDGET" | "METER_CHART_WIDGET" | "CAMPAIGN_WIDGET" | "PRODUCT_RECOMMENDATIONS_WIDGET"\n listIndex: number\n headline?: {\n en?: string\n de?: string\n }\n subHeadline?: {\n en?: string\n de?: string\n }\n}\n```\n\n### `CampaignWidget`\n\n```ts\ntype CampaignWidget = {\n campaign_id?: string\n}\n```\n\n### `ProductRecommendationsWidget`\n\n```ts\ntype ProductRecommendationsWidget = {\n campaign_id?: string\n}\n```\n\n### `PortalWidget`\n\n```ts\ntype PortalWidget = {\n id: string\n type: "ACTION_WIDGET" | "CONTENT_WIDGET" | "ENTITY_WIDGET" | "TEASER_WIDGET" | "DOCUMENT_WIDGET" | "PAYMENT_WIDGET" | "METER_READING_WIDGET" | "METER_CHART_WIDGET" | "CAMPAIGN_WIDGET" | "PRODUCT_RECOMMENDATIONS_WIDGET"\n listIndex: number\n headline?: {\n en?: string\n de?: string\n }\n subHeadline?: {\n en?: string\n de?: string\n }\n schema?: string\n} | {\n id: string\n type: "ACTION_WIDGET" | "CONTENT_WIDGET" | "ENTITY_WIDGET" | "TEASER_WIDGET" | "DOCUMENT_WIDGET" | "PAYMENT_WIDGET" | "METER_READING_WIDGET" | "METER_CHART_WIDGET" | "CAMPAIGN_WIDGET" | "PRODUCT_RECOMMENDATIONS_WIDGET"\n listIndex: number\n headline?: {\n en?: string\n de?: string\n }\n subHeadline?: {\n en?: string\n de?: string\n }\n content?: string\n} | {\n id: string\n type: "ACTION_WIDGET" | "CONTENT_WIDGET" | "ENTITY_WIDGET" | "TEASER_WIDGET" | "DOCUMENT_WIDGET" | "PAYMENT_WIDGET" | "METER_READING_WIDGET" | "METER_CHART_WIDGET" | "CAMPAIGN_WIDGET" | "PRODUCT_RECOMMENDATIONS_WIDGET"\n listIndex: number\n headline?: {\n en?: string\n de?: string\n }\n subHeadline?: {\n en?: string\n de?: string\n }\n actions?: Array<{\n _id: string\n type: "link" | "journey"\n label: {\n en?: { ... }\n de?: { ... }\n }\n url: string\n rules?: Array<{\n attribute: { ... }\n attribute_value: { ... }\n entity: { ... }\n }>\n }>\n} | {\n id: string\n type: "ACTION_WIDGET" | "CONTENT_WIDGET" | "ENTITY_WIDGET" | "TEASER_WIDGET" | "DOCUMENT_WIDGET" | "PAYMENT_WIDGET" | "METER_READING_WIDGET" | "METER_CHART_WIDGET" | "CAMPAIGN_WIDGET" | "PRODUCT_RECOMMENDATIONS_WIDGET"\n listIndex: number\n headline?: {\n en?: string\n de?: string\n }\n subHeadline?: {\n en?: string\n de?: string\n }\n imageUrl?: string\n button?: {\n label?: {\n en?: { ... }\n de?: { ... }\n }\n url?: string\n }\n} | {\n id: string\n type: "ACTION_WIDGET" | "CONTENT_WIDGET" | "ENTITY_WIDGET" | "TEASER_WIDGET" | "DOCUMENT_WIDGET" | "PAYMENT_WIDGET" | "METER_READING_WIDGET" | "METER_CHART_WIDGET" | "CAMPAIGN_WIDGET" | "PRODUCT_RECOMMENDATIONS_WIDGET"\n listIndex: number\n headline?: {\n en?: string\n de?: string\n }\n subHeadline?: {\n en?: string\n de?: string\n }\n} | {\n id: string\n type: "ACTION_WIDGET" | "CONTENT_WIDGET" | "ENTITY_WIDGET" | "TEASER_WIDGET" | "DOCUMENT_WIDGET" | "PAYMENT_WIDGET" | "METER_READING_WIDGET" | "METER_CHART_WIDGET" | "CAMPAIGN_WIDGET" | "PRODUCT_RECOMMENDATIONS_WIDGET"\n listIndex: number\n headline?: {\n en?: string\n de?: string\n }\n subHeadline?: {\n en?: string\n de?: string\n }\n} | {\n id: string\n type: "ACTION_WIDGET" | "CONTENT_WIDGET" | "ENTITY_WIDGET" | "TEASER_WIDGET" | "DOCUMENT_WIDGET" | "PAYMENT_WIDGET" | "METER_READING_WIDGET" | "METER_CHART_WIDGET" | "CAMPAIGN_WIDGET" | "PRODUCT_RECOMMENDATIONS_WIDGET"\n listIndex: number\n // ...\n}\n```\n\n### `ContactCountRequest`\n\n```ts\ntype ContactCountRequest = {\n orgId: string\n contactIdentifiers: Record<string, string>\n}\n```\n\n### `ContactExistsRequest`\n\n```ts\ntype ContactExistsRequest = {\n org_id: string\n registration_identifiers: Record<string, Record<string, string>>\n}\n```\n\n### `UserRequest`\n\n```ts\ntype UserRequest = {\n email?: string\n first_name?: string\n last_name?: string\n contactId?: string // uuid\n}\n```\n\n### `CreateUserRequest`\n\n```ts\ntype CreateUserRequest = {\n email?: string\n first_name?: string\n last_name?: string\n contactId?: string // uuid\n orgId?: string\n password?: string\n contactIdentifiers?: Record<string, string>\n registration_identifiers?: Record<string, Record<string, string>>\n account_id?: string\n}\n```\n\n### `OrganizationSettings`\n\n```ts\ntype OrganizationSettings = {\n automation_entity_mapping?: {\n enabled?: boolean\n }\n automation_preview?: {\n enabled?: boolean\n }\n central_inbox_preview_setting?: {\n enabled?: boolean\n }\n contracts_preview_setting?: {\n enabled?: boolean\n }\n disable_ivy?: {\n enabled?: boolean\n }\n double_opt_in?: {\n enabled?: boolean\n }\n ecommerce_catalog_preview?: {\n enabled?: boolean\n }\n ecommerce_opportunities_preview?: {\n enabled?: boolean\n }\n ecommerce_preview?: {\n enabled?: boolean\n }\n end_customer_portal?: {\n enabled?: boolean\n }\n installer_portal?: {\n enabled?: boolean\n }\n entity_schema_builder?: {\n enabled?: boolean\n }\n logic_editor_preview?: {\n enabled?: boolean\n }\n new_navigation?: {\n enabled?: boolean\n }\n partnering?: {\n enabled?: boolean\n }\n product-availability?: {\n enabled?: boolean\n }\n sso?: {\n enabled?: boolean\n }\n submission_preview?: {\n enabled?: boolean\n }\n user_roles_preview?: {\n enabled?: boolean\n }\n}\n```\n\n### `AuthConfig`\n\n```ts\ntype AuthConfig = {\n user_pool_id: string\n user_pool_client_id: string\n user_pool_identity_pool_id?: string\n portal_id: string\n}\n```\n\n### `Exists`\n\n```ts\ntype Exists = {\n exists: boolean\n active?: boolean\n}\n```\n\n### `EntitySlug`\n\nURL-friendly identifier for the entity schema\n\n```ts\ntype EntitySlug = string\n```\n\n### `EntitySlugConfig`\n\nPer-slug search configuration with scoped targets and templates\n\n```ts\ntype EntitySlugConfig = {\n slug: string\n targets?: string // uuid[]\n templates?: Record<string, string>\n}\n```\n\n### `EntityId`\n\nEntity ID\n\n```ts\ntype EntityId = string // uuid\n```\n\n### `BaseEntity`\n\n```ts\ntype BaseEntity = {\n _id: string // uuid\n _title: string\n _org: string\n _tags?: string[]\n _created_at: string // date-time\n _updated_at: string // date-time\n}\n```\n\n### `Schema`\n\n```ts\ntype Schema = {\n slug?: string\n}\n```\n\n### `Entity`\n\n```ts\ntype Entity = Record<string, unknown>\n```\n\n### `EntityTemplates`\n\n```ts\ntype EntityTemplates = {\n templates_output?: Record<string, string | Record<string, string>>\n}\n```\n\n### `EntityItem`\n\n```ts\ntype EntityItem = {\n _id: string // uuid\n _title: string\n _org: string\n _tags?: string[]\n _created_at: string // date-time\n _updated_at: string // date-time\n templates_output?: Record<string, string | Record<string, string>>\n _schema: string\n}\n```\n\n### `EntityResponse`\n\nResponse for entity get request\n\n```ts\ntype EntityResponse = {\n result?: {\n _id: string // uuid\n _title: string\n _org: string\n _tags?: string[]\n _created_at: string // date-time\n _updated_at: string // date-time\n templates_output?: Record<string, string | Record<string, string>>\n _schema: string\n }\n}\n```\n\n### `EntityResponseWithHits`\n\nResponse for entity search requests\n\n```ts\ntype EntityResponseWithHits = {\n results?: Array<{\n _id: string // uuid\n _title: string\n _org: string\n _tags?: string[]\n _created_at: string // date-time\n _updated_at: string // date-time\n templates_output?: Record<string, string | Record<string, string>>\n _schema: string\n }>\n pagination?: {\n from?: number\n size?: number\n total?: number\n has_more?: boolean\n }\n hits?: number\n includes?: {\n active_workflow?: Record<string, object>\n }\n}\n```\n\n### `EntityResponseGroupedWithHits`\n\nResponse for entity search requests, but with groupings\n\n```ts\ntype EntityResponseGroupedWithHits = {\n groups?: Array<{\n group?: string\n group_title?: string\n count?: number\n results?: Array<{\n _id: { ... }\n _title: { ... }\n _org: { ... }\n _tags?: { ... }\n _created_at: { ... }\n _updated_at: { ... }\n templates_output?: { ... }\n _schema: { ... }\n }>\n pagination?: {\n from?: { ... }\n size?: { ... }\n total?: { ... }\n has_more?: { ... }\n }\n }>\n groups_pagination?: {\n has_more?: boolean\n after_key?: Record<string, string>\n }\n hits?: number\n includes?: {\n active_workflow?: Record<string, object>\n }\n}\n```\n\n### `SearchIncludes`\n\nSide-loaded enrichment data requested via the `include` parameter.\n\n```ts\ntype SearchIncludes = {\n active_workflow?: Record<string, object>\n}\n```\n\n### `PortalUser`\n\nThe portal user entity\n\n```ts\ntype PortalUser = {\n _id: string // uuid\n _title: string\n _org: string\n _tags?: string[]\n _created_at: string // date-time\n _updated_at: string // date-time\n _schema: "portal_user"\n}\n```\n\n### `Contact`\n\nThe mapped contact of the portal user\n\n```ts\ntype Contact = {\n _id: string // uuid\n _title: string\n _org: string\n _tags?: string[]\n _created_at: string // date-time\n _updated_at: string // date-time\n _schema: "contact"\n}\n```\n\n### `WorfklowIdentifier`\n\nWorkflow identifier object\n\n```ts\ntype WorfklowIdentifier = {\n defition_id?: string\n name?: string\n}\n```\n\n### `Meter`\n\nThe meter entity\n\n```ts\ntype Meter = {\n _id: string // uuid\n _title: string\n _org: string\n _tags?: string[]\n _created_at: string // date-time\n _updated_at: string // date-time\n _schema: "meter"\n}\n```\n\n### `Order`\n\nThe order entity\n\n```ts\ntype Order = {\n _id: string // uuid\n _title: string\n _org: string\n _tags?: string[]\n _created_at: string // date-time\n _updated_at: string // date-time\n _schema: "order"\n}\n```\n\n### `Opportunity`\n\nThe opportunity entity\n\n```ts\ntype Opportunity = {\n _id: string // uuid\n _title: string\n _org: string\n _tags?: string[]\n _created_at: string // date-time\n _updated_at: string // date-time\n _schema: "opportunity"\n}\n```\n\n### `Contract`\n\nThe contract entity\n\n```ts\ntype Contract = {\n _id: string // uuid\n _title: string\n _org: string\n _tags?: string[]\n _created_at: string // date-time\n _updated_at: string // date-time\n contract_name?: string\n contract_number?: string\n status?: "draft" | "in_approval_process" | "approved" | "active" | "deactivated" | "revoked" | "terminated" | "expired"\n description?: string\n account_number?: string\n branch?: "power" | "gas" | "water" | "waste_water" | "district_heating"\n billing_address?: string\n delivery_address?: string\n additional_addresses?: string\n termination_date?: string\n termination_reason?: string\n billing_period?: "weekly" | "monthly" | "every_quarter" | "every_6_months" | "yearly"\n billing_duration_amount?: number\n renewal_duration_amount?: number\n renewal_duration_unit?: "weeks" | "months" | "years"\n notice_time_amount?: number\n notice_time_unit?: "weeks" | "months" | "years"\n start_date?: string\n billing_due_day?: number\n installment_amount?: number\n balance?: number\n balance_currency?: string\n}\n```\n\n### `File`\n\nThe file entity\n\n```ts\ntype File = {\n _id: string // uuid\n _title: string\n _org: string\n _tags?: string[]\n _created_at: string // date-time\n _updated_at: string // date-time\n _schema: "file"\n}\n```\n\n### `Product`\n\nThe product entity\n\n```ts\ntype Product = {\n _id: string // uuid\n _title: string\n _org: string\n _tags?: string[]\n _created_at: string // date-time\n _updated_at: string // date-time\n _schema: "product"\n}\n```\n\n### `ActivityId`\n\nSee https://github.com/ulid/spec\n\n```ts\ntype ActivityId = string // ulid\n```\n\n### `ActivityCallerContext`\n\n```ts\ntype ActivityCallerContext = {\n PortalAuth?: {\n token?: {\n sub?: { ... }\n email?: { ... }\n cognito:username?: { ... }\n custom:portal_user_id?: { ... }\n custom:contact_entity_id?: { ... }\n }\n }\n}\n```\n\n### `Activity`\n\n```ts\ntype Activity = {\n type: string\n title: string\n message: string\n payload?: Record<string, unknown>\n}\n```\n\n### `EntityEditRule`\n\n```ts\ntype EntityEditRule = {\n slug?: string\n attribute?: string\n rule_type?: string\n cadence_period_type?: string\n changes_allowed?: number\n cadence_period?: number\n allowed_decrement?: string\n allowed_increment?: string\n number_of_days_before_restriction?: number\n grace_period?: number\n}\n```\n\n### `ActivityItem`\n\n```ts\ntype ActivityItem = {\n _id?: string // ulid\n timestamp?: string // date-time\n type: string\n title: string\n message: string\n payload?: {\n entity?: {\n id?: { ... }\n schema?: { ... }\n }\n caller?: {\n PortalAuth?: { ... }\n }\n }\n}\n```\n\n### `FileItem`\n\n```ts\ntype FileItem = {\n filename?: string\n access_control?: "private" | "public-read"\n file_date?: string // date-time\n public_url?: string // url\n type?: "document" | "document_template" | "text" | "image" | "video" | "audio" | "spreadsheet" | "presentation" | "font" | "archive" | "application" | "unknown"\n mime_type?: string\n _relations?: Array<{\n entity_id?: string // uuid\n _schema?: string\n _title?: string\n }>\n is_new?: boolean\n}\n```\n\n### `EntityFileCount`\n\n```ts\ntype EntityFileCount = {\n entity_id: string // uuid\n _schema: string\n _title?: string\n file_count: number\n}\n```\n\n### `AdminUser`\n\n```ts\ntype AdminUser = {\n type?: string\n user_id?: string\n display_name?: string\n image_uri?: {\n original?: string\n thumbnail_32?: string\n thumbnail_64?: string\n key?: string\n }\n org_id?: string\n email?: string\n phone?: string\n}\n```\n\n### `Grant`\n\n```ts\ntype Grant = {\n action: string\n resource?: string\n effect?: "allow" | "deny"\n}\n```\n\n### `ActionLabel`\n\n```ts\ntype ActionLabel = {\n en?: string\n de?: string\n}\n```\n\n### `Rule`\n\n```ts\ntype Rule = {\n entity?: string\n attribute?: string\n attribute_value?: string\n}\n```\n\n### `JourneyActions`\n\n```ts\ntype JourneyActions = {\n journey_id?: string\n action_label?: {\n en?: string\n de?: string\n }\n slug?: string\n rules?: Array<{\n entity?: string\n attribute?: string\n attribute_value?: string\n }>\n}\n```\n\n### `ExternalLink`\n\n```ts\ntype ExternalLink = {\n id: string\n label: Record<string, string>\n type: "link" | "journey" | "seamless"\n link: string\n rules?: object[]\n attribute?: string\n entity?: string\n attribute_value?: string\n icon?: {\n name?: string\n color?: string\n size?: number\n }\n extension_link_id?: string[]\n}\n```\n\n### `WorkflowExecution`\n\n```ts\ntype WorkflowExecution = Record<string, unknown>\n```\n\n### `WorkflowStep`\n\n```ts\ntype WorkflowStep = Record<string, unknown>\n```\n\n### `BaseBillingEvent`\n\nA base billing event to be inherited by all billing events.\n\n```ts\ntype BaseBillingEvent = {\n _id: string // uuid\n _title: string\n _org: string\n _tags?: string[]\n _created_at: string // date-time\n _updated_at: string // date-time\n}\n```\n\n### `InstallmentEvent`\n\nAn entity that describes an installment billing event.\n\n```ts\ntype InstallmentEvent = {\n billing_amount?: number\n billing_amount_decimal?: string\n billing_currency?: string\n external_id?: string\n contract: {\n $relation?: Array<{\n entity_id?: { ... }\n }>\n }\n type: "installment"\n due_date: string // date\n paid_date?: string // date\n}\n```\n\n### `ReimbursementEvent`\n\nAn entity that describes a reimbursement billing event.\n\n```ts\ntype ReimbursementEvent = {\n billing_amount?: number\n billing_amount_decimal?: string\n billing_currency?: string\n external_id?: string\n contract: {\n $relation?: Array<{\n entity_id?: { ... }\n }>\n }\n type: "reimbursement"\n due_date?: string // date\n paid_date?: string // date\n}\n```\n\n### `BillingEvent`\n\nAn entity that describes a billing event such as a future installment or a reimbursement back to the customer.\n\n```ts\ntype BillingEvent = {\n billing_amount?: number\n billing_amount_decimal?: string\n billing_currency?: string\n external_id?: string\n contract: {\n $relation?: Array<{\n entity_id?: { ... }\n }>\n }\n type: "installment"\n due_date: string // date\n paid_date?: string // date\n} | {\n billing_amount?: number\n billing_amount_decimal?: string\n billing_currency?: string\n external_id?: string\n contract: {\n $relation?: Array<{\n entity_id?: { ... }\n }>\n }\n type: "reimbursement"\n due_date?: string // date\n paid_date?: string // date\n}\n```\n\n### `BillingAccount`\n\nA billing account\n\n```ts\ntype BillingAccount = {\n _id: string // uuid\n _title: string\n _org: string\n _tags?: string[]\n _created_at: string // date-time\n _updated_at: string // date-time\n}\n```\n\n### `Balance`\n\n```ts\ntype Balance = {\n balance?: number\n balance_decimal?: number\n balance_currency?: string\n}\n```\n\n### `Currency`\n\nCurrency code in ISO 4217 format\n\n```ts\ntype Currency = string\n```\n\n### `EntityGetParams`\n\n```ts\ntype EntityGetParams = {\n slug: string\n entity_id?: string // uuid\n hydrate?: boolean\n fields?: string[]\n templates?: Record<string, string | Record<string, string>>\n filters?: object[]\n filters_context?: Record<string, boolean | string>[]\n targets?: string // uuid[]\n}\n```\n\n### `EntitySearchParams`\n\n```ts\ntype EntitySearchParams = {\n slug: string | string[] | Array<{\n slug: string\n targets?: string // uuid[]\n templates?: Record<string, string>\n }>\n q?: string\n q_fields?: string[]\n group?: string\n group_title?: string\n group_size?: number\n group_sort?: "asc" | "desc"\n group_after_key?: Record<string, string | number>\n sort?: string\n from?: number\n size?: number\n hydrate?: boolean\n fields?: string[]\n templates?: Record<string, string>\n filters?: object[]\n filters_context?: Record<string, boolean | string>[]\n targets?: string // uuid[]\n include?: "active_workflow"[]\n}\n```\n\n### `IdentifierAttribute`\n\n```ts\ntype IdentifierAttribute = {\n label?: string\n name?: string\n type?: string\n}\n```\n\n### `RegistrationIdentifier`\n\n```ts\ntype RegistrationIdentifier = {\n name?: string\n schema?: string\n}\n```\n\n### `ContractIdentifier`\n\n```ts\ntype ContractIdentifier = {\n name?: string\n schema?: string\n}\n```\n\n### `AcceptanceDecision`\n\n```ts\ntype AcceptanceDecision = {\n decision: "accept" | "decline"\n}\n```\n\n### `TriggerPortalFlow`\n\n```ts\ntype TriggerPortalFlow = {\n activity_id?: string\n ecp_config?: {\n file_config?: {\n shared_with_end_customer?: { ... }\n _tags?: { ... }\n }\n }\n}\n```\n\n### `ExtensionConfig`\n\n```ts\ntype ExtensionConfig = {\n id: string\n status: "installed" | "enabled"\n options?: Record<string, string>\n}\n```\n\n### `ExtensionHookSelection`\n\n```ts\ntype ExtensionHookSelection = {\n app_id: string\n extension_id: string\n hook_id: string\n}\n```\n\n### `PublicExtensionCapabilities`\n\n```ts\ntype PublicExtensionCapabilities = {\n consumptionDataRetrieval?: Array<{\n extension?: {\n id?: { ... }\n name?: { ... }\n }\n hook?: {\n id?: { ... }\n name?: { ... }\n intervals?: { ... }\n }\n }>\n priceDataRetrieval?: Array<{\n extension?: {\n id?: { ... }\n name?: { ... }\n }\n hook?: {\n id?: { ... }\n name?: { ... }\n intervals?: { ... }\n }\n }>\n costDataRetrieval?: Array<{\n extension?: {\n id?: { ... }\n name?: { ... }\n }\n hook?: {\n id?: { ... }\n name?: { ... }\n intervals?: { ... }\n }\n }>\n contractIdentification?: {\n extension?: {\n id?: { ... }\n name?: { ... }\n }\n hook?: {\n explanation?: { ... }\n }\n }\n meterReadingPlausibilityCheck?: {\n extension?: {\n id?: { ... }\n name?: { ... }\n }\n hook?: {\n plausibility_mode?: { ... }\n }\n }\n}\n```\n\n### `DataRetrievalItem`\n\n```ts\ntype DataRetrievalItem = {\n extension?: {\n id?: string\n name?: {\n en: { ... }\n }\n }\n hook?: {\n id?: string\n name?: {\n en: { ... }\n }\n intervals?: string[]\n }\n}\n```\n\n### `PublicExtensionDetails`\n\n```ts\ntype PublicExtensionDetails = {\n id?: string\n name?: {\n en: string\n }\n}\n```\n\n### `PublicDataRetrievalHookDetails`\n\n```ts\ntype PublicDataRetrievalHookDetails = {\n id?: string\n name?: {\n en: string\n }\n intervals?: string[]\n}\n```\n\n### `PublicContractIdentificationDetails`\n\n```ts\ntype PublicContractIdentificationDetails = {\n explanation?: {\n en: string\n }\n}\n```\n\n### `PublicMeterReadingPlausibilityCheckDetails`\n\n```ts\ntype PublicMeterReadingPlausibilityCheckDetails = {\n plausibility_mode?: "check" | "range"\n}\n```\n\n### `Extension`\n\n```ts\ntype Extension = {\n id: string\n app_id?: string\n app_name?: string\n name: {\n en: string\n }\n description?: {\n en: string\n }\n version?: string\n options?: Array<{\n id: string\n name: {\n en: { ... }\n }\n type: "text" | "secret"\n description?: {\n en: { ... }\n }\n default?: string\n required?: boolean\n }>\n links?: Array<{\n id: string\n name: {\n en: { ... }\n }\n description?: {\n en: { ... }\n }\n type: "seamless"\n condition?: string\n auth?: {\n method?: { ... }\n url: { ... }\n params?: { ... }\n headers?: { ... }\n body?: { ... }\n cache?: { ... }\n }\n redirect: {\n url?: { ... }\n params?: { ... }\n }\n }>\n hooks?: Array<{\n id?: string\n }>\n}\n```\n\n### `ExtensionSeamlessLink`\n\n```ts\ntype ExtensionSeamlessLink = {\n id: string\n name: {\n en: string\n }\n description?: {\n en: string\n }\n type: "seamless"\n condition?: string\n auth?: {\n method?: string\n url: string\n params?: Record<string, string>\n headers?: Record<string, string>\n body?: Record<string, string>\n cache?: {\n key: { ... }\n ttl: { ... }\n }\n }\n redirect: {\n url?: string\n params?: Record<string, string>\n }\n}\n```\n\n### `ExtensionHook`\n\n```ts\ntype ExtensionHook = {\n id?: string\n}\n```\n\n### `ExtensionHookRegistrationIdentifiersCheck`\n\nHook that replaces the built-in registration identifiers check. This hook makes a POST call whenever a user is trying to register to find the corresponding contact. The expected response to the call is:\n - 200 with contact id if exactly one contact is found\n - 404 if no contact is found or more th\n\n```ts\ntype ExtensionHookRegistrationIdentifiersCheck = {\n type: "registrationIdentifiersCheck"\n auth?: {\n method?: string\n url: string\n params?: Record<string, string>\n headers?: Record<string, string>\n body?: Record<string, string>\n cache?: {\n key: { ... }\n ttl: { ... }\n }\n }\n call: {\n method?: string\n url: string\n params?: Record<string, string>\n headers: Record<string, string>\n body?: object\n result?: string\n }\n use_static_ips?: boolean\n}\n```\n\n### `ExtensionHookContractIdentification`\n\nHook that replaces the built-in Contract identification for self-assignment. This hook involves an HTTP request whenever a user is trying to self-assign Contract(s).\nThe expected response http status code to the call is:\n - 200 if found\n - 404 if not found\n\nThe following assignment modes are suppo\n\n```ts\ntype ExtensionHookContractIdentification = {\n type: "contractIdentification"\n auth?: {\n method?: string\n url: string\n params?: Record<string, string>\n headers?: Record<string, string>\n body?: Record<string, string>\n cache?: {\n key: { ... }\n ttl: { ... }\n }\n }\n call: {\n method?: string\n url: string\n params?: Record<string, string>\n headers: Record<string, string>\n body?: object\n result?: string\n }\n assignment_mode?: "contracts" | "contact_to_contracts" | "contact_to_portal_user"\n contact_relation_attribute?: string\n explanation?: {\n en: string\n }\n use_static_ips?: boolean\n}\n```\n\n### `ExtensionHookMeterReadingPlausibilityCheck`\n\nHook that checks the plausibility of meter readings before they are saved. This hook makes a POST call whenever a user is trying to save a meter reading. The expected response to the call is:\n - 200:\n If meter reading is plausible, the response should contain:\n - valid: true\n If meter re\n\n```ts\ntype ExtensionHookMeterReadingPlausibilityCheck = {\n type: "meterReadingPlausibilityCheck"\n plausibility_mode?: "check" | "range"\n auth?: {\n method?: string\n url: string\n params?: Record<string, string>\n headers?: Record<string, string>\n body?: Record<string, string>\n cache?: {\n key: { ... }\n ttl: { ... }\n }\n }\n call: {\n url: string\n body: Record<string, string>\n headers: Record<string, string>\n }\n resolved: {\n dataPath?: string\n counter_identifiers?: string | Record<string, string>\n valid?: string\n upper_limit?: string\n lower_limit?: string\n }\n use_static_ips?: boolean\n}\n```\n\n### `ExtensionHookPriceDataRetrieval`\n\nHook that will allow using the specified source as data for price visualizations. This hook is triggered to fetch the data. Format of the request and response has to follow the following specification: TBD. The expected response to the call is:\n - 200 with the time series data\n\n\n```ts\ntype ExtensionHookPriceDataRetrieval = {\n type: "priceDataRetrieval"\n auth?: {\n method?: string\n url: string\n params?: Record<string, string>\n headers?: Record<string, string>\n body?: Record<string, string>\n cache?: {\n key: { ... }\n ttl: { ... }\n }\n }\n call: {\n method?: string\n url: string\n params?: Record<string, string>\n headers?: Record<string, string>\n body?: Record<string, string>\n }\n resolved?: {\n dataPath?: string\n }\n use_static_ips?: boolean\n}\n```\n\n### `ExtensionHookConsumptionDataRetrieval`\n\nHook that will allow using the specified source as data for consumption visualizations. This hook is triggered to fetch the data. Format of the request and response has to follow the following specification: TBD. The expected response to the call is:\n - 200 with the time series data\n\n\n```ts\ntype ExtensionHookConsumptionDataRetrieval = {\n type: "consumptionDataRetrieval"\n auth?: {\n method?: string\n url: string\n params?: Record<string, string>\n headers?: Record<string, string>\n body?: Record<string, string>\n cache?: {\n key: { ... }\n ttl: { ... }\n }\n }\n call: {\n method?: string\n url: string\n params?: Record<string, string>\n headers?: Record<string, string>\n body?: Record<string, string>\n }\n resolved?: {\n dataPath?: string\n }\n use_static_ips?: boolean\n}\n```\n\n### `ExtensionHookCostDataRetrieval`\n\nHook that will allow using the specified source as data for consumption visualizations. This hook is triggered to fetch the data. Format of the request and response has to follow the following specification: TBD. The expected response to the call is:\n - 200 with the time series data\n\n\n```ts\ntype ExtensionHookCostDataRetrieval = {\n type: "costDataRetrieval"\n auth?: {\n method?: string\n url: string\n params?: Record<string, string>\n headers?: Record<string, string>\n body?: Record<string, string>\n cache?: {\n key: { ... }\n ttl: { ... }\n }\n }\n call: {\n method?: string\n url: string\n params?: Record<string, string>\n headers?: Record<string, string>\n body?: Record<string, string>\n }\n resolved?: {\n dataPath?: string\n }\n use_static_ips?: boolean\n}\n```\n\n### `ExtensionAuthBlock`\n\n```ts\ntype ExtensionAuthBlock = {\n method?: string\n url: string\n params?: Record<string, string>\n headers?: Record<string, string>\n body?: Record<string, string>\n cache?: {\n key: string\n ttl: string\n }\n}\n```\n\n### `Direction`\n\n```ts\ntype Direction = "feed-in" | "feed-out"\n```\n\n### `TariffType`\n\n```ts\ntype TariffType = "ht" | "nt"\n```\n\n### `Source`\n\n```ts\ntype Source = "ECP" | "ERP" | "360" | "journey-submission"\n```\n\n### `Reason`\n\nThe reason for recording the reading\nIf no reason is specified or left empty, the Epilot UI will show \'Regular\' as the default display text\n\n\n```ts\ntype Reason = "" | "regular" | "irregular" | "last" | "first" | "meter_change" | "contract_change" | "meter_adjustment"\n```\n\n### `ReadBy`\n\nThe person who recorded the reading\n\n```ts\ntype ReadBy = string\n```\n\n### `ReadingStatus`\n\n```ts\ntype ReadingStatus = "valid" | "in-validation" | "implausible" | null | ""\n```\n\n### `MeterReading`\n\n```ts\ntype MeterReading = {\n value: number\n read_by?: string\n reason?: "" | "regular" | "irregular" | "last" | "first" | "meter_change" | "contract_change" | "meter_adjustment"\n meter_id: string // uuid\n counter_id?: string // uuid\n direction?: "feed-in" | "feed-out"\n timestamp?: string\n source: "ECP" | "ERP" | "360" | "journey-submission"\n status?: "valid" | "in-validation" | "implausible" | null | ""\n external_id?: string\n remark?: string\n metadata?: Record<string, string>\n}\n```\n\n### `MeterReadingPhoto`\n\n```ts\ntype MeterReadingPhoto = {\n filename: string\n mime_type: string\n contents: string\n meter_id: string // uuid\n}\n```\n\n### `MeterReadingPhotoData`\n\n```ts\ntype MeterReadingPhotoData = {\n filename: string\n s3ref: {\n bucket: string\n key: string\n }\n reading?: string\n sector?: string\n meter_numbers?: string[]\n}\n```\n\n### `SSOLoginToken`\n\n```ts\ntype SSOLoginToken = string\n```\n\n### `ProviderSlug`\n\nURL-friendly slug to use as organization-unique identifier for Provider\n\n```ts\ntype ProviderSlug = string\n```\n\n### `ProviderDisplayName`\n\nHuman-readable display name for identity provider shown in login\n\n```ts\ntype ProviderDisplayName = string\n```\n\n### `ProviderConfig`\n\n```ts\ntype ProviderConfig = {\n slug?: string\n display_name: string\n provider_type: "OIDC"\n attribute_mappings?: {\n contact: {\n email: { ... }\n first_name?: { ... }\n last_name?: { ... }\n phone?: { ... }\n preferred_language?: { ... }\n concession?: { ... }\n installer_number?: { ... }\n }\n account?: {\n name?: { ... }\n street?: { ... }\n house_number?: { ... }\n postal_code?: { ... }\n city?: { ... }\n }\n portal_user?: {\n access_status?: { ... }\n expires_at?: { ... }\n }\n concession_attributes?: {\n water?: { ... }\n energy?: { ... }\n gas?: { ... }\n }\n }\n entity_matching?: {\n portal_user?: Record<string, string>\n contact?: Record<string, string>\n auto_create_cognito_user?: boolean\n }\n oidc_config?: {\n type?: "authorization_code" | "implicit"\n oidc_issuer: string\n redirect_uri?: string\n client_id: string\n client_secret?: string\n has_client_secret?: boolean\n scope: string\n metadata?: {\n authorization_endpoint?: { ... }\n token_endpoint?: { ... }\n userinfo_endpoint?: { ... }\n logout_uri?: { ... }\n logout_redirect_uri?: { ... }\n skip_login_as_logout?: { ... }\n mobile_redirect_uri?: { ... }\n test_auth_username?: { ... }\n test_auth_password?: { ... }\n }\n prompt?: "login" | "select_account" | "consent"\n }\n mobile_oidc_config?: {\n client_id?: string\n client_secret?: string\n }\n}\n```\n\n### `ProviderPublicConfig`\n\n```ts\ntype ProviderPublicConfig = {\n slug: string\n display_name: string\n oidc_config?: {\n type?: "authorization_code" | "implicit"\n oidc_issuer: string\n redirect_uri?: string\n client_id: string\n client_secret?: string\n has_client_secret?: boolean\n scope: string\n metadata?: {\n authorization_endpoint?: { ... }\n token_endpoint?: { ... }\n userinfo_endpoint?: { ... }\n logout_uri?: { ... }\n logout_redirect_uri?: { ... }\n skip_login_as_logout?: { ... }\n mobile_redirect_uri?: { ... }\n test_auth_username?: { ... }\n test_auth_password?: { ... }\n }\n prompt?: "login" | "select_account" | "consent"\n }\n mobile_oidc_config?: {\n client_id?: string\n client_secret?: string\n }\n}\n```\n\n### `AttributeMappingConfig`\n\nDictionary of epilot user attributes to claims\n\n```ts\ntype AttributeMappingConfig = {\n contact: {\n email: string\n first_name?: string\n last_name?: string\n phone?: string\n preferred_language?: string\n concession?: string\n installer_number?: string\n }\n account?: {\n name?: string\n street?: string\n house_number?: string\n postal_code?: string\n city?: string\n }\n portal_user?: {\n access_status?: string\n expires_at?: string\n }\n concession_attributes?: {\n water?: string\n energy?: string\n gas?: string\n }\n}\n```\n\n### `EntityMatchingConfig`\n\nConfiguration for matching existing entities during SSO login using token claims\n\n```ts\ntype EntityMatchingConfig = {\n portal_user?: Record<string, string>\n contact?: Record<string, string>\n auto_create_cognito_user?: boolean\n}\n```\n\n### `OIDCProviderConfig`\n\n```ts\ntype OIDCProviderConfig = {\n type?: "authorization_code" | "implicit"\n oidc_issuer: string\n redirect_uri?: string\n client_id: string\n client_secret?: string\n has_client_secret?: boolean\n scope: string\n metadata?: {\n authorization_endpoint?: string\n token_endpoint?: string\n userinfo_endpoint?: string\n logout_uri?: string\n logout_redirect_uri?: string\n skip_login_as_logout?: boolean\n mobile_redirect_uri?: string\n test_auth_username?: string\n test_auth_password?: string\n }\n prompt?: "login" | "select_account" | "consent"\n}\n```\n\n### `MoblieOIDCConfig`\n\n```ts\ntype MoblieOIDCConfig = {\n client_id?: string\n client_secret?: string\n}\n```\n\n### `OIDCProviderMetadata`\n\n```ts\ntype OIDCProviderMetadata = {\n authorization_endpoint?: string\n token_endpoint?: string\n userinfo_endpoint?: string\n logout_uri?: string\n logout_redirect_uri?: string\n skip_login_as_logout?: boolean\n mobile_redirect_uri?: string\n test_auth_username?: string\n test_auth_password?: string\n}\n```\n\n### `SAMLProviderConfig`\n\n```ts\ntype SAMLProviderConfig = object\n```\n\n### `SSOCallbackRequest`\n\n```ts\ntype SSOCallbackRequest = {\n provider_slug?: string\n token_endpoint: string\n grant_type: string\n code: string\n redirect_uri: string\n client_id: string\n code_verifier: string\n}\n```\n\n### `SSOCallbackResponse`\n\n```ts\ntype SSOCallbackResponse = {\n access_token: string\n token_type: string\n expires_in: number\n refresh_token: string\n id_token?: string\n scope?: string\n}\n```\n\n### `BlockProps`\n\n```ts\ntype BlockProps = {\n visibility?: Record<string, unknown>\n content?: Record<string, unknown>\n design?: Record<string, unknown>\n}\n```\n\n### `BlockType`\n\nThe type of the block. eg; tabs, tab, group, attribute\n\n```ts\ntype BlockType = string\n```\n\n### `BlockRequest`\n\n```ts\ntype BlockRequest = {\n props?: {\n visibility?: Record<string, unknown>\n content?: Record<string, unknown>\n design?: Record<string, unknown>\n }\n parentId?: string\n type: string\n order: number\n}\n```\n\n### `BlockId`\n\nThe id of the block\n\n```ts\ntype BlockId = string // uuid\n```\n\n### `Block`\n\n```ts\ntype Block = {\n props?: {\n visibility?: Record<string, unknown>\n content?: Record<string, unknown>\n design?: Record<string, unknown>\n }\n parentId?: string\n type: string\n order: number\n id?: string // uuid\n}\n```\n\n### `PageRequest`\n\n```ts\ntype PageRequest = {\n slug: string\n path?: string\n schema?: string[]\n visibility?: Record<string, unknown>\n content?: Record<string, unknown>\n design?: Record<string, unknown>\n blocks?: Record<string, {\n props?: {\n visibility?: { ... }\n content?: { ... }\n design?: { ... }\n }\n parentId?: string\n type: string\n order: number\n id?: string // uuid\n }>\n order: number\n is_system?: boolean\n is_detail?: boolean\n detail_schema?: string\n show_in_navigation?: boolean\n is_public?: boolean\n parentId?: string\n is_entry_route?: boolean\n is_deleted?: boolean\n}\n```\n\n### `Page`\n\n```ts\ntype Page = {\n slug: string\n path?: string\n schema?: string[]\n visibility?: Record<string, unknown>\n content?: Record<string, unknown>\n design?: Record<string, unknown>\n blocks?: Record<string, {\n props?: {\n visibility?: { ... }\n content?: { ... }\n design?: { ... }\n }\n parentId?: string\n type: string\n order: number\n id?: string // uuid\n }>\n order: number\n is_system?: boolean\n is_detail?: boolean\n detail_schema?: string\n show_in_navigation?: boolean\n is_public?: boolean\n parentId?: string\n is_entry_route?: boolean\n is_deleted?: boolean\n id?: string // uuid\n last_modified_at?: string // date-time\n}\n```\n\n### `CommonConfigAttributesV3`\n\n```ts\ntype CommonConfigAttributesV3 = {\n enabled?: boolean\n name?: string\n domain?: string\n is_epilot_domain?: boolean\n design_id?: string // uuid\n allowed_portal_entities?: string[]\n self_registration_setting?: "ALLOW_WITH_CONTACT_CREATION" | "ALLOW_WITHOUT_CONTACT_CREATION" | "DENY" | "ALWAYS_CREATE_CONTACT" | "DISALLOW_COMPLETELY" | "BLOCK_IF_PORTAL_USER_EXISTS"\n user_account_self_management?: boolean\n feature_settings?: {\n start_page?: boolean\n billing?: boolean\n change_due_date?: boolean\n new_design?: boolean\n }\n accessToken?: string\n advanced_mfa?: {\n enabled?: boolean\n }\n auth_settings?: {\n passwordless_login?: {\n enabled?: { ... }\n }\n entry_point?: "PASSWORD" | "SSO"\n preferred_sso_providers?: string[]\n auto_redirect_to_sso?: boolean\n }\n cognito_details?: {\n cognito_user_pool_client_id?: string\n cognito_user_pool_arn?: string\n cognito_user_pool_id?: string\n timeouts?: {\n refresh_token?: { ... }\n access_token?: { ... }\n id_token?: { ... }\n }\n advanced_authentication?: {\n user_activity_logging?: { ... }\n adaptive_authentication?: { ... }\n compromised_credentials_detection?: { ... }\n }\n password_policy?: {\n minimum_length?: { ... }\n maximum_length?: { ... }\n require_lowercase?: { ... }\n require_uppercase?: { ... }\n require_numbers?: { ... }\n require_symbols?: { ... }\n }\n }\n config?: string\n contact_identifiers?: string[]\n approval_state_attributes?: Record<string, string[]>\n email_templates?: {\n confirmAccount?: string // uuid\n advancedAuth?: string // uuid\n advancedMFA?: string // uuid\n journeySignUp?: string // uuid\n journeySignInOneTimePassword?: string // uuid\n journeyLoginOTP?: string // uuid\n forgotPassword?: string // uuid\n invitation?: string // uuid\n partnerInvitation?: string // uuid\n onNewQuote?: string // uuid\n onMapAPendingUser?: string // uuid\n onDocUpload?: string // uuid\n onWorkflowStepAssigned?: string // uuid\n confirmEmailUpdate?: string // uuid\n verifyCodeToSetPassword?: string // uuid\n }\n images?: {\n orderLeftTeaser?: string\n orderRightTeaser?: string\n welcomeBanner?: string\n }\n entity_identifiers?: {\n type?: {\n isEnabled?: { ... }\n attributes?: { ... }\n }\n }\n contract_identifiers?: Array<{\n name?: string\n schema?: string\n }>\n contract_selector_config?: {\n show_inactive?: boolean\n title_path?: string\n }\n registration_identifiers?: Array<{\n name?: string\n schema?: string\n }>\n triggered_journeys?: Array<{\n trigger_name?: "FIRST_LOGIN" | "ACCEPT_ORDER" | "DECLINE_ORDER"\n journey_id?: string // uuid\n }>\n entity_edit_rules?: Array<{\n slug?: string\n attribute?: string\n // ...\n}\n```\n\n### `PortalId`\n\nID of the portal\n\n```ts\ntype PortalId = string\n```\n\n### `UpsertPortalConfigV3`\n\n```ts\ntype UpsertPortalConfigV3 = {\n entity_actions?: Array<{\n journey_id?: string // uuid\n slug?: string\n action_Label?: {\n en?: { ... }\n de?: { ... }\n }\n }>\n extensions?: Array<{\n id: string\n status: "installed" | "enabled"\n options?: Record<string, string>\n }>\n extension_hooks?: Record<string, {\n app_id: string\n extension_id: string\n hook_id: string\n }>\n default_user_to_notify?: {\n onPendingUser?: Array<{\n type?: { ... }\n user_id?: { ... }\n display_name?: { ... }\n image_uri?: { ... }\n org_id?: { ... }\n email?: { ... }\n phone?: { ... }\n }>\n }\n enabled?: boolean\n name?: string\n domain?: string\n is_epilot_domain?: boolean\n design_id?: string // uuid\n allowed_portal_entities?: string[]\n self_registration_setting?: "ALLOW_WITH_CONTACT_CREATION" | "ALLOW_WITHOUT_CONTACT_CREATION" | "DENY" | "ALWAYS_CREATE_CONTACT" | "DISALLOW_COMPLETELY" | "BLOCK_IF_PORTAL_USER_EXISTS"\n user_account_self_management?: boolean\n feature_settings?: {\n start_page?: boolean\n billing?: boolean\n change_due_date?: boolean\n new_design?: boolean\n }\n accessToken?: string\n advanced_mfa?: {\n enabled?: boolean\n }\n auth_settings?: {\n passwordless_login?: {\n enabled?: { ... }\n }\n entry_point?: "PASSWORD" | "SSO"\n preferred_sso_providers?: string[]\n auto_redirect_to_sso?: boolean\n }\n cognito_details?: {\n cognito_user_pool_client_id?: string\n cognito_user_pool_arn?: string\n cognito_user_pool_id?: string\n timeouts?: {\n refresh_token?: { ... }\n access_token?: { ... }\n id_token?: { ... }\n }\n advanced_authentication?: {\n user_activity_logging?: { ... }\n adaptive_authentication?: { ... }\n compromised_credentials_detection?: { ... }\n }\n password_policy?: {\n minimum_length?: { ... }\n maximum_length?: { ... }\n require_lowercase?: { ... }\n require_uppercase?: { ... }\n require_numbers?: { ... }\n require_symbols?: { ... }\n }\n }\n config?: string\n contact_identifiers?: string[]\n approval_state_attributes?: Record<string, string[]>\n email_templates?: {\n confirmAccount?: string // uuid\n advancedAuth?: string // uuid\n advancedMFA?: string // uuid\n journeySignUp?: string // uuid\n journeySignInOneTimePassword?: string // uuid\n journeyLoginOTP?: string // uuid\n forgotPassword?: string // uuid\n invitation?: string // uuid\n partnerInvitation?: string // uuid\n onNewQuote?: string // uuid\n onMapAPendingUser?: string // uuid\n onDocUpload?: string // uuid\n onWorkflowStepAssigned?: string // uuid\n confirmEmailUpdate?: string // uuid\n verifyCodeToSetPassword?: string // uuid\n }\n images?: {\n // ...\n}\n```\n\n### `PortalConfigV3`\n\n```ts\ntype PortalConfigV3 = {\n entity_actions?: Array<{\n journey_id?: string // uuid\n slug?: string\n action_Label?: {\n en?: { ... }\n de?: { ... }\n }\n }>\n extensions?: Array<{\n id: string\n status: "installed" | "enabled"\n options?: Record<string, string>\n }>\n extension_hooks?: Record<string, {\n app_id: string\n extension_id: string\n hook_id: string\n }>\n default_user_to_notify?: {\n onPendingUser?: Array<{\n type?: { ... }\n user_id?: { ... }\n display_name?: { ... }\n image_uri?: { ... }\n org_id?: { ... }\n email?: { ... }\n phone?: { ... }\n }>\n }\n enabled?: boolean\n name?: string\n domain?: string\n is_epilot_domain?: boolean\n design_id?: string // uuid\n allowed_portal_entities?: string[]\n self_registration_setting?: "ALLOW_WITH_CONTACT_CREATION" | "ALLOW_WITHOUT_CONTACT_CREATION" | "DENY" | "ALWAYS_CREATE_CONTACT" | "DISALLOW_COMPLETELY" | "BLOCK_IF_PORTAL_USER_EXISTS"\n user_account_self_management?: boolean\n feature_settings?: {\n start_page?: boolean\n billing?: boolean\n change_due_date?: boolean\n new_design?: boolean\n }\n accessToken?: string\n advanced_mfa?: {\n enabled?: boolean\n }\n auth_settings?: {\n passwordless_login?: {\n enabled?: { ... }\n }\n entry_point?: "PASSWORD" | "SSO"\n preferred_sso_providers?: string[]\n auto_redirect_to_sso?: boolean\n }\n cognito_details?: {\n cognito_user_pool_client_id?: string\n cognito_user_pool_arn?: string\n cognito_user_pool_id?: string\n timeouts?: {\n refresh_token?: { ... }\n access_token?: { ... }\n id_token?: { ... }\n }\n advanced_authentication?: {\n user_activity_logging?: { ... }\n adaptive_authentication?: { ... }\n compromised_credentials_detection?: { ... }\n }\n password_policy?: {\n minimum_length?: { ... }\n maximum_length?: { ... }\n require_lowercase?: { ... }\n require_uppercase?: { ... }\n require_numbers?: { ... }\n require_symbols?: { ... }\n }\n }\n config?: string\n contact_identifiers?: string[]\n approval_state_attributes?: Record<string, string[]>\n email_templates?: {\n confirmAccount?: string // uuid\n advancedAuth?: string // uuid\n advancedMFA?: string // uuid\n journeySignUp?: string // uuid\n journeySignInOneTimePassword?: string // uuid\n journeyLoginOTP?: string // uuid\n forgotPassword?: string // uuid\n invitation?: string // uuid\n partnerInvitation?: string // uuid\n onNewQuote?: string // uuid\n onMapAPendingUser?: string // uuid\n onDocUpload?: string // uuid\n onWorkflowStepAssigned?: string // uuid\n confirmEmailUpdate?: string // uuid\n verifyCodeToSetPassword?: string // uuid\n }\n images?: {\n // ...\n}\n```\n\n### `JuiceSettings`\n\n```ts\ntype JuiceSettings = {\n is_dummy?: boolean\n is_canary?: boolean\n}\n```\n\n### `SwappableConfig`\n\n```ts\ntype SwappableConfig = "all" | "domain" | "users" | "email_templates"\n```\n\n### `PortalUserRegistrationStatus`\n\n```ts\ntype PortalUserRegistrationStatus = "Registration Pending" | "Confirmation Email Sent" | "Registered" | "Email Update In Progress"\n```\n\n### `BusinessPartnerItem`\n\n```ts\ntype BusinessPartnerItem = {\n _id?: string // uuid\n has_portal_user?: boolean\n registration_status?: "Registration Pending" | "Confirmation Email Sent" | "Registered" | "Email Update In Progress"\n email?: string\n _title?: string\n first_name?: string\n last_name?: string\n access_status?: boolean\n}\n```\n';
|
|
5
|
-
export {
|
|
6
|
-
customer_portal_default as default
|
|
7
|
-
};
|