@epilot/sdk 2.18.33 → 2.19.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/definitions/entity.json +64 -2
- package/definitions/integration-toolkit.json +29 -11
- package/definitions/pricing.json +25 -7
- 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.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/calendar.cjs +6 -6
- package/dist/apis/calendar.js +1 -1
- package/dist/apis/configuration-hub.cjs +6 -6
- package/dist/apis/configuration-hub.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-governance.cjs +6 -6
- package/dist/apis/data-governance.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.d.cts +2 -2
- package/dist/apis/entity.d.ts +2 -2
- package/dist/apis/entity.js +1 -1
- package/dist/apis/environments.cjs +6 -6
- package/dist/apis/environments.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/integration-toolkit.cjs +6 -6
- package/dist/apis/integration-toolkit.d.cts +2 -2
- package/dist/apis/integration-toolkit.d.ts +2 -2
- package/dist/apis/integration-toolkit.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.d.cts +2 -2
- package/dist/apis/pricing.d.ts +2 -2
- package/dist/apis/pricing.js +1 -1
- package/dist/apis/purpose.cjs +6 -6
- package/dist/apis/purpose.js +1 -1
- package/dist/apis/query.cjs +6 -6
- package/dist/apis/query.js +1 -1
- package/dist/apis/sandbox.cjs +6 -6
- package/dist/apis/sandbox.js +1 -1
- package/dist/apis/sharing.cjs +6 -6
- package/dist/apis/sharing.js +1 -1
- package/dist/apis/snapshot.cjs +6 -6
- package/dist/apis/snapshot.js +1 -1
- package/dist/apis/submission.cjs +6 -6
- package/dist/apis/submission.js +1 -1
- package/dist/apis/target.cjs +6 -6
- package/dist/apis/target.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/{chunk-W636M2L3.js → chunk-BVCHHE2R.js} +3 -3
- package/dist/{chunk-3GSQBFJZ.cjs → chunk-C543QHBO.cjs} +3 -3
- package/dist/entity-5EFSNTP7.cjs +7 -0
- package/dist/entity-62ROADV5.js +7 -0
- package/dist/{entity.d-BOpXYCU2.d.cts → entity.d-CQXFlO3D.d.cts} +66 -3
- package/dist/{entity.d-BOpXYCU2.d.ts → entity.d-CQXFlO3D.d.ts} +66 -3
- package/dist/index.cjs +8 -8
- package/dist/index.d.cts +3 -3
- package/dist/index.d.ts +3 -3
- package/dist/index.js +1 -1
- package/dist/integration-toolkit-6SBBMBPK.cjs +7 -0
- package/dist/integration-toolkit-AWMCD2KB.js +7 -0
- package/dist/{integration-toolkit.d-D8kNGpJq.d.cts → integration-toolkit.d-CLVwmd8s.d.cts} +858 -7
- package/dist/{integration-toolkit.d-D8kNGpJq.d.ts → integration-toolkit.d-CLVwmd8s.d.ts} +858 -7
- package/dist/js-yaml-DLCVPJ7G.js +0 -0
- package/dist/pricing-5EKKEZSL.js +7 -0
- package/dist/pricing-N4Z2CHGZ.cjs +7 -0
- package/dist/{pricing.d-D6HCZpbI.d.cts → pricing.d-Det6zqGv.d.cts} +29 -11
- package/dist/{pricing.d-D6HCZpbI.d.ts → pricing.d-Det6zqGv.d.ts} +29 -11
- package/docs/entity.md +49 -2
- package/docs/integration-toolkit.md +22 -7
- package/docs/pricing.md +13 -13
- package/package.json +12 -11
- package/dist/entity-DBJ2R3UN.js +0 -7
- package/dist/entity-HO34WNFK.cjs +0 -7
- package/dist/integration-toolkit-RVVT6BCK.cjs +0 -7
- package/dist/integration-toolkit-X64BK3WX.js +0 -7
- package/dist/pricing-HQ75T2TF.js +0 -7
- package/dist/pricing-HTU5XPZE.cjs +0 -7
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import "./chunk-YPSWSI3M.js";
|
|
2
|
+
|
|
3
|
+
// src/docs/integration-toolkit.json
|
|
4
|
+
var integration_toolkit_default = '# Integration Toolkit API\n\n- **Base URL:** `https://integration-toolkit.sls.epilot.io`\n- **Full API Docs:** [https://docs.epilot.io/api/integration-toolkit](https://docs.epilot.io/api/integration-toolkit)\n\n## Usage\n\n```ts\nimport { epilot } from \'@epilot/sdk\'\n\nepilot.authorize(() => \'<token>\')\nconst { data } = await epilot.integrationToolkit.acknowledgeTracking(...)\n```\n\n### Tree-shakeable import\n\n```ts\nimport { getClient, authorize } from \'@epilot/sdk/integration-toolkit\'\n\nconst integrationToolkitClient = getClient()\nauthorize(integrationToolkitClient, () => \'<token>\')\nconst { data } = await integrationToolkitClient.acknowledgeTracking(...)\n```\n\n## Operations\n\n**erp**\n- [`acknowledgeTracking`](#acknowledgetracking)\n- [`triggerErp`](#triggererp)\n- [`processErpUpdatesEventsV3`](#processerpupdateseventsv3)\n- [`simulateMappingV2`](#simulatemappingv2)\n- [`simulateDirect`](#simulatedirect)\n- [`simulateMapping`](#simulatemapping)\n\n**integrations**\n- [`listIntegrations`](#listintegrations)\n- [`createIntegration`](#createintegration)\n- [`getIntegration`](#getintegration)\n- [`updateIntegration`](#updateintegration)\n- [`deleteIntegration`](#deleteintegration)\n- [`queryEvents`](#queryevents)\n- [`replayEvents`](#replayevents)\n- [`listUseCases`](#listusecases)\n- [`createUseCase`](#createusecase)\n- [`getUseCase`](#getusecase)\n- [`updateUseCase`](#updateusecase)\n- [`deleteUseCase`](#deleteusecase)\n- [`listUseCaseHistory`](#listusecasehistory)\n- [`listDocumentationPages`](#listdocumentationpages)\n- [`getDocumentationPage`](#getdocumentationpage)\n- [`upsertDocumentationPage`](#upsertdocumentationpage)\n- [`deleteDocumentationPage`](#deletedocumentationpage)\n- [`listIntegrationsV2`](#listintegrationsv2)\n- [`createIntegrationV2`](#createintegrationv2)\n- [`getIntegrationV2`](#getintegrationv2)\n- [`updateIntegrationV2`](#updateintegrationv2)\n- [`deleteIntegrationV2`](#deleteintegrationv2)\n- [`listNotificationHistory`](#listnotificationhistory)\n- [`testSendNotification`](#testsendnotification)\n- [`getNotificationStatus`](#getnotificationstatus)\n- [`getSecureProxyWhitelist`](#getsecureproxywhitelist)\n- [`updateSecureProxyWhitelist`](#updatesecureproxywhitelist)\n- [`listSecureProxyWhitelistHistory`](#listsecureproxywhitelisthistory)\n- [`setIntegrationAppMapping`](#setintegrationappmapping)\n- [`deleteIntegrationAppMapping`](#deleteintegrationappmapping)\n- [`getOutboundStatus`](#getoutboundstatus)\n- [`getEntitySyncStatus`](#getentitysyncstatus)\n- [`pollOutboundMessages`](#polloutboundmessages)\n- [`ackOutboundMessages`](#ackoutboundmessages)\n- [`listOutboundDlqMessages`](#listoutbounddlqmessages)\n- [`redriveOutboundDlqMessages`](#redriveoutbounddlqmessages)\n- [`unblockOutboundStream`](#unblockoutboundstream)\n- [`listSecureProxies`](#listsecureproxies)\n- [`generateTypesPreview`](#generatetypespreview)\n- [`generateTypes`](#generatetypes)\n- [`commitTypes`](#committypes)\n\n**monitoring**\n- [`queryInboundMonitoringEvents`](#queryinboundmonitoringevents)\n- [`getMonitoringStats`](#getmonitoringstats)\n- [`getMonitoringTimeSeries`](#getmonitoringtimeseries)\n- [`queryAccessLogs`](#queryaccesslogs)\n- [`queryOutboundMonitoringEvents`](#queryoutboundmonitoringevents)\n- [`queryMonitoringEventsV2`](#querymonitoringeventsv2)\n- [`getMonitoringStatsV2`](#getmonitoringstatsv2)\n- [`getMonitoringTimeSeriesV2`](#getmonitoringtimeseriesv2)\n- [`getAssociatedMonitoringEvents`](#getassociatedmonitoringevents)\n- [`ingestExternalMonitoringEvents`](#ingestexternalmonitoringevents)\n- [`getMonitoringTraceByCorrelation`](#getmonitoringtracebycorrelation)\n\n**proxy**\n- [`secureProxy`](#secureproxy)\n\n**managed-call**\n- [`managedCallExecute`](#managedcallexecute)\n\n**erp-imports**\n- [`createErpImport`](#createerpimport)\n- [`listErpImports`](#listerpimports)\n- [`getErpImport`](#geterpimport)\n- [`deleteErpImport`](#deleteerpimport)\n- [`validateErpImport`](#validateerpimport)\n- [`suggestErpImportUseCases`](#suggesterpimportusecases)\n- [`executeErpImport`](#executeerpimport)\n- [`abortErpImport`](#aborterpimport)\n\n**Schemas**\n- [`S3Reference`](#s3reference)\n- [`CreateErpImportRequest`](#createerpimportrequest)\n- [`ValidateErpImportRequest`](#validateerpimportrequest)\n- [`ErpImportUseCaseSuggestion`](#erpimportusecasesuggestion)\n- [`SuggestErpImportUseCasesResponse`](#suggesterpimportusecasesresponse)\n- [`ExecuteErpImportRequest`](#executeerpimportrequest)\n- [`ErpImportIssue`](#erpimportissue)\n- [`ErpImportValidation`](#erpimportvalidation)\n- [`ErpImportProgress`](#erpimportprogress)\n- [`ErpImportError`](#erpimporterror)\n- [`ErpImportFilePreview`](#erpimportfilepreview)\n- [`CreateErpImportResponse`](#createerpimportresponse)\n- [`ErpImportJob`](#erpimportjob)\n- [`ErpImportList`](#erpimportlist)\n- [`NotificationHistoryItem`](#notificationhistoryitem)\n- [`NotificationHistoryResponse`](#notificationhistoryresponse)\n- [`TestNotificationRequest`](#testnotificationrequest)\n- [`TestNotificationResponse`](#testnotificationresponse)\n- [`NotificationStatusResponse`](#notificationstatusresponse)\n- [`NotificationRuleStatus`](#notificationrulestatus)\n- [`RuleBaselineStatus`](#rulebaselinestatus)\n- [`RuleBaselineBucket`](#rulebaselinebucket)\n- [`ErrorResponseBase`](#errorresponsebase)\n- [`ErpEvent`](#erpevent)\n- [`ErpUpdatesEventsV2Request`](#erpupdateseventsv2request)\n- [`ErpEventV3`](#erpeventv3)\n- [`ErpUpdatesEventsV3Request`](#erpupdateseventsv3request)\n- [`TriggerErpActionRequest`](#triggererpactionrequest)\n- [`TriggerWebhookResp`](#triggerwebhookresp)\n- [`IntegrationEditableFields`](#integrationeditablefields)\n- [`ConnectorConfig`](#connectorconfig)\n- [`ManagedCallAuth`](#managedcallauth)\n- [`Integration`](#integration)\n- [`CreateIntegrationRequest`](#createintegrationrequest)\n- [`UpdateIntegrationRequest`](#updateintegrationrequest)\n- [`EnvironmentFieldConfig`](#environmentfieldconfig)\n- [`IntegrationSettings`](#integrationsettings)\n- [`AutoRefreshSettings`](#autorefreshsettings)\n- [`IntegrationNotificationConfig`](#integrationnotificationconfig)\n- [`NotificationRecipient`](#notificationrecipient)\n- [`NotificationChannelSet`](#notificationchannelset)\n- [`NotificationRule`](#notificationrule)\n- [`NotificationDigestConfig`](#notificationdigestconfig)\n- [`SetIntegrationAppMappingRequest`](#setintegrationappmappingrequest)\n- [`DeleteIntegrationAppMappingRequest`](#deleteintegrationappmappingrequest)\n- [`IntegrationAppMapping`](#integrationappmapping)\n- [`IntegrationWithUseCases`](#integrationwithusecases)\n- [`UpsertIntegrationWithUseCasesRequest`](#upsertintegrationwithusecasesrequest)\n- [`InboundIntegrationEventConfiguration`](#inboundintegrationeventconfiguration)\n- [`OutboundIntegrationEventConfiguration`](#outboundintegrationeventconfiguration)\n- [`IntegrationEntity`](#integrationentity)\n- [`IntegrationMeterReading`](#integrationmeterreading)\n- [`PruneScopeConfig`](#prunescopeconfig)\n- [`MeterReadingPruneScopeConfig`](#meterreadingprunescopeconfig)\n- [`MeterUniqueIdsConfig`](#meteruniqueidsconfig)\n- [`IntegrationEntityField`](#integrationentityfield)\n- [`FileProxyUrlParam`](#fileproxyurlparam)\n- [`FileProxyUrlParams`](#fileproxyurlparams)\n- [`FileProxyUrlConfig`](#fileproxyurlconfig)\n- [`PortalOrigin`](#portalorigin)\n- [`PortalRefFilter`](#portalreffilter)\n- [`PortalRefConfig`](#portalrefconfig)\n- [`EnvVarRefConfig`](#envvarrefconfig)\n- [`EmbeddedUseCaseRequest`](#embeddedusecaserequest)\n- [`EmbeddedUseCaseRequestBase`](#embeddedusecaserequestbase)\n- [`EmbeddedInboundUseCaseRequest`](#embeddedinboundusecaserequest)\n- [`EmbeddedOutboundUseCaseRequest`](#embeddedoutboundusecaserequest)\n- [`EmbeddedFileProxyUseCaseRequest`](#embeddedfileproxyusecaserequest)\n- [`EmbeddedManagedCallUseCaseRequest`](#embeddedmanagedcallusecaserequest)\n- [`EmbeddedSecureProxyUseCaseRequest`](#embeddedsecureproxyusecaserequest)\n- [`UseCaseBase`](#usecasebase)\n- [`InboundUseCase`](#inboundusecase)\n- [`OutboundUseCase`](#outboundusecase)\n- [`FileProxyUseCase`](#fileproxyusecase)\n- [`ManagedCallUseCase`](#managedcallusecase)\n- [`SecureProxyUseCase`](#secureproxyusecase)\n- [`UseCase`](#usecase)\n- [`CreateUseCaseRequest`](#createusecaserequest)\n- [`CreateUseCaseRequestBase`](#createusecaserequestbase)\n- [`CreateInboundUseCaseRequest`](#createinboundusecaserequest)\n- [`CreateOutboundUseCaseRequest`](#createoutboundusecaserequest)\n- [`CreateFileProxyUseCaseRequest`](#createfileproxyusecaserequest)\n- [`CreateManagedCallUseCaseRequest`](#createmanagedcallusecaserequest)\n- [`CreateSecureProxyUseCaseRequest`](#createsecureproxyusecaserequest)\n- [`UpdateUseCaseRequest`](#updateusecaserequest)\n- [`UpdateUseCaseRequestBase`](#updateusecaserequestbase)\n- [`UpdateInboundUseCaseRequest`](#updateinboundusecaserequest)\n- [`UpdateOutboundUseCaseRequest`](#updateoutboundusecaserequest)\n- [`UpdateFileProxyUseCaseRequest`](#updatefileproxyusecaserequest)\n- [`UpdateManagedCallUseCaseRequest`](#updatemanagedcallusecaserequest)\n- [`UpdateSecureProxyUseCaseRequest`](#updatesecureproxyusecaserequest)\n- [`UseCaseHistoryEntry`](#usecasehistoryentry)\n- [`UseCaseHistoryEntryBase`](#usecasehistoryentrybase)\n- [`InboundUseCaseHistoryEntry`](#inboundusecasehistoryentry)\n- [`OutboundUseCaseHistoryEntry`](#outboundusecasehistoryentry)\n- [`FileProxyUseCaseHistoryEntry`](#fileproxyusecasehistoryentry)\n- [`ManagedCallUseCaseHistoryEntry`](#managedcallusecasehistoryentry)\n- [`SecureProxyUseCaseHistoryEntry`](#secureproxyusecasehistoryentry)\n- [`SecureProxyUseCaseConfiguration`](#secureproxyusecaseconfiguration)\n- [`SecureProxyWhitelist`](#secureproxywhitelist)\n- [`SecureProxyWhitelistUpdate`](#secureproxywhitelistupdate)\n- [`SecureProxySummary`](#secureproxysummary)\n- [`SecureProxyRequest`](#secureproxyrequest)\n- [`SecureProxyResponse`](#secureproxyresponse)\n- [`SecureProxyUpstreamError`](#secureproxyupstreamerror)\n- [`ManagedCallOperationConfig`](#managedcalloperationconfig)\n- [`ManagedCallOperation`](#managedcalloperation)\n- [`ManagedCallExecuteRequest`](#managedcallexecuterequest)\n- [`ManagedCallExecuteResponse`](#managedcallexecuteresponse)\n- [`ManagedCallErrorResponse`](#managedcallerrorresponse)\n- [`TypeAnnotations`](#typeannotations)\n- [`TypeDescriptor`](#typedescriptor)\n- [`UseCaseTypePreview`](#usecasetypepreview)\n- [`GenerateTypesPreviewResponse`](#generatetypespreviewresponse)\n- [`GenerateTypesRequest`](#generatetypesrequest)\n- [`GenerateTypesResponse`](#generatetypesresponse)\n- [`CommitTypesRequest`](#committypesrequest)\n- [`CommitTypesResponse`](#committypesresponse)\n- [`FileProxyUseCaseConfiguration`](#fileproxyusecaseconfiguration)\n- [`FileProxySecureProxyAttachment`](#fileproxysecureproxyattachment)\n- [`FileProxyAuth`](#fileproxyauth)\n- [`FileProxyParam`](#fileproxyparam)\n- [`FileProxyStep`](#fileproxystep)\n- [`FileProxyFanOutConfig`](#fileproxyfanoutconfig)\n- [`FileProxyUploadConfig`](#fileproxyuploadconfig)\n- [`FileProxyResponseConfig`](#fileproxyresponseconfig)\n- [`MappingSimulationRequest`](#mappingsimulationrequest)\n- [`MappingSimulationV2Request`](#mappingsimulationv2request)\n- [`MappingSimulationResponse`](#mappingsimulationresponse)\n- [`MappingSimulationWarning`](#mappingsimulationwarning)\n- [`DirectPayload`](#directpayload)\n- [`DirectEntityOperation`](#directentityoperation)\n- [`DirectMeterReadingOperation`](#directmeterreadingoperation)\n- [`DirectRelationValue`](#directrelationvalue)\n- [`DirectRelationItem`](#directrelationitem)\n- [`DirectRelationRefValue`](#directrelationrefvalue)\n- [`DirectRelationRefItem`](#directrelationrefitem)\n- [`DirectSimulationRequest`](#directsimulationrequest)\n- [`DirectSimulationResponse`](#directsimulationresponse)\n- [`DirectSimulationError`](#directsimulationerror)\n- [`EntityUpdate`](#entityupdate)\n- [`MeterReadingUpdate`](#meterreadingupdate)\n- [`EntityPruneScopeUpdate`](#entityprunescopeupdate)\n- [`MeterReadingPruneScopeUpdate`](#meterreadingprunescopeupdate)\n- [`IntegrationConfigurationV1`](#integrationconfigurationv1)\n- [`IntegrationObjectV1`](#integrationobjectv1)\n- [`IntegrationFieldV1`](#integrationfieldv1)\n- [`IntegrationConfigurationV2`](#integrationconfigurationv2)\n- [`OutboundMapping`](#outboundmapping)\n- [`DeliveryConfig`](#deliveryconfig)\n- [`WebhookDeliveryConfig`](#webhookdeliveryconfig)\n- [`PollDeliveryConfig`](#polldeliveryconfig)\n- [`FileProxyDeliveryConfig`](#fileproxydeliveryconfig)\n- [`EntitySyncStatusResponse`](#entitysyncstatusresponse)\n- [`EntitySyncState`](#entitysyncstate)\n- [`OutboundStatusResponse`](#outboundstatusresponse)\n- [`OutboundUseCaseStatus`](#outboundusecasestatus)\n- [`OutboundFileProxyTargetStatus`](#outboundfileproxytargetstatus)\n- [`OutboundPollStatus`](#outboundpollstatus)\n- [`WebhookStatus`](#webhookstatus)\n- [`OutboundConflict`](#outboundconflict)\n- [`PollOutboundMessagesRequest`](#polloutboundmessagesrequest)\n- [`OutboundMessage`](#outboundmessage)\n- [`PollOutboundMessagesResponse`](#polloutboundmessagesresponse)\n- [`AckOutboundMessagesRequest`](#ackoutboundmessagesrequest)\n- [`AckResult`](#ackresult)\n- [`AckOutboundMessagesResponse`](#ackoutboundmessagesresponse)\n- [`OutboundDlqMessage`](#outbounddlqmessage)\n- [`OutboundDlqListResponse`](#outbounddlqlistresponse)\n- [`RedriveOutboundDlqRequest`](#redriveoutbounddlqrequest)\n- [`RedriveOutboundDlqResult`](#redriveoutbounddlqresult)\n- [`RedriveOutboundDlqResponse`](#redriveoutbounddlqresponse)\n- [`UnblockOutboundStreamRequest`](#unblockoutboundstreamrequest)\n- [`UnblockOutboundStreamResponse`](#unblockoutboundstreamresponse)\n- [`RelationConfig`](#relationconfig)\n- [`RelationItemConfig`](#relationitemconfig)\n- [`RelationUniqueIdField`](#relationuniqueidfield)\n- [`RelationRefsConfig`](#relationrefsconfig)\n- [`RelationRefItemConfig`](#relationrefitemconfig)\n- [`RelationRefValueConfig`](#relationrefvalueconfig)\n- [`RepeatableFieldType`](#repeatablefieldtype)\n- [`ReplayEventsRequest`](#replayeventsrequest)\n- [`QueryEventsRequest`](#queryeventsrequest)\n- [`QueryInboundMonitoringEventsRequest`](#queryinboundmonitoringeventsrequest)\n- [`QueryAccessLogsRequest`](#queryaccesslogsrequest)\n- [`AccessLogEntry`](#accesslogentry)\n- [`GetMonitoringStatsRequest`](#getmonitoringstatsrequest)\n- [`GetMonitoringTimeSeriesRequest`](#getmonitoringtimeseriesrequest)\n- [`TimeSeriesBucket`](#timeseriesbucket)\n- [`QueryOutboundMonitoringEventsRequest`](#queryoutboundmonitoringeventsrequest)\n- [`OutboundMonitoringEvent`](#outboundmonitoringevent)\n- [`MonitoringStats`](#monitoringstats)\n- [`InboundMonitoringEvent`](#inboundmonitoringevent)\n- [`QueryMonitoringEventsV2Request`](#querymonitoringeventsv2request)\n- [`ExternalMonitoringSpan`](#externalmonitoringspan)\n- [`IngestExternalMonitoringEventsRequest`](#ingestexternalmonitoringeventsrequest)\n- [`IngestExternalMonitoringEventsResponse`](#ingestexternalmonitoringeventsresponse)\n- [`MonitoringTraceResponse`](#monitoringtraceresponse)\n- [`MonitoringEventV2`](#monitoringeventv2)\n- [`GetMonitoringStatsV2Request`](#getmonitoringstatsv2request)\n- [`MonitoringStatsV2`](#monitoringstatsv2)\n- [`GetMonitoringTimeSeriesV2Request`](#getmonitoringtimeseriesv2request)\n- [`TimeSeriesBreakdownItemV2`](#timeseriesbreakdownitemv2)\n- [`TimeSeriesBucketV2`](#timeseriesbucketv2)\n- [`DocumentationPageSummary`](#documentationpagesummary)\n- [`DocumentationPage`](#documentationpage)\n- [`UpsertDocumentationPageRequest`](#upsertdocumentationpagerequest)\n\n### `acknowledgeTracking`\n\nAcknowledges an ERP tracking record by removing it from the tracking table, requires public authentication\n\n`POST /v1/erp/tracking/acknowledgement`\n\n```ts\nconst { data } = await client.acknowledgeTracking(\n null,\n {\n ack_id: \'string\'\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "message": "string"\n}\n```\n\n</details>\n\n---\n\n### `triggerErp`\n\nTriggers the ERP integration process\n\n`POST /v1/erp/trigger`\n\n```ts\nconst { data } = await client.triggerErp(\n null,\n {\n execution_id: \'string\',\n org_id: \'string\',\n webhook_id: \'string\',\n flow_id: \'string\',\n created_at: \'1970-01-01T00:00:00.000Z\',\n action_id: \'string\',\n flow_action_id: \'string\',\n flow_name: \'string\',\n activity_id: \'string\',\n entity_id: \'string\'\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "status_code": "string",\n "message": "string",\n "body": {},\n "code": "string",\n "status": "succeeded",\n "start_date": "string",\n "end_date": "string",\n "event_id": "string"\n}\n```\n\n</details>\n\n---\n\n### `processErpUpdatesEventsV3`\n\nHandles updates from ERP systems using integration_id directly.\nThis is the v3 version that removes the unused event_type field and renames object_type to event_name\nto align with the integration UI n\n\n`POST /v3/erp/updates/events`\n\n```ts\nconst { data } = await client.processErpUpdatesEventsV3(\n null,\n {\n integration_id: \'3fa85f64-5717-4562-b3fc-2c963f66afa6\',\n correlation_id: \'string\',\n group_id: \'customer-42\',\n events: [\n {},\n {}\n ]\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "results": [\n {\n "event_id": "string",\n "status": "success",\n "message": "string"\n }\n ]\n}\n```\n\n</details>\n\n---\n\n### `simulateMappingV2`\n\nTest v2.0 mapping configuration by transforming a payload using the provided mapping rules without persisting data.\n\n`POST /v2/erp/updates/mapping_simulation`\n\n```ts\nconst { data } = await client.simulateMappingV2(\n null,\n {\n event_configuration: {\n direct: true,\n entities: [\n { /* ... */ }\n ],\n meter_readings: [\n { /* ... */ }\n ]\n },\n format: \'json\',\n payload: \'string\'\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "entity_updates": [\n {\n "entity_slug": "string",\n "unique_identifiers": {},\n "attributes": {},\n "pricing": {\n "config": {},\n "data": [\n {}\n ]\n },\n "mode": "upsert"\n }\n ],\n "meter_readings_updates": [\n {\n "meter": {\n "$entity_unique_ids": {}\n },\n "meter_counter": {\n "$entity_unique_ids": {}\n },\n "attributes": {},\n "mode": "upsert"\n }\n ],\n "prune_scope_updates": [\n {\n "entity_slug": "string",\n "scope": {\n "scope_mode": "relations",\n "schema": "string",\n "unique_ids": {},\n "query": {}\n },\n "keep_unique_ids": [\n {}\n ],\n "deletion_mode": "delete"\n }\n ],\n "meter_readings_prune_scope_updates": [\n {\n "meter": {\n "$entity_unique_ids": {}\n },\n "meter_counter": {\n "$entity_unique_ids": {}\n },\n "keep_external_ids": ["string"],\n "source": "string"\n }\n ],\n "warnings": [\n {\n "entity_schema": "string",\n "field": "string",\n "message": "string"\n }\n ]\n}\n```\n\n</details>\n\n---\n\n### `simulateDirect`\n\nDry run for direct-mode payloads: validates a `DirectPayload` against a `direct: true`\nuse case configuration and previews the internal entity and meter reading updates the\npipeline would apply \u2014 with\n\n`POST /v1/erp/updates/direct_simulation`\n\n```ts\nconst { data } = await client.simulateDirect(\n null,\n {\n event_configuration: {\n direct: true,\n entities: [\n { /* ... */ }\n ],\n meter_readings: [\n { /* ... */ }\n ]\n },\n payload: \'string\'\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "valid": true,\n "errors": [\n {\n "code": "DIRECT_PAYLOAD_INVALID",\n "message": "string",\n "operation_index": 0\n }\n ],\n "warnings": [\n {\n "entity_schema": "string",\n "field": "string",\n "message": "string"\n }\n ],\n "entity_updates": [\n {\n "entity_slug": "string",\n "unique_identifiers": {},\n "attributes": {},\n "pricing": {\n "config": {},\n "data": [\n {}\n ]\n },\n "mode": "upsert",\n "unique_identifiers_metadata": {}\n }\n ],\n "meter_reading_updates": [\n {\n "meter": {\n "$entity_unique_ids": {}\n },\n "meter_counter": {\n "$entity_unique_ids": {}\n },\n "attributes": {},\n "mode": "upsert",\n "_config": {\n "reading_matching": "external_id"\n }\n }\n ]\n}\n```\n\n</details>\n\n---\n\n### `simulateMapping`\n\nTest mapping configuration by transforming a payload using the provided mapping rules without persisting data.\n\n`POST /v1/erp/updates/mapping_simulation`\n\n```ts\nconst { data } = await client.simulateMapping(\n null,\n {\n mapping_configuration: {\n version: \'1.0\',\n mapping: {\n objects: {}\n }\n },\n object_type: \'string\',\n format: \'json\',\n payload: \'string\'\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "entity_updates": [\n {\n "entity_slug": "string",\n "unique_identifiers": {},\n "attributes": {},\n "pricing": {\n "config": {},\n "data": [\n {}\n ]\n },\n "mode": "upsert"\n }\n ],\n "meter_readings_updates": [\n {\n "meter": {\n "$entity_unique_ids": {}\n },\n "meter_counter": {\n "$entity_unique_ids": {}\n },\n "attributes": {},\n "mode": "upsert"\n }\n ],\n "prune_scope_updates": [\n {\n "entity_slug": "string",\n "scope": {\n "scope_mode": "relations",\n "schema": "string",\n "unique_ids": {},\n "query": {}\n },\n "keep_unique_ids": [\n {}\n ],\n "deletion_mode": "delete"\n }\n ],\n "meter_readings_prune_scope_updates": [\n {\n "meter": {\n "$entity_unique_ids": {}\n },\n "meter_counter": {\n "$entity_unique_ids": {}\n },\n "keep_external_ids": ["string"],\n "source": "string"\n }\n ],\n "warnings": [\n {\n "entity_schema": "string",\n "field": "string",\n "message": "string"\n }\n ]\n}\n```\n\n</details>\n\n---\n\n### `listIntegrations`\n\nRetrieve all integrations for the authenticated organization\n\n`GET /v1/integrations`\n\n```ts\nconst { data } = await client.listIntegrations()\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "integrations": [\n {\n "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",\n "orgId": "string",\n "created_at": "1970-01-01T00:00:00.000Z",\n "updated_at": "1970-01-01T00:00:00.000Z",\n "name": "string",\n "description": "string",\n "access_token_ids": ["string"],\n "app_ids": ["string"],\n "environment_config": [],\n "settings": {},\n "integration_type": "erp",\n "connector_config": {},\n "protected": true,\n "_manifest": ["string"]\n }\n ]\n}\n```\n\n</details>\n\n---\n\n### `createIntegration`\n\nCreate a new integration configuration\n\n`POST /v1/integrations`\n\n```ts\nconst { data } = await client.createIntegration(\n null,\n {\n name: \'string\',\n description: \'string\',\n access_token_ids: [\'string\'],\n app_ids: [\'string\'],\n environment_config: [\n {\n key: \'string\',\n label: \'string\',\n type: \'String\',\n description: \'string\',\n required: false,\n order: 0\n }\n ],\n settings: {\n autoRefresh: {\n enabled: false,\n freshnessThresholdMinutes: 1\n },\n notifications: {\n enabled: true,\n recipients: [ /* ... */ ],\n defaultChannels: { /* ... */ },\n monitoredUseCases: [\'string\'],\n monitoredCodes: [\'string\'],\n rules: [ /* ... */ ],\n digest: { /* ... */ },\n muteUntil: \'1970-01-01T00:00:00.000Z\'\n }\n },\n integration_type: \'erp\',\n connector_config: {\n base_url: \'string\',\n auth: {\n type: \'oauth2_client_credentials\',\n token_url: \'string\',\n client_id: \'string\',\n client_secret: \'string\',\n scope: \'string\',\n audience: \'string\',\n resource: \'string\',\n body_params: {},\n headers: {},\n query_params: {},\n api_key_header: \'string\',\n api_key: \'string\',\n token: \'string\'\n },\n types_versions: [\n { /* ... */ }\n ],\n latest_types_version: \'string\',\n latest_types_package_name: \'string\'\n },\n protected: true,\n _manifest: [\'string\']\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",\n "orgId": "string",\n "created_at": "1970-01-01T00:00:00.000Z",\n "updated_at": "1970-01-01T00:00:00.000Z",\n "name": "string",\n "description": "string",\n "access_token_ids": ["string"],\n "app_ids": ["string"],\n "environment_config": [\n {\n "key": "string",\n "label": "string",\n "type": "String",\n "description": "string",\n "required": false,\n "order": 0\n }\n ],\n "settings": {\n "autoRefresh": {\n "enabled": false,\n "freshnessThresholdMinutes": 1\n },\n "notifications": {\n "enabled": true,\n "recipients": [],\n "defaultChannels": {},\n "monitoredUseCases": ["string"],\n "monitoredCodes": ["string"],\n "rules": [],\n "digest": {},\n "muteUntil": "1970-01-01T00:00:00.000Z"\n }\n },\n "integration_type": "erp",\n "connector_config": {\n "base_url": "string",\n "auth": {\n "type": "oauth2_client_credentials",\n "token_url": "string",\n "client_id": "string",\n "client_secret": "string",\n "scope": "string",\n "audience": "string",\n "resource": "string",\n "body_params": {},\n "headers": {},\n "query_params": {},\n "api_key_header": "string",\n "api_key": "string",\n "token": "string"\n },\n "types_versions": [\n {}\n ],\n "latest_types_version": "string",\n "latest_types_package_name": "string"\n },\n "protected": true,\n "_manifest": ["string"]\n}\n```\n\n</details>\n\n---\n\n### `getIntegration`\n\nRetrieve a specific integration by its ID\n\n`GET /v1/integrations/{integrationId}`\n\n```ts\nconst { data } = await client.getIntegration({\n integrationId: \'example\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",\n "orgId": "string",\n "created_at": "1970-01-01T00:00:00.000Z",\n "updated_at": "1970-01-01T00:00:00.000Z",\n "name": "string",\n "description": "string",\n "access_token_ids": ["string"],\n "app_ids": ["string"],\n "environment_config": [\n {\n "key": "string",\n "label": "string",\n "type": "String",\n "description": "string",\n "required": false,\n "order": 0\n }\n ],\n "settings": {\n "autoRefresh": {\n "enabled": false,\n "freshnessThresholdMinutes": 1\n },\n "notifications": {\n "enabled": true,\n "recipients": [],\n "defaultChannels": {},\n "monitoredUseCases": ["string"],\n "monitoredCodes": ["string"],\n "rules": [],\n "digest": {},\n "muteUntil": "1970-01-01T00:00:00.000Z"\n }\n },\n "integration_type": "erp",\n "connector_config": {\n "base_url": "string",\n "auth": {\n "type": "oauth2_client_credentials",\n "token_url": "string",\n "client_id": "string",\n "client_secret": "string",\n "scope": "string",\n "audience": "string",\n "resource": "string",\n "body_params": {},\n "headers": {},\n "query_params": {},\n "api_key_header": "string",\n "api_key": "string",\n "token": "string"\n },\n "types_versions": [\n {}\n ],\n "latest_types_version": "string",\n "latest_types_package_name": "string"\n },\n "protected": true,\n "_manifest": ["string"]\n}\n```\n\n</details>\n\n---\n\n### `updateIntegration`\n\nUpdate an existing integration configuration\n\n`PUT /v1/integrations/{integrationId}`\n\n```ts\nconst { data } = await client.updateIntegration(\n {\n integrationId: \'example\',\n },\n {},\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",\n "orgId": "string",\n "created_at": "1970-01-01T00:00:00.000Z",\n "updated_at": "1970-01-01T00:00:00.000Z",\n "name": "string",\n "description": "string",\n "access_token_ids": ["string"],\n "app_ids": ["string"],\n "environment_config": [\n {\n "key": "string",\n "label": "string",\n "type": "String",\n "description": "string",\n "required": false,\n "order": 0\n }\n ],\n "settings": {\n "autoRefresh": {\n "enabled": false,\n "freshnessThresholdMinutes": 1\n },\n "notifications": {\n "enabled": true,\n "recipients": [],\n "defaultChannels": {},\n "monitoredUseCases": ["string"],\n "monitoredCodes": ["string"],\n "rules": [],\n "digest": {},\n "muteUntil": "1970-01-01T00:00:00.000Z"\n }\n },\n "integration_type": "erp",\n "connector_config": {\n "base_url": "string",\n "auth": {\n "type": "oauth2_client_credentials",\n "token_url": "string",\n "client_id": "string",\n "client_secret": "string",\n "scope": "string",\n "audience": "string",\n "resource": "string",\n "body_params": {},\n "headers": {},\n "query_params": {},\n "api_key_header": "string",\n "api_key": "string",\n "token": "string"\n },\n "types_versions": [\n {}\n ],\n "latest_types_version": "string",\n "latest_types_package_name": "string"\n },\n "protected": true,\n "_manifest": ["string"]\n}\n```\n\n</details>\n\n---\n\n### `deleteIntegration`\n\nDelete an integration and all its use cases\n\n`DELETE /v1/integrations/{integrationId}`\n\n```ts\nconst { data } = await client.deleteIntegration({\n integrationId: \'example\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "message": "string"\n}\n```\n\n</details>\n\n---\n\n### `queryEvents`\n\nQuery events for a specific integration\n\n`POST /v1/integrations/{integrationId}/events`\n\n```ts\nconst { data } = await client.queryEvents(\n {\n integrationId: \'example\',\n },\n {\n event_id: \'string\',\n event_type: \'CREATE\',\n correlation_id: \'string\',\n object_type: \'string\',\n event_name: \'string\',\n use_case_id: \'string\',\n limit: 25,\n cursor: {\n event_time: \'2025-10-31T12:34:56Z\',\n event_id: \'evt_1234567890abcdef\'\n }\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "data": [\n {\n "event_type": "CREATE",\n "object_type": "string",\n "timestamp": "1970-01-01T00:00:00.000Z",\n "format": "json",\n "payload": "string",\n "deduplication_id": "evt-2025-05-01-12345-create-bp",\n "correlation_id": "bp-8f3a2c-7d4e-4b1a-9c2f-1e6d5a4b3c21",\n "use_case_id": "string"\n }\n ],\n "next_cursor": {\n "event_time": "2025-10-31T12:34:56Z",\n "event_id": "evt_1234567890abcdef"\n },\n "has_more": true\n}\n```\n\n</details>\n\n---\n\n### `replayEvents`\n\nReplay one or more events for a specific integration. Events will be re-processed with their original payloads but with a new correlation ID for traceability.\n\n`POST /v1/integrations/{integrationId}/events/replay`\n\n```ts\nconst { data } = await client.replayEvents(\n {\n integrationId: \'example\',\n },\n {\n event_ids: [\'string\']\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "replayed": 2,\n "results": [\n {\n "event_id": "string",\n "status": "success",\n "replay_event_id": "string",\n "message": "string"\n }\n ],\n "event_ids": ["string"]\n}\n```\n\n</details>\n\n---\n\n### `listUseCases`\n\nRetrieve all use cases for a specific integration\n\n`GET /v1/integrations/{integrationId}/use-cases`\n\n```ts\nconst { data } = await client.listUseCases({\n integrationId: \'example\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "use_cases": [\n {\n "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",\n "integrationId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",\n "name": "string",\n "slug": "string",\n "type": "inbound",\n "enabled": true,\n "change_description": "string",\n "changed_by": "string",\n "created_at": "1970-01-01T00:00:00.000Z",\n "updated_at": "1970-01-01T00:00:00.000Z",\n "configuration": {}\n }\n ]\n}\n```\n\n</details>\n\n---\n\n### `createUseCase`\n\nCreate a new use case for an integration\n\n`POST /v1/integrations/{integrationId}/use-cases`\n\n```ts\nconst { data } = await client.createUseCase(\n {\n integrationId: \'example\',\n },\n {\n name: \'string\',\n slug: \'string\',\n enabled: true,\n type: \'inbound\',\n configuration: {\n direct: true,\n entities: [\n { /* ... */ }\n ],\n meter_readings: [\n { /* ... */ }\n ]\n }\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",\n "integrationId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",\n "name": "string",\n "slug": "string",\n "type": "inbound",\n "enabled": true,\n "change_description": "string",\n "changed_by": "string",\n "created_at": "1970-01-01T00:00:00.000Z",\n "updated_at": "1970-01-01T00:00:00.000Z",\n "configuration": {\n "direct": true,\n "entities": [\n {}\n ],\n "meter_readings": [\n {}\n ]\n }\n}\n```\n\n</details>\n\n---\n\n### `getUseCase`\n\nRetrieve a specific use case by its ID\n\n`GET /v1/integrations/{integrationId}/use-cases/{useCaseId}`\n\n```ts\nconst { data } = await client.getUseCase({\n integrationId: \'example\',\n useCaseId: \'example\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",\n "integrationId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",\n "name": "string",\n "slug": "string",\n "type": "inbound",\n "enabled": true,\n "change_description": "string",\n "changed_by": "string",\n "created_at": "1970-01-01T00:00:00.000Z",\n "updated_at": "1970-01-01T00:00:00.000Z",\n "configuration": {\n "direct": true,\n "entities": [\n {}\n ],\n "meter_readings": [\n {}\n ]\n }\n}\n```\n\n</details>\n\n---\n\n### `updateUseCase`\n\nUpdate an existing use case configuration\n\n`PUT /v1/integrations/{integrationId}/use-cases/{useCaseId}`\n\n```ts\nconst { data } = await client.updateUseCase(\n {\n integrationId: \'example\',\n useCaseId: \'example\',\n },\n {\n name: \'string\',\n slug: \'string\',\n enabled: true,\n change_description: \'string\',\n type: \'inbound\',\n configuration: {\n direct: true,\n entities: [\n { /* ... */ }\n ],\n meter_readings: [\n { /* ... */ }\n ]\n }\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",\n "integrationId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",\n "name": "string",\n "slug": "string",\n "type": "inbound",\n "enabled": true,\n "change_description": "string",\n "changed_by": "string",\n "created_at": "1970-01-01T00:00:00.000Z",\n "updated_at": "1970-01-01T00:00:00.000Z",\n "configuration": {\n "direct": true,\n "entities": [\n {}\n ],\n "meter_readings": [\n {}\n ]\n }\n}\n```\n\n</details>\n\n---\n\n### `deleteUseCase`\n\nDelete a use case from an integration\n\n`DELETE /v1/integrations/{integrationId}/use-cases/{useCaseId}`\n\n```ts\nconst { data } = await client.deleteUseCase({\n integrationId: \'example\',\n useCaseId: \'example\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "message": "string"\n}\n```\n\n</details>\n\n---\n\n### `listUseCaseHistory`\n\nRetrieve historical versions of a use case\'s configuration.\nHistory entries are returned in reverse chronological order (newest first).\nUse the \'cursor\' parameter for pagination to fetch additional en\n\n`GET /v1/integrations/{integrationId}/use-cases/{useCaseId}/history`\n\n```ts\nconst { data } = await client.listUseCaseHistory({\n integrationId: \'example\',\n useCaseId: \'example\',\n cursor: \'example\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "history": [\n {\n "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",\n "useCaseId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",\n "integrationId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",\n "name": "string",\n "slug": "string",\n "enabled": true,\n "change_description": "string",\n "changed_by": "string",\n "created_at": "1970-01-01T00:00:00.000Z",\n "updated_at": "1970-01-01T00:00:00.000Z",\n "history_created_at": "1970-01-01T00:00:00.000Z",\n "type": "inbound",\n "configuration": {}\n }\n ],\n "next_cursor": "string"\n}\n```\n\n</details>\n\n---\n\n### `listDocumentationPages`\n\nRetrieve all documentation pages of an integration, without their markdown content.\nAn integration has at most one general page plus at most one page per use case.\nThe page id is \'general\' for the int\n\n`GET /v1/integrations/{integrationId}/documentation`\n\n```ts\nconst { data } = await client.listDocumentationPages({\n integrationId: \'example\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "pages": [\n {\n "id": "general",\n "integration_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",\n "scope": "integration",\n "use_case_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",\n "title": "string",\n "created_at": "1970-01-01T00:00:00.000Z",\n "created_by": "string",\n "updated_at": "1970-01-01T00:00:00.000Z",\n "updated_by": "string"\n }\n ]\n}\n```\n\n</details>\n\n---\n\n### `getDocumentationPage`\n\nRetrieve a single documentation page including its markdown content\n\n`GET /v1/integrations/{integrationId}/documentation/{docId}`\n\n```ts\nconst { data } = await client.getDocumentationPage({\n integrationId: \'example\',\n docId: \'example\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "id": "general",\n "integration_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",\n "scope": "integration",\n "use_case_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",\n "title": "string",\n "created_at": "1970-01-01T00:00:00.000Z",\n "created_by": "string",\n "updated_at": "1970-01-01T00:00:00.000Z",\n "updated_by": "string",\n "content": "string"\n}\n```\n\n</details>\n\n---\n\n### `upsertDocumentationPage`\n\nCreate or update the documentation page identified by docId.\nUpsert semantics enforce the invariant of one general page per\nintegration and one page per use case. For use case pages the\nuse case must \n\n`PUT /v1/integrations/{integrationId}/documentation/{docId}`\n\n```ts\nconst { data } = await client.upsertDocumentationPage(\n {\n integrationId: \'example\',\n docId: \'example\',\n },\n {\n title: \'string\',\n content: \'string\'\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "id": "general",\n "integration_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",\n "scope": "integration",\n "use_case_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",\n "title": "string",\n "created_at": "1970-01-01T00:00:00.000Z",\n "created_by": "string",\n "updated_at": "1970-01-01T00:00:00.000Z",\n "updated_by": "string",\n "content": "string"\n}\n```\n\n</details>\n\n---\n\n### `deleteDocumentationPage`\n\nDelete a documentation page\n\n`DELETE /v1/integrations/{integrationId}/documentation/{docId}`\n\n```ts\nconst { data } = await client.deleteDocumentationPage({\n integrationId: \'example\',\n docId: \'example\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "message": "string"\n}\n```\n\n</details>\n\n---\n\n### `listIntegrationsV2`\n\nRetrieve all integrations with embedded use cases for the authenticated organization\n\n`GET /v2/integrations`\n\n```ts\nconst { data } = await client.listIntegrationsV2()\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "integrations": [\n {\n "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",\n "orgId": "string",\n "created_at": "1970-01-01T00:00:00.000Z",\n "updated_at": "1970-01-01T00:00:00.000Z",\n "name": "string",\n "description": "string",\n "access_token_ids": ["string"],\n "app_ids": ["string"],\n "environment_config": [],\n "settings": {},\n "integration_type": "erp",\n "connector_config": {},\n "protected": true,\n "_manifest": ["string"],\n "use_cases": []\n }\n ]\n}\n```\n\n</details>\n\n---\n\n### `createIntegrationV2`\n\nCreate a new integration with embedded use cases.\n\n`POST /v2/integrations`\n\n```ts\nconst { data } = await client.createIntegrationV2(\n null,\n {\n name: \'string\',\n description: \'string\',\n access_token_ids: [\'string\'],\n app_ids: [\'string\'],\n environment_config: [\n {\n key: \'string\',\n label: \'string\',\n type: \'String\',\n description: \'string\',\n required: false,\n order: 0\n }\n ],\n settings: {\n autoRefresh: {\n enabled: false,\n freshnessThresholdMinutes: 1\n },\n notifications: {\n enabled: true,\n recipients: [ /* ... */ ],\n defaultChannels: { /* ... */ },\n monitoredUseCases: [\'string\'],\n monitoredCodes: [\'string\'],\n rules: [ /* ... */ ],\n digest: { /* ... */ },\n muteUntil: \'1970-01-01T00:00:00.000Z\'\n }\n },\n integration_type: \'erp\',\n connector_config: {\n base_url: \'string\',\n auth: {\n type: \'oauth2_client_credentials\',\n token_url: \'string\',\n client_id: \'string\',\n client_secret: \'string\',\n scope: \'string\',\n audience: \'string\',\n resource: \'string\',\n body_params: {},\n headers: {},\n query_params: {},\n api_key_header: \'string\',\n api_key: \'string\',\n token: \'string\'\n },\n types_versions: [\n { /* ... */ }\n ],\n latest_types_version: \'string\',\n latest_types_package_name: \'string\'\n },\n protected: true,\n _manifest: [\'string\'],\n use_cases: [\n {\n id: \'3fa85f64-5717-4562-b3fc-2c963f66afa6\',\n name: \'string\',\n slug: \'string\',\n enabled: true,\n change_description: \'string\',\n type: \'inbound\',\n configuration: { /* ... */ }\n }\n ]\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",\n "orgId": "string",\n "created_at": "1970-01-01T00:00:00.000Z",\n "updated_at": "1970-01-01T00:00:00.000Z",\n "name": "string",\n "description": "string",\n "access_token_ids": ["string"],\n "app_ids": ["string"],\n "environment_config": [\n {\n "key": "string",\n "label": "string",\n "type": "String",\n "description": "string",\n "required": false,\n "order": 0\n }\n ],\n "settings": {\n "autoRefresh": {\n "enabled": false,\n "freshnessThresholdMinutes": 1\n },\n "notifications": {\n "enabled": true,\n "recipients": [],\n "defaultChannels": {},\n "monitoredUseCases": ["string"],\n "monitoredCodes": ["string"],\n "rules": [],\n "digest": {},\n "muteUntil": "1970-01-01T00:00:00.000Z"\n }\n },\n "integration_type": "erp",\n "connector_config": {\n "base_url": "string",\n "auth": {\n "type": "oauth2_client_credentials",\n "token_url": "string",\n "client_id": "string",\n "client_secret": "string",\n "scope": "string",\n "audience": "string",\n "resource": "string",\n "body_params": {},\n "headers": {},\n "query_params": {},\n "api_key_header": "string",\n "api_key": "string",\n "token": "string"\n },\n "types_versions": [\n {}\n ],\n "latest_types_version": "string",\n "latest_types_package_name": "string"\n },\n "protected": true,\n "_manifest": ["string"],\n "use_cases": [\n {\n "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",\n "integrationId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",\n "name": "string",\n "slug": "string",\n "type": "inbound",\n "enabled": true,\n "change_description": "string",\n "changed_by": "string",\n "created_at": "1970-01-01T00:00:00.000Z",\n "updated_at": "1970-01-01T00:00:00.000Z",\n "configuration": {}\n }\n ]\n}\n```\n\n</details>\n\n---\n\n### `getIntegrationV2`\n\nRetrieve a specific integration with all its embedded use cases\n\n`GET /v2/integrations/{integrationId}`\n\n```ts\nconst { data } = await client.getIntegrationV2({\n integrationId: \'example\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",\n "orgId": "string",\n "created_at": "1970-01-01T00:00:00.000Z",\n "updated_at": "1970-01-01T00:00:00.000Z",\n "name": "string",\n "description": "string",\n "access_token_ids": ["string"],\n "app_ids": ["string"],\n "environment_config": [\n {\n "key": "string",\n "label": "string",\n "type": "String",\n "description": "string",\n "required": false,\n "order": 0\n }\n ],\n "settings": {\n "autoRefresh": {\n "enabled": false,\n "freshnessThresholdMinutes": 1\n },\n "notifications": {\n "enabled": true,\n "recipients": [],\n "defaultChannels": {},\n "monitoredUseCases": ["string"],\n "monitoredCodes": ["string"],\n "rules": [],\n "digest": {},\n "muteUntil": "1970-01-01T00:00:00.000Z"\n }\n },\n "integration_type": "erp",\n "connector_config": {\n "base_url": "string",\n "auth": {\n "type": "oauth2_client_credentials",\n "token_url": "string",\n "client_id": "string",\n "client_secret": "string",\n "scope": "string",\n "audience": "string",\n "resource": "string",\n "body_params": {},\n "headers": {},\n "query_params": {},\n "api_key_header": "string",\n "api_key": "string",\n "token": "string"\n },\n "types_versions": [\n {}\n ],\n "latest_types_version": "string",\n "latest_types_package_name": "string"\n },\n "protected": true,\n "_manifest": ["string"],\n "use_cases": [\n {\n "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",\n "integrationId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",\n "name": "string",\n "slug": "string",\n "type": "inbound",\n "enabled": true,\n "change_description": "string",\n "changed_by": "string",\n "created_at": "1970-01-01T00:00:00.000Z",\n "updated_at": "1970-01-01T00:00:00.000Z",\n "configuration": {}\n }\n ]\n}\n```\n\n</details>\n\n---\n\n### `updateIntegrationV2`\n\nUpdate an existing integration with embedded use cases.\nThe integration must already exist.\nUse cases are updated declaratively:\n- Use cases in the request with matching IDs are updated\n- Use cases in\n\n`PUT /v2/integrations/{integrationId}`\n\n```ts\nconst { data } = await client.updateIntegrationV2(\n {\n integrationId: \'example\',\n },\n {\n name: \'string\',\n description: \'string\',\n access_token_ids: [\'string\'],\n app_ids: [\'string\'],\n environment_config: [\n {\n key: \'string\',\n label: \'string\',\n type: \'String\',\n description: \'string\',\n required: false,\n order: 0\n }\n ],\n settings: {\n autoRefresh: {\n enabled: false,\n freshnessThresholdMinutes: 1\n },\n notifications: {\n enabled: true,\n recipients: [ /* ... */ ],\n defaultChannels: { /* ... */ },\n monitoredUseCases: [\'string\'],\n monitoredCodes: [\'string\'],\n rules: [ /* ... */ ],\n digest: { /* ... */ },\n muteUntil: \'1970-01-01T00:00:00.000Z\'\n }\n },\n integration_type: \'erp\',\n connector_config: {\n base_url: \'string\',\n auth: {\n type: \'oauth2_client_credentials\',\n token_url: \'string\',\n client_id: \'string\',\n client_secret: \'string\',\n scope: \'string\',\n audience: \'string\',\n resource: \'string\',\n body_params: {},\n headers: {},\n query_params: {},\n api_key_header: \'string\',\n api_key: \'string\',\n token: \'string\'\n },\n types_versions: [\n { /* ... */ }\n ],\n latest_types_version: \'string\',\n latest_types_package_name: \'string\'\n },\n protected: true,\n _manifest: [\'string\'],\n use_cases: [\n {\n id: \'3fa85f64-5717-4562-b3fc-2c963f66afa6\',\n name: \'string\',\n slug: \'string\',\n enabled: true,\n change_description: \'string\',\n type: \'inbound\',\n configuration: { /* ... */ }\n }\n ]\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",\n "orgId": "string",\n "created_at": "1970-01-01T00:00:00.000Z",\n "updated_at": "1970-01-01T00:00:00.000Z",\n "name": "string",\n "description": "string",\n "access_token_ids": ["string"],\n "app_ids": ["string"],\n "environment_config": [\n {\n "key": "string",\n "label": "string",\n "type": "String",\n "description": "string",\n "required": false,\n "order": 0\n }\n ],\n "settings": {\n "autoRefresh": {\n "enabled": false,\n "freshnessThresholdMinutes": 1\n },\n "notifications": {\n "enabled": true,\n "recipients": [],\n "defaultChannels": {},\n "monitoredUseCases": ["string"],\n "monitoredCodes": ["string"],\n "rules": [],\n "digest": {},\n "muteUntil": "1970-01-01T00:00:00.000Z"\n }\n },\n "integration_type": "erp",\n "connector_config": {\n "base_url": "string",\n "auth": {\n "type": "oauth2_client_credentials",\n "token_url": "string",\n "client_id": "string",\n "client_secret": "string",\n "scope": "string",\n "audience": "string",\n "resource": "string",\n "body_params": {},\n "headers": {},\n "query_params": {},\n "api_key_header": "string",\n "api_key": "string",\n "token": "string"\n },\n "types_versions": [\n {}\n ],\n "latest_types_version": "string",\n "latest_types_package_name": "string"\n },\n "protected": true,\n "_manifest": ["string"],\n "use_cases": [\n {\n "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",\n "integrationId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",\n "name": "string",\n "slug": "string",\n "type": "inbound",\n "enabled": true,\n "change_description": "string",\n "changed_by": "string",\n "created_at": "1970-01-01T00:00:00.000Z",\n "updated_at": "1970-01-01T00:00:00.000Z",\n "configuration": {}\n }\n ]\n}\n```\n\n</details>\n\n---\n\n### `deleteIntegrationV2`\n\nDelete an integration and all its use cases\n\n`DELETE /v2/integrations/{integrationId}`\n\n```ts\nconst { data } = await client.deleteIntegrationV2({\n integrationId: \'example\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "message": "string"\n}\n```\n\n</details>\n\n---\n\n### `listNotificationHistory`\n\nReturns the cursor-paginated, newest-first notification history for an\nintegration (every real notification decision \u2014 both fired and suppressed).\nRequires the `integration:view` permission on the int\n\n`GET /v2/integrations/{integrationId}/notifications/history`\n\n```ts\nconst { data } = await client.listNotificationHistory({\n integrationId: \'example\',\n cursor: \'example\',\n limit: 1,\n type: \'example\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "history": [\n {\n "id": "string",\n "type": "string",\n "state_transition": "string",\n "severity": "error",\n "title": "string",\n "occurred_at": "1970-01-01T00:00:00.000Z",\n "notified": true,\n "suppressed_reason": "muted",\n "recipients": ["string"],\n "context": {},\n "created_at": "1970-01-01T00:00:00.000Z"\n }\n ],\n "next_cursor": "string"\n}\n```\n\n</details>\n\n---\n\n### `testSendNotification`\n\nRenders and sends ONE representative notification of the requested kind/type to\nthe CALLING USER ONLY (never any other recipient), so an operator can preview how\na notification looks. A test send does\n\n`POST /v2/integrations/{integrationId}/notifications/test`\n\n```ts\nconst { data } = await client.testSendNotification(\n {\n integrationId: \'example\',\n },\n {\n kind: \'alert\',\n type: \'string\',\n channels: [\'email\']\n },\n)\n```\n\n---\n\n### `getNotificationStatus`\n\nReturns the live per-rule alert state and (for \'auto\' rules) the current\nhour-of-week baseline band for an integration\'s notification monitoring.\nReflects the latest 5-minute sweep \u2014 near-real-time, n\n\n`GET /v2/integrations/{integrationId}/notifications/status`\n\n```ts\nconst { data } = await client.getNotificationStatus({\n integrationId: \'example\',\n include: \'example\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "health": "healthy",\n "evaluated_at": "1970-01-01T00:00:00.000Z",\n "rules": [\n {\n "rule_id": "string",\n "state": "ok",\n "last_fired_at": "1970-01-01T00:00:00.000Z",\n "last_cleared_at": "1970-01-01T00:00:00.000Z",\n "baseline": {\n "is_mature": true,\n "computed_at": "1970-01-01T00:00:00.000Z",\n "median": 0,\n "mad": 0,\n "upper": 0,\n "buckets": [\n {\n "dow": 1,\n "hour": 0,\n "median": 0,\n "mad": 0\n }\n ]\n }\n }\n ]\n}\n```\n\n</details>\n\n---\n\n### `getSecureProxyWhitelist`\n\nReturns the current allowed_domains, allowed_ips, and vpc_mode for a secure_proxy use case.\nStaff-only \u2014 gated by internal-auth issuer AND admin-portal Cognito user pool membership.\nRejects Login-As t\n\n`GET /v2/integrations/{integrationId}/use-cases/{useCaseId}/secure-proxy-whitelist`\n\n```ts\nconst { data } = await client.getSecureProxyWhitelist({\n integrationId: \'example\',\n useCaseId: \'example\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "vpc_mode": "static_ip",\n "allowed_domains": ["string"],\n "allowed_ips": ["string"]\n}\n```\n\n</details>\n\n---\n\n### `updateSecureProxyWhitelist`\n\nReplaces allowed_domains and/or allowed_ips on a secure_proxy use case.\nAt least one of the two fields is required. Validation mirrors the CLI\'s\n`validateDomainPatterns` / `validateCidrs`. Writes a US\n\n`PUT /v2/integrations/{integrationId}/use-cases/{useCaseId}/secure-proxy-whitelist`\n\n```ts\nconst { data } = await client.updateSecureProxyWhitelist(\n {\n integrationId: \'example\',\n useCaseId: \'example\',\n },\n {\n allowed_domains: [\'string\'],\n allowed_ips: [\'string\']\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "vpc_mode": "static_ip",\n "allowed_domains": ["string"],\n "allowed_ips": ["string"]\n}\n```\n\n</details>\n\n---\n\n### `listSecureProxyWhitelistHistory`\n\nReturns the most recent USECASE_HISTORY entries for a secure_proxy use case,\nin reverse chronological order (newest first). Each entry includes the\nactor email (`changed_by`), the ISO-8601 timestamp (\n\n`GET /v2/integrations/{integrationId}/use-cases/{useCaseId}/secure-proxy-whitelist/history`\n\n```ts\nconst { data } = await client.listSecureProxyWhitelistHistory({\n integrationId: \'example\',\n useCaseId: \'example\',\n limit: 1,\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "history": [\n {\n "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",\n "useCaseId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",\n "integrationId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",\n "name": "string",\n "slug": "string",\n "enabled": true,\n "change_description": "string",\n "changed_by": "string",\n "created_at": "1970-01-01T00:00:00.000Z",\n "updated_at": "1970-01-01T00:00:00.000Z",\n "history_created_at": "1970-01-01T00:00:00.000Z",\n "type": "secure_proxy",\n "configuration": {\n "vpc_mode": "static_ip",\n "allowed_domains": ["string"],\n "allowed_ips": ["string"]\n }\n }\n ]\n}\n```\n\n</details>\n\n---\n\n### `setIntegrationAppMapping`\n\nCreates or updates a mapping from an app/component to an integration.\nThis allows ERP updates sent via app_id and component_id to be associated\nwith a specific integration configuration.\n\n`PUT /v1/integrations/{integrationId}/app-mapping`\n\n```ts\nconst { data } = await client.setIntegrationAppMapping(\n {\n integrationId: \'example\',\n },\n {\n app_id: \'3fa85f64-5717-4562-b3fc-2c963f66afa6\',\n component_id: \'3fa85f64-5717-4562-b3fc-2c963f66afa6\',\n overwrite: false\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "integration_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6"\n}\n```\n\n</details>\n\n---\n\n### `deleteIntegrationAppMapping`\n\nRemoves a mapping from an app/component to an integration.\n\n`DELETE /v1/integrations/{integrationId}/app-mapping`\n\n```ts\nconst { data } = await client.deleteIntegrationAppMapping(\n {\n integrationId: \'example\',\n },\n {\n app_id: \'3fa85f64-5717-4562-b3fc-2c963f66afa6\',\n component_id: \'3fa85f64-5717-4562-b3fc-2c963f66afa6\'\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "message": "string"\n}\n```\n\n</details>\n\n---\n\n### `queryInboundMonitoringEvents`\n\nQuery inbound monitoring events for a specific integration.\nReturns detailed information about inbound sync events from ERP systems,\nincluding success rates, error breakdowns, and processing metrics.\n\n`POST /v1/integrations/{integrationId}/monitoring/inbound-events`\n\n```ts\nconst { data } = await client.queryInboundMonitoringEvents(\n {\n integrationId: \'example\',\n },\n {\n use_case_id: \'3fa85f64-5717-4562-b3fc-2c963f66afa6\',\n event_type: \'CREATE\',\n sync_type: \'entity\',\n status: \'success\',\n error_category: \'validation\',\n correlation_id: \'string\',\n object_type: \'string\',\n event_name: \'string\',\n event_id: \'string\',\n from_date: \'2025-01-01T00:00:00Z\',\n to_date: \'2025-01-31T23:59:59Z\',\n limit: 50,\n cursor: {\n completed_at: \'1970-01-01T00:00:00.000Z\',\n event_id: \'string\'\n }\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "data": [\n {\n "org_id": "string",\n "event_id": "string",\n "correlation_id": "string",\n "integration_id": "string",\n "use_case_id": "string",\n "event_type": "CREATE",\n "object_type": "string",\n "sync_type": "entity",\n "status": "success",\n "error_code": "string",\n "error_message": "string",\n "error_category": "validation",\n "processing_duration_ms": 0,\n "received_at": "1970-01-01T00:00:00.000Z",\n "completed_at": "1970-01-01T00:00:00.000Z"\n }\n ],\n "next_cursor": {\n "completed_at": "1970-01-01T00:00:00.000Z",\n "event_id": "string"\n },\n "has_more": true\n}\n```\n\n</details>\n\n---\n\n### `getMonitoringStats`\n\nGet aggregated statistics for both inbound and outbound monitoring events for a specific integration.\nReturns summary metrics for inbound (ERP sync) and outbound (webhook delivery) events,\nincluding s\n\n`POST /v1/integrations/{integrationId}/monitoring/stats`\n\n```ts\nconst { data } = await client.getMonitoringStats(\n {\n integrationId: \'example\',\n },\n {\n from_date: \'2025-01-01T00:00:00Z\',\n to_date: \'2025-01-31T23:59:59Z\',\n inbound_group_by: [\'use_case_id\', \'status\'],\n outbound_group_by: [\'event_name\', \'status\']\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "inbound": {\n "total_events": 0,\n "total_correlations": 0,\n "success_count": 0,\n "error_count": 0,\n "skipped_count": 0,\n "warning_count": 0,\n "success_rate": 0,\n "last_error_at": "1970-01-01T00:00:00.000Z",\n "breakdown": [\n {}\n ]\n },\n "outbound": {\n "total_events": 0,\n "success_count": 0,\n "error_count": 0,\n "pending_count": 0,\n "success_rate": 0,\n "last_error_at": "1970-01-01T00:00:00.000Z",\n "breakdown": [\n {}\n ]\n }\n}\n```\n\n</details>\n\n---\n\n### `getMonitoringTimeSeries`\n\nGet time-series aggregated event counts for monitoring charts.\nReturns pre-bucketed counts at configurable intervals for both inbound and outbound events.\nMaximum of 200 buckets per request. Returns 4\n\n`POST /v1/integrations/{integrationId}/monitoring/timeseries`\n\n```ts\nconst { data } = await client.getMonitoringTimeSeries(\n {\n integrationId: \'example\',\n },\n {\n from_date: \'2025-01-01T00:00:00Z\',\n to_date: \'2025-01-31T23:59:59Z\',\n interval: \'1h\',\n direction: \'both\'\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "interval": "5m",\n "from_date": "1970-01-01T00:00:00.000Z",\n "to_date": "1970-01-01T00:00:00.000Z",\n "buckets": [\n {\n "timestamp": "1970-01-01T00:00:00.000Z",\n "inbound": {\n "success_count": 0,\n "error_count": 0,\n "warning_count": 0,\n "skipped_count": 0,\n "total_count": 0\n },\n "outbound": {\n "success_count": 0,\n "error_count": 0,\n "pending_count": 0,\n "total_count": 0\n }\n }\n ]\n}\n```\n\n</details>\n\n---\n\n### `getOutboundStatus`\n\nGet the status of all outbound use cases for a specific integration.\nReturns conflict information when events or webhooks are disabled but the use case is enabled.\n\n`GET /v1/integrations/{integrationId}/outbound-status`\n\n```ts\nconst { data } = await client.getOutboundStatus({\n integrationId: \'example\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "useCases": [\n {\n "useCaseId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",\n "name": "string",\n "useCaseEnabled": true,\n "eventCatalogEvent": "contract.created",\n "eventEnabled": true,\n "webhooks": [\n {\n "webhookId": "string",\n "webhookName": "string",\n "enabled": true\n }\n ],\n "status": "ok",\n "conflicts": [\n {\n "type": "event_disabled",\n "webhookId": "string",\n "message": "string"\n }\n ],\n "poll": {\n "queue_depth": 0,\n "oldest_unconsumed_age_seconds": 0,\n "last_poll_at": "1970-01-01T00:00:00.000Z",\n "last_ack_at": "1970-01-01T00:00:00.000Z",\n "blocked": true,\n "dlq_count": 0\n },\n "file_proxy": [\n {\n "mapping_id": "string",\n "use_case_slug": "string",\n "resolved": true,\n "target_use_case_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",\n "target_enabled": true,\n "target_updated_at": "1970-01-01T00:00:00.000Z",\n "unresolved_reason": "not_found"\n }\n ]\n }\n ]\n}\n```\n\n</details>\n\n---\n\n### `getEntitySyncStatus`\n\nGet the inbound ERP sync status of an entity: when each integration last\nsynchronized (checked) the entity against the ERP, and when it last\nactually changed it. `last_synced_at` also advances on no-o\n\n`GET /v1/entities/{entityId}/sync-status`\n\n```ts\nconst { data } = await client.getEntitySyncStatus({\n entityId: \'example\',\n integration_id: \'example\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "entity_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",\n "sync_states": [\n {\n "entity_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",\n "integration_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",\n "entity_slug": "contract",\n "use_case_id": "string",\n "last_synced_at": "1970-01-01T00:00:00.000Z",\n "last_changed_at": "1970-01-01T00:00:00.000Z",\n "last_operation": "create",\n "last_event_id": "string",\n "readings_last_synced_at": "1970-01-01T00:00:00.000Z",\n "readings_last_operation": "upsert",\n "readings_last_event_id": "string"\n }\n ]\n}\n```\n\n</details>\n\n---\n\n### `pollOutboundMessages`\n\nPoll outbound messages for an integration\'s poll-mode use cases.\nTakes a lease on the head-of-line batch of the integration\'s FIFO stream:\nthe returned messages stay invisible to subsequent polls unti\n\n`POST /v1/integrations/{integrationId}/outbound/messages/poll`\n\n```ts\nconst { data } = await client.pollOutboundMessages(\n {\n integrationId: \'example\',\n },\n {\n limit: 10\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "messages": [\n {\n "id": "string",\n "lease_token": "string",\n "use_case_id": "string",\n "event_name": "string",\n "event_id": "string",\n "group": "string",\n "payload": {},\n "enqueued_at": "1970-01-01T00:00:00.000Z"\n }\n ],\n "visibility_timeout_seconds": 0,\n "has_more": true\n}\n```\n\n</details>\n\n---\n\n### `ackOutboundMessages`\n\nAcknowledge polled outbound messages. Acks are validated against the\nactive lease and committed as a prefix-contiguous cursor advance:\nmessages must be acknowledged in stream order. Out-of-order acks \n\n`POST /v1/integrations/{integrationId}/outbound/messages/ack`\n\n```ts\nconst { data } = await client.ackOutboundMessages(\n {\n integrationId: \'example\',\n },\n {\n acks: [\n {\n id: \'string\',\n lease_token: \'string\'\n }\n ]\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "results": [\n {\n "id": "string",\n "status": "accepted",\n "reason": "stale_lease"\n }\n ]\n}\n```\n\n</details>\n\n---\n\n### `listOutboundDlqMessages`\n\nList an integration\'s dead-lettered outbound queue messages\n(poison_policy enforcement and operator skips move messages here).\nOperator endpoint \u2014 requires the `integration:manage` grant. Message\npayl\n\n`GET /v1/integrations/{integrationId}/outbound/messages/dlq`\n\n```ts\nconst { data } = await client.listOutboundDlqMessages({\n integrationId: \'example\',\n limit: 1,\n next_token: \'example\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "items": [\n {\n "id": "string",\n "use_case_id": "string",\n "event_name": "string",\n "event_id": "string",\n "enqueued_at": "1970-01-01T00:00:00.000Z",\n "dead_lettered_at": "1970-01-01T00:00:00.000Z",\n "delivery_attempts": 0,\n "reason": "string",\n "expires_at": "1970-01-01T00:00:00.000Z"\n }\n ],\n "next_token": "string"\n}\n```\n\n</details>\n\n---\n\n### `redriveOutboundDlqMessages`\n\nRedrive selected dead-lettered messages back into the live stream.\nOperator endpoint \u2014 requires the `integration:manage` grant.\nA redriven message is re-enqueued at the tail with a new id and\nsequence\n\n`POST /v1/integrations/{integrationId}/outbound/messages/dlq/redrive`\n\n```ts\nconst { data } = await client.redriveOutboundDlqMessages(\n {\n integrationId: \'example\',\n },\n {\n ids: [\'string\']\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "results": [\n {\n "id": "string",\n "status": "redriven"\n }\n ]\n}\n```\n\n</details>\n\n---\n\n### `unblockOutboundStream`\n\nUnblock an integration\'s outbound stream halted by the `block`\npoison policy: skips (dead-letters) the current blocked head message,\nemitting MSG_DEAD_LETTERED and letting the next message become the\n\n\n`POST /v1/integrations/{integrationId}/outbound/messages/unblock`\n\n```ts\nconst { data } = await client.unblockOutboundStream(\n {\n integrationId: \'example\',\n },\n {\n reason: \'string\'\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "unblocked": true,\n "dead_lettered_id": "string"\n}\n```\n\n</details>\n\n---\n\n### `queryAccessLogs`\n\nQuery API access logs for a specific integration\'s organization.\nReturns access token usage analytics filtered by user_id (access token).\nSupports infinite scroll pagination with cursor-based navigati\n\n`POST /v1/integrations/{integrationId}/monitoring/access-logs`\n\n```ts\nconst { data } = await client.queryAccessLogs(\n {\n integrationId: \'example\',\n },\n {\n token_id: \'api_5ZugdRXasLfWBypHi93Fk\',\n service: \'entity\',\n method: \'GET\',\n path: \'/v1/entity\',\n status: 200,\n from_date: \'2025-01-01T00:00:00Z\',\n to_date: \'2025-01-31T23:59:59Z\',\n limit: 50,\n cursor: {\n timestamp: \'1970-01-01T00:00:00.000Z\',\n request_id: \'string\'\n }\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "data": [\n {\n "timestamp": "1970-01-01T00:00:00.000Z",\n "environment": "string",\n "service": "string",\n "request_id": "string",\n "method": "string",\n "path": "string",\n "status": 0,\n "response_latency_ms": 0,\n "response_length": 0,\n "token_id": "string",\n "org_id": "string",\n "origin": "string",\n "source_ip": "string"\n }\n ],\n "next_cursor": {\n "timestamp": "1970-01-01T00:00:00.000Z",\n "request_id": "string"\n },\n "has_more": true\n}\n```\n\n</details>\n\n---\n\n### `queryOutboundMonitoringEvents`\n\nQuery outbound monitoring events for a specific integration.\nReturns detailed information about outbound event deliveries,\nfiltered by event_name (event_catalog_event) linked to the integration\'s outb\n\n`POST /v1/integrations/{integrationId}/monitoring/outbound-events`\n\n```ts\nconst { data } = await client.queryOutboundMonitoringEvents(\n {\n integrationId: \'example\',\n },\n {\n event_name: \'automation_flow_target\',\n status: \'succeeded\',\n webhook_config_id: \'string\',\n from_date: \'2025-01-01T00:00:00Z\',\n to_date: \'2025-01-31T23:59:59Z\',\n limit: 50,\n cursor: {\n created_at: \'1970-01-01T00:00:00.000Z\',\n event_id: \'string\'\n }\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "data": [\n {\n "org_id": "string",\n "event_id": "string",\n "event_name": "string",\n "status": "succeeded",\n "url": "string",\n "http_method": "string",\n "http_response": {},\n "webhook_config_id": "string",\n "metadata": {},\n "execution_context": {},\n "payload": {},\n "created_at": "1970-01-01T00:00:00.000Z",\n "updated_at": "1970-01-01T00:00:00.000Z"\n }\n ],\n "next_cursor": {\n "created_at": "1970-01-01T00:00:00.000Z",\n "event_id": "string"\n },\n "has_more": true\n}\n```\n\n</details>\n\n---\n\n### `queryMonitoringEventsV2`\n\nQuery monitoring events from the unified erp_monitoring_v2 table.\nReturns all event types (inbound, outbound, file_proxy, etc.) in a single list.\nReplaces the separate v1 inbound-events and outbound-e\n\n`POST /v2/integrations/{integrationId}/monitoring/events`\n\n```ts\nconst { data } = await client.queryMonitoringEventsV2(\n {\n integrationId: \'example\',\n },\n {\n use_case_id: \'string\',\n use_case_type: \'inbound\',\n level: \'success\',\n code: \'string\',\n event_id: \'string\',\n correlation_id: \'string\',\n from_date: \'2025-01-01T00:00:00Z\',\n to_date: \'2025-01-31T23:59:59Z\',\n limit: 50,\n cursor: {\n created_at: \'1970-01-01T00:00:00.000Z\',\n id: \'3fa85f64-5717-4562-b3fc-2c963f66afa6\'\n }\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "data": [\n {\n "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",\n "org_id": "string",\n "integration_id": "string",\n "event_id": "string",\n "correlation_id": "string",\n "use_case_id": "string",\n "use_case_type": "inbound",\n "level": "success",\n "code": "string",\n "message": "string",\n "detail": {},\n "created_at": "1970-01-01T00:00:00.000Z"\n }\n ],\n "next_cursor": {\n "created_at": "1970-01-01T00:00:00.000Z",\n "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6"\n },\n "has_more": true\n}\n```\n\n</details>\n\n---\n\n### `getMonitoringStatsV2`\n\nGet aggregated statistics from the unified erp_monitoring_v2 table.\nReturns combined metrics for all event types with optional breakdowns.\n\n`POST /v2/integrations/{integrationId}/monitoring/stats`\n\n```ts\nconst { data } = await client.getMonitoringStatsV2(\n {\n integrationId: \'example\',\n },\n {\n from_date: \'2025-01-01T00:00:00Z\',\n to_date: \'2025-01-31T23:59:59Z\',\n use_case_type: \'inbound\',\n use_case_types: [\'inbound\'],\n group_by: \'use_case_id\',\n source: \'monitoring\'\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "total_events": 0,\n "success_count": 0,\n "error_count": 0,\n "warning_count": 0,\n "skipped_count": 0,\n "ack_timeout_count": 0,\n "success_rate": 0,\n "last_error_at": "1970-01-01T00:00:00.000Z",\n "breakdown": [\n {}\n ]\n}\n```\n\n</details>\n\n---\n\n### `getMonitoringTimeSeriesV2`\n\nGet time-series aggregated event counts from the unified erp_monitoring_v2 table.\nReturns bucketed counts for chart rendering.\n\n`POST /v2/integrations/{integrationId}/monitoring/time-series`\n\n```ts\nconst { data } = await client.getMonitoringTimeSeriesV2(\n {\n integrationId: \'example\',\n },\n {\n from_date: \'2025-01-01T00:00:00Z\',\n to_date: \'2025-01-31T23:59:59Z\',\n interval: \'5m\',\n use_case_type: \'inbound\',\n group_by: \'use_case_type\'\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "interval": "5m",\n "from_date": "1970-01-01T00:00:00.000Z",\n "to_date": "1970-01-01T00:00:00.000Z",\n "buckets": [\n {\n "timestamp": "1970-01-01T00:00:00.000Z",\n "success_count": 0,\n "error_count": 0,\n "warning_count": 0,\n "skipped_count": 0,\n "total_count": 0,\n "breakdown": [\n {\n "use_case_type": "inbound",\n "use_case_id": "string",\n "success_count": 0,\n "error_count": 0,\n "warning_count": 0,\n "skipped_count": 0,\n "total_count": 0\n }\n ]\n }\n ]\n}\n```\n\n</details>\n\n---\n\n### `getAssociatedMonitoringEvents`\n\nReturns all monitoring events sharing the same event_id, ordered chronologically.\nAlso includes the original inbound event payload from erp_incoming_events if available.\nUsed to display a full event t\n\n`GET /v2/integrations/{integrationId}/monitoring/events/{eventId}/associated`\n\n```ts\nconst { data } = await client.getAssociatedMonitoringEvents({\n integrationId: \'example\',\n eventId: \'example\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "monitoring_events": [\n {\n "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",\n "org_id": "string",\n "integration_id": "string",\n "event_id": "string",\n "correlation_id": "string",\n "use_case_id": "string",\n "use_case_type": "inbound",\n "level": "success",\n "code": "string",\n "message": "string",\n "detail": {},\n "created_at": "1970-01-01T00:00:00.000Z"\n }\n ],\n "inbound_event": {}\n}\n```\n\n</details>\n\n---\n\n### `ingestExternalMonitoringEvents`\n\nIngest monitoring spans produced by an EXTERNAL system (e.g. an integration\nmiddleware), so the Integration Hub is the central monitoring point and the\ncross-system event trace spans both the external\n\n`POST /v2/integrations/{integrationId}/monitoring/external-events`\n\n```ts\nconst { data } = await client.ingestExternalMonitoringEvents(\n {\n integrationId: \'example\',\n },\n {\n events: [\n {\n correlation_id: \'string\',\n level: \'string\',\n use_case_slug: \'string\',\n occurred_at: \'1970-01-01T00:00:00.000Z\',\n message: \'string\',\n detail: {}\n }\n ]\n },\n)\n```\n\n---\n\n### `getMonitoringTraceByCorrelation`\n\nReturns the cross-system event trace for a `correlation_id`: every monitoring\nspan sharing it \u2014 external spans (middleware) plus epilot\'s own processing spans\n\u2014 ordered chronologically, with a rolled-\n\n`GET /v2/integrations/{integrationId}/monitoring/traces/{correlationId}`\n\n```ts\nconst { data } = await client.getMonitoringTraceByCorrelation({\n integrationId: \'example\',\n correlationId: \'example\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "correlation_id": "string",\n "status": "success",\n "started_at": "1970-01-01T00:00:00.000Z",\n "ended_at": "1970-01-01T00:00:00.000Z",\n "span_count": 0,\n "truncated": true,\n "spans": [\n {\n "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",\n "org_id": "string",\n "integration_id": "string",\n "event_id": "string",\n "correlation_id": "string",\n "use_case_id": "string",\n "use_case_type": "inbound",\n "level": "success",\n "code": "string",\n "message": "string",\n "detail": {},\n "created_at": "1970-01-01T00:00:00.000Z"\n }\n ],\n "inbound_event": {}\n}\n```\n\n</details>\n\n---\n\n### `listSecureProxies`\n\nLists all secure_proxy use cases across all integrations for the authenticated organization.\nReturns minimal data suitable for dropdowns and selection UIs.\n\n`GET /v1/integrations/secure-proxies`\n\n```ts\nconst { data } = await client.listSecureProxies()\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "secure_proxies": [\n {\n "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",\n "name": "string",\n "slug": "string",\n "enabled": true,\n "vpc_mode": "static_ip",\n "allowed_domains": ["string"],\n "allowed_ips": ["string"],\n "integration_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",\n "integration_name": "string"\n }\n ]\n}\n```\n\n</details>\n\n---\n\n### `secureProxy`\n\nRoutes an HTTP request through a VPC with either static IP egress or VPN secure link access.\nThe VPC mode is determined by the referenced secure_proxy use case configuration.\nFor secure_link mode, the\n\n`POST /v1/secure-proxy`\n\n```ts\nconst { data } = await client.secureProxy(\n null,\n {\n integration_id: \'3fa85f64-5717-4562-b3fc-2c963f66afa6\',\n use_case_id: \'3fa85f64-5717-4562-b3fc-2c963f66afa6\',\n use_case_slug: \'string\',\n url: \'https://example.com/path\',\n method: \'GET\',\n headers: {},\n body: {},\n response_type: \'json\'\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "status_code": 0,\n "headers": {},\n "body": {}\n}\n```\n\n</details>\n\n---\n\n### `managedCallExecute`\n\nExecute a managed call operation synchronously. The slug in the path acts as the RPC method name.\nCalls an external partner API with JSONata mapping on both request and response.\n\n`POST /v1/managed-call/{slug}/execute`\n\n```ts\nconst { data } = await client.managedCallExecute(\n {\n slug: \'example\',\n },\n {\n integration_id: \'3fa85f64-5717-4562-b3fc-2c963f66afa6\',\n payload: {},\n correlation_id: \'string\'\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{}\n```\n\n</details>\n\n---\n\n### `generateTypesPreview`\n\nAnalyses the JSONata mappings of all managed-call use cases in the integration and returns scaffolded type descriptors. The frontend uses these to show the type editor modal where developers fill in l\n\n`POST /v1/integrations/{integrationId}/generate-types-preview`\n\n```ts\nconst { data } = await client.generateTypesPreview({\n integrationId: \'example\',\n})\n```\n\n---\n\n### `generateTypes`\n\nGenerates a complete TypeScript npm package with typed interfaces for all managed-call use cases. This is a stateless operation that does not persist any changes. Use the commit-types endpoint to lock\n\n`POST /v1/integrations/{integrationId}/generate-types`\n\n```ts\nconst { data } = await client.generateTypes(\n {\n integrationId: \'example\',\n },\n {\n package_name: \'@epilot/hems-cleverpv\',\n version: \'1.0.0\',\n description: \'string\',\n domain_package: \'@epilot/hems\',\n domain_map_name: \'HemsUseCaseMap\',\n annotations: {}\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "package_name": "string",\n "version": "string",\n "files": {},\n "warnings": ["string"]\n}\n```\n\n</details>\n\n---\n\n### `commitTypes`\n\nCommits the generated types by locking use case configurations and updating version tracking. Should be called after the user reviews and downloads the generated package.\n\n`POST /v1/integrations/{integrationId}/commit-types`\n\n```ts\nconst { data } = await client.commitTypes(\n {\n integrationId: \'example\',\n },\n {\n package_name: \'@epilot/hems-cleverpv\',\n version: \'1.0.0\',\n annotations: {}\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "committed": true,\n "warnings": ["string"]\n}\n```\n\n</details>\n\n---\n\n### `createErpImport`\n\nRegister an already-uploaded file (S3 ref) as a pricing-file import job. Returns the job and a file preview. Nothing runs yet: no use case is chosen and no validation starts here. Optionally rank cand\n\n`POST /v2/erp/imports`\n\n```ts\nconst { data } = await client.createErpImport(\n null,\n {\n s3_reference: {\n bucket: \'string\',\n key: \'string\'\n },\n include_preview: false,\n import_id: \'string\'\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "job": {\n "import_id": "string",\n "org_id": "string",\n "created_by": "string",\n "integration_id": "string",\n "use_case_slug": "string",\n "format": "csv",\n "status": "PENDING",\n "s3_input_ref": {\n "bucket": "string",\n "key": "string"\n },\n "size_bytes": 0,\n "column_count": 0,\n "validation": {\n "total_rows": 0,\n "blocking": 0,\n "warnings": 0,\n "entities": {},\n "issues": [\n {\n "code": "UNIQUE_ID_COLUMN_MISSING",\n "severity": "warning",\n "columns": [\n {\n "name": "string",\n "entity": "string"\n }\n ],\n "row": 0\n }\n ]\n },\n "progress": {\n "processed_rows": 0,\n "total_rows": 0\n },\n "error": {\n "code": "VALIDATION_BLOCKED",\n "message": "string"\n },\n "correlation_id": "string",\n "activity_id": "string",\n "created_at": "1970-01-01T00:00:00.000Z",\n "updated_at": "1970-01-01T00:00:00.000Z"\n },\n "preview": {\n "columns": ["string"],\n "rows": [\n ["string"]\n ]\n }\n}\n```\n\n</details>\n\n---\n\n### `listErpImports`\n\nList recent pricing-file import jobs for the org, newest first.\n\n`GET /v2/erp/imports`\n\n```ts\nconst { data } = await client.listErpImports({\n limit: 1,\n cursor: \'example\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "results": [\n {\n "import_id": "string",\n "org_id": "string",\n "created_by": "string",\n "integration_id": "string",\n "use_case_slug": "string",\n "format": "csv",\n "status": "PENDING",\n "s3_input_ref": {\n "bucket": "string",\n "key": "string"\n },\n "size_bytes": 0,\n "column_count": 0,\n "validation": {\n "total_rows": 0,\n "blocking": 0,\n "warnings": 0,\n "entities": {},\n "issues": [\n {\n "code": "UNIQUE_ID_COLUMN_MISSING",\n "severity": "warning",\n "columns": [\n {\n "name": "string",\n "entity": "string"\n }\n ],\n "row": 0\n }\n ]\n },\n "progress": {\n "processed_rows": 0,\n "total_rows": 0\n },\n "error": {\n "code": "VALIDATION_BLOCKED",\n "message": "string"\n },\n "correlation_id": "string",\n "activity_id": "string",\n "created_at": "1970-01-01T00:00:00.000Z",\n "updated_at": "1970-01-01T00:00:00.000Z"\n }\n ],\n "next_cursor": "string"\n}\n```\n\n</details>\n\n---\n\n### `getErpImport`\n\nGet a pricing-file import job (status, counts, result links).\n\n`GET /v2/erp/imports/{importId}`\n\n```ts\nconst { data } = await client.getErpImport({\n importId: \'example\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "import_id": "string",\n "org_id": "string",\n "created_by": "string",\n "integration_id": "string",\n "use_case_slug": "string",\n "format": "csv",\n "status": "PENDING",\n "s3_input_ref": {\n "bucket": "string",\n "key": "string"\n },\n "size_bytes": 0,\n "column_count": 0,\n "validation": {\n "total_rows": 0,\n "blocking": 0,\n "warnings": 0,\n "entities": {},\n "issues": [\n {\n "code": "UNIQUE_ID_COLUMN_MISSING",\n "severity": "warning",\n "columns": [\n {\n "name": "string",\n "entity": "string"\n }\n ],\n "row": 0\n }\n ]\n },\n "progress": {\n "processed_rows": 0,\n "total_rows": 0\n },\n "error": {\n "code": "VALIDATION_BLOCKED",\n "message": "string"\n },\n "correlation_id": "string",\n "activity_id": "string",\n "created_at": "1970-01-01T00:00:00.000Z",\n "updated_at": "1970-01-01T00:00:00.000Z"\n}\n```\n\n</details>\n\n---\n\n### `deleteErpImport`\n\nRemove an import and the file it owns. Allowed from any status: an import whose run is still in flight is stopped by the deletion, and rows it already wrote stay written.\n\n`DELETE /v2/erp/imports/{importId}`\n\n```ts\nconst { data } = await client.deleteErpImport({\n importId: \'example\',\n})\n```\n\n---\n\n### `validateErpImport`\n\nChoose the use case to read this file with, and start the validate phase.\nCallable from PENDING, READY and FAILED \u2014 so a wrong choice is corrected by calling this again with a different use case, rath\n\n`POST /v2/erp/imports/{importId}:validate`\n\n```ts\nconst { data } = await client.validateErpImport(\n {\n importId: \'example\',\n },\n {\n integration_id: \'string\',\n use_case_slug: \'string\'\n },\n)\n```\n\n---\n\n### `suggestErpImportUseCases`\n\nRank the org\'s inbound use cases against this file\'s columns \u2014 the input to the ranked picker ("matches 6 of your 7 columns"). Optional: skip this and call `:validate` directly when the use case is al\n\n`POST /v2/erp/imports/{importId}:suggest-use-cases`\n\n```ts\nconst { data } = await client.suggestErpImportUseCases({\n importId: \'example\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "file_columns": 0,\n "suggestions": [\n {\n "integration_id": "string",\n "integration_name": "string",\n "use_case_slug": "string",\n "use_case_name": "string",\n "entity_types": 0,\n "matched_columns": 0\n }\n ]\n}\n```\n\n</details>\n\n---\n\n### `executeErpImport`\n\nConfirm and run the write phase of a validated import. Only a READY job may be executed; any other status returns 409.\n\n`POST /v2/erp/imports/{importId}:execute`\n\n```ts\nconst { data } = await client.executeErpImport(\n {\n importId: \'example\',\n },\n {\n ack_warnings: true\n },\n)\n```\n\n---\n\n### `abortErpImport`\n\nAsk a running import to stop. Valid while the job is VALIDATING or PROCESSING; any other status returns 409.\nThe stop is cooperative: the job passes through CANCELLING and typically reaches CANCELLED \n\n`POST /v2/erp/imports/{importId}:abort`\n\n```ts\nconst { data } = await client.abortErpImport({\n importId: \'example\',\n})\n```\n\n---\n\n## Schemas\n\n### `S3Reference`\n\n```ts\ntype S3Reference = {\n bucket: string\n key: string\n}\n```\n\n### `CreateErpImportRequest`\n\nRegister an already-uploaded file as an import. The use case is chosen later, via `:validate` \u2014 upload and interpretation are separate decisions.\n\n```ts\ntype CreateErpImportRequest = {\n s3_reference: {\n bucket: string\n key: string\n }\n include_preview?: boolean\n import_id?: string\n}\n```\n\n### `ValidateErpImportRequest`\n\n```ts\ntype ValidateErpImportRequest = {\n integration_id: string\n use_case_slug: string\n}\n```\n\n### `ErpImportUseCaseSuggestion`\n\n```ts\ntype ErpImportUseCaseSuggestion = {\n integration_id: string\n integration_name: string\n use_case_slug: string\n use_case_name: string\n entity_types: number\n matched_columns: number\n}\n```\n\n### `SuggestErpImportUseCasesResponse`\n\n```ts\ntype SuggestErpImportUseCasesResponse = {\n file_columns: number\n suggestions: Array<{\n integration_id: string\n integration_name: string\n use_case_slug: string\n use_case_name: string\n entity_types: number\n matched_columns: number\n }>\n}\n```\n\n### `ExecuteErpImportRequest`\n\nConfirmation options. Required only when the verdict carries warnings \u2014 a clean import needs no body at all.\n\n```ts\ntype ExecuteErpImportRequest = {\n ack_warnings?: boolean\n}\n```\n\n### `ErpImportIssue`\n\nA problem found during validation, scoped to the file as a whole rather than to individual rows.\n`code` is the translation key and the other fields are its parameters \u2014 there is deliberately no message to display. Each code appears at most once, with everything it has to say aggregated into that one\n\n```ts\ntype ErpImportIssue = {\n code: "UNIQUE_ID_COLUMN_MISSING" | "MAPPED_COLUMN_MISSING" | "MALFORMED_ROW" | "INVALID_ENCODING" | "EMPTY_FILE" | "TOO_MANY_ROWS" | "BLANK_ROWS_SKIPPED"\n severity: "warning" | "blocking"\n columns?: Array<{\n name: string\n entity?: string\n }>\n row?: number\n}\n```\n\n### `ErpImportValidation`\n\nValidate-phase summary: what the file will create, and whether it may be confirmed. Absent until the validate phase completes. No per-row detail is kept \u2014 a rejected file is corrected and imported again.\n\n```ts\ntype ErpImportValidation = {\n total_rows: number\n blocking: number\n warnings: number\n entities: Record<string, number>\n issues?: Array<{\n code: "UNIQUE_ID_COLUMN_MISSING" | "MAPPED_COLUMN_MISSING" | "MALFORMED_ROW" | "INVALID_ENCODING" | "EMPTY_FILE" | "TOO_MANY_ROWS" | "BLANK_ROWS_SKIPPED"\n severity: "warning" | "blocking"\n columns?: Array<{\n name: { ... }\n entity?: { ... }\n }>\n row?: number\n }>\n}\n```\n\n### `ErpImportProgress`\n\nHow far the currently running phase has got. Written at every batch boundary, so it advances during long runs rather than only at the end.\n`total_rows` is ABSENT during the validate phase until the file has been read to the end \u2014 there is deliberately no counting pass, since that would be a second u\n\n```ts\ntype ErpImportProgress = {\n processed_rows: number\n total_rows?: number\n}\n```\n\n### `ErpImportError`\n\nWhy the import failed \u2014 present if and only if status = FAILED. `code` is the translation key; for VALIDATION_BLOCKED the specifics are in `validation`.\n\n```ts\ntype ErpImportError = {\n code: "VALIDATION_BLOCKED" | "FILE_FORMAT_UNSUPPORTED" | "FILE_UNAVAILABLE" | "VALIDATE_TIMEOUT" | "IMPORT_TIMEOUT" | "USE_CASE_NOT_USABLE" | "IMPORT_NO_PROGRESS" | "INTERNAL_ERROR"\n message: string\n}\n```\n\n### `ErpImportFilePreview`\n\nSample of the file\'s first rows, using the same parser as `:validate`. Registration refuses a file it cannot read, so a created job always includes this.\n\n```ts\ntype ErpImportFilePreview = {\n columns: string[]\n rows: string[][]\n}\n```\n\n### `CreateErpImportResponse`\n\n```ts\ntype CreateErpImportResponse = {\n job: {\n import_id: string\n org_id: string\n created_by?: string\n integration_id?: string\n use_case_slug?: string\n format: "csv" | "xlsx"\n status: "PENDING" | "VALIDATING" | "READY" | "PROCESSING" | "IMPORTED" | "FAILED" | "CANCELLING" | "CANCELLED"\n s3_input_ref: {\n bucket: { ... }\n key: { ... }\n }\n size_bytes?: number\n column_count?: number\n validation?: {\n total_rows: { ... }\n blocking: { ... }\n warnings: { ... }\n entities: { ... }\n issues?: { ... }\n }\n progress?: {\n processed_rows: { ... }\n total_rows?: { ... }\n }\n error?: {\n code: { ... }\n message: { ... }\n }\n correlation_id?: string\n activity_id?: string\n created_at: string // date-time\n updated_at: string // date-time\n }\n preview?: {\n columns: string[]\n rows: string[][]\n }\n}\n```\n\n### `ErpImportJob`\n\n```ts\ntype ErpImportJob = {\n import_id: string\n org_id: string\n created_by?: string\n integration_id?: string\n use_case_slug?: string\n format: "csv" | "xlsx"\n status: "PENDING" | "VALIDATING" | "READY" | "PROCESSING" | "IMPORTED" | "FAILED" | "CANCELLING" | "CANCELLED"\n s3_input_ref: {\n bucket: string\n key: string\n }\n size_bytes?: number\n column_count?: number\n validation?: {\n total_rows: number\n blocking: number\n warnings: number\n entities: Record<string, number>\n issues?: Array<{\n code: { ... }\n severity: { ... }\n columns?: { ... }\n row?: { ... }\n }>\n }\n progress?: {\n processed_rows: number\n total_rows?: number\n }\n error?: {\n code: "VALIDATION_BLOCKED" | "FILE_FORMAT_UNSUPPORTED" | "FILE_UNAVAILABLE" | "VALIDATE_TIMEOUT" | "IMPORT_TIMEOUT" | "USE_CASE_NOT_USABLE" | "IMPORT_NO_PROGRESS" | "INTERNAL_ERROR"\n message: string\n }\n correlation_id?: string\n activity_id?: string\n created_at: string // date-time\n updated_at: string // date-time\n}\n```\n\n### `ErpImportList`\n\n```ts\ntype ErpImportList = {\n results: Array<{\n import_id: string\n org_id: string\n created_by?: string\n integration_id?: string\n use_case_slug?: string\n format: "csv" | "xlsx"\n status: "PENDING" | "VALIDATING" | "READY" | "PROCESSING" | "IMPORTED" | "FAILED" | "CANCELLING" | "CANCELLED"\n s3_input_ref: {\n bucket: { ... }\n key: { ... }\n }\n size_bytes?: number\n column_count?: number\n validation?: {\n total_rows: { ... }\n blocking: { ... }\n warnings: { ... }\n entities: { ... }\n issues?: { ... }\n }\n progress?: {\n processed_rows: { ... }\n total_rows?: { ... }\n }\n error?: {\n code: { ... }\n message: { ... }\n }\n correlation_id?: string\n activity_id?: string\n created_at: string // date-time\n updated_at: string // date-time\n }>\n next_cursor?: string\n}\n```\n\n### `NotificationHistoryItem`\n\nA single notification-history row (one real notification decision).\n\n```ts\ntype NotificationHistoryItem = {\n id: string\n type: string\n state_transition?: string\n severity: "error" | "warning" | "info"\n title: string\n occurred_at: string // date-time\n notified: boolean\n suppressed_reason?: "muted" | "debounced" | "recipient_opt_out"\n recipients: string[]\n context: Record<string, unknown>\n created_at: string // date-time\n}\n```\n\n### `NotificationHistoryResponse`\n\n```ts\ntype NotificationHistoryResponse = {\n history: Array<{\n id: string\n type: string\n state_transition?: string\n severity: "error" | "warning" | "info"\n title: string\n occurred_at: string // date-time\n notified: boolean\n suppressed_reason?: "muted" | "debounced" | "recipient_opt_out"\n recipients: string[]\n context: Record<string, unknown>\n created_at: string // date-time\n }>\n next_cursor?: string\n}\n```\n\n### `TestNotificationRequest`\n\n```ts\ntype TestNotificationRequest = {\n kind: "alert" | "digest"\n type?: string\n channels?: "email" | "in_app"[]\n}\n```\n\n### `TestNotificationResponse`\n\n```ts\ntype TestNotificationResponse = {\n sent: boolean\n recipient: string\n channels: string[]\n notification_id?: string\n}\n```\n\n### `NotificationStatusResponse`\n\n```ts\ntype NotificationStatusResponse = {\n health: "healthy" | "alerting" | "muted"\n evaluated_at?: string // date-time\n rules: Array<{\n rule_id: string\n state: "ok" | "alerting" | "recovered"\n last_fired_at?: string // date-time\n last_cleared_at?: string // date-time\n baseline?: {\n is_mature: { ... }\n computed_at?: { ... }\n median?: { ... }\n mad?: { ... }\n upper?: { ... }\n buckets?: { ... }\n }\n }>\n}\n```\n\n### `NotificationRuleStatus`\n\n```ts\ntype NotificationRuleStatus = {\n rule_id: string\n state: "ok" | "alerting" | "recovered"\n last_fired_at?: string // date-time\n last_cleared_at?: string // date-time\n baseline?: {\n is_mature: boolean\n computed_at?: string // date-time\n median?: number\n mad?: number\n upper?: number\n buckets?: Array<{\n dow: { ... }\n hour: { ... }\n median: { ... }\n mad: { ... }\n }>\n }\n}\n```\n\n### `RuleBaselineStatus`\n\n```ts\ntype RuleBaselineStatus = {\n is_mature: boolean\n computed_at?: string // date-time\n median?: number\n mad?: number\n upper?: number\n buckets?: Array<{\n dow: number\n hour: number\n median: number\n mad: number\n }>\n}\n```\n\n### `RuleBaselineBucket`\n\n```ts\ntype RuleBaselineBucket = {\n dow: number\n hour: number\n median: number\n mad: number\n}\n```\n\n### `ErrorResponseBase`\n\n```ts\ntype ErrorResponseBase = {\n code?: string\n message?: string\n}\n```\n\n### `ErpEvent`\n\n```ts\ntype ErpEvent = {\n event_type: "CREATE" | "UPDATE" | "DELETE"\n object_type: string\n timestamp: string // date-time\n format: "json" | "xml"\n payload: string | Record<string, unknown>\n deduplication_id?: string\n correlation_id?: string\n use_case_id?: string\n}\n```\n\n### `ErpUpdatesEventsV2Request`\n\n```ts\ntype ErpUpdatesEventsV2Request = {\n integration_id: string // uuid\n correlation_id?: string\n events: Array<{\n event_type: "CREATE" | "UPDATE" | "DELETE"\n object_type: string\n timestamp: string // date-time\n format: "json" | "xml"\n payload: string | Record<string, unknown>\n deduplication_id?: string\n correlation_id?: string\n use_case_id?: string\n }>\n}\n```\n\n### `ErpEventV3`\n\n```ts\ntype ErpEventV3 = unknown | unknown\n```\n\n### `ErpUpdatesEventsV3Request`\n\n```ts\ntype ErpUpdatesEventsV3Request = {\n integration_id: string // uuid\n correlation_id?: string\n group_id?: string\n events: unknown | unknown[]\n}\n```\n\n### `TriggerErpActionRequest`\n\n```ts\ntype TriggerErpActionRequest = {\n execution_id: string\n org_id: string\n webhook_id: string\n flow_id: string\n created_at: string // date-time\n action_id: string\n flow_action_id: string\n flow_name: string\n activity_id: string\n entity_id: string\n}\n```\n\n### `TriggerWebhookResp`\n\n```ts\ntype TriggerWebhookResp = {\n status_code?: string\n message?: string\n body?: object\n code?: string\n status?: "succeeded" | "failed"\n start_date?: string\n end_date?: string\n event_id?: string\n}\n```\n\n### `IntegrationEditableFields`\n\n```ts\ntype IntegrationEditableFields = {\n name?: string\n description?: string\n access_token_ids?: string[]\n app_ids?: string[]\n environment_config?: Array<{\n key: string\n label: string\n type: "String" | "SecretString"\n description?: string\n required?: boolean\n order?: number\n }>\n settings?: {\n autoRefresh?: {\n enabled?: { ... }\n freshnessThresholdMinutes?: { ... }\n }\n notifications?: {\n enabled: { ... }\n recipients: { ... }\n defaultChannels: { ... }\n monitoredUseCases?: { ... }\n monitoredCodes?: { ... }\n rules: { ... }\n digest: { ... }\n muteUntil?: { ... }\n }\n }\n integration_type?: "erp" | "connector"\n connector_config?: {\n base_url?: string\n auth?: {\n type?: { ... }\n token_url?: { ... }\n client_id?: { ... }\n client_secret?: { ... }\n scope?: { ... }\n audience?: { ... }\n resource?: { ... }\n body_params?: { ... }\n headers?: { ... }\n query_params?: { ... }\n api_key_header?: { ... }\n api_key?: { ... }\n token?: { ... }\n }\n types_versions?: Array<{\n version: { ... }\n package_name: { ... }\n generated_at: { ... }\n generated_by: { ... }\n status: { ... }\n }>\n latest_types_version?: string\n latest_types_package_name?: string\n }\n protected?: boolean\n _manifest?: string[]\n}\n```\n\n### `ConnectorConfig`\n\nShared configuration for connector-type integrations\n\n```ts\ntype ConnectorConfig = {\n base_url?: string\n auth?: {\n type?: "oauth2_client_credentials" | "api_key" | "bearer"\n token_url?: string\n client_id?: string\n client_secret?: string\n scope?: string\n audience?: string\n resource?: string\n body_params?: Record<string, string>\n headers?: Record<string, string>\n query_params?: Record<string, string>\n api_key_header?: string\n api_key?: string\n token?: string\n }\n types_versions?: Array<{\n version: string\n package_name: string\n generated_at: string // date-time\n generated_by: string\n status: "active" | "deprecated"\n }>\n latest_types_version?: string\n latest_types_package_name?: string\n}\n```\n\n### `ManagedCallAuth`\n\nAuthentication configuration for managed call requests\n\n```ts\ntype ManagedCallAuth = {\n type?: "oauth2_client_credentials" | "api_key" | "bearer"\n token_url?: string\n client_id?: string\n client_secret?: string\n scope?: string\n audience?: string\n resource?: string\n body_params?: Record<string, string>\n headers?: Record<string, string>\n query_params?: Record<string, string>\n api_key_header?: string\n api_key?: string\n token?: string\n}\n```\n\n### `Integration`\n\n```ts\ntype Integration = {\n id: string // uuid\n orgId: string\n created_at: string // date-time\n updated_at: string // date-time\n name: string\n description?: string\n access_token_ids?: string[]\n app_ids?: string[]\n environment_config?: Array<{\n key: string\n label: string\n type: "String" | "SecretString"\n description?: string\n required?: boolean\n order?: number\n }>\n settings?: {\n autoRefresh?: {\n enabled?: { ... }\n freshnessThresholdMinutes?: { ... }\n }\n notifications?: {\n enabled: { ... }\n recipients: { ... }\n defaultChannels: { ... }\n monitoredUseCases?: { ... }\n monitoredCodes?: { ... }\n rules: { ... }\n digest: { ... }\n muteUntil?: { ... }\n }\n }\n integration_type?: "erp" | "connector"\n connector_config?: {\n base_url?: string\n auth?: {\n type?: { ... }\n token_url?: { ... }\n client_id?: { ... }\n client_secret?: { ... }\n scope?: { ... }\n audience?: { ... }\n resource?: { ... }\n body_params?: { ... }\n headers?: { ... }\n query_params?: { ... }\n api_key_header?: { ... }\n api_key?: { ... }\n token?: { ... }\n }\n types_versions?: Array<{\n version: { ... }\n package_name: { ... }\n generated_at: { ... }\n generated_by: { ... }\n status: { ... }\n }>\n latest_types_version?: string\n latest_types_package_name?: string\n }\n protected?: boolean\n _manifest?: string[]\n}\n```\n\n### `CreateIntegrationRequest`\n\n```ts\ntype CreateIntegrationRequest = {\n name: string\n description?: string\n access_token_ids?: string[]\n app_ids?: string[]\n environment_config?: Array<{\n key: string\n label: string\n type: "String" | "SecretString"\n description?: string\n required?: boolean\n order?: number\n }>\n settings?: {\n autoRefresh?: {\n enabled?: { ... }\n freshnessThresholdMinutes?: { ... }\n }\n notifications?: {\n enabled: { ... }\n recipients: { ... }\n defaultChannels: { ... }\n monitoredUseCases?: { ... }\n monitoredCodes?: { ... }\n rules: { ... }\n digest: { ... }\n muteUntil?: { ... }\n }\n }\n integration_type?: "erp" | "connector"\n connector_config?: {\n base_url?: string\n auth?: {\n type?: { ... }\n token_url?: { ... }\n client_id?: { ... }\n client_secret?: { ... }\n scope?: { ... }\n audience?: { ... }\n resource?: { ... }\n body_params?: { ... }\n headers?: { ... }\n query_params?: { ... }\n api_key_header?: { ... }\n api_key?: { ... }\n token?: { ... }\n }\n types_versions?: Array<{\n version: { ... }\n package_name: { ... }\n generated_at: { ... }\n generated_by: { ... }\n status: { ... }\n }>\n latest_types_version?: string\n latest_types_package_name?: string\n }\n protected?: boolean\n _manifest?: string[]\n}\n```\n\n### `UpdateIntegrationRequest`\n\n```ts\ntype UpdateIntegrationRequest = {\n name?: string\n description?: string\n access_token_ids?: string[]\n app_ids?: string[]\n environment_config?: Array<{\n key: string\n label: string\n type: "String" | "SecretString"\n description?: string\n required?: boolean\n order?: number\n }>\n settings?: {\n autoRefresh?: {\n enabled?: { ... }\n freshnessThresholdMinutes?: { ... }\n }\n notifications?: {\n enabled: { ... }\n recipients: { ... }\n defaultChannels: { ... }\n monitoredUseCases?: { ... }\n monitoredCodes?: { ... }\n rules: { ... }\n digest: { ... }\n muteUntil?: { ... }\n }\n }\n integration_type?: "erp" | "connector"\n connector_config?: {\n base_url?: string\n auth?: {\n type?: { ... }\n token_url?: { ... }\n client_id?: { ... }\n client_secret?: { ... }\n scope?: { ... }\n audience?: { ... }\n resource?: { ... }\n body_params?: { ... }\n headers?: { ... }\n query_params?: { ... }\n api_key_header?: { ... }\n api_key?: { ... }\n token?: { ... }\n }\n types_versions?: Array<{\n version: { ... }\n package_name: { ... }\n generated_at: { ... }\n generated_by: { ... }\n status: { ... }\n }>\n latest_types_version?: string\n latest_types_package_name?: string\n }\n protected?: boolean\n _manifest?: string[]\n}\n```\n\n### `EnvironmentFieldConfig`\n\n```ts\ntype EnvironmentFieldConfig = {\n key: string\n label: string\n type: "String" | "SecretString"\n description?: string\n required?: boolean\n order?: number\n}\n```\n\n### `IntegrationSettings`\n\nSettings for the integration\n\n```ts\ntype IntegrationSettings = {\n autoRefresh?: {\n enabled?: boolean\n freshnessThresholdMinutes?: number\n }\n notifications?: {\n enabled: boolean\n recipients: Array<{\n user_id: { ... }\n }>\n defaultChannels: {\n email: { ... }\n in_app: { ... }\n }\n monitoredUseCases?: string[]\n monitoredCodes?: string[]\n rules: Array<{\n id?: { ... }\n name?: { ... }\n type: { ... }\n enabled: { ... }\n channels?: { ... }\n codes?: { ... }\n threshold?: { ... }\n sensitivity?: { ... }\n fallbackThreshold?: { ... }\n window?: { ... }\n minSampleSize?: { ... }\n quietPeriod?: { ... }\n }>\n digest: {\n enabled: { ... }\n frequency: { ... }\n dayOfWeek?: { ... }\n timeOfDay: { ... }\n timezone: { ... }\n channels: { ... }\n includeHealthy: { ... }\n skipIfEmpty: { ... }\n }\n muteUntil?: string // date-time\n }\n}\n```\n\n### `AutoRefreshSettings`\n\nAuto-refresh settings for keeping integration data fresh\n\n```ts\ntype AutoRefreshSettings = {\n enabled?: boolean\n freshnessThresholdMinutes?: number\n}\n```\n\n### `IntegrationNotificationConfig`\n\nIntegration monitoring notification configuration. Rides Integration.settings.notifications (camelCase) and surfaces on both v1 and v2 GET/PUT. Unknown keys are stripped server-side to stay forward-compatible with deferred (V2) rule types.\n\n```ts\ntype IntegrationNotificationConfig = {\n enabled: boolean\n recipients: Array<{\n user_id: string\n }>\n defaultChannels: {\n email: boolean\n in_app: boolean\n }\n monitoredUseCases?: string[]\n monitoredCodes?: string[]\n rules: Array<{\n id?: string\n name?: string\n type: "critical_error" | "error_threshold" | "warning_threshold" | "success_rate_drop" | "recovery" | "silence"\n enabled: boolean\n channels?: {\n email: { ... }\n in_app: { ... }\n }\n codes?: string[]\n threshold?: number | "auto"\n sensitivity?: "low" | "medium" | "high"\n fallbackThreshold?: number\n window?: string\n minSampleSize?: number\n quietPeriod?: string\n }>\n digest: {\n enabled: boolean\n frequency: "daily" | "weekly"\n dayOfWeek?: 0 | 1 | 2 | 3 | 4 | 5 | 6\n timeOfDay: string\n timezone: string\n channels: {\n email: { ... }\n in_app: { ... }\n }\n includeHealthy: boolean\n skipIfEmpty: boolean\n }\n muteUntil?: string // date-time\n}\n```\n\n### `NotificationRecipient`\n\nA configured recipient. Only the epilot user_id is stored.\n\n```ts\ntype NotificationRecipient = {\n user_id: string\n}\n```\n\n### `NotificationChannelSet`\n\nDelivery channel toggles. New channels added in svc-notification-api inherit here.\n\n```ts\ntype NotificationChannelSet = {\n email: boolean\n in_app: boolean\n}\n```\n\n### `NotificationRule`\n\nA single notification rule. Only the params relevant to a given type are set. The id is optional on write: the server mints a ULID when omitted and preserves a supplied id verbatim (a stable id keeps a rule\'s AlertState across config saves).\n\n```ts\ntype NotificationRule = {\n id?: string\n name?: string\n type: "critical_error" | "error_threshold" | "warning_threshold" | "success_rate_drop" | "recovery" | "silence"\n enabled: boolean\n channels?: {\n email: boolean\n in_app: boolean\n }\n codes?: string[]\n threshold?: number | "auto"\n sensitivity?: "low" | "medium" | "high"\n fallbackThreshold?: number\n window?: string\n minSampleSize?: number\n quietPeriod?: string\n}\n```\n\n### `NotificationDigestConfig`\n\nDigest schedule and content configuration.\n\n```ts\ntype NotificationDigestConfig = {\n enabled: boolean\n frequency: "daily" | "weekly"\n dayOfWeek?: 0 | 1 | 2 | 3 | 4 | 5 | 6\n timeOfDay: string\n timezone: string\n channels: {\n email: boolean\n in_app: boolean\n }\n includeHealthy: boolean\n skipIfEmpty: boolean\n}\n```\n\n### `SetIntegrationAppMappingRequest`\n\n```ts\ntype SetIntegrationAppMappingRequest = {\n app_id: string // uuid\n component_id: string // uuid\n overwrite?: boolean\n}\n```\n\n### `DeleteIntegrationAppMappingRequest`\n\n```ts\ntype DeleteIntegrationAppMappingRequest = {\n app_id: string // uuid\n component_id: string // uuid\n}\n```\n\n### `IntegrationAppMapping`\n\n```ts\ntype IntegrationAppMapping = {\n integration_id: string // uuid\n}\n```\n\n### `IntegrationWithUseCases`\n\n```ts\ntype IntegrationWithUseCases = {\n use_cases: Array<{\n id: string // uuid\n integrationId: string // uuid\n name: string\n slug?: string\n type: "inbound"\n enabled: boolean\n change_description?: string\n changed_by?: string\n created_at: string // date-time\n updated_at: string // date-time\n configuration?: {\n direct?: { ... }\n entities?: { ... }\n meter_readings?: { ... }\n }\n } | {\n id: string // uuid\n integrationId: string // uuid\n name: string\n slug?: string\n type: "outbound"\n enabled: boolean\n change_description?: string\n changed_by?: string\n created_at: string // date-time\n updated_at: string // date-time\n configuration?: {\n event_catalog_event: { ... }\n event_filter?: { ... }\n mappings: { ... }\n ack_tracking?: { ... }\n }\n } | {\n id: string // uuid\n integrationId: string // uuid\n name: string\n slug?: string\n type: "file_proxy"\n enabled: boolean\n change_description?: string\n changed_by?: string\n created_at: string // date-time\n updated_at: string // date-time\n configuration?: {\n direction?: { ... }\n upload?: { ... }\n fan_out?: { ... }\n secure_proxy?: { ... }\n auth?: { ... }\n params?: { ... }\n allowed_origins?: { ... }\n steps: { ... }\n response?: { ... }\n prevent_indirect_serving?: { ... }\n }\n } | {\n id: string // uuid\n integrationId: string // uuid\n name: string\n slug?: string\n type: "managed_call"\n enabled: boolean\n change_description?: string\n changed_by?: string\n created_at: string // date-time\n updated_at: string // date-time\n configuration?: {\n operation: { ... }\n request_mapping?: { ... }\n response_mapping?: { ... }\n inbound_use_case_slug?: { ... }\n }\n type_annotations?: {\n request?: { ... }\n response?: { ... }\n }\n types_locked?: boolean\n } | {\n id: string // uuid\n integrationId: string // uuid\n name: string\n slug?: string\n type: "secure_proxy"\n enabled: boolean\n change_description?: string\n changed_by?: string\n created_at: string // date-time\n updated_at: string // date-time\n configuration?: {\n vpc_mode: { ... }\n allowed_domains?: { ... }\n allowed_ips?: { ... }\n }\n }>\n}\n```\n\n### `UpsertIntegrationWithUseCasesRequest`\n\n```ts\ntype UpsertIntegrationWithUseCasesRequest = {\n name: string\n description?: string\n access_token_ids?: string[]\n app_ids?: string[]\n environment_config?: Array<{\n key: string\n label: string\n type: "String" | "SecretString"\n description?: string\n required?: boolean\n order?: number\n }>\n settings?: {\n autoRefresh?: {\n enabled?: { ... }\n freshnessThresholdMinutes?: { ... }\n }\n notifications?: {\n enabled: { ... }\n recipients: { ... }\n defaultChannels: { ... }\n monitoredUseCases?: { ... }\n monitoredCodes?: { ... }\n rules: { ... }\n digest: { ... }\n muteUntil?: { ... }\n }\n }\n integration_type?: "erp" | "connector"\n connector_config?: {\n base_url?: string\n auth?: {\n type?: { ... }\n token_url?: { ... }\n client_id?: { ... }\n client_secret?: { ... }\n scope?: { ... }\n audience?: { ... }\n resource?: { ... }\n body_params?: { ... }\n headers?: { ... }\n query_params?: { ... }\n api_key_header?: { ... }\n api_key?: { ... }\n token?: { ... }\n }\n types_versions?: Array<{\n version: { ... }\n package_name: { ... }\n generated_at: { ... }\n generated_by: { ... }\n status: { ... }\n }>\n latest_types_version?: string\n latest_types_package_name?: string\n }\n protected?: boolean\n _manifest?: string[]\n use_cases?: Array<{\n id?: string // uuid\n name: string\n slug?: string\n enabled: boolean\n change_description?: string\n type: "inbound"\n configuration?: {\n direct?: { ... }\n entities?: { ... }\n meter_readings?: { ... }\n }\n } | {\n id?: string // uuid\n name: string\n slug?: string\n enabled: boolean\n change_description?: string\n type: "outbound"\n configuration?: {\n event_catalog_event: { ... }\n event_filter?: { ... }\n mappings: { ... }\n ack_tracking?: { ... }\n }\n } | {\n id?: string // uuid\n name: string\n slug?: string\n enabled: boolean\n change_description?: string\n type: "file_proxy"\n configuration?: {\n direction?: { ... }\n upload?: { ... }\n fan_out?: { ... }\n secure_proxy?: { ... }\n auth?: { ... }\n params?: { ... }\n allowed_origins?: { ... }\n steps: { ... }\n // ...\n}\n```\n\n### `InboundIntegrationEventConfiguration`\n\nConfiguration for inbound use cases (ERP to epilot)\n\n```ts\ntype InboundIntegrationEventConfiguration = {\n direct?: boolean\n entities?: Array<{\n entity_schema: string\n unique_ids: string[]\n jsonataExpression?: string\n enabled?: boolean | string\n mode?: "upsert" | "delete" | "purge" | "upsert-prune-scope-purge" | "upsert-prune-scope-delete"\n scope?: {\n scope_mode: { ... }\n schema?: { ... }\n unique_ids?: { ... }\n query?: { ... }\n }\n fields?: Array<{\n attribute: { ... }\n field?: { ... }\n jsonataExpression?: { ... }\n constant?: { ... }\n _type?: { ... }\n enabled?: { ... }\n relations?: { ... }\n relation_refs?: { ... }\n file_proxy_url?: { ... }\n portal_ref?: { ... }\n env_var_ref?: { ... }\n }>\n }>\n meter_readings?: Array<{\n jsonataExpression?: string\n reading_matching?: "external_id" | "strict-date"\n mode?: "upsert" | "delete" | "upsert-prune-scope"\n scope?: {\n source?: { ... }\n }\n meter: {\n unique_ids: { ... }\n }\n meter_counter?: {\n unique_ids: { ... }\n }\n fields: Array<{\n attribute: { ... }\n field?: { ... }\n jsonataExpression?: { ... }\n constant?: { ... }\n _type?: { ... }\n enabled?: { ... }\n relations?: { ... }\n relation_refs?: { ... }\n file_proxy_url?: { ... }\n portal_ref?: { ... }\n env_var_ref?: { ... }\n }>\n }>\n}\n```\n\n### `OutboundIntegrationEventConfiguration`\n\nConfiguration for outbound use cases. Defines the event that triggers the flow and the webhook mappings.\n\n```ts\ntype OutboundIntegrationEventConfiguration = {\n event_catalog_event: string\n event_filter?: string\n mappings: Array<{\n id?: string // uuid\n name: string\n jsonata_expression?: string\n enabled: boolean\n delivery: {\n type: { ... }\n webhook_id: { ... }\n webhook_name?: { ... }\n webhook_url?: { ... }\n } | {\n type: { ... }\n retention_days?: { ... }\n poison_policy?: { ... }\n max_delivery_attempts?: { ... }\n } | {\n type: { ... }\n use_case_slug: { ... }\n }\n created_at?: string // date-time\n updated_at?: string // date-time\n }>\n ack_tracking?: "on" | "off"\n}\n```\n\n### `IntegrationEntity`\n\n```ts\ntype IntegrationEntity = {\n entity_schema: string\n unique_ids: string[]\n jsonataExpression?: string\n enabled?: boolean | string\n mode?: "upsert" | "delete" | "purge" | "upsert-prune-scope-purge" | "upsert-prune-scope-delete"\n scope?: {\n scope_mode: "relations" | "query"\n schema?: string\n unique_ids?: Array<{\n attribute: { ... }\n _type?: { ... }\n field?: { ... }\n jsonataExpression?: { ... }\n constant?: { ... }\n }>\n query?: Array<{\n attribute: { ... }\n _type?: { ... }\n field?: { ... }\n jsonataExpression?: { ... }\n constant?: { ... }\n }>\n }\n fields?: Array<{\n attribute: string\n field?: string\n jsonataExpression?: string\n constant?: unknown\n _type?: "email" | "phone"\n enabled?: boolean | string\n relations?: {\n operation: { ... }\n items?: { ... }\n jsonataExpression?: { ... }\n }\n relation_refs?: {\n operation: { ... }\n items?: { ... }\n jsonataExpression?: { ... }\n }\n file_proxy_url?: {\n use_case_slug: { ... }\n params?: { ... }\n } | {\n use_case_id: { ... }\n params?: { ... }\n }\n portal_ref?: {\n filter?: { ... }\n select?: { ... }\n return?: { ... }\n } | {\n filter?: { ... }\n select?: { ... }\n return: { ... }\n jsonataExpression: { ... }\n }\n env_var_ref?: {\n key: { ... }\n default?: { ... }\n return?: { ... }\n } | {\n key: { ... }\n default?: { ... }\n return: { ... }\n jsonataExpression: { ... }\n }\n }>\n}\n```\n\n### `IntegrationMeterReading`\n\n```ts\ntype IntegrationMeterReading = {\n jsonataExpression?: string\n reading_matching?: "external_id" | "strict-date"\n mode?: "upsert" | "delete" | "upsert-prune-scope"\n scope?: {\n source?: string\n }\n meter: {\n unique_ids: Array<{\n attribute: { ... }\n _type?: { ... }\n field?: { ... }\n jsonataExpression?: { ... }\n constant?: { ... }\n }>\n }\n meter_counter?: {\n unique_ids: Array<{\n attribute: { ... }\n _type?: { ... }\n field?: { ... }\n jsonataExpression?: { ... }\n constant?: { ... }\n }>\n }\n fields: Array<{\n attribute: string\n field?: string\n jsonataExpression?: string\n constant?: unknown\n _type?: "email" | "phone"\n enabled?: boolean | string\n relations?: {\n operation: { ... }\n items?: { ... }\n jsonataExpression?: { ... }\n }\n relation_refs?: {\n operation: { ... }\n items?: { ... }\n jsonataExpression?: { ... }\n }\n file_proxy_url?: {\n use_case_slug: { ... }\n params?: { ... }\n } | {\n use_case_id: { ... }\n params?: { ... }\n }\n portal_ref?: {\n filter?: { ... }\n select?: { ... }\n return?: { ... }\n } | {\n filter?: { ... }\n select?: { ... }\n return: { ... }\n jsonataExpression: { ... }\n }\n env_var_ref?: {\n key: { ... }\n default?: { ... }\n return?: { ... }\n } | {\n key: { ... }\n default?: { ... }\n return: { ... }\n jsonataExpression: { ... }\n }\n }>\n}\n```\n\n### `PruneScopeConfig`\n\nScope configuration for upsert-prune-scope modes.\nDefines how to find entities that should be pruned if not in the upsert payload.\nThe scope is resolved against the original event payload (not individual array items).\n\n\n```ts\ntype PruneScopeConfig = {\n scope_mode: "relations" | "query"\n schema?: string\n unique_ids?: Array<{\n attribute: string\n _type?: "email" | "phone"\n field?: string\n jsonataExpression?: string\n constant?: unknown\n }>\n query?: Array<{\n attribute: string\n _type?: "email" | "phone"\n field?: string\n jsonataExpression?: string\n constant?: unknown\n }>\n}\n```\n\n### `MeterReadingPruneScopeConfig`\n\nScope configuration for meter reading upsert-prune-scope mode.\nThe scope is all readings for the same meter + counter.\n\n\n```ts\ntype MeterReadingPruneScopeConfig = {\n source?: string\n}\n```\n\n### `MeterUniqueIdsConfig`\n\n```ts\ntype MeterUniqueIdsConfig = {\n unique_ids: Array<{\n attribute: string\n _type?: "email" | "phone"\n field?: string\n jsonataExpression?: string\n constant?: unknown\n }>\n}\n```\n\n### `IntegrationEntityField`\n\n```ts\ntype IntegrationEntityField = {\n attribute: string\n field?: string\n jsonataExpression?: string\n constant?: unknown\n _type?: "email" | "phone"\n enabled?: boolean | string\n relations?: {\n operation: "_set" | "_append" | "_append_all"\n items?: Array<{\n entity_schema: { ... }\n _tags?: { ... }\n unique_ids: { ... }\n }>\n jsonataExpression?: string\n }\n relation_refs?: {\n operation: "_set" | "_append" | "_append_all"\n items?: Array<{\n entity_schema: { ... }\n unique_ids: { ... }\n path: { ... }\n value: { ... }\n }>\n jsonataExpression?: string\n }\n file_proxy_url?: {\n use_case_slug: string\n params?: Record<string, {\n field: { ... }\n } | {\n constant: { ... }\n } | {\n jsonataExpression: { ... }\n }>\n } | {\n use_case_id: string\n params?: Record<string, {\n field: { ... }\n } | {\n constant: { ... }\n } | {\n jsonataExpression: { ... }\n }>\n }\n portal_ref?: {\n filter?: {\n origin?: { ... }\n enabled?: { ... }\n is_dummy?: { ... }\n is_epilot_domain?: { ... }\n name?: { ... }\n domain?: { ... }\n }\n select?: "single" | "all"\n return?: "portal_id" | "origin" | "domain" | "name"\n } | {\n filter?: {\n origin?: { ... }\n enabled?: { ... }\n is_dummy?: { ... }\n is_epilot_domain?: { ... }\n name?: { ... }\n domain?: { ... }\n }\n select?: "single" | "all"\n return: "jsonata"\n jsonataExpression: string\n }\n env_var_ref?: {\n key: string\n default?: string\n return?: "value"\n } | {\n key: string\n default?: string\n return: "jsonata"\n jsonataExpression: string\n }\n}\n```\n\n### `FileProxyUrlParam`\n\nParameter for file proxy URL. Exactly one of field, constant, or jsonataExpression must be set.\n\n```ts\ntype FileProxyUrlParam = {\n field: string\n} | {\n constant: unknown\n} | {\n jsonataExpression: string\n}\n```\n\n### `FileProxyUrlParams`\n\nCustom query parameters. Keys become URL param names, values resolved from payload.\n\n```ts\ntype FileProxyUrlParams = Record<string, {\n field: string\n} | {\n constant: unknown\n} | {\n jsonataExpression: string\n}>\n```\n\n### `FileProxyUrlConfig`\n\nAuto-constructs a file proxy download URL. orgId and integrationId are injected from context. Exactly one of use_case_id or use_case_slug must be provided. Using use_case_slug is recommended as it is portable across environments.\n\n\n```ts\ntype FileProxyUrlConfig = {\n use_case_slug: string\n params?: Record<string, {\n field: string\n } | {\n constant: unknown\n } | {\n jsonataExpression: string\n }>\n} | {\n use_case_id: string\n params?: Record<string, {\n field: string\n } | {\n constant: unknown\n } | {\n jsonataExpression: string\n }>\n}\n```\n\n### `PortalOrigin`\n\nOrigin/type of an epilot portal configuration.\n\n```ts\ntype PortalOrigin = "END_CUSTOMER_PORTAL" | "INSTALLER_PORTAL" | "B2B_PORTAL" | "ADDITIONAL_PORTAL"\n```\n\n### `PortalRefFilter`\n\nFilter applied to the org\'s portal configurations before selection. All filters default to "match any" except `enabled` (default `true`) and `is_dummy` (default `false`). Set `enabled` or `is_dummy` to `null` to opt out of the default.\n\n\n```ts\ntype PortalRefFilter = {\n origin?: "END_CUSTOMER_PORTAL" | "INSTALLER_PORTAL" | "B2B_PORTAL" | "ADDITIONAL_PORTAL" | "END_CUSTOMER_PORTAL" | "INSTALLER_PORTAL" | "B2B_PORTAL" | "ADDITIONAL_PORTAL"[]\n enabled?: boolean\n is_dummy?: boolean\n is_epilot_domain?: boolean\n name?: string\n domain?: string\n}\n```\n\n### `PortalRefConfig`\n\nResolves to a property of one of the calling organization\'s epilot portal configurations at runtime, replacing hard-coded environment-specific portal UUIDs in inbound mappings. Matched portals are sorted ascending by `(_created_at, portal_id)`; portals without `_created_at` sort first (treated as ol\n\n```ts\ntype PortalRefConfig = {\n filter?: {\n origin?: "END_CUSTOMER_PORTAL" | "INSTALLER_PORTAL" | "B2B_PORTAL" | "ADDITIONAL_PORTAL" | "END_CUSTOMER_PORTAL" | "INSTALLER_PORTAL" | "B2B_PORTAL" | "ADDITIONAL_PORTAL"[]\n enabled?: boolean\n is_dummy?: boolean\n is_epilot_domain?: boolean\n name?: string\n domain?: string\n }\n select?: "single" | "all"\n return?: "portal_id" | "origin" | "domain" | "name"\n} | {\n filter?: {\n origin?: "END_CUSTOMER_PORTAL" | "INSTALLER_PORTAL" | "B2B_PORTAL" | "ADDITIONAL_PORTAL" | "END_CUSTOMER_PORTAL" | "INSTALLER_PORTAL" | "B2B_PORTAL" | "ADDITIONAL_PORTAL"[]\n enabled?: boolean\n is_dummy?: boolean\n is_epilot_domain?: boolean\n name?: string\n domain?: string\n }\n select?: "single" | "all"\n return: "jsonata"\n jsonataExpression: string\n}\n```\n\n### `EnvVarRefConfig`\n\nResolves to an org-scoped environment variable from the epilot environments-api service at runtime, replacing hard-coded environment-specific values (URLs, prefixes, identifiers) in inbound mappings. Secrets (`SecretString` values) are never exposed; the runtime treats both "missing key" and "secret\n\n```ts\ntype EnvVarRefConfig = {\n key: string\n default?: string\n return?: "value"\n} | {\n key: string\n default?: string\n return: "jsonata"\n jsonataExpression: string\n}\n```\n\n### `EmbeddedUseCaseRequest`\n\n```ts\ntype EmbeddedUseCaseRequest = {\n id?: string // uuid\n name: string\n slug?: string\n enabled: boolean\n change_description?: string\n type: "inbound"\n configuration?: {\n direct?: boolean\n entities?: Array<{\n entity_schema: { ... }\n unique_ids: { ... }\n jsonataExpression?: { ... }\n enabled?: { ... }\n mode?: { ... }\n scope?: { ... }\n fields?: { ... }\n }>\n meter_readings?: Array<{\n jsonataExpression?: { ... }\n reading_matching?: { ... }\n mode?: { ... }\n scope?: { ... }\n meter: { ... }\n meter_counter?: { ... }\n fields: { ... }\n }>\n }\n} | {\n id?: string // uuid\n name: string\n slug?: string\n enabled: boolean\n change_description?: string\n type: "outbound"\n configuration?: {\n event_catalog_event: string\n event_filter?: string\n mappings: Array<{\n id?: { ... }\n name: { ... }\n jsonata_expression?: { ... }\n enabled: { ... }\n delivery: { ... }\n created_at?: { ... }\n updated_at?: { ... }\n }>\n ack_tracking?: "on" | "off"\n }\n} | {\n id?: string // uuid\n name: string\n slug?: string\n enabled: boolean\n change_description?: string\n type: "file_proxy"\n configuration?: {\n direction?: "download" | "upload"\n upload?: {\n max_total_bytes?: { ... }\n max_file_bytes?: { ... }\n max_delivery_attempts?: { ... }\n }\n fan_out?: {\n enabled: { ... }\n }\n secure_proxy?: {\n use_case_slug: { ... }\n }\n auth?: {\n type: { ... }\n token_url: { ... }\n client_id: { ... }\n client_secret: { ... }\n scope?: { ... }\n audience?: { ... }\n resource?: { ... }\n username?: { ... }\n password?: { ... }\n body_params?: { ... }\n headers?: { ... }\n query_params?: { ... }\n }\n params?: Array<{\n name: { ... }\n required: { ... }\n description?: { ... }\n }>\n allowed_origins?: string // uri[]\n steps: Array<{\n url: { ... }\n method: { ... }\n headers?: { ... }\n body_jsonata?: { ... }\n enabled?: { ... }\n body?: { ... }\n response_type: { ... }\n }>\n response?: {\n body: { ... }\n // ...\n}\n```\n\n### `EmbeddedUseCaseRequestBase`\n\n```ts\ntype EmbeddedUseCaseRequestBase = {\n id?: string // uuid\n name: string\n slug?: string\n enabled: boolean\n change_description?: string\n}\n```\n\n### `EmbeddedInboundUseCaseRequest`\n\n```ts\ntype EmbeddedInboundUseCaseRequest = {\n id?: string // uuid\n name: string\n slug?: string\n enabled: boolean\n change_description?: string\n type: "inbound"\n configuration?: {\n direct?: boolean\n entities?: Array<{\n entity_schema: { ... }\n unique_ids: { ... }\n jsonataExpression?: { ... }\n enabled?: { ... }\n mode?: { ... }\n scope?: { ... }\n fields?: { ... }\n }>\n meter_readings?: Array<{\n jsonataExpression?: { ... }\n reading_matching?: { ... }\n mode?: { ... }\n scope?: { ... }\n meter: { ... }\n meter_counter?: { ... }\n fields: { ... }\n }>\n }\n}\n```\n\n### `EmbeddedOutboundUseCaseRequest`\n\n```ts\ntype EmbeddedOutboundUseCaseRequest = {\n id?: string // uuid\n name: string\n slug?: string\n enabled: boolean\n change_description?: string\n type: "outbound"\n configuration?: {\n event_catalog_event: string\n event_filter?: string\n mappings: Array<{\n id?: { ... }\n name: { ... }\n jsonata_expression?: { ... }\n enabled: { ... }\n delivery: { ... }\n created_at?: { ... }\n updated_at?: { ... }\n }>\n ack_tracking?: "on" | "off"\n }\n}\n```\n\n### `EmbeddedFileProxyUseCaseRequest`\n\n```ts\ntype EmbeddedFileProxyUseCaseRequest = {\n id?: string // uuid\n name: string\n slug?: string\n enabled: boolean\n change_description?: string\n type: "file_proxy"\n configuration?: {\n direction?: "download" | "upload"\n upload?: {\n max_total_bytes?: { ... }\n max_file_bytes?: { ... }\n max_delivery_attempts?: { ... }\n }\n fan_out?: {\n enabled: { ... }\n }\n secure_proxy?: {\n use_case_slug: { ... }\n }\n auth?: {\n type: { ... }\n token_url: { ... }\n client_id: { ... }\n client_secret: { ... }\n scope?: { ... }\n audience?: { ... }\n resource?: { ... }\n username?: { ... }\n password?: { ... }\n body_params?: { ... }\n headers?: { ... }\n query_params?: { ... }\n }\n params?: Array<{\n name: { ... }\n required: { ... }\n description?: { ... }\n }>\n allowed_origins?: string // uri[]\n steps: Array<{\n url: { ... }\n method: { ... }\n headers?: { ... }\n body_jsonata?: { ... }\n enabled?: { ... }\n body?: { ... }\n response_type: { ... }\n }>\n response?: {\n body: { ... }\n encoding: { ... }\n filename?: { ... }\n content_type?: { ... }\n }\n prevent_indirect_serving?: boolean\n }\n}\n```\n\n### `EmbeddedManagedCallUseCaseRequest`\n\n```ts\ntype EmbeddedManagedCallUseCaseRequest = {\n id?: string // uuid\n name: string\n slug?: string\n enabled: boolean\n change_description?: string\n type: "managed_call"\n configuration?: {\n operation: {\n method: { ... }\n path: { ... }\n headers?: { ... }\n query_params?: { ... }\n }\n request_mapping?: string\n response_mapping?: string\n inbound_use_case_slug?: string\n }\n}\n```\n\n### `EmbeddedSecureProxyUseCaseRequest`\n\n```ts\ntype EmbeddedSecureProxyUseCaseRequest = {\n id?: string // uuid\n name: string\n slug?: string\n enabled: boolean\n change_description?: string\n type: "secure_proxy"\n configuration?: {\n vpc_mode: "static_ip" | "secure_link"\n allowed_domains?: string[]\n allowed_ips?: string[]\n }\n}\n```\n\n### `UseCaseBase`\n\n```ts\ntype UseCaseBase = {\n id: string // uuid\n integrationId: string // uuid\n name: string\n slug?: string\n type: "inbound" | "outbound" | "file_proxy" | "managed_call" | "secure_proxy"\n enabled: boolean\n change_description?: string\n changed_by?: string\n created_at: string // date-time\n updated_at: string // date-time\n}\n```\n\n### `InboundUseCase`\n\n```ts\ntype InboundUseCase = {\n id: string // uuid\n integrationId: string // uuid\n name: string\n slug?: string\n type: "inbound"\n enabled: boolean\n change_description?: string\n changed_by?: string\n created_at: string // date-time\n updated_at: string // date-time\n configuration?: {\n direct?: boolean\n entities?: Array<{\n entity_schema: { ... }\n unique_ids: { ... }\n jsonataExpression?: { ... }\n enabled?: { ... }\n mode?: { ... }\n scope?: { ... }\n fields?: { ... }\n }>\n meter_readings?: Array<{\n jsonataExpression?: { ... }\n reading_matching?: { ... }\n mode?: { ... }\n scope?: { ... }\n meter: { ... }\n meter_counter?: { ... }\n fields: { ... }\n }>\n }\n}\n```\n\n### `OutboundUseCase`\n\n```ts\ntype OutboundUseCase = {\n id: string // uuid\n integrationId: string // uuid\n name: string\n slug?: string\n type: "outbound"\n enabled: boolean\n change_description?: string\n changed_by?: string\n created_at: string // date-time\n updated_at: string // date-time\n configuration?: {\n event_catalog_event: string\n event_filter?: string\n mappings: Array<{\n id?: { ... }\n name: { ... }\n jsonata_expression?: { ... }\n enabled: { ... }\n delivery: { ... }\n created_at?: { ... }\n updated_at?: { ... }\n }>\n ack_tracking?: "on" | "off"\n }\n}\n```\n\n### `FileProxyUseCase`\n\n```ts\ntype FileProxyUseCase = {\n id: string // uuid\n integrationId: string // uuid\n name: string\n slug?: string\n type: "file_proxy"\n enabled: boolean\n change_description?: string\n changed_by?: string\n created_at: string // date-time\n updated_at: string // date-time\n configuration?: {\n direction?: "download" | "upload"\n upload?: {\n max_total_bytes?: { ... }\n max_file_bytes?: { ... }\n max_delivery_attempts?: { ... }\n }\n fan_out?: {\n enabled: { ... }\n }\n secure_proxy?: {\n use_case_slug: { ... }\n }\n auth?: {\n type: { ... }\n token_url: { ... }\n client_id: { ... }\n client_secret: { ... }\n scope?: { ... }\n audience?: { ... }\n resource?: { ... }\n username?: { ... }\n password?: { ... }\n body_params?: { ... }\n headers?: { ... }\n query_params?: { ... }\n }\n params?: Array<{\n name: { ... }\n required: { ... }\n description?: { ... }\n }>\n allowed_origins?: string // uri[]\n steps: Array<{\n url: { ... }\n method: { ... }\n headers?: { ... }\n body_jsonata?: { ... }\n enabled?: { ... }\n body?: { ... }\n response_type: { ... }\n }>\n response?: {\n body: { ... }\n encoding: { ... }\n filename?: { ... }\n content_type?: { ... }\n }\n prevent_indirect_serving?: boolean\n }\n}\n```\n\n### `ManagedCallUseCase`\n\n```ts\ntype ManagedCallUseCase = {\n id: string // uuid\n integrationId: string // uuid\n name: string\n slug?: string\n type: "managed_call"\n enabled: boolean\n change_description?: string\n changed_by?: string\n created_at: string // date-time\n updated_at: string // date-time\n configuration?: {\n operation: {\n method: { ... }\n path: { ... }\n headers?: { ... }\n query_params?: { ... }\n }\n request_mapping?: string\n response_mapping?: string\n inbound_use_case_slug?: string\n }\n type_annotations?: {\n request?: Record<string, string>\n response?: Record<string, string>\n }\n types_locked?: boolean\n}\n```\n\n### `SecureProxyUseCase`\n\n```ts\ntype SecureProxyUseCase = {\n id: string // uuid\n integrationId: string // uuid\n name: string\n slug?: string\n type: "secure_proxy"\n enabled: boolean\n change_description?: string\n changed_by?: string\n created_at: string // date-time\n updated_at: string // date-time\n configuration?: {\n vpc_mode: "static_ip" | "secure_link"\n allowed_domains?: string[]\n allowed_ips?: string[]\n }\n}\n```\n\n### `UseCase`\n\n```ts\ntype UseCase = {\n id: string // uuid\n integrationId: string // uuid\n name: string\n slug?: string\n type: "inbound"\n enabled: boolean\n change_description?: string\n changed_by?: string\n created_at: string // date-time\n updated_at: string // date-time\n configuration?: {\n direct?: boolean\n entities?: Array<{\n entity_schema: { ... }\n unique_ids: { ... }\n jsonataExpression?: { ... }\n enabled?: { ... }\n mode?: { ... }\n scope?: { ... }\n fields?: { ... }\n }>\n meter_readings?: Array<{\n jsonataExpression?: { ... }\n reading_matching?: { ... }\n mode?: { ... }\n scope?: { ... }\n meter: { ... }\n meter_counter?: { ... }\n fields: { ... }\n }>\n }\n} | {\n id: string // uuid\n integrationId: string // uuid\n name: string\n slug?: string\n type: "outbound"\n enabled: boolean\n change_description?: string\n changed_by?: string\n created_at: string // date-time\n updated_at: string // date-time\n configuration?: {\n event_catalog_event: string\n event_filter?: string\n mappings: Array<{\n id?: { ... }\n name: { ... }\n jsonata_expression?: { ... }\n enabled: { ... }\n delivery: { ... }\n created_at?: { ... }\n updated_at?: { ... }\n }>\n ack_tracking?: "on" | "off"\n }\n} | {\n id: string // uuid\n integrationId: string // uuid\n name: string\n slug?: string\n type: "file_proxy"\n enabled: boolean\n change_description?: string\n changed_by?: string\n created_at: string // date-time\n updated_at: string // date-time\n configuration?: {\n direction?: "download" | "upload"\n upload?: {\n max_total_bytes?: { ... }\n max_file_bytes?: { ... }\n max_delivery_attempts?: { ... }\n }\n fan_out?: {\n enabled: { ... }\n }\n secure_proxy?: {\n use_case_slug: { ... }\n }\n auth?: {\n type: { ... }\n token_url: { ... }\n client_id: { ... }\n client_secret: { ... }\n scope?: { ... }\n audience?: { ... }\n resource?: { ... }\n username?: { ... }\n password?: { ... }\n body_params?: { ... }\n headers?: { ... }\n query_params?: { ... }\n }\n params?: Array<{\n name: { ... }\n required: { ... }\n description?: { ... }\n }>\n // ...\n}\n```\n\n### `CreateUseCaseRequest`\n\n```ts\ntype CreateUseCaseRequest = {\n name: string\n slug: string\n enabled: boolean\n type: "inbound"\n configuration?: {\n direct?: boolean\n entities?: Array<{\n entity_schema: { ... }\n unique_ids: { ... }\n jsonataExpression?: { ... }\n enabled?: { ... }\n mode?: { ... }\n scope?: { ... }\n fields?: { ... }\n }>\n meter_readings?: Array<{\n jsonataExpression?: { ... }\n reading_matching?: { ... }\n mode?: { ... }\n scope?: { ... }\n meter: { ... }\n meter_counter?: { ... }\n fields: { ... }\n }>\n }\n} | {\n name: string\n slug: string\n enabled: boolean\n type: "outbound"\n configuration?: {\n event_catalog_event: string\n event_filter?: string\n mappings: Array<{\n id?: { ... }\n name: { ... }\n jsonata_expression?: { ... }\n enabled: { ... }\n delivery: { ... }\n created_at?: { ... }\n updated_at?: { ... }\n }>\n ack_tracking?: "on" | "off"\n }\n} | {\n name: string\n slug: string\n enabled: boolean\n type: "file_proxy"\n configuration?: {\n direction?: "download" | "upload"\n upload?: {\n max_total_bytes?: { ... }\n max_file_bytes?: { ... }\n max_delivery_attempts?: { ... }\n }\n fan_out?: {\n enabled: { ... }\n }\n secure_proxy?: {\n use_case_slug: { ... }\n }\n auth?: {\n type: { ... }\n token_url: { ... }\n client_id: { ... }\n client_secret: { ... }\n scope?: { ... }\n audience?: { ... }\n resource?: { ... }\n username?: { ... }\n password?: { ... }\n body_params?: { ... }\n headers?: { ... }\n query_params?: { ... }\n }\n params?: Array<{\n name: { ... }\n required: { ... }\n description?: { ... }\n }>\n allowed_origins?: string // uri[]\n steps: Array<{\n url: { ... }\n method: { ... }\n headers?: { ... }\n body_jsonata?: { ... }\n enabled?: { ... }\n body?: { ... }\n response_type: { ... }\n }>\n response?: {\n body: { ... }\n encoding: { ... }\n filename?: { ... }\n content_type?: { ... }\n }\n prevent_indirect_serving?: boolean\n }\n // ...\n}\n```\n\n### `CreateUseCaseRequestBase`\n\n```ts\ntype CreateUseCaseRequestBase = {\n name: string\n slug: string\n enabled: boolean\n}\n```\n\n### `CreateInboundUseCaseRequest`\n\n```ts\ntype CreateInboundUseCaseRequest = {\n name: string\n slug: string\n enabled: boolean\n type: "inbound"\n configuration?: {\n direct?: boolean\n entities?: Array<{\n entity_schema: { ... }\n unique_ids: { ... }\n jsonataExpression?: { ... }\n enabled?: { ... }\n mode?: { ... }\n scope?: { ... }\n fields?: { ... }\n }>\n meter_readings?: Array<{\n jsonataExpression?: { ... }\n reading_matching?: { ... }\n mode?: { ... }\n scope?: { ... }\n meter: { ... }\n meter_counter?: { ... }\n fields: { ... }\n }>\n }\n}\n```\n\n### `CreateOutboundUseCaseRequest`\n\n```ts\ntype CreateOutboundUseCaseRequest = {\n name: string\n slug: string\n enabled: boolean\n type: "outbound"\n configuration?: {\n event_catalog_event: string\n event_filter?: string\n mappings: Array<{\n id?: { ... }\n name: { ... }\n jsonata_expression?: { ... }\n enabled: { ... }\n delivery: { ... }\n created_at?: { ... }\n updated_at?: { ... }\n }>\n ack_tracking?: "on" | "off"\n }\n}\n```\n\n### `CreateFileProxyUseCaseRequest`\n\n```ts\ntype CreateFileProxyUseCaseRequest = {\n name: string\n slug: string\n enabled: boolean\n type: "file_proxy"\n configuration?: {\n direction?: "download" | "upload"\n upload?: {\n max_total_bytes?: { ... }\n max_file_bytes?: { ... }\n max_delivery_attempts?: { ... }\n }\n fan_out?: {\n enabled: { ... }\n }\n secure_proxy?: {\n use_case_slug: { ... }\n }\n auth?: {\n type: { ... }\n token_url: { ... }\n client_id: { ... }\n client_secret: { ... }\n scope?: { ... }\n audience?: { ... }\n resource?: { ... }\n username?: { ... }\n password?: { ... }\n body_params?: { ... }\n headers?: { ... }\n query_params?: { ... }\n }\n params?: Array<{\n name: { ... }\n required: { ... }\n description?: { ... }\n }>\n allowed_origins?: string // uri[]\n steps: Array<{\n url: { ... }\n method: { ... }\n headers?: { ... }\n body_jsonata?: { ... }\n enabled?: { ... }\n body?: { ... }\n response_type: { ... }\n }>\n response?: {\n body: { ... }\n encoding: { ... }\n filename?: { ... }\n content_type?: { ... }\n }\n prevent_indirect_serving?: boolean\n }\n}\n```\n\n### `CreateManagedCallUseCaseRequest`\n\n```ts\ntype CreateManagedCallUseCaseRequest = {\n name: string\n slug: string\n enabled: boolean\n type: "managed_call"\n configuration?: {\n operation: {\n method: { ... }\n path: { ... }\n headers?: { ... }\n query_params?: { ... }\n }\n request_mapping?: string\n response_mapping?: string\n inbound_use_case_slug?: string\n }\n}\n```\n\n### `CreateSecureProxyUseCaseRequest`\n\n```ts\ntype CreateSecureProxyUseCaseRequest = {\n name: string\n slug: string\n enabled: boolean\n type: "secure_proxy"\n configuration?: {\n vpc_mode: "static_ip" | "secure_link"\n allowed_domains?: string[]\n allowed_ips?: string[]\n }\n}\n```\n\n### `UpdateUseCaseRequest`\n\n```ts\ntype UpdateUseCaseRequest = {\n name?: string\n slug?: string\n enabled?: boolean\n change_description?: string\n type?: "inbound"\n configuration?: {\n direct?: boolean\n entities?: Array<{\n entity_schema: { ... }\n unique_ids: { ... }\n jsonataExpression?: { ... }\n enabled?: { ... }\n mode?: { ... }\n scope?: { ... }\n fields?: { ... }\n }>\n meter_readings?: Array<{\n jsonataExpression?: { ... }\n reading_matching?: { ... }\n mode?: { ... }\n scope?: { ... }\n meter: { ... }\n meter_counter?: { ... }\n fields: { ... }\n }>\n }\n} | {\n name?: string\n slug?: string\n enabled?: boolean\n change_description?: string\n type?: "outbound"\n configuration?: {\n event_catalog_event: string\n event_filter?: string\n mappings: Array<{\n id?: { ... }\n name: { ... }\n jsonata_expression?: { ... }\n enabled: { ... }\n delivery: { ... }\n created_at?: { ... }\n updated_at?: { ... }\n }>\n ack_tracking?: "on" | "off"\n }\n} | {\n name?: string\n slug?: string\n enabled?: boolean\n change_description?: string\n type?: "file_proxy"\n configuration?: {\n direction?: "download" | "upload"\n upload?: {\n max_total_bytes?: { ... }\n max_file_bytes?: { ... }\n max_delivery_attempts?: { ... }\n }\n fan_out?: {\n enabled: { ... }\n }\n secure_proxy?: {\n use_case_slug: { ... }\n }\n auth?: {\n type: { ... }\n token_url: { ... }\n client_id: { ... }\n client_secret: { ... }\n scope?: { ... }\n audience?: { ... }\n resource?: { ... }\n username?: { ... }\n password?: { ... }\n body_params?: { ... }\n headers?: { ... }\n query_params?: { ... }\n }\n params?: Array<{\n name: { ... }\n required: { ... }\n description?: { ... }\n }>\n allowed_origins?: string // uri[]\n steps: Array<{\n url: { ... }\n method: { ... }\n headers?: { ... }\n body_jsonata?: { ... }\n enabled?: { ... }\n body?: { ... }\n response_type: { ... }\n }>\n response?: {\n body: { ... }\n encoding: { ... }\n filename?: { ... }\n content_type?: { ... }\n // ...\n}\n```\n\n### `UpdateUseCaseRequestBase`\n\n```ts\ntype UpdateUseCaseRequestBase = {\n name?: string\n slug?: string\n enabled?: boolean\n change_description?: string\n}\n```\n\n### `UpdateInboundUseCaseRequest`\n\n```ts\ntype UpdateInboundUseCaseRequest = {\n name?: string\n slug?: string\n enabled?: boolean\n change_description?: string\n type?: "inbound"\n configuration?: {\n direct?: boolean\n entities?: Array<{\n entity_schema: { ... }\n unique_ids: { ... }\n jsonataExpression?: { ... }\n enabled?: { ... }\n mode?: { ... }\n scope?: { ... }\n fields?: { ... }\n }>\n meter_readings?: Array<{\n jsonataExpression?: { ... }\n reading_matching?: { ... }\n mode?: { ... }\n scope?: { ... }\n meter: { ... }\n meter_counter?: { ... }\n fields: { ... }\n }>\n }\n}\n```\n\n### `UpdateOutboundUseCaseRequest`\n\n```ts\ntype UpdateOutboundUseCaseRequest = {\n name?: string\n slug?: string\n enabled?: boolean\n change_description?: string\n type?: "outbound"\n configuration?: {\n event_catalog_event: string\n event_filter?: string\n mappings: Array<{\n id?: { ... }\n name: { ... }\n jsonata_expression?: { ... }\n enabled: { ... }\n delivery: { ... }\n created_at?: { ... }\n updated_at?: { ... }\n }>\n ack_tracking?: "on" | "off"\n }\n}\n```\n\n### `UpdateFileProxyUseCaseRequest`\n\n```ts\ntype UpdateFileProxyUseCaseRequest = {\n name?: string\n slug?: string\n enabled?: boolean\n change_description?: string\n type?: "file_proxy"\n configuration?: {\n direction?: "download" | "upload"\n upload?: {\n max_total_bytes?: { ... }\n max_file_bytes?: { ... }\n max_delivery_attempts?: { ... }\n }\n fan_out?: {\n enabled: { ... }\n }\n secure_proxy?: {\n use_case_slug: { ... }\n }\n auth?: {\n type: { ... }\n token_url: { ... }\n client_id: { ... }\n client_secret: { ... }\n scope?: { ... }\n audience?: { ... }\n resource?: { ... }\n username?: { ... }\n password?: { ... }\n body_params?: { ... }\n headers?: { ... }\n query_params?: { ... }\n }\n params?: Array<{\n name: { ... }\n required: { ... }\n description?: { ... }\n }>\n allowed_origins?: string // uri[]\n steps: Array<{\n url: { ... }\n method: { ... }\n headers?: { ... }\n body_jsonata?: { ... }\n enabled?: { ... }\n body?: { ... }\n response_type: { ... }\n }>\n response?: {\n body: { ... }\n encoding: { ... }\n filename?: { ... }\n content_type?: { ... }\n }\n prevent_indirect_serving?: boolean\n }\n}\n```\n\n### `UpdateManagedCallUseCaseRequest`\n\n```ts\ntype UpdateManagedCallUseCaseRequest = {\n name?: string\n slug?: string\n enabled?: boolean\n change_description?: string\n type?: "managed_call"\n configuration?: {\n operation: {\n method: { ... }\n path: { ... }\n headers?: { ... }\n query_params?: { ... }\n }\n request_mapping?: string\n response_mapping?: string\n inbound_use_case_slug?: string\n }\n type_annotations?: {\n request?: Record<string, string>\n response?: Record<string, string>\n }\n}\n```\n\n### `UpdateSecureProxyUseCaseRequest`\n\n```ts\ntype UpdateSecureProxyUseCaseRequest = {\n name?: string\n slug?: string\n enabled?: boolean\n change_description?: string\n type?: "secure_proxy"\n configuration?: {\n vpc_mode: "static_ip" | "secure_link"\n allowed_domains?: string[]\n allowed_ips?: string[]\n }\n}\n```\n\n### `UseCaseHistoryEntry`\n\n```ts\ntype UseCaseHistoryEntry = {\n id: string // uuid\n useCaseId: string // uuid\n integrationId: string // uuid\n name: string\n slug?: string\n enabled: boolean\n change_description?: string\n changed_by?: string\n created_at: string // date-time\n updated_at: string // date-time\n history_created_at: string // date-time\n type: "inbound"\n configuration?: {\n direct?: boolean\n entities?: Array<{\n entity_schema: { ... }\n unique_ids: { ... }\n jsonataExpression?: { ... }\n enabled?: { ... }\n mode?: { ... }\n scope?: { ... }\n fields?: { ... }\n }>\n meter_readings?: Array<{\n jsonataExpression?: { ... }\n reading_matching?: { ... }\n mode?: { ... }\n scope?: { ... }\n meter: { ... }\n meter_counter?: { ... }\n fields: { ... }\n }>\n }\n} | {\n id: string // uuid\n useCaseId: string // uuid\n integrationId: string // uuid\n name: string\n slug?: string\n enabled: boolean\n change_description?: string\n changed_by?: string\n created_at: string // date-time\n updated_at: string // date-time\n history_created_at: string // date-time\n type: "outbound"\n configuration?: {\n event_catalog_event: string\n event_filter?: string\n mappings: Array<{\n id?: { ... }\n name: { ... }\n jsonata_expression?: { ... }\n enabled: { ... }\n delivery: { ... }\n created_at?: { ... }\n updated_at?: { ... }\n }>\n ack_tracking?: "on" | "off"\n }\n} | {\n id: string // uuid\n useCaseId: string // uuid\n integrationId: string // uuid\n name: string\n slug?: string\n enabled: boolean\n change_description?: string\n changed_by?: string\n created_at: string // date-time\n updated_at: string // date-time\n history_created_at: string // date-time\n type: "file_proxy"\n configuration?: {\n direction?: "download" | "upload"\n upload?: {\n max_total_bytes?: { ... }\n max_file_bytes?: { ... }\n max_delivery_attempts?: { ... }\n }\n fan_out?: {\n enabled: { ... }\n }\n secure_proxy?: {\n use_case_slug: { ... }\n }\n auth?: {\n type: { ... }\n token_url: { ... }\n client_id: { ... }\n client_secret: { ... }\n scope?: { ... }\n audience?: { ... }\n resource?: { ... }\n username?: { ... }\n password?: { ... }\n body_params?: { ... }\n headers?: { ... }\n query_params?: { ... }\n // ...\n}\n```\n\n### `UseCaseHistoryEntryBase`\n\n```ts\ntype UseCaseHistoryEntryBase = {\n id: string // uuid\n useCaseId: string // uuid\n integrationId: string // uuid\n name: string\n slug?: string\n enabled: boolean\n change_description?: string\n changed_by?: string\n created_at: string // date-time\n updated_at: string // date-time\n history_created_at: string // date-time\n}\n```\n\n### `InboundUseCaseHistoryEntry`\n\n```ts\ntype InboundUseCaseHistoryEntry = {\n id: string // uuid\n useCaseId: string // uuid\n integrationId: string // uuid\n name: string\n slug?: string\n enabled: boolean\n change_description?: string\n changed_by?: string\n created_at: string // date-time\n updated_at: string // date-time\n history_created_at: string // date-time\n type: "inbound"\n configuration?: {\n direct?: boolean\n entities?: Array<{\n entity_schema: { ... }\n unique_ids: { ... }\n jsonataExpression?: { ... }\n enabled?: { ... }\n mode?: { ... }\n scope?: { ... }\n fields?: { ... }\n }>\n meter_readings?: Array<{\n jsonataExpression?: { ... }\n reading_matching?: { ... }\n mode?: { ... }\n scope?: { ... }\n meter: { ... }\n meter_counter?: { ... }\n fields: { ... }\n }>\n }\n}\n```\n\n### `OutboundUseCaseHistoryEntry`\n\n```ts\ntype OutboundUseCaseHistoryEntry = {\n id: string // uuid\n useCaseId: string // uuid\n integrationId: string // uuid\n name: string\n slug?: string\n enabled: boolean\n change_description?: string\n changed_by?: string\n created_at: string // date-time\n updated_at: string // date-time\n history_created_at: string // date-time\n type: "outbound"\n configuration?: {\n event_catalog_event: string\n event_filter?: string\n mappings: Array<{\n id?: { ... }\n name: { ... }\n jsonata_expression?: { ... }\n enabled: { ... }\n delivery: { ... }\n created_at?: { ... }\n updated_at?: { ... }\n }>\n ack_tracking?: "on" | "off"\n }\n}\n```\n\n### `FileProxyUseCaseHistoryEntry`\n\n```ts\ntype FileProxyUseCaseHistoryEntry = {\n id: string // uuid\n useCaseId: string // uuid\n integrationId: string // uuid\n name: string\n slug?: string\n enabled: boolean\n change_description?: string\n changed_by?: string\n created_at: string // date-time\n updated_at: string // date-time\n history_created_at: string // date-time\n type: "file_proxy"\n configuration?: {\n direction?: "download" | "upload"\n upload?: {\n max_total_bytes?: { ... }\n max_file_bytes?: { ... }\n max_delivery_attempts?: { ... }\n }\n fan_out?: {\n enabled: { ... }\n }\n secure_proxy?: {\n use_case_slug: { ... }\n }\n auth?: {\n type: { ... }\n token_url: { ... }\n client_id: { ... }\n client_secret: { ... }\n scope?: { ... }\n audience?: { ... }\n resource?: { ... }\n username?: { ... }\n password?: { ... }\n body_params?: { ... }\n headers?: { ... }\n query_params?: { ... }\n }\n params?: Array<{\n name: { ... }\n required: { ... }\n description?: { ... }\n }>\n allowed_origins?: string // uri[]\n steps: Array<{\n url: { ... }\n method: { ... }\n headers?: { ... }\n body_jsonata?: { ... }\n enabled?: { ... }\n body?: { ... }\n response_type: { ... }\n }>\n response?: {\n body: { ... }\n encoding: { ... }\n filename?: { ... }\n content_type?: { ... }\n }\n prevent_indirect_serving?: boolean\n }\n}\n```\n\n### `ManagedCallUseCaseHistoryEntry`\n\n```ts\ntype ManagedCallUseCaseHistoryEntry = {\n id: string // uuid\n useCaseId: string // uuid\n integrationId: string // uuid\n name: string\n slug?: string\n enabled: boolean\n change_description?: string\n changed_by?: string\n created_at: string // date-time\n updated_at: string // date-time\n history_created_at: string // date-time\n type: "managed_call"\n configuration?: {\n operation: {\n method: { ... }\n path: { ... }\n headers?: { ... }\n query_params?: { ... }\n }\n request_mapping?: string\n response_mapping?: string\n inbound_use_case_slug?: string\n }\n type_annotations?: {\n request?: Record<string, string>\n response?: Record<string, string>\n }\n types_locked?: boolean\n}\n```\n\n### `SecureProxyUseCaseHistoryEntry`\n\n```ts\ntype SecureProxyUseCaseHistoryEntry = {\n id: string // uuid\n useCaseId: string // uuid\n integrationId: string // uuid\n name: string\n slug?: string\n enabled: boolean\n change_description?: string\n changed_by?: string\n created_at: string // date-time\n updated_at: string // date-time\n history_created_at: string // date-time\n type: "secure_proxy"\n configuration?: {\n vpc_mode: "static_ip" | "secure_link"\n allowed_domains?: string[]\n allowed_ips?: string[]\n }\n}\n```\n\n### `SecureProxyUseCaseConfiguration`\n\nConfiguration for secure_proxy use cases. Defines how to route requests through a secure VPC.\n\n\n```ts\ntype SecureProxyUseCaseConfiguration = {\n vpc_mode: "static_ip" | "secure_link"\n allowed_domains?: string[]\n allowed_ips?: string[]\n}\n```\n\n### `SecureProxyWhitelist`\n\nCurrent whitelist state for a secure_proxy use case. vpc_mode is read-only\ncontext so the UI can show the user what mode the pool is in.\n\n\n```ts\ntype SecureProxyWhitelist = {\n vpc_mode: "static_ip" | "secure_link"\n allowed_domains: string[]\n allowed_ips: string[]\n}\n```\n\n### `SecureProxyWhitelistUpdate`\n\nPartial update for a secure_proxy whitelist. At least one of\n`allowed_domains` or `allowed_ips` must be provided.\n\nPer-field semantics:\n - **omitted** \u2014 the field is not modified; the stored value is preserved.\n - **non-empty array** \u2014 the stored value is replaced with the supplied list.\n - **emp\n\n```ts\ntype SecureProxyWhitelistUpdate = {\n allowed_domains?: string[]\n allowed_ips?: string[]\n}\n```\n\n### `SecureProxySummary`\n\n```ts\ntype SecureProxySummary = {\n id: string // uuid\n name: string\n slug?: string\n enabled: boolean\n vpc_mode: "static_ip" | "secure_link"\n allowed_domains?: string[]\n allowed_ips?: string[]\n integration_id: string // uuid\n integration_name: string\n}\n```\n\n### `SecureProxyRequest`\n\n```ts\ntype SecureProxyRequest = {\n integration_id: string // uuid\n use_case_id?: string // uuid\n use_case_slug?: string\n url: string // uri\n method: "GET" | "POST" | "PUT" | "PATCH" | "DELETE"\n headers?: Record<string, string>\n body?: unknown\n response_type?: "json" | "binary"\n}\n```\n\n### `SecureProxyResponse`\n\n```ts\ntype SecureProxyResponse = {\n status_code?: number\n headers?: Record<string, string>\n body?: unknown\n}\n```\n\n### `SecureProxyUpstreamError`\n\nError payload returned when epilot could not obtain an HTTP response from the proxied target. The failure is epilot-generated (HTTP 502) but the cause is usually remote-side; `code`/`reason` make that attributable.\n\n```ts\ntype SecureProxyUpstreamError = {\n message: "Upstream network error" | "Upstream error"\n code?: string\n reason?: string\n}\n```\n\n### `ManagedCallOperationConfig`\n\nConfiguration for managed_call use cases. Defines a single API operation with JSONata mapping.\n\n```ts\ntype ManagedCallOperationConfig = {\n operation: {\n method: "GET" | "POST" | "PUT" | "PATCH" | "DELETE"\n path: string\n headers?: Record<string, string>\n query_params?: Record<string, string>\n }\n request_mapping?: string\n response_mapping?: string\n inbound_use_case_slug?: string\n}\n```\n\n### `ManagedCallOperation`\n\nHTTP operation configuration for managed calls\n\n```ts\ntype ManagedCallOperation = {\n method: "GET" | "POST" | "PUT" | "PATCH" | "DELETE"\n path: string\n headers?: Record<string, string>\n query_params?: Record<string, string>\n}\n```\n\n### `ManagedCallExecuteRequest`\n\n```ts\ntype ManagedCallExecuteRequest = {\n integration_id: string // uuid\n payload?: Record<string, unknown>\n correlation_id?: string\n}\n```\n\n### `ManagedCallExecuteResponse`\n\nThe response from a managed call execution.\nOn success, returns the JSONata-mapped response data directly (no wrapper).\nThe shape is entirely defined by your response_mapping JSONata expression.\nIf no response_mapping is configured, returns the raw external API response.\nCheck the X-Inbound-Event-Id\n\n```ts\ntype ManagedCallExecuteResponse = unknown\n```\n\n### `ManagedCallErrorResponse`\n\n```ts\ntype ManagedCallErrorResponse = {\n error: {\n code: string\n message: string\n details?: Record<string, unknown>\n }\n}\n```\n\n### `TypeAnnotations`\n\nDeveloper-provided type annotations for a use case\'s request and response fields\n\n```ts\ntype TypeAnnotations = {\n request?: Record<string, string>\n response?: Record<string, string>\n}\n```\n\n### `TypeDescriptor`\n\nDescribes the inferred type shape of a JSONata expression\n\n```ts\ntype TypeDescriptor = {\n kind: "object" | "array" | "string" | "number" | "boolean" | "null" | "unknown" | "union"\n properties?: Record<string, {\n kind: "object" | "array" | "string" | "number" | "boolean" | "null" | "unknown" | "union"\n properties?: Record<string, {\n kind: { ... }\n properties?: { ... }\n items?: { ... }\n source?: { ... }\n variants?: { ... }\n }>\n items?: {\n kind: { ... }\n properties?: { ... }\n items?: { ... }\n source?: { ... }\n variants?: { ... }\n }\n source?: string\n variants?: Array<{\n kind: { ... }\n properties?: { ... }\n items?: { ... }\n source?: { ... }\n variants?: { ... }\n }>\n }>\n items?: {\n kind: "object" | "array" | "string" | "number" | "boolean" | "null" | "unknown" | "union"\n properties?: Record<string, {\n kind: { ... }\n properties?: { ... }\n items?: { ... }\n source?: { ... }\n variants?: { ... }\n }>\n items?: {\n kind: { ... }\n properties?: { ... }\n items?: { ... }\n source?: { ... }\n variants?: { ... }\n }\n source?: string\n variants?: Array<{\n kind: { ... }\n properties?: { ... }\n items?: { ... }\n source?: { ... }\n variants?: { ... }\n }>\n }\n source?: string\n variants?: Array<{\n kind: "object" | "array" | "string" | "number" | "boolean" | "null" | "unknown" | "union"\n properties?: Record<string, {\n kind: { ... }\n properties?: { ... }\n items?: { ... }\n source?: { ... }\n variants?: { ... }\n }>\n items?: {\n kind: { ... }\n properties?: { ... }\n items?: { ... }\n source?: { ... }\n variants?: { ... }\n }\n source?: string\n variants?: Array<{\n kind: { ... }\n properties?: { ... }\n items?: { ... }\n source?: { ... }\n variants?: { ... }\n }>\n }>\n}\n```\n\n### `UseCaseTypePreview`\n\nScaffolded type descriptors for a single use case\n\n```ts\ntype UseCaseTypePreview = {\n slug: string\n name?: string\n request_shape: {\n kind: "object" | "array" | "string" | "number" | "boolean" | "null" | "unknown" | "union"\n properties?: Record<string, {\n kind: { ... }\n properties?: { ... }\n items?: { ... }\n source?: { ... }\n variants?: { ... }\n }>\n items?: {\n kind: { ... }\n properties?: { ... }\n items?: { ... }\n source?: { ... }\n variants?: { ... }\n }\n source?: string\n variants?: Array<{\n kind: { ... }\n properties?: { ... }\n items?: { ... }\n source?: { ... }\n variants?: { ... }\n }>\n }\n response_shape: {\n kind: "object" | "array" | "string" | "number" | "boolean" | "null" | "unknown" | "union"\n properties?: Record<string, {\n kind: { ... }\n properties?: { ... }\n items?: { ... }\n source?: { ... }\n variants?: { ... }\n }>\n items?: {\n kind: { ... }\n properties?: { ... }\n items?: { ... }\n source?: { ... }\n variants?: { ... }\n }\n source?: string\n variants?: Array<{\n kind: { ... }\n properties?: { ... }\n items?: { ... }\n source?: { ... }\n variants?: { ... }\n }>\n }\n existing_annotations?: {\n request?: Record<string, string>\n response?: Record<string, string>\n }\n}\n```\n\n### `GenerateTypesPreviewResponse`\n\n```ts\ntype GenerateTypesPreviewResponse = {\n integration_name?: string\n use_cases: Array<{\n slug: string\n name?: string\n request_shape: {\n kind: { ... }\n properties?: { ... }\n items?: { ... }\n source?: { ... }\n variants?: { ... }\n }\n response_shape: {\n kind: { ... }\n properties?: { ... }\n items?: { ... }\n source?: { ... }\n variants?: { ... }\n }\n existing_annotations?: {\n request?: { ... }\n response?: { ... }\n }\n }>\n previous_version?: string\n suggested_version?: string\n suggested_bump?: "major" | "minor"\n detected_changes?: Array<{\n slug: string\n field: string\n type: "breaking" | "non-breaking"\n description: string\n }>\n}\n```\n\n### `GenerateTypesRequest`\n\n```ts\ntype GenerateTypesRequest = {\n package_name: string\n version: string\n description?: string\n domain_package?: string\n domain_map_name?: string\n annotations?: Record<string, {\n request?: Record<string, string>\n response?: Record<string, string>\n }>\n}\n```\n\n### `GenerateTypesResponse`\n\n```ts\ntype GenerateTypesResponse = {\n package_name: string\n version: string\n files: Record<string, string>\n warnings?: string[]\n}\n```\n\n### `CommitTypesRequest`\n\n```ts\ntype CommitTypesRequest = {\n package_name: string\n version: string\n annotations?: Record<string, {\n request?: Record<string, string>\n response?: Record<string, string>\n }>\n}\n```\n\n### `CommitTypesResponse`\n\n```ts\ntype CommitTypesResponse = {\n committed: boolean\n warnings?: string[]\n}\n```\n\n### `FileProxyUseCaseConfiguration`\n\nConfiguration for file_proxy use cases. Defines how to authenticate and move files\nbetween epilot and an external document system, in either direction (see `direction`).\n\n**Download** (`direction: download`, the default) fetches a file from the external system\nand serves it to a browser. The downloa\n\n```ts\ntype FileProxyUseCaseConfiguration = {\n direction?: "download" | "upload"\n upload?: {\n max_total_bytes?: number\n max_file_bytes?: number\n max_delivery_attempts?: number\n }\n fan_out?: {\n enabled: boolean\n }\n secure_proxy?: {\n use_case_slug: string\n }\n auth?: {\n type: "oauth2_client_credentials" | "oauth2_password"\n token_url: string\n client_id: string\n client_secret: string\n scope?: string\n audience?: string\n resource?: string\n username?: string\n password?: string\n body_params?: Record<string, string>\n headers?: Record<string, string>\n query_params?: Record<string, string>\n }\n params?: Array<{\n name: string\n required: boolean\n description?: string\n }>\n allowed_origins?: string // uri[]\n steps: Array<{\n url: string\n method: "GET" | "POST" | "PUT" | "PATCH"\n headers?: Record<string, string>\n body_jsonata?: string\n enabled?: string\n body?: string\n response_type: "json" | "binary"\n }>\n response?: {\n body: string\n encoding: "base64" | "binary"\n filename?: string\n content_type?: string\n }\n prevent_indirect_serving?: boolean\n}\n```\n\n### `FileProxySecureProxyAttachment`\n\n```ts\ntype FileProxySecureProxyAttachment = {\n use_case_slug: string\n}\n```\n\n### `FileProxyAuth`\n\n```ts\ntype FileProxyAuth = {\n type: "oauth2_client_credentials" | "oauth2_password"\n token_url: string\n client_id: string\n client_secret: string\n scope?: string\n audience?: string\n resource?: string\n username?: string\n password?: string\n body_params?: Record<string, string>\n headers?: Record<string, string>\n query_params?: Record<string, string>\n}\n```\n\n### `FileProxyParam`\n\n```ts\ntype FileProxyParam = {\n name: string\n required: boolean\n description?: string\n}\n```\n\n### `FileProxyStep`\n\n```ts\ntype FileProxyStep = {\n url: string\n method: "GET" | "POST" | "PUT" | "PATCH"\n headers?: Record<string, string>\n body_jsonata?: string\n enabled?: string\n body?: string\n response_type: "json" | "binary"\n}\n```\n\n### `FileProxyFanOutConfig`\n\nWhether one event produces one delivery per file, or a single delivery carrying all of\nthem. The split is always over the event\'s `event_attachments` \u2014 there is no expression\nto write, because an upload only ever runs on events that declare that field.\n\nEach resulting delivery is fully independent: \n\n```ts\ntype FileProxyFanOutConfig = {\n enabled: boolean\n}\n```\n\n### `FileProxyUploadConfig`\n\nUpload-side settings for a file_proxy use case with `direction: upload`.\nThe surrounding file_proxy configuration owns WHAT and HOW to send: `fan_out`,\nauth, and the steps with their `body_jsonata`. This nested object governs\nupload-specific limits and how the final external response is judged. The\n\n\n```ts\ntype FileProxyUploadConfig = {\n max_total_bytes?: number\n max_file_bytes?: number\n max_delivery_attempts?: number\n}\n```\n\n### `FileProxyResponseConfig`\n\nHow to extract the file from the step results. REQUIRED when `direction` is `download`;\nrejected when `direction` is `upload` (an upload has no file to extract).\n\n\n```ts\ntype FileProxyResponseConfig = {\n body: string\n encoding: "base64" | "binary"\n filename?: string\n content_type?: string\n}\n```\n\n### `MappingSimulationRequest`\n\n```ts\ntype MappingSimulationRequest = {\n mapping_configuration: {\n version?: "1.0"\n mapping: {\n objects: { ... }\n }\n } | {\n version: "2.0"\n mapping: {\n events: { ... }\n }\n }\n object_type: string\n format: "json" | "xml"\n payload: string | Record<string, unknown>\n}\n```\n\n### `MappingSimulationV2Request`\n\nRequest for v2 mapping simulation. Uses the same configuration format stored in integration use case resources,\nmaking it easier to test configurations before saving them.\n\n\n```ts\ntype MappingSimulationV2Request = {\n event_configuration: {\n direct?: boolean\n entities?: Array<{\n entity_schema: { ... }\n unique_ids: { ... }\n jsonataExpression?: { ... }\n enabled?: { ... }\n mode?: { ... }\n scope?: { ... }\n fields?: { ... }\n }>\n meter_readings?: Array<{\n jsonataExpression?: { ... }\n reading_matching?: { ... }\n mode?: { ... }\n scope?: { ... }\n meter: { ... }\n meter_counter?: { ... }\n fields: { ... }\n }>\n }\n format: "json" | "xml"\n payload: string | Record<string, unknown>\n}\n```\n\n### `MappingSimulationResponse`\n\n```ts\ntype MappingSimulationResponse = {\n entity_updates: Array<{\n entity_slug: string\n unique_identifiers: Record<string, unknown>\n attributes: Record<string, unknown>\n pricing?: {\n config: { ... }\n data: { ... }\n }\n mode: "upsert" | "delete" | "purge"\n }>\n meter_readings_updates?: Array<{\n meter: {\n $entity_unique_ids: { ... }\n }\n meter_counter?: {\n $entity_unique_ids?: { ... }\n }\n attributes: Record<string, unknown>\n mode: "upsert" | "delete"\n }>\n prune_scope_updates?: Array<{\n entity_slug: string\n scope: {\n scope_mode: { ... }\n schema?: { ... }\n unique_ids?: { ... }\n query?: { ... }\n }\n keep_unique_ids: Record<string, unknown>[]\n deletion_mode: "delete" | "purge"\n }>\n meter_readings_prune_scope_updates?: Array<{\n meter: {\n $entity_unique_ids: { ... }\n }\n meter_counter?: {\n $entity_unique_ids?: { ... }\n }\n keep_external_ids: string[]\n source?: string\n }>\n warnings?: Array<{\n entity_schema: string\n field: string\n message: string\n }>\n}\n```\n\n### `MappingSimulationWarning`\n\n```ts\ntype MappingSimulationWarning = {\n entity_schema: string\n field: string\n message: string\n}\n```\n\n### `DirectPayload`\n\nThe payload of an ERP event routed to a `direct: true` use case: a versioned envelope of\npre-mapped operations that skip the mapping engine. Sent as the `payload` of an\n`ErpEventV3` - either as a JSON object or as a JSON string (`format` must be `json`;\nXML is rejected for direct use cases).\n\nThe sc\n\n```ts\ntype DirectPayload = {\n version: string\n operations: Array<{\n type?: "entity"\n entity_slug: string\n unique_ids: Record<string, string | number>\n unique_id_types?: Record<string, "email" | "phone">\n mode?: "upsert" | "delete" | "purge"\n attributes?: Record<string, {\n $relation: { ... }\n } | {\n $relation_ref: { ... }\n } | unknown>\n } | {\n type: "meter_reading"\n meter: {\n unique_ids: { ... }\n }\n counter?: {\n unique_ids: { ... }\n }\n mode?: "upsert" | "delete"\n reading_matching?: "external_id" | "strict-date"\n attributes: {\n external_id: { ... }\n timestamp: { ... }\n source: { ... }\n value: { ... }\n }\n }>\n}\n```\n\n### `DirectEntityOperation`\n\nA single pre-mapped entity operation: upserts, soft-deletes, or purges one entity,\nidentified by its unique ids. Produces the same internal update as a mapped-mode entity\nconfiguration, so create-vs-update resolution, relation resolution, ordering, and\nmonitoring behave identically.\n\n\n```ts\ntype DirectEntityOperation = {\n type?: "entity"\n entity_slug: string\n unique_ids: Record<string, string | number>\n unique_id_types?: Record<string, "email" | "phone">\n mode?: "upsert" | "delete" | "purge"\n attributes?: Record<string, {\n $relation: Array<{\n entity_id?: { ... }\n schema?: { ... }\n unique_ids?: { ... }\n unique_id_types?: { ... }\n tags?: { ... }\n }> | {\n _set?: { ... }\n _append?: { ... }\n _append_all?: { ... }\n }\n } | {\n $relation_ref: Array<{\n schema: { ... }\n unique_ids: { ... }\n unique_id_types?: { ... }\n path: { ... }\n value: { ... }\n }> | {\n _set?: { ... }\n _append?: { ... }\n _append_all?: { ... }\n }\n } | unknown>\n}\n```\n\n### `DirectMeterReadingOperation`\n\nA single pre-mapped meter reading operation: upserts or deletes one reading on a meter\n(and optionally a specific counter), identified by their unique ids. Produces the same\ninternal update as a mapped-mode meter reading configuration.\n\n\n```ts\ntype DirectMeterReadingOperation = {\n type: "meter_reading"\n meter: {\n unique_ids: Record<string, string | number>\n }\n counter?: {\n unique_ids: Record<string, string | number>\n }\n mode?: "upsert" | "delete"\n reading_matching?: "external_id" | "strict-date"\n attributes: {\n external_id: string | number\n timestamp: string\n source: "ECP" | "ERP" | "360" | "journey-submission"\n value: number | string\n }\n}\n```\n\n### `DirectRelationValue`\n\nAn entity attribute value that establishes relations to other entities. Written on any\nattribute inside a direct entity operation\'s `attributes`.\n\nTwo forms are accepted: a bare array of items (shorthand for `_set`, i.e. replace), or\nan object with EXACTLY ONE of the operations `_set` (replace), `_a\n\n```ts\ntype DirectRelationValue = {\n $relation: Array<{\n entity_id?: string\n schema?: string\n unique_ids?: Record<string, string | number>\n unique_id_types?: Record<string, "email" | "phone">\n tags?: string[]\n }> | {\n _set?: Array<{\n entity_id?: { ... }\n schema?: { ... }\n unique_ids?: { ... }\n unique_id_types?: { ... }\n tags?: { ... }\n }>\n _append?: Array<{\n entity_id?: { ... }\n schema?: { ... }\n unique_ids?: { ... }\n unique_id_types?: { ... }\n tags?: { ... }\n }>\n _append_all?: Array<{\n entity_id?: { ... }\n schema?: { ... }\n unique_ids?: { ... }\n unique_id_types?: { ... }\n tags?: { ... }\n }>\n }\n}\n```\n\n### `DirectRelationItem`\n\nOne relation target: either an already-resolved reference (`entity_id`), or a lookup by\nunique ids (`schema` + `unique_ids`, resolved by the pipeline like any other unique-id\nlookup, including stub creation and retry when the target does not exist yet). The two\nforms are mutually exclusive. Use `_id\n\n```ts\ntype DirectRelationItem = {\n entity_id?: string\n schema?: string\n unique_ids?: Record<string, string | number>\n unique_id_types?: Record<string, "email" | "phone">\n tags?: string[]\n}\n```\n\n### `DirectRelationRefValue`\n\nAn entity attribute value that references an ITEM INSIDE a repeatable attribute of\nanother entity - for example one address out of a contact\'s `address` list. The target\nentity is looked up by unique ids, then the item at `path` matching `value` is\nreferenced (creating it when missing).\n\nThe same op\n\n```ts\ntype DirectRelationRefValue = {\n $relation_ref: Array<{\n schema: string\n unique_ids: Record<string, string | number>\n unique_id_types?: Record<string, "email" | "phone">\n path: string\n value: unknown\n }> | {\n _set?: Array<{\n schema: { ... }\n unique_ids: { ... }\n unique_id_types?: { ... }\n path: { ... }\n value: { ... }\n }>\n _append?: Array<{\n schema: { ... }\n unique_ids: { ... }\n unique_id_types?: { ... }\n path: { ... }\n value: { ... }\n }>\n _append_all?: Array<{\n schema: { ... }\n unique_ids: { ... }\n unique_id_types?: { ... }\n path: { ... }\n value: { ... }\n }>\n }\n}\n```\n\n### `DirectRelationRefItem`\n\nOne relation-ref target - the entity to look up, and the repeatable item to reference on it.\n\n```ts\ntype DirectRelationRefItem = {\n schema: string\n unique_ids: Record<string, string | number>\n unique_id_types?: Record<string, "email" | "phone">\n path: string\n value: unknown\n}\n```\n\n### `DirectSimulationRequest`\n\nRequest for a direct-mode dry run: the `direct: true` use case configuration to test\nagainst, and the payload to validate and translate.\n\n\n```ts\ntype DirectSimulationRequest = {\n event_configuration: {\n direct?: boolean\n entities?: Array<{\n entity_schema: { ... }\n unique_ids: { ... }\n jsonataExpression?: { ... }\n enabled?: { ... }\n mode?: { ... }\n scope?: { ... }\n fields?: { ... }\n }>\n meter_readings?: Array<{\n jsonataExpression?: { ... }\n reading_matching?: { ... }\n mode?: { ... }\n scope?: { ... }\n meter: { ... }\n meter_counter?: { ... }\n fields: { ... }\n }>\n }\n payload: string | {\n version: string\n operations: Array<{\n type?: { ... }\n entity_slug: { ... }\n unique_ids: { ... }\n unique_id_types?: { ... }\n mode?: { ... }\n attributes?: { ... }\n } | {\n type: { ... }\n meter: { ... }\n counter?: { ... }\n mode?: { ... }\n reading_matching?: { ... }\n attributes: { ... }\n }>\n }\n}\n```\n\n### `DirectSimulationResponse`\n\nResult of a direct-mode dry run. `valid: false` responses list EVERY violation found\nacross all operations in `errors`. `valid: true` responses preview the internal updates\nthe pipeline would apply, plus non-blocking `warnings`.\n\n\n```ts\ntype DirectSimulationResponse = {\n valid: boolean\n errors: Array<{\n code: "DIRECT_PAYLOAD_INVALID" | "DIRECT_VERSION_UNSUPPORTED" | "DIRECT_ENTITY_NOT_ALLOWED"\n message: string\n operation_index?: number\n }>\n warnings?: Array<{\n entity_schema: string\n field: string\n message: string\n }>\n entity_updates?: Array<{\n entity_slug: string\n unique_identifiers: Record<string, unknown>\n attributes: Record<string, unknown>\n pricing?: {\n config: { ... }\n data: { ... }\n }\n mode: "upsert" | "delete" | "purge"\n unique_identifiers_metadata?: Record<string, {\n fieldType?: { ... }\n index?: { ... }\n }>\n }>\n meter_reading_updates?: Array<{\n meter: {\n $entity_unique_ids: { ... }\n }\n meter_counter?: {\n $entity_unique_ids?: { ... }\n }\n attributes: Record<string, unknown>\n mode: "upsert" | "delete"\n _config?: {\n reading_matching?: { ... }\n }\n }>\n}\n```\n\n### `DirectSimulationError`\n\nOne validation error found during a direct-mode dry run.\n\n```ts\ntype DirectSimulationError = {\n code: "DIRECT_PAYLOAD_INVALID" | "DIRECT_VERSION_UNSUPPORTED" | "DIRECT_ENTITY_NOT_ALLOWED"\n message: string\n operation_index?: number\n}\n```\n\n### `EntityUpdate`\n\n```ts\ntype EntityUpdate = {\n entity_slug: string\n unique_identifiers: Record<string, unknown>\n attributes: Record<string, unknown>\n pricing?: {\n config: Record<string, unknown>\n data: Record<string, unknown>[]\n }\n mode: "upsert" | "delete" | "purge"\n}\n```\n\n### `MeterReadingUpdate`\n\n```ts\ntype MeterReadingUpdate = {\n meter: {\n $entity_unique_ids: Record<string, unknown>\n }\n meter_counter?: {\n $entity_unique_ids?: Record<string, unknown>\n }\n attributes: Record<string, unknown>\n mode: "upsert" | "delete"\n}\n```\n\n### `EntityPruneScopeUpdate`\n\nA resolved entity prune scope. At runtime, entities of `entity_slug` found within `scope` whose unique identifiers are not listed in `keep_unique_ids` are removed using `deletion_mode`.\n\n```ts\ntype EntityPruneScopeUpdate = {\n entity_slug: string\n scope: {\n scope_mode: "relations" | "query"\n schema?: string\n unique_ids?: Record<string, unknown>\n query?: Record<string, unknown>\n }\n keep_unique_ids: Record<string, unknown>[]\n deletion_mode: "delete" | "purge"\n}\n```\n\n### `MeterReadingPruneScopeUpdate`\n\nA resolved meter reading prune scope. At runtime, readings of the given meter (+ counter) whose external ids are not listed in `keep_external_ids` are deleted.\n\n```ts\ntype MeterReadingPruneScopeUpdate = {\n meter: {\n $entity_unique_ids: Record<string, unknown>\n }\n meter_counter?: {\n $entity_unique_ids?: Record<string, unknown>\n }\n keep_external_ids: string[]\n source?: string\n}\n```\n\n### `IntegrationConfigurationV1`\n\n```ts\ntype IntegrationConfigurationV1 = {\n version?: "1.0"\n mapping: {\n objects: Record<string, {\n unique_ids: { ... }\n fields: { ... }\n }>\n }\n}\n```\n\n### `IntegrationObjectV1`\n\n```ts\ntype IntegrationObjectV1 = {\n unique_ids: Record<string, string[] | Record<string, string>>\n fields: Array<{\n entity: string\n attribute: string\n field?: string\n jsonataExpression?: string\n }>\n}\n```\n\n### `IntegrationFieldV1`\n\n```ts\ntype IntegrationFieldV1 = {\n entity: string\n attribute: string\n field?: string\n jsonataExpression?: string\n}\n```\n\n### `IntegrationConfigurationV2`\n\n```ts\ntype IntegrationConfigurationV2 = {\n version: "2.0"\n mapping: {\n events: Record<string, {\n direct?: { ... }\n entities?: { ... }\n meter_readings?: { ... }\n }>\n }\n}\n```\n\n### `OutboundMapping`\n\nA mapping that delivers an event to an external system by one of three mechanisms \u2014 pushed to a webhook (with a JSONata payload transformation), made available on the pull-based poll queue (raw event payload, no transformation), or handed to a file_proxy use case that uploads files to an external do\n\n```ts\ntype OutboundMapping = {\n id?: string // uuid\n name: string\n jsonata_expression?: string\n enabled: boolean\n delivery: {\n type: "webhook"\n webhook_id: string\n webhook_name?: string\n webhook_url?: string\n } | {\n type: "poll"\n retention_days?: number\n poison_policy?: "dead_letter" | "block"\n max_delivery_attempts?: number\n } | {\n type: "file_proxy"\n use_case_slug: string\n }\n created_at?: string // date-time\n updated_at?: string // date-time\n}\n```\n\n### `DeliveryConfig`\n\nConfiguration for how the event should be delivered. webhook = push delivery via svc-webhooks (JSONata-transformed payload); poll = pull-based queue delivery where the consumer fetches items via the poll API (raw event payload); file_proxy = one push per event attachment to an external document syst\n\n```ts\ntype DeliveryConfig = {\n type: "webhook"\n webhook_id: string\n webhook_name?: string\n webhook_url?: string\n} | {\n type: "poll"\n retention_days?: number\n poison_policy?: "dead_letter" | "block"\n max_delivery_attempts?: number\n} | {\n type: "file_proxy"\n use_case_slug: string\n}\n```\n\n### `WebhookDeliveryConfig`\n\nPush delivery of the transformed event to a webhook via svc-webhooks\n\n```ts\ntype WebhookDeliveryConfig = {\n type: "webhook"\n webhook_id: string\n webhook_name?: string\n webhook_url?: string\n}\n```\n\n### `PollDeliveryConfig`\n\nPull-based queue delivery. Items carry the raw standardized event-catalog payload; no JSONata mapping is applied in poll mode. Consumers fetch and acknowledge items via the poll API.\n\n```ts\ntype PollDeliveryConfig = {\n type: "poll"\n retention_days?: number\n poison_policy?: "dead_letter" | "block"\n max_delivery_attempts?: number\n}\n```\n\n### `FileProxyDeliveryConfig`\n\nPush delivery to an external document system through a `file_proxy` use case.\n\nA pure pointer, deliberately. The outbound use case decides WHEN to deliver \u2014 its event\nname plus `event_filter` \u2014 and the referenced `file_proxy` use case decides WHAT and HOW:\nwhich items to fan out over (`fan_out`), wh\n\n```ts\ntype FileProxyDeliveryConfig = {\n type: "file_proxy"\n use_case_slug: string\n}\n```\n\n### `EntitySyncStatusResponse`\n\n```ts\ntype EntitySyncStatusResponse = {\n entity_id: string // uuid\n sync_states: Array<{\n entity_id: string // uuid\n integration_id: string // uuid\n entity_slug: string\n use_case_id?: string\n last_synced_at?: string // date-time\n last_changed_at?: string // date-time\n last_operation?: "create" | "patch" | "delete" | "no-op"\n last_event_id?: string\n readings_last_synced_at?: string // date-time\n readings_last_operation?: "upsert" | "delete"\n readings_last_event_id?: string\n }>\n}\n```\n\n### `EntitySyncState`\n\nInbound sync state of one entity for one integration. Carries two\nindependent groups: the entity-level fields (`last_synced_at`, \u2026) and,\non meter/meter_counter entities, the readings-level fields\n(`readings_last_synced_at`, \u2026). Either group can be present alone \u2014 a\nmeter whose readings sync via the \n\n```ts\ntype EntitySyncState = {\n entity_id: string // uuid\n integration_id: string // uuid\n entity_slug: string\n use_case_id?: string\n last_synced_at?: string // date-time\n last_changed_at?: string // date-time\n last_operation?: "create" | "patch" | "delete" | "no-op"\n last_event_id?: string\n readings_last_synced_at?: string // date-time\n readings_last_operation?: "upsert" | "delete"\n readings_last_event_id?: string\n}\n```\n\n### `OutboundStatusResponse`\n\n```ts\ntype OutboundStatusResponse = {\n useCases: Array<{\n useCaseId: string // uuid\n name: string\n useCaseEnabled: boolean\n eventCatalogEvent?: string\n eventEnabled?: boolean\n webhooks?: Array<{\n webhookId: { ... }\n webhookName?: { ... }\n enabled?: { ... }\n }>\n status: "ok" | "conflict" | "disabled"\n conflicts?: Array<{\n type: { ... }\n webhookId?: { ... }\n message: { ... }\n }>\n poll?: {\n queue_depth: { ... }\n oldest_unconsumed_age_seconds: { ... }\n last_poll_at: { ... }\n last_ack_at: { ... }\n blocked: { ... }\n dlq_count: { ... }\n }\n file_proxy?: Array<{\n mapping_id: { ... }\n use_case_slug: { ... }\n resolved: { ... }\n target_use_case_id?: { ... }\n target_enabled?: { ... }\n target_updated_at?: { ... }\n unresolved_reason?: { ... }\n }>\n }>\n}\n```\n\n### `OutboundUseCaseStatus`\n\n```ts\ntype OutboundUseCaseStatus = {\n useCaseId: string // uuid\n name: string\n useCaseEnabled: boolean\n eventCatalogEvent?: string\n eventEnabled?: boolean\n webhooks?: Array<{\n webhookId: string\n webhookName?: string\n enabled?: boolean\n }>\n status: "ok" | "conflict" | "disabled"\n conflicts?: Array<{\n type: "event_disabled" | "all_webhooks_disabled" | "event_enabled_while_disabled" | "webhook_enabled_while_disabled" | "stream_blocked" | "dlq_items_present"\n webhookId?: string\n message: string\n }>\n poll?: {\n queue_depth: number\n oldest_unconsumed_age_seconds: number\n last_poll_at: string // date-time\n last_ack_at: string // date-time\n blocked: boolean\n dlq_count: number\n }\n file_proxy?: Array<{\n mapping_id: string\n use_case_slug: string\n resolved: boolean\n target_use_case_id?: string // uuid\n target_enabled?: boolean\n target_updated_at?: string // date-time\n unresolved_reason?: "not_found" | "wrong_type" | "wrong_direction" | "disabled"\n }>\n}\n```\n\n### `OutboundFileProxyTargetStatus`\n\nResolution state of one file_proxy mapping\'s referenced upload use case.\n\nBecause the transport lives on a separate use case, edits to the endpoint or credentials\ndo not appear in THIS use case\'s history. `target_updated_at` is the hook that lets an\noperator notice a target changed underneath a deli\n\n```ts\ntype OutboundFileProxyTargetStatus = {\n mapping_id: string\n use_case_slug: string\n resolved: boolean\n target_use_case_id?: string // uuid\n target_enabled?: boolean\n target_updated_at?: string // date-time\n unresolved_reason?: "not_found" | "wrong_type" | "wrong_direction" | "disabled"\n}\n```\n\n### `OutboundPollStatus`\n\nQueue/consumer health for a poll-mode use case. Present only on use\ncases with a poll delivery mapping \u2014 webhook-only use cases are\nunaffected. Depth/age/DLQ numbers are first-page approximations.\n\n\n```ts\ntype OutboundPollStatus = {\n queue_depth: number\n oldest_unconsumed_age_seconds: number\n last_poll_at: string // date-time\n last_ack_at: string // date-time\n blocked: boolean\n dlq_count: number\n}\n```\n\n### `WebhookStatus`\n\n```ts\ntype WebhookStatus = {\n webhookId: string\n webhookName?: string\n enabled?: boolean\n}\n```\n\n### `OutboundConflict`\n\n```ts\ntype OutboundConflict = {\n type: "event_disabled" | "all_webhooks_disabled" | "event_enabled_while_disabled" | "webhook_enabled_while_disabled" | "stream_blocked" | "dlq_items_present"\n webhookId?: string\n message: string\n}\n```\n\n### `PollOutboundMessagesRequest`\n\n```ts\ntype PollOutboundMessagesRequest = {\n limit?: number\n}\n```\n\n### `OutboundMessage`\n\n```ts\ntype OutboundMessage = {\n id: string\n lease_token: string\n use_case_id: string\n event_name: string\n event_id: string\n group: string\n payload: Record<string, unknown>\n enqueued_at: string // date-time\n}\n```\n\n### `PollOutboundMessagesResponse`\n\n```ts\ntype PollOutboundMessagesResponse = {\n messages: Array<{\n id: string\n lease_token: string\n use_case_id: string\n event_name: string\n event_id: string\n group: string\n payload: Record<string, unknown>\n enqueued_at: string // date-time\n }>\n visibility_timeout_seconds: number\n has_more: boolean\n}\n```\n\n### `AckOutboundMessagesRequest`\n\n```ts\ntype AckOutboundMessagesRequest = {\n acks: Array<{\n id: string\n lease_token: string\n }>\n}\n```\n\n### `AckResult`\n\n```ts\ntype AckResult = {\n id: string\n status: "accepted" | "rejected"\n reason?: "stale_lease" | "out_of_order" | "not_found"\n}\n```\n\n### `AckOutboundMessagesResponse`\n\n```ts\ntype AckOutboundMessagesResponse = {\n results: Array<{\n id: string\n status: "accepted" | "rejected"\n reason?: "stale_lease" | "out_of_order" | "not_found"\n }>\n}\n```\n\n### `OutboundDlqMessage`\n\n```ts\ntype OutboundDlqMessage = {\n id: string\n use_case_id: string\n event_name: string\n event_id: string\n enqueued_at?: string // date-time\n dead_lettered_at: string // date-time\n delivery_attempts: number\n reason?: string\n expires_at?: string // date-time\n}\n```\n\n### `OutboundDlqListResponse`\n\n```ts\ntype OutboundDlqListResponse = {\n items: Array<{\n id: string\n use_case_id: string\n event_name: string\n event_id: string\n enqueued_at?: string // date-time\n dead_lettered_at: string // date-time\n delivery_attempts: number\n reason?: string\n expires_at?: string // date-time\n }>\n next_token?: string\n}\n```\n\n### `RedriveOutboundDlqRequest`\n\n```ts\ntype RedriveOutboundDlqRequest = {\n ids: string[]\n}\n```\n\n### `RedriveOutboundDlqResult`\n\n```ts\ntype RedriveOutboundDlqResult = {\n id: string\n status: "redriven" | "not_found"\n}\n```\n\n### `RedriveOutboundDlqResponse`\n\n```ts\ntype RedriveOutboundDlqResponse = {\n results: Array<{\n id: string\n status: "redriven" | "not_found"\n }>\n}\n```\n\n### `UnblockOutboundStreamRequest`\n\n```ts\ntype UnblockOutboundStreamRequest = {\n reason?: string\n}\n```\n\n### `UnblockOutboundStreamResponse`\n\n```ts\ntype UnblockOutboundStreamResponse = {\n unblocked: boolean\n dead_lettered_id?: string\n}\n```\n\n### `RelationConfig`\n\n```ts\ntype RelationConfig = {\n operation: "_set" | "_append" | "_append_all"\n items?: Array<{\n entity_schema: string\n _tags?: string[]\n unique_ids: Array<{\n attribute: { ... }\n _type?: { ... }\n field?: { ... }\n jsonataExpression?: { ... }\n constant?: { ... }\n }>\n }>\n jsonataExpression?: string\n}\n```\n\n### `RelationItemConfig`\n\n```ts\ntype RelationItemConfig = {\n entity_schema: string\n _tags?: string[]\n unique_ids: Array<{\n attribute: string\n _type?: "email" | "phone"\n field?: string\n jsonataExpression?: string\n constant?: unknown\n }>\n}\n```\n\n### `RelationUniqueIdField`\n\n```ts\ntype RelationUniqueIdField = {\n attribute: string\n _type?: "email" | "phone"\n field?: string\n jsonataExpression?: string\n constant?: unknown\n}\n```\n\n### `RelationRefsConfig`\n\nConfiguration for relation references ($relation_ref).\nRelation references link to a specific item within a repeatable attribute on a related entity.\nCommon use case: referencing a specific address within a contact\'s address list.\n\n\n```ts\ntype RelationRefsConfig = {\n operation: "_set" | "_append" | "_append_all"\n items?: Array<{\n entity_schema: string\n unique_ids: Array<{\n attribute: { ... }\n _type?: { ... }\n field?: { ... }\n jsonataExpression?: { ... }\n constant?: { ... }\n }>\n path: string\n value: {\n attribute: { ... }\n operation?: { ... }\n field?: { ... }\n jsonataExpression?: { ... }\n constant?: { ... }\n }\n }>\n jsonataExpression?: string\n}\n```\n\n### `RelationRefItemConfig`\n\nConfiguration for a single relation reference item\n\n```ts\ntype RelationRefItemConfig = {\n entity_schema: string\n unique_ids: Array<{\n attribute: string\n _type?: "email" | "phone"\n field?: string\n jsonataExpression?: string\n constant?: unknown\n }>\n path: string\n value: {\n attribute: string\n operation?: "_set" | "_append" | "_append_all"\n field?: string\n jsonataExpression?: string\n constant?: unknown\n }\n}\n```\n\n### `RelationRefValueConfig`\n\nConfiguration for the value to set on the related entity\'s attribute\n\n```ts\ntype RelationRefValueConfig = {\n attribute: string\n operation?: "_set" | "_append" | "_append_all"\n field?: string\n jsonataExpression?: string\n constant?: unknown\n}\n```\n\n### `RepeatableFieldType`\n\nType hint for repeatable fields that require special search handling.\nThese fields are stored as arrays of objects (e.g., email: [{ email: "value" }]).\n\n\n```ts\ntype RepeatableFieldType = "email" | "phone"\n```\n\n### `ReplayEventsRequest`\n\n```ts\ntype ReplayEventsRequest = {\n event_ids: string[]\n}\n```\n\n### `QueryEventsRequest`\n\n```ts\ntype QueryEventsRequest = {\n event_id?: string\n event_type?: "CREATE" | "UPDATE" | "DELETE"\n correlation_id?: string\n object_type?: string\n event_name?: string\n use_case_id?: string\n limit?: number\n cursor?: {\n event_time?: string // date-time\n event_id?: string\n }\n}\n```\n\n### `QueryInboundMonitoringEventsRequest`\n\n```ts\ntype QueryInboundMonitoringEventsRequest = {\n use_case_id?: string // uuid\n event_type?: "CREATE" | "UPDATE" | "DELETE" | "TRIGGER"\n sync_type?: "entity" | "meter_reading" | "webhook" | "api_deprecation"\n status?: "success" | "error" | "skipped" | "warning"\n error_category?: "validation" | "configuration" | "downstream_api" | "timeout" | "system"\n correlation_id?: string\n object_type?: string\n event_name?: string\n event_id?: string\n from_date?: string // date-time\n to_date?: string // date-time\n limit?: number\n cursor?: {\n completed_at?: string // date-time\n event_id?: string\n }\n}\n```\n\n### `QueryAccessLogsRequest`\n\n```ts\ntype QueryAccessLogsRequest = {\n token_id?: string\n service?: string\n method?: "GET" | "POST" | "PUT" | "PATCH" | "DELETE" | "OPTIONS" | "HEAD"\n path?: string\n status?: number\n from_date?: string // date-time\n to_date?: string // date-time\n limit?: number\n cursor?: {\n timestamp?: string // date-time\n request_id?: string\n }\n}\n```\n\n### `AccessLogEntry`\n\n```ts\ntype AccessLogEntry = {\n timestamp?: string // date-time\n environment?: string\n service?: string\n request_id?: string\n method?: string\n path?: string\n status?: number\n response_latency_ms?: number\n response_length?: number\n token_id?: string\n org_id?: string\n origin?: string\n source_ip?: string\n}\n```\n\n### `GetMonitoringStatsRequest`\n\n```ts\ntype GetMonitoringStatsRequest = {\n from_date?: string // date-time\n to_date?: string // date-time\n inbound_group_by?: "use_case_id" | "sync_type" | "status" | "error_category" | "object_type" | "event_name" | "date"[]\n outbound_group_by?: "event_name" | "status" | "webhook_config_id" | "date"[]\n}\n```\n\n### `GetMonitoringTimeSeriesRequest`\n\n```ts\ntype GetMonitoringTimeSeriesRequest = {\n from_date: string // date-time\n to_date?: string // date-time\n interval: "5m" | "10m" | "30m" | "1h" | "3h" | "1d"\n direction?: "inbound" | "outbound" | "both"\n}\n```\n\n### `TimeSeriesBucket`\n\n```ts\ntype TimeSeriesBucket = {\n timestamp: string // date-time\n inbound?: {\n success_count?: number\n error_count?: number\n warning_count?: number\n skipped_count?: number\n total_count?: number\n }\n outbound?: {\n success_count?: number\n error_count?: number\n pending_count?: number\n total_count?: number\n }\n}\n```\n\n### `QueryOutboundMonitoringEventsRequest`\n\n```ts\ntype QueryOutboundMonitoringEventsRequest = {\n event_name?: string\n status?: "succeeded" | "failed" | "pending"\n webhook_config_id?: string\n from_date?: string // date-time\n to_date?: string // date-time\n limit?: number\n cursor?: {\n created_at?: string // date-time\n event_id?: string\n }\n}\n```\n\n### `OutboundMonitoringEvent`\n\n```ts\ntype OutboundMonitoringEvent = {\n org_id: string\n event_id: string\n event_name: string\n status: "succeeded" | "failed" | "pending"\n url?: string\n http_method?: string\n http_response?: Record<string, unknown>\n webhook_config_id?: string\n metadata?: Record<string, unknown>\n execution_context?: Record<string, unknown>\n payload?: Record<string, unknown>\n created_at: string // date-time\n updated_at?: string // date-time\n}\n```\n\n### `MonitoringStats`\n\n```ts\ntype MonitoringStats = {\n inbound: {\n total_events: number\n total_correlations?: number\n success_count: number\n error_count: number\n skipped_count: number\n warning_count?: number\n success_rate?: number\n last_error_at?: string // date-time\n breakdown?: Record<string, unknown>[]\n }\n outbound: {\n total_events: number\n success_count: number\n error_count: number\n pending_count?: number\n success_rate?: number\n last_error_at?: string // date-time\n breakdown?: Record<string, unknown>[]\n }\n}\n```\n\n### `InboundMonitoringEvent`\n\n```ts\ntype InboundMonitoringEvent = {\n org_id: string\n event_id: string\n correlation_id?: string\n integration_id?: string\n use_case_id?: string\n event_type?: "CREATE" | "UPDATE" | "DELETE" | "TRIGGER"\n object_type: string\n sync_type: "entity" | "meter_reading" | "webhook" | "api_deprecation"\n status: "success" | "error" | "skipped" | "warning"\n error_code?: string\n error_message?: string\n error_category?: "validation" | "configuration" | "downstream_api" | "timeout" | "system"\n processing_duration_ms?: number\n received_at: string // date-time\n completed_at: string // date-time\n}\n```\n\n### `QueryMonitoringEventsV2Request`\n\n```ts\ntype QueryMonitoringEventsV2Request = {\n use_case_id?: string\n use_case_type?: "inbound" | "outbound" | "file_proxy" | "managed_call" | "secure_proxy"\n level?: "success" | "error" | "skipped" | "warning"\n code?: string\n event_id?: string\n correlation_id?: string\n from_date?: string // date-time\n to_date?: string // date-time\n limit?: number\n cursor?: {\n created_at?: string // date-time\n id?: string // uuid\n }\n}\n```\n\n### `ExternalMonitoringSpan`\n\nA single monitoring span produced by an external system. `correlation_id`, `level`, `use_case_slug`, `occurred_at` and `message` are all required and `level` must be one of success|error|warning|info \u2014 but these are validated PER SPAN at ingest and reported in the per-item `results[]`, so one malfor\n\n```ts\ntype ExternalMonitoringSpan = {\n correlation_id?: string\n level?: string\n use_case_slug?: string\n occurred_at?: string // date-time\n message?: string\n detail?: Record<string, unknown>\n}\n```\n\n### `IngestExternalMonitoringEventsRequest`\n\n```ts\ntype IngestExternalMonitoringEventsRequest = {\n events: Array<{\n correlation_id?: string\n level?: string\n use_case_slug?: string\n occurred_at?: string // date-time\n message?: string\n detail?: Record<string, unknown>\n }>\n}\n```\n\n### `IngestExternalMonitoringEventsResponse`\n\n```ts\ntype IngestExternalMonitoringEventsResponse = {\n accepted: number\n rejected: number\n results?: Array<{\n index: number\n status: "accepted" | "rejected"\n reason?: string\n }>\n}\n```\n\n### `MonitoringTraceResponse`\n\n```ts\ntype MonitoringTraceResponse = {\n correlation_id: string\n status: "success" | "error" | "warning" | "info"\n started_at?: string // date-time\n ended_at?: string // date-time\n span_count: number\n truncated: boolean\n spans: Array<{\n id: string // uuid\n org_id: string\n integration_id: string\n event_id: string\n correlation_id?: string\n use_case_id?: string\n use_case_type: "inbound" | "outbound" | "file_proxy" | "managed_call" | "secure_proxy" | ""\n level: "success" | "error" | "skipped" | "warning"\n code?: string\n message?: string\n detail?: Record<string, unknown>\n created_at: string // date-time\n }>\n inbound_event?: Record<string, unknown>\n}\n```\n\n### `MonitoringEventV2`\n\n```ts\ntype MonitoringEventV2 = {\n id: string // uuid\n org_id: string\n integration_id: string\n event_id: string\n correlation_id?: string\n use_case_id?: string\n use_case_type: "inbound" | "outbound" | "file_proxy" | "managed_call" | "secure_proxy" | ""\n level: "success" | "error" | "skipped" | "warning"\n code?: string\n message?: string\n detail?: Record<string, unknown>\n created_at: string // date-time\n}\n```\n\n### `GetMonitoringStatsV2Request`\n\n```ts\ntype GetMonitoringStatsV2Request = {\n from_date?: string // date-time\n to_date?: string // date-time\n use_case_type?: "inbound" | "outbound" | "file_proxy" | "managed_call" | "secure_proxy"\n use_case_types?: "inbound" | "outbound" | "file_proxy" | "managed_call" | "secure_proxy"[]\n group_by?: "use_case_id" | "use_case_type" | "level" | "code" | "date"\n source?: "monitoring" | "incoming"\n}\n```\n\n### `MonitoringStatsV2`\n\n```ts\ntype MonitoringStatsV2 = {\n total_events: number\n success_count: number\n error_count: number\n warning_count: number\n skipped_count: number\n ack_timeout_count?: number\n success_rate?: number\n last_error_at?: string // date-time\n breakdown?: Record<string, unknown>[]\n}\n```\n\n### `GetMonitoringTimeSeriesV2Request`\n\n```ts\ntype GetMonitoringTimeSeriesV2Request = {\n from_date: string // date-time\n to_date?: string // date-time\n interval: "5m" | "10m" | "30m" | "1h" | "3h" | "1d"\n use_case_type?: "inbound" | "outbound" | "file_proxy" | "managed_call" | "secure_proxy"\n group_by?: "use_case_type" | "use_case"\n}\n```\n\n### `TimeSeriesBreakdownItemV2`\n\n```ts\ntype TimeSeriesBreakdownItemV2 = {\n use_case_type?: "inbound" | "outbound" | "file_proxy" | "managed_call" | "secure_proxy"\n use_case_id?: string\n success_count: number\n error_count: number\n warning_count: number\n skipped_count: number\n total_count: number\n}\n```\n\n### `TimeSeriesBucketV2`\n\n```ts\ntype TimeSeriesBucketV2 = {\n timestamp: string // date-time\n success_count?: number\n error_count?: number\n warning_count?: number\n skipped_count?: number\n total_count: number\n breakdown?: Array<{\n use_case_type?: "inbound" | "outbound" | "file_proxy" | "managed_call" | "secure_proxy"\n use_case_id?: string\n success_count: number\n error_count: number\n warning_count: number\n skipped_count: number\n total_count: number\n }>\n}\n```\n\n### `DocumentationPageSummary`\n\nDocumentation page metadata without the markdown content\n\n```ts\ntype DocumentationPageSummary = {\n id: string\n integration_id: string // uuid\n scope: "integration" | "use_case"\n use_case_id?: string // uuid\n title: string\n created_at: string // date-time\n created_by?: string\n updated_at: string // date-time\n updated_by?: string\n}\n```\n\n### `DocumentationPage`\n\nA markdown documentation page of an integration\n\n```ts\ntype DocumentationPage = {\n id: string\n integration_id: string // uuid\n scope: "integration" | "use_case"\n use_case_id?: string // uuid\n title: string\n created_at: string // date-time\n created_by?: string\n updated_at: string // date-time\n updated_by?: string\n content: string\n}\n```\n\n### `UpsertDocumentationPageRequest`\n\n```ts\ntype UpsertDocumentationPageRequest = {\n title: string\n content: string\n}\n```\n';
|
|
5
|
+
export {
|
|
6
|
+
integration_toolkit_default as default
|
|
7
|
+
};
|