@epilot/customer-portal-client 0.49.0 → 0.51.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/openapi.d.ts CHANGED
@@ -774,6 +774,20 @@ declare namespace Components {
774
774
  * c495fef9-eeca-4019-a989-8390dcd9825b
775
775
  */
776
776
  id?: string; // uuid
777
+ /**
778
+ * Blueprint instance ids managing this block. Non-empty means the block is blueprint-managed and read-only for users until it is detached. Server-managed: ignored (stripped) on every write from a user.
779
+ *
780
+ */
781
+ _manifest?: string[];
782
+ /**
783
+ * Stable id of this block in the blueprint source. Server-managed.
784
+ */
785
+ _lineage_id?: string;
786
+ /**
787
+ * Reserved for author-defined block levels (e.g. `dummy`, `strict`). Not interpreted yet. Server-managed: ignored (stripped) on every write from a user.
788
+ *
789
+ */
790
+ _level?: string;
777
791
  }
778
792
  /**
779
793
  * The id of the block
@@ -1088,6 +1102,16 @@ declare namespace Components {
1088
1102
  */
1089
1103
  enabled?: boolean;
1090
1104
  };
1105
+ /**
1106
+ * Opt-in, set by the configuring user. When enabled, a second factor is enforced after the password and portal users can add passkeys (fingerprint, face or device PIN) as one variant of it, next to the email code of advanced_mfa. Users with a passkey use it by default; with advanced_mfa off, the passkey is the only second factor once a user has added one. On passwordless portals a passkey can replace the email code. Passkeys are bound to the domain they were added on. Default off; turning it off again restores the previous behaviour and keeps registered passkeys.
1107
+ *
1108
+ */
1109
+ passkeys?: {
1110
+ /**
1111
+ * Enforce a second factor and allow passkeys as one variant of it
1112
+ */
1113
+ enabled?: boolean;
1114
+ };
1091
1115
  entry_point?: "PASSWORD" | "SSO";
1092
1116
  preferred_sso_providers?: /**
1093
1117
  * URL-friendly slug to use as organization-unique identifier for Provider
@@ -1115,6 +1139,12 @@ declare namespace Components {
1115
1139
  * 6bsd0jkgoie74k2i8mrhc1vest
1116
1140
  */
1117
1141
  cognito_user_pool_client_id?: string;
1142
+ /**
1143
+ * Cognito user pool client ID used by the native portal apps (longer refresh token validity)
1144
+ * example:
1145
+ * 3k9fj2l1m0n8b7v6c5x4z3a2s1
1146
+ */
1147
+ cognito_mobile_client_id?: string;
1118
1148
  /**
1119
1149
  * Cognito user pool ARN
1120
1150
  * example:
@@ -1497,7 +1527,7 @@ declare namespace Components {
1497
1527
  */
1498
1528
  is_dummy?: boolean;
1499
1529
  /**
1500
- * Whether this is a v3 portal configuration
1530
+ * Always true. Legacy v2 storage was migrated; field kept for compatibility and will be removed.
1501
1531
  */
1502
1532
  is_v3_item?: boolean;
1503
1533
  /**
@@ -1536,6 +1566,7 @@ declare namespace Components {
1536
1566
  * Master toggle for the portal's engagement center (in-app notifications including the notification triggers above). Off when absent — portal users only see the engagement center and receive trigger notifications after an admin enables it.
1537
1567
  */
1538
1568
  engagement_center_enabled?: boolean;
1569
+ engagement_center_task_templates?: /* Handlebars templates rendering each outstanding task (to-do) row in the portal's engagement center. Resolved server-side per task against the task's entity (same variable syntax as page block templates, e.g. `{{order.order_number}}`, custom and environment variables) plus `task.*` (the workflow step, e.g. `{{task.name}}`), `workflow.*` (the execution, e.g. `{{workflow.name}}`) and `entity.*` (the task's entity regardless of its schema, e.g. `{{entity._title}}`). A template that is absent or blank keeps the portal's default rendering for that line. Admin/builder-only — never exposed via the public portal config. */ EngagementCenterTaskTemplates;
1539
1570
  }
1540
1571
  export interface CommonConfigAttributesV3 {
1541
1572
  /**
@@ -1635,6 +1666,16 @@ declare namespace Components {
1635
1666
  */
1636
1667
  enabled?: boolean;
1637
1668
  };
1669
+ /**
1670
+ * Opt-in, set by the configuring user. When enabled, a second factor is enforced after the password and portal users can add passkeys (fingerprint, face or device PIN) as one variant of it, next to the email code of advanced_mfa. Users with a passkey use it by default; with advanced_mfa off, the passkey is the only second factor once a user has added one. On passwordless portals a passkey can replace the email code. Passkeys are bound to the domain they were added on. Default off; turning it off again restores the previous behaviour and keeps registered passkeys.
1671
+ *
1672
+ */
1673
+ passkeys?: {
1674
+ /**
1675
+ * Enforce a second factor and allow passkeys as one variant of it
1676
+ */
1677
+ enabled?: boolean;
1678
+ };
1638
1679
  entry_point?: "PASSWORD" | "SSO";
1639
1680
  preferred_sso_providers?: /**
1640
1681
  * URL-friendly slug to use as organization-unique identifier for Provider
@@ -1662,6 +1703,12 @@ declare namespace Components {
1662
1703
  * 6bsd0jkgoie74k2i8mrhc1vest
1663
1704
  */
1664
1705
  cognito_user_pool_client_id?: string;
1706
+ /**
1707
+ * Cognito user pool client ID used by the native portal apps (longer refresh token validity)
1708
+ * example:
1709
+ * 3k9fj2l1m0n8b7v6c5x4z3a2s1
1710
+ */
1711
+ cognito_mobile_client_id?: string;
1665
1712
  /**
1666
1713
  * Cognito user pool ARN
1667
1714
  * example:
@@ -2044,7 +2091,7 @@ declare namespace Components {
2044
2091
  */
2045
2092
  is_dummy?: boolean;
2046
2093
  /**
2047
- * Whether this is a v3 portal configuration
2094
+ * Always true. Legacy v2 storage was migrated; field kept for compatibility and will be removed.
2048
2095
  */
2049
2096
  is_v3_item?: boolean;
2050
2097
  /**
@@ -2300,6 +2347,14 @@ declare namespace Components {
2300
2347
  * false
2301
2348
  */
2302
2349
  has_portal_user?: boolean;
2350
+ /**
2351
+ * The e-mail the identified contact's portal user on this portal logs in with. It can
2352
+ * differ from the contact's own e-mail. Present only when `has_portal_user` is true.
2353
+ *
2354
+ * example:
2355
+ * john.doe@example.com
2356
+ */
2357
+ portal_user_email?: string;
2303
2358
  /**
2304
2359
  * Present only when no token was issued. NOT_FOUND means the given identifiers did not
2305
2360
  * match any contact (definitive - the client should not retry). TIMEOUT means the contact
@@ -2698,37 +2753,6 @@ declare namespace Components {
2698
2753
  extension?: PublicExtensionDetails;
2699
2754
  hook?: PublicDataRetrievalHookDetails;
2700
2755
  }
2701
- export interface DeleteEntityFile {
2702
- entity_id: /**
2703
- * Entity ID
2704
- * example:
2705
- * 5da0a718-c822-403d-9f5d-20d4584e0528
2706
- */
2707
- EntityId /* uuid */;
2708
- /**
2709
- * Entity type
2710
- * example:
2711
- * order
2712
- */
2713
- entity_type: string;
2714
- /**
2715
- * Array of file entity IDs
2716
- */
2717
- file_entity_ids: [
2718
- /**
2719
- * Entity ID
2720
- * example:
2721
- * 5da0a718-c822-403d-9f5d-20d4584e0528
2722
- */
2723
- EntityId /* uuid */,
2724
- .../**
2725
- * Entity ID
2726
- * example:
2727
- * 5da0a718-c822-403d-9f5d-20d4584e0528
2728
- */
2729
- EntityId /* uuid */[]
2730
- ];
2731
- }
2732
2756
  export type Direction = "feed-in" | "feed-out";
2733
2757
  export interface DocumentWidget {
2734
2758
  id: string;
@@ -2903,6 +2927,23 @@ declare namespace Components {
2903
2927
  */
2904
2928
  EntityId /* uuid */;
2905
2929
  }
2930
+ /**
2931
+ * Handlebars templates rendering each outstanding task (to-do) row in the portal's engagement center. Resolved server-side per task against the task's entity (same variable syntax as page block templates, e.g. `{{order.order_number}}`, custom and environment variables) plus `task.*` (the workflow step, e.g. `{{task.name}}`), `workflow.*` (the execution, e.g. `{{workflow.name}}`) and `entity.*` (the task's entity regardless of its schema, e.g. `{{entity._title}}`). A template that is absent or blank keeps the portal's default rendering for that line. Admin/builder-only — never exposed via the public portal config.
2932
+ */
2933
+ export interface EngagementCenterTaskTemplates {
2934
+ /**
2935
+ * Template for the row title. Default rendering is the step name.
2936
+ * example:
2937
+ * {{task.name}}
2938
+ */
2939
+ title?: string;
2940
+ /**
2941
+ * Template for the row's context line. Default rendering is the workflow name and the entity title.
2942
+ * example:
2943
+ * {{workflow.name}} · {{entity._title}}
2944
+ */
2945
+ subtitle?: string;
2946
+ }
2906
2947
  export interface Entity {
2907
2948
  [name: string]: any;
2908
2949
  /**
@@ -3404,10 +3445,18 @@ declare namespace Components {
3404
3445
  [name: string]: string | number;
3405
3446
  };
3406
3447
  /**
3407
- * example:
3408
- * _created_at:desc
3448
+ * Sort order of the results: an `attribute:order` pair, or a list of Elasticsearch sort fields that are
3449
+ * used as they are, e.g. the sort order of a target as returned by the Targeting API.
3450
+ * Without a sort, the sort order of the first requested target that defines one applies.
3451
+ *
3452
+ */
3453
+ sort?: /**
3454
+ * Sort order of the results: an `attribute:order` pair, or a list of Elasticsearch sort fields that are
3455
+ * used as they are, e.g. the sort order of a target as returned by the Targeting API.
3456
+ * Without a sort, the sort order of the first requested target that defines one applies.
3457
+ *
3409
3458
  */
3410
- sort?: string;
3459
+ string | string /* ^[^\s:,]+:(asc|desc)$ */[];
3411
3460
  from?: number;
3412
3461
  /**
3413
3462
  * Max search size is 1000 with higher values defaulting to 1000
@@ -5065,6 +5114,23 @@ declare namespace Components {
5065
5114
  */
5066
5115
  effect?: "allow" | "deny";
5067
5116
  }
5117
+ /**
5118
+ * A blueprint-managed page or block a write tried to change; the stored version was kept.
5119
+ */
5120
+ export interface HeldBackNode {
5121
+ /**
5122
+ * example:
5123
+ * 5da0a718-c822-403d-9f5d-20d4584e0528
5124
+ */
5125
+ page_id: string;
5126
+ /**
5127
+ * Set when a single block (not the whole page) was held back
5128
+ * example:
5129
+ * c495fef9-eeca-4019-a989-8390dcd9825b
5130
+ */
5131
+ block_id?: string;
5132
+ reason: "BLUEPRINT_MANAGED";
5133
+ }
5068
5134
  export interface IdentifierAttribute {
5069
5135
  /**
5070
5136
  * Label attribute
@@ -5237,6 +5303,16 @@ declare namespace Components {
5237
5303
  token: string;
5238
5304
  at?: string;
5239
5305
  };
5306
+ /**
5307
+ * Tells journey-api which route to link; omitted for a portal without an id
5308
+ */
5309
+ link_hint?: {
5310
+ route: "portal-settings";
5311
+ params: {
5312
+ portal_id: string;
5313
+ settings?: "journey-actions";
5314
+ };
5315
+ };
5240
5316
  }[];
5241
5317
  }
5242
5318
  export interface JuiceSettings {
@@ -5279,10 +5355,45 @@ declare namespace Components {
5279
5355
  */
5280
5356
  design_id?: string;
5281
5357
  /**
5282
- * The portal design as returned by design-builder parse (theme=NEW), for the served document; absent when the design could not be read
5358
+ * Portal design background and accent for the served document. `null` when the portal has no design or it could not be read.
5359
+ *
5283
5360
  */
5284
5361
  design?: {
5285
- [name: string]: any;
5362
+ /**
5363
+ * Spark background as hex colours; `null` when the design sets neither
5364
+ */
5365
+ background: {
5366
+ /**
5367
+ * example:
5368
+ * #f5f5f5
5369
+ */
5370
+ light: string | null; // ^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$
5371
+ /**
5372
+ * example:
5373
+ * #101010
5374
+ */
5375
+ dark: string | null; // ^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$
5376
+ } | null;
5377
+ /**
5378
+ * Spark accent as hex colours, falling back to the classic palette primary; dark falls back to light. `null` when the design sets neither
5379
+ *
5380
+ */
5381
+ accent: {
5382
+ /**
5383
+ * example:
5384
+ * #005eb4
5385
+ */
5386
+ light: string | null; // ^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$
5387
+ /**
5388
+ * example:
5389
+ * #4a9eff
5390
+ */
5391
+ dark: string | null; // ^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$
5392
+ } | null;
5393
+ /**
5394
+ * When the design was last saved
5395
+ */
5396
+ last_modified_at: string | null;
5286
5397
  } | null;
5287
5398
  }
5288
5399
  /**
@@ -5448,6 +5559,27 @@ declare namespace Components {
5448
5559
  [name: string]: string;
5449
5560
  };
5450
5561
  }
5562
+ /**
5563
+ * Display details of the counter the readings belong to. Only returned when `include_counter` is true and the counter could be resolved.
5564
+ */
5565
+ export interface MeterReadingCounterDetails {
5566
+ /**
5567
+ * example:
5568
+ * kwh
5569
+ */
5570
+ unit?: string | null;
5571
+ /**
5572
+ * example:
5573
+ * 1-1:1.8.1
5574
+ */
5575
+ obis_number?: string | null;
5576
+ /**
5577
+ * example:
5578
+ * feed-in
5579
+ */
5580
+ direction?: string | null;
5581
+ tariff_type?: string | null;
5582
+ }
5451
5583
  export interface MeterReadingPhoto {
5452
5584
  /**
5453
5585
  * example:
@@ -5715,11 +5847,11 @@ declare namespace Components {
5715
5847
  }
5716
5848
  export interface NotificationTriggerConfig {
5717
5849
  /**
5718
- * The 360 event that fires this notification trigger.
5850
+ * The 360 event that fires this notification trigger. `entity_added` is the unified trigger written by the Portal Builder: it fires for both the entity-created and the entity-assigned event of its `entity_schema`. `entity_created` / `entity_assigned` are the legacy per-event triggers and keep working; when a portal has both a legacy row and an `entity_added` row for the same schema, the legacy row wins for its event.
5719
5851
  */
5720
- trigger_type: "entity_created" | "entity_assigned" | "workflow_step_overdue";
5852
+ trigger_type: "entity_added" | "entity_created" | "entity_assigned" | "workflow_step_overdue";
5721
5853
  /**
5722
- * For `entity_created` / `entity_assigned` triggers, the entity schema slug (e.g. `opportunity`, `order`) whose creation or assignment fires this trigger. Ignored for other trigger types.
5854
+ * For `entity_added` / `entity_created` / `entity_assigned` triggers, the entity schema slug (e.g. `opportunity`, `order`) whose creation or assignment fires this trigger. Ignored for other trigger types.
5723
5855
  * example:
5724
5856
  * opportunity
5725
5857
  */
@@ -5732,6 +5864,10 @@ declare namespace Components {
5732
5864
  * Entity id of the notification_template to render for this trigger.
5733
5865
  */
5734
5866
  template_id?: string; // uuid
5867
+ /**
5868
+ * Targeting segment ids (targets) that narrow this trigger's recipients: the notification is only created for portal users whose contact matches at least one of the targets. Absent or empty means no narrowing — every portal user linked to the entity's contacts is notified.
5869
+ */
5870
+ target_ids?: string[];
5735
5871
  }
5736
5872
  /**
5737
5873
  * OIDC provider configuration. Values are resolved at SSO invocation time
@@ -6156,6 +6292,14 @@ declare namespace Components {
6156
6292
  * Whether submitting the journey from the portal should auto-complete the task. When false, an internal user completes it.
6157
6293
  */
6158
6294
  complete_task_automatically?: boolean;
6295
+ /**
6296
+ * Row title rendered from the portal's `engagement_center_task_templates.title`. Absent when the portal has no title template or it rendered blank for this task; the client then shows `step_name`.
6297
+ */
6298
+ title?: string;
6299
+ /**
6300
+ * Row context line rendered from the portal's `engagement_center_task_templates.subtitle`. Absent when the portal has no subtitle template or it rendered blank for this task; the client then shows the workflow name and entity title.
6301
+ */
6302
+ subtitle?: string;
6159
6303
  }
6160
6304
  export interface Page {
6161
6305
  [name: string]: any;
@@ -6307,6 +6451,21 @@ declare namespace Components {
6307
6451
  * ]
6308
6452
  */
6309
6453
  past_routes?: string[];
6454
+ /**
6455
+ * Blueprint instance ids managing this page. Non-empty means the page is blueprint-managed: its page-level fields and its blueprint-managed blocks are read-only for users (single-target writes answer 409 `BLUEPRINT_MANAGED`, bulk saves keep the stored version), while detached and customer-added blocks on it stay editable and the page keeps receiving blueprint updates. Server-managed: ignored (stripped) on every write from a user.
6456
+ *
6457
+ */
6458
+ _manifest?: string[];
6459
+ /**
6460
+ * Stable id of this page in the blueprint source. Set once: a blueprint install or update (`page_upsert_mode=slug`, portal create, or a revision with `revision_source` `blueprint_sync`) may give a page the lineage it does not have yet, unless another page of the portal holds it. After that it never changes; every other write keeps the stored value. Locks nothing on its own.
6461
+ *
6462
+ */
6463
+ _lineage_id?: string;
6464
+ /**
6465
+ * Lineage ids of blocks on this page that were detached from their blueprint; a blueprint sync leaves them alone. Server-managed.
6466
+ *
6467
+ */
6468
+ detached_lineage_ids?: string[];
6310
6469
  }
6311
6470
  export interface PageRequest {
6312
6471
  [name: string]: any;
@@ -6539,6 +6698,16 @@ declare namespace Components {
6539
6698
  */
6540
6699
  enabled?: boolean;
6541
6700
  };
6701
+ /**
6702
+ * Opt-in, set by the configuring user. When enabled, a second factor is enforced after the password and portal users can add passkeys (fingerprint, face or device PIN) as one variant of it, next to the email code of advanced_mfa. Users with a passkey use it by default; with advanced_mfa off, the passkey is the only second factor once a user has added one. On passwordless portals a passkey can replace the email code. Passkeys are bound to the domain they were added on. Default off; turning it off again restores the previous behaviour and keeps registered passkeys.
6703
+ *
6704
+ */
6705
+ passkeys?: {
6706
+ /**
6707
+ * Enforce a second factor and allow passkeys as one variant of it
6708
+ */
6709
+ enabled?: boolean;
6710
+ };
6542
6711
  entry_point?: "PASSWORD" | "SSO";
6543
6712
  preferred_sso_providers?: /**
6544
6713
  * URL-friendly slug to use as organization-unique identifier for Provider
@@ -6566,6 +6735,12 @@ declare namespace Components {
6566
6735
  * 6bsd0jkgoie74k2i8mrhc1vest
6567
6736
  */
6568
6737
  cognito_user_pool_client_id?: string;
6738
+ /**
6739
+ * Cognito user pool client ID used by the native portal apps (longer refresh token validity)
6740
+ * example:
6741
+ * 3k9fj2l1m0n8b7v6c5x4z3a2s1
6742
+ */
6743
+ cognito_mobile_client_id?: string;
6569
6744
  /**
6570
6745
  * Cognito user pool ARN
6571
6746
  * example:
@@ -6948,7 +7123,7 @@ declare namespace Components {
6948
7123
  */
6949
7124
  is_dummy?: boolean;
6950
7125
  /**
6951
- * Whether this is a v3 portal configuration
7126
+ * Always true. Legacy v2 storage was migrated; field kept for compatibility and will be removed.
6952
7127
  */
6953
7128
  is_v3_item?: boolean;
6954
7129
  /**
@@ -6987,6 +7162,7 @@ declare namespace Components {
6987
7162
  * Master toggle for the portal's engagement center (in-app notifications including the notification triggers above). Off when absent — portal users only see the engagement center and receive trigger notifications after an admin enables it.
6988
7163
  */
6989
7164
  engagement_center_enabled?: boolean;
7165
+ engagement_center_task_templates?: /* Handlebars templates rendering each outstanding task (to-do) row in the portal's engagement center. Resolved server-side per task against the task's entity (same variable syntax as page block templates, e.g. `{{order.order_number}}`, custom and environment variables) plus `task.*` (the workflow step, e.g. `{{task.name}}`), `workflow.*` (the execution, e.g. `{{workflow.name}}`) and `entity.*` (the task's entity regardless of its schema, e.g. `{{entity._title}}`). A template that is absent or blank keeps the portal's default rendering for that line. Admin/builder-only — never exposed via the public portal config. */ EngagementCenterTaskTemplates;
6990
7166
  /**
6991
7167
  * ID of the organization
6992
7168
  * example:
@@ -6999,6 +7175,26 @@ declare namespace Components {
6999
7175
  * 12345
7000
7176
  */
7001
7177
  organization_id?: string;
7178
+ /**
7179
+ * Blueprint instance ids managing this portal. Server-managed: ignored (stripped) on every write from a user.
7180
+ *
7181
+ */
7182
+ _manifest?: string[];
7183
+ /**
7184
+ * Id of this portal in the blueprint source. Set once: a blueprint install or update (portal create, `page_upsert_mode=slug`, or a revision with `revision_source` `blueprint_sync`) may give a portal the lineage it does not have yet, unless another portal of the organization holds it. A portal created as a copy next to the organization's live portal of its origin (downgraded to `ADDITIONAL_PORTAL`) never takes it. After that it never changes; every other write keeps the stored value. Locks nothing on its own.
7185
+ *
7186
+ */
7187
+ _lineage_id?: string;
7188
+ /**
7189
+ * Lineage ids of pages detached from their blueprint; a blueprint sync leaves them alone. Server-managed.
7190
+ *
7191
+ */
7192
+ detached_lineage_ids?: string[];
7193
+ /**
7194
+ * Only present on write responses: blueprint-managed pages/blocks the request tried to change. Their stored version was kept and the rest of the save succeeded.
7195
+ *
7196
+ */
7197
+ held_back?: /* A blueprint-managed page or block a write tried to change; the stored version was kept. */ HeldBackNode[];
7002
7198
  /**
7003
7199
  * Organization settings
7004
7200
  */
@@ -7033,6 +7229,19 @@ declare namespace Components {
7033
7229
  */
7034
7230
  grants?: Grant[];
7035
7231
  identity_providers?: ProviderPublicConfig[];
7232
+ /**
7233
+ * Present only when the request carried a valid `x-portal-preview-token`: the config is this revision's, not the live one.
7234
+ *
7235
+ */
7236
+ preview_revision?: {
7237
+ /**
7238
+ * example:
7239
+ * 2026-08-25T14:03:11.482Z-a7f3c1d9
7240
+ */
7241
+ revision_id: string;
7242
+ name?: string;
7243
+ created_at: string; // date-time
7244
+ };
7036
7245
  }
7037
7246
  /**
7038
7247
  * Lightweight view of a portal config for lists and pickers. Carries the identifying,
@@ -7296,6 +7505,16 @@ declare namespace Components {
7296
7505
  */
7297
7506
  enabled?: boolean;
7298
7507
  };
7508
+ /**
7509
+ * Opt-in, set by the configuring user. When enabled, a second factor is enforced after the password and portal users can add passkeys (fingerprint, face or device PIN) as one variant of it, next to the email code of advanced_mfa. Users with a passkey use it by default; with advanced_mfa off, the passkey is the only second factor once a user has added one. On passwordless portals a passkey can replace the email code. Passkeys are bound to the domain they were added on. Default off; turning it off again restores the previous behaviour and keeps registered passkeys.
7510
+ *
7511
+ */
7512
+ passkeys?: {
7513
+ /**
7514
+ * Enforce a second factor and allow passkeys as one variant of it
7515
+ */
7516
+ enabled?: boolean;
7517
+ };
7299
7518
  entry_point?: "PASSWORD" | "SSO";
7300
7519
  preferred_sso_providers?: /**
7301
7520
  * URL-friendly slug to use as organization-unique identifier for Provider
@@ -7323,6 +7542,12 @@ declare namespace Components {
7323
7542
  * 6bsd0jkgoie74k2i8mrhc1vest
7324
7543
  */
7325
7544
  cognito_user_pool_client_id?: string;
7545
+ /**
7546
+ * Cognito user pool client ID used by the native portal apps (longer refresh token validity)
7547
+ * example:
7548
+ * 3k9fj2l1m0n8b7v6c5x4z3a2s1
7549
+ */
7550
+ cognito_mobile_client_id?: string;
7326
7551
  /**
7327
7552
  * Cognito user pool ARN
7328
7553
  * example:
@@ -7705,7 +7930,7 @@ declare namespace Components {
7705
7930
  */
7706
7931
  is_dummy?: boolean;
7707
7932
  /**
7708
- * Whether this is a v3 portal configuration
7933
+ * Always true. Legacy v2 storage was migrated; field kept for compatibility and will be removed.
7709
7934
  */
7710
7935
  is_v3_item?: boolean;
7711
7936
  /**
@@ -7774,6 +7999,71 @@ declare namespace Components {
7774
7999
  grants?: Grant[];
7775
8000
  pages?: Page[];
7776
8001
  }
8002
+ /**
8003
+ * Contact attributes a portal user can change. Other attributes are ignored.
8004
+ * Value types follow the organization's contact schema.
8005
+ *
8006
+ */
8007
+ export interface PortalContactUpdate {
8008
+ [name: string]: any;
8009
+ /**
8010
+ * example:
8011
+ * de
8012
+ */
8013
+ language?: string;
8014
+ first_name?: any;
8015
+ last_name?: any;
8016
+ salutation?: any;
8017
+ phone?: any;
8018
+ phone_number?: any;
8019
+ mobile?: any;
8020
+ street?: any;
8021
+ street_number?: any;
8022
+ postal_code?: any;
8023
+ city?: any;
8024
+ country?: any;
8025
+ preferred_language?: any;
8026
+ communication_preferences?: any;
8027
+ }
8028
+ /**
8029
+ * Contract attributes a portal user can change. Other attributes are ignored.
8030
+ */
8031
+ export interface PortalContractUpdate {
8032
+ [name: string]: any;
8033
+ /**
8034
+ * Installment amount in cents
8035
+ * example:
8036
+ * 8500
8037
+ */
8038
+ installment_amount?: number;
8039
+ /**
8040
+ * Installment amount as a decimal string
8041
+ * example:
8042
+ * 85.00
8043
+ */
8044
+ installment_amount_decimal?: string;
8045
+ }
8046
+ /**
8047
+ * Limits portal chat to portal users matching targets, with the same rules as page and block visibility. Without targets every signed-in portal user can use the chat.
8048
+ */
8049
+ export interface PortalCopilotVisibility {
8050
+ /**
8051
+ * Target IDs that must match for the portal user to use the chat
8052
+ */
8053
+ visible_for_targets?: string[];
8054
+ /**
8055
+ * Operator for visible_for_targets matching
8056
+ */
8057
+ visible_for_operator?: "and" | "or";
8058
+ /**
8059
+ * Target IDs that if matched deny the portal user the chat
8060
+ */
8061
+ hidden_for_targets?: string[];
8062
+ /**
8063
+ * Operator for hidden_for_targets matching
8064
+ */
8065
+ hidden_for_operator?: "and" | "or";
8066
+ }
7777
8067
  /**
7778
8068
  * One column of the portal data export CSV.
7779
8069
  */
@@ -7889,6 +8179,7 @@ declare namespace Components {
7889
8179
  * ID of the Agent Builder portal agent this portal's copilot chat runs, set by Agent Builder. When unset, or when the agent no longer exists in the portal's organization, the chat runs the default portal copilot.
7890
8180
  */
7891
8181
  portal_copilot_agent_id?: string;
8182
+ portal_copilot_visibility?: /* Limits portal chat to portal users matching targets, with the same rules as page and block visibility. Without targets every signed-in portal user can use the chat. */ PortalCopilotVisibility;
7892
8183
  }
7893
8184
  /**
7894
8185
  * ID of the portal
@@ -8111,6 +8402,23 @@ declare namespace Components {
8111
8402
  */
8112
8403
  next_cursor?: string;
8113
8404
  }
8405
+ export interface PortalRevisionPreview {
8406
+ /**
8407
+ * Short-lived token that makes portal reads return this revision. Send it in the `x-portal-preview-token` header.
8408
+ *
8409
+ */
8410
+ preview_token: string;
8411
+ /**
8412
+ * When the preview token stops being honoured.
8413
+ */
8414
+ expires_at: string; // date-time
8415
+ /**
8416
+ * Link that opens the revision in the portal on its live domain.
8417
+ * example:
8418
+ * https://portal.example.com/?preview_token=eyJhbGciOiJIUzI1NiIs...
8419
+ */
8420
+ url: string;
8421
+ }
8114
8422
  export interface PortalRevisionRequest {
8115
8423
  [name: string]: any;
8116
8424
  /**
@@ -8271,6 +8579,16 @@ declare namespace Components {
8271
8579
  */
8272
8580
  enabled?: boolean;
8273
8581
  };
8582
+ /**
8583
+ * Opt-in, set by the configuring user. When enabled, a second factor is enforced after the password and portal users can add passkeys (fingerprint, face or device PIN) as one variant of it, next to the email code of advanced_mfa. Users with a passkey use it by default; with advanced_mfa off, the passkey is the only second factor once a user has added one. On passwordless portals a passkey can replace the email code. Passkeys are bound to the domain they were added on. Default off; turning it off again restores the previous behaviour and keeps registered passkeys.
8584
+ *
8585
+ */
8586
+ passkeys?: {
8587
+ /**
8588
+ * Enforce a second factor and allow passkeys as one variant of it
8589
+ */
8590
+ enabled?: boolean;
8591
+ };
8274
8592
  entry_point?: "PASSWORD" | "SSO";
8275
8593
  preferred_sso_providers?: /**
8276
8594
  * URL-friendly slug to use as organization-unique identifier for Provider
@@ -8298,6 +8616,12 @@ declare namespace Components {
8298
8616
  * 6bsd0jkgoie74k2i8mrhc1vest
8299
8617
  */
8300
8618
  cognito_user_pool_client_id?: string;
8619
+ /**
8620
+ * Cognito user pool client ID used by the native portal apps (longer refresh token validity)
8621
+ * example:
8622
+ * 3k9fj2l1m0n8b7v6c5x4z3a2s1
8623
+ */
8624
+ cognito_mobile_client_id?: string;
8301
8625
  /**
8302
8626
  * Cognito user pool ARN
8303
8627
  * example:
@@ -8680,7 +9004,7 @@ declare namespace Components {
8680
9004
  */
8681
9005
  is_dummy?: boolean;
8682
9006
  /**
8683
- * Whether this is a v3 portal configuration
9007
+ * Always true. Legacy v2 storage was migrated; field kept for compatibility and will be removed.
8684
9008
  */
8685
9009
  is_v3_item?: boolean;
8686
9010
  /**
@@ -8959,6 +9283,37 @@ declare namespace Components {
8959
9283
  }[];
8960
9284
  _schema: "portal_user";
8961
9285
  }
9286
+ /**
9287
+ * Resolved notification preferences of a portal user. Notifications are opt-out: a channel that was never stored on the portal user resolves to enabled (true).
9288
+ */
9289
+ export interface PortalUserNotificationPreferences {
9290
+ /**
9291
+ * Whether the portal user receives in-app notifications.
9292
+ * example:
9293
+ * true
9294
+ */
9295
+ in_app: boolean;
9296
+ }
9297
+ export interface PortalUserPasskey {
9298
+ /**
9299
+ * WebAuthn credential ID (base64url)
9300
+ */
9301
+ credential_id: string;
9302
+ name?: string;
9303
+ /**
9304
+ * Domain the passkey works on
9305
+ * example:
9306
+ * kundenportal.example.de
9307
+ */
9308
+ rp_id: string;
9309
+ device_type?: "singleDevice" | "multiDevice";
9310
+ /**
9311
+ * Whether the passkey is synced, e.g. via iCloud Keychain or Google Password Manager
9312
+ */
9313
+ backed_up?: boolean;
9314
+ created_at: string; // date-time
9315
+ last_used_at?: string; // date-time
9316
+ }
8962
9317
  export type PortalUserRegistrationStatus = "Registration Pending" | "Confirmation Email Sent" | "Registered" | "Email Update In Progress";
8963
9318
  /**
8964
9319
  * A portal whose design_id is the design asked about.
@@ -9141,9 +9496,19 @@ declare namespace Components {
9141
9496
  * True when the task has been reached in the execution — all predecessor tasks on its
9142
9497
  * path are completed/skipped — so the portal user can act on it (e.g. start its journey).
9143
9498
  * Tasks that are only part of the projected future path are returned with is_active false.
9499
+ * The start date is not taken into account: an active task can still be upcoming (see start_date).
9144
9500
  *
9145
9501
  */
9146
9502
  is_active: boolean;
9503
+ /**
9504
+ * Instant before which nobody may work on the task. While it lies in the future, a task
9505
+ * that is not done yet is upcoming: the Workflows API refuses to complete it, so the
9506
+ * portal shows it as upcoming instead of offering its journey. Neither status nor
9507
+ * is_active reflects it; compare it with the current time. Absent when the task has no
9508
+ * start date or its relative start date has not been resolved yet.
9509
+ *
9510
+ */
9511
+ start_date?: string; // date-time
9147
9512
  ecp?: /* Portal-specific (ECP / installer) display config of a workflow task */ PortalTaskConfig;
9148
9513
  installer?: /* Portal-specific (ECP / installer) display config of a workflow task */ PortalTaskConfig;
9149
9514
  /**
@@ -9187,10 +9552,22 @@ declare namespace Components {
9187
9552
  updated_at?: string;
9188
9553
  }
9189
9554
  /**
9190
- * The product entity
9555
+ * The revision a config response shows instead of the live portal config.
9191
9556
  */
9192
- export interface Product {
9193
- [name: string]: any;
9557
+ export interface PreviewRevision {
9558
+ /**
9559
+ * example:
9560
+ * 2026-08-25T14:03:11.482Z-a7f3c1d9
9561
+ */
9562
+ revision_id: string;
9563
+ name?: string;
9564
+ created_at: string; // date-time
9565
+ }
9566
+ /**
9567
+ * The product entity
9568
+ */
9569
+ export interface Product {
9570
+ [name: string]: any;
9194
9571
  _id: /**
9195
9572
  * Entity ID
9196
9573
  * example:
@@ -9340,6 +9717,21 @@ declare namespace Components {
9340
9717
  * false
9341
9718
  */
9342
9719
  expose_client_secret?: boolean;
9720
+ /**
9721
+ * Temporarily enables SSO debug mode for this provider. While the current time is
9722
+ * before this timestamp, failed SSO logins and token exchanges answer with a `debug`
9723
+ * object (`SSODebugInfo`) next to the error, so admins can see the real cause (e.g. the
9724
+ * IdP's `AADSTS…` error) on the portal login page.
9725
+ *
9726
+ * Capped at 24 hours from the time of the write (plus 5 minutes clock-skew tolerance);
9727
+ * a later value is rejected with 400. `null` or absent turns debug mode off, and an
9728
+ * expired value is simply inactive. Never exposed publicly — public reads only carry
9729
+ * the derived `debug_mode` flag.
9730
+ *
9731
+ * example:
9732
+ * 2026-10-30T12:00:00.000Z
9733
+ */
9734
+ debug_mode_until?: string | null; // date-time
9343
9735
  }
9344
9736
  /**
9345
9737
  * Human-readable display name for identity provider shown in login
@@ -9377,6 +9769,15 @@ declare namespace Components {
9377
9769
  *
9378
9770
  */
9379
9771
  MoblieOIDCConfig;
9772
+ /**
9773
+ * Derived from `ProviderConfig.debug_mode_until`: `true` only while SSO debug mode is
9774
+ * active for this provider. Clients may use it to show technical error details on
9775
+ * failed SSO logins. Absent or `false` when debug mode is off.
9776
+ *
9777
+ * example:
9778
+ * false
9779
+ */
9780
+ debug_mode?: boolean;
9380
9781
  }
9381
9782
  /**
9382
9783
  * Web-only public provider configuration served by `getPublicSSOProviderV3`.
@@ -9409,6 +9810,15 @@ declare namespace Components {
9409
9810
  *
9410
9811
  */
9411
9812
  OIDCProviderConfig;
9813
+ /**
9814
+ * Derived from `ProviderConfig.debug_mode_until`: `true` only while SSO debug mode is
9815
+ * active for this provider. Clients may use it to show technical error details on
9816
+ * failed SSO logins. Absent or `false` when debug mode is off.
9817
+ *
9818
+ * example:
9819
+ * false
9820
+ */
9821
+ debug_mode?: boolean;
9412
9822
  }
9413
9823
  /**
9414
9824
  * URL-friendly slug to use as organization-unique identifier for Provider
@@ -9598,12 +10008,17 @@ declare namespace Components {
9598
10008
  * Stable, machine-readable codes for best-effort post-publish side effects that exhausted their retries. Publishing itself succeeded; these are not error messages and not meant for display as-is. Clients map each code to their own localized text.
9599
10009
  * Known codes: `allowed_entities_change` (portal entity grants and detail pages did not sync), `dns_records_clear` (the previous domain's DNS records were not cleared). New codes may be added without a client update, so treat an unrecognized code as a generic "a follow-up step did not finish" case rather than an error.
9600
10010
  *
10011
+ */
10012
+ post_publish_warnings: string[];
10013
+ /**
10014
+ * Only present when non-empty: blueprint-managed live pages/blocks this publish could not replace because the publisher is not the owning blueprint. Their live version stays as it is; the rest of the revision was published. Detach a node to make it publishable.
10015
+ *
9601
10016
  * example:
9602
10017
  * [
9603
10018
  * "allowed_entities_change"
9604
10019
  * ]
9605
10020
  */
9606
- post_publish_warnings: string[];
10021
+ held_back?: /* A blueprint-managed page or block a write tried to change; the stored version was kept. */ HeldBackNode[];
9607
10022
  }
9608
10023
  export interface PublishRevisionRequest {
9609
10024
  /**
@@ -9918,6 +10333,21 @@ declare namespace Components {
9918
10333
  * ]
9919
10334
  */
9920
10335
  past_routes?: string[];
10336
+ /**
10337
+ * Blueprint instance ids managing this page. Non-empty means the page is blueprint-managed: its page-level fields and its blueprint-managed blocks are read-only for users (single-target writes answer 409 `BLUEPRINT_MANAGED`, bulk saves keep the stored version), while detached and customer-added blocks on it stay editable and the page keeps receiving blueprint updates. Server-managed: ignored (stripped) on every write from a user.
10338
+ *
10339
+ */
10340
+ _manifest?: string[];
10341
+ /**
10342
+ * Stable id of this page in the blueprint source. Set once: a blueprint install or update (`page_upsert_mode=slug`, portal create, or a revision with `revision_source` `blueprint_sync`) may give a page the lineage it does not have yet, unless another page of the portal holds it. After that it never changes; every other write keeps the stored value. Locks nothing on its own.
10343
+ *
10344
+ */
10345
+ _lineage_id?: string;
10346
+ /**
10347
+ * Lineage ids of blocks on this page that were detached from their blueprint; a blueprint sync leaves them alone. Server-managed.
10348
+ *
10349
+ */
10350
+ detached_lineage_ids?: string[];
9921
10351
  org_id?: string;
9922
10352
  }
9923
10353
  /**
@@ -10052,6 +10482,101 @@ declare namespace Components {
10052
10482
  */
10053
10483
  scope?: string;
10054
10484
  }
10485
+ /**
10486
+ * Technical details of a failed SSO login or token exchange, returned only while SSO debug
10487
+ * mode is active for the provider. Never carries secrets, authorization codes, PKCE
10488
+ * verifiers, tokens or claim values.
10489
+ *
10490
+ */
10491
+ export interface SSODebugInfo {
10492
+ /**
10493
+ * Which step failed — the backend token exchange (`ssoCallback`) or the login (`ssoLogin`).
10494
+ */
10495
+ stage?: "exchange" | "login";
10496
+ /**
10497
+ * Stable reason code, e.g. `TOKEN_EXCHANGE_FAILED`, `MISSING_EMAIL_CLAIM`, `INVALID_PROVIDER`.
10498
+ * example:
10499
+ * TOKEN_EXCHANGE_FAILED
10500
+ */
10501
+ reason?: string;
10502
+ /**
10503
+ * The API's error message.
10504
+ */
10505
+ message?: string;
10506
+ /**
10507
+ * HTTP status the IdP's token endpoint answered with.
10508
+ * example:
10509
+ * 401
10510
+ */
10511
+ upstream_status?: number;
10512
+ /**
10513
+ * The IdP's RFC 6749 §5.2 `error`.
10514
+ * example:
10515
+ * invalid_client
10516
+ */
10517
+ oauth_error?: string;
10518
+ /**
10519
+ * The IdP's RFC 6749 §5.2 `error_description` (e.g. the full `AADSTS…` text).
10520
+ */
10521
+ oauth_error_description?: string;
10522
+ /**
10523
+ * example:
10524
+ * login.microsoftonline.com
10525
+ */
10526
+ token_endpoint_host?: string;
10527
+ /**
10528
+ * Path of the configured token endpoint, without query.
10529
+ * example:
10530
+ * /contoso.onmicrosoft.com/oauth2/v2.0/token
10531
+ */
10532
+ token_endpoint_path?: string;
10533
+ /**
10534
+ * The redirect URI sent in the token exchange.
10535
+ */
10536
+ redirect_uri?: string;
10537
+ /**
10538
+ * Names (never values) of the claims received from the IdP.
10539
+ */
10540
+ received_claims?: string[];
10541
+ /**
10542
+ * API request id, for support.
10543
+ */
10544
+ request_id?: string;
10545
+ /**
10546
+ * English hint for well-known IdP errors.
10547
+ */
10548
+ hint?: string;
10549
+ }
10550
+ /**
10551
+ * Error response of the public SSO endpoints. Like every error response the message is in
10552
+ * `error`; `reason` carries a stable machine-readable cause when one is known (e.g.
10553
+ * `MISSING_EMAIL_CLAIM`, `INVALID_PROVIDER`, `SELF_REGISTRATION_NOT_ALLOWED`,
10554
+ * `TOKEN_EXCHANGE_FAILED`). `debug` is only present while SSO debug mode is active for the
10555
+ * resolved provider (`ProviderConfig.debug_mode_until`).
10556
+ *
10557
+ */
10558
+ export interface SSOErrorResp {
10559
+ /**
10560
+ * example:
10561
+ * 400
10562
+ */
10563
+ status?: number;
10564
+ /**
10565
+ * Error message
10566
+ */
10567
+ error?: string;
10568
+ /**
10569
+ * Machine-readable cause, when the API can name one.
10570
+ */
10571
+ reason?: string;
10572
+ debug?: /**
10573
+ * Technical details of a failed SSO login or token exchange, returned only while SSO debug
10574
+ * mode is active for the provider. Never carries secrets, authorization codes, PKCE
10575
+ * verifiers, tokens or claim values.
10576
+ *
10577
+ */
10578
+ SSODebugInfo;
10579
+ }
10055
10580
  export type SSOLoginToken = string;
10056
10581
  export interface SaveEntityFile {
10057
10582
  entity_id: /**
@@ -10552,6 +11077,16 @@ declare namespace Components {
10552
11077
  */
10553
11078
  enabled?: boolean;
10554
11079
  };
11080
+ /**
11081
+ * Opt-in, set by the configuring user. When enabled, a second factor is enforced after the password and portal users can add passkeys (fingerprint, face or device PIN) as one variant of it, next to the email code of advanced_mfa. Users with a passkey use it by default; with advanced_mfa off, the passkey is the only second factor once a user has added one. On passwordless portals a passkey can replace the email code. Passkeys are bound to the domain they were added on. Default off; turning it off again restores the previous behaviour and keeps registered passkeys.
11082
+ *
11083
+ */
11084
+ passkeys?: {
11085
+ /**
11086
+ * Enforce a second factor and allow passkeys as one variant of it
11087
+ */
11088
+ enabled?: boolean;
11089
+ };
10555
11090
  entry_point?: "PASSWORD" | "SSO";
10556
11091
  preferred_sso_providers?: /**
10557
11092
  * URL-friendly slug to use as organization-unique identifier for Provider
@@ -10579,6 +11114,12 @@ declare namespace Components {
10579
11114
  * 6bsd0jkgoie74k2i8mrhc1vest
10580
11115
  */
10581
11116
  cognito_user_pool_client_id?: string;
11117
+ /**
11118
+ * Cognito user pool client ID used by the native portal apps (longer refresh token validity)
11119
+ * example:
11120
+ * 3k9fj2l1m0n8b7v6c5x4z3a2s1
11121
+ */
11122
+ cognito_mobile_client_id?: string;
10582
11123
  /**
10583
11124
  * Cognito user pool ARN
10584
11125
  * example:
@@ -10961,7 +11502,7 @@ declare namespace Components {
10961
11502
  */
10962
11503
  is_dummy?: boolean;
10963
11504
  /**
10964
- * Whether this is a v3 portal configuration
11505
+ * Always true. Legacy v2 storage was migrated; field kept for compatibility and will be removed.
10965
11506
  */
10966
11507
  is_v3_item?: boolean;
10967
11508
  /**
@@ -11000,6 +11541,7 @@ declare namespace Components {
11000
11541
  * Master toggle for the portal's engagement center (in-app notifications including the notification triggers above). Off when absent — portal users only see the engagement center and receive trigger notifications after an admin enables it.
11001
11542
  */
11002
11543
  engagement_center_enabled?: boolean;
11544
+ engagement_center_task_templates?: /* Handlebars templates rendering each outstanding task (to-do) row in the portal's engagement center. Resolved server-side per task against the task's entity (same variable syntax as page block templates, e.g. `{{order.order_number}}`, custom and environment variables) plus `task.*` (the workflow step, e.g. `{{task.name}}`), `workflow.*` (the execution, e.g. `{{workflow.name}}`) and `entity.*` (the task's entity regardless of its schema, e.g. `{{entity._title}}`). A template that is absent or blank keeps the portal's default rendering for that line. Admin/builder-only — never exposed via the public portal config. */ EngagementCenterTaskTemplates;
11003
11545
  }
11004
11546
  export interface UpsertPortalConfigV3 {
11005
11547
  /**
@@ -11160,6 +11702,16 @@ declare namespace Components {
11160
11702
  */
11161
11703
  enabled?: boolean;
11162
11704
  };
11705
+ /**
11706
+ * Opt-in, set by the configuring user. When enabled, a second factor is enforced after the password and portal users can add passkeys (fingerprint, face or device PIN) as one variant of it, next to the email code of advanced_mfa. Users with a passkey use it by default; with advanced_mfa off, the passkey is the only second factor once a user has added one. On passwordless portals a passkey can replace the email code. Passkeys are bound to the domain they were added on. Default off; turning it off again restores the previous behaviour and keeps registered passkeys.
11707
+ *
11708
+ */
11709
+ passkeys?: {
11710
+ /**
11711
+ * Enforce a second factor and allow passkeys as one variant of it
11712
+ */
11713
+ enabled?: boolean;
11714
+ };
11163
11715
  entry_point?: "PASSWORD" | "SSO";
11164
11716
  preferred_sso_providers?: /**
11165
11717
  * URL-friendly slug to use as organization-unique identifier for Provider
@@ -11187,6 +11739,12 @@ declare namespace Components {
11187
11739
  * 6bsd0jkgoie74k2i8mrhc1vest
11188
11740
  */
11189
11741
  cognito_user_pool_client_id?: string;
11742
+ /**
11743
+ * Cognito user pool client ID used by the native portal apps (longer refresh token validity)
11744
+ * example:
11745
+ * 3k9fj2l1m0n8b7v6c5x4z3a2s1
11746
+ */
11747
+ cognito_mobile_client_id?: string;
11190
11748
  /**
11191
11749
  * Cognito user pool ARN
11192
11750
  * example:
@@ -11569,7 +12127,7 @@ declare namespace Components {
11569
12127
  */
11570
12128
  is_dummy?: boolean;
11571
12129
  /**
11572
- * Whether this is a v3 portal configuration
12130
+ * Always true. Legacy v2 storage was migrated; field kept for compatibility and will be removed.
11573
12131
  */
11574
12132
  is_v3_item?: boolean;
11575
12133
  /**
@@ -11605,7 +12163,7 @@ declare namespace Components {
11605
12163
  */
11606
12164
  portal_sk_v3?: string;
11607
12165
  /**
11608
- * Indicates whether the widget configuration is stored as a V3 portal-scoped item
12166
+ * Always true. Legacy v2 storage was migrated; field kept for compatibility and will be removed.
11609
12167
  */
11610
12168
  is_v3_item?: boolean;
11611
12169
  widgets: PortalWidget[];
@@ -11859,6 +12417,27 @@ declare namespace Paths {
11859
12417
  export type $500 = Components.Responses.InternalServerError;
11860
12418
  }
11861
12419
  }
12420
+ namespace AddPortalUserPasskey {
12421
+ export interface RequestBody {
12422
+ /**
12423
+ * WebAuthn RegistrationResponseJSON from the browser
12424
+ */
12425
+ registration_response: {
12426
+ [name: string]: any;
12427
+ };
12428
+ /**
12429
+ * Label shown to the user, e.g. "iPhone"
12430
+ */
12431
+ name?: string;
12432
+ }
12433
+ namespace Responses {
12434
+ export type $201 = Components.Schemas.PortalUserPasskey;
12435
+ export type $400 = Components.Responses.InvalidRequest;
12436
+ export type $401 = Components.Responses.Unauthorized;
12437
+ export type $403 = Components.Responses.Forbidden;
12438
+ export type $500 = Components.Responses.InternalServerError;
12439
+ }
12440
+ }
11862
12441
  namespace CanTriggerPortalFlow {
11863
12442
  namespace Parameters {
11864
12443
  export type Origin = /* Origin of the portal */ Components.Schemas.Origin;
@@ -12375,6 +12954,40 @@ declare namespace Paths {
12375
12954
  export type $500 = Components.Responses.InternalServerError;
12376
12955
  }
12377
12956
  }
12957
+ namespace CreatePortalRevisionPreview {
12958
+ namespace Parameters {
12959
+ /**
12960
+ * example:
12961
+ * 5da0a718-c822-403d-9f5d-20d4584e0528
12962
+ */
12963
+ export type PortalId = string; // uuid
12964
+ /**
12965
+ * example:
12966
+ * 2026-08-25T14:03:11.482Z-a7f3c1d9
12967
+ */
12968
+ export type RevisionId = string;
12969
+ }
12970
+ export interface PathParameters {
12971
+ portal_id: /**
12972
+ * example:
12973
+ * 5da0a718-c822-403d-9f5d-20d4584e0528
12974
+ */
12975
+ Parameters.PortalId /* uuid */;
12976
+ revision_id: /**
12977
+ * example:
12978
+ * 2026-08-25T14:03:11.482Z-a7f3c1d9
12979
+ */
12980
+ Parameters.RevisionId;
12981
+ }
12982
+ namespace Responses {
12983
+ export type $200 = Components.Schemas.PortalRevisionPreview;
12984
+ export type $400 = Components.Responses.InvalidRequest;
12985
+ export type $401 = Components.Responses.Unauthorized;
12986
+ export type $403 = Components.Responses.Forbidden;
12987
+ export type $404 = Components.Responses.NotFound;
12988
+ export type $500 = Components.Responses.InternalServerError;
12989
+ }
12990
+ }
12378
12991
  namespace CreatePortalUserEntity {
12379
12992
  namespace Parameters {
12380
12993
  /**
@@ -12399,6 +13012,23 @@ declare namespace Paths {
12399
13012
  export type $500 = Components.Responses.InternalServerError;
12400
13013
  }
12401
13014
  }
13015
+ namespace CreatePortalUserPasskeyRegistrationOptions {
13016
+ export interface RequestBody {
13017
+ /**
13018
+ * The 6-digit code sent to the user's email address
13019
+ */
13020
+ verification_code: string;
13021
+ }
13022
+ namespace Responses {
13023
+ export interface $200 {
13024
+ [name: string]: any;
13025
+ }
13026
+ export type $400 = Components.Responses.InvalidRequest;
13027
+ export type $401 = Components.Responses.Unauthorized;
13028
+ export type $403 = Components.Responses.Forbidden;
13029
+ export type $500 = Components.Responses.InternalServerError;
13030
+ }
13031
+ }
12402
13032
  namespace CreateUser {
12403
13033
  namespace Parameters {
12404
13034
  export type Origin = /* Origin of the portal */ Components.Schemas.Origin;
@@ -12454,24 +13084,6 @@ declare namespace Paths {
12454
13084
  export type $500 = Components.Responses.InternalServerError;
12455
13085
  }
12456
13086
  }
12457
- namespace DeleteEntityFile {
12458
- export type RequestBody = Components.Schemas.DeleteEntityFile;
12459
- namespace Responses {
12460
- export interface $202 {
12461
- deletedFiles?: /**
12462
- * Entity ID
12463
- * example:
12464
- * 5da0a718-c822-403d-9f5d-20d4584e0528
12465
- */
12466
- Components.Schemas.EntityId /* uuid */[];
12467
- }
12468
- export type $400 = Components.Responses.InvalidRequest;
12469
- export type $401 = Components.Responses.Unauthorized;
12470
- export type $403 = Components.Responses.Forbidden;
12471
- export type $404 = Components.Responses.NotFound;
12472
- export type $500 = Components.Responses.InternalServerError;
12473
- }
12474
- }
12475
13087
  namespace DeletePortal {
12476
13088
  namespace Parameters {
12477
13089
  export type Origin = /* Origin of the portal */ Components.Schemas.Origin;
@@ -12553,6 +13165,39 @@ declare namespace Paths {
12553
13165
  export type $500 = Components.Responses.InternalServerError;
12554
13166
  }
12555
13167
  }
13168
+ namespace DeletePortalUserPasskey {
13169
+ namespace Parameters {
13170
+ export type CredentialId = string;
13171
+ }
13172
+ export interface PathParameters {
13173
+ credential_id: Parameters.CredentialId;
13174
+ }
13175
+ namespace Responses {
13176
+ export interface $204 {
13177
+ }
13178
+ export type $401 = Components.Responses.Unauthorized;
13179
+ export type $404 = Components.Responses.NotFound;
13180
+ export type $500 = Components.Responses.InternalServerError;
13181
+ }
13182
+ }
13183
+ namespace DetachPortalPage {
13184
+ namespace Responses {
13185
+ export type $200 = Components.Schemas.Page;
13186
+ export type $401 = Components.Responses.Unauthorized;
13187
+ export type $403 = Components.Responses.Forbidden;
13188
+ export type $404 = Components.Responses.NotFound;
13189
+ export type $500 = Components.Responses.InternalServerError;
13190
+ }
13191
+ }
13192
+ namespace DetachPortalPageBlock {
13193
+ namespace Responses {
13194
+ export type $200 = Components.Schemas.Block;
13195
+ export type $401 = Components.Responses.Unauthorized;
13196
+ export type $403 = Components.Responses.Forbidden;
13197
+ export type $404 = Components.Responses.NotFound;
13198
+ export type $500 = Components.Responses.InternalServerError;
13199
+ }
13200
+ }
12556
13201
  namespace DisablePartner {
12557
13202
  namespace Parameters {
12558
13203
  /**
@@ -14901,6 +15546,10 @@ declare namespace Paths {
14901
15546
  counter_templates?: {
14902
15547
  [name: string]: string;
14903
15548
  };
15549
+ /**
15550
+ * When true, the response includes `counter` with the counter's unit, OBIS number, direction and tariff type. Access is checked by metering-api on the counter's parent meter.
15551
+ */
15552
+ include_counter?: boolean;
14904
15553
  /**
14905
15554
  * Reference to the meter reading block whose admin-configured content provides both the per-reading templates (content_top_name, main_content_name, content_bottom_name) and the counter templates (counter_title_name, counter_subtitle_name), derived server-side.
14906
15555
  */
@@ -14921,6 +15570,7 @@ declare namespace Paths {
14921
15570
  counter_templates_output?: {
14922
15571
  [name: string]: string;
14923
15572
  };
15573
+ counter?: /* Display details of the counter the readings belong to. Only returned when `include_counter` is true and the counter could be resolved. */ Components.Schemas.MeterReadingCounterDetails;
14924
15574
  }
14925
15575
  export type $400 = Components.Responses.InvalidRequest;
14926
15576
  export type $401 = Components.Responses.Unauthorized;
@@ -15223,6 +15873,16 @@ declare namespace Paths {
15223
15873
  */
15224
15874
  enabled?: boolean;
15225
15875
  };
15876
+ /**
15877
+ * Opt-in, set by the configuring user. When enabled, a second factor is enforced after the password and portal users can add passkeys (fingerprint, face or device PIN) as one variant of it, next to the email code of advanced_mfa. Users with a passkey use it by default; with advanced_mfa off, the passkey is the only second factor once a user has added one. On passwordless portals a passkey can replace the email code. Passkeys are bound to the domain they were added on. Default off; turning it off again restores the previous behaviour and keeps registered passkeys.
15878
+ *
15879
+ */
15880
+ passkeys?: {
15881
+ /**
15882
+ * Enforce a second factor and allow passkeys as one variant of it
15883
+ */
15884
+ enabled?: boolean;
15885
+ };
15226
15886
  entry_point?: "PASSWORD" | "SSO";
15227
15887
  preferred_sso_providers?: /**
15228
15888
  * URL-friendly slug to use as organization-unique identifier for Provider
@@ -15250,6 +15910,12 @@ declare namespace Paths {
15250
15910
  * 6bsd0jkgoie74k2i8mrhc1vest
15251
15911
  */
15252
15912
  cognito_user_pool_client_id?: string;
15913
+ /**
15914
+ * Cognito user pool client ID used by the native portal apps (longer refresh token validity)
15915
+ * example:
15916
+ * 3k9fj2l1m0n8b7v6c5x4z3a2s1
15917
+ */
15918
+ cognito_mobile_client_id?: string;
15253
15919
  /**
15254
15920
  * Cognito user pool ARN
15255
15921
  * example:
@@ -15632,7 +16298,7 @@ declare namespace Paths {
15632
16298
  */
15633
16299
  is_dummy?: boolean;
15634
16300
  /**
15635
- * Whether this is a v3 portal configuration
16301
+ * Always true. Legacy v2 storage was migrated; field kept for compatibility and will be removed.
15636
16302
  */
15637
16303
  is_v3_item?: boolean;
15638
16304
  /**
@@ -15671,6 +16337,7 @@ declare namespace Paths {
15671
16337
  * Master toggle for the portal's engagement center (in-app notifications including the notification triggers above). Off when absent — portal users only see the engagement center and receive trigger notifications after an admin enables it.
15672
16338
  */
15673
16339
  engagement_center_enabled?: boolean;
16340
+ engagement_center_task_templates?: /* Handlebars templates rendering each outstanding task (to-do) row in the portal's engagement center. Resolved server-side per task against the task's entity (same variable syntax as page block templates, e.g. `{{order.order_number}}`, custom and environment variables) plus `task.*` (the workflow step, e.g. `{{task.name}}`), `workflow.*` (the execution, e.g. `{{workflow.name}}`) and `entity.*` (the task's entity regardless of its schema, e.g. `{{entity._title}}`). A template that is absent or blank keeps the portal's default rendering for that line. Admin/builder-only — never exposed via the public portal config. */ Components.Schemas.EngagementCenterTaskTemplates;
15674
16341
  /**
15675
16342
  * ID of the organization
15676
16343
  * example:
@@ -15683,6 +16350,26 @@ declare namespace Paths {
15683
16350
  * 12345
15684
16351
  */
15685
16352
  organization_id?: string;
16353
+ /**
16354
+ * Blueprint instance ids managing this portal. Server-managed: ignored (stripped) on every write from a user.
16355
+ *
16356
+ */
16357
+ _manifest?: string[];
16358
+ /**
16359
+ * Id of this portal in the blueprint source. Set once: a blueprint install or update (portal create, `page_upsert_mode=slug`, or a revision with `revision_source` `blueprint_sync`) may give a portal the lineage it does not have yet, unless another portal of the organization holds it. A portal created as a copy next to the organization's live portal of its origin (downgraded to `ADDITIONAL_PORTAL`) never takes it. After that it never changes; every other write keeps the stored value. Locks nothing on its own.
16360
+ *
16361
+ */
16362
+ _lineage_id?: string;
16363
+ /**
16364
+ * Lineage ids of pages detached from their blueprint; a blueprint sync leaves them alone. Server-managed.
16365
+ *
16366
+ */
16367
+ detached_lineage_ids?: string[];
16368
+ /**
16369
+ * Only present on write responses: blueprint-managed pages/blocks the request tried to change. Their stored version was kept and the rest of the save succeeded.
16370
+ *
16371
+ */
16372
+ held_back?: /* A blueprint-managed page or block a write tried to change; the stored version was kept. */ Components.Schemas.HeldBackNode[];
15686
16373
  /**
15687
16374
  * Organization settings
15688
16375
  */
@@ -15738,6 +16425,19 @@ declare namespace Paths {
15738
16425
  *
15739
16426
  */
15740
16427
  Components.Schemas.ProviderConfig[];
16428
+ /**
16429
+ * Present only when the request carried a valid `x-portal-preview-token`: the config is this revision's, not the live one.
16430
+ *
16431
+ */
16432
+ preview_revision?: {
16433
+ /**
16434
+ * example:
16435
+ * 2026-08-25T14:03:11.482Z-a7f3c1d9
16436
+ */
16437
+ revision_id: string;
16438
+ name?: string;
16439
+ created_at: string; // date-time
16440
+ };
15741
16441
  certificate_details?: {
15742
16442
  /**
15743
16443
  * Status of the certificate
@@ -15861,12 +16561,22 @@ declare namespace Paths {
15861
16561
  */
15862
16562
  enabled?: boolean;
15863
16563
  };
15864
- entry_point?: "PASSWORD" | "SSO";
15865
- preferred_sso_providers?: /**
15866
- * URL-friendly slug to use as organization-unique identifier for Provider
15867
- * example:
15868
- * office-365-login
15869
- */
16564
+ /**
16565
+ * Opt-in, set by the configuring user. When enabled, a second factor is enforced after the password and portal users can add passkeys (fingerprint, face or device PIN) as one variant of it, next to the email code of advanced_mfa. Users with a passkey use it by default; with advanced_mfa off, the passkey is the only second factor once a user has added one. On passwordless portals a passkey can replace the email code. Passkeys are bound to the domain they were added on. Default off; turning it off again restores the previous behaviour and keeps registered passkeys.
16566
+ *
16567
+ */
16568
+ passkeys?: {
16569
+ /**
16570
+ * Enforce a second factor and allow passkeys as one variant of it
16571
+ */
16572
+ enabled?: boolean;
16573
+ };
16574
+ entry_point?: "PASSWORD" | "SSO";
16575
+ preferred_sso_providers?: /**
16576
+ * URL-friendly slug to use as organization-unique identifier for Provider
16577
+ * example:
16578
+ * office-365-login
16579
+ */
15870
16580
  Components.Schemas.ProviderSlug /* [0-9a-z_-]+ */[];
15871
16581
  /**
15872
16582
  * Decide whether to automatically redirect to the provider page during login, which would completely bypass showing the portal authentication page.
@@ -15888,6 +16598,12 @@ declare namespace Paths {
15888
16598
  * 6bsd0jkgoie74k2i8mrhc1vest
15889
16599
  */
15890
16600
  cognito_user_pool_client_id?: string;
16601
+ /**
16602
+ * Cognito user pool client ID used by the native portal apps (longer refresh token validity)
16603
+ * example:
16604
+ * 3k9fj2l1m0n8b7v6c5x4z3a2s1
16605
+ */
16606
+ cognito_mobile_client_id?: string;
15891
16607
  /**
15892
16608
  * Cognito user pool ARN
15893
16609
  * example:
@@ -16270,7 +16986,7 @@ declare namespace Paths {
16270
16986
  */
16271
16987
  is_dummy?: boolean;
16272
16988
  /**
16273
- * Whether this is a v3 portal configuration
16989
+ * Always true. Legacy v2 storage was migrated; field kept for compatibility and will be removed.
16274
16990
  */
16275
16991
  is_v3_item?: boolean;
16276
16992
  /**
@@ -16309,6 +17025,7 @@ declare namespace Paths {
16309
17025
  * Master toggle for the portal's engagement center (in-app notifications including the notification triggers above). Off when absent — portal users only see the engagement center and receive trigger notifications after an admin enables it.
16310
17026
  */
16311
17027
  engagement_center_enabled?: boolean;
17028
+ engagement_center_task_templates?: /* Handlebars templates rendering each outstanding task (to-do) row in the portal's engagement center. Resolved server-side per task against the task's entity (same variable syntax as page block templates, e.g. `{{order.order_number}}`, custom and environment variables) plus `task.*` (the workflow step, e.g. `{{task.name}}`), `workflow.*` (the execution, e.g. `{{workflow.name}}`) and `entity.*` (the task's entity regardless of its schema, e.g. `{{entity._title}}`). A template that is absent or blank keeps the portal's default rendering for that line. Admin/builder-only — never exposed via the public portal config. */ Components.Schemas.EngagementCenterTaskTemplates;
16312
17029
  /**
16313
17030
  * ID of the organization
16314
17031
  * example:
@@ -16321,6 +17038,26 @@ declare namespace Paths {
16321
17038
  * 12345
16322
17039
  */
16323
17040
  organization_id?: string;
17041
+ /**
17042
+ * Blueprint instance ids managing this portal. Server-managed: ignored (stripped) on every write from a user.
17043
+ *
17044
+ */
17045
+ _manifest?: string[];
17046
+ /**
17047
+ * Id of this portal in the blueprint source. Set once: a blueprint install or update (portal create, `page_upsert_mode=slug`, or a revision with `revision_source` `blueprint_sync`) may give a portal the lineage it does not have yet, unless another portal of the organization holds it. A portal created as a copy next to the organization's live portal of its origin (downgraded to `ADDITIONAL_PORTAL`) never takes it. After that it never changes; every other write keeps the stored value. Locks nothing on its own.
17048
+ *
17049
+ */
17050
+ _lineage_id?: string;
17051
+ /**
17052
+ * Lineage ids of pages detached from their blueprint; a blueprint sync leaves them alone. Server-managed.
17053
+ *
17054
+ */
17055
+ detached_lineage_ids?: string[];
17056
+ /**
17057
+ * Only present on write responses: blueprint-managed pages/blocks the request tried to change. Their stored version was kept and the rest of the save succeeded.
17058
+ *
17059
+ */
17060
+ held_back?: /* A blueprint-managed page or block a write tried to change; the stored version was kept. */ Components.Schemas.HeldBackNode[];
16324
17061
  /**
16325
17062
  * Organization settings
16326
17063
  */
@@ -16376,6 +17113,19 @@ declare namespace Paths {
16376
17113
  *
16377
17114
  */
16378
17115
  Components.Schemas.ProviderConfig[];
17116
+ /**
17117
+ * Present only when the request carried a valid `x-portal-preview-token`: the config is this revision's, not the live one.
17118
+ *
17119
+ */
17120
+ preview_revision?: {
17121
+ /**
17122
+ * example:
17123
+ * 2026-08-25T14:03:11.482Z-a7f3c1d9
17124
+ */
17125
+ revision_id: string;
17126
+ name?: string;
17127
+ created_at: string; // date-time
17128
+ };
16379
17129
  certificate_details?: {
16380
17130
  /**
16381
17131
  * Status of the certificate
@@ -16501,6 +17251,15 @@ declare namespace Paths {
16501
17251
  export type $500 = Components.Responses.InternalServerError;
16502
17252
  }
16503
17253
  }
17254
+ namespace GetPortalCopilotAccess {
17255
+ namespace Responses {
17256
+ export interface $200 {
17257
+ allowed: boolean;
17258
+ }
17259
+ export type $401 = Components.Responses.Unauthorized;
17260
+ export type $500 = Components.Responses.InternalServerError;
17261
+ }
17262
+ }
16504
17263
  namespace GetPortalExtensions {
16505
17264
  namespace Parameters {
16506
17265
  export type Origin = /* Origin of the portal */ Components.Schemas.Origin;
@@ -16680,6 +17439,15 @@ declare namespace Paths {
16680
17439
  export type $500 = Components.Responses.InternalServerError;
16681
17440
  }
16682
17441
  }
17442
+ namespace GetPortalUserNotificationPreferences {
17443
+ namespace Responses {
17444
+ export type $200 = /* Resolved notification preferences of a portal user. Notifications are opt-out: a channel that was never stored on the portal user resolves to enabled (true). */ Components.Schemas.PortalUserNotificationPreferences;
17445
+ export type $401 = Components.Responses.Unauthorized;
17446
+ export type $403 = Components.Responses.Forbidden;
17447
+ export type $404 = Components.Responses.NotFound;
17448
+ export type $500 = Components.Responses.InternalServerError;
17449
+ }
17450
+ }
16683
17451
  namespace GetPortalWidgets {
16684
17452
  namespace Parameters {
16685
17453
  export type ContractId = /**
@@ -17053,6 +17821,16 @@ declare namespace Paths {
17053
17821
  */
17054
17822
  enabled?: boolean;
17055
17823
  };
17824
+ /**
17825
+ * Opt-in, set by the configuring user. When enabled, a second factor is enforced after the password and portal users can add passkeys (fingerprint, face or device PIN) as one variant of it, next to the email code of advanced_mfa. Users with a passkey use it by default; with advanced_mfa off, the passkey is the only second factor once a user has added one. On passwordless portals a passkey can replace the email code. Passkeys are bound to the domain they were added on. Default off; turning it off again restores the previous behaviour and keeps registered passkeys.
17826
+ *
17827
+ */
17828
+ passkeys?: {
17829
+ /**
17830
+ * Enforce a second factor and allow passkeys as one variant of it
17831
+ */
17832
+ enabled?: boolean;
17833
+ };
17056
17834
  entry_point?: "PASSWORD" | "SSO";
17057
17835
  preferred_sso_providers?: /**
17058
17836
  * URL-friendly slug to use as organization-unique identifier for Provider
@@ -17080,6 +17858,12 @@ declare namespace Paths {
17080
17858
  * 6bsd0jkgoie74k2i8mrhc1vest
17081
17859
  */
17082
17860
  cognito_user_pool_client_id?: string;
17861
+ /**
17862
+ * Cognito user pool client ID used by the native portal apps (longer refresh token validity)
17863
+ * example:
17864
+ * 3k9fj2l1m0n8b7v6c5x4z3a2s1
17865
+ */
17866
+ cognito_mobile_client_id?: string;
17083
17867
  /**
17084
17868
  * Cognito user pool ARN
17085
17869
  * example:
@@ -17462,7 +18246,7 @@ declare namespace Paths {
17462
18246
  */
17463
18247
  is_dummy?: boolean;
17464
18248
  /**
17465
- * Whether this is a v3 portal configuration
18249
+ * Always true. Legacy v2 storage was migrated; field kept for compatibility and will be removed.
17466
18250
  */
17467
18251
  is_v3_item?: boolean;
17468
18252
  /**
@@ -17501,6 +18285,7 @@ declare namespace Paths {
17501
18285
  * Master toggle for the portal's engagement center (in-app notifications including the notification triggers above). Off when absent — portal users only see the engagement center and receive trigger notifications after an admin enables it.
17502
18286
  */
17503
18287
  engagement_center_enabled?: boolean;
18288
+ engagement_center_task_templates?: /* Handlebars templates rendering each outstanding task (to-do) row in the portal's engagement center. Resolved server-side per task against the task's entity (same variable syntax as page block templates, e.g. `{{order.order_number}}`, custom and environment variables) plus `task.*` (the workflow step, e.g. `{{task.name}}`), `workflow.*` (the execution, e.g. `{{workflow.name}}`) and `entity.*` (the task's entity regardless of its schema, e.g. `{{entity._title}}`). A template that is absent or blank keeps the portal's default rendering for that line. Admin/builder-only — never exposed via the public portal config. */ Components.Schemas.EngagementCenterTaskTemplates;
17504
18289
  /**
17505
18290
  * ID of the organization
17506
18291
  * example:
@@ -17513,6 +18298,26 @@ declare namespace Paths {
17513
18298
  * 12345
17514
18299
  */
17515
18300
  organization_id?: string;
18301
+ /**
18302
+ * Blueprint instance ids managing this portal. Server-managed: ignored (stripped) on every write from a user.
18303
+ *
18304
+ */
18305
+ _manifest?: string[];
18306
+ /**
18307
+ * Id of this portal in the blueprint source. Set once: a blueprint install or update (portal create, `page_upsert_mode=slug`, or a revision with `revision_source` `blueprint_sync`) may give a portal the lineage it does not have yet, unless another portal of the organization holds it. A portal created as a copy next to the organization's live portal of its origin (downgraded to `ADDITIONAL_PORTAL`) never takes it. After that it never changes; every other write keeps the stored value. Locks nothing on its own.
18308
+ *
18309
+ */
18310
+ _lineage_id?: string;
18311
+ /**
18312
+ * Lineage ids of pages detached from their blueprint; a blueprint sync leaves them alone. Server-managed.
18313
+ *
18314
+ */
18315
+ detached_lineage_ids?: string[];
18316
+ /**
18317
+ * Only present on write responses: blueprint-managed pages/blocks the request tried to change. Their stored version was kept and the rest of the save succeeded.
18318
+ *
18319
+ */
18320
+ held_back?: /* A blueprint-managed page or block a write tried to change; the stored version was kept. */ Components.Schemas.HeldBackNode[];
17516
18321
  /**
17517
18322
  * Organization settings
17518
18323
  */
@@ -17553,6 +18358,19 @@ declare namespace Paths {
17553
18358
  *
17554
18359
  */
17555
18360
  identity_providers?: /* Minimal public identity provider info — enough to render a provider login button. */ Components.Schemas.PublicIdentityProvider[];
18361
+ /**
18362
+ * Present only when the request carried a valid `x-portal-preview-token`: the config is this revision's, not the live one.
18363
+ *
18364
+ */
18365
+ preview_revision?: {
18366
+ /**
18367
+ * example:
18368
+ * 2026-08-25T14:03:11.482Z-a7f3c1d9
18369
+ */
18370
+ revision_id: string;
18371
+ name?: string;
18372
+ created_at: string; // date-time
18373
+ };
17556
18374
  }
17557
18375
  export type $500 = Components.Responses.InternalServerError;
17558
18376
  }
@@ -18468,6 +19286,16 @@ declare namespace Paths {
18468
19286
  export type $500 = Components.Responses.InternalServerError;
18469
19287
  }
18470
19288
  }
19289
+ namespace ListPortalUserPasskeys {
19290
+ namespace Responses {
19291
+ export interface $200 {
19292
+ results?: Components.Schemas.PortalUserPasskey[];
19293
+ }
19294
+ export type $401 = Components.Responses.Unauthorized;
19295
+ export type $403 = Components.Responses.Forbidden;
19296
+ export type $500 = Components.Responses.InternalServerError;
19297
+ }
19298
+ }
18471
19299
  namespace LoginToPortalAsUser {
18472
19300
  export interface RequestBody {
18473
19301
  /**
@@ -18492,6 +19320,12 @@ declare namespace Paths {
18492
19320
  * A generated login_as_token to log in to a portal impersonating a user.
18493
19321
  */
18494
19322
  login_as_token?: string;
19323
+ /**
19324
+ * URL of the portal on its epilot domain, to open `/login-as?token=<login_as_token>` on.
19325
+ * example:
19326
+ * https://my-portal.ecp.epilot.io
19327
+ */
19328
+ portal_url?: string;
18495
19329
  }
18496
19330
  }
18497
19331
  }
@@ -19115,6 +19949,16 @@ declare namespace Paths {
19115
19949
  export type $500 = Components.Responses.InternalServerError;
19116
19950
  }
19117
19951
  }
19952
+ namespace SendPortalUserPasskeyVerificationCode {
19953
+ namespace Responses {
19954
+ export interface $204 {
19955
+ }
19956
+ export type $401 = Components.Responses.Unauthorized;
19957
+ export type $403 = Components.Responses.Forbidden;
19958
+ export type $429 = Components.Responses.TooManyRequests;
19959
+ export type $500 = Components.Responses.InternalServerError;
19960
+ }
19961
+ }
19118
19962
  namespace SsoCallback {
19119
19963
  namespace Parameters {
19120
19964
  /**
@@ -19135,6 +19979,15 @@ declare namespace Paths {
19135
19979
  export type RequestBody = Components.Schemas.SSOCallbackRequest;
19136
19980
  namespace Responses {
19137
19981
  export type $200 = Components.Schemas.SSOCallbackResponse;
19982
+ export type $400 = /**
19983
+ * Error response of the public SSO endpoints. Like every error response the message is in
19984
+ * `error`; `reason` carries a stable machine-readable cause when one is known (e.g.
19985
+ * `MISSING_EMAIL_CLAIM`, `INVALID_PROVIDER`, `SELF_REGISTRATION_NOT_ALLOWED`,
19986
+ * `TOKEN_EXCHANGE_FAILED`). `debug` is only present while SSO debug mode is active for the
19987
+ * resolved provider (`ProviderConfig.debug_mode_until`).
19988
+ *
19989
+ */
19990
+ Components.Schemas.SSOErrorResp;
19138
19991
  export type $500 = Components.Responses.InternalServerError;
19139
19992
  }
19140
19993
  }
@@ -19183,6 +20036,15 @@ declare namespace Paths {
19183
20036
  */
19184
20037
  email?: string;
19185
20038
  }
20039
+ export type $400 = /**
20040
+ * Error response of the public SSO endpoints. Like every error response the message is in
20041
+ * `error`; `reason` carries a stable machine-readable cause when one is known (e.g.
20042
+ * `MISSING_EMAIL_CLAIM`, `INVALID_PROVIDER`, `SELF_REGISTRATION_NOT_ALLOWED`,
20043
+ * `TOKEN_EXCHANGE_FAILED`). `debug` is only present while SSO debug mode is active for the
20044
+ * resolved provider (`ProviderConfig.debug_mode_until`).
20045
+ *
20046
+ */
20047
+ Components.Schemas.SSOErrorResp;
19186
20048
  }
19187
20049
  }
19188
20050
  namespace SsoLoginV3 {
@@ -19241,7 +20103,15 @@ declare namespace Paths {
19241
20103
  */
19242
20104
  email?: string;
19243
20105
  }
19244
- export type $400 = Components.Responses.InvalidRequest;
20106
+ export type $400 = /**
20107
+ * Error response of the public SSO endpoints. Like every error response the message is in
20108
+ * `error`; `reason` carries a stable machine-readable cause when one is known (e.g.
20109
+ * `MISSING_EMAIL_CLAIM`, `INVALID_PROVIDER`, `SELF_REGISTRATION_NOT_ALLOWED`,
20110
+ * `TOKEN_EXCHANGE_FAILED`). `debug` is only present while SSO debug mode is active for the
20111
+ * resolved provider (`ProviderConfig.debug_mode_until`).
20112
+ *
20113
+ */
20114
+ Components.Schemas.SSOErrorResp;
19245
20115
  }
19246
20116
  }
19247
20117
  namespace SsoRedirect {
@@ -19333,6 +20203,7 @@ declare namespace Paths {
19333
20203
  export type $401 = Components.Responses.Unauthorized;
19334
20204
  export type $403 = Components.Responses.Forbidden;
19335
20205
  export type $404 = Components.Responses.NotFound;
20206
+ export type $409 = Components.Schemas.ErrorResp;
19336
20207
  export type $500 = Components.Responses.InternalServerError;
19337
20208
  }
19338
20209
  }
@@ -19501,7 +20372,12 @@ declare namespace Paths {
19501
20372
  }
19502
20373
  }
19503
20374
  namespace UpdateContact {
19504
- export type RequestBody = Components.Schemas.Entity;
20375
+ export type RequestBody = /**
20376
+ * Contact attributes a portal user can change. Other attributes are ignored.
20377
+ * Value types follow the organization's contact schema.
20378
+ *
20379
+ */
20380
+ Components.Schemas.PortalContactUpdate;
19505
20381
  namespace Responses {
19506
20382
  export interface $200 {
19507
20383
  data?: /* The mapped contact of the portal user */ Components.Schemas.Contact;
@@ -19524,7 +20400,7 @@ declare namespace Paths {
19524
20400
  export interface PathParameters {
19525
20401
  id: Parameters.Id;
19526
20402
  }
19527
- export type RequestBody = Components.Schemas.Entity;
20403
+ export type RequestBody = /* Contract attributes a portal user can change. Other attributes are ignored. */ Components.Schemas.PortalContractUpdate;
19528
20404
  namespace Responses {
19529
20405
  export interface $200 {
19530
20406
  data?: /* The contract entity */ Components.Schemas.Contract;
@@ -19564,52 +20440,6 @@ declare namespace Paths {
19564
20440
  export type $500 = Components.Responses.InternalServerError;
19565
20441
  }
19566
20442
  }
19567
- namespace UpdateOpportunity {
19568
- namespace Parameters {
19569
- export type Id = /**
19570
- * Entity ID
19571
- * example:
19572
- * 5da0a718-c822-403d-9f5d-20d4584e0528
19573
- */
19574
- Components.Schemas.EntityId /* uuid */;
19575
- }
19576
- export interface PathParameters {
19577
- id: Parameters.Id;
19578
- }
19579
- export type RequestBody = Components.Schemas.Entity;
19580
- namespace Responses {
19581
- export interface $200 {
19582
- data?: /* The opportunity entity */ Components.Schemas.Opportunity;
19583
- }
19584
- export type $401 = Components.Responses.Unauthorized;
19585
- export type $403 = Components.Responses.Forbidden;
19586
- export type $404 = Components.Responses.NotFound;
19587
- export type $500 = Components.Responses.InternalServerError;
19588
- }
19589
- }
19590
- namespace UpdateOrder {
19591
- namespace Parameters {
19592
- export type Id = /**
19593
- * Entity ID
19594
- * example:
19595
- * 5da0a718-c822-403d-9f5d-20d4584e0528
19596
- */
19597
- Components.Schemas.EntityId /* uuid */;
19598
- }
19599
- export interface PathParameters {
19600
- id: Parameters.Id;
19601
- }
19602
- export type RequestBody = Components.Schemas.Entity;
19603
- namespace Responses {
19604
- export interface $200 {
19605
- data?: /* The order entity */ Components.Schemas.Order;
19606
- }
19607
- export type $401 = Components.Responses.Unauthorized;
19608
- export type $403 = Components.Responses.Forbidden;
19609
- export type $404 = Components.Responses.NotFound;
19610
- export type $500 = Components.Responses.InternalServerError;
19611
- }
19612
- }
19613
20443
  namespace UpdatePortalPage {
19614
20444
  export type RequestBody = Components.Schemas.PageRequest;
19615
20445
  namespace Responses {
@@ -19665,16 +20495,6 @@ declare namespace Paths {
19665
20495
  export type $500 = Components.Responses.InternalServerError;
19666
20496
  }
19667
20497
  }
19668
- namespace UpdatePortalUser {
19669
- export type RequestBody = Components.Schemas.Entity;
19670
- namespace Responses {
19671
- export interface $200 {
19672
- data?: /* The portal user entity */ Components.Schemas.PortalUser;
19673
- }
19674
- export type $401 = Components.Responses.Unauthorized;
19675
- export type $500 = Components.Responses.InternalServerError;
19676
- }
19677
- }
19678
20498
  namespace UpdatePortalUserEmail {
19679
20499
  export interface RequestBody {
19680
20500
  /**
@@ -19710,6 +20530,25 @@ declare namespace Paths {
19710
20530
  export type $500 = Components.Responses.InternalServerError;
19711
20531
  }
19712
20532
  }
20533
+ namespace UpdatePortalUserNotificationPreferences {
20534
+ /**
20535
+ * Channels to update. Omitted channels are left unchanged.
20536
+ */
20537
+ export interface RequestBody {
20538
+ /**
20539
+ * Whether the portal user wants to receive in-app notifications.
20540
+ */
20541
+ in_app?: boolean;
20542
+ }
20543
+ namespace Responses {
20544
+ export type $200 = /* Resolved notification preferences of a portal user. Notifications are opt-out: a channel that was never stored on the portal user resolves to enabled (true). */ Components.Schemas.PortalUserNotificationPreferences;
20545
+ export type $400 = Components.Responses.InvalidRequest;
20546
+ export type $401 = Components.Responses.Unauthorized;
20547
+ export type $403 = Components.Responses.Forbidden;
20548
+ export type $404 = Components.Responses.NotFound;
20549
+ export type $500 = Components.Responses.InternalServerError;
20550
+ }
20551
+ }
19713
20552
  namespace UpdateWorkflowStepAsDone {
19714
20553
  namespace Parameters {
19715
20554
  /**
@@ -20066,6 +20905,48 @@ declare namespace Paths {
20066
20905
  Parameters.BlockId /* uuid */;
20067
20906
  }
20068
20907
  }
20908
+ namespace V2PortalPages$IdBlocks$BlockIdDetach {
20909
+ namespace Parameters {
20910
+ /**
20911
+ * example:
20912
+ * c495fef9-eeca-4019-a989-8390dcd9825b
20913
+ */
20914
+ export type BlockId = string; // uuid
20915
+ /**
20916
+ * example:
20917
+ * 5da0a718-c822-403d-9f5d-20d4584e0528
20918
+ */
20919
+ export type Id = string; // uuid
20920
+ }
20921
+ export interface PathParameters {
20922
+ id: /**
20923
+ * example:
20924
+ * 5da0a718-c822-403d-9f5d-20d4584e0528
20925
+ */
20926
+ Parameters.Id /* uuid */;
20927
+ block_id: /**
20928
+ * example:
20929
+ * c495fef9-eeca-4019-a989-8390dcd9825b
20930
+ */
20931
+ Parameters.BlockId /* uuid */;
20932
+ }
20933
+ }
20934
+ namespace V2PortalPages$IdDetach {
20935
+ namespace Parameters {
20936
+ /**
20937
+ * example:
20938
+ * 5da0a718-c822-403d-9f5d-20d4584e0528
20939
+ */
20940
+ export type Id = string; // uuid
20941
+ }
20942
+ export interface PathParameters {
20943
+ id: /**
20944
+ * example:
20945
+ * 5da0a718-c822-403d-9f5d-20d4584e0528
20946
+ */
20947
+ Parameters.Id /* uuid */;
20948
+ }
20949
+ }
20069
20950
  namespace ValidateCaaRecords {
20070
20951
  namespace Parameters {
20071
20952
  export type Origin = /* Origin of the portal */ Components.Schemas.Origin;
@@ -20526,8 +21407,8 @@ export interface OperationMethods {
20526
21407
  * at `destination_template_id`. Intended to be called from the email-template
20527
21408
  * migration flow when a duplicated template is refined.
20528
21409
  *
20529
- * Only v3-shaped rows are migrated (those carrying `portal_sk_v3`). Returns
20530
- * the portal IDs that were rewritten and any whose update failed.
21410
+ * Rows are keyed by portal id (`portal_sk_v3`); a row without one is skipped.
21411
+ * Returns the portal IDs that were rewritten and any whose update failed.
20531
21412
  *
20532
21413
  */
20533
21414
  'migrateEmailTemplateReferences'(
@@ -20751,7 +21632,9 @@ export interface OperationMethods {
20751
21632
  /**
20752
21633
  * updateContact - updateContact
20753
21634
  *
20754
- * Updates the contact details.
21635
+ * Updates the portal user's contact. Only the attributes in `PortalContactUpdate` can be changed;
21636
+ * other attributes are ignored. Returns 403 when the body has none of them.
21637
+ *
20755
21638
  */
20756
21639
  'updateContact'(
20757
21640
  parameters?: Parameters<UnknownParamsObject> | null,
@@ -20844,25 +21727,25 @@ export interface OperationMethods {
20844
21727
  config?: AxiosRequestConfig
20845
21728
  ): OperationResponse<Paths.GetValidSecondaryAttributes.Responses.$200>
20846
21729
  /**
20847
- * getPortalUser - getPortalUser
21730
+ * getPortalCopilotAccess - getPortalCopilotAccess
20848
21731
  *
20849
- * Get the portal user details
21732
+ * Whether the signed-in portal user may use the portal chat. False when the chat is off for the portal, when the user does not match its target visibility, or when targets cannot be matched.
20850
21733
  */
20851
- 'getPortalUser'(
21734
+ 'getPortalCopilotAccess'(
20852
21735
  parameters?: Parameters<UnknownParamsObject> | null,
20853
21736
  data?: any,
20854
21737
  config?: AxiosRequestConfig
20855
- ): OperationResponse<Paths.GetPortalUser.Responses.$200>
21738
+ ): OperationResponse<Paths.GetPortalCopilotAccess.Responses.$200>
20856
21739
  /**
20857
- * updatePortalUser - updatePortalUser
21740
+ * getPortalUser - getPortalUser
20858
21741
  *
20859
- * Update the portal user details
21742
+ * Get the portal user details
20860
21743
  */
20861
- 'updatePortalUser'(
21744
+ 'getPortalUser'(
20862
21745
  parameters?: Parameters<UnknownParamsObject> | null,
20863
- data?: Paths.UpdatePortalUser.RequestBody,
21746
+ data?: any,
20864
21747
  config?: AxiosRequestConfig
20865
- ): OperationResponse<Paths.UpdatePortalUser.Responses.$200>
21748
+ ): OperationResponse<Paths.GetPortalUser.Responses.$200>
20866
21749
  /**
20867
21750
  * deletePortalUser - deletePortalUser
20868
21751
  *
@@ -20895,6 +21778,86 @@ export interface OperationMethods {
20895
21778
  data?: Paths.ChangePortalUserPassword.RequestBody,
20896
21779
  config?: AxiosRequestConfig
20897
21780
  ): OperationResponse<Paths.ChangePortalUserPassword.Responses.$200>
21781
+ /**
21782
+ * getPortalUserNotificationPreferences - getPortalUserNotificationPreferences
21783
+ *
21784
+ * Returns the notification preferences of the authenticated portal user. Notifications follow an opt-out model: a preference that was never stored on the portal user defaults to enabled (true). Responds 404 while the engagement-center v2 feature is not enabled for the organization.
21785
+ */
21786
+ 'getPortalUserNotificationPreferences'(
21787
+ parameters?: Parameters<UnknownParamsObject> | null,
21788
+ data?: any,
21789
+ config?: AxiosRequestConfig
21790
+ ): OperationResponse<Paths.GetPortalUserNotificationPreferences.Responses.$200>
21791
+ /**
21792
+ * updatePortalUserNotificationPreferences - updatePortalUserNotificationPreferences
21793
+ *
21794
+ * Partially updates the notification preferences of the authenticated portal user. Only the channels present in the request body are changed; omitted channels keep their stored value (or the enabled-by-default behaviour when never set). Returns the resulting full preferences. Responds 404 while the engagement-center v2 feature is not enabled for the organization.
21795
+ */
21796
+ 'updatePortalUserNotificationPreferences'(
21797
+ parameters?: Parameters<UnknownParamsObject> | null,
21798
+ data?: Paths.UpdatePortalUserNotificationPreferences.RequestBody,
21799
+ config?: AxiosRequestConfig
21800
+ ): OperationResponse<Paths.UpdatePortalUserNotificationPreferences.Responses.$200>
21801
+ /**
21802
+ * listPortalUserPasskeys - listPortalUserPasskeys
21803
+ *
21804
+ * Lists the passkeys the logged-in portal user has added.
21805
+ */
21806
+ 'listPortalUserPasskeys'(
21807
+ parameters?: Parameters<UnknownParamsObject> | null,
21808
+ data?: any,
21809
+ config?: AxiosRequestConfig
21810
+ ): OperationResponse<Paths.ListPortalUserPasskeys.Responses.$200>
21811
+ /**
21812
+ * addPortalUserPasskey - addPortalUserPasskey
21813
+ *
21814
+ * Stores a new passkey for the logged-in portal user.
21815
+ * Send the browser's `navigator.credentials.create()` result for options from `createPortalUserPasskeyRegistrationOptions`.
21816
+ * Only available when `auth_settings.passkeys.enabled` is set for the portal.
21817
+ *
21818
+ */
21819
+ 'addPortalUserPasskey'(
21820
+ parameters?: Parameters<UnknownParamsObject> | null,
21821
+ data?: Paths.AddPortalUserPasskey.RequestBody,
21822
+ config?: AxiosRequestConfig
21823
+ ): OperationResponse<Paths.AddPortalUserPasskey.Responses.$201>
21824
+ /**
21825
+ * createPortalUserPasskeyRegistrationOptions - createPortalUserPasskeyRegistrationOptions
21826
+ *
21827
+ * Returns WebAuthn options for `navigator.credentials.create()` to add a passkey for the logged-in portal user.
21828
+ * Needs the code from `sendPortalUserPasskeyVerificationCode`, so a session alone can't add a passkey; the code is used up here.
21829
+ * The passkey is bound to the domain in the request's `Origin` header, which must be one of the portal's domains.
21830
+ * Only available when `auth_settings.passkeys.enabled` is set for the portal.
21831
+ *
21832
+ */
21833
+ 'createPortalUserPasskeyRegistrationOptions'(
21834
+ parameters?: Parameters<UnknownParamsObject> | null,
21835
+ data?: Paths.CreatePortalUserPasskeyRegistrationOptions.RequestBody,
21836
+ config?: AxiosRequestConfig
21837
+ ): OperationResponse<Paths.CreatePortalUserPasskeyRegistrationOptions.Responses.$200>
21838
+ /**
21839
+ * sendPortalUserPasskeyVerificationCode - sendPortalUserPasskeyVerificationCode
21840
+ *
21841
+ * Emails the logged-in portal user a 6-digit code needed to add a passkey (`createPortalUserPasskeyRegistrationOptions`).
21842
+ * The code is valid for 10 minutes and allows 5 attempts; a new code replaces the previous one and can be requested once a minute.
21843
+ * Only available when `auth_settings.passkeys.enabled` is set for the portal.
21844
+ *
21845
+ */
21846
+ 'sendPortalUserPasskeyVerificationCode'(
21847
+ parameters?: Parameters<UnknownParamsObject> | null,
21848
+ data?: any,
21849
+ config?: AxiosRequestConfig
21850
+ ): OperationResponse<Paths.SendPortalUserPasskeyVerificationCode.Responses.$204>
21851
+ /**
21852
+ * deletePortalUserPasskey - deletePortalUserPasskey
21853
+ *
21854
+ * Removes one of the logged-in portal user's passkeys. Works even when passkeys are turned off for the portal.
21855
+ */
21856
+ 'deletePortalUserPasskey'(
21857
+ parameters?: Parameters<Paths.DeletePortalUserPasskey.PathParameters> | null,
21858
+ data?: any,
21859
+ config?: AxiosRequestConfig
21860
+ ): OperationResponse<Paths.DeletePortalUserPasskey.Responses.$204>
20898
21861
  /**
20899
21862
  * resendConfirmationEmail - resendConfirmationEmail
20900
21863
  *
@@ -21019,16 +21982,6 @@ export interface OperationMethods {
21019
21982
  data?: any,
21020
21983
  config?: AxiosRequestConfig
21021
21984
  ): OperationResponse<Paths.GetOrder.Responses.$200>
21022
- /**
21023
- * updateOrder - updateOrder
21024
- *
21025
- * Update an order by id. Use getPortalUserEntity instead.
21026
- */
21027
- 'updateOrder'(
21028
- parameters?: Parameters<Paths.UpdateOrder.PathParameters> | null,
21029
- data?: Paths.UpdateOrder.RequestBody,
21030
- config?: AxiosRequestConfig
21031
- ): OperationResponse<Paths.UpdateOrder.Responses.$200>
21032
21985
  /**
21033
21986
  * getAllOpportunities - getAllOpportunities
21034
21987
  *
@@ -21069,16 +22022,6 @@ export interface OperationMethods {
21069
22022
  data?: any,
21070
22023
  config?: AxiosRequestConfig
21071
22024
  ): OperationResponse<Paths.GetOpportunity.Responses.$200>
21072
- /**
21073
- * updateOpportunity - updateOpportunity
21074
- *
21075
- * Update an opportunity by id.
21076
- */
21077
- 'updateOpportunity'(
21078
- parameters?: Parameters<Paths.UpdateOpportunity.PathParameters> | null,
21079
- data?: Paths.UpdateOpportunity.RequestBody,
21080
- config?: AxiosRequestConfig
21081
- ): OperationResponse<Paths.UpdateOpportunity.Responses.$200>
21082
22025
  /**
21083
22026
  * getAllRequests - getAllRequests
21084
22027
  *
@@ -21112,7 +22055,9 @@ export interface OperationMethods {
21112
22055
  /**
21113
22056
  * updateContract - updateContract
21114
22057
  *
21115
- * Update a contract by id. Use getPortalUserEntity instead.
22058
+ * Updates a contract of the portal user. Only the attributes in `PortalContractUpdate` can be changed;
22059
+ * other attributes are ignored. Returns 403 when the body has none of them.
22060
+ *
21116
22061
  */
21117
22062
  'updateContract'(
21118
22063
  parameters?: Parameters<Paths.UpdateContract.PathParameters> | null,
@@ -21202,16 +22147,6 @@ export interface OperationMethods {
21202
22147
  data?: Paths.SaveEntityFile.RequestBody,
21203
22148
  config?: AxiosRequestConfig
21204
22149
  ): OperationResponse<Paths.SaveEntityFile.Responses.$201>
21205
- /**
21206
- * deleteEntityFile - deleteEntityFile
21207
- *
21208
- * Delete files from an entity
21209
- */
21210
- 'deleteEntityFile'(
21211
- parameters?: Parameters<UnknownParamsObject> | null,
21212
- data?: Paths.DeleteEntityFile.RequestBody,
21213
- config?: AxiosRequestConfig
21214
- ): OperationResponse<Paths.DeleteEntityFile.Responses.$202>
21215
22150
  /**
21216
22151
  * savePortalFiles - savePortalFiles
21217
22152
  *
@@ -21324,6 +22259,10 @@ export interface OperationMethods {
21324
22259
  * 2. Using domain
21325
22260
  * 3. Using origin (legacy)
21326
22261
  *
22262
+ * A partner user can log in as a portal user the vendor shared with their organization by sending
22263
+ * `x-epilot-org-id: <vendor org id>` with a `portal_id`. This needs `portal:login_as_user` on that portal in the
22264
+ * partner role and the portal user shared with the partner organization.
22265
+ *
21327
22266
  */
21328
22267
  'loginToPortalAsUser'(
21329
22268
  parameters?: Parameters<UnknownParamsObject> | null,
@@ -21439,7 +22378,7 @@ export interface OperationMethods {
21439
22378
  /**
21440
22379
  * getOutstandingTasks - Get outstanding workflow tasks for the portal user
21441
22380
  *
21442
- * Returns all outstanding workflow journey tasks for the authenticated portal user, across their opportunity, order and contract entities. Each task is an active workflow step that exposes a journey the customer still needs to fill out.
22381
+ * Returns all outstanding workflow journey tasks for the authenticated portal user, across their opportunity, order and contract entities. Each task is an active workflow step that exposes a journey the customer still needs to fill out. A step whose start date still lies in the future is left out until that date.
21443
22382
  */
21444
22383
  'getOutstandingTasks'(
21445
22384
  parameters?: Parameters<UnknownParamsObject> | null,
@@ -21660,6 +22599,28 @@ export interface OperationMethods {
21660
22599
  data?: any,
21661
22600
  config?: AxiosRequestConfig
21662
22601
  ): OperationResponse<Paths.DeletePortalPage.Responses.$204>
22602
+ /**
22603
+ * detachPortalPage - detachPortalPage
22604
+ *
22605
+ * Detach a blueprint-managed page from its blueprint. The page and all of its blocks become local (editable, no longer updated by the blueprint) and the page's lineage is tombstoned on the portal so future syncs skip it. One-way. Idempotent for pages that are not managed.
22606
+ *
22607
+ */
22608
+ 'detachPortalPage'(
22609
+ parameters?: Parameters<Paths.V2PortalPages$IdDetach.PathParameters> | null,
22610
+ data?: any,
22611
+ config?: AxiosRequestConfig
22612
+ ): OperationResponse<Paths.DetachPortalPage.Responses.$200>
22613
+ /**
22614
+ * detachPortalPageBlock - detachPortalPageBlock
22615
+ *
22616
+ * Detach a blueprint-managed block. The block becomes the customer's and its lineage is tombstoned on the page so future syncs skip it. A managed page stays managed and keeps receiving blueprint updates for everything else. One-way. Idempotent for blocks that are not managed.
22617
+ *
22618
+ */
22619
+ 'detachPortalPageBlock'(
22620
+ parameters?: Parameters<Paths.V2PortalPages$IdBlocks$BlockIdDetach.PathParameters> | null,
22621
+ data?: any,
22622
+ config?: AxiosRequestConfig
22623
+ ): OperationResponse<Paths.DetachPortalPageBlock.Responses.$200>
21663
22624
  /**
21664
22625
  * getPortalPages - getPortalPages
21665
22626
  *
@@ -21974,6 +22935,21 @@ export interface OperationMethods {
21974
22935
  data?: Paths.UpdatePortalRevision.RequestBody,
21975
22936
  config?: AxiosRequestConfig
21976
22937
  ): OperationResponse<Paths.UpdatePortalRevision.Responses.$200>
22938
+ /**
22939
+ * createPortalRevisionPreview - createPortalRevisionPreview
22940
+ *
22941
+ * Mints a short-lived preview token for one revision and returns a link that opens the revision inside the real end-customer portal, on the portal's live domain, without publishing it.
22942
+ *
22943
+ * The portal sends the token back in the `x-portal-preview-token` header. Public and portal-user config, page, widget and extension reads that honour it answer with the revision's config and pages instead of the live ones and add `preview_revision` to config responses. Server-owned fields (ids, domains, Cognito pool identifiers, extension secrets) always come from the live portal. Nothing is written: the live portal, its pages and which revision is published stay as they are.
22944
+ *
22945
+ * Requires view permission on the portal. Returns `404` when portal versioning or revision preview is not enabled for the organization, or when the revision does not exist.
22946
+ *
22947
+ */
22948
+ 'createPortalRevisionPreview'(
22949
+ parameters?: Parameters<Paths.CreatePortalRevisionPreview.PathParameters> | null,
22950
+ data?: any,
22951
+ config?: AxiosRequestConfig
22952
+ ): OperationResponse<Paths.CreatePortalRevisionPreview.Responses.$200>
21977
22953
  /**
21978
22954
  * publishPortalRevision - publishPortalRevision
21979
22955
  *
@@ -22533,8 +23509,8 @@ export interface PathsDictionary {
22533
23509
  * at `destination_template_id`. Intended to be called from the email-template
22534
23510
  * migration flow when a duplicated template is refined.
22535
23511
  *
22536
- * Only v3-shaped rows are migrated (those carrying `portal_sk_v3`). Returns
22537
- * the portal IDs that were rewritten and any whose update failed.
23512
+ * Rows are keyed by portal id (`portal_sk_v3`); a row without one is skipped.
23513
+ * Returns the portal IDs that were rewritten and any whose update failed.
22538
23514
  *
22539
23515
  */
22540
23516
  'post'(
@@ -22792,7 +23768,9 @@ export interface PathsDictionary {
22792
23768
  /**
22793
23769
  * updateContact - updateContact
22794
23770
  *
22795
- * Updates the contact details.
23771
+ * Updates the portal user's contact. Only the attributes in `PortalContactUpdate` can be changed;
23772
+ * other attributes are ignored. Returns 403 when the body has none of them.
23773
+ *
22796
23774
  */
22797
23775
  'patch'(
22798
23776
  parameters?: Parameters<UnknownParamsObject> | null,
@@ -22897,27 +23875,29 @@ export interface PathsDictionary {
22897
23875
  config?: AxiosRequestConfig
22898
23876
  ): OperationResponse<Paths.GetValidSecondaryAttributes.Responses.$200>
22899
23877
  }
22900
- ['/v2/portal/user']: {
23878
+ ['/v2/portal/copilot/access']: {
22901
23879
  /**
22902
- * getPortalUser - getPortalUser
23880
+ * getPortalCopilotAccess - getPortalCopilotAccess
22903
23881
  *
22904
- * Get the portal user details
23882
+ * Whether the signed-in portal user may use the portal chat. False when the chat is off for the portal, when the user does not match its target visibility, or when targets cannot be matched.
22905
23883
  */
22906
23884
  'get'(
22907
23885
  parameters?: Parameters<UnknownParamsObject> | null,
22908
23886
  data?: any,
22909
23887
  config?: AxiosRequestConfig
22910
- ): OperationResponse<Paths.GetPortalUser.Responses.$200>
23888
+ ): OperationResponse<Paths.GetPortalCopilotAccess.Responses.$200>
23889
+ }
23890
+ ['/v2/portal/user']: {
22911
23891
  /**
22912
- * updatePortalUser - updatePortalUser
23892
+ * getPortalUser - getPortalUser
22913
23893
  *
22914
- * Update the portal user details
23894
+ * Get the portal user details
22915
23895
  */
22916
- 'patch'(
23896
+ 'get'(
22917
23897
  parameters?: Parameters<UnknownParamsObject> | null,
22918
- data?: Paths.UpdatePortalUser.RequestBody,
23898
+ data?: any,
22919
23899
  config?: AxiosRequestConfig
22920
- ): OperationResponse<Paths.UpdatePortalUser.Responses.$200>
23900
+ ): OperationResponse<Paths.GetPortalUser.Responses.$200>
22921
23901
  /**
22922
23902
  * deletePortalUser - deletePortalUser
22923
23903
  *
@@ -22955,6 +23935,96 @@ export interface PathsDictionary {
22955
23935
  config?: AxiosRequestConfig
22956
23936
  ): OperationResponse<Paths.ChangePortalUserPassword.Responses.$200>
22957
23937
  }
23938
+ ['/v2/portal/user/notification-preferences']: {
23939
+ /**
23940
+ * getPortalUserNotificationPreferences - getPortalUserNotificationPreferences
23941
+ *
23942
+ * Returns the notification preferences of the authenticated portal user. Notifications follow an opt-out model: a preference that was never stored on the portal user defaults to enabled (true). Responds 404 while the engagement-center v2 feature is not enabled for the organization.
23943
+ */
23944
+ 'get'(
23945
+ parameters?: Parameters<UnknownParamsObject> | null,
23946
+ data?: any,
23947
+ config?: AxiosRequestConfig
23948
+ ): OperationResponse<Paths.GetPortalUserNotificationPreferences.Responses.$200>
23949
+ /**
23950
+ * updatePortalUserNotificationPreferences - updatePortalUserNotificationPreferences
23951
+ *
23952
+ * Partially updates the notification preferences of the authenticated portal user. Only the channels present in the request body are changed; omitted channels keep their stored value (or the enabled-by-default behaviour when never set). Returns the resulting full preferences. Responds 404 while the engagement-center v2 feature is not enabled for the organization.
23953
+ */
23954
+ 'put'(
23955
+ parameters?: Parameters<UnknownParamsObject> | null,
23956
+ data?: Paths.UpdatePortalUserNotificationPreferences.RequestBody,
23957
+ config?: AxiosRequestConfig
23958
+ ): OperationResponse<Paths.UpdatePortalUserNotificationPreferences.Responses.$200>
23959
+ }
23960
+ ['/v2/portal/user/passkeys']: {
23961
+ /**
23962
+ * listPortalUserPasskeys - listPortalUserPasskeys
23963
+ *
23964
+ * Lists the passkeys the logged-in portal user has added.
23965
+ */
23966
+ 'get'(
23967
+ parameters?: Parameters<UnknownParamsObject> | null,
23968
+ data?: any,
23969
+ config?: AxiosRequestConfig
23970
+ ): OperationResponse<Paths.ListPortalUserPasskeys.Responses.$200>
23971
+ /**
23972
+ * addPortalUserPasskey - addPortalUserPasskey
23973
+ *
23974
+ * Stores a new passkey for the logged-in portal user.
23975
+ * Send the browser's `navigator.credentials.create()` result for options from `createPortalUserPasskeyRegistrationOptions`.
23976
+ * Only available when `auth_settings.passkeys.enabled` is set for the portal.
23977
+ *
23978
+ */
23979
+ 'post'(
23980
+ parameters?: Parameters<UnknownParamsObject> | null,
23981
+ data?: Paths.AddPortalUserPasskey.RequestBody,
23982
+ config?: AxiosRequestConfig
23983
+ ): OperationResponse<Paths.AddPortalUserPasskey.Responses.$201>
23984
+ }
23985
+ ['/v2/portal/user/passkeys/registration-options']: {
23986
+ /**
23987
+ * createPortalUserPasskeyRegistrationOptions - createPortalUserPasskeyRegistrationOptions
23988
+ *
23989
+ * Returns WebAuthn options for `navigator.credentials.create()` to add a passkey for the logged-in portal user.
23990
+ * Needs the code from `sendPortalUserPasskeyVerificationCode`, so a session alone can't add a passkey; the code is used up here.
23991
+ * The passkey is bound to the domain in the request's `Origin` header, which must be one of the portal's domains.
23992
+ * Only available when `auth_settings.passkeys.enabled` is set for the portal.
23993
+ *
23994
+ */
23995
+ 'post'(
23996
+ parameters?: Parameters<UnknownParamsObject> | null,
23997
+ data?: Paths.CreatePortalUserPasskeyRegistrationOptions.RequestBody,
23998
+ config?: AxiosRequestConfig
23999
+ ): OperationResponse<Paths.CreatePortalUserPasskeyRegistrationOptions.Responses.$200>
24000
+ }
24001
+ ['/v2/portal/user/passkeys/verification-code']: {
24002
+ /**
24003
+ * sendPortalUserPasskeyVerificationCode - sendPortalUserPasskeyVerificationCode
24004
+ *
24005
+ * Emails the logged-in portal user a 6-digit code needed to add a passkey (`createPortalUserPasskeyRegistrationOptions`).
24006
+ * The code is valid for 10 minutes and allows 5 attempts; a new code replaces the previous one and can be requested once a minute.
24007
+ * Only available when `auth_settings.passkeys.enabled` is set for the portal.
24008
+ *
24009
+ */
24010
+ 'post'(
24011
+ parameters?: Parameters<UnknownParamsObject> | null,
24012
+ data?: any,
24013
+ config?: AxiosRequestConfig
24014
+ ): OperationResponse<Paths.SendPortalUserPasskeyVerificationCode.Responses.$204>
24015
+ }
24016
+ ['/v2/portal/user/passkeys/{credential_id}']: {
24017
+ /**
24018
+ * deletePortalUserPasskey - deletePortalUserPasskey
24019
+ *
24020
+ * Removes one of the logged-in portal user's passkeys. Works even when passkeys are turned off for the portal.
24021
+ */
24022
+ 'delete'(
24023
+ parameters?: Parameters<Paths.DeletePortalUserPasskey.PathParameters> | null,
24024
+ data?: any,
24025
+ config?: AxiosRequestConfig
24026
+ ): OperationResponse<Paths.DeletePortalUserPasskey.Responses.$204>
24027
+ }
22958
24028
  ['/v2/portal/user/resend/confirmation-email/{id}']: {
22959
24029
  /**
22960
24030
  * resendConfirmationEmail - resendConfirmationEmail
@@ -23102,16 +24172,6 @@ export interface PathsDictionary {
23102
24172
  data?: any,
23103
24173
  config?: AxiosRequestConfig
23104
24174
  ): OperationResponse<Paths.GetOrder.Responses.$200>
23105
- /**
23106
- * updateOrder - updateOrder
23107
- *
23108
- * Update an order by id. Use getPortalUserEntity instead.
23109
- */
23110
- 'patch'(
23111
- parameters?: Parameters<Paths.UpdateOrder.PathParameters> | null,
23112
- data?: Paths.UpdateOrder.RequestBody,
23113
- config?: AxiosRequestConfig
23114
- ): OperationResponse<Paths.UpdateOrder.Responses.$200>
23115
24175
  }
23116
24176
  ['/v2/portal/opportunity']: {
23117
24177
  /**
@@ -23160,16 +24220,6 @@ export interface PathsDictionary {
23160
24220
  data?: any,
23161
24221
  config?: AxiosRequestConfig
23162
24222
  ): OperationResponse<Paths.GetOpportunity.Responses.$200>
23163
- /**
23164
- * updateOpportunity - updateOpportunity
23165
- *
23166
- * Update an opportunity by id.
23167
- */
23168
- 'patch'(
23169
- parameters?: Parameters<Paths.UpdateOpportunity.PathParameters> | null,
23170
- data?: Paths.UpdateOpportunity.RequestBody,
23171
- config?: AxiosRequestConfig
23172
- ): OperationResponse<Paths.UpdateOpportunity.Responses.$200>
23173
24223
  }
23174
24224
  ['/v2/portal/request']: {
23175
24225
  /**
@@ -23209,7 +24259,9 @@ export interface PathsDictionary {
23209
24259
  /**
23210
24260
  * updateContract - updateContract
23211
24261
  *
23212
- * Update a contract by id. Use getPortalUserEntity instead.
24262
+ * Updates a contract of the portal user. Only the attributes in `PortalContractUpdate` can be changed;
24263
+ * other attributes are ignored. Returns 403 when the body has none of them.
24264
+ *
23213
24265
  */
23214
24266
  'patch'(
23215
24267
  parameters?: Parameters<Paths.UpdateContract.PathParameters> | null,
@@ -23315,16 +24367,6 @@ export interface PathsDictionary {
23315
24367
  data?: Paths.SaveEntityFile.RequestBody,
23316
24368
  config?: AxiosRequestConfig
23317
24369
  ): OperationResponse<Paths.SaveEntityFile.Responses.$201>
23318
- /**
23319
- * deleteEntityFile - deleteEntityFile
23320
- *
23321
- * Delete files from an entity
23322
- */
23323
- 'delete'(
23324
- parameters?: Parameters<UnknownParamsObject> | null,
23325
- data?: Paths.DeleteEntityFile.RequestBody,
23326
- config?: AxiosRequestConfig
23327
- ): OperationResponse<Paths.DeleteEntityFile.Responses.$202>
23328
24370
  }
23329
24371
  ['/v2/portal/portal/files']: {
23330
24372
  /**
@@ -23459,6 +24501,10 @@ export interface PathsDictionary {
23459
24501
  * 2. Using domain
23460
24502
  * 3. Using origin (legacy)
23461
24503
  *
24504
+ * A partner user can log in as a portal user the vendor shared with their organization by sending
24505
+ * `x-epilot-org-id: <vendor org id>` with a `portal_id`. This needs `portal:login_as_user` on that portal in the
24506
+ * partner role and the portal user shared with the partner organization.
24507
+ *
23462
24508
  */
23463
24509
  'post'(
23464
24510
  parameters?: Parameters<UnknownParamsObject> | null,
@@ -23596,7 +24642,7 @@ export interface PathsDictionary {
23596
24642
  /**
23597
24643
  * getOutstandingTasks - Get outstanding workflow tasks for the portal user
23598
24644
  *
23599
- * Returns all outstanding workflow journey tasks for the authenticated portal user, across their opportunity, order and contract entities. Each task is an active workflow step that exposes a journey the customer still needs to fill out.
24645
+ * Returns all outstanding workflow journey tasks for the authenticated portal user, across their opportunity, order and contract entities. Each task is an active workflow step that exposes a journey the customer still needs to fill out. A step whose start date still lies in the future is left out until that date.
23600
24646
  */
23601
24647
  'get'(
23602
24648
  parameters?: Parameters<UnknownParamsObject> | null,
@@ -23844,6 +24890,32 @@ export interface PathsDictionary {
23844
24890
  config?: AxiosRequestConfig
23845
24891
  ): OperationResponse<Paths.DeletePortalPage.Responses.$204>
23846
24892
  }
24893
+ ['/v2/portal/pages/{id}/detach']: {
24894
+ /**
24895
+ * detachPortalPage - detachPortalPage
24896
+ *
24897
+ * Detach a blueprint-managed page from its blueprint. The page and all of its blocks become local (editable, no longer updated by the blueprint) and the page's lineage is tombstoned on the portal so future syncs skip it. One-way. Idempotent for pages that are not managed.
24898
+ *
24899
+ */
24900
+ 'post'(
24901
+ parameters?: Parameters<Paths.V2PortalPages$IdDetach.PathParameters> | null,
24902
+ data?: any,
24903
+ config?: AxiosRequestConfig
24904
+ ): OperationResponse<Paths.DetachPortalPage.Responses.$200>
24905
+ }
24906
+ ['/v2/portal/pages/{id}/blocks/{block_id}/detach']: {
24907
+ /**
24908
+ * detachPortalPageBlock - detachPortalPageBlock
24909
+ *
24910
+ * Detach a blueprint-managed block. The block becomes the customer's and its lineage is tombstoned on the page so future syncs skip it. A managed page stays managed and keeps receiving blueprint updates for everything else. One-way. Idempotent for blocks that are not managed.
24911
+ *
24912
+ */
24913
+ 'post'(
24914
+ parameters?: Parameters<Paths.V2PortalPages$IdBlocks$BlockIdDetach.PathParameters> | null,
24915
+ data?: any,
24916
+ config?: AxiosRequestConfig
24917
+ ): OperationResponse<Paths.DetachPortalPageBlock.Responses.$200>
24918
+ }
23847
24919
  ['/v2/portal/pages']: {
23848
24920
  /**
23849
24921
  * getPortalPages - getPortalPages
@@ -24200,6 +25272,23 @@ export interface PathsDictionary {
24200
25272
  config?: AxiosRequestConfig
24201
25273
  ): OperationResponse<Paths.UpdatePortalRevision.Responses.$200>
24202
25274
  }
25275
+ ['/v3/portal/config/{portal_id}/revisions/{revision_id}:preview']: {
25276
+ /**
25277
+ * createPortalRevisionPreview - createPortalRevisionPreview
25278
+ *
25279
+ * Mints a short-lived preview token for one revision and returns a link that opens the revision inside the real end-customer portal, on the portal's live domain, without publishing it.
25280
+ *
25281
+ * The portal sends the token back in the `x-portal-preview-token` header. Public and portal-user config, page, widget and extension reads that honour it answer with the revision's config and pages instead of the live ones and add `preview_revision` to config responses. Server-owned fields (ids, domains, Cognito pool identifiers, extension secrets) always come from the live portal. Nothing is written: the live portal, its pages and which revision is published stay as they are.
25282
+ *
25283
+ * Requires view permission on the portal. Returns `404` when portal versioning or revision preview is not enabled for the organization, or when the revision does not exist.
25284
+ *
25285
+ */
25286
+ 'post'(
25287
+ parameters?: Parameters<Paths.CreatePortalRevisionPreview.PathParameters> | null,
25288
+ data?: any,
25289
+ config?: AxiosRequestConfig
25290
+ ): OperationResponse<Paths.CreatePortalRevisionPreview.Responses.$200>
25291
+ }
24203
25292
  ['/v3/portal/config/{portal_id}/publish']: {
24204
25293
  /**
24205
25294
  * publishPortalRevision - publishPortalRevision
@@ -24443,11 +25532,11 @@ export type CreateSupportRequest = Components.Schemas.CreateSupportRequest;
24443
25532
  export type CreateUserRequest = Components.Schemas.CreateUserRequest;
24444
25533
  export type Currency = Components.Schemas.Currency;
24445
25534
  export type DataRetrievalItem = Components.Schemas.DataRetrievalItem;
24446
- export type DeleteEntityFile = Components.Schemas.DeleteEntityFile;
24447
25535
  export type Direction = Components.Schemas.Direction;
24448
25536
  export type DocumentWidget = Components.Schemas.DocumentWidget;
24449
25537
  export type DomainSettings = Components.Schemas.DomainSettings;
24450
25538
  export type EmailTemplates = Components.Schemas.EmailTemplates;
25539
+ export type EngagementCenterTaskTemplates = Components.Schemas.EngagementCenterTaskTemplates;
24451
25540
  export type Entity = Components.Schemas.Entity;
24452
25541
  export type EntityEditRule = Components.Schemas.EntityEditRule;
24453
25542
  export type EntityFileCount = Components.Schemas.EntityFileCount;
@@ -24490,6 +25579,7 @@ export type File = Components.Schemas.File;
24490
25579
  export type FileItem = Components.Schemas.FileItem;
24491
25580
  export type FilePreviewResult = Components.Schemas.FilePreviewResult;
24492
25581
  export type Grant = Components.Schemas.Grant;
25582
+ export type HeldBackNode = Components.Schemas.HeldBackNode;
24493
25583
  export type IdentifierAttribute = Components.Schemas.IdentifierAttribute;
24494
25584
  export type InstallmentEvent = Components.Schemas.InstallmentEvent;
24495
25585
  export type JourneyActions = Components.Schemas.JourneyActions;
@@ -24499,6 +25589,7 @@ export type JuiceSettings = Components.Schemas.JuiceSettings;
24499
25589
  export type Meter = Components.Schemas.Meter;
24500
25590
  export type MeterChartWidget = Components.Schemas.MeterChartWidget;
24501
25591
  export type MeterReading = Components.Schemas.MeterReading;
25592
+ export type MeterReadingCounterDetails = Components.Schemas.MeterReadingCounterDetails;
24502
25593
  export type MeterReadingPhoto = Components.Schemas.MeterReadingPhoto;
24503
25594
  export type MeterReadingPhotoData = Components.Schemas.MeterReadingPhotoData;
24504
25595
  export type MeterReadingWidget = Components.Schemas.MeterReadingWidget;
@@ -24524,6 +25615,9 @@ export type PaymentWidget = Components.Schemas.PaymentWidget;
24524
25615
  export type PortalConfig = Components.Schemas.PortalConfig;
24525
25616
  export type PortalConfigSummaryV3 = Components.Schemas.PortalConfigSummaryV3;
24526
25617
  export type PortalConfigV3 = Components.Schemas.PortalConfigV3;
25618
+ export type PortalContactUpdate = Components.Schemas.PortalContactUpdate;
25619
+ export type PortalContractUpdate = Components.Schemas.PortalContractUpdate;
25620
+ export type PortalCopilotVisibility = Components.Schemas.PortalCopilotVisibility;
24527
25621
  export type PortalDataExportColumn = Components.Schemas.PortalDataExportColumn;
24528
25622
  export type PortalDescriptionOverrides = Components.Schemas.PortalDescriptionOverrides;
24529
25623
  export type PortalFeatureSettings = Components.Schemas.PortalFeatureSettings;
@@ -24533,6 +25627,7 @@ export type PortalNotification = Components.Schemas.PortalNotification;
24533
25627
  export type PortalRevision = Components.Schemas.PortalRevision;
24534
25628
  export type PortalRevisionCreated = Components.Schemas.PortalRevisionCreated;
24535
25629
  export type PortalRevisionList = Components.Schemas.PortalRevisionList;
25630
+ export type PortalRevisionPreview = Components.Schemas.PortalRevisionPreview;
24536
25631
  export type PortalRevisionRequest = Components.Schemas.PortalRevisionRequest;
24537
25632
  export type PortalRevisionSummary = Components.Schemas.PortalRevisionSummary;
24538
25633
  export type PortalSurface = Components.Schemas.PortalSurface;
@@ -24540,12 +25635,15 @@ export type PortalSurfaceDataAccess = Components.Schemas.PortalSurfaceDataAccess
24540
25635
  export type PortalSurfaceEntityAccess = Components.Schemas.PortalSurfaceEntityAccess;
24541
25636
  export type PortalTaskConfig = Components.Schemas.PortalTaskConfig;
24542
25637
  export type PortalUser = Components.Schemas.PortalUser;
25638
+ export type PortalUserNotificationPreferences = Components.Schemas.PortalUserNotificationPreferences;
25639
+ export type PortalUserPasskey = Components.Schemas.PortalUserPasskey;
24543
25640
  export type PortalUserRegistrationStatus = Components.Schemas.PortalUserRegistrationStatus;
24544
25641
  export type PortalUsingDesign = Components.Schemas.PortalUsingDesign;
24545
25642
  export type PortalWidget = Components.Schemas.PortalWidget;
24546
25643
  export type PortalWorkflow = Components.Schemas.PortalWorkflow;
24547
25644
  export type PortalWorkflowStage = Components.Schemas.PortalWorkflowStage;
24548
25645
  export type PortalWorkflowTask = Components.Schemas.PortalWorkflowTask;
25646
+ export type PreviewRevision = Components.Schemas.PreviewRevision;
24549
25647
  export type Product = Components.Schemas.Product;
24550
25648
  export type ProductRecommendationsWidget = Components.Schemas.ProductRecommendationsWidget;
24551
25649
  export type ProviderConfig = Components.Schemas.ProviderConfig;
@@ -24578,6 +25676,8 @@ export type Rule = Components.Schemas.Rule;
24578
25676
  export type SAMLProviderConfig = Components.Schemas.SAMLProviderConfig;
24579
25677
  export type SSOCallbackRequest = Components.Schemas.SSOCallbackRequest;
24580
25678
  export type SSOCallbackResponse = Components.Schemas.SSOCallbackResponse;
25679
+ export type SSODebugInfo = Components.Schemas.SSODebugInfo;
25680
+ export type SSOErrorResp = Components.Schemas.SSOErrorResp;
24581
25681
  export type SSOLoginToken = Components.Schemas.SSOLoginToken;
24582
25682
  export type SaveEntityFile = Components.Schemas.SaveEntityFile;
24583
25683
  export type SavePortalFile = Components.Schemas.SavePortalFile;