@epilot/customer-portal-client
Version:
API Client for epilot portal API
1,513 lines (1,512 loc) • 638 kB
TypeScript
import type {
OpenAPIClient,
Parameters,
UnknownParamsObject,
OperationResponse,
AxiosRequestConfig,
} from 'openapi-client-axios';
declare namespace Components {
namespace Responses {
export interface ConfirmUserInvalidRequest {
/**
* Error message
*/
message?: string;
reason: "invalid_token";
}
export type Conflict = Schemas.ErrorResp;
export interface ContractAssignmentConflict {
/**
* Error message
*/
message?: string;
/**
* Reason why the contract is not assignable. If the reason is "MULTIPLE", the contract is not assignable because multiple contracts were found and the business logic does not allow it.
*/
reason: "DRAFT" | "MULTIPLE";
}
export type Forbidden = Schemas.ErrorResp;
export type ForbiddenByRule = Schemas.ErrorResp | Schemas.FailedRuleErrorResp;
export type InternalServerError = Schemas.ErrorResp;
export type InvalidRequest = Schemas.ErrorResp;
export type InvalidRequestCreateMeterReading = {
reason?: "plausibility_check_failed" | "contract_period" | "no_counter" | "no_direction" | "timestamp_future" | "less_than_previous" | "greater_than_subsequent" | "meter_decommissioned" | "plausibility_check_failed";
upper_limit: number;
lower_limit: number;
/**
* Error message
*/
message?: string;
} | void;
export type NotFound = Schemas.ErrorResp;
export type Unauthorized = Schemas.ErrorResp;
}
namespace Schemas {
export interface AcceptanceDecision {
/**
* Acceptance decision
*/
decision: "accept" | "decline";
}
export interface AccountExistsRequest {
/**
* ID of the organization
* example:
* 728
*/
org_id: string;
/**
* Identifier-value pairs per schema to identify an account during portal user registration
* example:
* {
* "account": {
* "customer_number": "ACC-123456"
* },
* "contract": {
* "contract_number": "123456"
* }
* }
*/
registration_identifiers: {
[name: string]: {
[name: string]: string;
};
};
}
export interface ActionLabel {
en?: string | null;
de?: string | null;
}
export interface ActionWidget {
id: string;
type: "ACTION_WIDGET" | "CONTENT_WIDGET" | "ENTITY_WIDGET" | "TEASER_WIDGET" | "DOCUMENT_WIDGET" | "PAYMENT_WIDGET" | "METER_READING_WIDGET" | "METER_CHART_WIDGET" | "CAMPAIGN_WIDGET" | "PRODUCT_RECOMMENDATIONS_WIDGET";
/**
* Index of the widget in the list, used for ordering (left or right)
*/
listIndex: number;
headline?: {
en?: string;
de?: string;
};
subHeadline?: {
en?: string;
de?: string;
};
actions?: WidgetAction[];
}
export interface Activity {
/**
* example:
* MyCustomActivity
*/
type: string;
/**
* Title for activity. Supports handlebars syntax.
* example:
* My custom activity
*/
title: string;
/**
* Message for activity. Supports handlebars syntax.
* example:
* {{caller}} did something with {{entity payload.entity.id}}.
*/
message: string;
/**
* example:
* {
* "entity": {
* "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
* "schema": "contact"
* }
* }
*/
payload?: {
[name: string]: any;
};
}
export interface ActivityCallerContext {
[name: string]: any;
PortalAuth?: {
/**
* example:
* {
* "cognito:username": "john@doe.com",
* "custom:contact_entity_id": "7579d22f-9400-41d1-b460-04730239ee91",
* "custom:org_id": "123456",
* "custom:origin": "END_CUSTOMER_PORTAL",
* "custom:portal_user_id": "06c78f9d-af75-4483-893d-a3fad524400f",
* "email": "john@doe.com",
* "email_verified": true,
* "exp": 1694693219,
* "iat": 1694689619,
* "sub": "8cc73157-3dc4-47f3-b163-d3a5039bba72"
* }
*/
token?: {
/**
* example:
* 8cc73157-3dc4-47f3-b163-d3a5039bba72
*/
sub?: string;
/**
* example:
* john@doe.com
*/
email?: string;
/**
* example:
* john@doe.com
*/
"cognito:username"?: string;
"custom:portal_user_id"?: /**
* Entity ID
* example:
* 5da0a718-c822-403d-9f5d-20d4584e0528
*/
EntityId /* uuid */;
"custom:contact_entity_id"?: /**
* Entity ID
* example:
* 5da0a718-c822-403d-9f5d-20d4584e0528
*/
EntityId /* uuid */;
};
};
}
/**
* See https://github.com/ulid/spec
* example:
* 01F130Q52Q6MWSNS8N2AVXV4JN
*/
export type ActivityId = string; // ulid
export interface ActivityItem {
_id?: /**
* See https://github.com/ulid/spec
* example:
* 01F130Q52Q6MWSNS8N2AVXV4JN
*/
ActivityId /* ulid */;
timestamp?: string; // date-time
/**
* example:
* MyCustomActivity
*/
type: string;
/**
* Title for activity. Supports handlebars syntax.
* example:
* My custom activity
*/
title: string;
/**
* Message for activity. Supports handlebars syntax.
* example:
* {{caller}} did something with {{entity payload.entity.id}}.
*/
message: string;
/**
* example:
* {
* "entity": {
* "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
* "schema": "contact"
* }
* }
*/
payload?: {
[name: string]: any;
entity?: {
id?: /**
* Entity ID
* example:
* 5da0a718-c822-403d-9f5d-20d4584e0528
*/
EntityId /* uuid */;
schema?: string;
};
caller?: ActivityCallerContext;
};
}
export interface AdminUser {
[name: string]: any;
/**
* example:
* user
*/
type?: string | null;
/**
* example:
* 123456
*/
user_id?: string;
/**
* example:
* John
*/
display_name?: string | null;
image_uri?: {
/**
* example:
* https://fuafjvoHKsu.cloudimg.io/v7/e-mage-sam-bucket-dev.s3.eu-central-1.amazonaws.com/files/fuafjvoHKsudhfagweucjasdvga/original
*/
original?: string | null;
/**
* example:
* https://fuafjvoHKsu.cloudimg.io/v7/e-mage-sam-bucket-dev.s3.eu-central-1.amazonaws.com/files/fuafjvoHKsudhfagweucjasdvga/original?w=32&h=32
*/
thumbnail_32?: string | null;
/**
* example:
* https://fuafjvoHKsu.cloudimg.io/v7/e-mage-sam-bucket-dev.s3.eu-central-1.amazonaws.com/files/fuafjvoHKsudhfagweucjasdvga/original?w=64&h=64
*/
thumbnail_64?: string | null;
/**
* example:
* fuafjvoHKsudhfagweucjasdvga
*/
key?: string | null;
} | null;
/**
* example:
* 123
*/
org_id?: string;
/**
* example:
* j.doe@epilot.cloud
*/
email?: string | null;
/**
* example:
* 12345 67890
*/
phone?: string | null;
}
/**
* Allowed file extensions for upload
*/
export interface AllowedFileExtensions {
document?: string[];
image?: string[];
spreadsheet?: string[];
presentation?: string[];
audioVideo?: string[];
email?: string[];
archive?: string[];
cad?: string[];
calendar?: string[];
other?: string[];
}
/**
* Dictionary of epilot user attributes to claims
*/
export interface AttributeMappingConfig {
contact: {
[name: string]: any;
/**
* example:
* email
*/
email: string;
/**
* example:
* first_name
*/
first_name?: string;
/**
* example:
* last_name
*/
last_name?: string;
/**
* example:
* tel
*/
phone?: string;
/**
* example:
* language
*/
preferred_language?: string;
/**
* The concession of the user. For eg: GPE, EPE, WPE
* example:
* GPE
*/
concession?: string;
/**
* The installer number of the user
* example:
* 123456
*/
installer_number?: string;
};
account?: {
[name: string]: any;
/**
* example:
* company_name
*/
name?: string;
/**
* example:
* street_name
*/
street?: string;
/**
* example:
* house_number
*/
house_number?: string;
/**
* example:
* postal_code
*/
postal_code?: string;
/**
* example:
* city
*/
city?: string;
};
portal_user?: {
[name: string]: any;
/**
* example:
* access_status
*/
access_status?: string;
/**
* example:
* expires_at
*/
expires_at?: string;
};
concession_attributes?: {
/**
* example:
* water
*/
water?: string;
/**
* example:
* energy
*/
energy?: string;
/**
* example:
* gas
*/
gas?: string;
};
}
export interface AuthConfig {
/**
* AWS Cognito User Pool ID
* example:
* eu-central-1_CUEQRNbUb
*/
user_pool_id: string;
/**
* AWS Cognito User Pool Client ID
* example:
* 6bsd0jkgoie74k2i8mrhc1vest
*/
user_pool_client_id: string;
/**
* AWS Cognito User Pool Identity Pool ID
* example:
* eu-central-1:a63af1f7-ab86-4ab5-a0eb-f461cb37c2b1
*/
user_pool_identity_pool_id?: string;
/**
* Portal ID
* example:
* 7h2hwdj7hhjsdcjkq03eidna3ep
*/
portal_id: string;
}
export interface Balance {
/**
* Current balance of the customer in cents. (precision 2)
* example:
* 8990
*/
balance?: number;
/**
* Current balance of the customer in decimal string representation.
* example:
* 89.90
*/
balance_decimal?: number;
balance_currency?: /**
* Currency code in ISO 4217 format
* example:
* EUR
*/
Currency;
}
/**
* A base billing event to be inherited by all billing events.
*/
export interface BaseBillingEvent {
[name: string]: any;
_id: /**
* Entity ID
* example:
* 5da0a718-c822-403d-9f5d-20d4584e0528
*/
EntityId /* uuid */;
/**
* Title of the entity
* example:
* Example Entity
*/
_title: string;
/**
* Organization ID the entity belongs to
* example:
* 123
*/
_org: string;
/**
* Array of entity tags
* example:
* [
* "example",
* "mock"
* ]
*/
_tags?: string[];
/**
* Creation timestamp of the entity
* example:
* 2021-02-09T12:41:43.662Z
*/
_created_at: string; // date-time
/**
* Last update timestamp of the entity
* example:
* 2021-02-09T12:41:43.662Z
*/
_updated_at: string; // date-time
/**
* Template outputs with search highlight <em> tags merged in. Only present when highlight is requested and matches exist.
*/
templates_output_highlighted?: {
[name: string]: string | {
[name: string]: string;
};
};
/**
* Highlighted fragments for search matches on fields not shown in template content. Max 1 entry.
*/
search_snippets?: {
/**
* Human-readable field label
*/
field?: string;
/**
* Highlighted text fragment with <em> tags
*/
fragment?: string;
}[];
/**
* Amount to be paid in cents i.e. precision 2
* example:
* 10050
*/
billing_amount?: number;
/**
* Amount to be paid in cents in decimal string representation
* example:
* 100.50
*/
billing_amount_decimal?: string;
billing_currency?: /**
* Currency code in ISO 4217 format
* example:
* EUR
*/
Currency;
/**
* Unique identifier for event, used to reference the event to a 3rd party resource such as a SAP Installment.
* example:
* d4fb2a4e-3f74-4fc4-8fba-6fdaaaa3b08e
*/
external_id?: string;
contract: {
$relation?: {
/**
* Entity ID for the related contract.
* example:
* f589786b-3024-43cd-9cb3-5a3c953f2896
*/
entity_id?: string;
}[];
};
}
export interface BaseEntity {
/**
* Entity ID
* example:
* 3fa85f64-5717-4562-b3fc-2c963f66afa6
*/
_id: /**
* Entity ID
* example:
* 5da0a718-c822-403d-9f5d-20d4584e0528
*/
EntityId /* uuid */;
/**
* Title of the entity
* example:
* Example Entity
*/
_title: string;
/**
* Organization ID the entity belongs to
* example:
* 123
*/
_org: string;
/**
* Array of entity tags
* example:
* [
* "example",
* "mock"
* ]
*/
_tags?: string[];
/**
* Creation timestamp of the entity
* example:
* 2021-02-09T12:41:43.662Z
*/
_created_at: string; // date-time
/**
* Last update timestamp of the entity
* example:
* 2021-02-09T12:41:43.662Z
*/
_updated_at: string; // date-time
}
/**
* A billing account
*/
export interface BillingAccount {
[name: string]: any;
_id: /**
* Entity ID
* example:
* 5da0a718-c822-403d-9f5d-20d4584e0528
*/
EntityId /* uuid */;
/**
* Title of the entity
* example:
* Example Entity
*/
_title: string;
/**
* Organization ID the entity belongs to
* example:
* 123
*/
_org: string;
/**
* Array of entity tags
* example:
* [
* "example",
* "mock"
* ]
*/
_tags?: string[];
/**
* Creation timestamp of the entity
* example:
* 2021-02-09T12:41:43.662Z
*/
_created_at: string; // date-time
/**
* Last update timestamp of the entity
* example:
* 2021-02-09T12:41:43.662Z
*/
_updated_at: string; // date-time
/**
* Template outputs with search highlight <em> tags merged in. Only present when highlight is requested and matches exist.
*/
templates_output_highlighted?: {
[name: string]: string | {
[name: string]: string;
};
};
/**
* Highlighted fragments for search matches on fields not shown in template content. Max 1 entry.
*/
search_snippets?: {
/**
* Human-readable field label
*/
field?: string;
/**
* Highlighted text fragment with <em> tags
*/
fragment?: string;
}[];
/**
* Billing account number
*/
billing_account_number?: string;
/**
* Balance of the billing account
*/
balance?: number;
/**
* Balance of the billing account in decimal string representation
*/
balance_decimal?: string;
balance_currency?: /**
* Currency code in ISO 4217 format
* example:
* EUR
*/
Currency;
billing_contact?: {
$relation?: {
/**
* Entity ID for the related billing contact.
* example:
* f589786b-3024-43cd-9cb3-5a3c953f2896
*/
entity_id?: string;
}[];
};
billing_address?: {
$relation_ref?: {
/**
* Entity ID for the related billing address.
* example:
* f589786b-3024-43cd-9cb3-5a3c953f2896
*/
entity_id?: string;
/**
* Path to the related billing address.
* example:
* address
*/
path?: string;
/**
* ID of the related billing address.
* example:
* f589786b-3024-43cd-9cb3-5a3c953f2896
*/
_id?: string;
}[];
};
}
/**
* An entity that describes a billing event such as a future installment or a reimbursement back to the customer.
*/
export type BillingEvent = {
/**
* Amount to be paid in cents in decimal string representation
* example:
* 100.50
*/
billing_amount_decimal?: string;
} & (/* An entity that describes a billing event such as a future installment or a reimbursement back to the customer. */ /* An entity that describes an installment billing event. */ InstallmentEvent | /* An entity that describes a reimbursement billing event. */ ReimbursementEvent);
export interface Block {
[name: string]: any;
props?: BlockProps;
/**
* The id of the parent block
* example:
* c495fef9-eeca-4019-a989-8390dcd9825b
*/
parentId?: string;
type: /**
* The type of the block. eg; tabs, tab, group, attribute
* example:
* tab
*/
BlockType;
/**
* The order of the block
* example:
* 1
*/
order: number;
/**
* The id of the block
* example:
* c495fef9-eeca-4019-a989-8390dcd9825b
*/
id?: string; // uuid
}
/**
* The id of the block
* example:
* c495fef9-eeca-4019-a989-8390dcd9825b
*/
export type BlockId = string; // uuid
export interface BlockProps {
[name: string]: any;
/**
* The conditions that need to be met for the block to be shown
*/
visibility?: {
[name: string]: any;
/**
* Block is fully hidden from portal users
*/
is_hidden?: boolean;
/**
* Block is hidden on mobile viewports
*/
hidden_on_mobile?: boolean;
/**
* Block is hidden on desktop viewports
*/
hidden_on_desktop?: boolean;
/**
* Block is hidden in the mobile app
*/
hidden_in_app?: boolean;
/**
* Schedule visibility start date. If only start_date is set, block is visible from this date onwards.
*/
start_date?: string; // date-time
/**
* Schedule visibility end date. If only end_date is set, block is visible until this date.
*/
end_date?: string; // date-time
/**
* Target IDs that must match for the block to be visible
*/
visible_for_targets?: string[];
/**
* Operator for visible_for_targets matching
*/
visible_for_operator?: "and" | "or";
/**
* Target IDs that if matched will hide the block
*/
hidden_for_targets?: string[];
/**
* Operator for hidden_for_targets matching
*/
hidden_for_operator?: "and" | "or";
};
/**
* The content of the block
*/
content?: {
[name: string]: any;
};
/**
* The design of the block
*/
design?: {
[name: string]: any;
};
}
export interface BlockRequest {
[name: string]: any;
props?: BlockProps;
/**
* The id of the parent block
* example:
* c495fef9-eeca-4019-a989-8390dcd9825b
*/
parentId?: string;
type: /**
* The type of the block. eg; tabs, tab, group, attribute
* example:
* tab
*/
BlockType;
/**
* The order of the block
* example:
* 1
*/
order: number;
}
/**
* The type of the block. eg; tabs, tab, group, attribute
* example:
* tab
*/
export type BlockType = string;
export interface BusinessPartnerItem {
_id?: /**
* Entity ID
* example:
* 5da0a718-c822-403d-9f5d-20d4584e0528
*/
EntityId /* uuid */;
/**
* example:
* true
*/
has_portal_user?: boolean;
registration_status?: PortalUserRegistrationStatus;
/**
* example:
* john.doe@example.com
*/
email?: string;
/**
* example:
* John Doe
*/
_title?: string;
/**
* example:
* John
*/
first_name?: string;
/**
* example:
* Doe
*/
last_name?: string;
/**
* example:
* true
*/
access_status?: boolean;
}
export interface CampaignWidget {
id: string;
type: "ACTION_WIDGET" | "CONTENT_WIDGET" | "ENTITY_WIDGET" | "TEASER_WIDGET" | "DOCUMENT_WIDGET" | "PAYMENT_WIDGET" | "METER_READING_WIDGET" | "METER_CHART_WIDGET" | "CAMPAIGN_WIDGET" | "PRODUCT_RECOMMENDATIONS_WIDGET";
/**
* Index of the widget in the list, used for ordering (left or right)
*/
listIndex: number;
headline?: {
en?: string;
de?: string;
};
subHeadline?: {
en?: string;
de?: string;
};
imageUrl?: string;
button?: {
label?: {
en?: string;
de?: string;
};
url?: string;
};
/**
* ID of the campaign
*/
campaign_id?: string;
}
export interface CommonConfigAttributes {
/**
* Enable/Disable the portal access
*/
enabled?: boolean;
/**
* A short name to identify your portal
* example:
* Installer Portal
*/
name?: string;
/**
* The URL on which the portal is accessible
* example:
* abc.com
*/
domain: string;
/**
* Mark true if the domain is an Epilot domain
*/
is_epilot_domain?: boolean;
/**
* The URL on which the portal is accessible
* example:
* example-portal-12345.ecp.epilot.cloud
*/
epilot_domain?: string;
domain_settings?: /* Domain settings for the portal */ DomainSettings;
/**
* ID of the design used to build the portal
*/
design_id?: /**
* Entity ID
* example:
* 5da0a718-c822-403d-9f5d-20d4584e0528
*/
EntityId /* uuid */;
/**
* Allowed portal entities for the portal
* example:
* [
* "contact",
* "contract"
* ]
*/
allowed_portal_entities?: string[];
self_registration_setting?: "ALLOW_WITH_CONTACT_CREATION" | "ALLOW_WITHOUT_CONTACT_CREATION" | "DENY" | "ALWAYS_CREATE_CONTACT" | "DISALLOW_COMPLETELY" | "BLOCK_IF_PORTAL_USER_EXISTS";
/**
* Controls behavior of self-registration when account is used as the registration entity
*/
self_registration_account_setting?: "ALLOW_WITH_CONTACT_CREATION" | "DENY" | "ALWAYS_CREATE_CONTACT" | "DISALLOW_COMPLETELY";
/**
* Entity type used as the primary identifier for self-registration
*/
self_registration_entity?: "contact" | "account";
/**
* Enable or disable user account self management
* example:
* false
*/
user_account_self_management?: boolean;
/**
* Feature settings for the portal
*/
feature_settings?: {
/**
* Start page feature flag
*/
start_page?: boolean;
/**
* Billing feature flag
*/
billing?: boolean;
/**
* Change due date feature flag
*/
change_due_date?: boolean;
/**
* Enable or disable the new design for the portal
*/
new_design?: boolean;
};
/**
* Access token for the portal
*/
accessToken?: string;
advanced_mfa?: {
/**
* Advanced MFA feature flag
*/
enabled?: boolean;
};
/**
* Authentication settings for the portal
*/
auth_settings?: {
passwordless_login?: {
/**
* Passwordless login feature flag
*/
enabled?: boolean;
};
entry_point?: "PASSWORD" | "SSO";
preferred_sso_providers?: /**
* URL-friendly slug to use as organization-unique identifier for Provider
* example:
* office-365-login
*/
ProviderSlug /* [0-9a-z-]+ */[];
/**
* Decide whether to automatically redirect to the provider page during login, which would completely bypass showing the portal authentication page.
*/
auto_redirect_to_sso?: boolean;
};
/**
* AWS Cognito Pool details for the portal
*/
cognito_details?: {
/**
* Cognito user pool client ID
* example:
* 6bsd0jkgoie74k2i8mrhc1vest
*/
cognito_user_pool_client_id?: string;
/**
* Cognito user pool ARN
* example:
* arn:aws:cognito-idp:us-east-1:123412341234:userpool/us-east-1_123412341
*/
cognito_user_pool_arn?: string;
/**
* Cognito user pool ID
* example:
* eu-central-1_CUEQRNbUb
*/
cognito_user_pool_id?: string;
/**
* Timeouts for the cognito tokens
*/
timeouts?: {
/**
* Timeout for the refresh token
* example:
* 300
*/
refresh_token?: number;
/**
* Timeout for the access token
* example:
* 300
*/
access_token?: number;
/**
* Timeout for the id token
* example:
* 300
*/
id_token?: number;
};
/**
* Advanced authentication settings for the portal
*/
advanced_authentication?: {
/**
* Enables detailed logging of user authentication attempts including risk assessments, IP addresses, user agents, and device information. These logs can be used for security analysis and monitoring.
* example:
* true
*/
user_activity_logging?: boolean;
/**
* Automatically assesses risk for every authentication session. Based on risk ratings, can block authentication or require MFA for suspicious sign-in attempts. Helps protect user accounts from potential attacks by adapting security measures in real-time.
* example:
* true
*/
adaptive_authentication?: boolean;
/**
* Checks passwords against databases of leaked and commonly-guessed passwords during sign-up, sign-in, and password reset. Blocks or warns users when insecure passwords are detected, preventing unauthorized access from compromised credentials.
* example:
* true
*/
compromised_credentials_detection?: boolean;
};
/**
* Password policy for the portal
*/
password_policy?: {
/**
* Minimum password length
* example:
* 8
*/
minimum_length?: number;
/**
* Maximum password length
* example:
* 256
*/
maximum_length?: number;
/**
* Require lowercase characters
* example:
* true
*/
require_lowercase?: boolean;
/**
* Require uppercase characters
* example:
* true
*/
require_uppercase?: boolean;
/**
* Require numbers
* example:
* true
*/
require_numbers?: boolean;
/**
* Require symbols
* example:
* true
*/
require_symbols?: boolean;
};
};
/**
* Stringified object with configuration details
*/
config?: string;
/**
* Deprecated. Use registration_identifiers instead.
* example:
* [
* "email",
* "last_name"
* ]
*/
contact_identifiers?: string[];
/**
* example:
* {
* "contact": [
* "name",
* "address"
* ],
* "contract": [
* "installment_amount"
* ]
* }
*/
approval_state_attributes?: {
[name: string]: string[];
};
email_templates?: /* Email templates used for authentication and internal processes */ EmailTemplates;
/**
* Teaser & Banner Image web links
*/
images?: {
/**
* URL of the order left teaser image
* example:
* https://epilot-bucket.s3.eu-central-1.amazonaws.com/12344/6538fddb-f0e9-4f0f-af51-6e57891ff20a/order-left-teaser.jpeg
*/
orderLeftTeaser?: string | null;
/**
* URL of the order right teaser image
* example:
* https://epilot-bucket.s3.eu-central-1.amazonaws.com/12344/6538fddb-f0e9-4f0f-af51-6e57891ff20a/order-right-teaser.jpeg
*/
orderRightTeaser?: string | null;
/**
* URL of the welcome banner image
* example:
* https://epilot-bucket.s3.eu-central-1.amazonaws.com/12344/6538fddb-f0e9-4f0f-af51-6e57891ff20a/welcome-banner.jpeg
*/
welcomeBanner?: string | null;
};
/**
* Identifiers used to identify an entity by a portal user. Deprecated. Use contract_identifiers instead.
*/
entity_identifiers?: {
type?: {
/**
* Enable/Disable the entity identifier
*/
isEnabled?: boolean;
/**
* Attributes used to identify an entity
*/
attributes?: string[];
};
};
/**
* Identifiers to identify a contract by a portal user.
* example:
* [
* {
* "name": "email",
* "schema": "contact"
* },
* {
* "name": "last_name",
* "schema": "contact"
* },
* {
* "name": "contract_number",
* "schema": "contract"
* }
* ]
*/
contract_identifiers?: ContractIdentifier[];
/**
* Configuration for contract selector in the portal
*/
contract_selector_config?: {
/**
* Whether to show inactive contracts in the selector
*/
show_inactive?: boolean;
/**
* Path to the property to use as the contract title
*/
title_path?: string;
};
/**
* Identifiers to identify a contact of a portal user during the registration.
* example:
* [
* {
* "name": "last_name",
* "schema": "contact"
* },
* {
* "name": "contract_number",
* "schema": "contract"
* }
* ]
*/
registration_identifiers?: ContractIdentifier[];
/**
* Journeys automatically opened on a portal user action
*/
triggered_journeys?: {
trigger_name?: "FIRST_LOGIN" | "ACCEPT_ORDER" | "DECLINE_ORDER";
journey_id?: /**
* Entity ID
* example:
* 5da0a718-c822-403d-9f5d-20d4584e0528
*/
EntityId /* uuid */;
}[];
/**
* Rules for editing an entity by a portal user
*/
entity_edit_rules?: {
slug?: /**
* URL-friendly identifier for the entity schema
* example:
* contact
*/
EntitySlug;
/**
* example:
* first_name
*/
attribute?: string;
rule_type?: "cadence" | "relative_to_current_value" | "days_before_date" | "overdue_payments";
cadence_period_type?: "days" | "weeks" | "months";
/**
* example:
* 1
*/
cadence_period?: number;
/**
* example:
* 1
*/
changes_allowed?: number;
/**
* example:
* 1
*/
grace_period?: number;
/**
* example:
* 10%
*/
allowed_increment?: string;
/**
* example:
* 10%
*/
allowed_decrement?: string;
/**
* example:
* 10
*/
number_of_days_before_restriction?: number;
}[];
allowed_file_extensions?: /* Allowed file extensions for upload */ AllowedFileExtensions;
/**
* Prevent indexing by search engines
*/
prevent_search_engine_indexing?: boolean;
/**
* Grace period in days for meter readings
*/
meter_reading_grace_period?: number;
/**
* Number of years to look back for showing inactive contracts in the portal
*/
inactive_contract_cutoff_years?: number;
/**
* Whether this is a dummy/test portal configuration
*/
is_dummy?: boolean;
/**
* Whether this is a v3 portal configuration
*/
is_v3_item?: boolean;
portal_id?: /**
* ID of the portal
* example:
* 453ad7bf-86d5-46c8-8252-bcc868df5e3c
*/
PortalId;
/**
* Key of the portal config
* example:
* PORTAL_CONFIG#453ad7bf-86d5-46c8-8252-bcc868df5e3c
*/
portal_sk_v3?: string;
origin?: /* Origin of the portal */ Origin;
pages?: {
[name: string]: Page;
};
/**
* Portal-level blocks shared across all pages (e.g. footer). Keyed by block id.
*/
global_blocks?: {
[name: string]: Block;
};
}
export interface CommonConfigAttributesV3 {
/**
* Enable/Disable the portal access
*/
enabled?: boolean;
/**
* A short name to identify your portal
* example:
* Installer Portal
*/
name?: string;
/**
* The URL on which the portal is accessible
* example:
* abc.com
*/
domain?: string;
/**
* Mark true if the domain is an Epilot domain
*/
is_epilot_domain?: boolean;
/**
* The Epilot domain on which the portal is accessible
* example:
* example-portal-1.ecp.epilot.io
*/
epilot_domain?: string;
domain_settings?: /* Domain settings for the portal */ DomainSettings;
/**
* ID of the design used to build the portal
*/
design_id?: /**
* Entity ID
* example:
* 5da0a718-c822-403d-9f5d-20d4584e0528
*/
EntityId /* uuid */;
/**
* Allowed portal entities for the portal
* example:
* [
* "contact",
* "contract"
* ]
*/
allowed_portal_entities?: string[];
self_registration_setting?: "ALLOW_WITH_CONTACT_CREATION" | "ALLOW_WITHOUT_CONTACT_CREATION" | "DENY" | "ALWAYS_CREATE_CONTACT" | "DISALLOW_COMPLETELY" | "BLOCK_IF_PORTAL_USER_EXISTS";
/**
* Controls behavior of self-registration when account is used as the registration entity
*/
self_registration_account_setting?: "ALLOW_WITH_CONTACT_CREATION" | "DENY" | "ALWAYS_CREATE_CONTACT" | "DISALLOW_COMPLETELY";
/**
* Entity type used as the primary identifier for self-registration
*/
self_registration_entity?: "contact" | "account";
/**
* Enable or disable user account self management
* example:
* false
*/
user_account_self_management?: boolean;
/**
* Feature settings for the portal
*/
feature_settings?: {
/**
* Start page feature flag
*/
start_page?: boolean;
/**
* Billing feature flag
*/
billing?: boolean;
/**
* Change due date feature flag
*/
change_due_date?: boolean;
/**
* Enable or disable the new design for the portal
*/
new_design?: boolean;
};
/**
* Access token for the portal
*/
accessToken?: string;
advanced_mfa?: {
/**
* Advanced MFA feature flag
*/
enabled?: boolean;
};
/**
* Authentication settings for the portal
*/
auth_settings?: {
passwordless_login?: {
/**
* Passwordless login feature flag
*/
enabled?: boolean;
};
entry_point?: "PASSWORD" | "SSO";
preferred_sso_providers?: /**
* URL-friendly slug to use as organization-unique identifier for Provider
* example:
* office-365-login
*/
ProviderSlug /* [0-9a-z-]+ */[];
/**
* Decide whether to automatically redirect to the provider page during login, which would completely bypass showing the portal authentication page.
*/
auto_redirect_to_sso?: boolean;
};
/**
* AWS Cognito Pool details for the portal
*/
cognito_details?: {
/**
* Cognito user pool client ID
* example:
* 6bsd0jkgoie74k2i8mrhc1vest
*/
cognito_user_pool_client_id?: string;
/**
* Cognito user pool ARN
* example:
* arn:aws:cognito-idp:us-east-1:123412341234:userpool/us-east-1_123412341
*/
cognito_user_pool_arn?: string;
/**
* Cognito user pool ID
* example:
* eu-central-1_CUEQRNbUb
*/
cognito_user_pool_id?: string;
/**
* Timeouts for the cognito tokens
*/
timeouts?: {
/**
* Timeout for the refresh token
* example:
* 300
*/
refresh_token?: number;
/**
* Timeout for the access token
* example:
* 300
*/
access_token?: number;
/**
* Timeout for the id token
* example:
* 300
*/
id_token?: numbe