@epilot/cli 0.1.9 → 0.1.11

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.
Files changed (78) hide show
  1. package/README.md +3 -3
  2. package/definitions/app.json +56 -6
  3. package/definitions/blueprint-manifest.json +115 -1
  4. package/definitions/customer-portal.json +757 -81
  5. package/definitions/data-management.json +10 -0
  6. package/definitions/email-settings.json +121 -0
  7. package/definitions/email-template.json +25 -3
  8. package/definitions/entity.json +328 -10
  9. package/definitions/erp-integration.json +472 -13
  10. package/definitions/journey.json +274 -12
  11. package/definitions/kanban.json +654 -78
  12. package/definitions/organization.json +614 -51
  13. package/definitions/partner-directory.json +795 -229
  14. package/definitions/permissions.json +41 -6
  15. package/definitions/webhooks.json +111 -2
  16. package/definitions/workflow.json +40 -0
  17. package/dist/{access-token-PTTCRMGK.js → access-token-CIM4RLBP.js} +1 -1
  18. package/dist/add-component-IW4644NE.js +241 -0
  19. package/dist/{address-2FDPEPR6.js → address-EDRTUWTP.js} +1 -1
  20. package/dist/{address-suggestions-XBEK5DDQ.js → address-suggestions-S5WEST2N.js} +1 -1
  21. package/dist/{ai-agents-ZY5BNVTN.js → ai-agents-RXDDJDAR.js} +1 -1
  22. package/dist/{app-IT5FWGUK.js → api-36XROHLK.js} +5 -5
  23. package/dist/app-BKS7M4UQ.js +24 -0
  24. package/dist/{audit-logs-FB4TE4TI.js → audit-logs-PXGDGJGV.js} +1 -1
  25. package/dist/{automation-JE5LDKJM.js → automation-LS6MVLP2.js} +1 -1
  26. package/dist/{billing-GOFCP5T3.js → billing-KVYFUKZK.js} +1 -1
  27. package/dist/bin/epilot.js +52 -52
  28. package/dist/{blueprint-manifest-WJIQKFYK.js → blueprint-manifest-W4ZGJD2Z.js} +1 -1
  29. package/dist/{chunk-P5IZZW4Y.js → chunk-BYAEI4Z2.js} +1 -1
  30. package/dist/{chunk-PHXL66VA.js → chunk-K2UQOP3Q.js} +28 -11
  31. package/dist/chunk-POCU2J27.js +365 -0
  32. package/dist/{completion-EKFXGPNK.js → completion-HTO64G2S.js} +1 -1
  33. package/dist/{consent-DSMWWHUL.js → consent-M4QB2HPM.js} +1 -1
  34. package/dist/{customer-portal-IJYTJYUZ.js → customer-portal-SVO2YCXA.js} +1 -1
  35. package/dist/{dashboard-DOAX6XDG.js → dashboard-CYCXIX74.js} +1 -1
  36. package/dist/{data-management-C4JPPUPD.js → data-management-KXAPA7ZU.js} +1 -1
  37. package/dist/{deduplication-7OGLZLAC.js → deduplication-M3KEVJRG.js} +1 -1
  38. package/dist/deploy-UQZAUHAB.js +214 -0
  39. package/dist/{design-3CAYTWFY.js → design-UVJJ2KO2.js} +1 -1
  40. package/dist/{document-NT5JOJQV.js → document-5HB632XE.js} +1 -1
  41. package/dist/{email-settings-2M3WJTQS.js → email-settings-H7HQTDYE.js} +1 -1
  42. package/dist/{email-template-F4PLBPPC.js → email-template-2DHZ3VKF.js} +1 -1
  43. package/dist/{entity-32LKMZAU.js → entity-HED6QHG7.js} +1 -1
  44. package/dist/{entity-mapping-OBCZDYQJ.js → entity-mapping-QP22B65Z.js} +1 -1
  45. package/dist/{environments-H3TBCDQE.js → environments-6LLEIGWV.js} +1 -1
  46. package/dist/{erp-integration-UW6H55EK.js → erp-integration-DXFYJ2F3.js} +1 -1
  47. package/dist/{event-catalog-NVAPTZ4M.js → event-catalog-2ZCZTATY.js} +1 -1
  48. package/dist/export-US5GMHTS.js +44 -0
  49. package/dist/{file-US2HR4SV.js → file-R6IIXOIZ.js} +1 -1
  50. package/dist/{iban-7QUCOULB.js → iban-EQD2VROZ.js} +1 -1
  51. package/dist/init-DGPWBRRB.js +524 -0
  52. package/dist/{journey-E5T4BZZX.js → journey-V7X2KUKH.js} +1 -1
  53. package/dist/{kanban-7UHU5VE6.js → kanban-EPI6C3FR.js} +1 -1
  54. package/dist/{message-7KY33RJE.js → message-477EJ5JO.js} +1 -1
  55. package/dist/{metering-P7BZGMY7.js → metering-5EAEKRSL.js} +1 -1
  56. package/dist/{notes-TNJ7FPA3.js → notes-CVXNRULU.js} +1 -1
  57. package/dist/{notification-6KXEFVO5.js → notification-6HXS76XP.js} +1 -1
  58. package/dist/{organization-FF4Y3PBO.js → organization-O33CZQKD.js} +1 -1
  59. package/dist/{partner-directory-VH2SBAS2.js → partner-directory-NZWGCKSB.js} +2 -2
  60. package/dist/{permissions-KENZ4HNY.js → permissions-6QEOBJ6M.js} +1 -1
  61. package/dist/{pricing-P6QZ77VJ.js → pricing-KNYSULCW.js} +1 -1
  62. package/dist/{pricing-tier-2IRJMTM6.js → pricing-tier-OCHP6SHT.js} +1 -1
  63. package/dist/{purpose-IHROR6LQ.js → purpose-NGM42XWB.js} +1 -1
  64. package/dist/remove-component-B2GMICMD.js +89 -0
  65. package/dist/review-QFPON37R.js +69 -0
  66. package/dist/{sandbox-62XQPOU6.js → sandbox-YX3VVAQG.js} +1 -1
  67. package/dist/{submission-PUWGOYQB.js → submission-YOWVSZNA.js} +1 -1
  68. package/dist/{targeting-QB3DFYNI.js → targeting-BMZCOG72.js} +1 -1
  69. package/dist/{template-variables-IPKRUJ4E.js → template-variables-YTABZL3E.js} +1 -1
  70. package/dist/{upgrade-KDDTJRUC.js → upgrade-KZSOPDCR.js} +1 -1
  71. package/dist/{user-2CP75TFC.js → user-3N5ZOUYS.js} +1 -1
  72. package/dist/validate-G7K6AVBI.js +53 -0
  73. package/dist/{validation-rules-GNI4EEG5.js → validation-rules-QVS7LKEP.js} +1 -1
  74. package/dist/versions-UTPAWTIU.js +109 -0
  75. package/dist/{webhooks-2OWUX7UL.js → webhooks-6WMWACOW.js} +1 -1
  76. package/dist/{workflow-WSLERVJI.js → workflow-ZO2MKDBS.js} +1 -1
  77. package/dist/{workflow-definition-FP3WKHGG.js → workflow-definition-RCWKIPYI.js} +1 -1
  78. package/package.json +2 -1
@@ -199,7 +199,7 @@
199
199
  "post": {
200
200
  "operationId": "createUserV3",
201
201
  "summary": "createUserV3",
202
- "description": "Registers a portal user with portal id",
202
+ "description": "Registers a portal user.\nSupports two identification methods:\n1. Using portal_id\n2. Using domain\n",
203
203
  "security": [],
204
204
  "tags": [
205
205
  "Public"
@@ -208,11 +208,20 @@
208
208
  {
209
209
  "in": "query",
210
210
  "name": "portal_id",
211
- "required": true,
211
+ "required": false,
212
212
  "schema": {
213
213
  "$ref": "#/components/schemas/PortalId"
214
214
  },
215
- "description": "Origin of the portal"
215
+ "description": "Portal ID (required if domain is not provided)"
216
+ },
217
+ {
218
+ "in": "query",
219
+ "name": "domain",
220
+ "required": false,
221
+ "schema": {
222
+ "type": "string"
223
+ },
224
+ "description": "Portal domain for identification (alternative to portal_id)"
216
225
  }
217
226
  ],
218
227
  "requestBody": {
@@ -2110,7 +2119,8 @@
2110
2119
  "get": {
2111
2120
  "operationId": "getPublicPortalWidgets",
2112
2121
  "summary": "getPublicPortalWidgets",
2113
- "description": "Retrieves the public widgets of a portal",
2122
+ "description": "Retrieves the public widgets of a portal.",
2123
+ "deprecated": true,
2114
2124
  "tags": [
2115
2125
  "Public"
2116
2126
  ],
@@ -2164,6 +2174,7 @@
2164
2174
  "operationId": "upsertPortalWidget",
2165
2175
  "summary": "upsertPortalWidget",
2166
2176
  "description": "Upsert widget for a portal of an organization.",
2177
+ "deprecated": true,
2167
2178
  "security": [
2168
2179
  {
2169
2180
  "EpilotAuth": []
@@ -2222,7 +2233,8 @@
2222
2233
  "get": {
2223
2234
  "operationId": "getPortalWidgets",
2224
2235
  "summary": "getPortalWidgets",
2225
- "description": "Retrieves the widgets of a portal",
2236
+ "description": "Retrieves the widgets of a portal.",
2237
+ "deprecated": true,
2226
2238
  "tags": [
2227
2239
  "ECP Admin",
2228
2240
  "ECP"
@@ -2275,6 +2287,194 @@
2275
2287
  }
2276
2288
  }
2277
2289
  },
2290
+ "/v3/portal/widgets": {
2291
+ "get": {
2292
+ "operationId": "getPortalWidgetsV3",
2293
+ "summary": "getPortalWidgetsV3",
2294
+ "description": "Retrieves the widgets of a portal by portal_id.",
2295
+ "tags": [
2296
+ "ECP Admin",
2297
+ "ECP"
2298
+ ],
2299
+ "security": [
2300
+ {
2301
+ "EitherAuth": []
2302
+ }
2303
+ ],
2304
+ "parameters": [
2305
+ {
2306
+ "in": "query",
2307
+ "name": "portal_id",
2308
+ "required": true,
2309
+ "schema": {
2310
+ "$ref": "#/components/schemas/PortalId"
2311
+ },
2312
+ "description": "PortalId of the portal"
2313
+ },
2314
+ {
2315
+ "in": "query",
2316
+ "name": "contract_id",
2317
+ "required": false,
2318
+ "schema": {
2319
+ "$ref": "#/components/schemas/EntityId"
2320
+ },
2321
+ "description": "Contract context for widgets"
2322
+ }
2323
+ ],
2324
+ "responses": {
2325
+ "200": {
2326
+ "description": "Retrieved the portal widgets successfully.",
2327
+ "content": {
2328
+ "application/json": {
2329
+ "schema": {
2330
+ "$ref": "#/components/schemas/UpsertPortalWidget"
2331
+ }
2332
+ }
2333
+ }
2334
+ },
2335
+ "401": {
2336
+ "$ref": "#/components/responses/Unauthorized"
2337
+ },
2338
+ "403": {
2339
+ "$ref": "#/components/responses/Forbidden"
2340
+ },
2341
+ "500": {
2342
+ "$ref": "#/components/responses/InternalServerError"
2343
+ }
2344
+ }
2345
+ },
2346
+ "post": {
2347
+ "operationId": "upsertPortalWidgetV3",
2348
+ "summary": "upsertPortalWidgetV3",
2349
+ "description": "Upsert widget for a portal by portal_id.",
2350
+ "security": [
2351
+ {
2352
+ "EpilotAuth": []
2353
+ }
2354
+ ],
2355
+ "tags": [
2356
+ "ECP Admin"
2357
+ ],
2358
+ "parameters": [
2359
+ {
2360
+ "in": "query",
2361
+ "name": "portal_id",
2362
+ "required": true,
2363
+ "schema": {
2364
+ "$ref": "#/components/schemas/PortalId"
2365
+ },
2366
+ "description": "PortalId of the portal"
2367
+ }
2368
+ ],
2369
+ "requestBody": {
2370
+ "description": "Portal widgets payload",
2371
+ "required": true,
2372
+ "content": {
2373
+ "application/json": {
2374
+ "schema": {
2375
+ "$ref": "#/components/schemas/UpsertPortalWidget"
2376
+ }
2377
+ }
2378
+ }
2379
+ },
2380
+ "responses": {
2381
+ "201": {
2382
+ "description": "Portal widget configuration upserted successfully.",
2383
+ "content": {
2384
+ "application/json": {
2385
+ "schema": {
2386
+ "$ref": "#/components/schemas/UpsertPortalWidget"
2387
+ }
2388
+ }
2389
+ }
2390
+ },
2391
+ "400": {
2392
+ "$ref": "#/components/responses/InvalidRequest"
2393
+ },
2394
+ "401": {
2395
+ "$ref": "#/components/responses/Unauthorized"
2396
+ },
2397
+ "403": {
2398
+ "$ref": "#/components/responses/Forbidden"
2399
+ },
2400
+ "500": {
2401
+ "$ref": "#/components/responses/InternalServerError"
2402
+ }
2403
+ }
2404
+ }
2405
+ },
2406
+ "/v3/portal/portal/files": {
2407
+ "post": {
2408
+ "operationId": "savePortalFilesV3",
2409
+ "summary": "savePortalFilesV3",
2410
+ "description": "Add files to portal by portal_id",
2411
+ "tags": [
2412
+ "ECP Admin"
2413
+ ],
2414
+ "security": [
2415
+ {
2416
+ "EpilotAuth": []
2417
+ }
2418
+ ],
2419
+ "parameters": [
2420
+ {
2421
+ "in": "query",
2422
+ "name": "portal_id",
2423
+ "required": true,
2424
+ "schema": {
2425
+ "$ref": "#/components/schemas/PortalId"
2426
+ },
2427
+ "description": "PortalId of the portal"
2428
+ }
2429
+ ],
2430
+ "requestBody": {
2431
+ "description": "portal files request",
2432
+ "required": true,
2433
+ "content": {
2434
+ "application/json": {
2435
+ "schema": {
2436
+ "$ref": "#/components/schemas/SavePortalFile"
2437
+ }
2438
+ }
2439
+ }
2440
+ },
2441
+ "responses": {
2442
+ "201": {
2443
+ "description": "The files have been saved to the portal successfully.",
2444
+ "content": {
2445
+ "application/json": {
2446
+ "schema": {
2447
+ "type": "object",
2448
+ "properties": {
2449
+ "createdFiles": {
2450
+ "type": "array",
2451
+ "items": {
2452
+ "$ref": "#/components/schemas/File"
2453
+ }
2454
+ }
2455
+ }
2456
+ }
2457
+ }
2458
+ }
2459
+ },
2460
+ "400": {
2461
+ "$ref": "#/components/responses/InvalidRequest"
2462
+ },
2463
+ "401": {
2464
+ "$ref": "#/components/responses/Unauthorized"
2465
+ },
2466
+ "403": {
2467
+ "$ref": "#/components/responses/Forbidden"
2468
+ },
2469
+ "404": {
2470
+ "$ref": "#/components/responses/NotFound"
2471
+ },
2472
+ "500": {
2473
+ "$ref": "#/components/responses/InternalServerError"
2474
+ }
2475
+ }
2476
+ }
2477
+ },
2278
2478
  "/v2/portal/replace-ecp-template-variables": {
2279
2479
  "post": {
2280
2480
  "operationId": "replaceECPTemplateVariables",
@@ -2826,6 +3026,7 @@
2826
3026
  "operationId": "updateContact",
2827
3027
  "summary": "updateContact",
2828
3028
  "description": "Updates the contact details.",
3029
+ "deprecated": true,
2829
3030
  "tags": [
2830
3031
  "ECP"
2831
3032
  ],
@@ -2997,7 +3198,7 @@
2997
3198
  "post": {
2998
3199
  "operationId": "checkContactExistsV3",
2999
3200
  "summary": "checkContactExistsV3",
3000
- "description": "True if contact with given identifiers exists.",
3201
+ "description": "True if contact with given identifiers exists.\nSupports two identification methods:\n1. Using portal_id\n2. Using domain\n",
3001
3202
  "security": [],
3002
3203
  "tags": [
3003
3204
  "Public"
@@ -3006,11 +3207,20 @@
3006
3207
  {
3007
3208
  "in": "query",
3008
3209
  "name": "portal_id",
3009
- "required": true,
3210
+ "required": false,
3010
3211
  "schema": {
3011
3212
  "$ref": "#/components/schemas/PortalId"
3012
3213
  },
3013
- "description": "PortalId of the portal"
3214
+ "description": "PortalId of the portal (required if domain is not provided)"
3215
+ },
3216
+ {
3217
+ "in": "query",
3218
+ "name": "domain",
3219
+ "required": false,
3220
+ "schema": {
3221
+ "type": "string"
3222
+ },
3223
+ "description": "Portal domain for identification (alternative to portal_id)"
3014
3224
  }
3015
3225
  ],
3016
3226
  "requestBody": {
@@ -3613,7 +3823,7 @@
3613
3823
  "get": {
3614
3824
  "operationId": "userExistsV3",
3615
3825
  "summary": "userExistsV3",
3616
- "description": "Checks whether a user exists in the portal",
3826
+ "description": "Checks whether a user exists in the portal.\nSupports two identification methods:\n1. Using org_id + portal_id\n2. Using domain\n",
3617
3827
  "tags": [
3618
3828
  "Public"
3619
3829
  ],
@@ -3632,10 +3842,10 @@
3632
3842
  {
3633
3843
  "in": "query",
3634
3844
  "name": "org_id",
3635
- "required": true,
3845
+ "required": false,
3636
3846
  "schema": {
3637
3847
  "type": "string",
3638
- "description": "Organization ID",
3848
+ "description": "Organization ID (required if domain is not provided)",
3639
3849
  "example": 123
3640
3850
  }
3641
3851
  },
@@ -3643,10 +3853,19 @@
3643
3853
  "in": "query",
3644
3854
  "name": "portal_id",
3645
3855
  "required": false,
3646
- "description": "Checkes if user exists in the given portal ID. If not provided, checks in all portals.",
3856
+ "description": "Checks if user exists in the given portal ID. If not provided, checks in all portals.",
3647
3857
  "schema": {
3648
3858
  "$ref": "#/components/schemas/PortalId"
3649
3859
  }
3860
+ },
3861
+ {
3862
+ "in": "query",
3863
+ "name": "domain",
3864
+ "required": false,
3865
+ "schema": {
3866
+ "type": "string"
3867
+ },
3868
+ "description": "Portal domain for identification (alternative to org_id + portal_id)"
3650
3869
  }
3651
3870
  ],
3652
3871
  "responses": {
@@ -3881,7 +4100,8 @@
3881
4100
  "get": {
3882
4101
  "operationId": "getAllOrders",
3883
4102
  "summary": "getAllOrders",
3884
- "description": "Get all orders for the portal user",
4103
+ "description": "Get all orders for the portal user. Use searchPortalUserEntities instead.",
4104
+ "deprecated": true,
3885
4105
  "tags": [
3886
4106
  "ECP"
3887
4107
  ],
@@ -4028,7 +4248,8 @@
4028
4248
  "get": {
4029
4249
  "operationId": "getOrder",
4030
4250
  "summary": "getOrder",
4031
- "description": "Get an order by id",
4251
+ "description": "Get an order by id. Use getPortalUserEntity instead.",
4252
+ "deprecated": true,
4032
4253
  "tags": [
4033
4254
  "ECP"
4034
4255
  ],
@@ -4122,7 +4343,8 @@
4122
4343
  "patch": {
4123
4344
  "operationId": "updateOrder",
4124
4345
  "summary": "updateOrder",
4125
- "description": "Update an order by id",
4346
+ "description": "Update an order by id. Use getPortalUserEntity instead.",
4347
+ "deprecated": true,
4126
4348
  "tags": [
4127
4349
  "ECP"
4128
4350
  ],
@@ -4186,7 +4408,8 @@
4186
4408
  "get": {
4187
4409
  "operationId": "getAllOpportunities",
4188
4410
  "summary": "getAllOpportunities",
4189
- "description": "Get all opportunities of a portal user",
4411
+ "description": "Get all opportunities of a portal user. Use searchPortalUserEntities instead.",
4412
+ "deprecated": true,
4190
4413
  "tags": [
4191
4414
  "ECP"
4192
4415
  ],
@@ -4269,7 +4492,8 @@
4269
4492
  "get": {
4270
4493
  "operationId": "getSearchableAttributesForOpportunities",
4271
4494
  "summary": "getSearchableAttributesForOpportunities",
4272
- "description": "Get all opportunity searchable attributes for a portal user",
4495
+ "description": "Get all opportunity searchable attributes for a portal user. Use searchPortalUserEntities instead.",
4496
+ "deprecated": true,
4273
4497
  "tags": [
4274
4498
  "ECP"
4275
4499
  ],
@@ -4340,7 +4564,8 @@
4340
4564
  "post": {
4341
4565
  "operationId": "getSearchResultsForOpportunities",
4342
4566
  "summary": "getSearchResultsForOpportunities",
4343
- "description": "Get all opportunity with the given serached attributes",
4567
+ "description": "Get all opportunity with the given searched attributes. Use searchPortalUserEntities instead.",
4568
+ "deprecated": true,
4344
4569
  "tags": [
4345
4570
  "ECP"
4346
4571
  ],
@@ -4449,7 +4674,8 @@
4449
4674
  "get": {
4450
4675
  "operationId": "getOpportunity",
4451
4676
  "summary": "getOpportunity",
4452
- "description": "Get an opportunity by id",
4677
+ "description": "Get an opportunity by id. Use getPortalUserEntity instead.",
4678
+ "deprecated": true,
4453
4679
  "tags": [
4454
4680
  "ECP"
4455
4681
  ],
@@ -4536,7 +4762,8 @@
4536
4762
  "patch": {
4537
4763
  "operationId": "updateOpportunity",
4538
4764
  "summary": "updateOpportunity",
4539
- "description": "Update an opportunity by id",
4765
+ "description": "Update an opportunity by id.",
4766
+ "deprecated": true,
4540
4767
  "tags": [
4541
4768
  "ECP"
4542
4769
  ],
@@ -4602,7 +4829,8 @@
4602
4829
  "get": {
4603
4830
  "operationId": "getAllRequests",
4604
4831
  "summary": "getAllRequests",
4605
- "description": "Get all opportunities & orders of a portal user",
4832
+ "description": "Get all opportunities & orders of a portal user. Use searchPortalUserEntities instead.",
4833
+ "deprecated": true,
4606
4834
  "tags": [
4607
4835
  "ECP"
4608
4836
  ],
@@ -4698,7 +4926,8 @@
4698
4926
  "get": {
4699
4927
  "operationId": "getAllContracts",
4700
4928
  "summary": "getAllContracts",
4701
- "description": "Get all contracts for a portal user",
4929
+ "description": "Get all contracts for a portal user. Use searchPortalUserEntities instead.",
4930
+ "deprecated": true,
4702
4931
  "tags": [
4703
4932
  "ECP"
4704
4933
  ],
@@ -4778,7 +5007,8 @@
4778
5007
  "get": {
4779
5008
  "operationId": "getContract",
4780
5009
  "summary": "getContract",
4781
- "description": "Get a contract by id",
5010
+ "description": "Get a contract by id. Use getPortalUserEntity instead.",
5011
+ "deprecated": true,
4782
5012
  "tags": [
4783
5013
  "ECP"
4784
5014
  ],
@@ -4871,7 +5101,8 @@
4871
5101
  "patch": {
4872
5102
  "operationId": "updateContract",
4873
5103
  "summary": "updateContract",
4874
- "description": "Update a contract by id",
5104
+ "description": "Update a contract by id. Use getPortalUserEntity instead.",
5105
+ "deprecated": true,
4875
5106
  "tags": [
4876
5107
  "ECP"
4877
5108
  ],
@@ -5730,7 +5961,8 @@
5730
5961
  "get": {
5731
5962
  "operationId": "getFileById",
5732
5963
  "summary": "getFileById",
5733
- "description": "Fetch a document with ID",
5964
+ "description": "Fetch a document with ID. Use getPortalUserEntity instead.",
5965
+ "deprecated": true,
5734
5966
  "tags": [
5735
5967
  "ECP"
5736
5968
  ],
@@ -6102,7 +6334,7 @@
6102
6334
  "post": {
6103
6335
  "operationId": "loginToPortalAsUser",
6104
6336
  "summary": "loginToPortalAsUser",
6105
- "description": "Generate a token to log in to a portal impersonating a users.\n\nToken is valid for 5 minutes.\n",
6337
+ "description": "Generate a token to log in to a portal impersonating a users.\n\nToken is valid for 5 minutes.\n\nSupports three identification methods (at least one required):\n1. Using portal_id (takes precedence)\n2. Using domain\n3. Using origin (legacy)\n",
6106
6338
  "tags": [
6107
6339
  "ECP Admin"
6108
6340
  ],
@@ -6126,6 +6358,14 @@
6126
6358
  },
6127
6359
  "origin": {
6128
6360
  "$ref": "#/components/schemas/Origin"
6361
+ },
6362
+ "portal_id": {
6363
+ "type": "string",
6364
+ "description": "The portal ID to look up the portal config. When provided, takes precedence over origin."
6365
+ },
6366
+ "domain": {
6367
+ "type": "string",
6368
+ "description": "Portal domain for identification. Alternative to portal_id or origin."
6129
6369
  }
6130
6370
  }
6131
6371
  }
@@ -6220,7 +6460,7 @@
6220
6460
  "post": {
6221
6461
  "operationId": "triggerEntityAccessEventV3",
6222
6462
  "summary": "triggerEntityAccessEventV3",
6223
- "description": "Trigger entity access event for a portal user",
6463
+ "description": "Trigger entity access event for a portal user.\nSupports two identification methods:\n1. Using portal_id\n2. Using domain\n",
6224
6464
  "tags": [
6225
6465
  "ECP"
6226
6466
  ],
@@ -6252,11 +6492,20 @@
6252
6492
  {
6253
6493
  "name": "portal_id",
6254
6494
  "in": "query",
6255
- "required": true,
6256
- "description": "Portal ID",
6495
+ "required": false,
6496
+ "description": "Portal ID (required if domain is not provided)",
6257
6497
  "schema": {
6258
6498
  "$ref": "#/components/schemas/PortalId"
6259
6499
  }
6500
+ },
6501
+ {
6502
+ "name": "domain",
6503
+ "in": "query",
6504
+ "required": false,
6505
+ "description": "Portal domain for identification (alternative to portal_id)",
6506
+ "schema": {
6507
+ "type": "string"
6508
+ }
6260
6509
  }
6261
6510
  ],
6262
6511
  "responses": {
@@ -6936,7 +7185,7 @@
6936
7185
  "post": {
6937
7186
  "operationId": "ssoLoginV3",
6938
7187
  "summary": "ssoLoginV3",
6939
- "description": "Initiate login using external SSO identity.\n\nVerifies the user with the issuer and matches the identity to an epilot user (or creates a new user).\n\nReturns parameters to be used with CUSTOM_AUTH flow against Cognito\n",
7188
+ "description": "Initiate login using external SSO identity.\n\nVerifies the user with the issuer and matches the identity to an epilot user (or creates a new user).\n\nReturns parameters to be used with CUSTOM_AUTH flow against Cognito.\n\nSupports two identification methods:\n1. Using org_id + portal_id\n2. Using domain\n",
6940
7189
  "security": [
6941
7190
  {
6942
7191
  "ExternalOIDCAuth": []
@@ -6946,8 +7195,8 @@
6946
7195
  {
6947
7196
  "in": "query",
6948
7197
  "name": "portal_id",
6949
- "required": true,
6950
- "description": "ID of the Portal",
7198
+ "required": false,
7199
+ "description": "ID of the Portal (required if domain is not provided)",
6951
7200
  "schema": {
6952
7201
  "$ref": "#/components/schemas/PortalId"
6953
7202
  }
@@ -6955,8 +7204,8 @@
6955
7204
  {
6956
7205
  "in": "query",
6957
7206
  "name": "org_id",
6958
- "description": "epilot organization id",
6959
- "required": true,
7207
+ "description": "epilot organization id (required if domain is not provided)",
7208
+ "required": false,
6960
7209
  "schema": {
6961
7210
  "type": "string",
6962
7211
  "example": 123
@@ -6964,11 +7213,20 @@
6964
7213
  },
6965
7214
  {
6966
7215
  "in": "query",
6967
- "name": "contact_id",
6968
- "description": "contact id in the epilot system",
7216
+ "name": "domain",
7217
+ "description": "Portal domain for identification (alternative to org_id + portal_id)",
6969
7218
  "required": false,
6970
7219
  "schema": {
6971
- "type": "string",
7220
+ "type": "string"
7221
+ }
7222
+ },
7223
+ {
7224
+ "in": "query",
7225
+ "name": "contact_id",
7226
+ "description": "contact id in the epilot system",
7227
+ "required": false,
7228
+ "schema": {
7229
+ "type": "string",
6972
7230
  "format": "uuid",
6973
7231
  "example": "5da0a718-c822-403d-9f5d-20d4584e0528"
6974
7232
  }
@@ -7464,6 +7722,74 @@
7464
7722
  }
7465
7723
  }
7466
7724
  },
7725
+ "/v2/portal/pages/interpolate": {
7726
+ "post": {
7727
+ "operationId": "interpolatePortalPages",
7728
+ "summary": "interpolatePortalPages",
7729
+ "description": "Interpolate template variables in portal pages without reading from the database. Accepts pages in the request body and returns them with templates resolved.",
7730
+ "tags": [
7731
+ "ECP Admin"
7732
+ ],
7733
+ "security": [
7734
+ {
7735
+ "EitherAuth": []
7736
+ }
7737
+ ],
7738
+ "requestBody": {
7739
+ "required": true,
7740
+ "content": {
7741
+ "application/json": {
7742
+ "schema": {
7743
+ "type": "object",
7744
+ "required": [
7745
+ "pages"
7746
+ ],
7747
+ "properties": {
7748
+ "pages": {
7749
+ "type": "array",
7750
+ "items": {
7751
+ "$ref": "#/components/schemas/Page"
7752
+ },
7753
+ "description": "The pages to interpolate"
7754
+ },
7755
+ "context_entities": {
7756
+ "$ref": "#/components/schemas/ContextEntities"
7757
+ },
7758
+ "evaluate_targeting": {
7759
+ "type": "boolean",
7760
+ "description": "When true, evaluates targeting conditions and annotates each page/block visibility with _targeting_status ('visible' | 'hidden' | 'no_targeting'). Blocks and pages are never removed — for preview/builder use only."
7761
+ }
7762
+ }
7763
+ }
7764
+ }
7765
+ }
7766
+ },
7767
+ "responses": {
7768
+ "200": {
7769
+ "description": "The portal pages have been interpolated successfully.",
7770
+ "content": {
7771
+ "application/json": {
7772
+ "schema": {
7773
+ "type": "array",
7774
+ "items": {
7775
+ "$ref": "#/components/schemas/Page"
7776
+ }
7777
+ }
7778
+ }
7779
+ }
7780
+ },
7781
+ "401": {
7782
+ "$ref": "#/components/responses/Unauthorized"
7783
+ },
7784
+ "403": {
7785
+ "$ref": "#/components/responses/Forbidden"
7786
+ },
7787
+ "500": {
7788
+ "$ref": "#/components/responses/InternalServerError"
7789
+ }
7790
+ }
7791
+ }
7792
+ },
7467
7793
  "/v2/portal/pages/default": {
7468
7794
  "get": {
7469
7795
  "operationId": "getDefaultPages",
@@ -8544,6 +8870,40 @@
8544
8870
  "$ref": "#/components/schemas/EntityId",
8545
8871
  "description": "List of contact IDs representing the contacts / business partners the invited user should be added to.\nWhen omitted, the user is automatically added to all contacts / business partners linked to the account.\n"
8546
8872
  }
8873
+ },
8874
+ "contact_data": {
8875
+ "type": "object",
8876
+ "description": "Additional contact entity fields to set when creating the contact for the invited user.\nThese are mapped directly to contact entity attributes (e.g. first_name, last_name, phone).\nValues can be strings or arrays of strings (for multiselect attributes).\n",
8877
+ "additionalProperties": {
8878
+ "oneOf": [
8879
+ {
8880
+ "type": "string"
8881
+ },
8882
+ {
8883
+ "type": "array",
8884
+ "items": {
8885
+ "type": "string"
8886
+ }
8887
+ }
8888
+ ]
8889
+ }
8890
+ },
8891
+ "portal_user_data": {
8892
+ "type": "object",
8893
+ "description": "Additional portal user entity fields to set when creating the portal user for the invited user.\nThese are mapped directly to portal_user entity attributes.\nValues can be strings or arrays of strings (for multiselect attributes).\n",
8894
+ "additionalProperties": {
8895
+ "oneOf": [
8896
+ {
8897
+ "type": "string"
8898
+ },
8899
+ {
8900
+ "type": "array",
8901
+ "items": {
8902
+ "type": "string"
8903
+ }
8904
+ }
8905
+ ]
8906
+ }
8547
8907
  }
8548
8908
  }
8549
8909
  }
@@ -9159,6 +9519,7 @@
9159
9519
  "properties": {
9160
9520
  "confirmAccount": {
9161
9521
  "$ref": "#/components/schemas/EntityId",
9522
+ "nullable": true,
9162
9523
  "description": "ID of the confirmation email template upon registration"
9163
9524
  },
9164
9525
  "advancedAuth": {
@@ -9190,10 +9551,12 @@
9190
9551
  },
9191
9552
  "forgotPassword": {
9192
9553
  "$ref": "#/components/schemas/EntityId",
9554
+ "nullable": true,
9193
9555
  "description": "ID of the email template for forgot password"
9194
9556
  },
9195
9557
  "invitation": {
9196
9558
  "$ref": "#/components/schemas/EntityId",
9559
+ "nullable": true,
9197
9560
  "description": "ID of the email template for invitation when the user is just invited to register on the portal."
9198
9561
  },
9199
9562
  "partnerInvitation": {
@@ -9203,26 +9566,32 @@
9203
9566
  },
9204
9567
  "onNewQuote": {
9205
9568
  "$ref": "#/components/schemas/EntityId",
9569
+ "nullable": true,
9206
9570
  "description": "ID of the email template for new quote"
9207
9571
  },
9208
9572
  "onMapAPendingUser": {
9209
9573
  "$ref": "#/components/schemas/EntityId",
9574
+ "nullable": true,
9210
9575
  "description": "ID of the email template for mapping a pending portal user with a contact"
9211
9576
  },
9212
9577
  "onDocUpload": {
9213
9578
  "$ref": "#/components/schemas/EntityId",
9579
+ "nullable": true,
9214
9580
  "description": "ID of the email template for document upload"
9215
9581
  },
9216
9582
  "onWorkflowStepAssigned": {
9217
9583
  "$ref": "#/components/schemas/EntityId",
9584
+ "nullable": true,
9218
9585
  "description": "ID of the email template for workflow step assignment"
9219
9586
  },
9220
9587
  "confirmEmailUpdate": {
9221
9588
  "$ref": "#/components/schemas/EntityId",
9589
+ "nullable": true,
9222
9590
  "description": "ID of the email template for setting password while updating email"
9223
9591
  },
9224
9592
  "verifyCodeToSetPassword": {
9225
9593
  "$ref": "#/components/schemas/EntityId",
9594
+ "nullable": true,
9226
9595
  "description": "ID of the email template for setting password while verifying code"
9227
9596
  }
9228
9597
  }
@@ -9567,18 +9936,21 @@
9567
9936
  "type": "boolean",
9568
9937
  "description": "Mark true if the domain is an Epilot domain"
9569
9938
  },
9570
- "epilot_domain": {
9571
- "type": "string",
9572
- "description": "The URL on which the portal is accessible",
9573
- "example": "example-portal-12345.ecp.epilot.cloud"
9574
- },
9575
- "domain_settings": {
9576
- "$ref": "#/components/schemas/DomainSettings"
9577
- },
9578
9939
  "design_id": {
9579
9940
  "$ref": "#/components/schemas/EntityId",
9580
9941
  "description": "ID of the design used to build the portal"
9581
9942
  },
9943
+ "allowed_portal_entities": {
9944
+ "type": "array",
9945
+ "items": {
9946
+ "type": "string"
9947
+ },
9948
+ "description": "Allowed portal entities for the portal",
9949
+ "example": [
9950
+ "contact",
9951
+ "contract"
9952
+ ]
9953
+ },
9582
9954
  "self_registration_setting": {
9583
9955
  "type": "string",
9584
9956
  "enum": [
@@ -9681,6 +10053,48 @@
9681
10053
  "example": "eu-central-1_CUEQRNbUb",
9682
10054
  "description": "Cognito user pool ID"
9683
10055
  },
10056
+ "timeouts": {
10057
+ "type": "object",
10058
+ "description": "Timeouts for the cognito tokens",
10059
+ "properties": {
10060
+ "refresh_token": {
10061
+ "type": "integer",
10062
+ "example": 300,
10063
+ "description": "Timeout for the refresh token"
10064
+ },
10065
+ "access_token": {
10066
+ "type": "integer",
10067
+ "example": 300,
10068
+ "description": "Timeout for the access token"
10069
+ },
10070
+ "id_token": {
10071
+ "type": "integer",
10072
+ "example": 300,
10073
+ "description": "Timeout for the id token"
10074
+ }
10075
+ }
10076
+ },
10077
+ "advanced_authentication": {
10078
+ "type": "object",
10079
+ "description": "Advanced authentication settings for the portal",
10080
+ "properties": {
10081
+ "user_activity_logging": {
10082
+ "type": "boolean",
10083
+ "example": true,
10084
+ "description": "Enables detailed logging of user authentication attempts including risk assessments, IP addresses, user agents, and device information. These logs can be used for security analysis and monitoring."
10085
+ },
10086
+ "adaptive_authentication": {
10087
+ "type": "boolean",
10088
+ "example": true,
10089
+ "description": "Automatically assesses risk for every authentication session. Based on risk ratings, can block authentication or require MFA for suspicious sign-in attempts. Helps protect user accounts from potential attacks by adapting security measures in real-time."
10090
+ },
10091
+ "compromised_credentials_detection": {
10092
+ "type": "boolean",
10093
+ "example": true,
10094
+ "description": "Checks passwords against databases of leaked and commonly-guessed passwords during sign-up, sign-in, and password reset. Blocks or warns users when insecure passwords are detected, preventing unauthorized access from compromised credentials."
10095
+ }
10096
+ }
10097
+ },
9684
10098
  "password_policy": {
9685
10099
  "type": "object",
9686
10100
  "description": "Password policy for the portal",
@@ -10070,24 +10484,6 @@
10070
10484
  }
10071
10485
  }
10072
10486
  },
10073
- "DomainSettings": {
10074
- "type": "object",
10075
- "description": "Domain settings for the portal",
10076
- "properties": {
10077
- "is_custom_domain_enabled": {
10078
- "type": "boolean",
10079
- "description": "Whether the custom domain is enabled"
10080
- },
10081
- "is_epilot_domain_enabled": {
10082
- "type": "boolean",
10083
- "description": "Whether the Epilot domain is enabled"
10084
- },
10085
- "is_redirection_enabled": {
10086
- "type": "boolean",
10087
- "description": "Whether the redirection is enabled"
10088
- }
10089
- }
10090
- },
10091
10487
  "WidgetBase": {
10092
10488
  "type": "object",
10093
10489
  "required": [
@@ -10110,7 +10506,8 @@
10110
10506
  "PAYMENT_WIDGET",
10111
10507
  "METER_READING_WIDGET",
10112
10508
  "METER_CHART_WIDGET",
10113
- "CAMPAIGN_WIDGET"
10509
+ "CAMPAIGN_WIDGET",
10510
+ "PRODUCT_RECOMMENDATIONS_WIDGET"
10114
10511
  ]
10115
10512
  },
10116
10513
  "listIndex": {
@@ -10340,6 +10737,22 @@
10340
10737
  }
10341
10738
  ]
10342
10739
  },
10740
+ "ProductRecommendationsWidget": {
10741
+ "allOf": [
10742
+ {
10743
+ "$ref": "#/components/schemas/TeaserWidget"
10744
+ },
10745
+ {
10746
+ "type": "object",
10747
+ "properties": {
10748
+ "campaign_id": {
10749
+ "type": "string",
10750
+ "description": "ID of the campaign"
10751
+ }
10752
+ }
10753
+ }
10754
+ ]
10755
+ },
10343
10756
  "PortalWidget": {
10344
10757
  "anyOf": [
10345
10758
  {
@@ -10368,6 +10781,9 @@
10368
10781
  },
10369
10782
  {
10370
10783
  "$ref": "#/components/schemas/CampaignWidget"
10784
+ },
10785
+ {
10786
+ "$ref": "#/components/schemas/ProductRecommendationsWidget"
10371
10787
  }
10372
10788
  ]
10373
10789
  },
@@ -10735,6 +11151,31 @@
10735
11151
  "type": "string",
10736
11152
  "example": "contact"
10737
11153
  },
11154
+ "EntitySlugConfig": {
11155
+ "description": "Per-slug search configuration with scoped targets and templates",
11156
+ "type": "object",
11157
+ "required": [
11158
+ "slug"
11159
+ ],
11160
+ "properties": {
11161
+ "slug": {
11162
+ "$ref": "#/components/schemas/EntitySlug"
11163
+ },
11164
+ "targets": {
11165
+ "type": "array",
11166
+ "items": {
11167
+ "type": "string",
11168
+ "format": "uuid"
11169
+ }
11170
+ },
11171
+ "templates": {
11172
+ "type": "object",
11173
+ "additionalProperties": {
11174
+ "type": "string"
11175
+ }
11176
+ }
11177
+ }
11178
+ },
10738
11179
  "EntityId": {
10739
11180
  "type": "string",
10740
11181
  "format": "uuid",
@@ -10911,6 +11352,9 @@
10911
11352
  "type": "number",
10912
11353
  "description": "Number of entities returned in this response",
10913
11354
  "example": 10
11355
+ },
11356
+ "includes": {
11357
+ "$ref": "#/components/schemas/SearchIncludes"
10914
11358
  }
10915
11359
  }
10916
11360
  },
@@ -10993,6 +11437,22 @@
10993
11437
  "type": "number",
10994
11438
  "description": "Number of groups returned in this response",
10995
11439
  "example": 5
11440
+ },
11441
+ "includes": {
11442
+ "$ref": "#/components/schemas/SearchIncludes"
11443
+ }
11444
+ }
11445
+ },
11446
+ "SearchIncludes": {
11447
+ "type": "object",
11448
+ "description": "Side-loaded enrichment data requested via the `include` parameter.",
11449
+ "properties": {
11450
+ "active_workflow": {
11451
+ "type": "object",
11452
+ "description": "The active workflow execution for each entity, keyed by entity ID. Only entities with an active workflow are present.",
11453
+ "additionalProperties": {
11454
+ "type": "object"
11455
+ }
10996
11456
  }
10997
11457
  }
10998
11458
  },
@@ -12303,9 +12763,16 @@
12303
12763
  "$ref": "#/components/schemas/EntitySlug"
12304
12764
  },
12305
12765
  "minItems": 1
12766
+ },
12767
+ {
12768
+ "type": "array",
12769
+ "items": {
12770
+ "$ref": "#/components/schemas/EntitySlugConfig"
12771
+ },
12772
+ "minItems": 1
12306
12773
  }
12307
12774
  ],
12308
- "description": "Single entity schema slug or array of slugs"
12775
+ "description": "Entity slug, array of slugs, or array of per-slug configurations"
12309
12776
  },
12310
12777
  "q": {
12311
12778
  "type": "string",
@@ -12469,6 +12936,19 @@
12469
12936
  "example": [
12470
12937
  "3ec28ab5-8598-41ef-9486-b57fca1d5e2a"
12471
12938
  ]
12939
+ },
12940
+ "include": {
12941
+ "type": "array",
12942
+ "description": "Optional enrichment data to side-load alongside results under the `includes` response key.",
12943
+ "items": {
12944
+ "type": "string",
12945
+ "enum": [
12946
+ "active_workflow"
12947
+ ]
12948
+ },
12949
+ "example": [
12950
+ "active_workflow"
12951
+ ]
12472
12952
  }
12473
12953
  },
12474
12954
  "required": [
@@ -13090,6 +13570,9 @@
13090
13570
  "type": "boolean",
13091
13571
  "description": "If true, requests are made from a set of static IP addresses and only allow connections to a set of allowed IP addresses. Get in touch with us to add your IP addresses.",
13092
13572
  "default": false
13573
+ },
13574
+ "secure_proxy": {
13575
+ "$ref": "#/components/schemas/SecureProxyConfig"
13093
13576
  }
13094
13577
  },
13095
13578
  "required": [
@@ -13189,6 +13672,9 @@
13189
13672
  "type": "boolean",
13190
13673
  "description": "If true, requests are made from a set of static IP addresses and only allow connections to a set of allowed IP addresses. Get in touch with us to add your IP addresses.",
13191
13674
  "default": false
13675
+ },
13676
+ "secure_proxy": {
13677
+ "$ref": "#/components/schemas/SecureProxyConfig"
13192
13678
  }
13193
13679
  },
13194
13680
  "required": [
@@ -13296,6 +13782,9 @@
13296
13782
  "type": "boolean",
13297
13783
  "description": "If true, requests are made from a set of static IP addresses and only allow connections to a set of allowed IP addresses. Get in touch with us to add your IP addresses.",
13298
13784
  "default": false
13785
+ },
13786
+ "secure_proxy": {
13787
+ "$ref": "#/components/schemas/SecureProxyConfig"
13299
13788
  }
13300
13789
  },
13301
13790
  "required": [
@@ -13371,6 +13860,9 @@
13371
13860
  "type": "boolean",
13372
13861
  "description": "If true, requests are made from a set of static IP addresses and only allow connections to a set of allowed IP addresses. Get in touch with us to add your IP addresses.",
13373
13862
  "default": false
13863
+ },
13864
+ "secure_proxy": {
13865
+ "$ref": "#/components/schemas/SecureProxyConfig"
13374
13866
  }
13375
13867
  },
13376
13868
  "required": [
@@ -13445,6 +13937,9 @@
13445
13937
  "type": "boolean",
13446
13938
  "description": "If true, requests are made from a set of static IP addresses and only allow connections to a set of allowed IP addresses. Get in touch with us to add your IP addresses.",
13447
13939
  "default": false
13940
+ },
13941
+ "secure_proxy": {
13942
+ "$ref": "#/components/schemas/SecureProxyConfig"
13448
13943
  }
13449
13944
  },
13450
13945
  "required": [
@@ -13519,6 +14014,9 @@
13519
14014
  "type": "boolean",
13520
14015
  "description": "If true, requests are made from a set of static IP addresses and only allow connections to a set of allowed IP addresses. Get in touch with us to add your IP addresses.",
13521
14016
  "default": false
14017
+ },
14018
+ "secure_proxy": {
14019
+ "$ref": "#/components/schemas/SecureProxyConfig"
13522
14020
  }
13523
14021
  },
13524
14022
  "required": [
@@ -13526,6 +14024,25 @@
13526
14024
  "call"
13527
14025
  ]
13528
14026
  },
14027
+ "SecureProxyConfig": {
14028
+ "type": "object",
14029
+ "description": "Configuration for routing requests through the ERP Integration secure proxy. Mutually exclusive with use_static_ips.",
14030
+ "properties": {
14031
+ "integration_id": {
14032
+ "type": "string",
14033
+ "format": "uuid",
14034
+ "description": "Integration ID that owns the secure_proxy use case."
14035
+ },
14036
+ "use_case_slug": {
14037
+ "type": "string",
14038
+ "description": "Use case slug for the secure proxy use case."
14039
+ }
14040
+ },
14041
+ "required": [
14042
+ "integration_id",
14043
+ "use_case_slug"
14044
+ ]
14045
+ },
13529
14046
  "ExtensionAuthBlock": {
13530
14047
  "type": "object",
13531
14048
  "properties": {
@@ -13676,7 +14193,7 @@
13676
14193
  "timestamp": {
13677
14194
  "type": "string",
13678
14195
  "description": "If the value is not provided, the system will be set with the time the request is processed.",
13679
- "example": "2022-10-10T00:00:00.000Z"
14196
+ "example": "2022-10-10"
13680
14197
  },
13681
14198
  "source": {
13682
14199
  "$ref": "#/components/schemas/Source",
@@ -14212,7 +14729,65 @@
14212
14729
  "visibility": {
14213
14730
  "type": "object",
14214
14731
  "description": "The conditions that need to be met for the block to be shown",
14215
- "additionalProperties": true
14732
+ "additionalProperties": true,
14733
+ "properties": {
14734
+ "is_hidden": {
14735
+ "type": "boolean",
14736
+ "description": "Block is fully hidden from portal users"
14737
+ },
14738
+ "hidden_on_mobile": {
14739
+ "type": "boolean",
14740
+ "description": "Block is hidden on mobile viewports"
14741
+ },
14742
+ "hidden_on_desktop": {
14743
+ "type": "boolean",
14744
+ "description": "Block is hidden on desktop viewports"
14745
+ },
14746
+ "hidden_in_app": {
14747
+ "type": "boolean",
14748
+ "description": "Block is hidden in the mobile app"
14749
+ },
14750
+ "start_date": {
14751
+ "type": "string",
14752
+ "format": "date-time",
14753
+ "description": "Schedule visibility start date. If only start_date is set, block is visible from this date onwards."
14754
+ },
14755
+ "end_date": {
14756
+ "type": "string",
14757
+ "format": "date-time",
14758
+ "description": "Schedule visibility end date. If only end_date is set, block is visible until this date."
14759
+ },
14760
+ "visible_for_targets": {
14761
+ "type": "array",
14762
+ "items": {
14763
+ "type": "string"
14764
+ },
14765
+ "description": "Target IDs that must match for the block to be visible"
14766
+ },
14767
+ "visible_for_operator": {
14768
+ "type": "string",
14769
+ "enum": [
14770
+ "and",
14771
+ "or"
14772
+ ],
14773
+ "description": "Operator for visible_for_targets matching"
14774
+ },
14775
+ "hidden_for_targets": {
14776
+ "type": "array",
14777
+ "items": {
14778
+ "type": "string"
14779
+ },
14780
+ "description": "Target IDs that if matched will hide the block"
14781
+ },
14782
+ "hidden_for_operator": {
14783
+ "type": "string",
14784
+ "enum": [
14785
+ "and",
14786
+ "or"
14787
+ ],
14788
+ "description": "Operator for hidden_for_targets matching"
14789
+ }
14790
+ }
14216
14791
  },
14217
14792
  "content": {
14218
14793
  "type": "object",
@@ -14311,7 +14886,57 @@
14311
14886
  "visibility": {
14312
14887
  "type": "object",
14313
14888
  "description": "The conditions that need to be met for the page to be shown",
14314
- "additionalProperties": true
14889
+ "additionalProperties": true,
14890
+ "properties": {
14891
+ "is_hidden": {
14892
+ "type": "boolean",
14893
+ "description": "Page is fully hidden from portal users"
14894
+ },
14895
+ "hidden_in_app": {
14896
+ "type": "boolean",
14897
+ "description": "Page is hidden in the mobile app"
14898
+ },
14899
+ "start_date": {
14900
+ "type": "string",
14901
+ "format": "date-time",
14902
+ "description": "Schedule visibility start date. If only start_date is set, page is visible from this date onwards."
14903
+ },
14904
+ "end_date": {
14905
+ "type": "string",
14906
+ "format": "date-time",
14907
+ "description": "Schedule visibility end date. If only end_date is set, page is visible until this date."
14908
+ },
14909
+ "visible_for_targets": {
14910
+ "type": "array",
14911
+ "items": {
14912
+ "type": "string"
14913
+ },
14914
+ "description": "Target IDs that must match for the page to be visible"
14915
+ },
14916
+ "visible_for_operator": {
14917
+ "type": "string",
14918
+ "enum": [
14919
+ "and",
14920
+ "or"
14921
+ ],
14922
+ "description": "Operator for visible_for_targets matching"
14923
+ },
14924
+ "hidden_for_targets": {
14925
+ "type": "array",
14926
+ "items": {
14927
+ "type": "string"
14928
+ },
14929
+ "description": "Target IDs that if matched will hide the page"
14930
+ },
14931
+ "hidden_for_operator": {
14932
+ "type": "string",
14933
+ "enum": [
14934
+ "and",
14935
+ "or"
14936
+ ],
14937
+ "description": "Operator for hidden_for_targets matching"
14938
+ }
14939
+ }
14315
14940
  },
14316
14941
  "content": {
14317
14942
  "type": "object",
@@ -14349,6 +14974,11 @@
14349
14974
  "description": "The schema of the detail page",
14350
14975
  "example": "contact"
14351
14976
  },
14977
+ "show_in_navigation": {
14978
+ "type": "boolean",
14979
+ "description": "Whether the detail page should appear in the main navigation",
14980
+ "example": false
14981
+ },
14352
14982
  "is_public": {
14353
14983
  "type": "boolean",
14354
14984
  "description": "Whether the page is public",
@@ -14356,6 +14986,7 @@
14356
14986
  },
14357
14987
  "parentId": {
14358
14988
  "type": "string",
14989
+ "nullable": true,
14359
14990
  "description": "The id of the parent page",
14360
14991
  "example": "c495fef9-eeca-4019-a989-8390dcd9825b"
14361
14992
  },
@@ -14392,6 +15023,11 @@
14392
15023
  "format": "date-time",
14393
15024
  "description": "Last modified timestamp of the Page",
14394
15025
  "example": "2021-02-09T12:41:43.662Z"
15026
+ },
15027
+ "portal_id": {
15028
+ "type": "string",
15029
+ "description": "The id of the portal",
15030
+ "example": "453ad7bf-86d5-46c8-8252-bcc868df5e3c"
14395
15031
  }
14396
15032
  }
14397
15033
  }
@@ -14418,18 +15054,21 @@
14418
15054
  "type": "boolean",
14419
15055
  "description": "Mark true if the domain is an Epilot domain"
14420
15056
  },
14421
- "epilot_domain": {
14422
- "type": "string",
14423
- "description": "The Epilot domain on which the portal is accessible",
14424
- "example": "example-portal-1.ecp.epilot.io"
14425
- },
14426
- "domain_settings": {
14427
- "$ref": "#/components/schemas/DomainSettings"
14428
- },
14429
15057
  "design_id": {
14430
15058
  "$ref": "#/components/schemas/EntityId",
14431
15059
  "description": "ID of the design used to build the portal"
14432
15060
  },
15061
+ "allowed_portal_entities": {
15062
+ "type": "array",
15063
+ "items": {
15064
+ "type": "string"
15065
+ },
15066
+ "description": "Allowed portal entities for the portal",
15067
+ "example": [
15068
+ "contact",
15069
+ "contract"
15070
+ ]
15071
+ },
14433
15072
  "self_registration_setting": {
14434
15073
  "type": "string",
14435
15074
  "enum": [
@@ -14532,6 +15171,48 @@
14532
15171
  "example": "eu-central-1_CUEQRNbUb",
14533
15172
  "description": "Cognito user pool ID"
14534
15173
  },
15174
+ "timeouts": {
15175
+ "type": "object",
15176
+ "description": "Timeouts for the cognito tokens",
15177
+ "properties": {
15178
+ "refresh_token": {
15179
+ "type": "integer",
15180
+ "example": 300,
15181
+ "description": "Timeout for the refresh token"
15182
+ },
15183
+ "access_token": {
15184
+ "type": "integer",
15185
+ "example": 300,
15186
+ "description": "Timeout for the access token"
15187
+ },
15188
+ "id_token": {
15189
+ "type": "integer",
15190
+ "example": 300,
15191
+ "description": "Timeout for the id token"
15192
+ }
15193
+ }
15194
+ },
15195
+ "advanced_authentication": {
15196
+ "type": "object",
15197
+ "description": "Advanced authentication settings for the portal",
15198
+ "properties": {
15199
+ "user_activity_logging": {
15200
+ "type": "boolean",
15201
+ "example": true,
15202
+ "description": "Enables detailed logging of user authentication attempts including risk assessments, IP addresses, user agents, and device information. These logs can be used for security analysis and monitoring."
15203
+ },
15204
+ "adaptive_authentication": {
15205
+ "type": "boolean",
15206
+ "example": true,
15207
+ "description": "Automatically assesses risk for every authentication session. Based on risk ratings, can block authentication or require MFA for suspicious sign-in attempts. Helps protect user accounts from potential attacks by adapting security measures in real-time."
15208
+ },
15209
+ "compromised_credentials_detection": {
15210
+ "type": "boolean",
15211
+ "example": true,
15212
+ "description": "Checks passwords against databases of leaked and commonly-guessed passwords during sign-up, sign-in, and password reset. Blocks or warns users when insecure passwords are detected, preventing unauthorized access from compromised credentials."
15213
+ }
15214
+ }
15215
+ },
14535
15216
  "password_policy": {
14536
15217
  "type": "object",
14537
15218
  "description": "Password policy for the portal",
@@ -14929,11 +15610,6 @@
14929
15610
  "is_canary": {
14930
15611
  "type": "boolean",
14931
15612
  "description": "Whether the org is in canary mode"
14932
- },
14933
- "redirect_to": {
14934
- "type": "string",
14935
- "description": "The URL to redirect to",
14936
- "example": "https://example.com"
14937
15613
  }
14938
15614
  }
14939
15615
  },