@epilot/sdk 2.1.5 → 2.1.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/definitions/app.json +18 -6
- package/dist/apis/access-token.cjs +6 -6
- package/dist/apis/access-token.js +1 -1
- package/dist/apis/address-suggestions.cjs +6 -6
- package/dist/apis/address-suggestions.js +1 -1
- package/dist/apis/address.cjs +6 -6
- package/dist/apis/address.js +1 -1
- package/dist/apis/ai-agents.cjs +6 -6
- package/dist/apis/ai-agents.js +1 -1
- package/dist/apis/app.cjs +6 -6
- package/dist/apis/app.d.cts +2 -2
- package/dist/apis/app.d.ts +2 -2
- package/dist/apis/app.js +1 -1
- package/dist/apis/audit-logs.cjs +6 -6
- package/dist/apis/audit-logs.js +1 -1
- package/dist/apis/automation.cjs +6 -6
- package/dist/apis/automation.js +1 -1
- package/dist/apis/billing.cjs +6 -6
- package/dist/apis/billing.js +1 -1
- package/dist/apis/blueprint-manifest.cjs +6 -6
- package/dist/apis/blueprint-manifest.js +1 -1
- package/dist/apis/consent.cjs +6 -6
- package/dist/apis/consent.js +1 -1
- package/dist/apis/customer-portal.cjs +6 -6
- package/dist/apis/customer-portal.js +1 -1
- package/dist/apis/dashboard.cjs +6 -6
- package/dist/apis/dashboard.js +1 -1
- package/dist/apis/data-management.cjs +6 -6
- package/dist/apis/data-management.js +1 -1
- package/dist/apis/deduplication.cjs +6 -6
- package/dist/apis/deduplication.js +1 -1
- package/dist/apis/design.cjs +6 -6
- package/dist/apis/design.js +1 -1
- package/dist/apis/document.cjs +6 -6
- package/dist/apis/document.js +1 -1
- package/dist/apis/email-settings.cjs +6 -6
- package/dist/apis/email-settings.js +1 -1
- package/dist/apis/email-template.cjs +6 -6
- package/dist/apis/email-template.js +1 -1
- package/dist/apis/entity-mapping.cjs +6 -6
- package/dist/apis/entity-mapping.js +1 -1
- package/dist/apis/entity.cjs +6 -6
- package/dist/apis/entity.js +1 -1
- package/dist/apis/environments.cjs +6 -6
- package/dist/apis/environments.js +1 -1
- package/dist/apis/erp-integration.cjs +6 -6
- package/dist/apis/erp-integration.js +1 -1
- package/dist/apis/event-catalog.cjs +6 -6
- package/dist/apis/event-catalog.js +1 -1
- package/dist/apis/file.cjs +6 -6
- package/dist/apis/file.js +1 -1
- package/dist/apis/iban.cjs +6 -6
- package/dist/apis/iban.js +1 -1
- package/dist/apis/journey.cjs +6 -6
- package/dist/apis/journey.js +1 -1
- package/dist/apis/kanban.cjs +6 -6
- package/dist/apis/kanban.js +1 -1
- package/dist/apis/message.cjs +6 -6
- package/dist/apis/message.js +1 -1
- package/dist/apis/metering.cjs +6 -6
- package/dist/apis/metering.js +1 -1
- package/dist/apis/notes.cjs +6 -6
- package/dist/apis/notes.js +1 -1
- package/dist/apis/notification.cjs +6 -6
- package/dist/apis/notification.js +1 -1
- package/dist/apis/organization.cjs +6 -6
- package/dist/apis/organization.js +1 -1
- package/dist/apis/partner-directory.cjs +6 -6
- package/dist/apis/partner-directory.js +1 -1
- package/dist/apis/permissions.cjs +6 -6
- package/dist/apis/permissions.js +1 -1
- package/dist/apis/pricing-tier.cjs +6 -6
- package/dist/apis/pricing-tier.js +1 -1
- package/dist/apis/pricing.cjs +6 -6
- package/dist/apis/pricing.js +1 -1
- package/dist/apis/purpose.cjs +6 -6
- package/dist/apis/purpose.js +1 -1
- package/dist/apis/sandbox.cjs +6 -6
- package/dist/apis/sandbox.js +1 -1
- package/dist/apis/submission.cjs +6 -6
- package/dist/apis/submission.js +1 -1
- package/dist/apis/targeting.cjs +6 -6
- package/dist/apis/targeting.js +1 -1
- package/dist/apis/template-variables.cjs +6 -6
- package/dist/apis/template-variables.js +1 -1
- package/dist/apis/user.cjs +6 -6
- package/dist/apis/user.js +1 -1
- package/dist/apis/validation-rules.cjs +6 -6
- package/dist/apis/validation-rules.js +1 -1
- package/dist/apis/webhooks.cjs +6 -6
- package/dist/apis/webhooks.js +1 -1
- package/dist/apis/workflow-definition.cjs +6 -6
- package/dist/apis/workflow-definition.js +1 -1
- package/dist/apis/workflow.cjs +6 -6
- package/dist/apis/workflow.js +1 -1
- package/dist/app-5KSVSKDU.js +7 -0
- package/dist/app-PL3IOROO.cjs +7 -0
- package/dist/{app.d-BXy_QUym.d.cts → app.d-u7Dq42kU.d.cts} +6 -2
- package/dist/{app.d-BXy_QUym.d.ts → app.d-u7Dq42kU.d.ts} +6 -2
- package/dist/{chunk-IT6ZEZ5U.cjs → chunk-DDMVRJDZ.cjs} +1 -1
- package/dist/{chunk-JSOL6HWE.js → chunk-EQYWNVI2.js} +1 -1
- package/dist/index.cjs +8 -8
- package/dist/index.d.cts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/docs/app.md +24 -10
- package/package.json +1 -1
- package/dist/app-IKHWU222.cjs +0 -7
- package/dist/app-VLM3SWKA.js +0 -7
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true});require('./chunk-NJK5F5TF.cjs');
|
|
2
|
+
|
|
3
|
+
// src/docs/app.json
|
|
4
|
+
var app_default = '# App API\n\n- **Base URL:** `https://app.sls.epilot.io`\n- **Full API Docs:** [https://docs.epilot.io/api/app](https://docs.epilot.io/api/app)\n\n## Usage\n\n```ts\nimport { epilot } from \'@epilot/sdk\'\n\nepilot.authorize(() => \'<token>\')\nconst { data } = await epilot.app.getPublicFacingComponent(...)\n```\n\n### Tree-shakeable import\n\n```ts\nimport { getClient, authorize } from \'@epilot/sdk/app\'\n\nconst appClient = getClient()\nauthorize(appClient, () => \'<token>\')\nconst { data } = await appClient.getPublicFacingComponent(...)\n```\n\n## Operations\n\n**App Installation**\n- [`getPublicFacingComponent`](#getpublicfacingcomponent)\n- [`listInstallations`](#listinstallations)\n- [`getInstallation`](#getinstallation)\n- [`install`](#install)\n- [`patchInstallation`](#patchinstallation)\n- [`uninstall`](#uninstall)\n- [`promoteVersion`](#promoteversion)\n\n**App Configuration**\n- [`listConfigurations`](#listconfigurations)\n- [`createConfiguration`](#createconfiguration)\n- [`listPublicConfigurations`](#listpublicconfigurations)\n- [`getPublicConfiguration`](#getpublicconfiguration)\n- [`getConfiguration`](#getconfiguration)\n- [`patchMetadata`](#patchmetadata)\n- [`deleteConfiguration`](#deleteconfiguration)\n- [`createBundleUploadUrl`](#createbundleuploadurl)\n- [`createZipUploadUrl`](#createzipuploadurl)\n- [`createLogoUploadUrl`](#createlogouploadurl)\n- [`deleteLogo`](#deletelogo)\n- [`listVersions`](#listversions)\n- [`getVersion`](#getversion)\n- [`deleteVersion`](#deleteversion)\n- [`patchVersion`](#patchversion)\n- [`getReview`](#getreview)\n- [`createReview`](#createreview)\n- [`createComponent`](#createcomponent)\n- [`patchComponent`](#patchcomponent)\n- [`deleteComponent`](#deletecomponent)\n- [`cloneVersion`](#cloneversion)\n\n**App Analytics**\n- [`queryEvents`](#queryevents)\n- [`ingestEvent`](#ingestevent)\n\n**Schemas**\n- [`Role`](#role)\n- [`Options`](#options)\n- [`Option`](#option)\n- [`OptionsRef`](#optionsref)\n- [`S3Reference`](#s3reference)\n- [`ComponentType`](#componenttype)\n- [`Author`](#author)\n- [`NotificationConfig`](#notificationconfig)\n- [`NotificationEvent`](#notificationevent)\n- [`BaseComponentCommon`](#basecomponentcommon)\n- [`BaseComponent`](#basecomponent)\n- [`CustomCapabilityComponent`](#customcapabilitycomponent)\n- [`CustomPageComponent`](#custompagecomponent)\n- [`CustomPageConfig`](#custompageconfig)\n- [`JourneyBlockComponent`](#journeyblockcomponent)\n- [`PortalBlockComponent`](#portalblockcomponent)\n- [`ErpInformToolkitComponent`](#erpinformtoolkitcomponent)\n- [`CustomFlowActionComponent`](#customflowactioncomponent)\n- [`BaseCustomActionConfig`](#basecustomactionconfig)\n- [`ExternalIntegrationCustomActionConfig`](#externalintegrationcustomactionconfig)\n- [`SandboxCustomActionConfig`](#sandboxcustomactionconfig)\n- [`CustomFlowConfig`](#customflowconfig)\n- [`ExternalProductCatalogComponent`](#externalproductcatalogcomponent)\n- [`ExternalProductCatalogConfig`](#externalproductcatalogconfig)\n- [`ExternalProductCatalogHookProducts`](#externalproductcataloghookproducts)\n- [`ExternalProductCatalogHookProductRecommendations`](#externalproductcataloghookproductrecommendations)\n- [`PortalExtensionComponent`](#portalextensioncomponent)\n- [`PortalExtensionConfig`](#portalextensionconfig)\n- [`PortalExtensionHookRegistrationIdentifiersCheck`](#portalextensionhookregistrationidentifierscheck)\n- [`PortalExtensionHookContractIdentification`](#portalextensionhookcontractidentification)\n- [`PortalExtensionHookMeterReadingPlausibilityCheck`](#portalextensionhookmeterreadingplausibilitycheck)\n- [`PortalExtensionHookPriceDataRetrieval`](#portalextensionhookpricedataretrieval)\n- [`PortalExtensionHookConsumptionDataRetrieval`](#portalextensionhookconsumptiondataretrieval)\n- [`PortalExtensionHookCostDataRetrieval`](#portalextensionhookcostdataretrieval)\n- [`PortalExtensionSeamlessLink`](#portalextensionseamlesslink)\n- [`PortalExtensionAuthBlock`](#portalextensionauthblock)\n- [`PortalExtensionSecureProxy`](#portalextensionsecureproxy)\n- [`ExternalProductCatalogAuthBlock`](#externalproductcatalogauthblock)\n- [`OverrideDevMode`](#overridedevmode)\n- [`JourneyBlockConfig`](#journeyblockconfig)\n- [`PortalBlockConfig`](#portalblockconfig)\n- [`AppBridgeSurfaceConfig`](#appbridgesurfaceconfig)\n- [`PortalBlockSurfaceConfig`](#portalblocksurfaceconfig)\n- [`JourneyBlockComponentArgs`](#journeyblockcomponentargs)\n- [`TextArg`](#textarg)\n- [`BooleanArg`](#booleanarg)\n- [`EnumArg`](#enumarg)\n- [`BillingFrequency`](#billingfrequency)\n- [`Pricing`](#pricing)\n- [`Audit`](#audit)\n- [`Review`](#review)\n- [`ConfigurationMetadata`](#configurationmetadata)\n- [`ConfigurationVersion`](#configurationversion)\n- [`Grants`](#grants)\n- [`BlueprintRef`](#blueprintref)\n- [`Installation`](#installation)\n- [`PublicConfiguration`](#publicconfiguration)\n- [`Configuration`](#configuration)\n- [`TranslatedString`](#translatedstring)\n- [`CallerIdentity`](#calleridentity)\n- [`BatchEventRequest`](#batcheventrequest)\n- [`Actor`](#actor)\n- [`AppEventData`](#appeventdata)\n- [`EventsQuery`](#eventsquery)\n- [`EventsQueryResponse`](#eventsqueryresponse)\n- [`RawEvents`](#rawevents)\n- [`AggregatedEvents`](#aggregatedevents)\n\n### `getPublicFacingComponent`\n\nRetrieve public facing components for an installed app\n\n`GET /v1/public/app/{appId}/components/{componentId}`\n\n```ts\nconst { data } = await client.getPublicFacingComponent({\n appId: \'example\',\n componentId: \'example\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "component": {\n "component_type": "CUSTOM_JOURNEY_BLOCK",\n "configuration": {\n "override_dev_mode": {\n "override_url": "http://localhost:3000"\n },\n "component_url": "https://cdn.apps.com/123/v1.0.0/bundle.js",\n "component_tag": "string",\n "component_args": [\n {\n "type": "text"\n }\n ],\n "component_size": 0,\n "component_mapping": {}\n }\n }\n}\n```\n\n</details>\n\n---\n\n### `listConfigurations`\n\nList all app configuration metadata owned by an organization. To get full app configuration details, use the /v1/app-configurations/{appId} endpoint.\n\n`GET /v1/app-configurations`\n\n```ts\nconst { data } = await client.listConfigurations({\n page: 1,\n pageSize: 1,\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "configurations": [\n {\n "app_id": "string",\n "name": "string",\n "author": {\n "name": "string",\n "company": "string",\n "email": "string"\n },\n "dev_mode": true,\n "versions": ["string"],\n "public_versions": ["string"],\n "support_email": "string",\n "latest_version": "string",\n "category": "string",\n "icon_url": "string",\n "documentation_url": "string",\n "description": {\n "en": "string",\n "de": "string"\n },\n "notifications": {\n "email": "developer@example.com",\n "events": ["app.installed"]\n },\n "owner_org_id": "string",\n "internal": false,\n "pricing": {\n "pricing_type": "FREE",\n "billing_frequency": "MONTHLY"\n },\n "configuration_audit": {\n "created_at": "string",\n "created_by": "string",\n "updated_at": "string",\n "updated_by": "string"\n }\n }\n ],\n "pagination": {\n "total": 0,\n "page": 0,\n "pageSize": 0\n }\n}\n```\n\n</details>\n\n---\n\n### `createConfiguration`\n\nCreate a new private app configuration. To make it public a verification process needs to be triggered\n\n`POST /v1/app-configurations`\n\n```ts\nconst { data } = await client.createConfiguration(\n null,\n {\n name: \'string\',\n description: {\n en: \'string\',\n de: \'string\'\n },\n category: \'string\',\n logo_url_key: \'string\'\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "app_id": "string"\n}\n```\n\n</details>\n\n---\n\n### `listPublicConfigurations`\n\nList all publicly available app configurations that can be installed. This endpoint returns apps that have at least one public version.\n\n`GET /v1/app-configurations/public`\n\n```ts\nconst { data } = await client.listPublicConfigurations({\n page: 1,\n pageSize: 1,\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "configurations": [\n {\n "app_id": "string",\n "name": "string",\n "author": {\n "name": "string",\n "company": "string",\n "email": "string"\n },\n "dev_mode": true,\n "versions": ["string"],\n "public_versions": ["string"],\n "support_email": "string",\n "latest_version": "string",\n "category": "string",\n "icon_url": "string",\n "documentation_url": "string",\n "description": {\n "en": "string",\n "de": "string"\n },\n "notifications": {\n "email": "developer@example.com",\n "events": ["app.installed"]\n },\n "owner_org_id": "string",\n "internal": false,\n "pricing": {\n "pricing_type": "FREE",\n "billing_frequency": "MONTHLY"\n },\n "configuration_audit": {\n "created_at": "string",\n "created_by": "string",\n "updated_at": "string",\n "updated_by": "string"\n }\n }\n ],\n "pagination": {\n "total": 0,\n "page": 0,\n "pageSize": 0\n }\n}\n```\n\n</details>\n\n---\n\n### `getPublicConfiguration`\n\nRetrieve the public configuration of an app to install in your tenant\n\n`GET /v1/app-configurations/public/{appId}`\n\n```ts\nconst { data } = await client.getPublicConfiguration({\n appId: \'example\',\n version: \'example\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "app_id": "string",\n "support_email": "string",\n "owner_org_id": "string",\n "name": "string",\n "author": {\n "name": "string",\n "company": "string",\n "email": "string"\n },\n "dev_mode": true,\n "category": "string",\n "icon_url": "string",\n "documentation_url": "string",\n "description": {\n "en": "string",\n "de": "string"\n },\n "pricing": {\n "pricing_type": "FREE",\n "billing_frequency": "MONTHLY"\n },\n "components": [\n {\n "component_type": "CUSTOM_JOURNEY_BLOCK",\n "configuration": {}\n }\n ],\n "is_beta": true,\n "deprecated_at": "string",\n "version": "string",\n "role": {\n "id": "string",\n "grants": [\n {}\n ]\n },\n "blueprint_ref": {\n "manifest_id": "string",\n "job_id": "string",\n "source_blueprint_file": "string"\n },\n "latest_version": "string",\n "public": true,\n "versions": [\n {\n "app_id": "string",\n "owner_org_id": "string",\n "components": [],\n "visibility": "private",\n "public": false,\n "pending": false,\n "version": "string",\n "is_beta": true,\n "deprecated_at": "string",\n "changelog": "string",\n "review_status": "approved",\n "role": {},\n "blueprint_ref": {},\n "version_audit": {}\n }\n ]\n}\n```\n\n</details>\n\n---\n\n### `getConfiguration`\n\nRetrieve a specific app configuration\n\n`GET /v1/app-configurations/{appId}`\n\n```ts\nconst { data } = await client.getConfiguration({\n appId: \'example\',\n version: \'example\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "app_id": "string",\n "name": "string",\n "author": {\n "name": "string",\n "company": "string",\n "email": "string"\n },\n "dev_mode": true,\n "versions": ["string"],\n "public_versions": ["string"],\n "support_email": "string",\n "latest_version": "string",\n "category": "string",\n "icon_url": "string",\n "documentation_url": "string",\n "description": {\n "en": "string",\n "de": "string"\n },\n "notifications": {\n "email": "developer@example.com",\n "events": ["app.installed"]\n },\n "owner_org_id": "string",\n "internal": false,\n "pricing": {\n "pricing_type": "FREE",\n "billing_frequency": "MONTHLY"\n },\n "configuration_audit": {\n "created_at": "string",\n "created_by": "string",\n "updated_at": "string",\n "updated_by": "string"\n },\n "components": [\n {\n "component_type": "CUSTOM_JOURNEY_BLOCK",\n "configuration": {\n "override_dev_mode": {\n "override_url": "http://localhost:3000"\n },\n "component_url": "https://cdn.apps.com/123/v1.0.0/bundle.js",\n "component_tag": "string",\n "component_args": [\n {\n "type": "text"\n }\n ],\n "component_size": 0,\n "component_mapping": {}\n }\n }\n ],\n "visibility": "private",\n "public": false,\n "pending": false,\n "version": "string",\n "is_beta": true,\n "deprecated_at": "string",\n "changelog": "string",\n "review_status": "approved",\n "role": {\n "id": "string",\n "grants": [\n {\n "action": "string",\n "resource": "string"\n }\n ]\n },\n "blueprint_ref": {\n "manifest_id": "string",\n "job_id": "string",\n "source_blueprint_file": "string"\n },\n "version_audit": {\n "created_at": "string",\n "created_by": "string",\n "updated_at": "string",\n "updated_by": "string",\n "versioned_at": "string",\n "versioned_by": "string"\n }\n}\n```\n\n</details>\n\n---\n\n### `patchMetadata`\n\nPatch non-versioned configuration metadata of a given app configuration.\n\n`PATCH /v1/app-configurations/{appId}`\n\n```ts\nconst { data } = await client.patchMetadata(\n {\n appId: \'example\',\n },\n {\n name: \'string\',\n description: {\n en: \'string\',\n de: \'string\'\n },\n category: \'string\',\n documentation_url: \'string\',\n notifications: {\n email: \'developer@example.com\',\n events: [\'app.installed\']\n },\n pricing: {\n pricing_type: \'FREE\',\n billing_frequency: \'MONTHLY\'\n },\n logo_url_key: \'string\',\n support_email: \'string\',\n dev_mode: true\n },\n)\n```\n\n---\n\n### `deleteConfiguration`\n\nDelete app configuration\n\n`DELETE /v1/app-configurations/{appId}`\n\n```ts\nconst { data } = await client.deleteConfiguration({\n appId: \'example\',\n})\n```\n\n---\n\n### `queryEvents`\n\nQuery analytics events for a specific app with flexible filtering\n\n`POST /v1/app-configurations/{appId}/events`\n\n```ts\nconst { data } = await client.queryEvents(\n {\n appId: \'example\',\n },\n {\n time_range: {\n start: \'1970-01-01T00:00:00.000Z\',\n end: \'1970-01-01T00:00:00.000Z\',\n preset: \'1h\'\n },\n filters: {\n source: [\'CUSTOM_JOURNEY_BLOCK\'],\n component_id: [\'string\'],\n event_type: [\'ERROR\'],\n correlation_id: \'string\'\n },\n aggregation: {\n group_by: [\'source\'],\n metrics: [\'count\']\n },\n pagination: {\n page: 1,\n page_size: 100\n },\n sort: {\n field: \'timestamp\',\n order: \'desc\'\n }\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "query": {\n "time_range": {\n "start": "1970-01-01T00:00:00.000Z",\n "end": "1970-01-01T00:00:00.000Z",\n "preset": "1h"\n },\n "filters": {\n "source": ["CUSTOM_JOURNEY_BLOCK"],\n "component_id": ["string"],\n "event_type": ["ERROR"],\n "correlation_id": "string"\n },\n "aggregation": {\n "group_by": ["source"],\n "metrics": ["count"]\n },\n "pagination": {\n "page": 1,\n "page_size": 100\n },\n "sort": {\n "field": "timestamp",\n "order": "desc"\n }\n },\n "results": {\n "type": "raw",\n "events": [\n {\n "app_id": "string",\n "version": "string",\n "event_id": "string",\n "component_id": "string",\n "timestamp": "string",\n "correlation_id": "string",\n "event_type": "ERROR",\n "source": "CUSTOM_JOURNEY_BLOCK",\n "actor": {\n "org_id": "string",\n "user_id": "string",\n "type": "user"\n },\n "details": {}\n }\n ]\n },\n "pagination": {\n "page": 0,\n "page_size": 0,\n "total_items": 0,\n "has_next": true\n }\n}\n```\n\n</details>\n\n---\n\n### `createBundleUploadUrl`\n\nGenerate a presigned URL for uploading app bundle to /``<app-id>``/bundle.js path\n\n`POST /v1/app-configurations/{appId}/bundle`\n\n```ts\nconst { data } = await client.createBundleUploadUrl(\n {\n appId: \'example\',\n },\n {\n version: \'string\',\n component_id: \'string\'\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "component_id": "string",\n "component_url": "string",\n "upload_url": "string",\n "s3ref": {\n "bucket": "my-bucket",\n "key": "manifest.json"\n },\n "expires_at": "1970-01-01T00:00:00.000Z"\n}\n```\n\n</details>\n\n---\n\n### `createZipUploadUrl`\n\nGenerate a presigned URL to upload a zip file with artifacts that will be unpacked in a new directory under the /``<app-id>``/ path\n\n`POST /v1/app-configurations/{appId}/zip`\n\n```ts\nconst { data } = await client.createZipUploadUrl(\n {\n appId: \'example\',\n },\n {\n version: \'1.0.0\',\n component_id: \'string\',\n filename: \'dist.zip\'\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "component_id": "string",\n "upload_url": "string",\n "artifact_url": "string",\n "s3ref": {\n "bucket": "my-bucket",\n "key": "manifest.json"\n },\n "expires_at": "1970-01-01T00:00:00.000Z"\n}\n```\n\n</details>\n\n---\n\n### `createLogoUploadUrl`\n\nGenerate a presigned URL for uploading app logo to /``<app-id>``/logo.png path\n\n`POST /v1/app-configurations/{appId}/logo`\n\n```ts\nconst { data } = await client.createLogoUploadUrl(\n {\n appId: \'example\',\n },\n {\n filename: \'company-logo.png\',\n mime_type: \'image/png\'\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "upload_url": "string",\n "s3ref": {\n "bucket": "my-bucket",\n "key": "manifest.json"\n },\n "expires_at": "1970-01-01T00:00:00.000Z"\n}\n```\n\n</details>\n\n---\n\n### `deleteLogo`\n\nDelete the app logo from /``<app-id>``/logo.png path\n\n`DELETE /v1/app-configurations/{appId}/logo`\n\n```ts\nconst { data } = await client.deleteLogo({\n appId: \'example\',\n})\n```\n\n---\n\n### `listVersions`\n\nRetrieve a list of versions for an app configuration\n\n`GET /v1/app-configurations/{appId}/versions`\n\n```ts\nconst { data } = await client.listVersions({\n appId: \'example\',\n page: 1,\n pageSize: 1,\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "versions": [\n {\n "app_id": "string",\n "owner_org_id": "string",\n "components": [\n {\n "component_type": "CUSTOM_JOURNEY_BLOCK",\n "configuration": {\n "override_dev_mode": {\n "override_url": "http://localhost:3000"\n },\n "component_url": "https://cdn.apps.com/123/v1.0.0/bundle.js",\n "component_tag": "string",\n "component_args": [\n {\n "type": "text"\n }\n ],\n "component_size": 0,\n "component_mapping": {}\n }\n }\n ],\n "visibility": "private",\n "public": false,\n "pending": false,\n "version": "string",\n "is_beta": true,\n "deprecated_at": "string",\n "changelog": "string",\n "review_status": "approved",\n "role": {\n "id": "string",\n "grants": [\n {\n "action": "string",\n "resource": "string"\n }\n ]\n },\n "blueprint_ref": {\n "manifest_id": "string",\n "job_id": "string",\n "source_blueprint_file": "string"\n },\n "version_audit": {\n "created_at": "string",\n "created_by": "string",\n "updated_at": "string",\n "updated_by": "string",\n "versioned_at": "string",\n "versioned_by": "string"\n }\n }\n ],\n "pagination": {\n "total": 0,\n "page": 0,\n "pageSize": 0\n }\n}\n```\n\n</details>\n\n---\n\n### `getVersion`\n\nRetrieve a specific version of an app configuration\n\n`GET /v1/app-configurations/{appId}/versions/{version}`\n\n```ts\nconst { data } = await client.getVersion({\n appId: \'example\',\n version: \'example\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "app_id": "string",\n "name": "string",\n "author": {\n "name": "string",\n "company": "string",\n "email": "string"\n },\n "dev_mode": true,\n "versions": ["string"],\n "public_versions": ["string"],\n "support_email": "string",\n "latest_version": "string",\n "category": "string",\n "icon_url": "string",\n "documentation_url": "string",\n "description": {\n "en": "string",\n "de": "string"\n },\n "notifications": {\n "email": "developer@example.com",\n "events": ["app.installed"]\n },\n "owner_org_id": "string",\n "internal": false,\n "pricing": {\n "pricing_type": "FREE",\n "billing_frequency": "MONTHLY"\n },\n "configuration_audit": {\n "created_at": "string",\n "created_by": "string",\n "updated_at": "string",\n "updated_by": "string"\n },\n "components": [\n {\n "component_type": "CUSTOM_JOURNEY_BLOCK",\n "configuration": {\n "override_dev_mode": {\n "override_url": "http://localhost:3000"\n },\n "component_url": "https://cdn.apps.com/123/v1.0.0/bundle.js",\n "component_tag": "string",\n "component_args": [\n {\n "type": "text"\n }\n ],\n "component_size": 0,\n "component_mapping": {}\n }\n }\n ],\n "visibility": "private",\n "public": false,\n "pending": false,\n "version": "string",\n "is_beta": true,\n "deprecated_at": "string",\n "changelog": "string",\n "review_status": "approved",\n "role": {\n "id": "string",\n "grants": [\n {\n "action": "string",\n "resource": "string"\n }\n ]\n },\n "blueprint_ref": {\n "manifest_id": "string",\n "job_id": "string",\n "source_blueprint_file": "string"\n },\n "version_audit": {\n "created_at": "string",\n "created_by": "string",\n "updated_at": "string",\n "updated_by": "string",\n "versioned_at": "string",\n "versioned_by": "string"\n }\n}\n```\n\n</details>\n\n---\n\n### `deleteVersion`\n\nDelete a specific version of an app configuration\n\n`DELETE /v1/app-configurations/{appId}/versions/{version}`\n\n```ts\nconst { data } = await client.deleteVersion({\n appId: \'example\',\n version: \'example\',\n})\n```\n\n---\n\n### `patchVersion`\n\nPatch an existing app version\n\n`PATCH /v1/app-configurations/{appId}/versions/{version}`\n\n```ts\nconst { data } = await client.patchVersion(\n {\n appId: \'example\',\n version: \'example\',\n },\n {\n manifest_id: \'string\',\n role_id: \'string\',\n grants: [\n {\n action: \'string\',\n resource: \'string\'\n }\n ]\n },\n)\n```\n\n---\n\n### `getReview`\n\nRetrieve the review status of a specific app version\n\n`GET /v1/app-configurations/{appId}/versions/{version}/review`\n\n```ts\nconst { data } = await client.getReview({\n appId: \'example\',\n version: \'example\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "review": {\n "version": "string",\n "review_status": "approved",\n "requested_at": "string",\n "requested_by": "string",\n "technical_contact": "string",\n "marketing_contact": "string",\n "demo_url": "string"\n }\n}\n```\n\n</details>\n\n---\n\n### `createReview`\n\nSubmit an app version for review to make it public\n\n`POST /v1/app-configurations/{appId}/versions/{version}/review`\n\n```ts\nconst { data } = await client.createReview(\n {\n appId: \'example\',\n version: \'example\',\n },\n {\n technical_contact: \'string\',\n marketing_contact: \'string\',\n demo_url: \'string\'\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "review": {\n "version": "string",\n "review_status": "approved",\n "requested_at": "string",\n "requested_by": "string",\n "technical_contact": "string",\n "marketing_contact": "string",\n "demo_url": "string"\n }\n}\n```\n\n</details>\n\n---\n\n### `createComponent`\n\nPatch an existing app version to create/add a component\n\n`POST /v1/app-configurations/{appId}/versions/{version}/components`\n\n```ts\nconst { data } = await client.createComponent(\n {\n appId: \'example\',\n version: \'example\',\n },\n {\n component_type: \'CUSTOM_JOURNEY_BLOCK\',\n configuration: {\n override_dev_mode: {\n override_url: \'http://localhost:3000\'\n },\n component_url: \'https://cdn.apps.com/123/v1.0.0/bundle.js\',\n component_tag: \'string\',\n component_args: [\n {\n type: \'text\'\n }\n ],\n component_size: 0,\n component_mapping: {}\n }\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "component": {\n "component_type": "CUSTOM_JOURNEY_BLOCK",\n "configuration": {\n "override_dev_mode": {\n "override_url": "http://localhost:3000"\n },\n "component_url": "https://cdn.apps.com/123/v1.0.0/bundle.js",\n "component_tag": "string",\n "component_args": [\n {\n "type": "text"\n }\n ],\n "component_size": 0,\n "component_mapping": {}\n }\n }\n}\n```\n\n</details>\n\n---\n\n### `patchComponent`\n\nPatch an existing app version to update its components\n\n`PATCH /v1/app-configurations/{appId}/versions/{version}/components/{componentId}`\n\n```ts\nconst { data } = await client.patchComponent(\n {\n appId: \'example\',\n version: \'example\',\n componentId: \'example\',\n },\n {\n component_type: \'CUSTOM_JOURNEY_BLOCK\',\n configuration: {\n override_dev_mode: {\n override_url: \'http://localhost:3000\'\n },\n component_url: \'https://cdn.apps.com/123/v1.0.0/bundle.js\',\n component_tag: \'string\',\n component_args: [\n {\n type: \'text\'\n }\n ],\n component_size: 0,\n component_mapping: {}\n }\n },\n)\n```\n\n---\n\n### `deleteComponent`\n\nDelete a specific component from an app version\n\n`DELETE /v1/app-configurations/{appId}/versions/{version}/components/{componentId}`\n\n```ts\nconst { data } = await client.deleteComponent({\n appId: \'example\',\n version: \'example\',\n componentId: \'example\',\n})\n```\n\n---\n\n### `cloneVersion`\n\nClone an existing app version to create a new version\n\n`POST /v1/app-configurations/{appId}/versions/{sourceVersion}/clone-to/{targetVersion}`\n\n```ts\nconst { data } = await client.cloneVersion({\n appId: \'example\',\n sourceVersion: \'example\',\n targetVersion: \'example\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "app_id": "string",\n "version": "string",\n "status": "pending"\n}\n```\n\n</details>\n\n---\n\n### `listInstallations`\n\nRetrieve a list of installed apps for the organization.\n\n`GET /v1/app`\n\n```ts\nconst { data } = await client.listInstallations({\n componentType: \'example\',\n enabled: true,\n page: 1,\n pageSize: 1,\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "apps": [\n {\n "app_id": "string",\n "installer_org_id": "string",\n "owner_org_id": "string",\n "enabled": true,\n "name": "string",\n "option_values": [\n {\n "component_id": "string",\n "options": [\n {\n "key": "string",\n "value": {}\n }\n ]\n }\n ],\n "components": [\n {\n "component_type": "CUSTOM_JOURNEY_BLOCK",\n "configuration": {\n "override_dev_mode": {\n "override_url": "http://localhost:3000"\n },\n "component_url": "https://cdn.apps.com/123/v1.0.0/bundle.js",\n "component_tag": "string",\n "component_args": [\n {\n "type": "text"\n }\n ],\n "component_size": 0,\n "component_mapping": {}\n }\n }\n ],\n "installed_version": "string",\n "role": "string",\n "blueprint_ref": {\n "manifest_id": "string",\n "job_id": "string",\n "source_blueprint_file": "string"\n },\n "installation_audit": {\n "created_at": "string",\n "created_by": "string",\n "updated_at": "string",\n "updated_by": "string"\n },\n "_manifest": ["123e4567-e89b-12d3-a456-426614174000"]\n }\n ],\n "pagination": {\n "total": 0,\n "page": 0,\n "pageSize": 0\n }\n}\n```\n\n</details>\n\n---\n\n### `getInstallation`\n\nRetrieve details of an installed app by its ID.\n\n`GET /v1/app/{appId}`\n\n```ts\nconst { data } = await client.getInstallation({\n appId: \'example\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "app_id": "string",\n "installer_org_id": "string",\n "owner_org_id": "string",\n "enabled": true,\n "name": "string",\n "option_values": [\n {\n "component_id": "string",\n "options": [\n {\n "key": "string",\n "value": {}\n }\n ]\n }\n ],\n "components": [\n {\n "component_type": "CUSTOM_JOURNEY_BLOCK",\n "configuration": {\n "override_dev_mode": {\n "override_url": "http://localhost:3000"\n },\n "component_url": "https://cdn.apps.com/123/v1.0.0/bundle.js",\n "component_tag": "string",\n "component_args": [\n {\n "type": "text"\n }\n ],\n "component_size": 0,\n "component_mapping": {}\n }\n }\n ],\n "installed_version": "string",\n "role": "string",\n "blueprint_ref": {\n "manifest_id": "string",\n "job_id": "string",\n "source_blueprint_file": "string"\n },\n "installation_audit": {\n "created_at": "string",\n "created_by": "string",\n "updated_at": "string",\n "updated_by": "string"\n },\n "_manifest": ["123e4567-e89b-12d3-a456-426614174000"]\n}\n```\n\n</details>\n\n---\n\n### `install`\n\nUpsert app installation by its ID.\n\n`POST /v1/app/{appId}`\n\n```ts\nconst { data } = await client.install(\n {\n appId: \'example\',\n },\n {\n version: \'string\',\n option_values: [\n {\n component_id: \'string\',\n options: [\n {\n key: \'string\',\n value: {}\n }\n ]\n }\n ],\n _manifest: [\'123e4567-e89b-12d3-a456-426614174000\']\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "app_id": "string",\n "installer_org_id": "string",\n "owner_org_id": "string",\n "enabled": true,\n "name": "string",\n "option_values": [\n {\n "component_id": "string",\n "options": [\n {\n "key": "string",\n "value": {}\n }\n ]\n }\n ],\n "components": [\n {\n "component_type": "CUSTOM_JOURNEY_BLOCK",\n "configuration": {\n "override_dev_mode": {\n "override_url": "http://localhost:3000"\n },\n "component_url": "https://cdn.apps.com/123/v1.0.0/bundle.js",\n "component_tag": "string",\n "component_args": [\n {\n "type": "text"\n }\n ],\n "component_size": 0,\n "component_mapping": {}\n }\n }\n ],\n "installed_version": "string",\n "role": "string",\n "blueprint_ref": {\n "manifest_id": "string",\n "job_id": "string",\n "source_blueprint_file": "string"\n },\n "installation_audit": {\n "created_at": "string",\n "created_by": "string",\n "updated_at": "string",\n "updated_by": "string"\n },\n "_manifest": ["123e4567-e89b-12d3-a456-426614174000"]\n}\n```\n\n</details>\n\n---\n\n### `patchInstallation`\n\nPatch an installed app by its ID.\n\n`PATCH /v1/app/{appId}`\n\n```ts\nconst { data } = await client.patchInstallation(\n {\n appId: \'example\',\n },\n {\n version: \'string\',\n option_values: [\n {\n component_id: \'string\',\n options: [\n {\n key: \'string\',\n value: {}\n }\n ]\n }\n ],\n _manifest: [\'123e4567-e89b-12d3-a456-426614174000\']\n },\n)\n```\n\n---\n\n### `uninstall`\n\nUninstall an app by its ID.\n\n`DELETE /v1/app/{appId}`\n\n```ts\nconst { data } = await client.uninstall({\n appId: \'example\',\n})\n```\n\n---\n\n### `promoteVersion`\n\nUpdate an installed app to a new version\n\n`POST /v1/app/{appId}/promote-to/{version}`\n\n```ts\nconst { data } = await client.promoteVersion({\n appId: \'example\',\n version: \'example\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "app_id": "string",\n "installer_org_id": "string",\n "owner_org_id": "string",\n "enabled": true,\n "name": "string",\n "option_values": [\n {\n "component_id": "string",\n "options": [\n {\n "key": "string",\n "value": {}\n }\n ]\n }\n ],\n "components": [\n {\n "component_type": "CUSTOM_JOURNEY_BLOCK",\n "configuration": {\n "override_dev_mode": {\n "override_url": "http://localhost:3000"\n },\n "component_url": "https://cdn.apps.com/123/v1.0.0/bundle.js",\n "component_tag": "string",\n "component_args": [\n {\n "type": "text"\n }\n ],\n "component_size": 0,\n "component_mapping": {}\n }\n }\n ],\n "installed_version": "string",\n "role": "string",\n "blueprint_ref": {\n "manifest_id": "string",\n "job_id": "string",\n "source_blueprint_file": "string"\n },\n "installation_audit": {\n "created_at": "string",\n "created_by": "string",\n "updated_at": "string",\n "updated_by": "string"\n },\n "_manifest": ["123e4567-e89b-12d3-a456-426614174000"]\n}\n```\n\n</details>\n\n---\n\n### `ingestEvent`\n\nInternal endpoint for services to submit app events for analytic purposes\n\n`POST /v1/app-events`\n\n```ts\nconst { data } = await client.ingestEvent(\n null,\n {\n app_id: \'string\',\n version: \'string\',\n event_id: \'string\',\n component_id: \'string\',\n timestamp: \'string\',\n correlation_id: \'string\',\n event_type: \'ERROR\',\n source: \'CUSTOM_JOURNEY_BLOCK\',\n actor: {\n org_id: \'string\',\n user_id: \'string\',\n type: \'user\'\n },\n details: {}\n },\n)\n```\n\n---\n\n## Schemas\n\n### `Role`\n\n```ts\ntype Role = {\n id?: string\n grants?: Array<{\n action: string\n resource?: string\n }>\n}\n```\n\n### `Options`\n\nOptions for the component configuration\n\n```ts\ntype Options = {\n key: string\n label?: string\n required?: boolean\n description?: string\n value?: unknown\n type: "text" | "number" | "boolean" | "secret"\n}\n```\n\n### `Option`\n\n```ts\ntype Option = {\n key: string\n value: unknown\n}\n```\n\n### `OptionsRef`\n\n```ts\ntype OptionsRef = {\n component_id: string\n options: Array<{\n key: string\n value: unknown\n }>\n}\n```\n\n### `S3Reference`\n\n```ts\ntype S3Reference = {\n bucket: string\n key: string\n}\n```\n\n### `ComponentType`\n\nType of app component\n\n```ts\ntype ComponentType = "CUSTOM_JOURNEY_BLOCK" | "CUSTOM_PORTAL_BLOCK" | "PORTAL_EXTENSION" | "CUSTOM_FLOW_ACTION" | "ERP_INFORM_TOOLKIT" | "CUSTOM_CAPABILITY" | "EXTERNAL_PRODUCT_CATALOG" | "CUSTOM_PAGE"\n```\n\n### `Author`\n\n```ts\ntype Author = {\n name?: string\n company: string\n email?: string\n}\n```\n\n### `NotificationConfig`\n\n```ts\ntype NotificationConfig = {\n email?: string // email\n events?: "app.installed" | "app.uninstalled"[]\n}\n```\n\n### `NotificationEvent`\n\n```ts\ntype NotificationEvent = "app.installed" | "app.uninstalled"\n```\n\n### `BaseComponentCommon`\n\n```ts\ntype BaseComponentCommon = {\n id: string\n name?: {\n en?: string\n de: string\n }\n description?: {\n en?: string\n de: string\n }\n options?: Array<{\n key: string\n label?: string\n required?: boolean\n description?: string\n value?: unknown\n type: "text" | "number" | "boolean" | "secret"\n }>\n surfaces?: object\n}\n```\n\n### `BaseComponent`\n\n```ts\ntype BaseComponent = {\n id: string\n name?: {\n en?: string\n de: string\n }\n description?: {\n en?: string\n de: string\n }\n options?: Array<{\n key: string\n label?: string\n required?: boolean\n description?: string\n value?: unknown\n type: "text" | "number" | "boolean" | "secret"\n }>\n surfaces?: object\n}\n```\n\n### `CustomCapabilityComponent`\n\n```ts\ntype CustomCapabilityComponent = {\n component_type: "CUSTOM_CAPABILITY"\n configuration: {\n type?: "tab" | "group"\n allowed_schemas?: string[]\n }\n surfaces?: {\n capability_config?: {\n app_url?: { ... }\n zip_url?: { ... }\n override_url?: { ... }\n }\n }\n}\n```\n\n### `CustomPageComponent`\n\n```ts\ntype CustomPageComponent = {\n component_type: "CUSTOM_PAGE"\n configuration: {\n slug: string\n nav_label?: string\n nav_icon?: string\n nav_description?: string\n }\n surfaces?: {\n page?: {\n app_url?: { ... }\n zip_url?: { ... }\n override_url?: { ... }\n }\n }\n}\n```\n\n### `CustomPageConfig`\n\n```ts\ntype CustomPageConfig = {\n slug: string\n nav_label?: string\n nav_icon?: string\n nav_description?: string\n}\n```\n\n### `JourneyBlockComponent`\n\n```ts\ntype JourneyBlockComponent = {\n component_type: "CUSTOM_JOURNEY_BLOCK"\n configuration: {\n override_dev_mode?: {\n override_url?: { ... }\n }\n component_url: string\n component_tag: string\n component_args?: Array<{\n key: { ... }\n type: { ... }\n required?: { ... }\n description?: { ... }\n label: { ... }\n }>\n component_size?: number\n component_mapping?: Record<string, "string" | "boolean" | "date" | "datetime" | "link" | "number">\n }\n}\n```\n\n### `PortalBlockComponent`\n\n```ts\ntype PortalBlockComponent = {\n component_type: "CUSTOM_PORTAL_BLOCK"\n configuration: object\n surfaces?: {\n portal_block?: {\n app_url?: { ... }\n zip_url?: { ... }\n override_url?: { ... }\n supported_surfaces?: { ... }\n }\n }\n}\n```\n\n### `ErpInformToolkitComponent`\n\n```ts\ntype ErpInformToolkitComponent = {\n component_type: "ERP_INFORM_TOOLKIT"\n configuration: {\n type: "inbound" | "outbound"\n }\n}\n```\n\n### `CustomFlowActionComponent`\n\n```ts\ntype CustomFlowActionComponent = {\n component_type: "CUSTOM_FLOW_ACTION"\n configuration: {\n name?: string\n description?: string\n wait_for_callback?: boolean\n type: "external_integration"\n external_integration_settings?: {\n url?: { ... }\n headers?: { ... }\n }\n } | {\n name?: string\n description?: string\n wait_for_callback?: boolean\n type: "sandbox"\n sandbox_settings?: {\n code?: { ... }\n }\n }\n surfaces?: {\n flow_action_config?: {\n app_url?: { ... }\n zip_url?: { ... }\n override_url?: { ... }\n }\n }\n}\n```\n\n### `BaseCustomActionConfig`\n\n```ts\ntype BaseCustomActionConfig = {\n name?: string\n description?: string\n wait_for_callback?: boolean\n}\n```\n\n### `ExternalIntegrationCustomActionConfig`\n\n```ts\ntype ExternalIntegrationCustomActionConfig = {\n name?: string\n description?: string\n wait_for_callback?: boolean\n type: "external_integration"\n external_integration_settings?: {\n url?: string\n headers?: Record<string, unknown>\n }\n}\n```\n\n### `SandboxCustomActionConfig`\n\n```ts\ntype SandboxCustomActionConfig = {\n name?: string\n description?: string\n wait_for_callback?: boolean\n type: "sandbox"\n sandbox_settings?: {\n code?: string\n }\n}\n```\n\n### `CustomFlowConfig`\n\n```ts\ntype CustomFlowConfig = {\n name?: string\n description?: string\n wait_for_callback?: boolean\n type: "external_integration"\n external_integration_settings?: {\n url?: string\n headers?: Record<string, unknown>\n }\n} | {\n name?: string\n description?: string\n wait_for_callback?: boolean\n type: "sandbox"\n sandbox_settings?: {\n code?: string\n }\n}\n```\n\n### `ExternalProductCatalogComponent`\n\n```ts\ntype ExternalProductCatalogComponent = {\n component_type: "EXTERNAL_PRODUCT_CATALOG"\n configuration: {\n hooks?: Array<{\n id: { ... }\n name?: { ... }\n type: { ... }\n auth?: { ... }\n call: { ... }\n } | {\n id: { ... }\n name?: { ... }\n type: { ... }\n auth?: { ... }\n call: { ... }\n }>\n }\n}\n```\n\n### `ExternalProductCatalogConfig`\n\n```ts\ntype ExternalProductCatalogConfig = {\n hooks?: Array<{\n id: string\n name?: {\n en?: { ... }\n de: { ... }\n }\n type: "products"\n auth?: {\n method?: { ... }\n url: { ... }\n params?: { ... }\n headers?: { ... }\n body?: { ... }\n }\n call: {\n method?: { ... }\n url: { ... }\n params?: { ... }\n headers?: { ... }\n body?: { ... }\n }\n } | {\n id: string\n name?: {\n en?: { ... }\n de: { ... }\n }\n type: "product-recommendations"\n auth?: {\n method?: { ... }\n url: { ... }\n params?: { ... }\n headers?: { ... }\n body?: { ... }\n }\n call: {\n method?: { ... }\n url: { ... }\n params?: { ... }\n headers?: { ... }\n body?: { ... }\n }\n }>\n}\n```\n\n### `ExternalProductCatalogHookProducts`\n\nHook for getting products from an external catalog. This hook makes a call to retrieve product data from an external source. Check the docs or the response API call contract https://docs.api.epilot.io/pricing-api-external-catalog for more details.\n\n\n```ts\ntype ExternalProductCatalogHookProducts = {\n id: string\n name?: {\n en?: string\n de: string\n }\n type: "products"\n auth?: {\n method?: string\n url: string\n params?: Record<string, string>\n headers?: Record<string, string>\n body?: Record<string, unknown>\n }\n call: {\n method?: string\n url: string\n params?: Record<string, string>\n headers?: Record<string, string>\n body?: Record<string, unknown>\n }\n}\n```\n\n### `ExternalProductCatalogHookProductRecommendations`\n\nHook for getting product recommendations from an external catalog. This hook makes a call to retrieve product recommendations from an external source. Check the docs or the response API call contract https://docs.api.epilot.io/pricing-api-external-catalog for more details.\n\n\n```ts\ntype ExternalProductCatalogHookProductRecommendations = {\n id: string\n name?: {\n en?: string\n de: string\n }\n type: "product-recommendations"\n auth?: {\n method?: string\n url: string\n params?: Record<string, string>\n headers?: Record<string, string>\n body?: Record<string, unknown>\n }\n call: {\n method?: string\n url: string\n params?: Record<string, string>\n headers?: Record<string, string>\n body?: Record<string, unknown>\n }\n}\n```\n\n### `PortalExtensionComponent`\n\n```ts\ntype PortalExtensionComponent = {\n component_type: "PORTAL_EXTENSION"\n configuration: {\n hooks?: Array<{\n id: { ... }\n name?: { ... }\n type: { ... }\n auth?: { ... }\n call: { ... }\n use_static_ips?: { ... }\n secure_proxy?: { ... }\n } | {\n id: { ... }\n name?: { ... }\n type: { ... }\n auth?: { ... }\n call: { ... }\n assignment_mode?: { ... }\n contact_relation_attribute?: { ... }\n explanation?: { ... }\n use_static_ips?: { ... }\n secure_proxy?: { ... }\n } | {\n id: { ... }\n name?: { ... }\n type: { ... }\n intervals?: { ... }\n auth?: { ... }\n call: { ... }\n resolved?: { ... }\n use_static_ips?: { ... }\n secure_proxy?: { ... }\n } | {\n id: { ... }\n name?: { ... }\n type: { ... }\n intervals?: { ... }\n auth?: { ... }\n call: { ... }\n resolved?: { ... }\n use_static_ips?: { ... }\n secure_proxy?: { ... }\n } | {\n id: { ... }\n name?: { ... }\n type: { ... }\n intervals?: { ... }\n auth?: { ... }\n call: { ... }\n resolved?: { ... }\n use_static_ips?: { ... }\n secure_proxy?: { ... }\n } | {\n id: { ... }\n name?: { ... }\n type: { ... }\n plausibility_mode?: { ... }\n auth?: { ... }\n call: { ... }\n resolved: { ... }\n use_static_ips?: { ... }\n secure_proxy?: { ... }\n }>\n links?: Array<{\n id: { ... }\n name: { ... }\n description?: { ... }\n type: { ... }\n condition?: { ... }\n auth?: { ... }\n redirect: { ... }\n }>\n }\n}\n```\n\n### `PortalExtensionConfig`\n\n```ts\ntype PortalExtensionConfig = {\n hooks?: Array<{\n id: string\n name?: {\n en?: { ... }\n de: { ... }\n }\n type: "registrationIdentifiersCheck"\n auth?: {\n method?: { ... }\n url: { ... }\n params?: { ... }\n headers?: { ... }\n body?: { ... }\n cache?: { ... }\n }\n call: {\n method?: { ... }\n url: { ... }\n params?: { ... }\n headers: { ... }\n body?: { ... }\n result: { ... }\n }\n use_static_ips?: boolean\n secure_proxy?: {\n integration_id: { ... }\n use_case_slug: { ... }\n }\n } | {\n id: string\n name?: {\n en?: { ... }\n de: { ... }\n }\n type: "contractIdentification"\n auth?: {\n method?: { ... }\n url: { ... }\n params?: { ... }\n headers?: { ... }\n body?: { ... }\n cache?: { ... }\n }\n call: {\n method?: { ... }\n url: { ... }\n params?: { ... }\n headers: { ... }\n body?: { ... }\n result?: { ... }\n }\n assignment_mode?: "contracts" | "contact_to_contracts" | "contact_to_portal_user"\n contact_relation_attribute?: string\n explanation?: {\n en: { ... }\n }\n use_static_ips?: boolean\n secure_proxy?: {\n integration_id: { ... }\n use_case_slug: { ... }\n }\n } | {\n id: string\n name?: {\n en?: { ... }\n de: { ... }\n }\n type: "priceDataRetrieval"\n intervals?: "PT15M" | "PT1H" | "P1D" | "P1M"[]\n auth?: {\n method?: { ... }\n url: { ... }\n params?: { ... }\n headers?: { ... }\n body?: { ... }\n cache?: { ... }\n }\n call: {\n method?: { ... }\n url: { ... }\n params?: { ... }\n headers?: { ... }\n body?: { ... }\n }\n resolved?: {\n dataPath?: { ... }\n }\n use_static_ips?: boolean\n secure_proxy?: {\n integration_id: { ... }\n use_case_slug: { ... }\n }\n } | {\n id: string\n name?: {\n en?: { ... }\n de: { ... }\n }\n type: "consumptionDataRetrieval"\n // ...\n}\n```\n\n### `PortalExtensionHookRegistrationIdentifiersCheck`\n\nHook that replaces the built-in registration identifiers check. This hook makes a POST call whenever a user is trying to register to find the corresponding contact. The expected response to the call is:\n - 200 with contact id if exactly one contact is found\n - 404 if no contact is found or more th\n\n```ts\ntype PortalExtensionHookRegistrationIdentifiersCheck = {\n id: string\n name?: {\n en?: string\n de: string\n }\n type: "registrationIdentifiersCheck"\n auth?: {\n method?: string\n url: string\n params?: Record<string, string>\n headers?: Record<string, string>\n body?: Record<string, unknown>\n cache?: {\n key: { ... }\n ttl: { ... }\n }\n }\n call: {\n method?: string\n url: string\n params?: Record<string, string>\n headers: Record<string, string>\n body?: object\n result: string\n }\n use_static_ips?: boolean\n secure_proxy?: {\n integration_id: string // uuid\n use_case_slug: string\n }\n}\n```\n\n### `PortalExtensionHookContractIdentification`\n\nHook that replaces the built-in Contract identification for self-assignment. This hook involves an HTTP request whenever a user is trying to self-assign Contract(s).\nThe expected response http status code to the call is:\n - 200 if found\n - 404 if not found\n\nThe following assignment modes are suppo\n\n```ts\ntype PortalExtensionHookContractIdentification = {\n id: string\n name?: {\n en?: string\n de: string\n }\n type: "contractIdentification"\n auth?: {\n method?: string\n url: string\n params?: Record<string, string>\n headers?: Record<string, string>\n body?: Record<string, unknown>\n cache?: {\n key: { ... }\n ttl: { ... }\n }\n }\n call: {\n method?: string\n url: string\n params?: Record<string, string>\n headers: Record<string, string>\n body?: object\n result?: string\n }\n assignment_mode?: "contracts" | "contact_to_contracts" | "contact_to_portal_user"\n contact_relation_attribute?: string\n explanation?: {\n en: string\n }\n use_static_ips?: boolean\n secure_proxy?: {\n integration_id: string // uuid\n use_case_slug: string\n }\n}\n```\n\n### `PortalExtensionHookMeterReadingPlausibilityCheck`\n\nHook that checks the plausibility of meter readings before they are saved. This hook makes a POST call whenever a user is trying to save a meter reading. The expected response to the call is:\n - 200:\n If meter reading is plausible, the response should contain:\n - valid: true\n If meter re\n\n```ts\ntype PortalExtensionHookMeterReadingPlausibilityCheck = {\n id: string\n name?: {\n en?: string\n de: string\n }\n type: "meterReadingPlausibilityCheck"\n plausibility_mode?: "check" | "range"\n auth?: {\n method?: string\n url: string\n params?: Record<string, string>\n headers?: Record<string, string>\n body?: Record<string, unknown>\n cache?: {\n key: { ... }\n ttl: { ... }\n }\n }\n call: {\n url: string\n body: Record<string, unknown>\n headers: Record<string, string>\n }\n resolved: {\n dataPath?: string\n counter_identifiers?: Record<string, string>\n valid?: string\n upper_limit?: string\n lower_limit?: string\n }\n use_static_ips?: boolean\n secure_proxy?: {\n integration_id: string // uuid\n use_case_slug: string\n }\n}\n```\n\n### `PortalExtensionHookPriceDataRetrieval`\n\nHook that will allow using the specified source as data for price visualizations. This hook is triggered to fetch the data. Format of the request and response has to follow the following specification: TBD. The expected response to the call is:\n - 200 with the time series data\n\n\n```ts\ntype PortalExtensionHookPriceDataRetrieval = {\n id: string\n name?: {\n en?: string\n de: string\n }\n type: "priceDataRetrieval"\n intervals?: "PT15M" | "PT1H" | "P1D" | "P1M"[]\n auth?: {\n method?: string\n url: string\n params?: Record<string, string>\n headers?: Record<string, string>\n body?: Record<string, unknown>\n cache?: {\n key: { ... }\n ttl: { ... }\n }\n }\n call: {\n method?: string\n url: string\n params?: Record<string, string>\n headers?: Record<string, string>\n body?: Record<string, unknown>\n }\n resolved?: {\n dataPath?: string\n }\n use_static_ips?: boolean\n secure_proxy?: {\n integration_id: string // uuid\n use_case_slug: string\n }\n}\n```\n\n### `PortalExtensionHookConsumptionDataRetrieval`\n\nHook that will allow using the specified source as data for consumption visualizations. This hook is triggered to fetch the data. Format of the request and response has to follow the following specification: TBD. The expected response to the call is:\n - 200 with the time series data\n\n\n```ts\ntype PortalExtensionHookConsumptionDataRetrieval = {\n id: string\n name?: {\n en?: string\n de: string\n }\n type: "consumptionDataRetrieval"\n intervals?: "PT15M" | "PT1H" | "P1D" | "P1M"[]\n auth?: {\n method?: string\n url: string\n params?: Record<string, string>\n headers?: Record<string, string>\n body?: Record<string, unknown>\n cache?: {\n key: { ... }\n ttl: { ... }\n }\n }\n call: {\n method?: string\n url: string\n params?: Record<string, string>\n headers?: Record<string, string>\n body?: Record<string, unknown>\n }\n resolved?: {\n dataPath?: string\n }\n use_static_ips?: boolean\n secure_proxy?: {\n integration_id: string // uuid\n use_case_slug: string\n }\n}\n```\n\n### `PortalExtensionHookCostDataRetrieval`\n\nHook that will allow using the specified source as data for consumption visualizations. This hook is triggered to fetch the data. Format of the request and response has to follow the following specification: TBD. The expected response to the call is:\n - 200 with the time series data\n\n\n```ts\ntype PortalExtensionHookCostDataRetrieval = {\n id: string\n name?: {\n en?: string\n de: string\n }\n type: "costDataRetrieval"\n intervals?: "PT15M" | "PT1H" | "P1D" | "P1M"[]\n auth?: {\n method?: string\n url: string\n params?: Record<string, string>\n headers?: Record<string, string>\n body?: Record<string, unknown>\n cache?: {\n key: { ... }\n ttl: { ... }\n }\n }\n call: {\n method?: string\n url: string\n params?: Record<string, string>\n headers?: Record<string, string>\n body?: Record<string, unknown>\n }\n resolved?: {\n dataPath?: string\n }\n use_static_ips?: boolean\n secure_proxy?: {\n integration_id: string // uuid\n use_case_slug: string\n }\n}\n```\n\n### `PortalExtensionSeamlessLink`\n\n```ts\ntype PortalExtensionSeamlessLink = {\n id: string\n name: {\n en?: string\n de: string\n }\n description?: {\n en?: string\n de: string\n }\n type: "seamless"\n condition?: string\n auth?: {\n method?: string\n url: string\n params?: Record<string, string>\n headers?: Record<string, string>\n body?: Record<string, unknown>\n cache?: {\n key: { ... }\n ttl: { ... }\n }\n }\n redirect: {\n url?: string\n params?: Record<string, string>\n }\n}\n```\n\n### `PortalExtensionAuthBlock`\n\n```ts\ntype PortalExtensionAuthBlock = {\n method?: string\n url: string\n params?: Record<string, string>\n headers?: Record<string, string>\n body?: Record<string, unknown>\n cache?: {\n key: string\n ttl: string\n }\n}\n```\n\n### `PortalExtensionSecureProxy`\n\nIf set, requests are routed through the ERP Integration secure proxy. Mutually exclusive with use_static_ips.\n\n```ts\ntype PortalExtensionSecureProxy = {\n integration_id: string // uuid\n use_case_slug: string\n}\n```\n\n### `ExternalProductCatalogAuthBlock`\n\n```ts\ntype ExternalProductCatalogAuthBlock = {\n method?: string\n url: string\n params?: Record<string, string>\n headers?: Record<string, string>\n body?: Record<string, unknown>\n}\n```\n\n### `OverrideDevMode`\n\nOverride URL when app is in dev mode\n\n```ts\ntype OverrideDevMode = {\n override_url?: string\n}\n```\n\n### `JourneyBlockConfig`\n\n```ts\ntype JourneyBlockConfig = {\n override_dev_mode?: {\n override_url?: string\n }\n component_url: string\n component_tag: string\n component_args?: Array<{\n key: string\n type: "text" | "boolean" | "enum"\n required?: boolean\n description?: {\n en?: { ... }\n de: { ... }\n }\n label: {\n en?: { ... }\n de: { ... }\n }\n }>\n component_size?: number\n component_mapping?: Record<string, "string" | "boolean" | "date" | "datetime" | "link" | "number">\n}\n```\n\n### `PortalBlockConfig`\n\n```ts\ntype PortalBlockConfig = object\n```\n\n### `AppBridgeSurfaceConfig`\n\n```ts\ntype AppBridgeSurfaceConfig = {\n app_url?: string\n zip_url?: string\n override_url?: string\n}\n```\n\n### `PortalBlockSurfaceConfig`\n\n```ts\ntype PortalBlockSurfaceConfig = {\n app_url?: string\n zip_url?: string\n override_url?: string\n supported_surfaces?: "main" | "footer_inline" | "footer_left_absolute" | "footer_right_absolute"[]\n}\n```\n\n### `JourneyBlockComponentArgs`\n\n```ts\ntype JourneyBlockComponentArgs = {\n key: string\n type: "text" | "boolean" | "enum"\n required?: boolean\n description?: {\n en?: string\n de: string\n }\n label: {\n en?: string\n de: string\n }\n}\n```\n\n### `TextArg`\n\n```ts\ntype TextArg = {\n type?: "text"\n}\n```\n\n### `BooleanArg`\n\n```ts\ntype BooleanArg = {\n type?: "boolean"\n}\n```\n\n### `EnumArg`\n\n```ts\ntype EnumArg = {\n type?: "enum"\n isMulti?: boolean\n options: Array<{\n id: string\n label: {\n en?: { ... }\n de: { ... }\n }\n }>\n}\n```\n\n### `BillingFrequency`\n\nHow often the subscription is billed\n\n```ts\ntype BillingFrequency = "MONTHLY" | "QUARTERLY" | "YEARLY" | "CUSTOM"\n```\n\n### `Pricing`\n\n```ts\ntype Pricing = {\n pricing_type?: "FREE" | "SUBSCRIPTION" | "USAGE_BASED" | "ONE_TIME" | "CUSTOM" | "UNKNOWN"\n billing_frequency?: "MONTHLY" | "QUARTERLY" | "YEARLY" | "CUSTOM"\n}\n```\n\n### `Audit`\n\n```ts\ntype Audit = {\n created_at?: string\n created_by?: string\n updated_at?: string\n updated_by?: string\n}\n```\n\n### `Review`\n\n```ts\ntype Review = {\n version?: string\n review_status?: "approved" | "rejected" | "pending"\n requested_at?: string\n requested_by?: string\n technical_contact?: string\n marketing_contact?: string\n demo_url?: string\n}\n```\n\n### `ConfigurationMetadata`\n\nBasic metadata about your app configuration which does not get versioned\n\n```ts\ntype ConfigurationMetadata = {\n app_id: string\n name: string\n author?: {\n name?: string\n company: string\n email?: string\n }\n dev_mode?: boolean\n versions: string[]\n public_versions?: string[]\n support_email?: string\n latest_version: string\n category?: string\n icon_url?: string\n documentation_url?: string\n description: {\n en?: string\n de: string\n }\n notifications?: {\n email?: string // email\n events?: "app.installed" | "app.uninstalled"[]\n }\n owner_org_id: string\n internal?: boolean\n pricing?: {\n pricing_type?: "FREE" | "SUBSCRIPTION" | "USAGE_BASED" | "ONE_TIME" | "CUSTOM" | "UNKNOWN"\n billing_frequency?: "MONTHLY" | "QUARTERLY" | "YEARLY" | "CUSTOM"\n }\n configuration_audit?: {\n created_at?: string\n created_by?: string\n updated_at?: string\n updated_by?: string\n }\n}\n```\n\n### `ConfigurationVersion`\n\nConfiguration data about your app which is versionable\n\n```ts\ntype ConfigurationVersion = {\n app_id: string\n owner_org_id: string\n components: Array<{\n id: string\n name?: {\n en?: { ... }\n de: { ... }\n }\n description?: {\n en?: { ... }\n de: { ... }\n }\n options?: Array<{\n key: { ... }\n label?: { ... }\n required?: { ... }\n description?: { ... }\n value?: { ... }\n type: { ... }\n }>\n surfaces?: object\n }>\n visibility?: "public" | "private"\n public?: boolean\n pending?: boolean\n version: string\n is_beta?: boolean\n deprecated_at?: string\n changelog?: string\n review_status?: "approved" | "rejected" | "pending"\n role?: {\n id?: string\n grants?: Array<{\n action: { ... }\n resource?: { ... }\n }>\n }\n blueprint_ref?: {\n manifest_id?: string\n job_id?: string\n source_blueprint_file?: string\n }\n version_audit: {\n created_at?: string\n created_by?: string\n updated_at?: string\n updated_by?: string\n versioned_at?: string\n versioned_by?: string\n }\n}\n```\n\n### `Grants`\n\nRequired grants for the app in order to call APIs for the installing tenant\n\n```ts\ntype Grants = Array<{\n action: string\n resource?: string\n}>\n```\n\n### `BlueprintRef`\n\n```ts\ntype BlueprintRef = {\n manifest_id?: string\n job_id?: string\n source_blueprint_file?: string\n}\n```\n\n### `Installation`\n\nInformation about the installed app. Has configuration data of the installed version\n\n```ts\ntype Installation = {\n app_id: string\n installer_org_id: string\n owner_org_id?: string\n enabled: boolean\n name: string\n option_values?: Array<{\n component_id: string\n options: Array<{\n key: { ... }\n value: { ... }\n }>\n }>\n components: Array<{\n id: string\n name?: {\n en?: { ... }\n de: { ... }\n }\n description?: {\n en?: { ... }\n de: { ... }\n }\n options?: Array<{\n key: { ... }\n label?: { ... }\n required?: { ... }\n description?: { ... }\n value?: { ... }\n type: { ... }\n }>\n surfaces?: object\n }>\n installed_version: string\n role?: string\n blueprint_ref?: {\n manifest_id?: string\n job_id?: string\n source_blueprint_file?: string\n }\n installation_audit?: {\n created_at?: string\n created_by?: string\n updated_at?: string\n updated_by?: string\n }\n _manifest?: string // uuid[]\n}\n```\n\n### `PublicConfiguration`\n\nPublic configuration of the published app\n\n```ts\ntype PublicConfiguration = {\n app_id: string\n support_email?: string\n owner_org_id: string\n name: string\n author?: {\n name?: string\n company: string\n email?: string\n }\n dev_mode?: boolean\n category?: string\n icon_url?: string\n documentation_url?: string\n description?: {\n en?: string\n de: string\n }\n pricing?: {\n pricing_type?: "FREE" | "SUBSCRIPTION" | "USAGE_BASED" | "ONE_TIME" | "CUSTOM" | "UNKNOWN"\n billing_frequency?: "MONTHLY" | "QUARTERLY" | "YEARLY" | "CUSTOM"\n }\n components: Array<{\n id: string\n name?: {\n en?: { ... }\n de: { ... }\n }\n description?: {\n en?: { ... }\n de: { ... }\n }\n options?: Array<{\n key: { ... }\n label?: { ... }\n required?: { ... }\n description?: { ... }\n value?: { ... }\n type: { ... }\n }>\n surfaces?: object\n }>\n is_beta?: boolean\n deprecated_at?: string\n version: string\n role?: {\n id?: string\n grants?: Array<{\n action: { ... }\n resource?: { ... }\n }>\n }\n blueprint_ref?: {\n manifest_id?: string\n job_id?: string\n source_blueprint_file?: string\n }\n latest_version?: string\n public?: boolean\n versions?: Array<{\n app_id: string\n owner_org_id: string\n components: Array<{\n id: { ... }\n name?: { ... }\n description?: { ... }\n options?: { ... }\n surfaces?: { ... }\n }>\n visibility?: "public" | "private"\n public?: boolean\n pending?: boolean\n version: string\n is_beta?: boolean\n deprecated_at?: string\n changelog?: string\n review_status?: "approved" | "rejected" | "pending"\n role?: {\n id?: { ... }\n grants?: { ... }\n }\n blueprint_ref?: {\n manifest_id?: { ... }\n job_id?: { ... }\n source_blueprint_file?: { ... }\n }\n version_audit: {\n created_at?: { ... }\n created_by?: { ... }\n updated_at?: { ... }\n updated_by?: { ... }\n versioned_at?: { ... }\n versioned_by?: { ... }\n }\n }>\n}\n```\n\n### `Configuration`\n\nConfiguration of the published app\n\n```ts\ntype Configuration = {\n app_id: string\n name: string\n author?: {\n name?: string\n company: string\n email?: string\n }\n dev_mode?: boolean\n versions: string[]\n public_versions?: string[]\n support_email?: string\n latest_version: string\n category?: string\n icon_url?: string\n documentation_url?: string\n description: {\n en?: string\n de: string\n }\n notifications?: {\n email?: string // email\n events?: "app.installed" | "app.uninstalled"[]\n }\n owner_org_id: string\n internal?: boolean\n pricing?: {\n pricing_type?: "FREE" | "SUBSCRIPTION" | "USAGE_BASED" | "ONE_TIME" | "CUSTOM" | "UNKNOWN"\n billing_frequency?: "MONTHLY" | "QUARTERLY" | "YEARLY" | "CUSTOM"\n }\n configuration_audit?: {\n created_at?: string\n created_by?: string\n updated_at?: string\n updated_by?: string\n }\n components: Array<{\n id: string\n name?: {\n en?: { ... }\n de: { ... }\n }\n description?: {\n en?: { ... }\n de: { ... }\n }\n options?: Array<{\n key: { ... }\n label?: { ... }\n required?: { ... }\n description?: { ... }\n value?: { ... }\n type: { ... }\n }>\n surfaces?: object\n }>\n visibility?: "public" | "private"\n public?: boolean\n pending?: boolean\n version: string\n is_beta?: boolean\n deprecated_at?: string\n changelog?: string\n review_status?: "approved" | "rejected" | "pending"\n role?: {\n id?: string\n grants?: Array<{\n action: { ... }\n resource?: { ... }\n }>\n }\n blueprint_ref?: {\n manifest_id?: string\n job_id?: string\n source_blueprint_file?: string\n }\n version_audit: {\n created_at?: string\n created_by?: string\n updated_at?: string\n updated_by?: string\n versioned_at?: string\n versioned_by?: string\n }\n}\n```\n\n### `TranslatedString`\n\n```ts\ntype TranslatedString = {\n en?: string\n de: string\n}\n```\n\n### `CallerIdentity`\n\n```ts\ntype CallerIdentity = {\n name?: unknown\n org_id: string\n user_id?: string\n token_id?: string\n}\n```\n\n### `BatchEventRequest`\n\n```ts\ntype BatchEventRequest = {\n events: Array<{\n app_id: string\n version: string\n event_id?: string\n component_id: string\n timestamp?: string\n correlation_id?: string\n event_type: "ERROR" | "WARNING" | "INFO"\n source: "CUSTOM_JOURNEY_BLOCK" | "CUSTOM_PORTAL_BLOCK" | "PORTAL_EXTENSION" | "CUSTOM_FLOW_ACTION" | "ERP_INFORM_TOOLKIT" | "CUSTOM_CAPABILITY" | "EXTERNAL_PRODUCT_CATALOG" | "CUSTOM_PAGE"\n actor: {\n org_id?: { ... }\n user_id?: { ... }\n type: { ... }\n }\n details?: Record<string, unknown>\n }>\n}\n```\n\n### `Actor`\n\n```ts\ntype Actor = {\n org_id?: string\n user_id?: string\n type: "user" | "system"\n}\n```\n\n### `AppEventData`\n\n```ts\ntype AppEventData = {\n app_id: string\n version: string\n event_id?: string\n component_id: string\n timestamp?: string\n correlation_id?: string\n event_type: "ERROR" | "WARNING" | "INFO"\n source: "CUSTOM_JOURNEY_BLOCK" | "CUSTOM_PORTAL_BLOCK" | "PORTAL_EXTENSION" | "CUSTOM_FLOW_ACTION" | "ERP_INFORM_TOOLKIT" | "CUSTOM_CAPABILITY" | "EXTERNAL_PRODUCT_CATALOG" | "CUSTOM_PAGE"\n actor: {\n org_id?: string\n user_id?: string\n type: "user" | "system"\n }\n details?: Record<string, unknown>\n}\n```\n\n### `EventsQuery`\n\n```ts\ntype EventsQuery = {\n time_range?: {\n start?: string // date-time\n end?: string // date-time\n preset?: "1h" | "6h" | "24h" | "7d" | "30d"\n }\n filters?: {\n source?: "CUSTOM_JOURNEY_BLOCK" | "CUSTOM_PORTAL_BLOCK" | "PORTAL_EXTENSION" | "CUSTOM_FLOW_ACTION" | "ERP_INFORM_TOOLKIT" | "CUSTOM_CAPABILITY" | "EXTERNAL_PRODUCT_CATALOG" | "CUSTOM_PAGE"[]\n component_id?: string[]\n event_type?: "ERROR" | "WARNING" | "INFO"[]\n correlation_id?: string\n }\n aggregation?: {\n group_by?: "source" | "component_id" | "event_type" | "hour" | "day"[]\n metrics?: "count" | "error_rate" | "unique_users"[]\n }\n pagination?: {\n page?: number\n page_size?: number\n }\n sort?: {\n field?: "timestamp" | "event_type" | "component_id"\n order?: "asc" | "desc"\n }\n}\n```\n\n### `EventsQueryResponse`\n\n```ts\ntype EventsQueryResponse = {\n query?: {\n time_range?: {\n start?: { ... }\n end?: { ... }\n preset?: { ... }\n }\n filters?: {\n source?: { ... }\n component_id?: { ... }\n event_type?: { ... }\n correlation_id?: { ... }\n }\n aggregation?: {\n group_by?: { ... }\n metrics?: { ... }\n }\n pagination?: {\n page?: { ... }\n page_size?: { ... }\n }\n sort?: {\n field?: { ... }\n order?: { ... }\n }\n }\n results?: {\n type?: "raw"\n events?: Array<{\n app_id: { ... }\n version: { ... }\n event_id?: { ... }\n component_id: { ... }\n timestamp?: { ... }\n correlation_id?: { ... }\n event_type: { ... }\n source: { ... }\n actor: { ... }\n details?: { ... }\n }>\n } | {\n type?: "aggregated"\n groups?: Array<{\n dimensions?: { ... }\n metrics?: { ... }\n }>\n }\n pagination?: {\n page?: number\n page_size?: number\n total_items?: number\n has_next?: boolean\n }\n}\n```\n\n### `RawEvents`\n\n```ts\ntype RawEvents = {\n type?: "raw"\n events?: Array<{\n app_id: string\n version: string\n event_id?: string\n component_id: string\n timestamp?: string\n correlation_id?: string\n event_type: "ERROR" | "WARNING" | "INFO"\n source: "CUSTOM_JOURNEY_BLOCK" | "CUSTOM_PORTAL_BLOCK" | "PORTAL_EXTENSION" | "CUSTOM_FLOW_ACTION" | "ERP_INFORM_TOOLKIT" | "CUSTOM_CAPABILITY" | "EXTERNAL_PRODUCT_CATALOG" | "CUSTOM_PAGE"\n actor: {\n org_id?: { ... }\n user_id?: { ... }\n type: { ... }\n }\n details?: Record<string, unknown>\n }>\n}\n```\n\n### `AggregatedEvents`\n\n```ts\ntype AggregatedEvents = {\n type?: "aggregated"\n groups?: Array<{\n dimensions?: Record<string, unknown>\n metrics?: {\n count?: { ... }\n error_rate?: { ... }\n }\n }>\n}\n```\n';
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
exports.default = app_default;
|
|
@@ -413,6 +413,10 @@ declare namespace Components {
|
|
|
413
413
|
* ID of the job that created the blueprint
|
|
414
414
|
*/
|
|
415
415
|
job_id?: string;
|
|
416
|
+
/**
|
|
417
|
+
* S3 key of a pre-exported blueprint zip used for cross-org installs
|
|
418
|
+
*/
|
|
419
|
+
source_blueprint_file?: string;
|
|
416
420
|
}
|
|
417
421
|
export interface BooleanArg {
|
|
418
422
|
type?: "boolean";
|
|
@@ -1356,9 +1360,9 @@ declare namespace Components {
|
|
|
1356
1360
|
*/
|
|
1357
1361
|
override_url?: string;
|
|
1358
1362
|
/**
|
|
1359
|
-
* Define which
|
|
1363
|
+
* Define which surfaces of the portal this block can be placed in
|
|
1360
1364
|
*/
|
|
1361
|
-
|
|
1365
|
+
supported_surfaces?: ("main" | "footer_inline" | "footer_left_absolute" | "footer_right_absolute")[];
|
|
1362
1366
|
}
|
|
1363
1367
|
export interface PortalExtensionAuthBlock {
|
|
1364
1368
|
/**
|
|
@@ -413,6 +413,10 @@ declare namespace Components {
|
|
|
413
413
|
* ID of the job that created the blueprint
|
|
414
414
|
*/
|
|
415
415
|
job_id?: string;
|
|
416
|
+
/**
|
|
417
|
+
* S3 key of a pre-exported blueprint zip used for cross-org installs
|
|
418
|
+
*/
|
|
419
|
+
source_blueprint_file?: string;
|
|
416
420
|
}
|
|
417
421
|
export interface BooleanArg {
|
|
418
422
|
type?: "boolean";
|
|
@@ -1356,9 +1360,9 @@ declare namespace Components {
|
|
|
1356
1360
|
*/
|
|
1357
1361
|
override_url?: string;
|
|
1358
1362
|
/**
|
|
1359
|
-
* Define which
|
|
1363
|
+
* Define which surfaces of the portal this block can be placed in
|
|
1360
1364
|
*/
|
|
1361
|
-
|
|
1365
|
+
supported_surfaces?: ("main" | "footer_inline" | "footer_left_absolute" | "footer_right_absolute")[];
|
|
1362
1366
|
}
|
|
1363
1367
|
export interface PortalExtensionAuthBlock {
|
|
1364
1368
|
/**
|
|
@@ -24,7 +24,7 @@ var globImport_docs = _chunkNJK5F5TFcjs.__glob.call(void 0, {
|
|
|
24
24
|
"./docs/address-suggestions.json": () => Promise.resolve().then(() => _interopRequireWildcard(require("./address-suggestions-IUQMYF27.cjs"))),
|
|
25
25
|
"./docs/address.json": () => Promise.resolve().then(() => _interopRequireWildcard(require("./address-HA4RMRNQ.cjs"))),
|
|
26
26
|
"./docs/ai-agents.json": () => Promise.resolve().then(() => _interopRequireWildcard(require("./ai-agents-PWHKNRCX.cjs"))),
|
|
27
|
-
"./docs/app.json": () => Promise.resolve().then(() => _interopRequireWildcard(require("./app-
|
|
27
|
+
"./docs/app.json": () => Promise.resolve().then(() => _interopRequireWildcard(require("./app-PL3IOROO.cjs"))),
|
|
28
28
|
"./docs/audit-logs.json": () => Promise.resolve().then(() => _interopRequireWildcard(require("./audit-logs-D2LFUA2R.cjs"))),
|
|
29
29
|
"./docs/automation.json": () => Promise.resolve().then(() => _interopRequireWildcard(require("./automation-3HGCK725.cjs"))),
|
|
30
30
|
"./docs/billing.json": () => Promise.resolve().then(() => _interopRequireWildcard(require("./billing-DUWDISHP.cjs"))),
|
|
@@ -24,7 +24,7 @@ var globImport_docs = __glob({
|
|
|
24
24
|
"./docs/address-suggestions.json": () => import("./address-suggestions-74244BAJ.js"),
|
|
25
25
|
"./docs/address.json": () => import("./address-QVJUGMOG.js"),
|
|
26
26
|
"./docs/ai-agents.json": () => import("./ai-agents-IZWFEUSH.js"),
|
|
27
|
-
"./docs/app.json": () => import("./app-
|
|
27
|
+
"./docs/app.json": () => import("./app-5KSVSKDU.js"),
|
|
28
28
|
"./docs/audit-logs.json": () => import("./audit-logs-5VXHOQ7S.js"),
|
|
29
29
|
"./docs/automation.json": () => import("./automation-72VGEJCY.js"),
|
|
30
30
|
"./docs/billing.json": () => import("./billing-IPALEAG2.js"),
|
package/dist/index.cjs
CHANGED
|
@@ -143,7 +143,7 @@ var _chunkRXMOHUBPcjs = require('./chunk-RXMOHUBP.cjs');
|
|
|
143
143
|
|
|
144
144
|
|
|
145
145
|
|
|
146
|
-
var
|
|
146
|
+
var _chunkDDMVRJDZcjs = require('./chunk-DDMVRJDZ.cjs');
|
|
147
147
|
|
|
148
148
|
|
|
149
149
|
var _chunkNJK5F5TFcjs = require('./chunk-NJK5F5TF.cjs');
|
|
@@ -210,7 +210,7 @@ var resolveClient = (params) => {
|
|
|
210
210
|
}
|
|
211
211
|
if (!entry.instance) {
|
|
212
212
|
const definition = entry.loader();
|
|
213
|
-
entry.instance =
|
|
213
|
+
entry.instance = _chunkDDMVRJDZcjs.createApiClient.call(void 0, {
|
|
214
214
|
definition,
|
|
215
215
|
token: state.token,
|
|
216
216
|
headers: state.globalHeaders,
|
|
@@ -243,7 +243,7 @@ var resetAllClients = (registry) => {
|
|
|
243
243
|
};
|
|
244
244
|
|
|
245
245
|
// src/apis/_registry.ts
|
|
246
|
-
var expandDef = (mod) =>
|
|
246
|
+
var expandDef = (mod) => _chunkDDMVRJDZcjs.expand.call(void 0, _nullishCoalesce(mod.default, () => ( mod)));
|
|
247
247
|
var registerBuiltinApis = (registry) => {
|
|
248
248
|
registerApi({
|
|
249
249
|
registry,
|
|
@@ -545,9 +545,9 @@ var createSDK = () => {
|
|
|
545
545
|
const available = [...registry.keys()].join(", ");
|
|
546
546
|
throw new Error(`Unknown API: "${name}". Available: ${available}`);
|
|
547
547
|
}
|
|
548
|
-
return
|
|
548
|
+
return _chunkDDMVRJDZcjs.createApiHandle.call(void 0, {
|
|
549
549
|
resolveClient: () => resolveClient({ registry, name, state }),
|
|
550
|
-
createClient: () =>
|
|
550
|
+
createClient: () => _chunkDDMVRJDZcjs.createApiClient.call(void 0, { definition: entry.loader(), apiName: name }),
|
|
551
551
|
apiName: name
|
|
552
552
|
});
|
|
553
553
|
};
|
|
@@ -595,9 +595,9 @@ var createSDK = () => {
|
|
|
595
595
|
return interceptorUse;
|
|
596
596
|
}
|
|
597
597
|
case "help":
|
|
598
|
-
return (apiName) =>
|
|
598
|
+
return (apiName) => _chunkDDMVRJDZcjs.help.call(void 0, apiName);
|
|
599
599
|
case "openapi":
|
|
600
|
-
return (apiName) =>
|
|
600
|
+
return (apiName) => _chunkDDMVRJDZcjs.openapi.call(void 0, apiName);
|
|
601
601
|
case "then":
|
|
602
602
|
case "catch":
|
|
603
603
|
case "finally":
|
|
@@ -624,4 +624,4 @@ var epilot = createSDK();
|
|
|
624
624
|
|
|
625
625
|
|
|
626
626
|
|
|
627
|
-
exports.applyLargeResponseInterceptor = applyLargeResponseInterceptor; exports.applyRetryInterceptor = applyRetryInterceptor; exports.authorize =
|
|
627
|
+
exports.applyLargeResponseInterceptor = applyLargeResponseInterceptor; exports.applyRetryInterceptor = applyRetryInterceptor; exports.authorize = _chunkDDMVRJDZcjs.authorize; exports.createSDK = createSDK; exports.epilot = epilot; exports.help = _chunkDDMVRJDZcjs.help; exports.openapi = _chunkDDMVRJDZcjs.openapi;
|
package/dist/index.d.cts
CHANGED
|
@@ -7,7 +7,7 @@ import { C as Client } from './access-token.d-CnmUTOlq.cjs';
|
|
|
7
7
|
import { C as Client$1 } from './address.d-CwAPOVxa.cjs';
|
|
8
8
|
import { C as Client$2 } from './address-suggestions.d-_YwTOR-9.cjs';
|
|
9
9
|
import { C as Client$3 } from './ai-agents.d-OkXfr2bz.cjs';
|
|
10
|
-
import { C as Client$4 } from './app.d-
|
|
10
|
+
import { C as Client$4 } from './app.d-u7Dq42kU.cjs';
|
|
11
11
|
import { C as Client$5 } from './audit-logs.d-BRToFqeX.cjs';
|
|
12
12
|
import { C as Client$6 } from './automation.d-KOiZ6ru5.cjs';
|
|
13
13
|
import { C as Client$7 } from './billing.d-Bs8Ku9qE.cjs';
|
package/dist/index.d.ts
CHANGED
|
@@ -7,7 +7,7 @@ import { C as Client } from './access-token.d-CnmUTOlq.js';
|
|
|
7
7
|
import { C as Client$1 } from './address.d-CwAPOVxa.js';
|
|
8
8
|
import { C as Client$2 } from './address-suggestions.d-_YwTOR-9.js';
|
|
9
9
|
import { C as Client$3 } from './ai-agents.d-OkXfr2bz.js';
|
|
10
|
-
import { C as Client$4 } from './app.d-
|
|
10
|
+
import { C as Client$4 } from './app.d-u7Dq42kU.js';
|
|
11
11
|
import { C as Client$5 } from './audit-logs.d-BRToFqeX.js';
|
|
12
12
|
import { C as Client$6 } from './automation.d-KOiZ6ru5.js';
|
|
13
13
|
import { C as Client$7 } from './billing.d-Bs8Ku9qE.js';
|
package/dist/index.js
CHANGED
package/docs/app.md
CHANGED
|
@@ -399,7 +399,8 @@ const { data } = await client.getPublicConfiguration({
|
|
|
399
399
|
},
|
|
400
400
|
"blueprint_ref": {
|
|
401
401
|
"manifest_id": "string",
|
|
402
|
-
"job_id": "string"
|
|
402
|
+
"job_id": "string",
|
|
403
|
+
"source_blueprint_file": "string"
|
|
403
404
|
},
|
|
404
405
|
"latest_version": "string",
|
|
405
406
|
"public": true,
|
|
@@ -519,7 +520,8 @@ const { data } = await client.getConfiguration({
|
|
|
519
520
|
},
|
|
520
521
|
"blueprint_ref": {
|
|
521
522
|
"manifest_id": "string",
|
|
522
|
-
"job_id": "string"
|
|
523
|
+
"job_id": "string",
|
|
524
|
+
"source_blueprint_file": "string"
|
|
523
525
|
},
|
|
524
526
|
"version_audit": {
|
|
525
527
|
"created_at": "string",
|
|
@@ -877,7 +879,8 @@ const { data } = await client.listVersions({
|
|
|
877
879
|
},
|
|
878
880
|
"blueprint_ref": {
|
|
879
881
|
"manifest_id": "string",
|
|
880
|
-
"job_id": "string"
|
|
882
|
+
"job_id": "string",
|
|
883
|
+
"source_blueprint_file": "string"
|
|
881
884
|
},
|
|
882
885
|
"version_audit": {
|
|
883
886
|
"created_at": "string",
|
|
@@ -992,7 +995,8 @@ const { data } = await client.getVersion({
|
|
|
992
995
|
},
|
|
993
996
|
"blueprint_ref": {
|
|
994
997
|
"manifest_id": "string",
|
|
995
|
-
"job_id": "string"
|
|
998
|
+
"job_id": "string",
|
|
999
|
+
"source_blueprint_file": "string"
|
|
996
1000
|
},
|
|
997
1001
|
"version_audit": {
|
|
998
1002
|
"created_at": "string",
|
|
@@ -1328,7 +1332,8 @@ const { data } = await client.listInstallations({
|
|
|
1328
1332
|
"role": "string",
|
|
1329
1333
|
"blueprint_ref": {
|
|
1330
1334
|
"manifest_id": "string",
|
|
1331
|
-
"job_id": "string"
|
|
1335
|
+
"job_id": "string",
|
|
1336
|
+
"source_blueprint_file": "string"
|
|
1332
1337
|
},
|
|
1333
1338
|
"installation_audit": {
|
|
1334
1339
|
"created_at": "string",
|
|
@@ -1407,7 +1412,8 @@ const { data } = await client.getInstallation({
|
|
|
1407
1412
|
"role": "string",
|
|
1408
1413
|
"blueprint_ref": {
|
|
1409
1414
|
"manifest_id": "string",
|
|
1410
|
-
"job_id": "string"
|
|
1415
|
+
"job_id": "string",
|
|
1416
|
+
"source_blueprint_file": "string"
|
|
1411
1417
|
},
|
|
1412
1418
|
"installation_audit": {
|
|
1413
1419
|
"created_at": "string",
|
|
@@ -1496,7 +1502,8 @@ const { data } = await client.install(
|
|
|
1496
1502
|
"role": "string",
|
|
1497
1503
|
"blueprint_ref": {
|
|
1498
1504
|
"manifest_id": "string",
|
|
1499
|
-
"job_id": "string"
|
|
1505
|
+
"job_id": "string",
|
|
1506
|
+
"source_blueprint_file": "string"
|
|
1500
1507
|
},
|
|
1501
1508
|
"installation_audit": {
|
|
1502
1509
|
"created_at": "string",
|
|
@@ -1614,7 +1621,8 @@ const { data } = await client.promoteVersion({
|
|
|
1614
1621
|
"role": "string",
|
|
1615
1622
|
"blueprint_ref": {
|
|
1616
1623
|
"manifest_id": "string",
|
|
1617
|
-
"job_id": "string"
|
|
1624
|
+
"job_id": "string",
|
|
1625
|
+
"source_blueprint_file": "string"
|
|
1618
1626
|
},
|
|
1619
1627
|
"installation_audit": {
|
|
1620
1628
|
"created_at": "string",
|
|
@@ -1888,7 +1896,7 @@ type PortalBlockComponent = {
|
|
|
1888
1896
|
app_url?: { ... }
|
|
1889
1897
|
zip_url?: { ... }
|
|
1890
1898
|
override_url?: { ... }
|
|
1891
|
-
|
|
1899
|
+
supported_surfaces?: { ... }
|
|
1892
1900
|
}
|
|
1893
1901
|
}
|
|
1894
1902
|
}
|
|
@@ -2721,7 +2729,7 @@ type PortalBlockSurfaceConfig = {
|
|
|
2721
2729
|
app_url?: string
|
|
2722
2730
|
zip_url?: string
|
|
2723
2731
|
override_url?: string
|
|
2724
|
-
|
|
2732
|
+
supported_surfaces?: "main" | "footer_inline" | "footer_left_absolute" | "footer_right_absolute"[]
|
|
2725
2733
|
}
|
|
2726
2734
|
```
|
|
2727
2735
|
|
|
@@ -2907,6 +2915,7 @@ type ConfigurationVersion = {
|
|
|
2907
2915
|
blueprint_ref?: {
|
|
2908
2916
|
manifest_id?: string
|
|
2909
2917
|
job_id?: string
|
|
2918
|
+
source_blueprint_file?: string
|
|
2910
2919
|
}
|
|
2911
2920
|
version_audit: {
|
|
2912
2921
|
created_at?: string
|
|
@@ -2936,6 +2945,7 @@ type Grants = Array<{
|
|
|
2936
2945
|
type BlueprintRef = {
|
|
2937
2946
|
manifest_id?: string
|
|
2938
2947
|
job_id?: string
|
|
2948
|
+
source_blueprint_file?: string
|
|
2939
2949
|
}
|
|
2940
2950
|
```
|
|
2941
2951
|
|
|
@@ -2982,6 +2992,7 @@ type Installation = {
|
|
|
2982
2992
|
blueprint_ref?: {
|
|
2983
2993
|
manifest_id?: string
|
|
2984
2994
|
job_id?: string
|
|
2995
|
+
source_blueprint_file?: string
|
|
2985
2996
|
}
|
|
2986
2997
|
installation_audit?: {
|
|
2987
2998
|
created_at?: string
|
|
@@ -3053,6 +3064,7 @@ type PublicConfiguration = {
|
|
|
3053
3064
|
blueprint_ref?: {
|
|
3054
3065
|
manifest_id?: string
|
|
3055
3066
|
job_id?: string
|
|
3067
|
+
source_blueprint_file?: string
|
|
3056
3068
|
}
|
|
3057
3069
|
latest_version?: string
|
|
3058
3070
|
public?: boolean
|
|
@@ -3081,6 +3093,7 @@ type PublicConfiguration = {
|
|
|
3081
3093
|
blueprint_ref?: {
|
|
3082
3094
|
manifest_id?: { ... }
|
|
3083
3095
|
job_id?: { ... }
|
|
3096
|
+
source_blueprint_file?: { ... }
|
|
3084
3097
|
}
|
|
3085
3098
|
version_audit: {
|
|
3086
3099
|
created_at?: { ... }
|
|
@@ -3173,6 +3186,7 @@ type Configuration = {
|
|
|
3173
3186
|
blueprint_ref?: {
|
|
3174
3187
|
manifest_id?: string
|
|
3175
3188
|
job_id?: string
|
|
3189
|
+
source_blueprint_file?: string
|
|
3176
3190
|
}
|
|
3177
3191
|
version_audit: {
|
|
3178
3192
|
created_at?: string
|