Skip to main content

Portal API

Backend for epilot portals - End Customer Portal & Installer Portal

Quick Startโ€‹

# List available operations
epilot customer-portal

# Call an operation
epilot customer-portal upsertPortal -p origin=example

Common Flagsโ€‹

FlagDescription
-p key=valueSet a named parameter
-d '{...}'Request body JSON
-H 'Key: Value'Custom header
-t, --token <token>Bearer token for authentication
--profile <name>Use a named profile
-s, --server <url>Override server base URL
-i, --includeInclude response headers in output
--jsonOutput raw JSON (no formatting)
-v, --verboseVerbose output (show request details)
--jsonata <expr>JSONata expression to transform response
--definition <file>Override OpenAPI spec file/URL
--guidedPrompt for all parameters interactively
--no-interactiveDisable interactive prompts

Operationsโ€‹

ECP Admin

Public

ECP

Activity

Balance

  • getCustomerBalance โ€” Get total balance across all contracts and orders of a customer entity.

Billing Accounts

Login

  • ssoLogin โ€” Initiate login using external SSO identity.
  • ssoLoginV3 โ€” Initiate login using external SSO identity.

upsertPortalโ€‹

Upserts the settings for a portal of an organization.

POST /v2/portal/portal

Parameters

NameInTypeRequiredDescription
originquerystringYesOrigin of the portal
portal_idquerystringNoPortal ID

Request Body (required)

Sample Call

epilot customer-portal upsertPortal \
-p origin=example

With request body:

epilot customer-portal upsertPortal \
-p origin=example \
-d '{
"entity_actions": [
{
"journey_id": "5da0a718-c822-403d-9f5d-20d4584e0528",
"slug": "contact",
"action_Label": {}
}
],
"extensions": [
{
"id": "string",
"status": "installed",
"options": {}
}
],
"extension_hooks": {},
"default_user_to_notify": {
"onPendingUser": [
{}
]
},
"enabled": true,
"name": "Installer Portal",
"domain": "abc.com",
"is_epilot_domain": true,
"epilot_domain": "example-portal-12345.ecp.epilot.cloud",
"domain_settings": {
"is_custom_domain_enabled": true,
"is_epilot_domain_enabled": true,
"is_redirection_enabled": true
},
"design_id": "5da0a718-c822-403d-9f5d-20d4584e0528",
"self_registration_setting": "ALLOW_WITH_CONTACT_CREATION",
"user_account_self_management": false,
"feature_settings": {
"start_page": true,
"billing": true,
"change_due_date": true,
"new_design": true
},
"accessToken": "string",
"advanced_mfa": {
"enabled": true
},
"auth_settings": {
"passwordless_login": {
"enabled": true
},
"entry_point": "PASSWORD",
"preferred_sso_providers": ["office-365-login"],
"auto_redirect_to_sso": true
},
"cognito_details": {
"cognito_user_pool_client_id": "6bsd0jkgoie74k2i8mrhc1vest",
"cognito_user_pool_arn": "arn:aws:cognito-idp:us-east-1:123412341234:userpool/us-east-1_123412341",
"cognito_user_pool_id": "eu-central-1_CUEQRNbUb",
"password_policy": {
"minimum_length": 8,
"maximum_length": 256,
"require_lowercase": true,
"require_uppercase": true,
"require_numbers": true,
"require_symbols": true
}
},
"config": "string",
"contact_identifiers": ["email", "last_name"],
"approval_state_attributes": {
"contact": ["name", "address"],
"contract": ["installment_amount"]
},
"email_templates": {
"confirmAccount": "5da0a718-c822-403d-9f5d-20d4584e0528",
"advancedAuth": "5da0a718-c822-403d-9f5d-20d4584e0528",
"advancedMFA": "5da0a718-c822-403d-9f5d-20d4584e0528",
"journeySignUp": "5da0a718-c822-403d-9f5d-20d4584e0528",
"journeySignInOneTimePassword": "5da0a718-c822-403d-9f5d-20d4584e0528",
"journeyLoginOTP": "5da0a718-c822-403d-9f5d-20d4584e0528",
"forgotPassword": "5da0a718-c822-403d-9f5d-20d4584e0528",
"invitation": "5da0a718-c822-403d-9f5d-20d4584e0528",
"partnerInvitation": "5da0a718-c822-403d-9f5d-20d4584e0528",
"onNewQuote": "5da0a718-c822-403d-9f5d-20d4584e0528",
"onMapAPendingUser": "5da0a718-c822-403d-9f5d-20d4584e0528",
"onDocUpload": "5da0a718-c822-403d-9f5d-20d4584e0528",
"onWorkflowStepAssigned": "5da0a718-c822-403d-9f5d-20d4584e0528",
"confirmEmailUpdate": "5da0a718-c822-403d-9f5d-20d4584e0528",
"verifyCodeToSetPassword": "5da0a718-c822-403d-9f5d-20d4584e0528"
},
"images": {
"orderLeftTeaser": "https://epilot-bucket.s3.eu-central-1.amazonaws.com/12344/6538fddb-f0e9-4f0f-af51-6e57891ff20a/order-left-teaser.jpeg",
"orderRightTeaser": "https://epilot-bucket.s3.eu-central-1.amazonaws.com/12344/6538fddb-f0e9-4f0f-af51-6e57891ff20a/order-right-teaser.jpeg",
"welcomeBanner": "https://epilot-bucket.s3.eu-central-1.amazonaws.com/12344/6538fddb-f0e9-4f0f-af51-6e57891ff20a/welcome-banner.jpeg"
},
"entity_identifiers": {
"type": {
"isEnabled": true,
"attributes": ["contract_number"]
}
},
"contract_identifiers": [
{
"name": "email",
"schema": "contact"
},
{
"name": "last_name",
"schema": "contact"
}
],
"contract_selector_config": {
"show_inactive": true,
"title_path": "string"
},
"registration_identifiers": [
{
"name": "last_name",
"schema": "contact"
},
{
"name": "contract_number",
"schema": "contract"
}
],
"triggered_journeys": [
{
"trigger_name": "FIRST_LOGIN",
"journey_id": "5da0a718-c822-403d-9f5d-20d4584e0528"
}
],
"entity_edit_rules": [
{
"slug": "contact",
"attribute": "first_name",
"rule_type": "cadence",
"cadence_period_type": "days",
"cadence_period": 1,
"changes_allowed": 1,
"grace_period": 1,
"allowed_increment": "10%",
"allowed_decrement": "10%",
"number_of_days_before_restriction": 10
}
],
"allowed_file_extensions": {
"document": ["pdf"],
"image": ["jpg"],
"spreadsheet": ["xls"],
"presentation": ["ppt"],
"audioVideo": ["mp4"],
"email": ["eml"],
"archive": ["zip"],
"cad": ["cad"],
"calendar": ["ics"],
"other": ["txt"]
},
"prevent_search_engine_indexing": true,
"meter_reading_grace_period": 0,
"inactive_contract_cutoff_years": 0,
"is_dummy": true,
"is_v3_item": true,
"portal_id": "453ad7bf-86d5-46c8-8252-bcc868df5e3c",
"portal_sk_v3": "PORTAL_CONFIG#453ad7bf-86d5-46c8-8252-bcc868df5e3c",
"origin": "string",
"pages": {}
}'

Using stdin pipe:

cat body.json | epilot customer-portal upsertPortal -p origin=example

With JSONata filter:

epilot customer-portal upsertPortal -p origin=example --jsonata '$'
Sample Response
{
"enabled": true,
"name": "Installer Portal",
"domain": "abc.com",
"is_epilot_domain": true,
"epilot_domain": "example-portal-12345.ecp.epilot.cloud",
"domain_settings": {
"is_custom_domain_enabled": true,
"is_epilot_domain_enabled": true,
"is_redirection_enabled": true
},
"design_id": "5da0a718-c822-403d-9f5d-20d4584e0528",
"self_registration_setting": "ALLOW_WITH_CONTACT_CREATION",
"user_account_self_management": false,
"feature_settings": {
"start_page": true,
"billing": true,
"change_due_date": true,
"new_design": true
},
"accessToken": "string",
"advanced_mfa": {
"enabled": true
},
"auth_settings": {
"passwordless_login": {
"enabled": true
},
"entry_point": "PASSWORD",
"preferred_sso_providers": ["office-365-login"],
"auto_redirect_to_sso": true
},
"cognito_details": {
"cognito_user_pool_client_id": "6bsd0jkgoie74k2i8mrhc1vest",
"cognito_user_pool_arn": "arn:aws:cognito-idp:us-east-1:123412341234:userpool/us-east-1_123412341",
"cognito_user_pool_id": "eu-central-1_CUEQRNbUb",
"password_policy": {
"minimum_length": 8,
"maximum_length": 256,
"require_lowercase": true,
"require_uppercase": true,
"require_numbers": true,
"require_symbols": true
}
},
"config": "string",
"contact_identifiers": ["email", "last_name"],
"approval_state_attributes": {
"contact": ["name", "address"],
"contract": ["installment_amount"]
},
"email_templates": {
"confirmAccount": "5da0a718-c822-403d-9f5d-20d4584e0528",
"advancedAuth": "5da0a718-c822-403d-9f5d-20d4584e0528",
"advancedMFA": "5da0a718-c822-403d-9f5d-20d4584e0528",
"journeySignUp": "5da0a718-c822-403d-9f5d-20d4584e0528",
"journeySignInOneTimePassword": "5da0a718-c822-403d-9f5d-20d4584e0528",
"journeyLoginOTP": "5da0a718-c822-403d-9f5d-20d4584e0528",
"forgotPassword": "5da0a718-c822-403d-9f5d-20d4584e0528",
"invitation": "5da0a718-c822-403d-9f5d-20d4584e0528",
"partnerInvitation": "5da0a718-c822-403d-9f5d-20d4584e0528",
"onNewQuote": "5da0a718-c822-403d-9f5d-20d4584e0528",
"onMapAPendingUser": "5da0a718-c822-403d-9f5d-20d4584e0528",
"onDocUpload": "5da0a718-c822-403d-9f5d-20d4584e0528",
"onWorkflowStepAssigned": "5da0a718-c822-403d-9f5d-20d4584e0528",
"confirmEmailUpdate": "5da0a718-c822-403d-9f5d-20d4584e0528",
"verifyCodeToSetPassword": "5da0a718-c822-403d-9f5d-20d4584e0528"
},
"images": {
"orderLeftTeaser": "https://epilot-bucket.s3.eu-central-1.amazonaws.com/12344/6538fddb-f0e9-4f0f-af51-6e57891ff20a/order-left-teaser.jpeg",
"orderRightTeaser": "https://epilot-bucket.s3.eu-central-1.amazonaws.com/12344/6538fddb-f0e9-4f0f-af51-6e57891ff20a/order-right-teaser.jpeg",
"welcomeBanner": "https://epilot-bucket.s3.eu-central-1.amazonaws.com/12344/6538fddb-f0e9-4f0f-af51-6e57891ff20a/welcome-banner.jpeg"
},
"entity_identifiers": {
"type": {
"isEnabled": true,
"attributes": ["contract_number"]
}
},
"contract_identifiers": [
{
"name": "email",
"schema": "contact"
},
{
"name": "last_name",
"schema": "contact"
}
],
"contract_selector_config": {
"show_inactive": true,
"title_path": "string"
},
"registration_identifiers": [
{
"name": "last_name",
"schema": "contact"
},
{
"name": "contract_number",
"schema": "contract"
}
],
"triggered_journeys": [
{
"trigger_name": "FIRST_LOGIN",
"journey_id": "5da0a718-c822-403d-9f5d-20d4584e0528"
}
],
"entity_edit_rules": [
{
"slug": "contact",
"attribute": "first_name",
"rule_type": "cadence",
"cadence_period_type": "days",
"cadence_period": 1,
"changes_allowed": 1,
"grace_period": 1,
"allowed_increment": "10%",
"allowed_decrement": "10%",
"number_of_days_before_restriction": 10
}
],
"allowed_file_extensions": {
"document": ["pdf"],
"image": ["jpg"],
"spreadsheet": ["xls"],
"presentation": ["ppt"],
"audioVideo": ["mp4"],
"email": ["eml"],
"archive": ["zip"],
"cad": ["cad"],
"calendar": ["ics"],
"other": ["txt"]
},
"prevent_search_engine_indexing": true,
"meter_reading_grace_period": 0,
"inactive_contract_cutoff_years": 0,
"is_dummy": true,
"is_v3_item": true,
"portal_id": "453ad7bf-86d5-46c8-8252-bcc868df5e3c",
"portal_sk_v3": "PORTAL_CONFIG#453ad7bf-86d5-46c8-8252-bcc868df5e3c",
"origin": "string",
"pages": {},
"id": 12345,
"organization_id": 12345,
"org_settings": {
"canary": {
"enabled": true
},
"notracking": {
"enabled": true
}
},
"feature_flags": {},
"grants": [
{
"action": "entity-read",
"resource": "entity:123:contact:f7c22299-ca72-4bca-8538-0a88eeefc947",
"effect": "allow"
}
],
"identity_providers": [
{
"slug": "office-365-login",
"display_name": "Office 365 Login",
"oidc_config": {},
"mobile_oidc_config": {}
}
]
}

createUserโ€‹

Registers a portal user

POST /v2/portal/public/user

Parameters

NameInTypeRequiredDescription
originquerystringYesOrigin of the portal

Request Body (required)

Sample Call

epilot customer-portal createUser \
-p origin=example

With request body:

epilot customer-portal createUser \
-p origin=example \
-d '{
"email": "testemail921@yopmail.com",
"first_name": "John",
"last_name": "Doe",
"contactId": "5da0a718-c822-403d-9f5d-20d4584e0528",
"orgId": 728,
"password": "124n$aAJs*d41h4",
"contactIdentifiers": {},
"registration_identifiers": {
"contact": {
"email": "john.doe@example.com"
},
"contract": {
"contract_number": "123456"
}
},
"account_id": "string"
}'

Using stdin pipe:

cat body.json | epilot customer-portal createUser -p origin=example

With JSONata filter:

epilot customer-portal createUser -p origin=example --jsonata 'message'
Sample Response
{
"message": "User created successfully"
}

createUserV3โ€‹

Registers a portal user with portal id

POST /v3/portal/public/user

Parameters

NameInTypeRequiredDescription
portal_idquerystringYesOrigin of the portal

Request Body (required)

Sample Call

epilot customer-portal createUserV3 \
-p portal_id=453ad7bf-86d5-46c8-8252-bcc868df5e3c

With request body:

epilot customer-portal createUserV3 \
-p portal_id=453ad7bf-86d5-46c8-8252-bcc868df5e3c \
-d '{
"email": "testemail921@yopmail.com",
"first_name": "John",
"last_name": "Doe",
"contactId": "5da0a718-c822-403d-9f5d-20d4584e0528",
"orgId": 728,
"password": "124n$aAJs*d41h4",
"contactIdentifiers": {},
"registration_identifiers": {
"contact": {
"email": "john.doe@example.com"
},
"contract": {
"contract_number": "123456"
}
},
"account_id": "string"
}'

Using stdin pipe:

cat body.json | epilot customer-portal createUserV3 -p portal_id=453ad7bf-86d5-46c8-8252-bcc868df5e3c

With JSONata filter:

epilot customer-portal createUserV3 -p portal_id=453ad7bf-86d5-46c8-8252-bcc868df5e3c --jsonata 'message'
Sample Response
{
"message": "User created successfully"
}

validateTokenโ€‹

Validates Portal Token is valid. Pass the token via Authorization Header.

POST /v2/portal/token/validate

Sample Call

epilot customer-portal validateToken

With JSONata filter:

epilot customer-portal validateToken --jsonata '$'

revokeTokenโ€‹

Revokes all of the access tokens for the given Refresh Token.

POST /v2/portal/token/revoke

Request Body (required)

Sample Call

epilot customer-portal revokeToken

With request body:

epilot customer-portal revokeToken \
-d '{
"refresh_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c"
}'

Using stdin pipe:

cat body.json | epilot customer-portal revokeToken

With JSONata filter:

epilot customer-portal revokeToken --jsonata 'message'
Sample Response
{
"message": "Token revoked successfully"
}

getPortalConfigByDomainโ€‹

Retrieves the portal configuration by domain.

GET /v2/portal/public/config

Parameters

NameInTypeRequiredDescription
domainquerystringYes

Sample Call

epilot customer-portal getPortalConfigByDomain \
-p domain=example.com

With JSONata filter:

epilot customer-portal getPortalConfigByDomain -p domain=example.com --jsonata '$'
Sample Response
{
"enabled": true,
"name": "Installer Portal",
"domain": "abc.com",
"is_epilot_domain": true,
"epilot_domain": "example-portal-12345.ecp.epilot.cloud",
"domain_settings": {
"is_custom_domain_enabled": true,
"is_epilot_domain_enabled": true,
"is_redirection_enabled": true
},
"design_id": "5da0a718-c822-403d-9f5d-20d4584e0528",
"self_registration_setting": "ALLOW_WITH_CONTACT_CREATION",
"user_account_self_management": false,
"feature_settings": {
"start_page": true,
"billing": true,
"change_due_date": true,
"new_design": true
},
"accessToken": "string",
"advanced_mfa": {
"enabled": true
},
"auth_settings": {
"passwordless_login": {
"enabled": true
},
"entry_point": "PASSWORD",
"preferred_sso_providers": ["office-365-login"],
"auto_redirect_to_sso": true
},
"cognito_details": {
"cognito_user_pool_client_id": "6bsd0jkgoie74k2i8mrhc1vest",
"cognito_user_pool_arn": "arn:aws:cognito-idp:us-east-1:123412341234:userpool/us-east-1_123412341",
"cognito_user_pool_id": "eu-central-1_CUEQRNbUb",
"password_policy": {
"minimum_length": 8,
"maximum_length": 256,
"require_lowercase": true,
"require_uppercase": true,
"require_numbers": true,
"require_symbols": true
}
},
"config": "string",
"contact_identifiers": ["email", "last_name"],
"approval_state_attributes": {
"contact": ["name", "address"],
"contract": ["installment_amount"]
},
"email_templates": {
"confirmAccount": "5da0a718-c822-403d-9f5d-20d4584e0528",
"advancedAuth": "5da0a718-c822-403d-9f5d-20d4584e0528",
"advancedMFA": "5da0a718-c822-403d-9f5d-20d4584e0528",
"journeySignUp": "5da0a718-c822-403d-9f5d-20d4584e0528",
"journeySignInOneTimePassword": "5da0a718-c822-403d-9f5d-20d4584e0528",
"journeyLoginOTP": "5da0a718-c822-403d-9f5d-20d4584e0528",
"forgotPassword": "5da0a718-c822-403d-9f5d-20d4584e0528",
"invitation": "5da0a718-c822-403d-9f5d-20d4584e0528",
"partnerInvitation": "5da0a718-c822-403d-9f5d-20d4584e0528",
"onNewQuote": "5da0a718-c822-403d-9f5d-20d4584e0528",
"onMapAPendingUser": "5da0a718-c822-403d-9f5d-20d4584e0528",
"onDocUpload": "5da0a718-c822-403d-9f5d-20d4584e0528",
"onWorkflowStepAssigned": "5da0a718-c822-403d-9f5d-20d4584e0528",
"confirmEmailUpdate": "5da0a718-c822-403d-9f5d-20d4584e0528",
"verifyCodeToSetPassword": "5da0a718-c822-403d-9f5d-20d4584e0528"
},
"images": {
"orderLeftTeaser": "https://epilot-bucket.s3.eu-central-1.amazonaws.com/12344/6538fddb-f0e9-4f0f-af51-6e57891ff20a/order-left-teaser.jpeg",
"orderRightTeaser": "https://epilot-bucket.s3.eu-central-1.amazonaws.com/12344/6538fddb-f0e9-4f0f-af51-6e57891ff20a/order-right-teaser.jpeg",
"welcomeBanner": "https://epilot-bucket.s3.eu-central-1.amazonaws.com/12344/6538fddb-f0e9-4f0f-af51-6e57891ff20a/welcome-banner.jpeg"
},
"entity_identifiers": {
"type": {
"isEnabled": true,
"attributes": ["contract_number"]
}
},
"contract_identifiers": [
{
"name": "email",
"schema": "contact"
},
{
"name": "last_name",
"schema": "contact"
}
],
"contract_selector_config": {
"show_inactive": true,
"title_path": "string"
},
"registration_identifiers": [
{
"name": "last_name",
"schema": "contact"
},
{
"name": "contract_number",
"schema": "contract"
}
],
"triggered_journeys": [
{
"trigger_name": "FIRST_LOGIN",
"journey_id": "5da0a718-c822-403d-9f5d-20d4584e0528"
}
],
"entity_edit_rules": [
{
"slug": "contact",
"attribute": "first_name",
"rule_type": "cadence",
"cadence_period_type": "days",
"cadence_period": 1,
"changes_allowed": 1,
"grace_period": 1,
"allowed_increment": "10%",
"allowed_decrement": "10%",
"number_of_days_before_restriction": 10
}
],
"allowed_file_extensions": {
"document": ["pdf"],
"image": ["jpg"],
"spreadsheet": ["xls"],
"presentation": ["ppt"],
"audioVideo": ["mp4"],
"email": ["eml"],
"archive": ["zip"],
"cad": ["cad"],
"calendar": ["ics"],
"other": ["txt"]
},
"prevent_search_engine_indexing": true,
"meter_reading_grace_period": 0,
"inactive_contract_cutoff_years": 0,
"is_dummy": true,
"is_v3_item": true,
"portal_id": "453ad7bf-86d5-46c8-8252-bcc868df5e3c",
"portal_sk_v3": "PORTAL_CONFIG#453ad7bf-86d5-46c8-8252-bcc868df5e3c",
"origin": "string",
"pages": {},
"id": 12345,
"organization_id": 12345,
"org_settings": {
"canary": {
"enabled": true
},
"notracking": {
"enabled": true
}
},
"feature_flags": {},
"grants": [
{
"action": "entity-read",
"resource": "entity:123:contact:f7c22299-ca72-4bca-8538-0a88eeefc947",
"effect": "allow"
}
],
"identity_providers": [
{
"slug": "office-365-login",
"display_name": "Office 365 Login",
"oidc_config": {},
"mobile_oidc_config": {}
}
]
}

getPortalConfigโ€‹

Retrieves the portal configuration.

GET /v2/portal/config

Parameters

NameInTypeRequiredDescription
originquerystringNoOrigin of the portal

Sample Call

epilot customer-portal getPortalConfig

With JSONata filter:

epilot customer-portal getPortalConfig --jsonata '$'
Sample Response
{
"enabled": true,
"name": "Installer Portal",
"domain": "abc.com",
"is_epilot_domain": true,
"epilot_domain": "example-portal-12345.ecp.epilot.cloud",
"domain_settings": {
"is_custom_domain_enabled": true,
"is_epilot_domain_enabled": true,
"is_redirection_enabled": true
},
"design_id": "5da0a718-c822-403d-9f5d-20d4584e0528",
"self_registration_setting": "ALLOW_WITH_CONTACT_CREATION",
"user_account_self_management": false,
"feature_settings": {
"start_page": true,
"billing": true,
"change_due_date": true,
"new_design": true
},
"accessToken": "string",
"advanced_mfa": {
"enabled": true
},
"auth_settings": {
"passwordless_login": {
"enabled": true
},
"entry_point": "PASSWORD",
"preferred_sso_providers": ["office-365-login"],
"auto_redirect_to_sso": true
},
"cognito_details": {
"cognito_user_pool_client_id": "6bsd0jkgoie74k2i8mrhc1vest",
"cognito_user_pool_arn": "arn:aws:cognito-idp:us-east-1:123412341234:userpool/us-east-1_123412341",
"cognito_user_pool_id": "eu-central-1_CUEQRNbUb",
"password_policy": {
"minimum_length": 8,
"maximum_length": 256,
"require_lowercase": true,
"require_uppercase": true,
"require_numbers": true,
"require_symbols": true
}
},
"config": "string",
"contact_identifiers": ["email", "last_name"],
"approval_state_attributes": {
"contact": ["name", "address"],
"contract": ["installment_amount"]
},
"email_templates": {
"confirmAccount": "5da0a718-c822-403d-9f5d-20d4584e0528",
"advancedAuth": "5da0a718-c822-403d-9f5d-20d4584e0528",
"advancedMFA": "5da0a718-c822-403d-9f5d-20d4584e0528",
"journeySignUp": "5da0a718-c822-403d-9f5d-20d4584e0528",
"journeySignInOneTimePassword": "5da0a718-c822-403d-9f5d-20d4584e0528",
"journeyLoginOTP": "5da0a718-c822-403d-9f5d-20d4584e0528",
"forgotPassword": "5da0a718-c822-403d-9f5d-20d4584e0528",
"invitation": "5da0a718-c822-403d-9f5d-20d4584e0528",
"partnerInvitation": "5da0a718-c822-403d-9f5d-20d4584e0528",
"onNewQuote": "5da0a718-c822-403d-9f5d-20d4584e0528",
"onMapAPendingUser": "5da0a718-c822-403d-9f5d-20d4584e0528",
"onDocUpload": "5da0a718-c822-403d-9f5d-20d4584e0528",
"onWorkflowStepAssigned": "5da0a718-c822-403d-9f5d-20d4584e0528",
"confirmEmailUpdate": "5da0a718-c822-403d-9f5d-20d4584e0528",
"verifyCodeToSetPassword": "5da0a718-c822-403d-9f5d-20d4584e0528"
},
"images": {
"orderLeftTeaser": "https://epilot-bucket.s3.eu-central-1.amazonaws.com/12344/6538fddb-f0e9-4f0f-af51-6e57891ff20a/order-left-teaser.jpeg",
"orderRightTeaser": "https://epilot-bucket.s3.eu-central-1.amazonaws.com/12344/6538fddb-f0e9-4f0f-af51-6e57891ff20a/order-right-teaser.jpeg",
"welcomeBanner": "https://epilot-bucket.s3.eu-central-1.amazonaws.com/12344/6538fddb-f0e9-4f0f-af51-6e57891ff20a/welcome-banner.jpeg"
},
"entity_identifiers": {
"type": {
"isEnabled": true,
"attributes": ["contract_number"]
}
},
"contract_identifiers": [
{
"name": "email",
"schema": "contact"
},
{
"name": "last_name",
"schema": "contact"
}
],
"contract_selector_config": {
"show_inactive": true,
"title_path": "string"
},
"registration_identifiers": [
{
"name": "last_name",
"schema": "contact"
},
{
"name": "contract_number",
"schema": "contract"
}
],
"triggered_journeys": [
{
"trigger_name": "FIRST_LOGIN",
"journey_id": "5da0a718-c822-403d-9f5d-20d4584e0528"
}
],
"entity_edit_rules": [
{
"slug": "contact",
"attribute": "first_name",
"rule_type": "cadence",
"cadence_period_type": "days",
"cadence_period": 1,
"changes_allowed": 1,
"grace_period": 1,
"allowed_increment": "10%",
"allowed_decrement": "10%",
"number_of_days_before_restriction": 10
}
],
"allowed_file_extensions": {
"document": ["pdf"],
"image": ["jpg"],
"spreadsheet": ["xls"],
"presentation": ["ppt"],
"audioVideo": ["mp4"],
"email": ["eml"],
"archive": ["zip"],
"cad": ["cad"],
"calendar": ["ics"],
"other": ["txt"]
},
"prevent_search_engine_indexing": true,
"meter_reading_grace_period": 0,
"inactive_contract_cutoff_years": 0,
"is_dummy": true,
"is_v3_item": true,
"portal_id": "453ad7bf-86d5-46c8-8252-bcc868df5e3c",
"portal_sk_v3": "PORTAL_CONFIG#453ad7bf-86d5-46c8-8252-bcc868df5e3c",
"origin": "string",
"pages": {},
"id": 12345,
"organization_id": 12345,
"org_settings": {
"canary": {
"enabled": true
},
"notracking": {
"enabled": true
}
},
"feature_flags": {},
"grants": [
{
"action": "entity-read",
"resource": "entity:123:contact:f7c22299-ca72-4bca-8538-0a88eeefc947",
"effect": "allow"
}
],
"identity_providers": [
{
"slug": "office-365-login",
"display_name": "Office 365 Login",
"oidc_config": {},
"mobile_oidc_config": {}
}
]
}

deletePortalโ€‹

Deletes the portal.

DELETE /v2/portal/config

Parameters

NameInTypeRequiredDescription
originquerystringYesOrigin of the portal

Sample Call

epilot customer-portal deletePortal \
-p origin=example

With JSONata filter:

epilot customer-portal deletePortal -p origin=example --jsonata '$'

getPortalExtensionsโ€‹

Retrieves the installed portal extensions.

GET /v2/portal/extensions

Parameters

NameInTypeRequiredDescription
originquerystringNoOrigin of the portal

Sample Call

epilot customer-portal getPortalExtensions

With JSONata filter:

epilot customer-portal getPortalExtensions --jsonata '$'
Sample Response
[
{
"id": "string",
"app_id": "string",
"app_name": "string",
"name": {
"en": "string"
},
"description": {
"en": "string"
},
"version": "string",
"options": [
{}
],
"links": [
{}
],
"hooks": [
{}
]
}
]

getPublicPortalExtensionDetailsโ€‹

Get public extension details shown to end customers and configuring users.

GET /v2/portal/public/extensions

Parameters

NameInTypeRequiredDescription
org_idquerystringYes
originquerystringYesOrigin of the portal

Sample Call

epilot customer-portal getPublicPortalExtensionDetails \
-p org_id=12324 \
-p origin=example

With JSONata filter:

epilot customer-portal getPublicPortalExtensionDetails -p org_id=12324 -p origin=example --jsonata 'consumptionDataRetrieval'
Sample Response
{
"consumptionDataRetrieval": [
{
"extension": {
"id": "string",
"name": {
"en": "string"
}
},
"hook": {
"id": "string",
"name": {
"en": "string"
},
"intervals": ["string"]
}
}
],
"priceDataRetrieval": [
{
"extension": {
"id": "string",
"name": {
"en": "string"
}
},
"hook": {
"id": "string",
"name": {
"en": "string"
},
"intervals": ["string"]
}
}
],
"costDataRetrieval": [
{
"extension": {
"id": "string",
"name": {
"en": "string"
}
},
"hook": {
"id": "string",
"name": {
"en": "string"
},
"intervals": ["string"]
}
}
],
"contractIdentification": {
"extension": {
"id": "string",
"name": {
"en": "string"
}
},
"hook": {
"explanation": {
"en": "This process will give you access to all Contracts kept"
}
}
},
"meterReadingPlausibilityCheck": {
"extension": {
"id": "string",
"name": {
"en": "string"
}
},
"hook": {
"plausibility_mode": "check"
}
}
}

getPortalExtensionsV3โ€‹

Retrieves the installed portal extensions.

GET /v3/portal/extensions

Parameters

NameInTypeRequiredDescription
portal_idquerystringYesPortal ID

Sample Call

epilot customer-portal getPortalExtensionsV3 \
-p portal_id=453ad7bf-86d5-46c8-8252-bcc868df5e3c

With JSONata filter:

epilot customer-portal getPortalExtensionsV3 -p portal_id=453ad7bf-86d5-46c8-8252-bcc868df5e3c --jsonata '$'
Sample Response
[
{
"id": "string",
"app_id": "string",
"app_name": "string",
"name": {
"en": "string"
},
"description": {
"en": "string"
},
"version": "string",
"options": [
{}
],
"links": [
{}
],
"hooks": [
{}
]
}
]

getPublicPortalExtensionDetailsV3โ€‹

Get public extension details shown to end customers and configuring users.

GET /v3/portal/public/extensions

Parameters

NameInTypeRequiredDescription
org_idquerystringNoOrganization ID (required if domain is not provided)
portal_idquerystringNoPortal ID (required if domain is not provided)
domainquerystringNoPortal domain for identification (alternative to org_id + portal_id)

Sample Call

epilot customer-portal getPublicPortalExtensionDetailsV3

With JSONata filter:

epilot customer-portal getPublicPortalExtensionDetailsV3 --jsonata 'consumptionDataRetrieval'
Sample Response
{
"consumptionDataRetrieval": [
{
"extension": {
"id": "string",
"name": {
"en": "string"
}
},
"hook": {
"id": "string",
"name": {
"en": "string"
},
"intervals": ["string"]
}
}
],
"priceDataRetrieval": [
{
"extension": {
"id": "string",
"name": {
"en": "string"
}
},
"hook": {
"id": "string",
"name": {
"en": "string"
},
"intervals": ["string"]
}
}
],
"costDataRetrieval": [
{
"extension": {
"id": "string",
"name": {
"en": "string"
}
},
"hook": {
"id": "string",
"name": {
"en": "string"
},
"intervals": ["string"]
}
}
],
"contractIdentification": {
"extension": {
"id": "string",
"name": {
"en": "string"
}
},
"hook": {
"explanation": {
"en": "This process will give you access to all Contracts kept"
}
}
},
"meterReadingPlausibilityCheck": {
"extension": {
"id": "string",
"name": {
"en": "string"
}
},
"hook": {
"plausibility_mode": "check"
}
}
}

getConsumptionโ€‹

Get energy consumption data between a given time period.

GET /v2/portal/consumption

Parameters

NameInTypeRequiredDescription
app_idquerystringNoApp ID for consumption data.
extensionIdquerystringYesExtension ID for consumption data.
hookIdquerystringYesHook ID for consumption data.
meter_idquerystringNoMeter ID for consumption data. Deprecated - use context_entities instead.
fromquerystring (date-time)YesStart date for consumption data (ISO 8601 format).
toquerystring (date-time)YesEnd date for consumption data (ISO 8601 format).
intervalquery"PT15M" | "PT1H" | "P1D" | "P1M"YesInterval between consumption data points (e.g., PT15M for 15 minutes, PT1H for hourly). Not all intervals have to be supported.
context_entitiesqueryobject[]NoAdditional entities to include in the context for variable interpolation in the hook.

Sample Call

epilot customer-portal getConsumption \
-p extensionId=123e4567-e89b-12d3-a456-426614174000 \
-p hookId=123e4567-e89b-12d3-a456-426614174000 \
-p from=example \
-p to=example \
-p interval=example

With JSONata filter:

epilot customer-portal getConsumption -p extensionId=123e4567-e89b-12d3-a456-426614174000 -p hookId=123e4567-e89b-12d3-a456-426614174000 -p from=example -p to=example -p interval=example --jsonata 'consumptions'
Sample Response
{
"consumptions": [
{
"timestamp": "1970-01-01T00:00:00.000Z",
"value": 0,
"type": "string"
}
]
}

getCostsโ€‹

Get energy cost data between a given time period.

GET /v2/portal/costs

Parameters

NameInTypeRequiredDescription
app_idquerystringNoApp ID for consumption data.
extensionIdquerystringYesExtension ID for cost data.
hookIdquerystringYesHook ID for cost data.
meter_idquerystringNoMeter ID for cost data. Deprecated - use context_entities instead.
fromquerystring (date-time)YesStart date for cost data (ISO 8601 format).
toquerystring (date-time)YesEnd date for cost data (ISO 8601 format).
intervalquery"PT15M" | "PT1H" | "P1D" | "P1M"YesInterval between cost data points (e.g., PT15M for 15 minutes, PT1H for hourly). Not all intervals have to be supported.
context_entitiesqueryobject[]NoAdditional entities to include in the context for variable interpolation in the hook.

Sample Call

epilot customer-portal getCosts \
-p extensionId=123e4567-e89b-12d3-a456-426614174000 \
-p hookId=123e4567-e89b-12d3-a456-426614174000 \
-p from=example \
-p to=example \
-p interval=example

With JSONata filter:

epilot customer-portal getCosts -p extensionId=123e4567-e89b-12d3-a456-426614174000 -p hookId=123e4567-e89b-12d3-a456-426614174000 -p from=example -p to=example -p interval=example --jsonata 'costs'
Sample Response
{
"costs": [
{
"timestamp": "1970-01-01T00:00:00.000Z",
"unit_amount": 1234,
"unit_amount_currency": "EUR",
"unit_amount_decimal": "12.34",
"tax_behavior": "exclusive",
"tax_rate": 19
}
]
}

getPricesโ€‹

Get energy prices data between a given time period.

GET /v2/portal/prices

Parameters

NameInTypeRequiredDescription
app_idquerystringNoApp ID for consumption data.
extensionIdquerystringYesExtension ID for price data.
hookIdquerystringYesHook ID for price data.
meter_idquerystringNoMeter ID for price data. Deprecated - use context_entities instead.
fromquerystring (date-time)YesStart date for price data (ISO 8601 format).
toquerystring (date-time)YesEnd date for price data (ISO 8601 format).
intervalquery"PT15M" | "PT1H" | "P1D" | "P1M"YesInterval between price data points (e.g., PT15M for 15 minutes, PT1H for hourly). Not all intervals have to be supported.
context_entitiesqueryobject[]NoAdditional entities to include in the context for variable interpolation in the hook.

Sample Call

epilot customer-portal getPrices \
-p extensionId=123e4567-e89b-12d3-a456-426614174000 \
-p hookId=123e4567-e89b-12d3-a456-426614174000 \
-p from=example \
-p to=example \
-p interval=example

With JSONata filter:

epilot customer-portal getPrices -p extensionId=123e4567-e89b-12d3-a456-426614174000 -p hookId=123e4567-e89b-12d3-a456-426614174000 -p from=example -p to=example -p interval=example --jsonata 'prices'
Sample Response
{
"prices": [
{
"timestamp": "1970-01-01T00:00:00.000Z",
"unit_amount": 1234,
"unit_amount_currency": "EUR",
"unit_amount_decimal": "12.34",
"components": {
"auction_price_amount": 1000,
"auction_price_amount_decimal": "10.00",
"taxes_levies_amount": 50,
"taxes_levies_amount_decimal": "0.50",
"source_fee_amount": 50,
"source_fee_amount_decimal": "0.50",
"grid_fee_amount": 100,
"grid_fee_amount_decimal": "1.00",
"margin_amount": 34,
"margin_amount_decimal": "0.34"
},
"tax_behavior": "exclusive",
"tax_rate": 19
}
]
}

Retrieves the portal configuration external links.

GET /v2/portal/external-links

Parameters

NameInTypeRequiredDescription
originquerystringNoOrigin of the portal
contactIdquerystring (uuid)NoContact ID of the user

Sample Call

epilot customer-portal getExternalLinks

With JSONata filter:

epilot customer-portal getExternalLinks --jsonata '$'
Sample Response
[
{
"id": "string",
"label": {},
"type": "link",
"link": "string",
"rules": [
{}
],
"attribute": "string",
"entity": "string",
"attribute_value": "string",
"icon": {
"name": "string",
"color": "string",
"size": 0
},
"extension_link_id": ["string"]
}
]

getExternalLinksV3โ€‹

Retrieves the portal configuration external links.

GET /v3/portal/external-links

Parameters

NameInTypeRequiredDescription
portal_idquerystringNoPortalId of the portal
contactIdquerystring (uuid)NoContact ID of the user

Sample Call

epilot customer-portal getExternalLinksV3

With JSONata filter:

epilot customer-portal getExternalLinksV3 --jsonata '$'
Sample Response
[
{
"id": "string",
"label": {},
"type": "link",
"link": "string",
"rules": [
{}
],
"attribute": "string",
"entity": "string",
"attribute_value": "string",
"icon": {
"name": "string",
"color": "string",
"size": 0
},
"extension_link_id": ["string"]
}
]

Retrieves a resolved seamless portal link.

GET /v2/portal/resolve:seamless-link

Parameters

NameInTypeRequiredDescription
app_idquerystringNoID of the App if the Portal Extension was installed from an App
extension_idquerystringYesID of the Portal Extension
link_idquerystringYesID of the Seamless Link
context_entitiesqueryobject[]NoIf the request is in a context of certain entities (i.e. the user in in a context of a specific contract), links can be customized for that. Portal User and Contact entities are automatically part of

Sample Call

epilot customer-portal getResolvedSeamlessLink \
-p extension_id=123e4567-e89b-12d3-a456-426614174000 \
-p link_id=123e4567-e89b-12d3-a456-426614174000

With JSONata filter:

epilot customer-portal getResolvedSeamlessLink -p extension_id=123e4567-e89b-12d3-a456-426614174000 -p link_id=123e4567-e89b-12d3-a456-426614174000 --jsonata 'link'
Sample Response
{
"link": "string"
}

getPublicPortalConfigโ€‹

Retrieves the public portal configuration.

GET /v2/portal/public/portal/config

Parameters

NameInTypeRequiredDescription
org_idquerystringYes
originquerystringYesOrigin of the portal

Sample Call

epilot customer-portal getPublicPortalConfig \
-p org_id=12324 \
-p origin=example

With JSONata filter:

epilot customer-portal getPublicPortalConfig -p org_id=12324 -p origin=example --jsonata '$'
Sample Response
{
"enabled": true,
"name": "Installer Portal",
"domain": "abc.com",
"is_epilot_domain": true,
"epilot_domain": "example-portal-12345.ecp.epilot.cloud",
"domain_settings": {
"is_custom_domain_enabled": true,
"is_epilot_domain_enabled": true,
"is_redirection_enabled": true
},
"design_id": "5da0a718-c822-403d-9f5d-20d4584e0528",
"self_registration_setting": "ALLOW_WITH_CONTACT_CREATION",
"user_account_self_management": false,
"feature_settings": {
"start_page": true,
"billing": true,
"change_due_date": true,
"new_design": true
},
"accessToken": "string",
"advanced_mfa": {
"enabled": true
},
"auth_settings": {
"passwordless_login": {
"enabled": true
},
"entry_point": "PASSWORD",
"preferred_sso_providers": ["office-365-login"],
"auto_redirect_to_sso": true
},
"cognito_details": {
"cognito_user_pool_client_id": "6bsd0jkgoie74k2i8mrhc1vest",
"cognito_user_pool_arn": "arn:aws:cognito-idp:us-east-1:123412341234:userpool/us-east-1_123412341",
"cognito_user_pool_id": "eu-central-1_CUEQRNbUb",
"password_policy": {
"minimum_length": 8,
"maximum_length": 256,
"require_lowercase": true,
"require_uppercase": true,
"require_numbers": true,
"require_symbols": true
}
},
"config": "string",
"contact_identifiers": ["email", "last_name"],
"approval_state_attributes": {
"contact": ["name", "address"],
"contract": ["installment_amount"]
},
"email_templates": {
"confirmAccount": "5da0a718-c822-403d-9f5d-20d4584e0528",
"advancedAuth": "5da0a718-c822-403d-9f5d-20d4584e0528",
"advancedMFA": "5da0a718-c822-403d-9f5d-20d4584e0528",
"journeySignUp": "5da0a718-c822-403d-9f5d-20d4584e0528",
"journeySignInOneTimePassword": "5da0a718-c822-403d-9f5d-20d4584e0528",
"journeyLoginOTP": "5da0a718-c822-403d-9f5d-20d4584e0528",
"forgotPassword": "5da0a718-c822-403d-9f5d-20d4584e0528",
"invitation": "5da0a718-c822-403d-9f5d-20d4584e0528",
"partnerInvitation": "5da0a718-c822-403d-9f5d-20d4584e0528",
"onNewQuote": "5da0a718-c822-403d-9f5d-20d4584e0528",
"onMapAPendingUser": "5da0a718-c822-403d-9f5d-20d4584e0528",
"onDocUpload": "5da0a718-c822-403d-9f5d-20d4584e0528",
"onWorkflowStepAssigned": "5da0a718-c822-403d-9f5d-20d4584e0528",
"confirmEmailUpdate": "5da0a718-c822-403d-9f5d-20d4584e0528",
"verifyCodeToSetPassword": "5da0a718-c822-403d-9f5d-20d4584e0528"
},
"images": {
"orderLeftTeaser": "https://epilot-bucket.s3.eu-central-1.amazonaws.com/12344/6538fddb-f0e9-4f0f-af51-6e57891ff20a/order-left-teaser.jpeg",
"orderRightTeaser": "https://epilot-bucket.s3.eu-central-1.amazonaws.com/12344/6538fddb-f0e9-4f0f-af51-6e57891ff20a/order-right-teaser.jpeg",
"welcomeBanner": "https://epilot-bucket.s3.eu-central-1.amazonaws.com/12344/6538fddb-f0e9-4f0f-af51-6e57891ff20a/welcome-banner.jpeg"
},
"entity_identifiers": {
"type": {
"isEnabled": true,
"attributes": ["contract_number"]
}
},
"contract_identifiers": [
{
"name": "email",
"schema": "contact"
},
{
"name": "last_name",
"schema": "contact"
}
],
"contract_selector_config": {
"show_inactive": true,
"title_path": "string"
},
"registration_identifiers": [
{
"name": "last_name",
"schema": "contact"
},
{
"name": "contract_number",
"schema": "contract"
}
],
"triggered_journeys": [
{
"trigger_name": "FIRST_LOGIN",
"journey_id": "5da0a718-c822-403d-9f5d-20d4584e0528"
}
],
"entity_edit_rules": [
{
"slug": "contact",
"attribute": "first_name",
"rule_type": "cadence",
"cadence_period_type": "days",
"cadence_period": 1,
"changes_allowed": 1,
"grace_period": 1,
"allowed_increment": "10%",
"allowed_decrement": "10%",
"number_of_days_before_restriction": 10
}
],
"allowed_file_extensions": {
"document": ["pdf"],
"image": ["jpg"],
"spreadsheet": ["xls"],
"presentation": ["ppt"],
"audioVideo": ["mp4"],
"email": ["eml"],
"archive": ["zip"],
"cad": ["cad"],
"calendar": ["ics"],
"other": ["txt"]
},
"prevent_search_engine_indexing": true,
"meter_reading_grace_period": 0,
"inactive_contract_cutoff_years": 0,
"is_dummy": true,
"is_v3_item": true,
"portal_id": "453ad7bf-86d5-46c8-8252-bcc868df5e3c",
"portal_sk_v3": "PORTAL_CONFIG#453ad7bf-86d5-46c8-8252-bcc868df5e3c",
"origin": "string",
"pages": {},
"id": 12345,
"organization_id": 12345,
"org_settings": {
"canary": {
"enabled": true
},
"notracking": {
"enabled": true
}
},
"feature_flags": {},
"grants": [
{
"action": "entity-read",
"resource": "entity:123:contact:f7c22299-ca72-4bca-8538-0a88eeefc947",
"effect": "allow"
}
],
"identity_providers": [
{
"slug": "office-365-login",
"display_name": "Office 365 Login",
"oidc_config": {},
"mobile_oidc_config": {}
}
]
}

getOrgPortalConfigโ€‹

Retrieves the portal configuration for the organization.

GET /v2/portal/org/portal/config

Parameters

NameInTypeRequiredDescription
originquerystringYesOrigin of the portal

Sample Call

epilot customer-portal getOrgPortalConfig \
-p origin=example

With JSONata filter:

epilot customer-portal getOrgPortalConfig -p origin=example --jsonata '$'
Sample Response
{
"enabled": true,
"name": "Installer Portal",
"domain": "abc.com",
"is_epilot_domain": true,
"epilot_domain": "example-portal-12345.ecp.epilot.cloud",
"domain_settings": {
"is_custom_domain_enabled": true,
"is_epilot_domain_enabled": true,
"is_redirection_enabled": true
},
"design_id": "5da0a718-c822-403d-9f5d-20d4584e0528",
"self_registration_setting": "ALLOW_WITH_CONTACT_CREATION",
"user_account_self_management": false,
"feature_settings": {
"start_page": true,
"billing": true,
"change_due_date": true,
"new_design": true
},
"accessToken": "string",
"advanced_mfa": {
"enabled": true
},
"auth_settings": {
"passwordless_login": {
"enabled": true
},
"entry_point": "PASSWORD",
"preferred_sso_providers": ["office-365-login"],
"auto_redirect_to_sso": true
},
"cognito_details": {
"cognito_user_pool_client_id": "6bsd0jkgoie74k2i8mrhc1vest",
"cognito_user_pool_arn": "arn:aws:cognito-idp:us-east-1:123412341234:userpool/us-east-1_123412341",
"cognito_user_pool_id": "eu-central-1_CUEQRNbUb",
"password_policy": {
"minimum_length": 8,
"maximum_length": 256,
"require_lowercase": true,
"require_uppercase": true,
"require_numbers": true,
"require_symbols": true
}
},
"config": "string",
"contact_identifiers": ["email", "last_name"],
"approval_state_attributes": {
"contact": ["name", "address"],
"contract": ["installment_amount"]
},
"email_templates": {
"confirmAccount": "5da0a718-c822-403d-9f5d-20d4584e0528",
"advancedAuth": "5da0a718-c822-403d-9f5d-20d4584e0528",
"advancedMFA": "5da0a718-c822-403d-9f5d-20d4584e0528",
"journeySignUp": "5da0a718-c822-403d-9f5d-20d4584e0528",
"journeySignInOneTimePassword": "5da0a718-c822-403d-9f5d-20d4584e0528",
"journeyLoginOTP": "5da0a718-c822-403d-9f5d-20d4584e0528",
"forgotPassword": "5da0a718-c822-403d-9f5d-20d4584e0528",
"invitation": "5da0a718-c822-403d-9f5d-20d4584e0528",
"partnerInvitation": "5da0a718-c822-403d-9f5d-20d4584e0528",
"onNewQuote": "5da0a718-c822-403d-9f5d-20d4584e0528",
"onMapAPendingUser": "5da0a718-c822-403d-9f5d-20d4584e0528",
"onDocUpload": "5da0a718-c822-403d-9f5d-20d4584e0528",
"onWorkflowStepAssigned": "5da0a718-c822-403d-9f5d-20d4584e0528",
"confirmEmailUpdate": "5da0a718-c822-403d-9f5d-20d4584e0528",
"verifyCodeToSetPassword": "5da0a718-c822-403d-9f5d-20d4584e0528"
},
"images": {
"orderLeftTeaser": "https://epilot-bucket.s3.eu-central-1.amazonaws.com/12344/6538fddb-f0e9-4f0f-af51-6e57891ff20a/order-left-teaser.jpeg",
"orderRightTeaser": "https://epilot-bucket.s3.eu-central-1.amazonaws.com/12344/6538fddb-f0e9-4f0f-af51-6e57891ff20a/order-right-teaser.jpeg",
"welcomeBanner": "https://epilot-bucket.s3.eu-central-1.amazonaws.com/12344/6538fddb-f0e9-4f0f-af51-6e57891ff20a/welcome-banner.jpeg"
},
"entity_identifiers": {
"type": {
"isEnabled": true,
"attributes": ["contract_number"]
}
},
"contract_identifiers": [
{
"name": "email",
"schema": "contact"
},
{
"name": "last_name",
"schema": "contact"
}
],
"contract_selector_config": {
"show_inactive": true,
"title_path": "string"
},
"registration_identifiers": [
{
"name": "last_name",
"schema": "contact"
},
{
"name": "contract_number",
"schema": "contract"
}
],
"triggered_journeys": [
{
"trigger_name": "FIRST_LOGIN",
"journey_id": "5da0a718-c822-403d-9f5d-20d4584e0528"
}
],
"entity_edit_rules": [
{
"slug": "contact",
"attribute": "first_name",
"rule_type": "cadence",
"cadence_period_type": "days",
"cadence_period": 1,
"changes_allowed": 1,
"grace_period": 1,
"allowed_increment": "10%",
"allowed_decrement": "10%",
"number_of_days_before_restriction": 10
}
],
"allowed_file_extensions": {
"document": ["pdf"],
"image": ["jpg"],
"spreadsheet": ["xls"],
"presentation": ["ppt"],
"audioVideo": ["mp4"],
"email": ["eml"],
"archive": ["zip"],
"cad": ["cad"],
"calendar": ["ics"],
"other": ["txt"]
},
"prevent_search_engine_indexing": true,
"meter_reading_grace_period": 0,
"inactive_contract_cutoff_years": 0,
"is_dummy": true,
"is_v3_item": true,
"portal_id": "453ad7bf-86d5-46c8-8252-bcc868df5e3c",
"portal_sk_v3": "PORTAL_CONFIG#453ad7bf-86d5-46c8-8252-bcc868df5e3c",
"origin": "string",
"pages": {},
"id": 12345,
"organization_id": 12345,
"org_settings": {
"canary": {
"enabled": true
},
"notracking": {
"enabled": true
}
},
"feature_flags": {},
"grants": [
{
"action": "entity-read",
"resource": "entity:123:contact:f7c22299-ca72-4bca-8538-0a88eeefc947",
"effect": "allow"
}
],
"identity_providers": [
{
"slug": "office-365-login",
"display_name": "Office 365 Login",
"oidc_config": {},
"mobile_oidc_config": {}
}
],
"certificate_details": {
"status": "PENDING_VALIDATION",
"failed_reason": "CAA_ERROR"
}
}

getPublicPortalConfigV3โ€‹

Retrieves the public portal configuration.

GET /v3/portal/public/portal/config

Parameters

NameInTypeRequiredDescription
org_idquerystringYes
portal_idquerystringYesPortalId of the portal

Sample Call

epilot customer-portal getPublicPortalConfigV3 \
-p org_id=12324 \
-p portal_id=453ad7bf-86d5-46c8-8252-bcc868df5e3c

With JSONata filter:

epilot customer-portal getPublicPortalConfigV3 -p org_id=12324 -p portal_id=453ad7bf-86d5-46c8-8252-bcc868df5e3c --jsonata '$'
Sample Response
{
"enabled": true,
"name": "Installer Portal",
"domain": "abc.com",
"is_epilot_domain": true,
"epilot_domain": "example-portal-12345.ecp.epilot.cloud",
"domain_settings": {
"is_custom_domain_enabled": true,
"is_epilot_domain_enabled": true,
"is_redirection_enabled": true
},
"design_id": "5da0a718-c822-403d-9f5d-20d4584e0528",
"self_registration_setting": "ALLOW_WITH_CONTACT_CREATION",
"user_account_self_management": false,
"feature_settings": {
"start_page": true,
"billing": true,
"change_due_date": true,
"new_design": true
},
"accessToken": "string",
"advanced_mfa": {
"enabled": true
},
"auth_settings": {
"passwordless_login": {
"enabled": true
},
"entry_point": "PASSWORD",
"preferred_sso_providers": ["office-365-login"],
"auto_redirect_to_sso": true
},
"cognito_details": {
"cognito_user_pool_client_id": "6bsd0jkgoie74k2i8mrhc1vest",
"cognito_user_pool_arn": "arn:aws:cognito-idp:us-east-1:123412341234:userpool/us-east-1_123412341",
"cognito_user_pool_id": "eu-central-1_CUEQRNbUb",
"password_policy": {
"minimum_length": 8,
"maximum_length": 256,
"require_lowercase": true,
"require_uppercase": true,
"require_numbers": true,
"require_symbols": true
}
},
"config": "string",
"contact_identifiers": ["email", "last_name"],
"approval_state_attributes": {
"contact": ["name", "address"],
"contract": ["installment_amount"]
},
"email_templates": {
"confirmAccount": "5da0a718-c822-403d-9f5d-20d4584e0528",
"advancedAuth": "5da0a718-c822-403d-9f5d-20d4584e0528",
"advancedMFA": "5da0a718-c822-403d-9f5d-20d4584e0528",
"journeySignUp": "5da0a718-c822-403d-9f5d-20d4584e0528",
"journeySignInOneTimePassword": "5da0a718-c822-403d-9f5d-20d4584e0528",
"journeyLoginOTP": "5da0a718-c822-403d-9f5d-20d4584e0528",
"forgotPassword": "5da0a718-c822-403d-9f5d-20d4584e0528",
"invitation": "5da0a718-c822-403d-9f5d-20d4584e0528",
"partnerInvitation": "5da0a718-c822-403d-9f5d-20d4584e0528",
"onNewQuote": "5da0a718-c822-403d-9f5d-20d4584e0528",
"onMapAPendingUser": "5da0a718-c822-403d-9f5d-20d4584e0528",
"onDocUpload": "5da0a718-c822-403d-9f5d-20d4584e0528",
"onWorkflowStepAssigned": "5da0a718-c822-403d-9f5d-20d4584e0528",
"confirmEmailUpdate": "5da0a718-c822-403d-9f5d-20d4584e0528",
"verifyCodeToSetPassword": "5da0a718-c822-403d-9f5d-20d4584e0528"
},
"images": {
"orderLeftTeaser": "https://epilot-bucket.s3.eu-central-1.amazonaws.com/12344/6538fddb-f0e9-4f0f-af51-6e57891ff20a/order-left-teaser.jpeg",
"orderRightTeaser": "https://epilot-bucket.s3.eu-central-1.amazonaws.com/12344/6538fddb-f0e9-4f0f-af51-6e57891ff20a/order-right-teaser.jpeg",
"welcomeBanner": "https://epilot-bucket.s3.eu-central-1.amazonaws.com/12344/6538fddb-f0e9-4f0f-af51-6e57891ff20a/welcome-banner.jpeg"
},
"entity_identifiers": {
"type": {
"isEnabled": true,
"attributes": ["contract_number"]
}
},
"contract_identifiers": [
{
"name": "email",
"schema": "contact"
},
{
"name": "last_name",
"schema": "contact"
}
],
"contract_selector_config": {
"show_inactive": true,
"title_path": "string"
},
"registration_identifiers": [
{
"name": "last_name",
"schema": "contact"
},
{
"name": "contract_number",
"schema": "contract"
}
],
"triggered_journeys": [
{
"trigger_name": "FIRST_LOGIN",
"journey_id": "5da0a718-c822-403d-9f5d-20d4584e0528"
}
],
"entity_edit_rules": [
{
"slug": "contact",
"attribute": "first_name",
"rule_type": "cadence",
"cadence_period_type": "days",
"cadence_period": 1,
"changes_allowed": 1,
"grace_period": 1,
"allowed_increment": "10%",
"allowed_decrement": "10%",
"number_of_days_before_restriction": 10
}
],
"allowed_file_extensions": {
"document": ["pdf"],
"image": ["jpg"],
"spreadsheet": ["xls"],
"presentation": ["ppt"],
"audioVideo": ["mp4"],
"email": ["eml"],
"archive": ["zip"],
"cad": ["cad"],
"calendar": ["ics"],
"other": ["txt"]
},
"prevent_search_engine_indexing": true,
"meter_reading_grace_period": 0,
"inactive_contract_cutoff_years": 0,
"is_dummy": true,
"is_v3_item": true,
"portal_id": "453ad7bf-86d5-46c8-8252-bcc868df5e3c",
"portal_sk_v3": "PORTAL_CONFIG#453ad7bf-86d5-46c8-8252-bcc868df5e3c",
"origin": "string",
"pages": {},
"id": 12345,
"organization_id": 12345,
"org_settings": {
"canary": {
"enabled": true
},
"notracking": {
"enabled": true
}
},
"feature_flags": {},
"grants": [
{
"action": "entity-read",
"resource": "entity:123:contact:f7c22299-ca72-4bca-8538-0a88eeefc947",
"effect": "allow"
}
],
"identity_providers": [
{
"slug": "office-365-login",
"display_name": "Office 365 Login",
"oidc_config": {},
"mobile_oidc_config": {}
}
]
}

getOrgPortalConfigV3โ€‹

Retrieves the portal configuration for the organization.

GET /v3/portal/org/portal/config

Parameters

NameInTypeRequiredDescription
portal_idquerystringYesPortalId of the portal

Sample Call

epilot customer-portal getOrgPortalConfigV3 \
-p portal_id=453ad7bf-86d5-46c8-8252-bcc868df5e3c

With JSONata filter:

epilot customer-portal getOrgPortalConfigV3 -p portal_id=453ad7bf-86d5-46c8-8252-bcc868df5e3c --jsonata '$'
Sample Response
{
"enabled": true,
"name": "Installer Portal",
"domain": "abc.com",
"is_epilot_domain": true,
"epilot_domain": "example-portal-12345.ecp.epilot.cloud",
"domain_settings": {
"is_custom_domain_enabled": true,
"is_epilot_domain_enabled": true,
"is_redirection_enabled": true
},
"design_id": "5da0a718-c822-403d-9f5d-20d4584e0528",
"self_registration_setting": "ALLOW_WITH_CONTACT_CREATION",
"user_account_self_management": false,
"feature_settings": {
"start_page": true,
"billing": true,
"change_due_date": true,
"new_design": true
},
"accessToken": "string",
"advanced_mfa": {
"enabled": true
},
"auth_settings": {
"passwordless_login": {
"enabled": true
},
"entry_point": "PASSWORD",
"preferred_sso_providers": ["office-365-login"],
"auto_redirect_to_sso": true
},
"cognito_details": {
"cognito_user_pool_client_id": "6bsd0jkgoie74k2i8mrhc1vest",
"cognito_user_pool_arn": "arn:aws:cognito-idp:us-east-1:123412341234:userpool/us-east-1_123412341",
"cognito_user_pool_id": "eu-central-1_CUEQRNbUb",
"password_policy": {
"minimum_length": 8,
"maximum_length": 256,
"require_lowercase": true,
"require_uppercase": true,
"require_numbers": true,
"require_symbols": true
}
},
"config": "string",
"contact_identifiers": ["email", "last_name"],
"approval_state_attributes": {
"contact": ["name", "address"],
"contract": ["installment_amount"]
},
"email_templates": {
"confirmAccount": "5da0a718-c822-403d-9f5d-20d4584e0528",
"advancedAuth": "5da0a718-c822-403d-9f5d-20d4584e0528",
"advancedMFA": "5da0a718-c822-403d-9f5d-20d4584e0528",
"journeySignUp": "5da0a718-c822-403d-9f5d-20d4584e0528",
"journeySignInOneTimePassword": "5da0a718-c822-403d-9f5d-20d4584e0528",
"journeyLoginOTP": "5da0a718-c822-403d-9f5d-20d4584e0528",
"forgotPassword": "5da0a718-c822-403d-9f5d-20d4584e0528",
"invitation": "5da0a718-c822-403d-9f5d-20d4584e0528",
"partnerInvitation": "5da0a718-c822-403d-9f5d-20d4584e0528",
"onNewQuote": "5da0a718-c822-403d-9f5d-20d4584e0528",
"onMapAPendingUser": "5da0a718-c822-403d-9f5d-20d4584e0528",
"onDocUpload": "5da0a718-c822-403d-9f5d-20d4584e0528",
"onWorkflowStepAssigned": "5da0a718-c822-403d-9f5d-20d4584e0528",
"confirmEmailUpdate": "5da0a718-c822-403d-9f5d-20d4584e0528",
"verifyCodeToSetPassword": "5da0a718-c822-403d-9f5d-20d4584e0528"
},
"images": {
"orderLeftTeaser": "https://epilot-bucket.s3.eu-central-1.amazonaws.com/12344/6538fddb-f0e9-4f0f-af51-6e57891ff20a/order-left-teaser.jpeg",
"orderRightTeaser": "https://epilot-bucket.s3.eu-central-1.amazonaws.com/12344/6538fddb-f0e9-4f0f-af51-6e57891ff20a/order-right-teaser.jpeg",
"welcomeBanner": "https://epilot-bucket.s3.eu-central-1.amazonaws.com/12344/6538fddb-f0e9-4f0f-af51-6e57891ff20a/welcome-banner.jpeg"
},
"entity_identifiers": {
"type": {
"isEnabled": true,
"attributes": ["contract_number"]
}
},
"contract_identifiers": [
{
"name": "email",
"schema": "contact"
},
{
"name": "last_name",
"schema": "contact"
}
],
"contract_selector_config": {
"show_inactive": true,
"title_path": "string"
},
"registration_identifiers": [
{
"name": "last_name",
"schema": "contact"
},
{
"name": "contract_number",
"schema": "contract"
}
],
"triggered_journeys": [
{
"trigger_name": "FIRST_LOGIN",
"journey_id": "5da0a718-c822-403d-9f5d-20d4584e0528"
}
],
"entity_edit_rules": [
{
"slug": "contact",
"attribute": "first_name",
"rule_type": "cadence",
"cadence_period_type": "days",
"cadence_period": 1,
"changes_allowed": 1,
"grace_period": 1,
"allowed_increment": "10%",
"allowed_decrement": "10%",
"number_of_days_before_restriction": 10
}
],
"allowed_file_extensions": {
"document": ["pdf"],
"image": ["jpg"],
"spreadsheet": ["xls"],
"presentation": ["ppt"],
"audioVideo": ["mp4"],
"email": ["eml"],
"archive": ["zip"],
"cad": ["cad"],
"calendar": ["ics"],
"other": ["txt"]
},
"prevent_search_engine_indexing": true,
"meter_reading_grace_period": 0,
"inactive_contract_cutoff_years": 0,
"is_dummy": true,
"is_v3_item": true,
"portal_id": "453ad7bf-86d5-46c8-8252-bcc868df5e3c",
"portal_sk_v3": "PORTAL_CONFIG#453ad7bf-86d5-46c8-8252-bcc868df5e3c",
"origin": "string",
"pages": {},
"id": 12345,
"organization_id": 12345,
"org_settings": {
"canary": {
"enabled": true
},
"notracking": {
"enabled": true
}
},
"feature_flags": {},
"grants": [
{
"action": "entity-read",
"resource": "entity:123:contact:f7c22299-ca72-4bca-8538-0a88eeefc947",
"effect": "allow"
}
],
"identity_providers": [
{
"slug": "office-365-login",
"display_name": "Office 365 Login",
"oidc_config": {},
"mobile_oidc_config": {}
}
],
"certificate_details": {
"status": "PENDING_VALIDATION",
"failed_reason": "CAA_ERROR"
}
}

getAllPortalConfigsโ€‹

Retrieves all portal configurations.

GET /v2/portal/configs

Sample Call

epilot customer-portal getAllPortalConfigs

With JSONata filter:

epilot customer-portal getAllPortalConfigs --jsonata 'data'
Sample Response
{
"data": [
{
"enabled": true,
"name": "Installer Portal",
"domain": "abc.com",
"is_epilot_domain": true,
"epilot_domain": "example-portal-12345.ecp.epilot.cloud",
"domain_settings": {},
"design_id": "5da0a718-c822-403d-9f5d-20d4584e0528",
"self_registration_setting": "ALLOW_WITH_CONTACT_CREATION",
"user_account_self_management": false,
"feature_settings": {},
"accessToken": "string",
"advanced_mfa": {},
"auth_settings": {},
"cognito_details": {},
"config": "string",
"contact_identifiers": ["email", "last_name"],
"approval_state_attributes": {},
"email_templates": {},
"images": {},
"entity_identifiers": {},
"contract_identifiers": [],
"contract_selector_config": {},
"registration_identifiers": [],
"triggered_journeys": [],
"entity_edit_rules": [],
"allowed_file_extensions": {},
"prevent_search_engine_indexing": true,
"meter_reading_grace_period": 0,
"inactive_contract_cutoff_years": 0,
"is_dummy": true,
"is_v3_item": true,
"portal_id": "453ad7bf-86d5-46c8-8252-bcc868df5e3c",
"portal_sk_v3": "PORTAL_CONFIG#453ad7bf-86d5-46c8-8252-bcc868df5e3c",
"origin": "string",
"pages": {},
"id": 12345,
"organization_id": 12345,
"org_settings": {},
"feature_flags": {},
"grants": [],
"identity_providers": []
}
]
}

getEmailTemplatesโ€‹

Retrieves the email templates of a portal

GET /v2/portal/email-templates

Parameters

NameInTypeRequiredDescription
originquerystringYesOrigin of the portal

Sample Call

epilot customer-portal getEmailTemplates \
-p origin=example

With JSONata filter:

epilot customer-portal getEmailTemplates -p origin=example --jsonata 'confirmAccount'
Sample Response
{
"confirmAccount": "5da0a718-c822-403d-9f5d-20d4584e0528",
"advancedAuth": "5da0a718-c822-403d-9f5d-20d4584e0528",
"advancedMFA": "5da0a718-c822-403d-9f5d-20d4584e0528",
"journeySignUp": "5da0a718-c822-403d-9f5d-20d4584e0528",
"journeySignInOneTimePassword": "5da0a718-c822-403d-9f5d-20d4584e0528",
"journeyLoginOTP": "5da0a718-c822-403d-9f5d-20d4584e0528",
"forgotPassword": "5da0a718-c822-403d-9f5d-20d4584e0528",
"invitation": "5da0a718-c822-403d-9f5d-20d4584e0528",
"partnerInvitation": "5da0a718-c822-403d-9f5d-20d4584e0528",
"onNewQuote": "5da0a718-c822-403d-9f5d-20d4584e0528",
"onMapAPendingUser": "5da0a718-c822-403d-9f5d-20d4584e0528",
"onDocUpload": "5da0a718-c822-403d-9f5d-20d4584e0528",
"onWorkflowStepAssigned": "5da0a718-c822-403d-9f5d-20d4584e0528",
"confirmEmailUpdate": "5da0a718-c822-403d-9f5d-20d4584e0528",
"verifyCodeToSetPassword": "5da0a718-c822-403d-9f5d-20d4584e0528"
}

upsertEmailTemplatesโ€‹

Upserts the email templates of a portal

POST /v2/portal/email-templates

Parameters

NameInTypeRequiredDescription
originquerystringYesOrigin of the portal

Request Body (required)

Sample Call

epilot customer-portal upsertEmailTemplates \
-p origin=example

With request body:

epilot customer-portal upsertEmailTemplates \
-p origin=example \
-d '{
"confirmAccount": "5da0a718-c822-403d-9f5d-20d4584e0528",
"advancedAuth": "5da0a718-c822-403d-9f5d-20d4584e0528",
"advancedMFA": "5da0a718-c822-403d-9f5d-20d4584e0528",
"journeySignUp": "5da0a718-c822-403d-9f5d-20d4584e0528",
"journeySignInOneTimePassword": "5da0a718-c822-403d-9f5d-20d4584e0528",
"journeyLoginOTP": "5da0a718-c822-403d-9f5d-20d4584e0528",
"forgotPassword": "5da0a718-c822-403d-9f5d-20d4584e0528",
"invitation": "5da0a718-c822-403d-9f5d-20d4584e0528",
"partnerInvitation": "5da0a718-c822-403d-9f5d-20d4584e0528",
"onNewQuote": "5da0a718-c822-403d-9f5d-20d4584e0528",
"onMapAPendingUser": "5da0a718-c822-403d-9f5d-20d4584e0528",
"onDocUpload": "5da0a718-c822-403d-9f5d-20d4584e0528",
"onWorkflowStepAssigned": "5da0a718-c822-403d-9f5d-20d4584e0528",
"confirmEmailUpdate": "5da0a718-c822-403d-9f5d-20d4584e0528",
"verifyCodeToSetPassword": "5da0a718-c822-403d-9f5d-20d4584e0528"
}'

Using stdin pipe:

cat body.json | epilot customer-portal upsertEmailTemplates -p origin=example

With JSONata filter:

epilot customer-portal upsertEmailTemplates -p origin=example --jsonata 'message'
Sample Response
{
"message": "Email Templates upserted successfully",
"emailTemplates": {
"confirmAccount": "5da0a718-c822-403d-9f5d-20d4584e0528",
"advancedAuth": "5da0a718-c822-403d-9f5d-20d4584e0528",
"advancedMFA": "5da0a718-c822-403d-9f5d-20d4584e0528",
"journeySignUp": "5da0a718-c822-403d-9f5d-20d4584e0528",
"journeySignInOneTimePassword": "5da0a718-c822-403d-9f5d-20d4584e0528",
"journeyLoginOTP": "5da0a718-c822-403d-9f5d-20d4584e0528",
"forgotPassword": "5da0a718-c822-403d-9f5d-20d4584e0528",
"invitation": "5da0a718-c822-403d-9f5d-20d4584e0528",
"partnerInvitation": "5da0a718-c822-403d-9f5d-20d4584e0528",
"onNewQuote": "5da0a718-c822-403d-9f5d-20d4584e0528",
"onMapAPendingUser": "5da0a718-c822-403d-9f5d-20d4584e0528",
"onDocUpload": "5da0a718-c822-403d-9f5d-20d4584e0528",
"onWorkflowStepAssigned": "5da0a718-c822-403d-9f5d-20d4584e0528",
"confirmEmailUpdate": "5da0a718-c822-403d-9f5d-20d4584e0528",
"verifyCodeToSetPassword": "5da0a718-c822-403d-9f5d-20d4584e0528"
}
}

getEmailTemplatesByPortalIdโ€‹

Retrieves the email templates of a portal by portal ID

GET /v3/portal/email-templates/{portal_id}

Parameters

NameInTypeRequiredDescription
portal_idpathstringYesID of the portal

Sample Call

epilot customer-portal getEmailTemplatesByPortalId \
-p portal_id=123e4567-e89b-12d3-a456-426614174000

Using positional args for path parameters:

epilot customer-portal getEmailTemplatesByPortalId 123e4567-e89b-12d3-a456-426614174000

With JSONata filter:

epilot customer-portal getEmailTemplatesByPortalId -p portal_id=123e4567-e89b-12d3-a456-426614174000 --jsonata 'confirmAccount'
Sample Response
{
"confirmAccount": "5da0a718-c822-403d-9f5d-20d4584e0528",
"advancedAuth": "5da0a718-c822-403d-9f5d-20d4584e0528",
"advancedMFA": "5da0a718-c822-403d-9f5d-20d4584e0528",
"journeySignUp": "5da0a718-c822-403d-9f5d-20d4584e0528",
"journeySignInOneTimePassword": "5da0a718-c822-403d-9f5d-20d4584e0528",
"journeyLoginOTP": "5da0a718-c822-403d-9f5d-20d4584e0528",
"forgotPassword": "5da0a718-c822-403d-9f5d-20d4584e0528",
"invitation": "5da0a718-c822-403d-9f5d-20d4584e0528",
"partnerInvitation": "5da0a718-c822-403d-9f5d-20d4584e0528",
"onNewQuote": "5da0a718-c822-403d-9f5d-20d4584e0528",
"onMapAPendingUser": "5da0a718-c822-403d-9f5d-20d4584e0528",
"onDocUpload": "5da0a718-c822-403d-9f5d-20d4584e0528",
"onWorkflowStepAssigned": "5da0a718-c822-403d-9f5d-20d4584e0528",
"confirmEmailUpdate": "5da0a718-c822-403d-9f5d-20d4584e0528",
"verifyCodeToSetPassword": "5da0a718-c822-403d-9f5d-20d4584e0528"
}

upsertEmailTemplatesByPortalIdโ€‹

Upserts the email templates of a portal by portal ID

POST /v3/portal/email-templates/{portal_id}

Parameters

NameInTypeRequiredDescription
portal_idpathstringYesID of the portal

Request Body (required)

Sample Call

epilot customer-portal upsertEmailTemplatesByPortalId \
-p portal_id=123e4567-e89b-12d3-a456-426614174000

With request body:

epilot customer-portal upsertEmailTemplatesByPortalId \
-p portal_id=123e4567-e89b-12d3-a456-426614174000 \
-d '{
"confirmAccount": "5da0a718-c822-403d-9f5d-20d4584e0528",
"advancedAuth": "5da0a718-c822-403d-9f5d-20d4584e0528",
"advancedMFA": "5da0a718-c822-403d-9f5d-20d4584e0528",
"journeySignUp": "5da0a718-c822-403d-9f5d-20d4584e0528",
"journeySignInOneTimePassword": "5da0a718-c822-403d-9f5d-20d4584e0528",
"journeyLoginOTP": "5da0a718-c822-403d-9f5d-20d4584e0528",
"forgotPassword": "5da0a718-c822-403d-9f5d-20d4584e0528",
"invitation": "5da0a718-c822-403d-9f5d-20d4584e0528",
"partnerInvitation": "5da0a718-c822-403d-9f5d-20d4584e0528",
"onNewQuote": "5da0a718-c822-403d-9f5d-20d4584e0528",
"onMapAPendingUser": "5da0a718-c822-403d-9f5d-20d4584e0528",
"onDocUpload": "5da0a718-c822-403d-9f5d-20d4584e0528",
"onWorkflowStepAssigned": "5da0a718-c822-403d-9f5d-20d4584e0528",
"confirmEmailUpdate": "5da0a718-c822-403d-9f5d-20d4584e0528",
"verifyCodeToSetPassword": "5da0a718-c822-403d-9f5d-20d4584e0528"
}'

Using positional args for path parameters:

epilot customer-portal upsertEmailTemplatesByPortalId 123e4567-e89b-12d3-a456-426614174000

Using stdin pipe:

cat body.json | epilot customer-portal upsertEmailTemplatesByPortalId -p portal_id=123e4567-e89b-12d3-a456-426614174000

With JSONata filter:

epilot customer-portal upsertEmailTemplatesByPortalId -p portal_id=123e4567-e89b-12d3-a456-426614174000 --jsonata 'message'
Sample Response
{
"message": "Email Templates upserted successfully",
"emailTemplates": {
"confirmAccount": "5da0a718-c822-403d-9f5d-20d4584e0528",
"advancedAuth": "5da0a718-c822-403d-9f5d-20d4584e0528",
"advancedMFA": "5da0a718-c822-403d-9f5d-20d4584e0528",
"journeySignUp": "5da0a718-c822-403d-9f5d-20d4584e0528",
"journeySignInOneTimePassword": "5da0a718-c822-403d-9f5d-20d4584e0528",
"journeyLoginOTP": "5da0a718-c822-403d-9f5d-20d4584e0528",
"forgotPassword": "5da0a718-c822-403d-9f5d-20d4584e0528",
"invitation": "5da0a718-c822-403d-9f5d-20d4584e0528",
"partnerInvitation": "5da0a718-c822-403d-9f5d-20d4584e0528",
"onNewQuote": "5da0a718-c822-403d-9f5d-20d4584e0528",
"onMapAPendingUser": "5da0a718-c822-403d-9f5d-20d4584e0528",
"onDocUpload": "5da0a718-c822-403d-9f5d-20d4584e0528",
"onWorkflowStepAssigned": "5da0a718-c822-403d-9f5d-20d4584e0528",
"confirmEmailUpdate": "5da0a718-c822-403d-9f5d-20d4584e0528",
"verifyCodeToSetPassword": "5da0a718-c822-403d-9f5d-20d4584e0528"
}
}

getPublicPortalWidgetsโ€‹

Retrieves the public widgets of a portal

GET /v2/portal/public-widgets

Parameters

NameInTypeRequiredDescription
org_idquerystringYes
originquerystringYesOrigin of the portal

Sample Call

epilot customer-portal getPublicPortalWidgets \
-p org_id=123 \
-p origin=example

With JSONata filter:

epilot customer-portal getPublicPortalWidgets -p org_id=123 -p origin=example --jsonata 'widgets'
Sample Response
{
"widgets": [
{
"id": "string",
"type": "ACTION_WIDGET",
"listIndex": 0,
"headline": {
"en": "string",
"de": "string"
},
"subHeadline": {
"en": "string",
"de": "string"
},
"schema": "string"
},
{
"id": "string",
"type": "ACTION_WIDGET",
"listIndex": 0,
"headline": {
"en": "string",
"de": "string"
},
"subHeadline": {
"en": "string",
"de": "string"
},
"content": "string"
}
]
}

getPortalWidgetsโ€‹

Retrieves the widgets of a portal

GET /v2/portal/widgets

Parameters

NameInTypeRequiredDescription
originquerystringNoOrigin of the portal
contract_idquerystring (uuid)NoContract context for widgets

Sample Call

epilot customer-portal getPortalWidgets

With JSONata filter:

epilot customer-portal getPortalWidgets --jsonata 'widgets'
Sample Response
{
"widgets": [
{
"id": "string",
"type": "ACTION_WIDGET",
"listIndex": 0,
"headline": {
"en": "string",
"de": "string"
},
"subHeadline": {
"en": "string",
"de": "string"
},
"schema": "string"
},
{
"id": "string",
"type": "ACTION_WIDGET",
"listIndex": 0,
"headline": {
"en": "string",
"de": "string"
},
"subHeadline": {
"en": "string",
"de": "string"
},
"content": "string"
}
]
}

upsertPortalWidgetโ€‹

Upsert widget for a portal of an organization.

POST /v2/portal/widgets

Parameters

NameInTypeRequiredDescription
originquerystringYesOrigin of the portal

Request Body (required)

Sample Call

epilot customer-portal upsertPortalWidget \
-p origin=example

With request body:

epilot customer-portal upsertPortalWidget \
-p origin=example \
-d '{
"widgets": [
{
"id": "string",
"type": "ACTION_WIDGET",
"listIndex": 0,
"headline": {
"en": "string",
"de": "string"
},
"subHeadline": {
"en": "string",
"de": "string"
},
"schema": "string"
},
{
"id": "string",
"type": "ACTION_WIDGET",
"listIndex": 0,
"headline": {
"en": "string",
"de": "string"
},
"subHeadline": {
"en": "string",
"de": "string"
},
"content": "string"
}
]
}'

Using stdin pipe:

cat body.json | epilot customer-portal upsertPortalWidget -p origin=example

With JSONata filter:

epilot customer-portal upsertPortalWidget -p origin=example --jsonata 'widgets'
Sample Response
{
"widgets": [
{
"id": "string",
"type": "ACTION_WIDGET",
"listIndex": 0,
"headline": {
"en": "string",
"de": "string"
},
"subHeadline": {
"en": "string",
"de": "string"
},
"schema": "string"
},
{
"id": "string",
"type": "ACTION_WIDGET",
"listIndex": 0,
"headline": {
"en": "string",
"de": "string"
},
"subHeadline": {
"en": "string",
"de": "string"
},
"content": "string"
}
]
}

replaceECPTemplateVariablesโ€‹

Replaces the template variables of a portal

POST /v2/portal/replace-ecp-template-variables

Request Body

Sample Call

epilot customer-portal replaceECPTemplateVariables \
-d '{"template_id":"5da0a718-c822-403d-9f5d-20d4584e0528","entity_context":{}}'

Using stdin pipe:

cat body.json | epilot customer-portal replaceECPTemplateVariables

With JSONata filter:

epilot customer-portal replaceECPTemplateVariables --jsonata 'customerPortal'
Sample Response
{
"customerPortal": {
"invitationLink": "https://end-customer-portal.ecp.dev.epilot.io/register?contactId=7aa44fb8-d60e-40cc-9a3a-ba09a1ff7f51&email=john@doe.com",
"newDocumentLink": "https://end-customer-portal.ecp.dev.epilot.io/requests/opportunities/b8fef220-abe0-4382-a704-26848f60977b",
"entityLink": "https://end-customer-portal.ecp.dev.epilot.io/requests/opportunities/b8fef220-abe0-4382-a704-26848f60977b",
"userEmailsOnEntity": ["john@doe.com", "mary@doe.com"]
},
"installerPortal": {
"invitationLink": "https://installer-portal.ecp.dev.epilot.io/register?contactId=7aa44fb8-d60e-40cc-9a3a-ba09a1ff7f51&email=john@doe.com",
"newDocumentLink": "https://installer-portal.ecp.dev.epilot.io/requests/opportunities/b8fef220-abe0-4382-a704-26848f60977b",
"entityLink": "https://installer-portal.ecp.dev.epilot.io/requests/opportunities/b8fef220-abe0-4382-a704-26848f60977b",
"userEmailsOnEntity": ["peter@doe.com", "jane@doe.com"]
},
"portalUser": {
"invitationLink": "https://employee-portal.ecp.dev.epilot.io/register?contactId=7aa44fb8-d60e-40cc-9a3a-ba09a1ff7f51&email=john@doe.com",
"newDocumentLink": "https://employee-portal.ecp.dev.epilot.io/requests/opportunities/b8fef220-abe0-4382-a704-26848f60977b",
"entityLink": "https://employee-portal.ecp.dev.epilot.io/requests/opportunities/b8fef220-abe0-4382-a704-26848f60977b",
"userEmailsOnEntity": ["peter@doe.com", "jane@doe.com"]
}
}

getSchemasโ€‹

Retrieves the schemas. Only schemas usable in the private part of the portal are returned.

GET /v2/portal/schemas

Sample Call

epilot customer-portal getSchemas

With JSONata filter:

epilot customer-portal getSchemas --jsonata 'schemas'
Sample Response
{
"schemas": [
{
"slug": "contact"
}
]
}

getSchemasByDomainโ€‹

Retrieves schemas by domain. Only schemas and attributes used on public pages are returned.

GET /v2/portal/public/schemas

Parameters

NameInTypeRequiredDescription
domainquerystringYes

Sample Call

epilot customer-portal getSchemasByDomain \
-p domain=ecp.dev.epilot.io

With JSONata filter:

epilot customer-portal getSchemasByDomain -p domain=ecp.dev.epilot.io --jsonata 'schemas'
Sample Response
{
"schemas": [
{
"slug": "contact"
}
]
}

getOrganizationSettingsByDomainโ€‹

Retrieves organization settings by domain. Only public organization settings are returned.

GET /v2/portal/public/org/settings

Parameters

NameInTypeRequiredDescription
domainquerystringYes

Sample Call

epilot customer-portal getOrganizationSettingsByDomain \
-p domain=ecp.dev.epilot.io

With JSONata filter:

epilot customer-portal getOrganizationSettingsByDomain -p domain=ecp.dev.epilot.io --jsonata 'data'
Sample Response
{
"data": {
"automation_entity_mapping": {
"enabled": true
},
"automation_preview": {
"enabled": true
},
"central_inbox_preview_setting": {
"enabled": true
},
"contracts_preview_setting": {
"enabled": true
},
"disable_ivy": {
"enabled": true
},
"double_opt_in": {
"enabled": true
},
"ecommerce_catalog_preview": {
"enabled": true
},
"ecommerce_opportunities_preview": {
"enabled": true
},
"ecommerce_preview": {
"enabled": true
},
"end_customer_portal": {
"enabled": true
},
"installer_portal": {
"enabled": true
},
"entity_schema_builder": {
"enabled": true
},
"logic_editor_preview": {
"enabled": true
},
"new_navigation": {
"enabled": true
},
"partnering": {
"enabled": true
},
"product-availability": {
"enabled": true
},
"sso": {
"enabled": true
},
"submission_preview": {
"enabled": true
},
"user_roles_preview": {
"enabled": true
}
}
}

extraPermissionAttributesโ€‹

Retrieves the extra permission attributes.

GET /v2/portal/extra-permission-attributes

Sample Call

epilot customer-portal extraPermissionAttributes

With JSONata filter:

epilot customer-portal extraPermissionAttributes --jsonata 'data'
Sample Response
{
"data": {
"contact": [
{
"name": "string",
"label": "string",
"group": "string"
}
],
"contract": [
{
"name": "string",
"label": "string",
"group": "string"
}
],
"order": [
{
"name": "string",
"label": "string",
"group": "string"
}
],
"opportunity": [
{
"name": "string",
"label": "string",
"group": "string"
}
],
"meter": [
{
"name": "string",
"label": "string",
"group": "string"
}
],
"meter_counter": [
{
"name": "string",
"label": "string",
"group": "string"
}
]
}
}

validateCaaRecordsโ€‹

Validates the CAA records of a portal

POST /v2/portal/validate/caa-records

Parameters

NameInTypeRequiredDescription
originquerystringYes

Sample Call

epilot customer-portal validateCaaRecords \
-p origin=example

With JSONata filter:

epilot customer-portal validateCaaRecords -p origin=example --jsonata 'retry'
Sample Response
{
"retry": true,
"message": "string",
"isDNSConfigured": true
}

validateCaaRecordsV3โ€‹

Validates the CAA records of a portal

POST /v3/portal/validate/caa-records

Parameters

NameInTypeRequiredDescription
portal_idquerystringYesPortalId of the portal

Sample Call

epilot customer-portal validateCaaRecordsV3 \
-p portal_id=453ad7bf-86d5-46c8-8252-bcc868df5e3c

With JSONata filter:

epilot customer-portal validateCaaRecordsV3 -p portal_id=453ad7bf-86d5-46c8-8252-bcc868df5e3c --jsonata 'retry'
Sample Response
{
"retry": true,
"message": "string",
"isDNSConfigured": true
}

getContactโ€‹

Retrieves the contact of the logged in user.

GET /v2/portal/contact

Sample Call

epilot customer-portal getContact

With JSONata filter:

epilot customer-portal getContact --jsonata 'entity._title'
Sample Response
{
"entity": {
"_id": "5da0a718-c822-403d-9f5d-20d4584e0528",
"_title": "Example Entity",
"_org": "123",
"_tags": ["example", "mock"],
"_created_at": "2021-02-09T12:41:43.662Z",
"_updated_at": "2021-02-09T12:41:43.662Z",
"_schema": "contact"
},
"files": [
{
"_id": "5da0a718-c822-403d-9f5d-20d4584e0528",
"_title": "Example Entity",
"_org": "123",
"_tags": ["example", "mock"],
"_created_at": "2021-02-09T12:41:43.662Z",
"_updated_at": "2021-02-09T12:41:43.662Z",
"_schema": "file"
}
],
"relations": [
{
"_id": "5da0a718-c822-403d-9f5d-20d4584e0528",
"_title": "Example Entity",
"_org": "123",
"_tags": ["example", "mock"],
"_created_at": "2021-02-09T12:41:43.662Z",
"_updated_at": "2021-02-09T12:41:43.662Z",
"templates_output": {
"content_top_name": "Customer #123456",
"main_content_name": "Orange Flexible A2 (654321)",
"content_bottom_name": "Porscheplatz 1, 70435 Stuttgart, Germany",
"nested_content": {
"title": "Orange Flexible A2",
"subtitle": "654321"
}
},
"_schema": "contact"
}
],
"journey_actions": [
{
"journey_id": "string",
"action_label": {
"en": "string",
"de": "string"
},
"slug": "string",
"rules": [
{
"entity": "string",
"attribute": "string",
"attribute_value": "string"
}
]
}
]
}

updateContactโ€‹

Updates the contact details.

PATCH /v2/portal/contact

Request Body

Sample Call

epilot customer-portal updateContact \
-d '{}'

Using stdin pipe:

cat body.json | epilot customer-portal updateContact

With JSONata filter:

epilot customer-portal updateContact --jsonata 'data'
Sample Response
{
"data": {
"_id": "5da0a718-c822-403d-9f5d-20d4584e0528",
"_title": "Example Entity",
"_org": "123",
"_tags": ["example", "mock"],
"_created_at": "2021-02-09T12:41:43.662Z",
"_updated_at": "2021-02-09T12:41:43.662Z",
"_schema": "contact"
}
}

getECPContactโ€‹

Get the Contact by id

GET /v2/portal/ecp/contact

Parameters

NameInTypeRequiredDescription
idquerystring (uuid)Yes

Sample Call

epilot customer-portal getECPContact \
-p id=5da0a718-c822-403d-9f5d-20d4584e0528

With JSONata filter:

epilot customer-portal getECPContact -p id=5da0a718-c822-403d-9f5d-20d4584e0528 --jsonata 'data'
Sample Response
{
"data": {
"_id": "5da0a718-c822-403d-9f5d-20d4584e0528",
"_title": "Example Entity",
"_org": "123",
"_tags": ["example", "mock"],
"_created_at": "2021-02-09T12:41:43.662Z",
"_updated_at": "2021-02-09T12:41:43.662Z",
"_schema": "contact"
}
}

checkContactExistsโ€‹

True if contact with given identifiers exists.

POST /v2/portal/public/contact/exists

Parameters

NameInTypeRequiredDescription
originquerystringYesOrigin of the portal

Request Body (required)

Sample Call

epilot customer-portal checkContactExists \
-p origin=example

With request body:

epilot customer-portal checkContactExists \
-p origin=example \
-d '{
"org_id": 728,
"registration_identifiers": {
"contact": {
"email": "john.doe@example.com"
},
"contract": {
"contract_number": "123456"
}
}
}'

Using stdin pipe:

cat body.json | epilot customer-portal checkContactExists -p origin=example

With JSONata filter:

epilot customer-portal checkContactExists -p origin=example --jsonata 'exists'
Sample Response
{
"exists": true,
"contactId": "5da0a718-c822-403d-9f5d-20d4584e0528"
}

checkContactExistsV3โ€‹

True if contact with given identifiers exists.

POST /v3/portal/public/contact/exists

Parameters

NameInTypeRequiredDescription
portal_idquerystringYesPortalId of the portal

Request Body (required)

Sample Call

epilot customer-portal checkContactExistsV3 \
-p portal_id=453ad7bf-86d5-46c8-8252-bcc868df5e3c

With request body:

epilot customer-portal checkContactExistsV3 \
-p portal_id=453ad7bf-86d5-46c8-8252-bcc868df5e3c \
-d '{
"org_id": 728,
"registration_identifiers": {
"contact": {
"email": "john.doe@example.com"
},
"contract": {
"contract_number": "123456"
}
}
}'

Using stdin pipe:

cat body.json | epilot customer-portal checkContactExistsV3 -p portal_id=453ad7bf-86d5-46c8-8252-bcc868df5e3c

With JSONata filter:

epilot customer-portal checkContactExistsV3 -p portal_id=453ad7bf-86d5-46c8-8252-bcc868df5e3c --jsonata 'exists'
Sample Response
{
"exists": true,
"contactId": "5da0a718-c822-403d-9f5d-20d4584e0528"
}

getValidSecondaryAttributesโ€‹

Get valid secondary attributes that are used while mapping a contact on registration

GET /v2/portal/contact/valid/secondary/attributes

Sample Call

epilot customer-portal getValidSecondaryAttributes

With JSONata filter:

epilot customer-portal getValidSecondaryAttributes --jsonata 'data'
Sample Response
{
"data": [
{
"name": "first_name",
"type": "string"
}
]
}

getPortalUserโ€‹

Get the portal user details

GET /v2/portal/user

Sample Call

epilot customer-portal getPortalUser

With JSONata filter:

epilot customer-portal getPortalUser --jsonata 'data'
Sample Response
{
"data": {
"_id": "5da0a718-c822-403d-9f5d-20d4584e0528",
"_title": "Example Entity",
"_org": "123",
"_tags": ["example", "mock"],
"_created_at": "2021-02-09T12:41:43.662Z",
"_updated_at": "2021-02-09T12:41:43.662Z",
"_schema": "portal_user"
}
}

updatePortalUserโ€‹

Update the portal user details

PATCH /v2/portal/user

Request Body

Sample Call

epilot customer-portal updatePortalUser \
-d '{}'

Using stdin pipe:

cat body.json | epilot customer-portal updatePortalUser

With JSONata filter:

epilot customer-portal updatePortalUser --jsonata 'data'
Sample Response
{
"data": {
"_id": "5da0a718-c822-403d-9f5d-20d4584e0528",
"_title": "Example Entity",
"_org": "123",
"_tags": ["example", "mock"],
"_created_at": "2021-02-09T12:41:43.662Z",
"_updated_at": "2021-02-09T12:41:43.662Z",
"_schema": "portal_user"
}
}

deletePortalUserโ€‹

Delete the portal user

DELETE /v2/portal/user

Sample Call

epilot customer-portal deletePortalUser

With JSONata filter:

epilot customer-portal deletePortalUser --jsonata 'data'
Sample Response
{
"message": "User Succesfully Deleted",
"data": "5da0a718-c822-403d-9f5d-20d4584e0528"
}

updatePortalUserEmailโ€‹

Update portal user email

PUT /v2/portal/user/update/email

Request Body (required)

Sample Call

epilot customer-portal updatePortalUserEmail \
-d '{"email":"john@doe.com","password":"string"}'

Using stdin pipe:

cat body.json | epilot customer-portal updatePortalUserEmail

With JSONata filter:

epilot customer-portal updatePortalUserEmail --jsonata 'message'
Sample Response
{
"message": "You will receive a confirmation mail soon on your updated email address."
}

resendConfirmationEmailโ€‹

Resend confirmation email

POST /v2/portal/user/resend/confirmation-email/{id}

Parameters

NameInTypeRequiredDescription
idpathstring (uuid)YesThe ID of portal user id

Sample Call

epilot customer-portal resendConfirmationEmail \
-p id=5da0a718-c822-403d-9f5d-20d4584e0528

Using positional args for path parameters:

epilot customer-portal resendConfirmationEmail 5da0a718-c822-403d-9f5d-20d4584e0528

With JSONata filter:

epilot customer-portal resendConfirmationEmail -p id=5da0a718-c822-403d-9f5d-20d4584e0528 --jsonata 'message'
Sample Response
{
"message": "Confirmation email sent successfully."
}

fetchPortalUsersByRelatedEntityโ€‹

Get all users for a given entity

GET /v2/portal/users/by-related-entity

Parameters

NameInTypeRequiredDescription
entity_idquerystring (uuid)Yes
slugquerystringYes

Sample Call

epilot customer-portal fetchPortalUsersByRelatedEntity \
-p entity_id=5da0a718-c822-403d-9f5d-20d4584e0528 \
-p slug=contact

With JSONata filter:

epilot customer-portal fetchPortalUsersByRelatedEntity -p entity_id=5da0a718-c822-403d-9f5d-20d4584e0528 -p slug=contact --jsonata 'portalUsers'
Sample Response
{
"portalUsers": [
{
"_id": "5da0a718-c822-403d-9f5d-20d4584e0528",
"_title": "Example Entity",
"_org": "123",
"_tags": ["example", "mock"],
"_created_at": "2021-02-09T12:41:43.662Z",
"_updated_at": "2021-02-09T12:41:43.662Z",
"_schema": "portal_user"
}
]
}

confirmUserโ€‹

Confirm a portal user

GET /v2/portal/user/confirm

Parameters

NameInTypeRequiredDescription
confirmation_link_tokenquerystringYes
use_redirectquerybooleanNo

Sample Call

epilot customer-portal confirmUser \
-p confirmation_link_token=example

With JSONata filter:

epilot customer-portal confirmUser -p confirmation_link_token=example --jsonata 'confirmed'
Sample Response
{
"confirmed": true,
"user_already_confirmed": true
}

confirmUserWithUserIdโ€‹

Confirm a portal user

GET /v2/portal/user/confirm/{id}

Parameters

NameInTypeRequiredDescription
originquerystringYes
idpathstring (uuid)YesThe ID of portal user id
org_idquerystringYesOrganization ID

Sample Call

epilot customer-portal confirmUserWithUserId \
-p origin=example \
-p id=5da0a718-c822-403d-9f5d-20d4584e0528 \
-p org_id=123

Using positional args for path parameters:

epilot customer-portal confirmUserWithUserId 5da0a718-c822-403d-9f5d-20d4584e0528

With JSONata filter:

epilot customer-portal confirmUserWithUserId -p origin=example -p id=5da0a718-c822-403d-9f5d-20d4584e0528 -p org_id=123 --jsonata '$'

userExistsโ€‹

Checks whether a user exists in the portal

GET /v2/portal/public/user/exists

Parameters

NameInTypeRequiredDescription
emailquerystringYes
org_idquerystringYes
originquerystringNoCheckes if user exists in the given portal origin. If not provided, checks in all origins.

Sample Call

epilot customer-portal userExists \
-p email=user@example.com \
-p org_id=123

With JSONata filter:

epilot customer-portal userExists -p email=user@example.com -p org_id=123 --jsonata 'exists'
Sample Response
{
"exists": true
}

userExistsV3โ€‹

Checks whether a user exists in the portal

GET /v3/portal/public/user/exists

Parameters

NameInTypeRequiredDescription
emailquerystringYes
org_idquerystringYes
portal_idquerystringNoCheckes if user exists in the given portal ID. If not provided, checks in all portals.

Sample Call

epilot customer-portal userExistsV3 \
-p email=user@example.com \
-p org_id=123

With JSONata filter:

epilot customer-portal userExistsV3 -p email=user@example.com -p org_id=123 --jsonata 'exists'
Sample Response
{
"exists": true
}

getRecipientsToNotifyOnAutomationโ€‹

Get recipients to notify on automation

POST /v2/portal/recipients-to-notify

Request Body

Sample Call

epilot customer-portal getRecipientsToNotifyOnAutomation

With request body:

epilot customer-portal getRecipientsToNotifyOnAutomation \
-d '{
"emails": ["john@doe.com"],
"template_id": "5da0a718-c822-403d-9f5d-20d4584e0528",
"context_id": "5da0a718-c822-403d-9f5d-20d4584e0528"
}'

Using stdin pipe:

cat body.json | epilot customer-portal getRecipientsToNotifyOnAutomation

With JSONata filter:

epilot customer-portal getRecipientsToNotifyOnAutomation --jsonata 'recipients'
Sample Response
{
"recipients": [
{
"email": "john@doe.com",
"recipient_id": "5da0a718-c822-403d-9f5d-20d4584e0528"
}
],
"message": "string"
}

configureDistributionโ€‹

Configure the distribution for the portal's custom domain

GET /v2/portal/configure-distribution

Parameters

NameInTypeRequiredDescription
originquerystringYes

Sample Call

epilot customer-portal configureDistribution \
-p origin=example

With JSONata filter:

epilot customer-portal configureDistribution -p origin=example --jsonata 'domainName'
Sample Response
{
"domainName": "dsj8op4ha01jha23.cloudfront.net"
}

configureDistributionV3โ€‹

Configure the distribution for the portal's custom domain

GET /v3/portal/configure-distribution

Parameters

NameInTypeRequiredDescription
portal_idquerystringYes

Sample Call

epilot customer-portal configureDistributionV3 \
-p portal_id=453ad7bf-86d5-46c8-8252-bcc868df5e3c

With JSONata filter:

epilot customer-portal configureDistributionV3 -p portal_id=453ad7bf-86d5-46c8-8252-bcc868df5e3c --jsonata 'domainName'
Sample Response
{
"domainName": "dsj8op4ha01jha23.cloudfront.net"
}

getAllOrdersโ€‹

Get all orders for the portal user

GET /v2/portal/order

Parameters

NameInTypeRequiredDescription
fromquerynumberNo
sizequerynumberNo

Sample Call

epilot customer-portal getAllOrders

With JSONata filter:

epilot customer-portal getAllOrders --jsonata 'data'
Sample Response
{
"data": [
{
"_id": "5da0a718-c822-403d-9f5d-20d4584e0528",
"_title": "Example Entity",
"_org": "123",
"_tags": ["example", "mock"],
"_created_at": "2021-02-09T12:41:43.662Z",
"_updated_at": "2021-02-09T12:41:43.662Z",
"_schema": "order",
"journey_actions": {
"journey_id": "string",
"action_label": {
"en": "string",
"de": "string"
},
"slug": "string",
"rules": [
{
"entity": "string",
"attribute": "string",
"attribute_value": "string"
}
]
}
}
]
}

postOrderAcceptanceโ€‹

Accept/decline an offer by id

POST /v2/portal/order/{id}/acceptance

Parameters

NameInTypeRequiredDescription
idpathstring (uuid)YesThe ID of order

Request Body

Sample Call

epilot customer-portal postOrderAcceptance \
-p id=5da0a718-c822-403d-9f5d-20d4584e0528 \
-d '{"decision":"accept"}'

Using positional args for path parameters:

epilot customer-portal postOrderAcceptance 5da0a718-c822-403d-9f5d-20d4584e0528

Using stdin pipe:

cat body.json | epilot customer-portal postOrderAcceptance -p id=5da0a718-c822-403d-9f5d-20d4584e0528

With JSONata filter:

epilot customer-portal postOrderAcceptance -p id=5da0a718-c822-403d-9f5d-20d4584e0528 --jsonata 'data'
Sample Response
{
"data": {
"_id": "5da0a718-c822-403d-9f5d-20d4584e0528",
"_title": "Example Entity",
"_org": "123",
"_tags": ["example", "mock"],
"_created_at": "2021-02-09T12:41:43.662Z",
"_updated_at": "2021-02-09T12:41:43.662Z",
"_schema": "order"
}
}

getOrderโ€‹

Get an order by id

GET /v2/portal/order/{id}

Parameters

NameInTypeRequiredDescription
idpathstring (uuid)YesThe ID of order

Sample Call

epilot customer-portal getOrder \
-p id=5da0a718-c822-403d-9f5d-20d4584e0528

Using positional args for path parameters:

epilot customer-portal getOrder 5da0a718-c822-403d-9f5d-20d4584e0528

With JSONata filter:

epilot customer-portal getOrder -p id=5da0a718-c822-403d-9f5d-20d4584e0528 --jsonata 'entity._title'
Sample Response
{
"entity": {
"_id": "5da0a718-c822-403d-9f5d-20d4584e0528",
"_title": "Example Entity",
"_org": "123",
"_tags": ["example", "mock"],
"_created_at": "2021-02-09T12:41:43.662Z",
"_updated_at": "2021-02-09T12:41:43.662Z",
"_schema": "order"
},
"files": [
{
"_id": "5da0a718-c822-403d-9f5d-20d4584e0528",
"_title": "Example Entity",
"_org": "123",
"_tags": ["example", "mock"],
"_created_at": "2021-02-09T12:41:43.662Z",
"_updated_at": "2021-02-09T12:41:43.662Z",
"_schema": "file"
}
],
"relations": [
{
"_id": "5da0a718-c822-403d-9f5d-20d4584e0528",
"_title": "Example Entity",
"_org": "123",
"_tags": ["example", "mock"],
"_created_at": "2021-02-09T12:41:43.662Z",
"_updated_at": "2021-02-09T12:41:43.662Z",
"templates_output": {},
"_schema": "contact"
}
],
"products": [
{
"_id": "5da0a718-c822-403d-9f5d-20d4584e0528",
"_title": "Example Entity",
"_org": "123",
"_tags": ["example", "mock"],
"_created_at": "2021-02-09T12:41:43.662Z",
"_updated_at": "2021-02-09T12:41:43.662Z",
"_schema": "product"
}
],
"crossSellableProducts": [
{
"_id": "5da0a718-c822-403d-9f5d-20d4584e0528",
"_title": "Example Entity",
"_org": "123",
"_tags": ["example", "mock"],
"_created_at": "2021-02-09T12:41:43.662Z",
"_updated_at": "2021-02-09T12:41:43.662Z",
"_schema": "product"
}
],
"workflow": [
{
"id": "8gja72h6kas6h",
"name": "Lead Qualification",
"trigger": "MANUAL",
"status": "STARTED",
"creationTime": "2021-04-27T12:01:13.000Z",
"lastUpdateTime": "2021-04-27T12:01:13.000Z",
"dueDate": "2021-04-27T12:01:13.000Z",
"assignedTo": ["252", "29052"],
"flow": []
}
],
"journey_actions": [
{
"journey_id": "string",
"action_label": {},
"slug": "string",
"rules": []
}
]
}

updateOrderโ€‹

Update an order by id

PATCH /v2/portal/order/{id}

Parameters

NameInTypeRequiredDescription
idpathstring (uuid)YesThe ID of order

Request Body

Sample Call

epilot customer-portal updateOrder \
-p id=5da0a718-c822-403d-9f5d-20d4584e0528 \
-d '{}'

Using positional args for path parameters:

epilot customer-portal updateOrder 5da0a718-c822-403d-9f5d-20d4584e0528

Using stdin pipe:

cat body.json | epilot customer-portal updateOrder -p id=5da0a718-c822-403d-9f5d-20d4584e0528

With JSONata filter:

epilot customer-portal updateOrder -p id=5da0a718-c822-403d-9f5d-20d4584e0528 --jsonata 'data'
Sample Response
{
"data": {
"_id": "5da0a718-c822-403d-9f5d-20d4584e0528",
"_title": "Example Entity",
"_org": "123",
"_tags": ["example", "mock"],
"_created_at": "2021-02-09T12:41:43.662Z",
"_updated_at": "2021-02-09T12:41:43.662Z",
"_schema": "order"
}
}

getAllOpportunitiesโ€‹

Get all opportunities of a portal user

GET /v2/portal/opportunity

Parameters

NameInTypeRequiredDescription
fromquerynumberNo
sizequerynumberNo

Sample Call

epilot customer-portal getAllOpportunities

With JSONata filter:

epilot customer-portal getAllOpportunities --jsonata 'data'
Sample Response
{
"data": [
{
"_id": "5da0a718-c822-403d-9f5d-20d4584e0528",
"_title": "Example Entity",
"_org": "123",
"_tags": ["example", "mock"],
"_created_at": "2021-02-09T12:41:43.662Z",
"_updated_at": "2021-02-09T12:41:43.662Z",
"_schema": "opportunity",
"journey_actions": {
"journey_id": "string",
"action_label": {
"en": "string",
"de": "string"
},
"slug": "string",
"rules": [
{
"entity": "string",
"attribute": "string",
"attribute_value": "string"
}
]
}
}
]
}

getSearchableAttributesForOpportunitiesโ€‹

Get all opportunity searchable attributes for a portal user

GET /v2/portal/opportunities/searchable-attributes

Parameters

NameInTypeRequiredDescription
fromquerynumberNo
sizequerynumberNo

Sample Call

epilot customer-portal getSearchableAttributesForOpportunities

With JSONata filter:

epilot customer-portal getSearchableAttributesForOpportunities --jsonata 'data'
Sample Response
{
"data": [
{
"_id": "5da0a718-c822-403d-9f5d-20d4584e0528",
"_title": "Example Entity",
"_org": "123",
"_tags": ["example", "mock"],
"_created_at": "2021-02-09T12:41:43.662Z",
"_updated_at": "2021-02-09T12:41:43.662Z",
"_schema": "opportunity"
}
]
}

getSearchResultsForOpportunitiesโ€‹

Get all opportunity with the given serached attributes

POST /v2/portal/opportunities/search

Parameters

NameInTypeRequiredDescription
fromquerynumberNo
sizequerynumberNo

Request Body (required)

Sample Call

epilot customer-portal getSearchResultsForOpportunities \
-d '{"addresses":["string"],"customers":["string"],"purposes":["5da0a718-c822-403d-9f5d-20d4584e0528"],"workflows":[{}]}'

Using stdin pipe:

cat body.json | epilot customer-portal getSearchResultsForOpportunities

With JSONata filter:

epilot customer-portal getSearchResultsForOpportunities --jsonata 'data'
Sample Response
{
"data": [
{
"_id": "5da0a718-c822-403d-9f5d-20d4584e0528",
"_title": "Example Entity",
"_org": "123",
"_tags": ["example", "mock"],
"_created_at": "2021-02-09T12:41:43.662Z",
"_updated_at": "2021-02-09T12:41:43.662Z",
"_schema": "opportunity"
}
]
}

getOpportunityโ€‹

Get an opportunity by id

GET /v2/portal/opportunities/{id}

Parameters

NameInTypeRequiredDescription
idpathstring (uuid)YesThe ID of opportunity

Sample Call

epilot customer-portal getOpportunity \
-p id=5da0a718-c822-403d-9f5d-20d4584e0528

Using positional args for path parameters:

epilot customer-portal getOpportunity 5da0a718-c822-403d-9f5d-20d4584e0528

With JSONata filter:

epilot customer-portal getOpportunity -p id=5da0a718-c822-403d-9f5d-20d4584e0528 --jsonata 'entity._title'
Sample Response
{
"entity": {
"_id": "5da0a718-c822-403d-9f5d-20d4584e0528",
"_title": "Example Entity",
"_org": "123",
"_tags": ["example", "mock"],
"_created_at": "2021-02-09T12:41:43.662Z",
"_updated_at": "2021-02-09T12:41:43.662Z",
"_schema": "opportunity"
},
"orders": [
{
"_id": "5da0a718-c822-403d-9f5d-20d4584e0528",
"_title": "Example Entity",
"_org": "123",
"_tags": ["example", "mock"],
"_created_at": "2021-02-09T12:41:43.662Z",
"_updated_at": "2021-02-09T12:41:43.662Z",
"_schema": "order"
}
],
"files": [
{
"_id": "5da0a718-c822-403d-9f5d-20d4584e0528",
"_title": "Example Entity",
"_org": "123",
"_tags": ["example", "mock"],
"_created_at": "2021-02-09T12:41:43.662Z",
"_updated_at": "2021-02-09T12:41:43.662Z",
"_schema": "file"
}
],
"relations": [
{
"_id": "5da0a718-c822-403d-9f5d-20d4584e0528",
"_title": "Example Entity",
"_org": "123",
"_tags": ["example", "mock"],
"_created_at": "2021-02-09T12:41:43.662Z",
"_updated_at": "2021-02-09T12:41:43.662Z",
"templates_output": {},
"_schema": "contact"
}
],
"workflow": [
{
"id": "8gja72h6kas6h",
"name": "Lead Qualification",
"trigger": "MANUAL",
"status": "STARTED",
"creationTime": "2021-04-27T12:01:13.000Z",
"lastUpdateTime": "2021-04-27T12:01:13.000Z",
"dueDate": "2021-04-27T12:01:13.000Z",
"assignedTo": ["252", "29052"],
"flow": []
}
],
"journey_actions": [
{
"journey_id": "string",
"action_label": {},
"slug": "string",
"rules": []
}
]
}

updateOpportunityโ€‹

Update an opportunity by id

PATCH /v2/portal/opportunities/{id}

Parameters

NameInTypeRequiredDescription
idpathstring (uuid)YesThe ID of opportunity

Request Body (required)

Sample Call

epilot customer-portal updateOpportunity \
-p id=5da0a718-c822-403d-9f5d-20d4584e0528 \
-d '{}'

Using positional args for path parameters:

epilot customer-portal updateOpportunity 5da0a718-c822-403d-9f5d-20d4584e0528

Using stdin pipe:

cat body.json | epilot customer-portal updateOpportunity -p id=5da0a718-c822-403d-9f5d-20d4584e0528

With JSONata filter:

epilot customer-portal updateOpportunity -p id=5da0a718-c822-403d-9f5d-20d4584e0528 --jsonata 'data'
Sample Response
{
"data": {
"_id": "5da0a718-c822-403d-9f5d-20d4584e0528",
"_title": "Example Entity",
"_org": "123",
"_tags": ["example", "mock"],
"_created_at": "2021-02-09T12:41:43.662Z",
"_updated_at": "2021-02-09T12:41:43.662Z",
"_schema": "opportunity"
}
}

getAllRequestsโ€‹

Get all opportunities & orders of a portal user

GET /v2/portal/request

Parameters

NameInTypeRequiredDescription
fromquerynumberNo
sizequerynumberNo

Sample Call

epilot customer-portal getAllRequests

With JSONata filter:

epilot customer-portal getAllRequests --jsonata 'results[0]'
Sample Response
{
"hits": 1,
"results": [
{
"_id": "5da0a718-c822-403d-9f5d-20d4584e0528",
"_title": "Example Entity",
"_org": "123",
"_tags": ["example", "mock"],
"_created_at": "2021-02-09T12:41:43.662Z",
"_updated_at": "2021-02-09T12:41:43.662Z",
"_schema": "opportunity"
}
]
}

getAllContractsโ€‹

Get all contracts for a portal user

GET /v2/portal/contract

Parameters

NameInTypeRequiredDescription
fromquerynumberNo
sizequerynumberNo

Sample Call

epilot customer-portal getAllContracts

With JSONata filter:

epilot customer-portal getAllContracts --jsonata 'data'
Sample Response
{
"data": [
{
"_id": "5da0a718-c822-403d-9f5d-20d4584e0528",
"_title": "Example Entity",
"_org": "123",
"_tags": ["example", "mock"],
"_created_at": "2021-02-09T12:41:43.662Z",
"_updated_at": "2021-02-09T12:41:43.662Z",
"contract_name": "Grid Contract",
"contract_number": "12345",
"status": "approved",
"description": "This contract is for the supply of widgets.",
"account_number": "67890",
"branch": "power",
"billing_address": "123 Main St, Anytown",
"delivery_address": "456 Elm St, Anytown",
"additional_addresses": "789 Oak St, Anytown",
"termination_date": "2022-01-01",
"termination_reason": "Non-payment",
"billing_period": "monthly",
"billing_duration_amount": 30,
"renewal_duration_amount": 365,
"renewal_duration_unit": "years",
"notice_time_amount": 30,
"notice_time_unit": "months",
"start_date": "2021-01-01",
"billing_due_day": 2,
"installment_amount": 10050,
"balance": 8990,
"balance_currency": "EUR",
"journey_actions": {
"journey_id": "string",
"action_label": {
"en": "string",
"de": "string"
},
"slug": "string",
"rules": [
{
"entity": "string",
"attribute": "string",
"attribute_value": "string"
}
]
}
}
]
}

getContractโ€‹

Get a contract by id

GET /v2/portal/contract/{id}

Parameters

NameInTypeRequiredDescription
idpathstring (uuid)YesThe ID of the contract

Sample Call

epilot customer-portal getContract \
-p id=5da0a718-c822-403d-9f5d-20d4584e0528

Using positional args for path parameters:

epilot customer-portal getContract 5da0a718-c822-403d-9f5d-20d4584e0528

With JSONata filter:

epilot customer-portal getContract -p id=5da0a718-c822-403d-9f5d-20d4584e0528 --jsonata 'entity._title'
Sample Response
{
"entity": {
"_id": "5da0a718-c822-403d-9f5d-20d4584e0528",
"_title": "Example Entity",
"_org": "123",
"_tags": ["example", "mock"],
"_created_at": "2021-02-09T12:41:43.662Z",
"_updated_at": "2021-02-09T12:41:43.662Z",
"contract_name": "Grid Contract",
"contract_number": "12345",
"status": "approved",
"description": "This contract is for the supply of widgets.",
"account_number": "67890",
"branch": "power",
"billing_address": "123 Main St, Anytown",
"delivery_address": "456 Elm St, Anytown",
"additional_addresses": "789 Oak St, Anytown",
"termination_date": "2022-01-01",
"termination_reason": "Non-payment",
"billing_period": "monthly",
"billing_duration_amount": 30,
"renewal_duration_amount": 365,
"renewal_duration_unit": "years",
"notice_time_amount": 30,
"notice_time_unit": "months",
"start_date": "2021-01-01",
"billing_due_day": 2,
"installment_amount": 10050,
"balance": 8990,
"balance_currency": "EUR"
},
"orders": [
{
"_id": "5da0a718-c822-403d-9f5d-20d4584e0528",
"_title": "Example Entity",
"_org": "123",
"_tags": ["example", "mock"],
"_created_at": "2021-02-09T12:41:43.662Z",
"_updated_at": "2021-02-09T12:41:43.662Z",
"_schema": "order"
}
],
"meters": [
{
"_id": "5da0a718-c822-403d-9f5d-20d4584e0528",
"_title": "Example Entity",
"_org": "123",
"_tags": ["example", "mock"],
"_created_at": "2021-02-09T12:41:43.662Z",
"_updated_at": "2021-02-09T12:41:43.662Z",
"_schema": "meter"
}
],
"files": [
{
"_id": "5da0a718-c822-403d-9f5d-20d4584e0528",
"_title": "Example Entity",
"_org": "123",
"_tags": ["example", "mock"],
"_created_at": "2021-02-09T12:41:43.662Z",
"_updated_at": "2021-02-09T12:41:43.662Z",
"_schema": "file"
}
],
"relations": [
{
"_id": "5da0a718-c822-403d-9f5d-20d4584e0528",
"_title": "Example Entity",
"_org": "123",
"_tags": ["example", "mock"],
"_created_at": "2021-02-09T12:41:43.662Z",
"_updated_at": "2021-02-09T12:41:43.662Z",
"templates_output": {},
"_schema": "contact"
}
],
"workflow": [
{
"id": "8gja72h6kas6h",
"name": "Lead Qualification",
"trigger": "MANUAL",
"status": "STARTED",
"creationTime": "2021-04-27T12:01:13.000Z",
"lastUpdateTime": "2021-04-27T12:01:13.000Z",
"dueDate": "2021-04-27T12:01:13.000Z",
"assignedTo": ["252", "29052"],
"flow": []
}
],
"journey_actions": [
{
"journey_id": "string",
"action_label": {},
"slug": "string",
"rules": []
}
]
}

updateContractโ€‹

Update a contract by id

PATCH /v2/portal/contract/{id}

Parameters

NameInTypeRequiredDescription
idpathstring (uuid)YesThe ID of the contract

Request Body (required)

Sample Call

epilot customer-portal updateContract \
-p id=5da0a718-c822-403d-9f5d-20d4584e0528 \
-d '{}'

Using positional args for path parameters:

epilot customer-portal updateContract 5da0a718-c822-403d-9f5d-20d4584e0528

Using stdin pipe:

cat body.json | epilot customer-portal updateContract -p id=5da0a718-c822-403d-9f5d-20d4584e0528

With JSONata filter:

epilot customer-portal updateContract -p id=5da0a718-c822-403d-9f5d-20d4584e0528 --jsonata 'data'
Sample Response
{
"data": {
"_id": "5da0a718-c822-403d-9f5d-20d4584e0528",
"_title": "Example Entity",
"_org": "123",
"_tags": ["example", "mock"],
"_created_at": "2021-02-09T12:41:43.662Z",
"_updated_at": "2021-02-09T12:41:43.662Z",
"contract_name": "Grid Contract",
"contract_number": "12345",
"status": "approved",
"description": "This contract is for the supply of widgets.",
"account_number": "67890",
"branch": "power",
"billing_address": "123 Main St, Anytown",
"delivery_address": "456 Elm St, Anytown",
"additional_addresses": "789 Oak St, Anytown",
"termination_date": "2022-01-01",
"termination_reason": "Non-payment",
"billing_period": "monthly",
"billing_duration_amount": 30,
"renewal_duration_amount": 365,
"renewal_duration_unit": "years",
"notice_time_amount": 30,
"notice_time_unit": "months",
"start_date": "2021-01-01",
"billing_due_day": 2,
"installment_amount": 10050,
"balance": 8990,
"balance_currency": "EUR"
}
}

addContractByIdentifiersโ€‹

Self-assign contract(s) by pre-configured identifiers.

POST /v2/portal/contract/by-identifiers

Request Body (required)

Sample Call

epilot customer-portal addContractByIdentifiers \
-d '{"contract":{"contract_number":"123456"},"meter":{"meter_number":"123456"}}'

Using stdin pipe:

cat body.json | epilot customer-portal addContractByIdentifiers

With JSONata filter:

epilot customer-portal addContractByIdentifiers --jsonata 'data'
Sample Response
{
"data": [
{
"_id": "5da0a718-c822-403d-9f5d-20d4584e0528",
"_title": "Example Entity",
"_org": "123",
"_tags": ["example", "mock"],
"_created_at": "2021-02-09T12:41:43.662Z",
"_updated_at": "2021-02-09T12:41:43.662Z",
"templates_output": {
"content_top_name": "Customer #123456",
"main_content_name": "Orange Flexible A2 (654321)",
"content_bottom_name": "Porscheplatz 1, 70435 Stuttgart, Germany",
"nested_content": {
"title": "Orange Flexible A2",
"subtitle": "654321"
}
},
"_schema": "contact"
}
],
"hits": 0
}

getEntityIdentifiersโ€‹

Retrieve a list of entity identifiers used for entity search by portal users.

GET /v2/portal/entity/identifiers/{slug}

Parameters

NameInTypeRequiredDescription
slugpathstringYesThe slug of an entity

Sample Call

epilot customer-portal getEntityIdentifiers \
-p slug=contact

Using positional args for path parameters:

epilot customer-portal getEntityIdentifiers contact

With JSONata filter:

epilot customer-portal getEntityIdentifiers -p slug=contact --jsonata 'data'
Sample Response
{
"data": [
{
"name": "contract_number",
"type": "string"
}
]
}

getEntityActivityFeedโ€‹

Get activity feed for an entity

GET /v2/portal/entity/{slug}/{id}/activity

Parameters

NameInTypeRequiredDescription
slugpathstringYesEntity Type
idpathstring (uuid)YesEntity id
afterquerystring (date-time)NoGet activities after this timestamp
beforequerystring (date-time)Noget activities before this timestamp
fromquerynumberNostart from page
sizequerynumberNomax number of results to return
typequerystringNoFilter by activity type
include_relationsquerybooleanNoInclude activities from related entities

Sample Call

epilot customer-portal getEntityActivityFeed \
-p slug=contact \
-p id=5da0a718-c822-403d-9f5d-20d4584e0528

Using positional args for path parameters:

epilot customer-portal getEntityActivityFeed contact 5da0a718-c822-403d-9f5d-20d4584e0528

With JSONata filter:

epilot customer-portal getEntityActivityFeed -p slug=contact -p id=5da0a718-c822-403d-9f5d-20d4584e0528 --jsonata 'results[0]'
Sample Response
{
"total": 1,
"results": [
{
"_id": "01F130Q52Q6MWSNS8N2AVXV4JN",
"timestamp": "1970-01-01T00:00:00.000Z",
"type": "MyCustomActivity",
"title": "My custom activity",
"message": "{{caller}} did something with {{entity payload.entity.id}}.",
"payload": {
"entity": {
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"schema": "contact"
}
}
}
]
}

validateCadenceEntityEditRulesโ€‹

Validate if cadence rule is valid for an entity

GET /v2/portal/{slug}/{id}:validateRule

Parameters

NameInTypeRequiredDescription
slugpathstringYesEntity Type
idpathstring (uuid)YesEntity id
attributequerystringNoGet activities after this timestamp

Sample Call

epilot customer-portal validateCadenceEntityEditRules \
-p slug=contact \
-p id=5da0a718-c822-403d-9f5d-20d4584e0528

Using positional args for path parameters:

epilot customer-portal validateCadenceEntityEditRules contact 5da0a718-c822-403d-9f5d-20d4584e0528

With JSONata filter:

epilot customer-portal validateCadenceEntityEditRules -p slug=contact -p id=5da0a718-c822-403d-9f5d-20d4584e0528 --jsonata 'isBlockedByRules'
Sample Response
{
"isBlockedByRules": false,
"failedRule": {
"slug": "contact",
"attribute": "string",
"rule_type": "string",
"cadence_period_type": "string",
"changes_allowed": 0,
"cadence_period": 0,
"allowed_decrement": "string",
"allowed_increment": "string",
"number_of_days_before_restriction": 0,
"grace_period": 0
}
}

searchPaymentRelationsInEntitiesโ€‹

Search for entities that have the payment relation with the given payment id

GET /v2/portal/entities-by-payment/{id}

Parameters

NameInTypeRequiredDescription
idpathstring (uuid)YesEntity id

Sample Call

epilot customer-portal searchPaymentRelationsInEntities \
-p id=5da0a718-c822-403d-9f5d-20d4584e0528

Using positional args for path parameters:

epilot customer-portal searchPaymentRelationsInEntities 5da0a718-c822-403d-9f5d-20d4584e0528

With JSONata filter:

epilot customer-portal searchPaymentRelationsInEntities -p id=5da0a718-c822-403d-9f5d-20d4584e0528 --jsonata 'results[0]'
Sample Response
{
"results": [
{
"_id": "5da0a718-c822-403d-9f5d-20d4584e0528",
"_title": "Example Entity",
"_org": "123",
"_tags": ["example", "mock"],
"_created_at": "2021-02-09T12:41:43.662Z",
"_updated_at": "2021-02-09T12:41:43.662Z",
"templates_output": {
"content_top_name": "Customer #123456",
"main_content_name": "Orange Flexible A2 (654321)",
"content_bottom_name": "Porscheplatz 1, 70435 Stuttgart, Germany",
"nested_content": {
"title": "Orange Flexible A2",
"subtitle": "654321"
}
},
"_schema": "contact"
}
],
"hits": 50
}

createCustomEntityActivityโ€‹

Create a custom activity that can be displayed in activity feed of an entity.

PUT /v2/portal/entity/activity

Parameters

NameInTypeRequiredDescription
entitiesquerystring (uuid)[]NoComma-separated list of entities which the activity primarily concerns. Deprecated - ignored as the list of entities is automatically determined now.

Request Body

Sample Call

epilot customer-portal createCustomEntityActivity \
-d '{"type":"PortalUserResetPassword"}'

Using stdin pipe:

cat body.json | epilot customer-portal createCustomEntityActivity

With JSONata filter:

epilot customer-portal createCustomEntityActivity --jsonata '$'
Sample Response
{
"_id": "01F130Q52Q6MWSNS8N2AVXV4JN",
"timestamp": "1970-01-01T00:00:00.000Z",
"type": "MyCustomActivity",
"title": "My custom activity",
"message": "{{caller}} did something with {{entity payload.entity.id}}.",
"payload": {
"entity": {
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"schema": "contact"
}
}
}

saveEntityFileโ€‹

Add files to an entity

POST /v2/portal/entity/file

Request Body (required)

Sample Call

epilot customer-portal saveEntityFile

With request body:

epilot customer-portal saveEntityFile \
-d '{
"entity_id": "5da0a718-c822-403d-9f5d-20d4584e0528",
"entity_type": "order",
"files": [
{
"filename": "document.pdf",
"access_control": "private",
"s3ref": {
"bucket": 12345,
"key": 12345
}
}
]
}'

Using stdin pipe:

cat body.json | epilot customer-portal saveEntityFile

With JSONata filter:

epilot customer-portal saveEntityFile --jsonata 'createdFiles'
Sample Response
{
"createdFiles": [
{
"_id": "5da0a718-c822-403d-9f5d-20d4584e0528",
"_title": "Example Entity",
"_org": "123",
"_tags": ["example", "mock"],
"_created_at": "2021-02-09T12:41:43.662Z",
"_updated_at": "2021-02-09T12:41:43.662Z",
"_schema": "file"
}
]
}

deleteEntityFileโ€‹

Delete files from an entity

DELETE /v2/portal/entity/file

Request Body (required)

Sample Call

epilot customer-portal deleteEntityFile

With request body:

epilot customer-portal deleteEntityFile \
-d '{
"entity_id": "5da0a718-c822-403d-9f5d-20d4584e0528",
"entity_type": "order",
"file_entity_ids": ["5da0a718-c822-403d-9f5d-20d4584e0528"]
}'

Using stdin pipe:

cat body.json | epilot customer-portal deleteEntityFile

With JSONata filter:

epilot customer-portal deleteEntityFile --jsonata '$'

savePortalFilesโ€‹

Add files to portal

POST /v2/portal/portal/files

Request Body (required)

Sample Call

epilot customer-portal savePortalFiles

With request body:

epilot customer-portal savePortalFiles \
-d '{
"origin": "string",
"files": [
{
"filename": 12345,
"file_type": "orderRightTeaser",
"_tags": 12345,
"s3ref": {
"bucket": 12345,
"key": 12345
}
}
]
}'

Using stdin pipe:

cat body.json | epilot customer-portal savePortalFiles

With JSONata filter:

epilot customer-portal savePortalFiles --jsonata 'createdFiles'
Sample Response
{
"createdFiles": [
{
"_id": "5da0a718-c822-403d-9f5d-20d4584e0528",
"_title": "Example Entity",
"_org": "123",
"_tags": ["example", "mock"],
"_created_at": "2021-02-09T12:41:43.662Z",
"_updated_at": "2021-02-09T12:41:43.662Z",
"_schema": "file"
}
]
}

getRegistrationIdentifiersโ€‹

Get valid attributes from entities that can be used as identifier to map contact to user on registration

GET /v2/portal/registration/identifiers

Sample Call

epilot customer-portal getRegistrationIdentifiers

With JSONata filter:

epilot customer-portal getRegistrationIdentifiers --jsonata 'data'
Sample Response
{
"data": {
"contact": [
{
"label": "First name",
"name": "first_name",
"type": "string"
}
],
"contract": [
{
"label": "Contract number",
"name": "contract_number",
"type": "string"
}
]
}
}

getFileByIdโ€‹

Fetch a document with ID

GET /v2/portal/user/file/{id}

Parameters

NameInTypeRequiredDescription
idpathstring (uuid)YesThe Id of a file

Sample Call

epilot customer-portal getFileById \
-p id=5da0a718-c822-403d-9f5d-20d4584e0528

Using positional args for path parameters:

epilot customer-portal getFileById 5da0a718-c822-403d-9f5d-20d4584e0528

With JSONata filter:

epilot customer-portal getFileById -p id=5da0a718-c822-403d-9f5d-20d4584e0528 --jsonata 'file'
Sample Response
{
"file": {
"_id": "5da0a718-c822-403d-9f5d-20d4584e0528",
"_title": "Example Entity",
"_org": "123",
"_tags": ["example", "mock"],
"_created_at": "2021-02-09T12:41:43.662Z",
"_updated_at": "2021-02-09T12:41:43.662Z",
"_schema": "file",
"filename": "document.pdf",
"access_control": "private",
"file_date": "2021-02-09T12:41:43.662Z",
"public_url": "https://epilot-files-prod.s3.eu-central-1.amazonaws.com/123/4d689aeb-1497-4410-a9fe-b36ca9ac4389/document.pdf",
"type": "document",
"mime_type": "application/pdf",
"_relations": [
{
"entity_id": "5da0a718-c822-403d-9f5d-20d4584e0528",
"_schema": "contact",
"_title": "Opportunity ABC"
}
],
"is_new": true
}
}

trackFileDownloadedโ€‹

Track that user has downloaded a file

POST /v2/portal/user/file/{id}/downloaded

Parameters

NameInTypeRequiredDescription
idpathstring (uuid)YesThe Id of a file

Sample Call

epilot customer-portal trackFileDownloaded \
-p id=5da0a718-c822-403d-9f5d-20d4584e0528

Using positional args for path parameters:

epilot customer-portal trackFileDownloaded 5da0a718-c822-403d-9f5d-20d4584e0528

With JSONata filter:

epilot customer-portal trackFileDownloaded -p id=5da0a718-c822-403d-9f5d-20d4584e0528 --jsonata 'file'
Sample Response
{
"file": {
"_id": "5da0a718-c822-403d-9f5d-20d4584e0528",
"_title": "Example Entity",
"_org": "123",
"_tags": ["example", "mock"],
"_created_at": "2021-02-09T12:41:43.662Z",
"_updated_at": "2021-02-09T12:41:43.662Z",
"_schema": "file",
"filename": "document.pdf",
"access_control": "private",
"file_date": "2021-02-09T12:41:43.662Z",
"public_url": "https://epilot-files-prod.s3.eu-central-1.amazonaws.com/123/4d689aeb-1497-4410-a9fe-b36ca9ac4389/document.pdf",
"type": "document",
"mime_type": "application/pdf",
"_relations": [
{
"entity_id": "5da0a718-c822-403d-9f5d-20d4584e0528",
"_schema": "contact",
"_title": "Opportunity ABC"
}
],
"is_new": true
}
}

getBillingEventsโ€‹

Fetch billing events for a portal user

GET /v2/portal/billing/events

Parameters

NameInTypeRequiredDescription
fromquerynumberNo
sizequerynumberNo
entity_idquerystring (uuid)[]NoEntity ID to filter billing events by
event_typequery"installment" | "reimbursement"No
paidquerybooleanNo
date_afterquerystring (date-time)No
date_beforequerystring (date-time)No
sortquerystringNo

Sample Call

epilot customer-portal getBillingEvents

With JSONata filter:

epilot customer-portal getBillingEvents --jsonata 'results[0]'
Sample Response
{
"results": [
{
"billing_amount_decimal": "100.50",
"billing_amount": 10050,
"billing_currency": "EUR",
"external_id": "d4fb2a4e-3f74-4fc4-8fba-6fdaaaa3b08e",
"contract": {
"$relation": [
{
"entity_id": "f589786b-3024-43cd-9cb3-5a3c953f2896"
}
]
},
"_id": "5da0a718-c822-403d-9f5d-20d4584e0528",
"_title": "Example Entity",
"_org": "123",
"_tags": ["example", "mock"],
"_created_at": "2021-02-09T12:41:43.662Z",
"_updated_at": "2021-02-09T12:41:43.662Z",
"type": "installment",
"due_date": "1970-01-01",
"paid_date": "1970-01-01"
}
],
"hits": 50
}

getCustomerBalanceโ€‹

Get total balance across all contracts and orders of a customer entity.

GET /v2/portal/billing/customers/balance

Sample Call

epilot customer-portal getCustomerBalance

With JSONata filter:

epilot customer-portal getCustomerBalance --jsonata 'balance'
Sample Response
{
"balance": 8990,
"balance_decimal": "89.90",
"balance_currency": "EUR"
}

getBillingAccountโ€‹

Get a billing account by id.

GET /v2/portal/billing/accounts/{id}

Parameters

NameInTypeRequiredDescription
idpathstring (uuid)Yes

Sample Call

epilot customer-portal getBillingAccount \
-p id=5da0a718-c822-403d-9f5d-20d4584e0528

Using positional args for path parameters:

epilot customer-portal getBillingAccount 5da0a718-c822-403d-9f5d-20d4584e0528

With JSONata filter:

epilot customer-portal getBillingAccount -p id=5da0a718-c822-403d-9f5d-20d4584e0528 --jsonata 'entity._title'
Sample Response
{
"entity": {
"billing_account_number": "string",
"balance": 0,
"balance_decimal": "string",
"balance_currency": "EUR",
"billing_contact": {
"$relation": [
{
"entity_id": "f589786b-3024-43cd-9cb3-5a3c953f2896"
}
]
},
"billing_address": {
"$relation_ref": [
{
"entity_id": "f589786b-3024-43cd-9cb3-5a3c953f2896",
"path": "address",
"_id": "f589786b-3024-43cd-9cb3-5a3c953f2896"
}
]
},
"_id": "5da0a718-c822-403d-9f5d-20d4584e0528",
"_title": "Example Entity",
"_org": "123",
"_tags": ["example", "mock"],
"_created_at": "2021-02-09T12:41:43.662Z",
"_updated_at": "2021-02-09T12:41:43.662Z"
},
"relations": [
{
"_id": "5da0a718-c822-403d-9f5d-20d4584e0528",
"_title": "Example Entity",
"_org": "123",
"_tags": ["example", "mock"],
"_created_at": "2021-02-09T12:41:43.662Z",
"_updated_at": "2021-02-09T12:41:43.662Z",
"templates_output": {
"content_top_name": "Customer #123456",
"main_content_name": "Orange Flexible A2 (654321)",
"content_bottom_name": "Porscheplatz 1, 70435 Stuttgart, Germany",
"nested_content": {
"title": "Orange Flexible A2",
"subtitle": "654321"
}
},
"_schema": "contact"
}
]
}

loginToPortalAsUserโ€‹

Generate a token to log in to a portal impersonating a users.

POST /v2/portal/admin:login-as-user

Request Body (required)

Sample Call

epilot customer-portal loginToPortalAsUser \
-d '{"email":"portal-customer@email.com","origin":"string"}'

Using stdin pipe:

cat body.json | epilot customer-portal loginToPortalAsUser

With JSONata filter:

epilot customer-portal loginToPortalAsUser --jsonata 'login_as_token'
Sample Response
{
"login_as_token": "string"
}

triggerEntityAccessEventโ€‹

Trigger entity access event for a portal user

POST /v2/portal/entity/{schema}/access

Parameters

NameInTypeRequiredDescription
schemapathstringYesEntity schema
entity_idquerystring (uuid)NoEntity ID
originquerystringYesPortal origin

Sample Call

epilot customer-portal triggerEntityAccessEvent \
-p schema=contract \
-p origin=example

Using positional args for path parameters:

epilot customer-portal triggerEntityAccessEvent contract

With JSONata filter:

epilot customer-portal triggerEntityAccessEvent -p schema=contract -p origin=example --jsonata 'eventId'
Sample Response
{
"eventId": "string"
}

triggerEntityAccessEventV3โ€‹

Trigger entity access event for a portal user

POST /v3/portal/entity/{schema}/access

Parameters

NameInTypeRequiredDescription
schemapathstringYesEntity schema
entity_idquerystring (uuid)NoEntity ID
portal_idquerystringYesPortal ID

Sample Call

epilot customer-portal triggerEntityAccessEventV3 \
-p schema=contract \
-p portal_id=453ad7bf-86d5-46c8-8252-bcc868df5e3c

Using positional args for path parameters:

epilot customer-portal triggerEntityAccessEventV3 contract

With JSONata filter:

epilot customer-portal triggerEntityAccessEventV3 -p schema=contract -p portal_id=453ad7bf-86d5-46c8-8252-bcc868df5e3c --jsonata 'eventId'
Sample Response
{
"eventId": "string"
}

getPortalUserEntityโ€‹

Get a single entity for a portal user

POST /v2/portal/entity:get

Request Body

Sample Call

epilot customer-portal getPortalUserEntity

With request body:

epilot customer-portal getPortalUserEntity \
-d '{
"slug": "contact",
"entity_id": "3ec28ab5-8598-41ef-9486-b57fca1d5e2a",
"hydrate": false,
"fields": ["_id", "_title"],
"templates": {
"content_top_name": "Customer #{{contract.customer_number}}",
"main_content_name": "{{contract.contract_name}} ({{contract.contract_number}})",
"content_bottom_name": "{{custom_contract_delivery_address}}",
"nested_content": {
"title": "{{contract.contract_name}}",
"subtitle": "{{contract.contract_number}}"
}
},
"filters": [
{
"term": {
"status.keyword": "active"
}
},
{
"range": {
"_created_at": {
"gte": "2023-01-01"
}
}
}
],
"filters_context": [
{
"portal_user": true
},
{
"contact": true
}
],
"targets": ["3ec28ab5-8598-41ef-9486-b57fca1d5e2a"]
}'

Using stdin pipe:

cat body.json | epilot customer-portal getPortalUserEntity

With JSONata filter:

epilot customer-portal getPortalUserEntity --jsonata 'result'
Sample Response
{
"result": {
"_id": "5da0a718-c822-403d-9f5d-20d4584e0528",
"_title": "Example Entity",
"_org": "123",
"_tags": ["example", "mock"],
"_created_at": "2021-02-09T12:41:43.662Z",
"_updated_at": "2021-02-09T12:41:43.662Z",
"templates_output": {
"content_top_name": "Customer #123456",
"main_content_name": "Orange Flexible A2 (654321)",
"content_bottom_name": "Porscheplatz 1, 70435 Stuttgart, Germany",
"nested_content": {
"title": "Orange Flexible A2",
"subtitle": "654321"
}
},
"_schema": "contact"
}
}

searchPortalUserEntitiesโ€‹

Search all entities of a portal user

POST /v2/portal/entity:search

Request Body

Sample Call

epilot customer-portal searchPortalUserEntities

With request body:

epilot customer-portal searchPortalUserEntities \
-d '{
"slug": "contact",
"q": "contract",
"q_fields": ["_title", "customer._title", "customer.first_name", "customer.last_name"],
"group": "customer._title",
"group_title": "{{customer[Primary].first_name}} {{customer[Primary].last_name}}",
"group_size": 100,
"group_sort": "desc",
"group_after_key": {},
"sort": "_created_at:desc",
"from": 0,
"size": 100,
"hydrate": false,
"fields": ["_id", "_title"],
"templates": {
"content_top_name": "Customer #{{contract.customer_number}}",
"main_content_name": "{{contract.contract_name}} ({{contract.contract_number}})",
"content_bottom_name": "{{custom_contract_delivery_address}}"
},
"filters": [
{
"term": {
"status.keyword": "active"
}
},
{
"range": {
"_created_at": {
"gte": "2023-01-01"
}
}
}
],
"filters_context": [
{
"portal_user": true
},
{
"contact": true
}
],
"targets": ["3ec28ab5-8598-41ef-9486-b57fca1d5e2a"]
}'

Using stdin pipe:

cat body.json | epilot customer-portal searchPortalUserEntities

With JSONata filter:

epilot customer-portal searchPortalUserEntities --jsonata '$'
Sample Response
{
"results": [
{
"_id": "5da0a718-c822-403d-9f5d-20d4584e0528",
"_title": "Example Entity",
"_org": "123",
"_tags": ["example", "mock"],
"_created_at": "2021-02-09T12:41:43.662Z",
"_updated_at": "2021-02-09T12:41:43.662Z",
"templates_output": {
"content_top_name": "Customer #123456",
"main_content_name": "Orange Flexible A2 (654321)",
"content_bottom_name": "Porscheplatz 1, 70435 Stuttgart, Germany",
"nested_content": {
"title": "Orange Flexible A2",
"subtitle": "654321"
}
},
"_schema": "contact"
}
],
"pagination": {
"from": 0,
"size": 10,
"total": 50,
"has_more": true
},
"hits": 10
}

canTriggerPortalFlowโ€‹

Returns whether the user can trigger a portal flow

POST /v2/portal/can-trigger-portal-flow

Parameters

NameInTypeRequiredDescription
originquerystringNoOrigin of the portal
portal_idquerystringYes

Request Body (required)

Sample Call

epilot customer-portal canTriggerPortalFlow \
-p portal_id=123

With request body:

epilot customer-portal canTriggerPortalFlow \
-p portal_id=123 \
-d '{
"activity_id": "01F130Q52Q6MWSNS8N2AVXV4JN",
"ecp_config": {
"file_config": {
"shared_with_end_customer": true,
"_tags": ["example", "mock"]
}
}
}'

Using stdin pipe:

cat body.json | epilot customer-portal canTriggerPortalFlow -p portal_id=123

With JSONata filter:

epilot customer-portal canTriggerPortalFlow -p portal_id=123 --jsonata 'can_trigger'
Sample Response
{
"can_trigger": true
}

getAutomationContextโ€‹

Retrieves the automation context.

GET /v2/portal/automation-context

Parameters

NameInTypeRequiredDescription
activity_idquerystring (ulid)YesActivity ID
typequery"file"YesType of the context to retrieve

Sample Call

epilot customer-portal getAutomationContext \
-p activity_id=01F130Q52Q6MWSNS8N2AVXV4JN \
-p type=example

With JSONata filter:

epilot customer-portal getAutomationContext -p activity_id=01F130Q52Q6MWSNS8N2AVXV4JN -p type=example --jsonata '$'
Sample Response
{}

updateWorkflowStepAsDoneโ€‹

Update a workflow step as done

PUT /v2/portal/workflow/{workflow_id}/{step_id}:markDone

Parameters

NameInTypeRequiredDescription
workflow_idpathstringYes
step_idpathstringYes

Sample Call

epilot customer-portal updateWorkflowStepAsDone \
-p workflow_id=0bjwcxc827t \
-p step_id=q1d6vcbsqvn

Using positional args for path parameters:

epilot customer-portal updateWorkflowStepAsDone 0bjwcxc827t q1d6vcbsqvn

With JSONata filter:

epilot customer-portal updateWorkflowStepAsDone -p workflow_id=0bjwcxc827t -p step_id=q1d6vcbsqvn --jsonata '$'
Sample Response
{
"startedTime": "2024-01-12T13:29:55.942Z",
"requirements": [],
"created": "2023-10-20T17:41:10.256Z",
"executionType": "MANUAL",
"assignedToInProgress": "-",
"sectionId": "lzxsw2sblj7",
"type": "STEP",
"entityRefId": "q1d6vcbsqvn",
"assignedTo": ["10014532"],
"lastUpdated": "2024-01-13T05:18:43.838Z",
"ecp": {},
"userIds": [],
"name": "Hinterlege den vereinbarten LIC Termin",
"id": "q1d6vcbsqvn",
"definitionId": "9UjHKq",
"status": "COMPLETED",
"manuallyCreated": false,
"enabled": true,
"completedTime": "2024-01-13T05:18:43.827Z"
}

getEntityWorkflowsโ€‹

Get all workflows associated with an entity (requires access to the entity)

GET /v2/portal/entity/{slug}/{id}/workflows

Parameters

NameInTypeRequiredDescription
slugpathstringYes
idpathstringYes

Sample Call

epilot customer-portal getEntityWorkflows \
-p slug=contact \
-p id=abc123

Using positional args for path parameters:

epilot customer-portal getEntityWorkflows contact abc123

With JSONata filter:

epilot customer-portal getEntityWorkflows -p slug=contact -p id=abc123 --jsonata 'workflow_executions'
Sample Response
{
"workflow_executions": [
{
"id": "8gja72h6kas6h",
"name": "Lead Qualification",
"trigger": "MANUAL",
"status": "STARTED",
"creationTime": "2021-04-27T12:01:13.000Z",
"lastUpdateTime": "2021-04-27T12:01:13.000Z",
"dueDate": "2021-04-27T12:01:13.000Z",
"assignedTo": ["252", "29052"],
"flow": [
{
"id": "sectionId1",
"name": "Initial Information Gathering",
"steps": [
{
"id": "sada5641f3a21",
"name": "Call client and confirm address and product",
"status": "ASSIGNED",
"assignedTo": ["11"]
},
{
"id": "sada5641f3a22",
"name": "Check product availability",
"status": "UNASSIGNED"
}
]
},
{
"id": "firstLevelStepId1",
"name": "Print and send catalog",
"status": "SKIPPED",
"dueDate": "2023-01-15T20:00:00"
}
]
}
]
}

uploadMeterReadingPhotoโ€‹

Uploads a Meter Reading photo and - if enabled - gives back data extracted from the photo.

POST /v2/portal/metering/reading/photo

Request Body (required)

Sample Call

epilot customer-portal uploadMeterReadingPhoto

With request body:

epilot customer-portal uploadMeterReadingPhoto \
-d '{
"filename": "Reading 10.01.2025.jpg",
"mime_type": "image/jpeg",
"contents": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wCEAAkGBxMTEhUTExMWFhUXGBgYGBgYGBgYGBgYGBgYFxgYFxgYHSggGBolHRgXITEhJSkrLi4uFx8zODMtNygtLisBCgoKDg0OGhAQGy0lHyUt",
"meter_id": "5da0a718-c822-403d-9f5d-20d4584e0528"
}'

Using stdin pipe:

cat body.json | epilot customer-portal uploadMeterReadingPhoto

With JSONata filter:

epilot customer-portal uploadMeterReadingPhoto --jsonata 'data'
Sample Response
{
"data": {
"filename": "Reading 10.01.2025.jpg",
"s3ref": {
"bucket": "meter-readings",
"key": "uuid/reading-10.01.2025.jpg"
},
"reading": "000123.45",
"sector": "water",
"meter_numbers": ["00123456"]
}
}

createMeterReadingโ€‹

Inserts a new meter reading.

POST /v2/portal/metering/reading

Parameters

NameInTypeRequiredDescription
override_plausibilityquerybooleanNoOverride plausibility check

Request Body (required)

Sample Call

epilot customer-portal createMeterReading

With request body:

epilot customer-portal createMeterReading \
-d '{
"value": 240,
"read_by": "John Doe",
"reason": "Storing the feed-in record",
"meter_id": "5da0a718-c822-403d-9f5d-20d4584e0528",
"counter_id": "5da0a718-c822-403d-9f5d-20d4584e0528",
"direction": "feed-in",
"timestamp": "2022-10-10T00:00:00.000Z",
"source": "ECP",
"status": "valid",
"external_id": "string",
"remark": "Customer reported unusual consumption",
"metadata": {
"registration_id": "1234567890",
"business_unit": "ABC"
}
}'

Using stdin pipe:

cat body.json | epilot customer-portal createMeterReading

With JSONata filter:

epilot customer-portal createMeterReading --jsonata 'data'
Sample Response
{
"data": {
"value": 240,
"read_by": "John Doe",
"reason": "Storing the feed-in record",
"meter_id": "5da0a718-c822-403d-9f5d-20d4584e0528",
"counter_id": "5da0a718-c822-403d-9f5d-20d4584e0528",
"direction": "feed-in",
"timestamp": "2022-10-10T00:00:00.000Z",
"source": "ECP",
"status": "valid",
"external_id": "string",
"remark": "Customer reported unusual consumption",
"metadata": {
"registration_id": "1234567890",
"business_unit": "ABC"
}
}
}

getAllowedMeterReadingRangeโ€‹

Get allowed reading range for all counters of a meter from the configured

GET /v2/portal/metering/reading/allowed-range/{meter_id}

Parameters

NameInTypeRequiredDescription
meter_idpathstringYesThe ID of the meter.
originquerystringNoOrigin of the portal
timestampquerystringNoIf not provided, the system will default to now.
context_entitiesqueryobject[]NoAdditional entities to include in the context for variable interpolation in the hook.

Sample Call

epilot customer-portal getAllowedMeterReadingRange \
-p meter_id=123e4567-e89b-12d3-a456-426614174000

Using positional args for path parameters:

epilot customer-portal getAllowedMeterReadingRange 123e4567-e89b-12d3-a456-426614174000

With JSONata filter:

epilot customer-portal getAllowedMeterReadingRange -p meter_id=123e4567-e89b-12d3-a456-426614174000 --jsonata 'data'
Sample Response
{
"data": [
{
"meter_counter_id": "string",
"min_value": 0,
"max_value": 0
}
]
}

ssoLoginโ€‹

Initiate login using external SSO identity.

POST /v2/portal/public/sso/login

Parameters

NameInTypeRequiredDescription
originquerystringYesOrigin of the Portal
org_idquerystringYesepilot organization id
contact_idquerystring (uuid)Nocontact id in the epilot system

Request Body

Sample Call

epilot customer-portal ssoLogin \
-p origin=example \
-p org_id=123 \
-d '{"provider_slug":"office-365-login"}'

Using stdin pipe:

cat body.json | epilot customer-portal ssoLogin -p origin=example -p org_id=123

With JSONata filter:

epilot customer-portal ssoLogin -p origin=example -p org_id=123 --jsonata 'email'
Sample Response
{
"token": "string",
"email": "portal-customer@email.com"
}

ssoLoginV3โ€‹

Initiate login using external SSO identity.

POST /v3/portal/public/sso/login

Parameters

NameInTypeRequiredDescription
portal_idquerystringYesID of the Portal
org_idquerystringYesepilot organization id
contact_idquerystring (uuid)Nocontact id in the epilot system

Request Body

Sample Call

epilot customer-portal ssoLoginV3 \
-p portal_id=453ad7bf-86d5-46c8-8252-bcc868df5e3c \
-p org_id=123 \
-d '{"provider_slug":"office-365-login"}'

Using stdin pipe:

cat body.json | epilot customer-portal ssoLoginV3 -p portal_id=453ad7bf-86d5-46c8-8252-bcc868df5e3c -p org_id=123

With JSONata filter:

epilot customer-portal ssoLoginV3 -p portal_id=453ad7bf-86d5-46c8-8252-bcc868df5e3c -p org_id=123 --jsonata 'email'
Sample Response
{
"token": "string",
"email": "portal-customer@email.com"
}

ssoRedirectโ€‹

Handles the redirect from the external SSO provider. Validates the authorization code and state received from the pr

POST /v2/portal/public/sso/redirect

Parameters

NameInTypeRequiredDescription
web_uriquerystringYesThe URI to redirect to after the SSO login

Sample Call

epilot customer-portal ssoRedirect \
-p web_uri=https://customer-portal.com

With JSONata filter:

epilot customer-portal ssoRedirect -p web_uri=https://customer-portal.com --jsonata '$'

ssoCallbackโ€‹

Handles the callback from the external SSO provider, validates the authorization code

POST /v2/portal/public/sso/callback

Parameters

NameInTypeRequiredDescription
domainquerystringNo

Request Body (required)

Sample Call

epilot customer-portal ssoCallback

With request body:

epilot customer-portal ssoCallback \
-d '{
"provider_slug": "office-365-login",
"token_endpoint": "https://www.facebook.com/v12.0/dialog/oauth",
"grant_type": "authorization_code",
"code": "123456",
"redirect_uri": "https://customer-portal.com/login",
"client_id": "123456",
"code_verifier": "123456"
}'

Using stdin pipe:

cat body.json | epilot customer-portal ssoCallback

With JSONata filter:

epilot customer-portal ssoCallback --jsonata 'access_token'
Sample Response
{
"access_token": "123456",
"token_type": "Bearer",
"expires_in": 3600,
"refresh_token": "123456",
"id_token": "123456",
"scope": "openid email"
}

getPortalPageโ€‹

Fetch a portal page by id

GET /v2/portal/pages/{id}

Parameters

NameInTypeRequiredDescription
idpathstring (uuid)Yes

Sample Call

epilot customer-portal getPortalPage \
-p id=5da0a718-c822-403d-9f5d-20d4584e0528

Using positional args for path parameters:

epilot customer-portal getPortalPage 5da0a718-c822-403d-9f5d-20d4584e0528

With JSONata filter:

epilot customer-portal getPortalPage -p id=5da0a718-c822-403d-9f5d-20d4584e0528 --jsonata '$'
Sample Response
{
"slug": "dashboard",
"path": "/dashboard",
"schema": ["string"],
"visibility": {},
"content": {},
"design": {},
"blocks": {},
"order": 1,
"is_system": false,
"is_detail": false,
"detail_schema": "contact",
"is_public": true,
"parentId": "c495fef9-eeca-4019-a989-8390dcd9825b",
"is_entry_route": false,
"is_deleted": false,
"id": "c495fef9-eeca-4019-a989-8390dcd9825b",
"last_modified_at": "2021-02-09T12:41:43.662Z"
}

updatePortalPageโ€‹

Update a portal page by id

PUT /v2/portal/pages/{id}

Parameters

NameInTypeRequiredDescription
idpathstring (uuid)Yes

Request Body (required)

Sample Call

epilot customer-portal updatePortalPage \
-p id=5da0a718-c822-403d-9f5d-20d4584e0528

With request body:

epilot customer-portal updatePortalPage \
-p id=5da0a718-c822-403d-9f5d-20d4584e0528 \
-d '{
"slug": "dashboard",
"path": "/dashboard",
"schema": ["string"],
"visibility": {},
"content": {},
"design": {},
"blocks": {},
"order": 1,
"is_system": false,
"is_detail": false,
"detail_schema": "contact",
"is_public": true,
"parentId": "c495fef9-eeca-4019-a989-8390dcd9825b",
"is_entry_route": false,
"is_deleted": false
}'

Using positional args for path parameters:

epilot customer-portal updatePortalPage 5da0a718-c822-403d-9f5d-20d4584e0528

Using stdin pipe:

cat body.json | epilot customer-portal updatePortalPage -p id=5da0a718-c822-403d-9f5d-20d4584e0528

With JSONata filter:

epilot customer-portal updatePortalPage -p id=5da0a718-c822-403d-9f5d-20d4584e0528 --jsonata '$'
Sample Response
{
"slug": "dashboard",
"path": "/dashboard",
"schema": ["string"],
"visibility": {},
"content": {},
"design": {},
"blocks": {},
"order": 1,
"is_system": false,
"is_detail": false,
"detail_schema": "contact",
"is_public": true,
"parentId": "c495fef9-eeca-4019-a989-8390dcd9825b",
"is_entry_route": false,
"is_deleted": false,
"id": "c495fef9-eeca-4019-a989-8390dcd9825b",
"last_modified_at": "2021-02-09T12:41:43.662Z"
}

deletePortalPageโ€‹

Delete a portal page by id

DELETE /v2/portal/pages/{id}

Parameters

NameInTypeRequiredDescription
idpathstring (uuid)Yes

Sample Call

epilot customer-portal deletePortalPage \
-p id=5da0a718-c822-403d-9f5d-20d4584e0528

Using positional args for path parameters:

epilot customer-portal deletePortalPage 5da0a718-c822-403d-9f5d-20d4584e0528

With JSONata filter:

epilot customer-portal deletePortalPage -p id=5da0a718-c822-403d-9f5d-20d4584e0528 --jsonata '$'

getPortalPagesโ€‹

Fetch all portal pages

GET /v2/portal/pages

Parameters

NameInTypeRequiredDescription
domainquerystringYes
fieldsquerystringNoThe fields to include in the response
filterquerystringNoThe filter to apply to the response
contract_idquerystring (uuid)NoContract context for blocks. Use context_entities instead.
context_entitiesqueryobject[]NoIf the request is in a context of certain entities (i.e. the user in in a context of a specific contract), pages can be customized for that. Portal User and Contact entities are automatically part of

Sample Call

epilot customer-portal getPortalPages \
-p domain=customer-portal.epilot.io

With JSONata filter:

epilot customer-portal getPortalPages -p domain=customer-portal.epilot.io --jsonata '$'
Sample Response
[
{
"slug": "dashboard",
"path": "/dashboard",
"schema": ["string"],
"visibility": {},
"content": {},
"design": {},
"blocks": {},
"order": 1,
"is_system": false,
"is_detail": false,
"detail_schema": "contact",
"is_public": true,
"parentId": "c495fef9-eeca-4019-a989-8390dcd9825b",
"is_entry_route": false,
"is_deleted": false,
"id": "c495fef9-eeca-4019-a989-8390dcd9825b",
"last_modified_at": "2021-02-09T12:41:43.662Z"
}
]

createPortalPageโ€‹

Create a new portal page

POST /v2/portal/pages

Parameters

NameInTypeRequiredDescription
domainquerystringYes

Request Body (required)

Sample Call

epilot customer-portal createPortalPage \
-p domain=customer-portal.epilot.io

With request body:

epilot customer-portal createPortalPage \
-p domain=customer-portal.epilot.io \
-d '{
"slug": "dashboard",
"path": "/dashboard",
"schema": ["string"],
"visibility": {},
"content": {},
"design": {},
"blocks": {},
"order": 1,
"is_system": false,
"is_detail": false,
"detail_schema": "contact",
"is_public": true,
"parentId": "c495fef9-eeca-4019-a989-8390dcd9825b",
"is_entry_route": false,
"is_deleted": false
}'

Using stdin pipe:

cat body.json | epilot customer-portal createPortalPage -p domain=customer-portal.epilot.io

With JSONata filter:

epilot customer-portal createPortalPage -p domain=customer-portal.epilot.io --jsonata '$'
Sample Response
{
"slug": "dashboard",
"path": "/dashboard",
"schema": ["string"],
"visibility": {},
"content": {},
"design": {},
"blocks": {},
"order": 1,
"is_system": false,
"is_detail": false,
"detail_schema": "contact",
"is_public": true,
"parentId": "c495fef9-eeca-4019-a989-8390dcd9825b",
"is_entry_route": false,
"is_deleted": false,
"id": "c495fef9-eeca-4019-a989-8390dcd9825b",
"last_modified_at": "2021-02-09T12:41:43.662Z"
}

getPublicPagesโ€‹

Fetch all public portal pages

GET /v2/portal/public/pages

Parameters

NameInTypeRequiredDescription
domainquerystringYes
fieldsquerystringNoThe fields to include in the response
filterquerystringNoThe filter to apply to the response

Sample Call

epilot customer-portal getPublicPages \
-p domain=customer-portal.epilot.io

With JSONata filter:

epilot customer-portal getPublicPages -p domain=customer-portal.epilot.io --jsonata '$'
Sample Response
[
{
"slug": "dashboard",
"path": "/dashboard",
"schema": ["string"],
"visibility": {},
"content": {},
"design": {},
"blocks": {},
"order": 1,
"is_system": false,
"is_detail": false,
"detail_schema": "contact",
"is_public": true,
"parentId": "c495fef9-eeca-4019-a989-8390dcd9825b",
"is_entry_route": false,
"is_deleted": false,
"id": "c495fef9-eeca-4019-a989-8390dcd9825b",
"last_modified_at": "2021-02-09T12:41:43.662Z"
}
]

getDefaultPagesโ€‹

Fetch all default portal pages

GET /v2/portal/pages/default

Sample Call

epilot customer-portal getDefaultPages

With JSONata filter:

epilot customer-portal getDefaultPages --jsonata '$'
Sample Response
[
{
"slug": "dashboard",
"path": "/dashboard",
"schema": ["string"],
"visibility": {},
"content": {},
"design": {},
"blocks": {},
"order": 1,
"is_system": false,
"is_detail": false,
"detail_schema": "contact",
"is_public": true,
"parentId": "c495fef9-eeca-4019-a989-8390dcd9825b",
"is_entry_route": false,
"is_deleted": false,
"id": "c495fef9-eeca-4019-a989-8390dcd9825b",
"last_modified_at": "2021-02-09T12:41:43.662Z"
}
]

getPortalPageBlocksโ€‹

Fetch all portal page blocks

GET /v2/portal/pages/{id}/blocks

Parameters

NameInTypeRequiredDescription
idpathstring (uuid)Yes

Sample Call

epilot customer-portal getPortalPageBlocks \
-p id=5da0a718-c822-403d-9f5d-20d4584e0528

Using positional args for path parameters:

epilot customer-portal getPortalPageBlocks 5da0a718-c822-403d-9f5d-20d4584e0528

With JSONata filter:

epilot customer-portal getPortalPageBlocks -p id=5da0a718-c822-403d-9f5d-20d4584e0528 --jsonata '$'
Sample Response
[
{
"props": {
"visibility": {},
"content": {},
"design": {}
},
"parentId": "c495fef9-eeca-4019-a989-8390dcd9825b",
"type": "tab",
"order": 1,
"id": "c495fef9-eeca-4019-a989-8390dcd9825b"
}
]

createPortalPageBlockโ€‹

Create a new portal page block

POST /v2/portal/pages/{id}/blocks

Parameters

NameInTypeRequiredDescription
idpathstring (uuid)Yes

Request Body (required)

Sample Call

epilot customer-portal createPortalPageBlock \
-p id=5da0a718-c822-403d-9f5d-20d4584e0528

With request body:

epilot customer-portal createPortalPageBlock \
-p id=5da0a718-c822-403d-9f5d-20d4584e0528 \
-d '{
"props": {
"visibility": {},
"content": {},
"design": {}
},
"parentId": "c495fef9-eeca-4019-a989-8390dcd9825b",
"type": "tab",
"order": 1
}'

Using positional args for path parameters:

epilot customer-portal createPortalPageBlock 5da0a718-c822-403d-9f5d-20d4584e0528

Using stdin pipe:

cat body.json | epilot customer-portal createPortalPageBlock -p id=5da0a718-c822-403d-9f5d-20d4584e0528

With JSONata filter:

epilot customer-portal createPortalPageBlock -p id=5da0a718-c822-403d-9f5d-20d4584e0528 --jsonata '$'
Sample Response
{
"props": {
"visibility": {},
"content": {},
"design": {}
},
"parentId": "c495fef9-eeca-4019-a989-8390dcd9825b",
"type": "tab",
"order": 1,
"id": "c495fef9-eeca-4019-a989-8390dcd9825b"
}

getPortalPageBlockโ€‹

Fetch a portal page block by id

GET /v2/portal/pages/{id}/blocks/{block_id}

Parameters

NameInTypeRequiredDescription
idpathstring (uuid)Yes
block_idpathstring (uuid)Yes

Sample Call

epilot customer-portal getPortalPageBlock \
-p id=5da0a718-c822-403d-9f5d-20d4584e0528 \
-p block_id=5da0a718-c822-403d-9f5d-20d4584e0528

Using positional args for path parameters:

epilot customer-portal getPortalPageBlock 5da0a718-c822-403d-9f5d-20d4584e0528 5da0a718-c822-403d-9f5d-20d4584e0528

With JSONata filter:

epilot customer-portal getPortalPageBlock -p id=5da0a718-c822-403d-9f5d-20d4584e0528 -p block_id=5da0a718-c822-403d-9f5d-20d4584e0528 --jsonata '$'
Sample Response
{
"props": {
"visibility": {},
"content": {},
"design": {}
},
"parentId": "c495fef9-eeca-4019-a989-8390dcd9825b",
"type": "tab",
"order": 1,
"id": "c495fef9-eeca-4019-a989-8390dcd9825b"
}

updatePortalPageBlockโ€‹

Update a portal page block by id

PUT /v2/portal/pages/{id}/blocks/{block_id}

Parameters

NameInTypeRequiredDescription
idpathstring (uuid)Yes
block_idpathstring (uuid)Yes

Request Body (required)

Sample Call

epilot customer-portal updatePortalPageBlock \
-p id=5da0a718-c822-403d-9f5d-20d4584e0528 \
-p block_id=5da0a718-c822-403d-9f5d-20d4584e0528

With request body:

epilot customer-portal updatePortalPageBlock \
-p id=5da0a718-c822-403d-9f5d-20d4584e0528 \
-p block_id=5da0a718-c822-403d-9f5d-20d4584e0528 \
-d '{
"props": {
"visibility": {},
"content": {},
"design": {}
},
"parentId": "c495fef9-eeca-4019-a989-8390dcd9825b",
"type": "tab",
"order": 1
}'

Using positional args for path parameters:

epilot customer-portal updatePortalPageBlock 5da0a718-c822-403d-9f5d-20d4584e0528 5da0a718-c822-403d-9f5d-20d4584e0528

Using stdin pipe:

cat body.json | epilot customer-portal updatePortalPageBlock -p id=5da0a718-c822-403d-9f5d-20d4584e0528 -p block_id=5da0a718-c822-403d-9f5d-20d4584e0528

With JSONata filter:

epilot customer-portal updatePortalPageBlock -p id=5da0a718-c822-403d-9f5d-20d4584e0528 -p block_id=5da0a718-c822-403d-9f5d-20d4584e0528 --jsonata '$'
Sample Response
{
"props": {
"visibility": {},
"content": {},
"design": {}
},
"parentId": "c495fef9-eeca-4019-a989-8390dcd9825b",
"type": "tab",
"order": 1,
"id": "c495fef9-eeca-4019-a989-8390dcd9825b"
}

deletePortalPageBlockโ€‹

Delete a portal page block by id

DELETE /v2/portal/pages/{id}/blocks/{block_id}

Parameters

NameInTypeRequiredDescription
idpathstring (uuid)Yes
block_idpathstring (uuid)Yes

Sample Call

epilot customer-portal deletePortalPageBlock \
-p id=5da0a718-c822-403d-9f5d-20d4584e0528 \
-p block_id=5da0a718-c822-403d-9f5d-20d4584e0528

Using positional args for path parameters:

epilot customer-portal deletePortalPageBlock 5da0a718-c822-403d-9f5d-20d4584e0528 5da0a718-c822-403d-9f5d-20d4584e0528

With JSONata filter:

epilot customer-portal deletePortalPageBlock -p id=5da0a718-c822-403d-9f5d-20d4584e0528 -p block_id=5da0a718-c822-403d-9f5d-20d4584e0528 --jsonata '$'

getUserEntryPointโ€‹

Get the entry point for the user

GET /v2/portal/public/user/entry-point

Parameters

NameInTypeRequiredDescription
emailquerystringYes
domainquerystringYes

Sample Call

epilot customer-portal getUserEntryPoint \
-p email=user@example.com \
-p domain=customer-portal.epilot.io

With JSONata filter:

epilot customer-portal getUserEntryPoint -p email=user@example.com -p domain=customer-portal.epilot.io --jsonata 'user_exists'
Sample Response
{
"user_exists": true,
"entry_point": "PASSWORD",
"preferred_sso_providers": ["office-365-login"],
"is_soft_deleted": true
}

updateCampaignPortalBlockStatusโ€‹

Updates the status of a campaign portal block for multiple recipients.

PUT /v2/portal/campaign/{campaign_id}/entity:status

Parameters

NameInTypeRequiredDescription
campaign_idpathstringYesID of the campaign

Request Body (required)

Sample Call

epilot customer-portal updateCampaignPortalBlockStatus \
-p campaign_id=123e4567-e89b-12d3-a456-426614174000 \
-d '{"status":"seen","entity_refs":[{"entity_id":"5da0a718-c822-403d-9f5d-20d4584e0528","entity_schema":"string"}]}'

Using positional args for path parameters:

epilot customer-portal updateCampaignPortalBlockStatus 123e4567-e89b-12d3-a456-426614174000

Using stdin pipe:

cat body.json | epilot customer-portal updateCampaignPortalBlockStatus -p campaign_id=123e4567-e89b-12d3-a456-426614174000

With JSONata filter:

epilot customer-portal updateCampaignPortalBlockStatus -p campaign_id=123e4567-e89b-12d3-a456-426614174000 --jsonata 'success'
Sample Response
{
"success": true,
"updated": 2,
"failed": 0,
"total": 2
}

updateNotificationsStatusโ€‹

Updates the statuses of multiple notifications at once.

PUT /v2/portal/notifications/entity:status

Request Body (required)

Sample Call

epilot customer-portal updateNotificationsStatus \
-d '{"notifications":[{"id":"string","status":"read"}]}'

Using stdin pipe:

cat body.json | epilot customer-portal updateNotificationsStatus

With JSONata filter:

epilot customer-portal updateNotificationsStatus --jsonata 'message'
Sample Response
{
"message": "Notifications status updated successfully."
}

deRegisterMLoginUserโ€‹

Deregisters a user from the M Login client

DELETE /v2/portal/public/m-login/deregister/{client_id}/{user_id}

Parameters

NameInTypeRequiredDescription
client_idpathstringYesClient ID
user_idpathstringYesUser ID

Sample Call

epilot customer-portal deRegisterMLoginUser \
-p client_id=123e4567-e89b-12d3-a456-426614174000 \
-p user_id=123e4567-e89b-12d3-a456-426614174000

Using positional args for path parameters:

epilot customer-portal deRegisterMLoginUser 123e4567-e89b-12d3-a456-426614174000 123e4567-e89b-12d3-a456-426614174000

With JSONata filter:

epilot customer-portal deRegisterMLoginUser -p client_id=123e4567-e89b-12d3-a456-426614174000 -p user_id=123e4567-e89b-12d3-a456-426614174000 --jsonata '$'

notifyMLoginInterestChangeโ€‹

Notifies the interest change of a user in the M Login client

POST /v2/portal/public/m-login/notify-interest-change/{client_id}/{user_id}

Parameters

NameInTypeRequiredDescription
client_idpathstringYesClient ID
user_idpathstringYesUser ID

Request Body (required)

Sample Call

epilot customer-portal notifyMLoginInterestChange \
-p client_id=123e4567-e89b-12d3-a456-426614174000 \
-p user_id=123e4567-e89b-12d3-a456-426614174000

With request body:

epilot customer-portal notifyMLoginInterestChange \
-p client_id=123e4567-e89b-12d3-a456-426614174000 \
-p user_id=123e4567-e89b-12d3-a456-426614174000 \
-d '{
"resource_id": "string",
"user_id": "string",
"interest_tag": "string",
"action": "string",
"resource": {
"resource_id": "string",
"description": "string",
"contact": "string",
"kind": "string"
}
}'

Using positional args for path parameters:

epilot customer-portal notifyMLoginInterestChange 123e4567-e89b-12d3-a456-426614174000 123e4567-e89b-12d3-a456-426614174000

Using stdin pipe:

cat body.json | epilot customer-portal notifyMLoginInterestChange -p client_id=123e4567-e89b-12d3-a456-426614174000 -p user_id=123e4567-e89b-12d3-a456-426614174000

With JSONata filter:

epilot customer-portal notifyMLoginInterestChange -p client_id=123e4567-e89b-12d3-a456-426614174000 -p user_id=123e4567-e89b-12d3-a456-426614174000 --jsonata '$'

createPortalConfigโ€‹

Creates a new portal configuration.

POST /v3/portal/config

Request Body (required)

Sample Call

epilot customer-portal createPortalConfig

With request body:

epilot customer-portal createPortalConfig \
-d '{
"entity_actions": [
{
"journey_id": "5da0a718-c822-403d-9f5d-20d4584e0528",
"slug": "contact",
"action_Label": {}
}
],
"extensions": [
{
"id": "string",
"status": "installed",
"options": {}
}
],
"extension_hooks": {},
"default_user_to_notify": {
"onPendingUser": [
{}
]
},
"enabled": true,
"name": "Installer Portal",
"domain": "abc.com",
"is_epilot_domain": true,
"epilot_domain": "example-portal-1.ecp.epilot.io",
"domain_settings": {
"is_custom_domain_enabled": true,
"is_epilot_domain_enabled": true,
"is_redirection_enabled": true
},
"design_id": "5da0a718-c822-403d-9f5d-20d4584e0528",
"self_registration_setting": "ALLOW_WITH_CONTACT_CREATION",
"user_account_self_management": false,
"feature_settings": {
"start_page": true,
"billing": true,
"change_due_date": true,
"new_design": true
},
"accessToken": "string",
"advanced_mfa": {
"enabled": true
},
"auth_settings": {
"passwordless_login": {
"enabled": true
},
"entry_point": "PASSWORD",
"preferred_sso_providers": ["office-365-login"],
"auto_redirect_to_sso": true
},
"cognito_details": {
"cognito_user_pool_client_id": "6bsd0jkgoie74k2i8mrhc1vest",
"cognito_user_pool_arn": "arn:aws:cognito-idp:us-east-1:123412341234:userpool/us-east-1_123412341",
"cognito_user_pool_id": "eu-central-1_CUEQRNbUb",
"password_policy": {
"minimum_length": 8,
"maximum_length": 256,
"require_lowercase": true,
"require_uppercase": true,
"require_numbers": true,
"require_symbols": true
}
},
"config": "string",
"contact_identifiers": ["email", "last_name"],
"approval_state_attributes": {
"contact": ["name", "address"],
"contract": ["installment_amount"]
},
"email_templates": {
"confirmAccount": "5da0a718-c822-403d-9f5d-20d4584e0528",
"advancedAuth": "5da0a718-c822-403d-9f5d-20d4584e0528",
"advancedMFA": "5da0a718-c822-403d-9f5d-20d4584e0528",
"journeySignUp": "5da0a718-c822-403d-9f5d-20d4584e0528",
"journeySignInOneTimePassword": "5da0a718-c822-403d-9f5d-20d4584e0528",
"journeyLoginOTP": "5da0a718-c822-403d-9f5d-20d4584e0528",
"forgotPassword": "5da0a718-c822-403d-9f5d-20d4584e0528",
"invitation": "5da0a718-c822-403d-9f5d-20d4584e0528",
"partnerInvitation": "5da0a718-c822-403d-9f5d-20d4584e0528",
"onNewQuote": "5da0a718-c822-403d-9f5d-20d4584e0528",
"onMapAPendingUser": "5da0a718-c822-403d-9f5d-20d4584e0528",
"onDocUpload": "5da0a718-c822-403d-9f5d-20d4584e0528",
"onWorkflowStepAssigned": "5da0a718-c822-403d-9f5d-20d4584e0528",
"confirmEmailUpdate": "5da0a718-c822-403d-9f5d-20d4584e0528",
"verifyCodeToSetPassword": "5da0a718-c822-403d-9f5d-20d4584e0528"
},
"images": {
"orderLeftTeaser": "https://epilot-bucket.s3.eu-central-1.amazonaws.com/12344/6538fddb-f0e9-4f0f-af51-6e57891ff20a/order-left-teaser.jpeg",
"orderRightTeaser": "https://epilot-bucket.s3.eu-central-1.amazonaws.com/12344/6538fddb-f0e9-4f0f-af51-6e57891ff20a/order-right-teaser.jpeg",
"welcomeBanner": "https://epilot-bucket.s3.eu-central-1.amazonaws.com/12344/6538fddb-f0e9-4f0f-af51-6e57891ff20a/welcome-banner.jpeg"
},
"entity_identifiers": {
"type": {
"isEnabled": true,
"attributes": ["contract_number"]
}
},
"contract_identifiers": [
{
"name": "email",
"schema": "contact"
},
{
"name": "last_name",
"schema": "contact"
}
],
"contract_selector_config": {
"show_inactive": true,
"title_path": "string"
},
"registration_identifiers": [
{
"name": "last_name",
"schema": "contact"
},
{
"name": "contract_number",
"schema": "contract"
}
],
"triggered_journeys": [
{
"trigger_name": "FIRST_LOGIN",
"journey_id": "5da0a718-c822-403d-9f5d-20d4584e0528"
}
],
"entity_edit_rules": [
{
"slug": "contact",
"attribute": "first_name",
"rule_type": "cadence",
"cadence_period_type": "days",
"cadence_period": 1,
"changes_allowed": 1,
"grace_period": 1,
"allowed_increment": "10%",
"allowed_decrement": "10%",
"number_of_days_before_restriction": 10
}
],
"allowed_file_extensions": {
"document": ["pdf"],
"image": ["jpg"],
"spreadsheet": ["xls"],
"presentation": ["ppt"],
"audioVideo": ["mp4"],
"email": ["eml"],
"archive": ["zip"],
"cad": ["cad"],
"calendar": ["ics"],
"other": ["txt"]
},
"prevent_search_engine_indexing": true,
"meter_reading_grace_period": 0,
"inactive_contract_cutoff_years": 0,
"is_dummy": true,
"is_v3_item": true,
"portal_id": "453ad7bf-86d5-46c8-8252-bcc868df5e3c",
"portal_sk_v3": "PORTAL_CONFIG#453ad7bf-86d5-46c8-8252-bcc868df5e3c",
"origin": "string",
"pages": [
{
"slug": "dashboard",
"path": "/dashboard",
"schema": ["string"],
"visibility": {},
"content": {},
"design": {},
"blocks": {},
"order": 1,
"is_system": false,
"is_detail": false,
"detail_schema": "contact",
"is_public": true,
"parentId": "c495fef9-eeca-4019-a989-8390dcd9825b",
"is_entry_route": false,
"is_deleted": false
}
]
}'

Using stdin pipe:

cat body.json | epilot customer-portal createPortalConfig

With JSONata filter:

epilot customer-portal createPortalConfig --jsonata '$'
Sample Response
{
"entity_actions": [
{
"journey_id": "5da0a718-c822-403d-9f5d-20d4584e0528",
"slug": "contact",
"action_Label": {}
}
],
"extensions": [
{
"id": "string",
"status": "installed",
"options": {}
}
],
"extension_hooks": {},
"default_user_to_notify": {
"onPendingUser": [
{}
]
},
"enabled": true,
"name": "Installer Portal",
"domain": "abc.com",
"is_epilot_domain": true,
"epilot_domain": "example-portal-1.ecp.epilot.io",
"domain_settings": {
"is_custom_domain_enabled": true,
"is_epilot_domain_enabled": true,
"is_redirection_enabled": true
},
"design_id": "5da0a718-c822-403d-9f5d-20d4584e0528",
"self_registration_setting": "ALLOW_WITH_CONTACT_CREATION",
"user_account_self_management": false,
"feature_settings": {
"start_page": true,
"billing": true,
"change_due_date": true,
"new_design": true
},
"accessToken": "string",
"advanced_mfa": {
"enabled": true
},
"auth_settings": {
"passwordless_login": {
"enabled": true
},
"entry_point": "PASSWORD",
"preferred_sso_providers": ["office-365-login"],
"auto_redirect_to_sso": true
},
"cognito_details": {
"cognito_user_pool_client_id": "6bsd0jkgoie74k2i8mrhc1vest",
"cognito_user_pool_arn": "arn:aws:cognito-idp:us-east-1:123412341234:userpool/us-east-1_123412341",
"cognito_user_pool_id": "eu-central-1_CUEQRNbUb",
"password_policy": {
"minimum_length": 8,
"maximum_length": 256,
"require_lowercase": true,
"require_uppercase": true,
"require_numbers": true,
"require_symbols": true
}
},
"config": "string",
"contact_identifiers": ["email", "last_name"],
"approval_state_attributes": {
"contact": ["name", "address"],
"contract": ["installment_amount"]
},
"email_templates": {
"confirmAccount": "5da0a718-c822-403d-9f5d-20d4584e0528",
"advancedAuth": "5da0a718-c822-403d-9f5d-20d4584e0528",
"advancedMFA": "5da0a718-c822-403d-9f5d-20d4584e0528",
"journeySignUp": "5da0a718-c822-403d-9f5d-20d4584e0528",
"journeySignInOneTimePassword": "5da0a718-c822-403d-9f5d-20d4584e0528",
"journeyLoginOTP": "5da0a718-c822-403d-9f5d-20d4584e0528",
"forgotPassword": "5da0a718-c822-403d-9f5d-20d4584e0528",
"invitation": "5da0a718-c822-403d-9f5d-20d4584e0528",
"partnerInvitation": "5da0a718-c822-403d-9f5d-20d4584e0528",
"onNewQuote": "5da0a718-c822-403d-9f5d-20d4584e0528",
"onMapAPendingUser": "5da0a718-c822-403d-9f5d-20d4584e0528",
"onDocUpload": "5da0a718-c822-403d-9f5d-20d4584e0528",
"onWorkflowStepAssigned": "5da0a718-c822-403d-9f5d-20d4584e0528",
"confirmEmailUpdate": "5da0a718-c822-403d-9f5d-20d4584e0528",
"verifyCodeToSetPassword": "5da0a718-c822-403d-9f5d-20d4584e0528"
},
"images": {
"orderLeftTeaser": "https://epilot-bucket.s3.eu-central-1.amazonaws.com/12344/6538fddb-f0e9-4f0f-af51-6e57891ff20a/order-left-teaser.jpeg",
"orderRightTeaser": "https://epilot-bucket.s3.eu-central-1.amazonaws.com/12344/6538fddb-f0e9-4f0f-af51-6e57891ff20a/order-right-teaser.jpeg",
"welcomeBanner": "https://epilot-bucket.s3.eu-central-1.amazonaws.com/12344/6538fddb-f0e9-4f0f-af51-6e57891ff20a/welcome-banner.jpeg"
},
"entity_identifiers": {
"type": {
"isEnabled": true,
"attributes": ["contract_number"]
}
},
"contract_identifiers": [
{
"name": "email",
"schema": "contact"
},
{
"name": "last_name",
"schema": "contact"
}
],
"contract_selector_config": {
"show_inactive": true,
"title_path": "string"
},
"registration_identifiers": [
{
"name": "last_name",
"schema": "contact"
},
{
"name": "contract_number",
"schema": "contract"
}
],
"triggered_journeys": [
{
"trigger_name": "FIRST_LOGIN",
"journey_id": "5da0a718-c822-403d-9f5d-20d4584e0528"
}
],
"entity_edit_rules": [
{
"slug": "contact",
"attribute": "first_name",
"rule_type": "cadence",
"cadence_period_type": "days",
"cadence_period": 1,
"changes_allowed": 1,
"grace_period": 1,
"allowed_increment": "10%",
"allowed_decrement": "10%",
"number_of_days_before_restriction": 10
}
],
"allowed_file_extensions": {
"document": ["pdf"],
"image": ["jpg"],
"spreadsheet": ["xls"],
"presentation": ["ppt"],
"audioVideo": ["mp4"],
"email": ["eml"],
"archive": ["zip"],
"cad": ["cad"],
"calendar": ["ics"],
"other": ["txt"]
},
"prevent_search_engine_indexing": true,
"meter_reading_grace_period": 0,
"inactive_contract_cutoff_years": 0,
"is_dummy": true,
"is_v3_item": true,
"portal_id": "453ad7bf-86d5-46c8-8252-bcc868df5e3c",
"portal_sk_v3": "PORTAL_CONFIG#453ad7bf-86d5-46c8-8252-bcc868df5e3c",
"origin": "string",
"organization_id": 12345,
"org_settings": {
"canary": {
"enabled": true
},
"notracking": {
"enabled": true
}
},
"feature_flags": {},
"grants": [
{
"action": "entity-read",
"resource": "entity:123:contact:f7c22299-ca72-4bca-8538-0a88eeefc947",
"effect": "allow"
}
],
"identity_providers": [
{
"slug": "office-365-login",
"display_name": "Office 365 Login",
"oidc_config": {},
"mobile_oidc_config": {}
}
],
"pages": [
{
"slug": "dashboard",
"path": "/dashboard",
"schema": ["string"],
"visibility": {},
"content": {},
"design": {},
"blocks": {},
"order": 1,
"is_system": false,
"is_detail": false,
"detail_schema": "contact",
"is_public": true,
"parentId": "c495fef9-eeca-4019-a989-8390dcd9825b",
"is_entry_route": false,
"is_deleted": false,
"id": "c495fef9-eeca-4019-a989-8390dcd9825b",
"last_modified_at": "2021-02-09T12:41:43.662Z"
}
]
}

getPortalConfigV3โ€‹

Retrieves a specific portal configuration by ID.

GET /v3/portal/config/{portal_id}

Parameters

NameInTypeRequiredDescription
portal_idpathstring (uuid)YesPortal ID (readonly UUID generated on portal creation)

Sample Call

epilot customer-portal getPortalConfigV3 \
-p portal_id=5da0a718-c822-403d-9f5d-20d4584e0528

Using positional args for path parameters:

epilot customer-portal getPortalConfigV3 5da0a718-c822-403d-9f5d-20d4584e0528

With JSONata filter:

epilot customer-portal getPortalConfigV3 -p portal_id=5da0a718-c822-403d-9f5d-20d4584e0528 --jsonata '$'
Sample Response
{
"entity_actions": [
{
"journey_id": "5da0a718-c822-403d-9f5d-20d4584e0528",
"slug": "contact",
"action_Label": {}
}
],
"extensions": [
{
"id": "string",
"status": "installed",
"options": {}
}
],
"extension_hooks": {},
"default_user_to_notify": {
"onPendingUser": [
{}
]
},
"enabled": true,
"name": "Installer Portal",
"domain": "abc.com",
"is_epilot_domain": true,
"epilot_domain": "example-portal-1.ecp.epilot.io",
"domain_settings": {
"is_custom_domain_enabled": true,
"is_epilot_domain_enabled": true,
"is_redirection_enabled": true
},
"design_id": "5da0a718-c822-403d-9f5d-20d4584e0528",
"self_registration_setting": "ALLOW_WITH_CONTACT_CREATION",
"user_account_self_management": false,
"feature_settings": {
"start_page": true,
"billing": true,
"change_due_date": true,
"new_design": true
},
"accessToken": "string",
"advanced_mfa": {
"enabled": true
},
"auth_settings": {
"passwordless_login": {
"enabled": true
},
"entry_point": "PASSWORD",
"preferred_sso_providers": ["office-365-login"],
"auto_redirect_to_sso": true
},
"cognito_details": {
"cognito_user_pool_client_id": "6bsd0jkgoie74k2i8mrhc1vest",
"cognito_user_pool_arn": "arn:aws:cognito-idp:us-east-1:123412341234:userpool/us-east-1_123412341",
"cognito_user_pool_id": "eu-central-1_CUEQRNbUb",
"password_policy": {
"minimum_length": 8,
"maximum_length": 256,
"require_lowercase": true,
"require_uppercase": true,
"require_numbers": true,
"require_symbols": true
}
},
"config": "string",
"contact_identifiers": ["email", "last_name"],
"approval_state_attributes": {
"contact": ["name", "address"],
"contract": ["installment_amount"]
},
"email_templates": {
"confirmAccount": "5da0a718-c822-403d-9f5d-20d4584e0528",
"advancedAuth": "5da0a718-c822-403d-9f5d-20d4584e0528",
"advancedMFA": "5da0a718-c822-403d-9f5d-20d4584e0528",
"journeySignUp": "5da0a718-c822-403d-9f5d-20d4584e0528",
"journeySignInOneTimePassword": "5da0a718-c822-403d-9f5d-20d4584e0528",
"journeyLoginOTP": "5da0a718-c822-403d-9f5d-20d4584e0528",
"forgotPassword": "5da0a718-c822-403d-9f5d-20d4584e0528",
"invitation": "5da0a718-c822-403d-9f5d-20d4584e0528",
"partnerInvitation": "5da0a718-c822-403d-9f5d-20d4584e0528",
"onNewQuote": "5da0a718-c822-403d-9f5d-20d4584e0528",
"onMapAPendingUser": "5da0a718-c822-403d-9f5d-20d4584e0528",
"onDocUpload": "5da0a718-c822-403d-9f5d-20d4584e0528",
"onWorkflowStepAssigned": "5da0a718-c822-403d-9f5d-20d4584e0528",
"confirmEmailUpdate": "5da0a718-c822-403d-9f5d-20d4584e0528",
"verifyCodeToSetPassword": "5da0a718-c822-403d-9f5d-20d4584e0528"
},
"images": {
"orderLeftTeaser": "https://epilot-bucket.s3.eu-central-1.amazonaws.com/12344/6538fddb-f0e9-4f0f-af51-6e57891ff20a/order-left-teaser.jpeg",
"orderRightTeaser": "https://epilot-bucket.s3.eu-central-1.amazonaws.com/12344/6538fddb-f0e9-4f0f-af51-6e57891ff20a/order-right-teaser.jpeg",
"welcomeBanner": "https://epilot-bucket.s3.eu-central-1.amazonaws.com/12344/6538fddb-f0e9-4f0f-af51-6e57891ff20a/welcome-banner.jpeg"
},
"entity_identifiers": {
"type": {
"isEnabled": true,
"attributes": ["contract_number"]
}
},
"contract_identifiers": [
{
"name": "email",
"schema": "contact"
},
{
"name": "last_name",
"schema": "contact"
}
],
"contract_selector_config": {
"show_inactive": true,
"title_path": "string"
},
"registration_identifiers": [
{
"name": "last_name",
"schema": "contact"
},
{
"name": "contract_number",
"schema": "contract"
}
],
"triggered_journeys": [
{
"trigger_name": "FIRST_LOGIN",
"journey_id": "5da0a718-c822-403d-9f5d-20d4584e0528"
}
],
"entity_edit_rules": [
{
"slug": "contact",
"attribute": "first_name",
"rule_type": "cadence",
"cadence_period_type": "days",
"cadence_period": 1,
"changes_allowed": 1,
"grace_period": 1,
"allowed_increment": "10%",
"allowed_decrement": "10%",
"number_of_days_before_restriction": 10
}
],
"allowed_file_extensions": {
"document": ["pdf"],
"image": ["jpg"],
"spreadsheet": ["xls"],
"presentation": ["ppt"],
"audioVideo": ["mp4"],
"email": ["eml"],
"archive": ["zip"],
"cad": ["cad"],
"calendar": ["ics"],
"other": ["txt"]
},
"prevent_search_engine_indexing": true,
"meter_reading_grace_period": 0,
"inactive_contract_cutoff_years": 0,
"is_dummy": true,
"is_v3_item": true,
"portal_id": "453ad7bf-86d5-46c8-8252-bcc868df5e3c",
"portal_sk_v3": "PORTAL_CONFIG#453ad7bf-86d5-46c8-8252-bcc868df5e3c",
"origin": "string",
"organization_id": 12345,
"org_settings": {
"canary": {
"enabled": true
},
"notracking": {
"enabled": true
}
},
"feature_flags": {},
"grants": [
{
"action": "entity-read",
"resource": "entity:123:contact:f7c22299-ca72-4bca-8538-0a88eeefc947",
"effect": "allow"
}
],
"identity_providers": [
{
"slug": "office-365-login",
"display_name": "Office 365 Login",
"oidc_config": {},
"mobile_oidc_config": {}
}
],
"pages": [
{
"slug": "dashboard",
"path": "/dashboard",
"schema": ["string"],
"visibility": {},
"content": {},
"design": {},
"blocks": {},
"order": 1,
"is_system": false,
"is_detail": false,
"detail_schema": "contact",
"is_public": true,
"parentId": "c495fef9-eeca-4019-a989-8390dcd9825b",
"is_entry_route": false,
"is_deleted": false,
"id": "c495fef9-eeca-4019-a989-8390dcd9825b",
"last_modified_at": "2021-02-09T12:41:43.662Z"
}
]
}

putPortalConfigโ€‹

Updates a specific portal configuration by ID.

PUT /v3/portal/config/{portal_id}

Parameters

NameInTypeRequiredDescription
portal_idpathstring (uuid)YesPortal ID (readonly UUID generated on portal creation)

Request Body (required)

Sample Call

epilot customer-portal putPortalConfig \
-p portal_id=5da0a718-c822-403d-9f5d-20d4584e0528

With request body:

epilot customer-portal putPortalConfig \
-p portal_id=5da0a718-c822-403d-9f5d-20d4584e0528 \
-d '{
"entity_actions": [
{
"journey_id": "5da0a718-c822-403d-9f5d-20d4584e0528",
"slug": "contact",
"action_Label": {}
}
],
"extensions": [
{
"id": "string",
"status": "installed",
"options": {}
}
],
"extension_hooks": {},
"default_user_to_notify": {
"onPendingUser": [
{}
]
},
"enabled": true,
"name": "Installer Portal",
"domain": "abc.com",
"is_epilot_domain": true,
"epilot_domain": "example-portal-1.ecp.epilot.io",
"domain_settings": {
"is_custom_domain_enabled": true,
"is_epilot_domain_enabled": true,
"is_redirection_enabled": true
},
"design_id": "5da0a718-c822-403d-9f5d-20d4584e0528",
"self_registration_setting": "ALLOW_WITH_CONTACT_CREATION",
"user_account_self_management": false,
"feature_settings": {
"start_page": true,
"billing": true,
"change_due_date": true,
"new_design": true
},
"accessToken": "string",
"advanced_mfa": {
"enabled": true
},
"auth_settings": {
"passwordless_login": {
"enabled": true
},
"entry_point": "PASSWORD",
"preferred_sso_providers": ["office-365-login"],
"auto_redirect_to_sso": true
},
"cognito_details": {
"cognito_user_pool_client_id": "6bsd0jkgoie74k2i8mrhc1vest",
"cognito_user_pool_arn": "arn:aws:cognito-idp:us-east-1:123412341234:userpool/us-east-1_123412341",
"cognito_user_pool_id": "eu-central-1_CUEQRNbUb",
"password_policy": {
"minimum_length": 8,
"maximum_length": 256,
"require_lowercase": true,
"require_uppercase": true,
"require_numbers": true,
"require_symbols": true
}
},
"config": "string",
"contact_identifiers": ["email", "last_name"],
"approval_state_attributes": {
"contact": ["name", "address"],
"contract": ["installment_amount"]
},
"email_templates": {
"confirmAccount": "5da0a718-c822-403d-9f5d-20d4584e0528",
"advancedAuth": "5da0a718-c822-403d-9f5d-20d4584e0528",
"advancedMFA": "5da0a718-c822-403d-9f5d-20d4584e0528",
"journeySignUp": "5da0a718-c822-403d-9f5d-20d4584e0528",
"journeySignInOneTimePassword": "5da0a718-c822-403d-9f5d-20d4584e0528",
"journeyLoginOTP": "5da0a718-c822-403d-9f5d-20d4584e0528",
"forgotPassword": "5da0a718-c822-403d-9f5d-20d4584e0528",
"invitation": "5da0a718-c822-403d-9f5d-20d4584e0528",
"partnerInvitation": "5da0a718-c822-403d-9f5d-20d4584e0528",
"onNewQuote": "5da0a718-c822-403d-9f5d-20d4584e0528",
"onMapAPendingUser": "5da0a718-c822-403d-9f5d-20d4584e0528",
"onDocUpload": "5da0a718-c822-403d-9f5d-20d4584e0528",
"onWorkflowStepAssigned": "5da0a718-c822-403d-9f5d-20d4584e0528",
"confirmEmailUpdate": "5da0a718-c822-403d-9f5d-20d4584e0528",
"verifyCodeToSetPassword": "5da0a718-c822-403d-9f5d-20d4584e0528"
},
"images": {
"orderLeftTeaser": "https://epilot-bucket.s3.eu-central-1.amazonaws.com/12344/6538fddb-f0e9-4f0f-af51-6e57891ff20a/order-left-teaser.jpeg",
"orderRightTeaser": "https://epilot-bucket.s3.eu-central-1.amazonaws.com/12344/6538fddb-f0e9-4f0f-af51-6e57891ff20a/order-right-teaser.jpeg",
"welcomeBanner": "https://epilot-bucket.s3.eu-central-1.amazonaws.com/12344/6538fddb-f0e9-4f0f-af51-6e57891ff20a/welcome-banner.jpeg"
},
"entity_identifiers": {
"type": {
"isEnabled": true,
"attributes": ["contract_number"]
}
},
"contract_identifiers": [
{
"name": "email",
"schema": "contact"
},
{
"name": "last_name",
"schema": "contact"
}
],
"contract_selector_config": {
"show_inactive": true,
"title_path": "string"
},
"registration_identifiers": [
{
"name": "last_name",
"schema": "contact"
},
{
"name": "contract_number",
"schema": "contract"
}
],
"triggered_journeys": [
{
"trigger_name": "FIRST_LOGIN",
"journey_id": "5da0a718-c822-403d-9f5d-20d4584e0528"
}
],
"entity_edit_rules": [
{
"slug": "contact",
"attribute": "first_name",
"rule_type": "cadence",
"cadence_period_type": "days",
"cadence_period": 1,
"changes_allowed": 1,
"grace_period": 1,
"allowed_increment": "10%",
"allowed_decrement": "10%",
"number_of_days_before_restriction": 10
}
],
"allowed_file_extensions": {
"document": ["pdf"],
"image": ["jpg"],
"spreadsheet": ["xls"],
"presentation": ["ppt"],
"audioVideo": ["mp4"],
"email": ["eml"],
"archive": ["zip"],
"cad": ["cad"],
"calendar": ["ics"],
"other": ["txt"]
},
"prevent_search_engine_indexing": true,
"meter_reading_grace_period": 0,
"inactive_contract_cutoff_years": 0,
"is_dummy": true,
"is_v3_item": true,
"portal_id": "453ad7bf-86d5-46c8-8252-bcc868df5e3c",
"portal_sk_v3": "PORTAL_CONFIG#453ad7bf-86d5-46c8-8252-bcc868df5e3c",
"origin": "string",
"organization_id": 12345,
"org_settings": {
"canary": {
"enabled": true
},
"notracking": {
"enabled": true
}
},
"feature_flags": {},
"grants": [
{
"action": "entity-read",
"resource": "entity:123:contact:f7c22299-ca72-4bca-8538-0a88eeefc947",
"effect": "allow"
}
],
"identity_providers": [
{
"slug": "office-365-login",
"display_name": "Office 365 Login",
"oidc_config": {},
"mobile_oidc_config": {}
}
],
"pages": [
{
"slug": "dashboard",
"path": "/dashboard",
"schema": ["string"],
"visibility": {},
"content": {},
"design": {},
"blocks": {},
"order": 1,
"is_system": false,
"is_detail": false,
"detail_schema": "contact",
"is_public": true,
"parentId": "c495fef9-eeca-4019-a989-8390dcd9825b",
"is_entry_route": false,
"is_deleted": false,
"id": "c495fef9-eeca-4019-a989-8390dcd9825b",
"last_modified_at": "2021-02-09T12:41:43.662Z"
}
]
}'

Using positional args for path parameters:

epilot customer-portal putPortalConfig 5da0a718-c822-403d-9f5d-20d4584e0528

Using stdin pipe:

cat body.json | epilot customer-portal putPortalConfig -p portal_id=5da0a718-c822-403d-9f5d-20d4584e0528

With JSONata filter:

epilot customer-portal putPortalConfig -p portal_id=5da0a718-c822-403d-9f5d-20d4584e0528 --jsonata '$'
Sample Response
{
"entity_actions": [
{
"journey_id": "5da0a718-c822-403d-9f5d-20d4584e0528",
"slug": "contact",
"action_Label": {}
}
],
"extensions": [
{
"id": "string",
"status": "installed",
"options": {}
}
],
"extension_hooks": {},
"default_user_to_notify": {
"onPendingUser": [
{}
]
},
"enabled": true,
"name": "Installer Portal",
"domain": "abc.com",
"is_epilot_domain": true,
"epilot_domain": "example-portal-1.ecp.epilot.io",
"domain_settings": {
"is_custom_domain_enabled": true,
"is_epilot_domain_enabled": true,
"is_redirection_enabled": true
},
"design_id": "5da0a718-c822-403d-9f5d-20d4584e0528",
"self_registration_setting": "ALLOW_WITH_CONTACT_CREATION",
"user_account_self_management": false,
"feature_settings": {
"start_page": true,
"billing": true,
"change_due_date": true,
"new_design": true
},
"accessToken": "string",
"advanced_mfa": {
"enabled": true
},
"auth_settings": {
"passwordless_login": {
"enabled": true
},
"entry_point": "PASSWORD",
"preferred_sso_providers": ["office-365-login"],
"auto_redirect_to_sso": true
},
"cognito_details": {
"cognito_user_pool_client_id": "6bsd0jkgoie74k2i8mrhc1vest",
"cognito_user_pool_arn": "arn:aws:cognito-idp:us-east-1:123412341234:userpool/us-east-1_123412341",
"cognito_user_pool_id": "eu-central-1_CUEQRNbUb",
"password_policy": {
"minimum_length": 8,
"maximum_length": 256,
"require_lowercase": true,
"require_uppercase": true,
"require_numbers": true,
"require_symbols": true
}
},
"config": "string",
"contact_identifiers": ["email", "last_name"],
"approval_state_attributes": {
"contact": ["name", "address"],
"contract": ["installment_amount"]
},
"email_templates": {
"confirmAccount": "5da0a718-c822-403d-9f5d-20d4584e0528",
"advancedAuth": "5da0a718-c822-403d-9f5d-20d4584e0528",
"advancedMFA": "5da0a718-c822-403d-9f5d-20d4584e0528",
"journeySignUp": "5da0a718-c822-403d-9f5d-20d4584e0528",
"journeySignInOneTimePassword": "5da0a718-c822-403d-9f5d-20d4584e0528",
"journeyLoginOTP": "5da0a718-c822-403d-9f5d-20d4584e0528",
"forgotPassword": "5da0a718-c822-403d-9f5d-20d4584e0528",
"invitation": "5da0a718-c822-403d-9f5d-20d4584e0528",
"partnerInvitation": "5da0a718-c822-403d-9f5d-20d4584e0528",
"onNewQuote": "5da0a718-c822-403d-9f5d-20d4584e0528",
"onMapAPendingUser": "5da0a718-c822-403d-9f5d-20d4584e0528",
"onDocUpload": "5da0a718-c822-403d-9f5d-20d4584e0528",
"onWorkflowStepAssigned": "5da0a718-c822-403d-9f5d-20d4584e0528",
"confirmEmailUpdate": "5da0a718-c822-403d-9f5d-20d4584e0528",
"verifyCodeToSetPassword": "5da0a718-c822-403d-9f5d-20d4584e0528"
},
"images": {
"orderLeftTeaser": "https://epilot-bucket.s3.eu-central-1.amazonaws.com/12344/6538fddb-f0e9-4f0f-af51-6e57891ff20a/order-left-teaser.jpeg",
"orderRightTeaser": "https://epilot-bucket.s3.eu-central-1.amazonaws.com/12344/6538fddb-f0e9-4f0f-af51-6e57891ff20a/order-right-teaser.jpeg",
"welcomeBanner": "https://epilot-bucket.s3.eu-central-1.amazonaws.com/12344/6538fddb-f0e9-4f0f-af51-6e57891ff20a/welcome-banner.jpeg"
},
"entity_identifiers": {
"type": {
"isEnabled": true,
"attributes": ["contract_number"]
}
},
"contract_identifiers": [
{
"name": "email",
"schema": "contact"
},
{
"name": "last_name",
"schema": "contact"
}
],
"contract_selector_config": {
"show_inactive": true,
"title_path": "string"
},
"registration_identifiers": [
{
"name": "last_name",
"schema": "contact"
},
{
"name": "contract_number",
"schema": "contract"
}
],
"triggered_journeys": [
{
"trigger_name": "FIRST_LOGIN",
"journey_id": "5da0a718-c822-403d-9f5d-20d4584e0528"
}
],
"entity_edit_rules": [
{
"slug": "contact",
"attribute": "first_name",
"rule_type": "cadence",
"cadence_period_type": "days",
"cadence_period": 1,
"changes_allowed": 1,
"grace_period": 1,
"allowed_increment": "10%",
"allowed_decrement": "10%",
"number_of_days_before_restriction": 10
}
],
"allowed_file_extensions": {
"document": ["pdf"],
"image": ["jpg"],
"spreadsheet": ["xls"],
"presentation": ["ppt"],
"audioVideo": ["mp4"],
"email": ["eml"],
"archive": ["zip"],
"cad": ["cad"],
"calendar": ["ics"],
"other": ["txt"]
},
"prevent_search_engine_indexing": true,
"meter_reading_grace_period": 0,
"inactive_contract_cutoff_years": 0,
"is_dummy": true,
"is_v3_item": true,
"portal_id": "453ad7bf-86d5-46c8-8252-bcc868df5e3c",
"portal_sk_v3": "PORTAL_CONFIG#453ad7bf-86d5-46c8-8252-bcc868df5e3c",
"origin": "string",
"organization_id": 12345,
"org_settings": {
"canary": {
"enabled": true
},
"notracking": {
"enabled": true
}
},
"feature_flags": {},
"grants": [
{
"action": "entity-read",
"resource": "entity:123:contact:f7c22299-ca72-4bca-8538-0a88eeefc947",
"effect": "allow"
}
],
"identity_providers": [
{
"slug": "office-365-login",
"display_name": "Office 365 Login",
"oidc_config": {},
"mobile_oidc_config": {}
}
],
"pages": [
{
"slug": "dashboard",
"path": "/dashboard",
"schema": ["string"],
"visibility": {},
"content": {},
"design": {},
"blocks": {},
"order": 1,
"is_system": false,
"is_detail": false,
"detail_schema": "contact",
"is_public": true,
"parentId": "c495fef9-eeca-4019-a989-8390dcd9825b",
"is_entry_route": false,
"is_deleted": false,
"id": "c495fef9-eeca-4019-a989-8390dcd9825b",
"last_modified_at": "2021-02-09T12:41:43.662Z"
}
]
}

deletePortalConfigโ€‹

Deletes a specific portal configuration by ID.

DELETE /v3/portal/config/{portal_id}

Parameters

NameInTypeRequiredDescription
portal_idpathstring (uuid)YesPortal ID (readonly UUID generated on portal creation)

Sample Call

epilot customer-portal deletePortalConfig \
-p portal_id=5da0a718-c822-403d-9f5d-20d4584e0528

Using positional args for path parameters:

epilot customer-portal deletePortalConfig 5da0a718-c822-403d-9f5d-20d4584e0528

With JSONata filter:

epilot customer-portal deletePortalConfig -p portal_id=5da0a718-c822-403d-9f5d-20d4584e0528 --jsonata '$'

listAllPortalConfigsโ€‹

Retrieves all portal configurations.

GET /v3/portal/configs

Sample Call

epilot customer-portal listAllPortalConfigs

With JSONata filter:

epilot customer-portal listAllPortalConfigs --jsonata 'data'
Sample Response
{
"data": [
{
"entity_actions": [],
"extensions": [],
"extension_hooks": {},
"default_user_to_notify": {},
"enabled": true,
"name": "Installer Portal",
"domain": "abc.com",
"is_epilot_domain": true,
"epilot_domain": "example-portal-1.ecp.epilot.io",
"domain_settings": {},
"design_id": "5da0a718-c822-403d-9f5d-20d4584e0528",
"self_registration_setting": "ALLOW_WITH_CONTACT_CREATION",
"user_account_self_management": false,
"feature_settings": {},
"accessToken": "string",
"advanced_mfa": {},
"auth_settings": {},
"cognito_details": {},
"config": "string",
"contact_identifiers": ["email", "last_name"],
"approval_state_attributes": {},
"email_templates": {},
"images": {},
"entity_identifiers": {},
"contract_identifiers": [],
"contract_selector_config": {},
"registration_identifiers": [],
"triggered_journeys": [],
"entity_edit_rules": [],
"allowed_file_extensions": {},
"prevent_search_engine_indexing": true,
"meter_reading_grace_period": 0,
"inactive_contract_cutoff_years": 0,
"is_dummy": true,
"is_v3_item": true,
"portal_id": "453ad7bf-86d5-46c8-8252-bcc868df5e3c",
"portal_sk_v3": "PORTAL_CONFIG#453ad7bf-86d5-46c8-8252-bcc868df5e3c",
"origin": "string",
"organization_id": 12345,
"org_settings": {},
"feature_flags": {},
"grants": [],
"identity_providers": [],
"pages": []
}
]
}

swapPortalConfigโ€‹

Swaps the portal configuration of two portals.

POST /v3/portal/config/swap

Request Body (required)

Sample Call

epilot customer-portal swapPortalConfig

With request body:

epilot customer-portal swapPortalConfig \
-d '{
"source_portal_id": "453ad7bf-86d5-46c8-8252-bcc868df5e3c",
"target_portal_id": "453ad7bf-86d5-46c8-8252-bcc868df5e3c",
"items_to_swap": ["all"]
}'

Using stdin pipe:

cat body.json | epilot customer-portal swapPortalConfig

With JSONata filter:

epilot customer-portal swapPortalConfig --jsonata 'message'
Sample Response
{
"message": "Domain and users swapped successfully."
}

invitePartnerโ€‹

Invites a partner to a portal

POST /v3/portal/partner/invite

Request Body (required)

Sample Call

epilot customer-portal invitePartner \
-d '{"email":"string","represents_contact_list":["5da0a718-c822-403d-9f5d-20d4584e0528"]}'

Using stdin pipe:

cat body.json | epilot customer-portal invitePartner

With JSONata filter:

epilot customer-portal invitePartner --jsonata 'message'
Sample Response
{
"message": "User invited successfully"
}

listBusinessPartnersโ€‹

Lists all business partners linked to the businessaccount

GET /v3/portal/partner/list

Sample Call

epilot customer-portal listBusinessPartners

With JSONata filter:

epilot customer-portal listBusinessPartners --jsonata 'data'
Sample Response
{
"data": [
{
"_id": "5da0a718-c822-403d-9f5d-20d4584e0528",
"has_portal_user": true,
"registration_status": "Registration Pending",
"email": "john.doe@example.com",
"_title": "John Doe",
"first_name": "John",
"last_name": "Doe",
"access_status": true
}
]
}

resendPartnerInvitationโ€‹

Resends an invitation email to a partner

POST /v3/portal/partner/{partner_id}/resend-invitation

Parameters

NameInTypeRequiredDescription
partner_idpathstringYes

Sample Call

epilot customer-portal resendPartnerInvitation \
-p partner_id=123e4567-e89b-12d3-a456-426614174000

Using positional args for path parameters:

epilot customer-portal resendPartnerInvitation 123e4567-e89b-12d3-a456-426614174000

With JSONata filter:

epilot customer-portal resendPartnerInvitation -p partner_id=123e4567-e89b-12d3-a456-426614174000 --jsonata 'message'
Sample Response
{
"message": "Partner invitation resent successfully"
}

revokePartnerโ€‹

Revokes a partner from a portal

DELETE /v3/portal/partner/{partner_id}/revoke

Parameters

NameInTypeRequiredDescription
partner_idpathstringYes

Sample Call

epilot customer-portal revokePartner \
-p partner_id=123e4567-e89b-12d3-a456-426614174000

Using positional args for path parameters:

epilot customer-portal revokePartner 123e4567-e89b-12d3-a456-426614174000

With JSONata filter:

epilot customer-portal revokePartner -p partner_id=123e4567-e89b-12d3-a456-426614174000 --jsonata 'message'
Sample Response
{
"message": "Partner revoked from portal successfully"
}

disablePartnerโ€‹

Disables a partner from a portal

POST /v3/portal/partner/{partner_id}/disable

Parameters

NameInTypeRequiredDescription
partner_idpathstringYes

Sample Call

epilot customer-portal disablePartner \
-p partner_id=123e4567-e89b-12d3-a456-426614174000

Using positional args for path parameters:

epilot customer-portal disablePartner 123e4567-e89b-12d3-a456-426614174000

With JSONata filter:

epilot customer-portal disablePartner -p partner_id=123e4567-e89b-12d3-a456-426614174000 --jsonata 'message'
Sample Response
{
"message": "Partner disabled from portal successfully"
}

enablePartnerโ€‹

Enables a partner from a portal

POST /v3/portal/partner/{partner_id}/enable

Parameters

NameInTypeRequiredDescription
partner_idpathstringYes

Sample Call

epilot customer-portal enablePartner \
-p partner_id=123e4567-e89b-12d3-a456-426614174000

Using positional args for path parameters:

epilot customer-portal enablePartner 123e4567-e89b-12d3-a456-426614174000

With JSONata filter:

epilot customer-portal enablePartner -p partner_id=123e4567-e89b-12d3-a456-426614174000 --jsonata 'message'
Sample Response
{
"message": "Partner enabled from portal successfully"
}