@epilot/sdk 2.20.33 → 2.20.35

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (153) hide show
  1. package/definitions/event-catalog-runtime.json +1 -1
  2. package/definitions/event-catalog.json +310 -1
  3. package/definitions/integration-toolkit-runtime.json +1 -1
  4. package/definitions/integration-toolkit.json +530 -13
  5. package/definitions/metering.json +19 -8
  6. package/dist/apis/access-token.cjs +6 -6
  7. package/dist/apis/access-token.js +1 -1
  8. package/dist/apis/address-suggestions.cjs +6 -6
  9. package/dist/apis/address-suggestions.js +1 -1
  10. package/dist/apis/address.cjs +6 -6
  11. package/dist/apis/address.js +1 -1
  12. package/dist/apis/ai-agents.cjs +6 -6
  13. package/dist/apis/ai-agents.js +1 -1
  14. package/dist/apis/app.cjs +6 -6
  15. package/dist/apis/app.js +1 -1
  16. package/dist/apis/audit-logs.cjs +6 -6
  17. package/dist/apis/audit-logs.js +1 -1
  18. package/dist/apis/automation.cjs +6 -6
  19. package/dist/apis/automation.js +1 -1
  20. package/dist/apis/billing.cjs +6 -6
  21. package/dist/apis/billing.js +1 -1
  22. package/dist/apis/blueprint-manifest.cjs +6 -6
  23. package/dist/apis/blueprint-manifest.js +1 -1
  24. package/dist/apis/calendar.cjs +6 -6
  25. package/dist/apis/calendar.js +1 -1
  26. package/dist/apis/chat.cjs +6 -6
  27. package/dist/apis/chat.js +1 -1
  28. package/dist/apis/configuration-hub.cjs +6 -6
  29. package/dist/apis/configuration-hub.js +1 -1
  30. package/dist/apis/consent.cjs +6 -6
  31. package/dist/apis/consent.js +1 -1
  32. package/dist/apis/customer-portal.cjs +6 -6
  33. package/dist/apis/customer-portal.js +1 -1
  34. package/dist/apis/dashboard.cjs +6 -6
  35. package/dist/apis/dashboard.js +1 -1
  36. package/dist/apis/data-governance.cjs +6 -6
  37. package/dist/apis/data-governance.js +1 -1
  38. package/dist/apis/deduplication.cjs +6 -6
  39. package/dist/apis/deduplication.js +1 -1
  40. package/dist/apis/design.cjs +6 -6
  41. package/dist/apis/design.js +1 -1
  42. package/dist/apis/document.cjs +6 -6
  43. package/dist/apis/document.js +1 -1
  44. package/dist/apis/email-settings.cjs +6 -6
  45. package/dist/apis/email-settings.js +1 -1
  46. package/dist/apis/email-template.cjs +6 -6
  47. package/dist/apis/email-template.js +1 -1
  48. package/dist/apis/entity-mapping.cjs +6 -6
  49. package/dist/apis/entity-mapping.js +1 -1
  50. package/dist/apis/entity.cjs +6 -6
  51. package/dist/apis/entity.js +1 -1
  52. package/dist/apis/environments.cjs +6 -6
  53. package/dist/apis/environments.js +1 -1
  54. package/dist/apis/event-catalog.cjs +8 -8
  55. package/dist/apis/event-catalog.d.cts +2 -2
  56. package/dist/apis/event-catalog.d.ts +2 -2
  57. package/dist/apis/event-catalog.js +2 -2
  58. package/dist/apis/file.cjs +6 -6
  59. package/dist/apis/file.js +1 -1
  60. package/dist/apis/iban.cjs +6 -6
  61. package/dist/apis/iban.js +1 -1
  62. package/dist/apis/integration-toolkit.cjs +19 -15
  63. package/dist/apis/integration-toolkit.d.cts +2 -2
  64. package/dist/apis/integration-toolkit.d.ts +2 -2
  65. package/dist/apis/integration-toolkit.js +13 -9
  66. package/dist/apis/journey.cjs +6 -6
  67. package/dist/apis/journey.js +1 -1
  68. package/dist/apis/kanban.cjs +6 -6
  69. package/dist/apis/kanban.js +1 -1
  70. package/dist/apis/message.cjs +6 -6
  71. package/dist/apis/message.js +1 -1
  72. package/dist/apis/metering.cjs +6 -6
  73. package/dist/apis/metering.d.cts +2 -2
  74. package/dist/apis/metering.d.ts +2 -2
  75. package/dist/apis/metering.js +1 -1
  76. package/dist/apis/notes.cjs +6 -6
  77. package/dist/apis/notes.js +1 -1
  78. package/dist/apis/notification.cjs +6 -6
  79. package/dist/apis/notification.js +1 -1
  80. package/dist/apis/organization.cjs +6 -6
  81. package/dist/apis/organization.js +1 -1
  82. package/dist/apis/partner-directory.cjs +6 -6
  83. package/dist/apis/partner-directory.js +1 -1
  84. package/dist/apis/permissions.cjs +6 -6
  85. package/dist/apis/permissions.js +1 -1
  86. package/dist/apis/pricing-tier.cjs +6 -6
  87. package/dist/apis/pricing-tier.js +1 -1
  88. package/dist/apis/pricing.cjs +6 -6
  89. package/dist/apis/pricing.js +1 -1
  90. package/dist/apis/purpose.cjs +6 -6
  91. package/dist/apis/purpose.js +1 -1
  92. package/dist/apis/query.cjs +6 -6
  93. package/dist/apis/query.js +1 -1
  94. package/dist/apis/sandbox.cjs +6 -6
  95. package/dist/apis/sandbox.js +1 -1
  96. package/dist/apis/sharing.cjs +6 -6
  97. package/dist/apis/sharing.js +1 -1
  98. package/dist/apis/snapshot.cjs +6 -6
  99. package/dist/apis/snapshot.js +1 -1
  100. package/dist/apis/submission.cjs +6 -6
  101. package/dist/apis/submission.js +1 -1
  102. package/dist/apis/target.cjs +6 -6
  103. package/dist/apis/target.js +1 -1
  104. package/dist/apis/targeting.cjs +6 -6
  105. package/dist/apis/targeting.js +1 -1
  106. package/dist/apis/template-variables.cjs +6 -6
  107. package/dist/apis/template-variables.js +1 -1
  108. package/dist/apis/user.cjs +6 -6
  109. package/dist/apis/user.js +1 -1
  110. package/dist/apis/validation-rules.cjs +6 -6
  111. package/dist/apis/validation-rules.js +1 -1
  112. package/dist/apis/webhooks.cjs +6 -6
  113. package/dist/apis/webhooks.js +1 -1
  114. package/dist/apis/workflow-definition.cjs +6 -6
  115. package/dist/apis/workflow-definition.js +1 -1
  116. package/dist/apis/workflow.cjs +6 -6
  117. package/dist/apis/workflow.js +1 -1
  118. package/dist/{chunk-4DTTVPUM.cjs → chunk-4M4Z7BKK.cjs} +1 -1
  119. package/dist/{chunk-WE4C7GER.js → chunk-4OBXBYLK.js} +1 -1
  120. package/dist/chunk-M6G3GHCU.js +14 -0
  121. package/dist/{chunk-YEFQY72W.js → chunk-OXXS3O7X.js} +5 -5
  122. package/dist/{chunk-ZBFAP6AO.cjs → chunk-RE2KDGKQ.cjs} +5 -5
  123. package/dist/chunk-ULV6ZQQR.cjs +14 -0
  124. package/dist/event-catalog-5HHAS7NI.js +7 -0
  125. package/dist/event-catalog-SAH4ZEOO.cjs +7 -0
  126. package/dist/{event-catalog-runtime-XWSYNUGQ.cjs → event-catalog-runtime-2ACQMB22.cjs} +2 -2
  127. package/dist/{event-catalog-runtime-Z6OMHQBD.js → event-catalog-runtime-5IXAZVIB.js} +1 -1
  128. package/dist/{event-catalog.d-CCE1qmBN.d.cts → event-catalog.d-BQqG_LGF.d.cts} +248 -1
  129. package/dist/{event-catalog.d-CCE1qmBN.d.ts → event-catalog.d-BQqG_LGF.d.ts} +248 -1
  130. package/dist/index.cjs +12 -12
  131. package/dist/index.d.cts +3 -3
  132. package/dist/index.d.ts +3 -3
  133. package/dist/index.js +3 -3
  134. package/dist/integration-toolkit-4ADZMNTB.cjs +7 -0
  135. package/dist/integration-toolkit-BCRYMKLW.js +7 -0
  136. package/dist/{integration-toolkit-runtime-TNDJH6HK.js → integration-toolkit-runtime-ABL4FFLI.js} +1 -1
  137. package/dist/{integration-toolkit-runtime-57I2O6DI.cjs → integration-toolkit-runtime-SU7VKZJB.cjs} +2 -2
  138. package/dist/{integration-toolkit.d-CEY26qJu.d.cts → integration-toolkit.d-BQ0Fj-48.d.cts} +274 -25
  139. package/dist/{integration-toolkit.d-CEY26qJu.d.ts → integration-toolkit.d-BQ0Fj-48.d.ts} +274 -25
  140. package/dist/{metering-COO4BTOC.js → metering-SHNCUA4O.js} +1 -1
  141. package/dist/{metering-FJI2AU7Q.cjs → metering-WAVFLJZD.cjs} +1 -1
  142. package/dist/{metering.d-DomHYl06.d.cts → metering.d-BP04w-gR.d.cts} +24 -15
  143. package/dist/{metering.d-DomHYl06.d.ts → metering.d-BP04w-gR.d.ts} +24 -15
  144. package/docs/event-catalog.md +439 -0
  145. package/docs/integration-toolkit.md +113 -8
  146. package/docs/metering.md +4 -4
  147. package/package.json +1 -1
  148. package/dist/chunk-2Q6CNXJ2.cjs +0 -14
  149. package/dist/chunk-LTCN52JS.js +0 -14
  150. package/dist/event-catalog-S4OYTDIB.js +0 -7
  151. package/dist/event-catalog-Z6BO4L2G.cjs +0 -7
  152. package/dist/integration-toolkit-FM53LFD7.cjs +0 -7
  153. package/dist/integration-toolkit-PUA7B6YT.js +0 -7
@@ -70,6 +70,7 @@ const { data } = await integrationToolkitClient.acknowledgeTracking(...)
70
70
  - [`listOutboundDlqMessages`](#listoutbounddlqmessages)
71
71
  - [`redriveOutboundDlqMessages`](#redriveoutbounddlqmessages)
72
72
  - [`unblockOutboundStream`](#unblockoutboundstream)
73
+ - [`simulateOutboundMapping`](#simulateoutboundmapping)
73
74
  - [`listSecureProxies`](#listsecureproxies)
74
75
  - [`generateTypesPreview`](#generatetypespreview)
75
76
  - [`generateTypes`](#generatetypes)
@@ -284,6 +285,9 @@ const { data } = await integrationToolkitClient.acknowledgeTracking(...)
284
285
  - [`RedriveOutboundDlqResponse`](#redriveoutbounddlqresponse)
285
286
  - [`UnblockOutboundStreamRequest`](#unblockoutboundstreamrequest)
286
287
  - [`UnblockOutboundStreamResponse`](#unblockoutboundstreamresponse)
288
+ - [`SimulateOutboundMappingRequest`](#simulateoutboundmappingrequest)
289
+ - [`OutboundMappingSimulationError`](#outboundmappingsimulationerror)
290
+ - [`SimulateOutboundMappingResponse`](#simulateoutboundmappingresponse)
287
291
  - [`RelationConfig`](#relationconfig)
288
292
  - [`RelationItemConfig`](#relationitemconfig)
289
293
  - [`RelationUniqueIdField`](#relationuniqueidfield)
@@ -2815,7 +2819,9 @@ const { data } = await client.pollOutboundMessages(
2815
2819
  "event_name": "string",
2816
2820
  "event_id": "string",
2817
2821
  "group": "string",
2822
+ "org_id": "string",
2818
2823
  "payload": {},
2824
+ "mapping_version": "3f2a9c1b7d4e8f60",
2819
2825
  "enqueued_at": "1970-01-01T00:00:00.000Z"
2820
2826
  }
2821
2827
  ],
@@ -2903,6 +2909,8 @@ const { data } = await client.listOutboundDlqMessages({
2903
2909
  "dead_lettered_at": "1970-01-01T00:00:00.000Z",
2904
2910
  "delivery_attempts": 0,
2905
2911
  "reason": "string",
2912
+ "mapping_error": "string",
2913
+ "mapping_version": "string",
2906
2914
  "expires_at": "1970-01-01T00:00:00.000Z"
2907
2915
  }
2908
2916
  ],
@@ -2929,7 +2937,8 @@ const { data } = await client.redriveOutboundDlqMessages(
2929
2937
  integrationId: 'example',
2930
2938
  },
2931
2939
  {
2932
- ids: ['string']
2940
+ ids: ['string'],
2941
+ reapply_mapping: false
2933
2942
  },
2934
2943
  )
2935
2944
  ```
@@ -2942,7 +2951,8 @@ const { data } = await client.redriveOutboundDlqMessages(
2942
2951
  "results": [
2943
2952
  {
2944
2953
  "id": "string",
2945
- "status": "redriven"
2954
+ "status": "redriven",
2955
+ "mapping_error": "string"
2946
2956
  }
2947
2957
  ]
2948
2958
  }
@@ -2986,6 +2996,49 @@ const { data } = await client.unblockOutboundStream(
2986
2996
 
2987
2997
  ---
2988
2998
 
2999
+ ### `simulateOutboundMapping`
3000
+
3001
+ Preview a poll delivery's `jsonata_expression` without saving or
3002
+ enqueueing anything. The expression is checked and evaluated exactly
3003
+ as at enqueue time: the same length, syntax and binding checks, th
3004
+
3005
+ `POST /v1/integrations/{integrationId}/outbound/mapping-simulation`
3006
+
3007
+ ```ts
3008
+ const { data } = await client.simulateOutboundMapping(
3009
+ {
3010
+ integrationId: 'example',
3011
+ },
3012
+ {
3013
+ jsonata_expression: '{ "contract_number": contract.contract_number, "status": $mapValue($env.erp.statuses, contract.status) }',
3014
+ payload: {},
3015
+ event_id: 'string',
3016
+ event_catalog_event: 'contract.updated'
3017
+ },
3018
+ )
3019
+ ```
3020
+
3021
+ <details>
3022
+ <summary>Response</summary>
3023
+
3024
+ ```json
3025
+ {
3026
+ "valid": true,
3027
+ "output": {},
3028
+ "error": {
3029
+ "code": "syntax_error",
3030
+ "message": "string",
3031
+ "position": 0
3032
+ },
3033
+ "mapping_version": "3f2a9c1b7d4e8f60",
3034
+ "input": {}
3035
+ }
3036
+ ```
3037
+
3038
+ </details>
3039
+
3040
+ ---
3041
+
2989
3042
  ### `queryAccessLogs`
2990
3043
 
2991
3044
  Query API access logs for a specific integration's organization.
@@ -8532,7 +8585,7 @@ type IntegrationConfigurationV2 = {
8532
8585
 
8533
8586
  ### `OutboundMapping`
8534
8587
 
8535
- A mapping that delivers an event to an external system by one of three mechanisms — 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
8588
+ A mapping that delivers an event to an external system by one of three mechanisms — pushed to a webhook (with a JSONata payload transformation), made available on the pull-based poll queue (the raw event payload, or its JSONata transformation when the mapping carries one), or handed to a file_proxy
8536
8589
 
8537
8590
  ```ts
8538
8591
  type OutboundMapping = {
@@ -8561,7 +8614,7 @@ type OutboundMapping = {
8561
8614
 
8562
8615
  ### `DeliveryConfig`
8563
8616
 
8564
- Configuration 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
8617
+ Configuration 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, or its JSONata transformation when the mapping carries a jsonata_express
8565
8618
 
8566
8619
  ```ts
8567
8620
  type DeliveryConfig = {
@@ -8595,7 +8648,7 @@ type WebhookDeliveryConfig = {
8595
8648
 
8596
8649
  ### `PollDeliveryConfig`
8597
8650
 
8598
- Pull-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.
8651
+ Pull-based queue delivery. Consumers fetch and acknowledge items via the poll API. When the mapping carries a `jsonata_expression`, it is evaluated once at enqueue time against the standardized event-catalog event (with `$env`/`$mapValue`/`$mapKey` bindings) and its output — a JSON object — is the d
8599
8652
 
8600
8653
  ```ts
8601
8654
  type PollDeliveryConfig = {
@@ -8824,7 +8877,9 @@ type OutboundMessage = {
8824
8877
  event_name: string
8825
8878
  event_id: string
8826
8879
  group: string
8880
+ org_id?: string
8827
8881
  payload: Record<string, unknown>
8882
+ mapping_version?: string
8828
8883
  enqueued_at: string // date-time
8829
8884
  }
8830
8885
  ```
@@ -8840,7 +8895,9 @@ type PollOutboundMessagesResponse = {
8840
8895
  event_name: string
8841
8896
  event_id: string
8842
8897
  group: string
8898
+ org_id?: string
8843
8899
  payload: Record<string, unknown>
8900
+ mapping_version?: string
8844
8901
  enqueued_at: string // date-time
8845
8902
  }>
8846
8903
  visibility_timeout_seconds: number
@@ -8893,6 +8950,8 @@ type OutboundDlqMessage = {
8893
8950
  dead_lettered_at: string // date-time
8894
8951
  delivery_attempts: number
8895
8952
  reason?: string
8953
+ mapping_error?: string
8954
+ mapping_version?: string
8896
8955
  expires_at?: string // date-time
8897
8956
  }
8898
8957
  ```
@@ -8910,6 +8969,8 @@ type OutboundDlqListResponse = {
8910
8969
  dead_lettered_at: string // date-time
8911
8970
  delivery_attempts: number
8912
8971
  reason?: string
8972
+ mapping_error?: string
8973
+ mapping_version?: string
8913
8974
  expires_at?: string // date-time
8914
8975
  }>
8915
8976
  next_token?: string
@@ -8921,6 +8982,7 @@ type OutboundDlqListResponse = {
8921
8982
  ```ts
8922
8983
  type RedriveOutboundDlqRequest = {
8923
8984
  ids: string[]
8985
+ reapply_mapping?: boolean
8924
8986
  }
8925
8987
  ```
8926
8988
 
@@ -8929,7 +8991,8 @@ type RedriveOutboundDlqRequest = {
8929
8991
  ```ts
8930
8992
  type RedriveOutboundDlqResult = {
8931
8993
  id: string
8932
- status: "redriven" | "not_found"
8994
+ status: "redriven" | "not_found" | "mapping_failed"
8995
+ mapping_error?: string
8933
8996
  }
8934
8997
  ```
8935
8998
 
@@ -8939,7 +9002,8 @@ type RedriveOutboundDlqResult = {
8939
9002
  type RedriveOutboundDlqResponse = {
8940
9003
  results: Array<{
8941
9004
  id: string
8942
- status: "redriven" | "not_found"
9005
+ status: "redriven" | "not_found" | "mapping_failed"
9006
+ mapping_error?: string
8943
9007
  }>
8944
9008
  }
8945
9009
  ```
@@ -8961,6 +9025,47 @@ type UnblockOutboundStreamResponse = {
8961
9025
  }
8962
9026
  ```
8963
9027
 
9028
+ ### `SimulateOutboundMappingRequest`
9029
+
9030
+ Exactly one of `payload` or `event_id` is required. `event_id` needs
9031
+ `event_catalog_event` to name the event it belongs to.
9032
+
9033
+
9034
+ ```ts
9035
+ type SimulateOutboundMappingRequest = {
9036
+ jsonata_expression: string
9037
+ payload?: Record<string, unknown>
9038
+ event_id?: string
9039
+ event_catalog_event?: string
9040
+ }
9041
+ ```
9042
+
9043
+ ### `OutboundMappingSimulationError`
9044
+
9045
+ ```ts
9046
+ type OutboundMappingSimulationError = {
9047
+ code: "syntax_error" | "unknown_binding" | "evaluation_error" | "timeout" | "invalid_output" | "expression_too_long"
9048
+ message: string
9049
+ position?: number
9050
+ }
9051
+ ```
9052
+
9053
+ ### `SimulateOutboundMappingResponse`
9054
+
9055
+ ```ts
9056
+ type SimulateOutboundMappingResponse = {
9057
+ valid: boolean
9058
+ output?: Record<string, unknown>
9059
+ error?: {
9060
+ code: "syntax_error" | "unknown_binding" | "evaluation_error" | "timeout" | "invalid_output" | "expression_too_long"
9061
+ message: string
9062
+ position?: number
9063
+ }
9064
+ mapping_version: string
9065
+ input?: Record<string, unknown>
9066
+ }
9067
+ ```
9068
+
8964
9069
  ### `RelationConfig`
8965
9070
 
8966
9071
  ```ts
@@ -9409,7 +9514,7 @@ This schema exists so consumers can import the union as a type. It is
9409
9514
  deliberately
9410
9515
 
9411
9516
  ```ts
9412
- type MonitoringCode = "ACK_CONFIRMED" | "ACK_PENDING" | "ACK_TIMEOUT" | "ATTACHMENT_NOT_FOUND" | "ATTRIBUTE_TYPE_MISMATCH" | "CONDITIONAL_VARIANTS_WRITTEN" | "CONDITIONAL_VARIANT_WRITE_FAILED" | "CONDITIONAL_VARIANT_WRITE_WARNING" | "DEPRECATED_ENDPOINT" | "DIRECT_ENTITY_NOT_ALLOWED" | "DIRECT_PAYLOAD_INVALID" | "DIRECT_VERSION_UNSUPPORTED" | "DUPLICATE_EVENT" | "ENTITY_CREATED" | "ENTITY_DELETED" | "ENTITY_NO_OP" | "ENTITY_REFERENCE_NOT_FOUND" | "ENTITY_UPDATED" | "EVENT_NOT_CONFIGURED" | "EXTERNAL_API_ERROR" | "EXTERNAL_ERROR" | "EXTERNAL_INFO" | "EXTERNAL_SUCCESS" | "EXTERNAL_WARNING" | "FAN_OUT_EMPTY" | "FAN_OUT_INVALID_RESULT" | "FILE_EXTRACTION_FAILED" | "FILE_FETCH_FAILED" | "FILE_PROXY_OK" | "FILE_PROXY_UPLOADED" | "FILE_PROXY_UPLOAD_ENQUEUED" | "FILE_PROXY_UPLOAD_FAILED" | "FILE_PROXY_UPLOAD_RETRYING" | "FILE_TOO_LARGE" | "INTEGRATION_NOT_FOUND" | "INVALID_METER_READING_ATTRIBUTES" | "LOOKUP_UNMAPPED" | "MALFORMED_PAYLOAD" | "MAPPING_EXPRESSION_FAILED" | "METERING_API_ERROR" | "METER_READING_DELETED" | "METER_READING_GROUP_FAILED" | "METER_READING_GROUP_RETRYING" | "METER_READING_UPSERTED" | "MISSING_REQUIRED_PARAM" | "MISSING_UNIQUE_IDENTIFIERS" | "MSG_ACKED" | "MSG_DEAD_LETTERED" | "MSG_ENQUEUED" | "MSG_EXPIRED_UNPOLLED" | "MSG_HEAD_BLOCKED" | "OAUTH2_TOKEN_FAILURE" | "PAYLOAD_TOO_LARGE" | "PRUNE_SCOPE_COMPLETED" | "PRUNE_SCOPE_PARTIAL_FAILURE" | "RECURSION_DEPTH_EXCEEDED" | "RELATION_REF_ITEM_NOT_FOUND" | "RELATION_REF_VALUE_UNDEFINED" | "REQUIRED_PARAM_MISSING" | "SECURE_PROXY_DISABLED" | "SECURE_PROXY_DOMAIN_BLOCKED" | "SECURE_PROXY_DOMAIN_NOT_ALLOWED" | "SECURE_PROXY_ERROR" | "SECURE_PROXY_INVALID_CONFIG" | "SECURE_PROXY_INVALID_TYPE" | "SECURE_PROXY_INVALID_URL" | "SECURE_PROXY_IP_BLOCKED" | "SECURE_PROXY_IP_NOT_ALLOWED" | "SECURE_PROXY_NOT_FOUND" | "SECURE_PROXY_UNAVAILABLE" | "SIGNATURE_VERIFICATION_FAILED" | "SIGNATURE_VERIFICATION_UNAVAILABLE" | "SOFT_DELETED_ENTITY_MATCHED" | "STEP_DISABLED" | "TIMEOUT" | "UNIQUE_ID_MULTIPLE_MATCHES" | "UNIQUE_ID_NOT_IN_SCHEMA" | "UNKNOWN_ERROR" | "USE_CASE_DISABLED" | "USE_CASE_INVALID_TYPE" | "USE_CASE_MISSING_CONFIG" | "USE_CASE_NOT_FOUND" | "WEBHOOK_DELIVERED"
9517
+ type MonitoringCode = "ACK_CONFIRMED" | "ACK_PENDING" | "ACK_TIMEOUT" | "ATTACHMENT_NOT_FOUND" | "ATTRIBUTE_TYPE_MISMATCH" | "CONDITIONAL_VARIANTS_WRITTEN" | "CONDITIONAL_VARIANT_WRITE_FAILED" | "CONDITIONAL_VARIANT_WRITE_WARNING" | "DEPRECATED_ENDPOINT" | "DIRECT_ENTITY_NOT_ALLOWED" | "DIRECT_PAYLOAD_INVALID" | "DIRECT_VERSION_UNSUPPORTED" | "DUPLICATE_EVENT" | "ENTITY_CREATED" | "ENTITY_DELETED" | "ENTITY_NO_OP" | "ENTITY_REFERENCE_NOT_FOUND" | "ENTITY_UPDATED" | "EVENT_NOT_CONFIGURED" | "EXTERNAL_API_ERROR" | "EXTERNAL_ERROR" | "EXTERNAL_INFO" | "EXTERNAL_SUCCESS" | "EXTERNAL_WARNING" | "FAN_OUT_EMPTY" | "FAN_OUT_INVALID_RESULT" | "FILE_EXTRACTION_FAILED" | "FILE_FETCH_FAILED" | "FILE_PROXY_OK" | "FILE_PROXY_UPLOADED" | "FILE_PROXY_UPLOAD_ENQUEUED" | "FILE_PROXY_UPLOAD_FAILED" | "FILE_PROXY_UPLOAD_RETRYING" | "FILE_TOO_LARGE" | "INTEGRATION_NOT_FOUND" | "INVALID_METER_READING_ATTRIBUTES" | "LOOKUP_UNMAPPED" | "MALFORMED_PAYLOAD" | "MAPPING_EXPRESSION_FAILED" | "METERING_API_ERROR" | "METER_READING_DELETED" | "METER_READING_GROUP_FAILED" | "METER_READING_GROUP_RETRYING" | "METER_READING_UPSERTED" | "MISSING_REQUIRED_PARAM" | "MISSING_UNIQUE_IDENTIFIERS" | "MSG_ACKED" | "MSG_DEAD_LETTERED" | "MSG_ENQUEUED" | "MSG_EXPIRED_UNPOLLED" | "MSG_HEAD_BLOCKED" | "MSG_LATE_ARRIVAL" | "OAUTH2_TOKEN_FAILURE" | "PAYLOAD_TOO_LARGE" | "PRUNE_SCOPE_COMPLETED" | "PRUNE_SCOPE_PARTIAL_FAILURE" | "RECURSION_DEPTH_EXCEEDED" | "RELATION_REF_ITEM_NOT_FOUND" | "RELATION_REF_VALUE_UNDEFINED" | "REQUIRED_PARAM_MISSING" | "SECURE_PROXY_DISABLED" | "SECURE_PROXY_DOMAIN_BLOCKED" | "SECURE_PROXY_DOMAIN_NOT_ALLOWED" | "SECURE_PROXY_ERROR" | "SECURE_PROXY_INVALID_CONFIG" | "SECURE_PROXY_INVALID_TYPE" | "SECURE_PROXY_INVALID_URL" | "SECURE_PROXY_IP_BLOCKED" | "SECURE_PROXY_IP_NOT_ALLOWED" | "SECURE_PROXY_NOT_FOUND" | "SECURE_PROXY_UNAVAILABLE" | "SIGNATURE_VERIFICATION_FAILED" | "SIGNATURE_VERIFICATION_UNAVAILABLE" | "SOFT_DELETED_ENTITY_MATCHED" | "STEP_DISABLED" | "TIMEOUT" | "UNIQUE_ID_MULTIPLE_MATCHES" | "UNIQUE_ID_NOT_IN_SCHEMA" | "UNKNOWN_ERROR" | "USE_CASE_DISABLED" | "USE_CASE_INVALID_TYPE" | "USE_CASE_MISSING_CONFIG" | "USE_CASE_NOT_FOUND" | "WEBHOOK_DELIVERED"
9413
9518
  ```
9414
9519
 
9415
9520
  ### `MonitoringEventV2`
package/docs/metering.md CHANGED
@@ -1131,7 +1131,7 @@ const { data } = await client.deleteMeterReading({
1131
1131
 
1132
1132
  ### `getReadingChangesets`
1133
1133
 
1134
- List pending reading changesets for a counter
1134
+ Lists the pending reading changesets for a counter.
1135
1135
 
1136
1136
  `GET /v1/metering/reading/{meter_id}/{counter_id}/changesets`
1137
1137
 
@@ -1198,7 +1198,7 @@ const { data } = await client.getReadingChangesets({
1198
1198
 
1199
1199
  ### `applyReadingChangeset`
1200
1200
 
1201
- Apply (approve) a pending reading changeset
1201
+ Applies (approves) a pending reading changeset: the proposed reading value is written to ClickHouse and the pending changeset is removed.
1202
1202
 
1203
1203
  `POST /v1/metering/reading/{meter_id}/{counter_id}/changesets/{changeset_id}:apply`
1204
1204
 
@@ -1283,7 +1283,7 @@ const { data } = await client.applyReadingChangeset({
1283
1283
 
1284
1284
  ### `dismissReadingChangeset`
1285
1285
 
1286
- Dismiss (reject) a pending reading changeset
1286
+ Dismisses (rejects) a pending reading changeset: the changeset is removed without being applied. The reading value remains unchanged.
1287
1287
 
1288
1288
  `POST /v1/metering/reading/{meter_id}/{counter_id}/changesets/{changeset_id}:dismiss`
1289
1289
 
@@ -1352,7 +1352,7 @@ const { data } = await client.dismissReadingChangeset(
1352
1352
 
1353
1353
  ### `updateReadingChangeset`
1354
1354
 
1355
- Edit a pending reading changeset
1355
+ Edits a pending reading changeset by updating its proposed value, without going through the normal write path.
1356
1356
 
1357
1357
  `PATCH /v1/metering/reading/{meter_id}/{counter_id}/changesets/{changeset_id}`
1358
1358
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@epilot/sdk",
3
- "version": "2.20.33",
3
+ "version": "2.20.35",
4
4
  "description": "JavaScript/TypeScript SDK for epilot APIs",
5
5
  "type": "module",
6
6
  "main": "./dist/index.cjs",
@@ -1,14 +0,0 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
-
3
- var _chunkNJK5F5TFcjs = require('./chunk-NJK5F5TF.cjs');
4
-
5
- // src/definitions/event-catalog-runtime.json
6
- var require_event_catalog_runtime = _chunkNJK5F5TFcjs.__commonJS.call(void 0, {
7
- "src/definitions/event-catalog-runtime.json"(exports, module) {
8
- module.exports = { s: "https://event-catalog.sls.epilot.io", o: [["listEvents", "get", "/v1/events"], ["createCustomEvent", "post", "/v1/events", null, 1], ["getEvent", "get", "/v1/events/{event_name}", [["event_name", "p", true]]], ["patchEvent", "patch", "/v1/events/{event_name}", [["event_name", "p", true]], 1], ["replaceCustomEventDraft", "put", "/v1/events/{event_name}", [["event_name", "p", true]], 1], ["deprecateCustomEvent", "delete", "/v1/events/{event_name}", [["event_name", "p", true]]], ["previewCustomEvent", "post", "/v1/events/{event_name}:preview", [["event_name", "p", true]], 1], ["publishCustomEventDefinition", "post", "/v1/events/{event_name}:publish", [["event_name", "p", true]], 1], ["getEventJSONSchema", "get", "/v1/events/{event_name}/json_schema", [["event_name", "p", true], ["Epilot-Event-Version", "h"]]], ["getEventExample", "get", "/v1/events/{event_name}/example", [["event_name", "p", true], ["Epilot-Event-Version", "h"]]], ["listEventVersions", "get", "/v1/events/{event_name}/versions", [["event_name", "p", true]]], ["searchEventHistory", "post", "/v1/events/{event_name}:history", [["event_name", "p", true]], 1], ["searchEventHistoryV2", "post", "/v2/events/{event_name}:history", [["event_name", "p", true]], 1], ["getHistoricalEvent", "get", "/v2/events/{event_name}/history/{event_id}", [["event_name", "p", true], ["event_id", "p", true]]], ["triggerEvent", "post", "/v1/events/{event_name}:trigger", [["event_name", "p", true]], 1]], v: "3.0.0" };
9
- }
10
- });
11
-
12
-
13
-
14
- exports.require_event_catalog_runtime = require_event_catalog_runtime;
@@ -1,14 +0,0 @@
1
- import {
2
- __commonJS
3
- } from "./chunk-YPSWSI3M.js";
4
-
5
- // src/definitions/event-catalog-runtime.json
6
- var require_event_catalog_runtime = __commonJS({
7
- "src/definitions/event-catalog-runtime.json"(exports, module) {
8
- module.exports = { s: "https://event-catalog.sls.epilot.io", o: [["listEvents", "get", "/v1/events"], ["createCustomEvent", "post", "/v1/events", null, 1], ["getEvent", "get", "/v1/events/{event_name}", [["event_name", "p", true]]], ["patchEvent", "patch", "/v1/events/{event_name}", [["event_name", "p", true]], 1], ["replaceCustomEventDraft", "put", "/v1/events/{event_name}", [["event_name", "p", true]], 1], ["deprecateCustomEvent", "delete", "/v1/events/{event_name}", [["event_name", "p", true]]], ["previewCustomEvent", "post", "/v1/events/{event_name}:preview", [["event_name", "p", true]], 1], ["publishCustomEventDefinition", "post", "/v1/events/{event_name}:publish", [["event_name", "p", true]], 1], ["getEventJSONSchema", "get", "/v1/events/{event_name}/json_schema", [["event_name", "p", true], ["Epilot-Event-Version", "h"]]], ["getEventExample", "get", "/v1/events/{event_name}/example", [["event_name", "p", true], ["Epilot-Event-Version", "h"]]], ["listEventVersions", "get", "/v1/events/{event_name}/versions", [["event_name", "p", true]]], ["searchEventHistory", "post", "/v1/events/{event_name}:history", [["event_name", "p", true]], 1], ["searchEventHistoryV2", "post", "/v2/events/{event_name}:history", [["event_name", "p", true]], 1], ["getHistoricalEvent", "get", "/v2/events/{event_name}/history/{event_id}", [["event_name", "p", true], ["event_id", "p", true]]], ["triggerEvent", "post", "/v1/events/{event_name}:trigger", [["event_name", "p", true]], 1]], v: "3.0.0" };
9
- }
10
- });
11
-
12
- export {
13
- require_event_catalog_runtime
14
- };
@@ -1,7 +0,0 @@
1
- import "./chunk-YPSWSI3M.js";
2
-
3
- // src/docs/event-catalog.json
4
- var event_catalog_default = '# Event Catalog API\n\n- **Base URL:** `https://event-catalog.sls.epilot.io`\n- **Full API Docs:** [https://docs.epilot.io/api/event-catalog](https://docs.epilot.io/api/event-catalog)\n\n## Usage\n\n```ts\nimport { epilot } from \'@epilot/sdk\'\n\nepilot.authorize(() => \'<token>\')\nconst { data } = await epilot.eventCatalog.listEvents(...)\n```\n\n### Tree-shakeable import\n\n```ts\nimport { getClient, authorize } from \'@epilot/sdk/event-catalog\'\n\nconst eventCatalogClient = getClient()\nauthorize(eventCatalogClient, () => \'<token>\')\nconst { data } = await eventCatalogClient.listEvents(...)\n```\n\n## Operations\n\n**Event Catalog**\n- [`listEvents`](#listevents)\n- [`createCustomEvent`](#createcustomevent)\n- [`getEvent`](#getevent)\n- [`patchEvent`](#patchevent)\n- [`replaceCustomEventDraft`](#replacecustomeventdraft)\n- [`deprecateCustomEvent`](#deprecatecustomevent)\n- [`previewCustomEvent`](#previewcustomevent)\n- [`publishCustomEventDefinition`](#publishcustomeventdefinition)\n- [`getEventJSONSchema`](#geteventjsonschema)\n- [`getEventExample`](#geteventexample)\n- [`listEventVersions`](#listeventversions)\n- [`searchEventHistory`](#searcheventhistory)\n- [`searchEventHistoryV2`](#searcheventhistoryv2)\n- [`getHistoricalEvent`](#gethistoricalevent)\n- [`triggerEvent`](#triggerevent)\n\n**Schemas**\n- [`EventConfigBase`](#eventconfigbase)\n- [`EventConfig`](#eventconfig)\n- [`CreateCustomEventPayload`](#createcustomeventpayload)\n- [`EventMapping`](#eventmapping)\n- [`CustomEventLineage`](#customeventlineage)\n- [`PurposeFilterSnapshot`](#purposefiltersnapshot)\n- [`PublishCustomEventPayload`](#publishcustomeventpayload)\n- [`ValidationIssue`](#validationissue)\n- [`PreviewEventResponse`](#previeweventresponse)\n- [`UpdateEventPayload`](#updateeventpayload)\n- [`PrimitiveField`](#primitivefield)\n- [`ContextEntity`](#contextentity)\n- [`AttachmentField`](#attachmentfield)\n- [`CustomSchemaField`](#customschemafield)\n- [`SchemaField`](#schemafield)\n- [`SuccessCriterion`](#successcriterion)\n- [`CommonEventMetadata`](#commoneventmetadata)\n- [`EventJsonSchema`](#eventjsonschema)\n- [`InlineDowngradeStep`](#inlinedowngradestep)\n- [`Event`](#event)\n- [`EventSummary`](#eventsummary)\n- [`GraphDefinition`](#graphdefinition)\n- [`GraphNode`](#graphnode)\n- [`GraphEdge`](#graphedge)\n- [`EntityOperationTrigger`](#entityoperationtrigger)\n- [`SearchOptions`](#searchoptions)\n- [`SearchOptionsV2`](#searchoptionsv2)\n- [`FieldsParam`](#fieldsparam)\n- [`TriggerEventPayload`](#triggereventpayload)\n- [`TriggerEventResponse`](#triggereventresponse)\n- [`EventAttachment`](#eventattachment)\n- [`FieldChange`](#fieldchange)\n- [`VersionMeta`](#versionmeta)\n- [`EventVersionRegistrySummary`](#eventversionregistrysummary)\n\n### `listEvents`\n\nRetrieve list of available business events\n\n`GET /v1/events`\n\n```ts\nconst { data } = await client.listEvents()\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "results": [\n {\n "event_name": "AddMeterReading",\n "event_title": "Add Meter Reading",\n "event_description": "Triggered when a new meter reading is added",\n "event_version": "1.0",\n "event_status": "active",\n "event_tags": ["builtin", "metering", "erp"],\n "schema_fields": {},\n "entity_graph": {\n "nodes": [\n {\n "id": "contact",\n "schema": "contact",\n "cardinality": "one",\n "fields": ["_id", "_title", "first_name", "account", "!account.*._files", "**._product"]\n }\n ],\n "edges": [\n {\n "from": "contact",\n "to": "billing_account"\n }\n ]\n },\n "entity_operation": {\n "operation": ["createEntity", "updateEntity"],\n "schema": ["contact", "contract", "order"],\n "attribute": ["email", "phone", "status"],\n "purpose": ["K\xFCndigung", "Umzug/Auszug"],\n "purpose_filters": [\n {\n "id": "string",\n "display_name": "string"\n }\n ]\n },\n "enabled": true,\n "auto_trigger": true,\n "automation_trigger": true,\n "api_trigger": true,\n "automation_trigger_only": true,\n "automation_trigger_seed_node": "ticket",\n "event_origin": "builtin",\n "mapping": {\n "mode": "guided",\n "jsonata": "string"\n },\n "lineage": {\n "base_event_name": "string",\n "base_event_version": "string"\n },\n "success_criteria": [\n {\n "entity_schema": "contract",\n "attribute": "installment_amount"\n },\n {\n "entity_schema": "billing_account",\n "attribute": "due_date"\n }\n ]\n }\n ]\n}\n```\n\n</details>\n\n---\n\n### `createCustomEvent`\n\nReserve an org-scoped custom event name and persist its immutable v1.0 draft definition. Custom events are always projected from an entity graph: entity_graph is required and, in guided mapping mode, \n\n`POST /v1/events`\n\n```ts\nconst { data } = await client.createCustomEvent(\n null,\n {\n event_name: \'string\',\n event_title: \'string\',\n event_description: \'string\',\n event_tags: [\'string\'],\n schema_fields: {},\n entity_graph: {\n nodes: [\n {\n id: \'contact\',\n schema: \'contact\',\n cardinality: \'one\',\n fields: [\'_id\', \'_title\', \'first_name\', \'account\', \'!account.*._files\', \'**._product\']\n }\n ],\n edges: [\n {\n from: \'contact\',\n to: \'billing_account\'\n }\n ]\n },\n entity_operation: {\n operation: [\'createEntity\', \'updateEntity\'],\n schema: [\'contact\', \'contract\', \'order\'],\n attribute: [\'email\', \'phone\', \'status\'],\n purpose: [\'K\xFCndigung\', \'Umzug/Auszug\'],\n purpose_filters: [\n {\n id: \'string\',\n display_name: \'string\'\n }\n ]\n },\n automation_trigger: true,\n api_trigger: true,\n automation_trigger_only: false,\n automation_trigger_seed_node: \'string\',\n mapping: {\n mode: \'guided\',\n jsonata: \'string\'\n },\n lineage: {\n base_event_name: \'string\',\n base_event_version: \'string\'\n },\n example: {}\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "event_name": "AddMeterReading",\n "event_title": "Add Meter Reading",\n "event_description": "Triggered when a new meter reading is added",\n "event_version": "1.0",\n "event_status": "active",\n "event_tags": ["builtin", "metering", "erp"],\n "schema_fields": {},\n "entity_graph": {\n "nodes": [\n {\n "id": "contact",\n "schema": "contact",\n "cardinality": "one",\n "fields": ["_id", "_title", "first_name", "account", "!account.*._files", "**._product"]\n }\n ],\n "edges": [\n {\n "from": "contact",\n "to": "billing_account"\n }\n ]\n },\n "entity_operation": {\n "operation": ["createEntity", "updateEntity"],\n "schema": ["contact", "contract", "order"],\n "attribute": ["email", "phone", "status"],\n "purpose": ["K\xFCndigung", "Umzug/Auszug"],\n "purpose_filters": [\n {\n "id": "string",\n "display_name": "string"\n }\n ]\n },\n "enabled": true,\n "auto_trigger": true,\n "automation_trigger": true,\n "api_trigger": true,\n "automation_trigger_only": true,\n "automation_trigger_seed_node": "ticket",\n "event_origin": "builtin",\n "mapping": {\n "mode": "guided",\n "jsonata": "string"\n },\n "lineage": {\n "base_event_name": "string",\n "base_event_version": "string"\n },\n "success_criteria": [\n {\n "entity_schema": "contract",\n "attribute": "installment_amount"\n },\n {\n "entity_schema": "billing_account",\n "attribute": "due_date"\n }\n ]\n}\n```\n\n</details>\n\n---\n\n### `getEvent`\n\nRetrieve the configuration of a specific business event\n\n`GET /v1/events/{event_name}`\n\n```ts\nconst { data } = await client.getEvent({\n event_name: \'example\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "event_name": "AddMeterReading",\n "event_title": "Add Meter Reading",\n "event_description": "Triggered when a new meter reading is added",\n "event_version": "1.0",\n "event_status": "active",\n "event_tags": ["builtin", "metering", "erp"],\n "schema_fields": {},\n "entity_graph": {\n "nodes": [\n {\n "id": "contact",\n "schema": "contact",\n "cardinality": "one",\n "fields": ["_id", "_title", "first_name", "account", "!account.*._files", "**._product"]\n }\n ],\n "edges": [\n {\n "from": "contact",\n "to": "billing_account"\n }\n ]\n },\n "entity_operation": {\n "operation": ["createEntity", "updateEntity"],\n "schema": ["contact", "contract", "order"],\n "attribute": ["email", "phone", "status"],\n "purpose": ["K\xFCndigung", "Umzug/Auszug"],\n "purpose_filters": [\n {\n "id": "string",\n "display_name": "string"\n }\n ]\n },\n "enabled": true,\n "auto_trigger": true,\n "automation_trigger": true,\n "api_trigger": true,\n "automation_trigger_only": true,\n "automation_trigger_seed_node": "ticket",\n "event_origin": "builtin",\n "mapping": {\n "mode": "guided",\n "jsonata": "string"\n },\n "lineage": {\n "base_event_name": "string",\n "base_event_version": "string"\n },\n "success_criteria": [\n {\n "entity_schema": "contract",\n "attribute": "installment_amount"\n },\n {\n "entity_schema": "billing_account",\n "attribute": "due_date"\n }\n ]\n}\n```\n\n</details>\n\n---\n\n### `patchEvent`\n\nUpdate the configuration of a specific business event for the organization\n\n`PATCH /v1/events/{event_name}`\n\n```ts\nconst { data } = await client.patchEvent(\n {\n event_name: \'example\',\n },\n {\n enabled: true,\n auto_trigger: true,\n success_criteria: [\n {\n entity_schema: \'contract\',\n attribute: \'installment_amount\'\n }\n ]\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "event_name": "AddMeterReading",\n "event_title": "Add Meter Reading",\n "event_description": "Triggered when a new meter reading is added",\n "event_version": "1.0",\n "event_status": "active",\n "event_tags": ["builtin", "metering", "erp"],\n "schema_fields": {},\n "entity_graph": {\n "nodes": [\n {\n "id": "contact",\n "schema": "contact",\n "cardinality": "one",\n "fields": ["_id", "_title", "first_name", "account", "!account.*._files", "**._product"]\n }\n ],\n "edges": [\n {\n "from": "contact",\n "to": "billing_account"\n }\n ]\n },\n "entity_operation": {\n "operation": ["createEntity", "updateEntity"],\n "schema": ["contact", "contract", "order"],\n "attribute": ["email", "phone", "status"],\n "purpose": ["K\xFCndigung", "Umzug/Auszug"],\n "purpose_filters": [\n {\n "id": "string",\n "display_name": "string"\n }\n ]\n },\n "enabled": true,\n "auto_trigger": true,\n "automation_trigger": true,\n "api_trigger": true,\n "automation_trigger_only": true,\n "automation_trigger_seed_node": "ticket",\n "event_origin": "builtin",\n "mapping": {\n "mode": "guided",\n "jsonata": "string"\n },\n "lineage": {\n "base_event_name": "string",\n "base_event_version": "string"\n },\n "success_criteria": [\n {\n "entity_schema": "contract",\n "attribute": "installment_amount"\n },\n {\n "entity_schema": "billing_account",\n "attribute": "due_date"\n }\n ]\n}\n```\n\n</details>\n\n---\n\n### `replaceCustomEventDraft`\n\nReplace the complete v1.0 definition of an org-scoped custom event while it is still an\nunpublished draft. Drafts have no consumers, so their definition is not yet immutable;\nthe event name is the ide\n\n`PUT /v1/events/{event_name}`\n\n```ts\nconst { data } = await client.replaceCustomEventDraft(\n {\n event_name: \'example\',\n },\n {\n event_name: \'string\',\n event_title: \'string\',\n event_description: \'string\',\n event_tags: [\'string\'],\n schema_fields: {},\n entity_graph: {\n nodes: [\n {\n id: \'contact\',\n schema: \'contact\',\n cardinality: \'one\',\n fields: [\'_id\', \'_title\', \'first_name\', \'account\', \'!account.*._files\', \'**._product\']\n }\n ],\n edges: [\n {\n from: \'contact\',\n to: \'billing_account\'\n }\n ]\n },\n entity_operation: {\n operation: [\'createEntity\', \'updateEntity\'],\n schema: [\'contact\', \'contract\', \'order\'],\n attribute: [\'email\', \'phone\', \'status\'],\n purpose: [\'K\xFCndigung\', \'Umzug/Auszug\'],\n purpose_filters: [\n {\n id: \'string\',\n display_name: \'string\'\n }\n ]\n },\n automation_trigger: true,\n api_trigger: true,\n automation_trigger_only: false,\n automation_trigger_seed_node: \'string\',\n mapping: {\n mode: \'guided\',\n jsonata: \'string\'\n },\n lineage: {\n base_event_name: \'string\',\n base_event_version: \'string\'\n },\n example: {}\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "event_name": "AddMeterReading",\n "event_title": "Add Meter Reading",\n "event_description": "Triggered when a new meter reading is added",\n "event_version": "1.0",\n "event_status": "active",\n "event_tags": ["builtin", "metering", "erp"],\n "schema_fields": {},\n "entity_graph": {\n "nodes": [\n {\n "id": "contact",\n "schema": "contact",\n "cardinality": "one",\n "fields": ["_id", "_title", "first_name", "account", "!account.*._files", "**._product"]\n }\n ],\n "edges": [\n {\n "from": "contact",\n "to": "billing_account"\n }\n ]\n },\n "entity_operation": {\n "operation": ["createEntity", "updateEntity"],\n "schema": ["contact", "contract", "order"],\n "attribute": ["email", "phone", "status"],\n "purpose": ["K\xFCndigung", "Umzug/Auszug"],\n "purpose_filters": [\n {\n "id": "string",\n "display_name": "string"\n }\n ]\n },\n "enabled": true,\n "auto_trigger": true,\n "automation_trigger": true,\n "api_trigger": true,\n "automation_trigger_only": true,\n "automation_trigger_seed_node": "ticket",\n "event_origin": "builtin",\n "mapping": {\n "mode": "guided",\n "jsonata": "string"\n },\n "lineage": {\n "base_event_name": "string",\n "base_event_version": "string"\n },\n "success_criteria": [\n {\n "entity_schema": "contract",\n "attribute": "installment_amount"\n },\n {\n "entity_schema": "billing_account",\n "attribute": "due_date"\n }\n ]\n}\n```\n\n</details>\n\n---\n\n### `deprecateCustomEvent`\n\nSoft-deprecate an org-scoped custom event. Definitions and v1.0 history remain readable.\n\n`DELETE /v1/events/{event_name}`\n\n```ts\nconst { data } = await client.deprecateCustomEvent({\n event_name: \'example\',\n})\n```\n\n---\n\n### `previewCustomEvent`\n\nAssemble and fully validate a persisted custom-event draft without publishing it.\n\n`POST /v1/events/{event_name}:preview`\n\n```ts\nconst { data } = await client.previewCustomEvent(\n {\n event_name: \'example\',\n },\n {\n seed: {\n entity_id: \'3fa85f64-5717-4562-b3fc-2c963f66afa6\',\n node_id: \'ticket\'\n },\n _trigger_source_type: \'automation\',\n _trigger_source: \'execution-id/action-id\'\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "payload": {},\n "errors": [\n {\n "path": "string",\n "message": "string"\n }\n ]\n}\n```\n\n</details>\n\n---\n\n### `publishCustomEventDefinition`\n\nConditionally activate an immutable custom-event v1.0 definition.\n\n`POST /v1/events/{event_name}:publish`\n\n```ts\nconst { data } = await client.publishCustomEventDefinition(\n {\n event_name: \'example\',\n },\n {\n enabled: true,\n auto_trigger: true,\n base_auto_trigger_enabled: true\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "event_name": "AddMeterReading",\n "event_title": "Add Meter Reading",\n "event_description": "Triggered when a new meter reading is added",\n "event_version": "1.0",\n "event_status": "active",\n "event_tags": ["builtin", "metering", "erp"],\n "schema_fields": {},\n "entity_graph": {\n "nodes": [\n {\n "id": "contact",\n "schema": "contact",\n "cardinality": "one",\n "fields": ["_id", "_title", "first_name", "account", "!account.*._files", "**._product"]\n }\n ],\n "edges": [\n {\n "from": "contact",\n "to": "billing_account"\n }\n ]\n },\n "entity_operation": {\n "operation": ["createEntity", "updateEntity"],\n "schema": ["contact", "contract", "order"],\n "attribute": ["email", "phone", "status"],\n "purpose": ["K\xFCndigung", "Umzug/Auszug"],\n "purpose_filters": [\n {\n "id": "string",\n "display_name": "string"\n }\n ]\n },\n "enabled": true,\n "auto_trigger": true,\n "automation_trigger": true,\n "api_trigger": true,\n "automation_trigger_only": true,\n "automation_trigger_seed_node": "ticket",\n "event_origin": "builtin",\n "mapping": {\n "mode": "guided",\n "jsonata": "string"\n },\n "lineage": {\n "base_event_name": "string",\n "base_event_version": "string"\n },\n "success_criteria": [\n {\n "entity_schema": "contract",\n "attribute": "installment_amount"\n },\n {\n "entity_schema": "billing_account",\n "attribute": "due_date"\n }\n ]\n}\n```\n\n</details>\n\n---\n\n### `getEventJSONSchema`\n\nRetrieve the JSON Schema of a specific business event. Pass an optional\n`Epilot-Event-Version` header to retrieve a specific version\'s schema;\nwhen omitted, the event\'s latest version is returned.\n\n`GET /v1/events/{event_name}/json_schema`\n\n```ts\nconst { data } = await client.getEventJSONSchema({\n event_name: \'example\',\n Epilot-Event-Version: \'example\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "type": "object",\n "properties": {\n "_org_id": {\n "type": "string",\n "description": "epilot tenant/organization ID"\n },\n "_event_time": {\n "type": "string",\n "format": "date-time",\n "description": "ISO 8601 timestamp when event occurred"\n },\n "_event_id": {\n "type": "string",\n "description": "Unique event identifier (ULID)"\n },\n "_event_name": {\n "type": "string",\n "description": "Event name from catalog"\n },\n "_event_version": {\n "type": "string",\n "description": "Event payload version (MAJOR.MINOR)"\n },\n "_event_source": {\n "type": "string",\n "description": "Source that triggered the event"\n },\n "reading_value": {\n "type": "number",\n "description": "The meter reading value"\n },\n "reading_date": {\n "type": "string",\n "format": "date-time",\n "description": "ISO 8601 timestamp when reading was taken"\n },\n "read_by": {\n "type": "string",\n "description": "Name or identifier of who submitted the reading"\n },\n "reason": {\n "type": "string",\n "enum": ["regular", "move-in", "move-out", "supplier-change", "correction", "final"],\n "description": "Reason for the meter reading"\n },\n "direction": {\n "type": "string",\n "enum": ["feed-in", "feed-out"],\n "description": "Direction of energy flow"\n },\n "source": {\n "type": "string",\n "enum": ["portal", "360", "api", "automation"],\n "description": "Source system where reading was submitted"\n },\n "meter_id": {\n "type": "string",\n "format": "uuid",\n "description": "Entity ID of the meter"\n },\n "counter_id": {\n "type": "string",\n "format": "uuid",\n "description": "Entity ID of the meter counter"\n },\n "meter_number": {\n "type": "string",\n "description": "Human-readable meter number"\n },\n "obis_number": {\n "type": "string",\n "description": "OBIS code of the counter"\n },\n "unit": {\n "type": "string",\n "description": "Unit of measurement (e.g., kWh, m3)"\n },\n "customer_id": {\n "type": "string",\n "format": "uuid",\n "description": "Entity ID of the customer"\n },\n "contract_id": {\n "type": "string",\n "format": "uuid",\n "description": "Entity ID of the contract"\n },\n "user_id": {\n "type": "string",\n "description": "ID of the user who submitted the reading"\n },\n "user_email": {\n "type": "string",\n "format": "email",\n "description": "Email of the user who submitted the reading"\n }\n },\n "required": ["_org_id", "_event_time", "_event_id", "_event_name", "_event_version", "_event_source", "reading_value", "reading_date", "read_by", "reason", "direction", "source", "meter_id", "counter_id", "meter_number", "obis_number", "unit", "customer_id", "contract_id"]\n}\n```\n\n</details>\n\n---\n\n### `getEventExample`\n\nGenerate a sample event payload based on the event\'s JSON Schema. Pass an\noptional `Epilot-Event-Version` header to generate the example for a\nspecific version; when omitted, the event\'s latest versio\n\n`GET /v1/events/{event_name}/example`\n\n```ts\nconst { data } = await client.getEventExample({\n event_name: \'example\',\n Epilot-Event-Version: \'example\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{}\n```\n\n</details>\n\n---\n\n### `listEventVersions`\n\nList every known version of an event, along with the `latest`\nand the set of currently `active` versions. See \xA73.2 of the\nEvent Payload Versioning RFC.\n\n`GET /v1/events/{event_name}/versions`\n\n```ts\nconst { data } = await client.listEventVersions({\n event_name: \'example\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "event_name": "MeterReadingAdded",\n "latest": "1.0",\n "versions": [\n {\n "version": "1.0",\n "released_at": "2025-11-15",\n "change_summary": "string",\n "change_notes": "string",\n "changes": [\n {\n "field": "reading",\n "op": "added",\n "type_old": "string",\n "type_new": "string"\n }\n ]\n }\n ]\n}\n```\n\n</details>\n\n---\n\n### `searchEventHistory`\n\nPaginated history of events\n\n`POST /v1/events/{event_name}:history`\n\n```ts\nconst { data } = await client.searchEventHistory(\n {\n event_name: \'example\',\n },\n {\n limit: 10,\n cursor: {\n event_time: \'2025-10-31 12:34:56\',\n event_id: \'evt_1234567890abcdef\'\n },\n timestamp: {\n from: \'2025-10-01T00:00:00Z\',\n to: \'2025-10-31T23:59:59Z\'\n },\n event_id: \'evt_1234567890abcdef\'\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "results": [\n {\n "_org_id": "org_123456",\n "_event_time": "2024-01-01T12:00:00Z",\n "_event_id": "01FZ4Z5FZ5FZ5FZ5FZ5FZ5FZ5F",\n "_event_name": "MeterReading",\n "_event_version": "1.0",\n "_event_source": "api",\n "_trigger_source_type": "api",\n "_trigger_source": "user_123456",\n "reading_value": 123.45,\n "reading_date": "2024-01-01T11:59:00Z",\n "read_by": "John Doe",\n "reason": "regular",\n "direction": "feed-out",\n "source": "portal",\n "meter_id": "550e8400-e29b-41d4-a716-446655440000",\n "counter_id": "660e8400-e29b-41d4-a716-446655440000",\n "meter_number": "MT123456789",\n "obis_number": "1-0:1.8.0",\n "unit": "kWh",\n "customer_id": "770e8400-e29b-41d4-a716-446655440000",\n "contract_id": "880e8400-e29b-41d4-a716-446655440000"\n }\n ],\n "next_cursor": {\n "event_time": "2025-10-31T12:34:56Z",\n "event_id": "evt_1234567890abcdef"\n }\n}\n```\n\n</details>\n\n---\n\n### `searchEventHistoryV2`\n\nPaginated history of events with projected/lightweight payload (v2).\n\n`POST /v2/events/{event_name}:history`\n\n```ts\nconst { data } = await client.searchEventHistoryV2(\n {\n event_name: \'example\',\n },\n {\n limit: 10,\n cursor: {\n event_time: \'2025-10-31 12:34:56\',\n event_id: \'evt_1234567890abcdef\'\n },\n timestamp: {\n from: \'2025-10-01T00:00:00Z\',\n to: \'2025-10-31T23:59:59Z\'\n },\n event_id: \'evt_1234567890abcdef\',\n fields: [\'_id\', \'_title\', \'first_name\', \'account\', \'!account.*._files\', \'**._product\']\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "results": [\n {\n "_org_id": "string",\n "_event_time": "1970-01-01T00:00:00.000Z",\n "_event_id": "string",\n "_event_name": "string",\n "_event_version": "1.0",\n "_event_source": "string",\n "_trigger_source_type": "api",\n "_trigger_source": "string",\n "_ack_id": "string"\n }\n ],\n "next_cursor": {\n "event_time": "2025-10-31T12:34:56Z",\n "event_id": "evt_1234567890abcdef"\n }\n}\n```\n\n</details>\n\n---\n\n### `getHistoricalEvent`\n\nFetch a single historical event by id with full hydration\n\n`GET /v2/events/{event_name}/history/{event_id}`\n\n```ts\nconst { data } = await client.getHistoricalEvent({\n event_name: \'example\',\n event_id: \'example\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "_org_id": "org_123456",\n "_event_time": "2024-01-01T12:00:00Z",\n "_event_id": "01FZ4Z5FZ5FZ5FZ5FZ5FZ5FZ5F",\n "_event_name": "MeterReading",\n "_event_version": "1.0",\n "_event_source": "api",\n "_trigger_source_type": "api",\n "_trigger_source": "user_123456",\n "reading_value": 123.45,\n "reading_date": "2024-01-01T11:59:00Z",\n "read_by": "John Doe",\n "reason": "regular",\n "direction": "feed-out",\n "source": "portal",\n "meter_id": "550e8400-e29b-41d4-a716-446655440000",\n "counter_id": "660e8400-e29b-41d4-a716-446655440000",\n "meter_number": "MT123456789",\n "obis_number": "1-0:1.8.0",\n "unit": "kWh",\n "customer_id": "770e8400-e29b-41d4-a716-446655440000",\n "contract_id": "880e8400-e29b-41d4-a716-446655440000"\n}\n```\n\n</details>\n\n---\n\n### `triggerEvent`\n\nExplicitly trigger an event by providing input field values and an optional entity seed\nfor graph hydration. The event must be enabled for the organization.\n\n`POST /v1/events/{event_name}:trigger`\n\n```ts\nconst { data } = await client.triggerEvent(\n {\n event_name: \'example\',\n },\n {\n seed: {\n entity_id: \'3fa85f64-5717-4562-b3fc-2c963f66afa6\',\n node_id: \'ticket\'\n },\n _trigger_source_type: \'automation\',\n _trigger_source: \'execution-id/action-id\'\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "success": true,\n "event_id": "string",\n "event_bridge_event_id": "string"\n}\n```\n\n</details>\n\n---\n\n## Schemas\n\n### `EventConfigBase`\n\nBase properties shared between EventConfig and UpdateEventPayload\n\n```ts\ntype EventConfigBase = {\n event_name?: string\n event_title?: string\n event_description?: string\n event_version?: string\n event_status?: "active" | "deprecated" | "draft" | "disabled"\n event_tags?: string[]\n schema_fields?: Record<string, {\n json_schema: object\n required?: boolean\n graph_source?: string\n } | {\n entity_schema: string\n required?: boolean\n } | {\n items: {\n entity_id: { ... }\n filename?: { ... }\n mime_type?: { ... }\n size_bytes?: { ... }\n s3ref?: { ... }\n version_index: { ... }\n readable_size?: { ... }\n }\n required?: boolean\n }>\n entity_graph?: {\n nodes: Array<{\n id: { ... }\n schema: { ... }\n cardinality?: { ... }\n fields?: { ... }\n }>\n edges: Array<{\n from: { ... }\n to: { ... }\n }>\n }\n entity_operation?: {\n operation: "createEntity" | "updateEntity" | "deleteEntity"[]\n schema: string[]\n attribute?: string[]\n purpose?: string[]\n purpose_filters?: Array<{\n id: { ... }\n display_name: { ... }\n }>\n }\n enabled?: boolean\n auto_trigger?: boolean\n automation_trigger?: boolean\n api_trigger?: boolean\n automation_trigger_only?: boolean\n automation_trigger_seed_node?: string\n event_origin?: "builtin" | "custom"\n mapping?: {\n mode: "guided" | "jsonata"\n jsonata?: string\n }\n lineage?: {\n base_event_name: string\n base_event_version: string\n }\n success_criteria?: Array<{\n entity_schema: string\n attribute: string\n }>\n}\n```\n\n### `EventConfig`\n\nEvent configuration with required fields\n\n```ts\ntype EventConfig = {\n event_name: string\n event_title?: string\n event_description?: string\n event_version: string\n event_status?: "active" | "deprecated" | "draft" | "disabled"\n event_tags?: string[]\n schema_fields: Record<string, {\n json_schema: object\n required?: boolean\n graph_source?: string\n } | {\n entity_schema: string\n required?: boolean\n } | {\n items: {\n entity_id: { ... }\n filename?: { ... }\n mime_type?: { ... }\n size_bytes?: { ... }\n s3ref?: { ... }\n version_index: { ... }\n readable_size?: { ... }\n }\n required?: boolean\n }>\n entity_graph?: {\n nodes: Array<{\n id: { ... }\n schema: { ... }\n cardinality?: { ... }\n fields?: { ... }\n }>\n edges: Array<{\n from: { ... }\n to: { ... }\n }>\n }\n entity_operation?: {\n operation: "createEntity" | "updateEntity" | "deleteEntity"[]\n schema: string[]\n attribute?: string[]\n purpose?: string[]\n purpose_filters?: Array<{\n id: { ... }\n display_name: { ... }\n }>\n }\n enabled?: boolean\n auto_trigger?: boolean\n automation_trigger?: boolean\n api_trigger?: boolean\n automation_trigger_only?: boolean\n automation_trigger_seed_node?: string\n event_origin?: "builtin" | "custom"\n mapping?: {\n mode: "guided" | "jsonata"\n jsonata?: string\n }\n lineage?: {\n base_event_name: string\n base_event_version: string\n }\n success_criteria?: Array<{\n entity_schema: string\n attribute: string\n }>\n}\n```\n\n### `CreateCustomEventPayload`\n\nComplete immutable custom-event v1.0 definition projected from a required entity graph. Publication is a separate conditional action.\n\n```ts\ntype CreateCustomEventPayload = {\n event_name: string\n event_title: string\n event_description?: string\n event_tags?: string[]\n schema_fields: Record<string, {\n json_schema: object\n required?: boolean\n graph_source?: string\n } | {\n entity_schema: string\n required?: boolean\n }>\n entity_graph: {\n nodes: Array<{\n id: { ... }\n schema: { ... }\n cardinality?: { ... }\n fields?: { ... }\n }>\n edges: Array<{\n from: { ... }\n to: { ... }\n }>\n }\n entity_operation?: {\n operation: "createEntity" | "updateEntity" | "deleteEntity"[]\n schema: string[]\n attribute?: string[]\n purpose?: string[]\n purpose_filters?: Array<{\n id: { ... }\n display_name: { ... }\n }>\n }\n automation_trigger?: boolean\n api_trigger?: boolean\n automation_trigger_only?: boolean\n automation_trigger_seed_node?: string\n mapping?: {\n mode: "guided" | "jsonata"\n jsonata?: string\n }\n lineage?: {\n base_event_name: string\n base_event_version: string\n }\n example?: Record<string, unknown>\n}\n```\n\n### `EventMapping`\n\nGuided mappings use schema_fields graph_source expressions; raw mode evaluates one JSONata object transform.\n\n```ts\ntype EventMapping = {\n mode: "guided" | "jsonata"\n jsonata?: string\n}\n```\n\n### `CustomEventLineage`\n\nOptional catalog lineage to a separately named base event. Built-in inheritance is validated against this exact registered version; its trigger restrictions cannot be removed or replaced. It does not replace the base event.\n\n```ts\ntype CustomEventLineage = {\n base_event_name: string\n base_event_version: string\n}\n```\n\n### `PurposeFilterSnapshot`\n\n```ts\ntype PurposeFilterSnapshot = {\n id: string\n display_name: string\n}\n```\n\n### `PublishCustomEventPayload`\n\n```ts\ntype PublishCustomEventPayload = {\n enabled?: boolean\n auto_trigger?: boolean\n base_auto_trigger_enabled?: boolean\n}\n```\n\n### `ValidationIssue`\n\n```ts\ntype ValidationIssue = {\n path: string\n message: string\n}\n```\n\n### `PreviewEventResponse`\n\n```ts\ntype PreviewEventResponse = {\n payload: Record<string, unknown>\n errors: Array<{\n path: string\n message: string\n }>\n}\n```\n\n### `UpdateEventPayload`\n\nMutable org activation overlay. Immutable event definition fields are not accepted.\n\n```ts\ntype UpdateEventPayload = {\n enabled?: boolean\n auto_trigger?: boolean\n success_criteria?: Array<{\n entity_schema: string\n attribute: string\n }>\n}\n```\n\n### `PrimitiveField`\n\nA primitive JSON Schema field definition\n\n```ts\ntype PrimitiveField = {\n json_schema: object\n required?: boolean\n graph_source?: string\n}\n```\n\n### `ContextEntity`\n\n```ts\ntype ContextEntity = {\n entity_schema: string\n required?: boolean\n}\n```\n\n### `AttachmentField`\n\nA schema field representing file attachments associated with the event.\nPresent in schema_fields for events tagged with "attachment".\n\n\n```ts\ntype AttachmentField = {\n items: {\n entity_id: string // uuid\n filename?: string\n mime_type?: string\n size_bytes?: number\n s3ref?: {\n bucket: { ... }\n key: { ... }\n }\n version_index: number\n readable_size?: string\n }\n required?: boolean\n}\n```\n\n### `CustomSchemaField`\n\nCustom v1 fields support graph-projected JSON Schema values and context entities; attachment semantics are built-in-only.\n\n```ts\ntype CustomSchemaField = {\n json_schema: object\n required?: boolean\n graph_source?: string\n} | {\n entity_schema: string\n required?: boolean\n}\n```\n\n### `SchemaField`\n\n```ts\ntype SchemaField = {\n json_schema: object\n required?: boolean\n graph_source?: string\n} | {\n entity_schema: string\n required?: boolean\n} | {\n items: {\n entity_id: string // uuid\n filename?: string\n mime_type?: string\n size_bytes?: number\n s3ref?: {\n bucket: { ... }\n key: { ... }\n }\n version_index: number\n readable_size?: string\n }\n required?: boolean\n}\n```\n\n### `SuccessCriterion`\n\nA single org-defined success criterion: an entity attribute that must be captured\nfor this event\'s change request to be considered complete.\n\nIdentity is the entity schema plus the attribute name \u2014 mirroring the\nEntityOperationTrigger `schema`/`attribute` vocabulary. On write (PATCH), both\n`attribut\n\n```ts\ntype SuccessCriterion = {\n entity_schema: string\n attribute: string\n}\n```\n\n### `CommonEventMetadata`\n\nCommon metadata fields present in all event payloads\n\n```ts\ntype CommonEventMetadata = object\n```\n\n### `EventJsonSchema`\n\nJSON Schema declaring the event payload structure\n\n```ts\ntype EventJsonSchema = object\n```\n\n### `InlineDowngradeStep`\n\nOne step of an event\'s inline `_downgrades` chain. Maps the current-version payload to the previous version via a JSONata expression. Stamped by Event Catalog at publish time; executed by consumers during walk-back, never by EC itself.\n\n```ts\ntype InlineDowngradeStep = {\n to: string\n jsonata: string\n}\n```\n\n### `Event`\n\nAn event instance in the event history\n\n```ts\ntype Event = {\n _org_id: string\n _event_time: string // date-time\n _event_id: string\n _event_name: string\n _event_version: string\n _event_source: string\n _trigger_source_type?: string\n _trigger_source?: string\n _ack_id?: string\n _downgrades?: Array<{\n to: string\n jsonata: string\n }>\n _automation_chain?: string[]\n}\n```\n\n### `EventSummary`\n\nA lightweight event summary returned by the v2 history endpoint.\n\nIncludes the standard `_*` metadata fields plus a projected subset of the\nevent payload. Hydrated entity objects (values carrying `_schema` or `_id`)\n\u2014 and arrays of such objects \u2014 are reduced to reference stubs\n`{_schema, _id, _title\n\n```ts\ntype EventSummary = {\n _org_id: string\n _event_time: string // date-time\n _event_id: string\n _event_name: string\n _event_version: string\n _event_source: string\n _trigger_source_type?: string\n _trigger_source?: string\n _ack_id?: string\n}\n```\n\n### `GraphDefinition`\n\nEntity graph definition for resolving related entities\n\n```ts\ntype GraphDefinition = {\n nodes: Array<{\n id: string\n schema: string\n cardinality?: "one" | "many"\n fields?: object\n }>\n edges: Array<{\n from: string\n to: string\n }>\n}\n```\n\n### `GraphNode`\n\nA node in the entity graph\n\n```ts\ntype GraphNode = {\n id: string\n schema: string\n cardinality?: "one" | "many"\n fields?: object\n}\n```\n\n### `GraphEdge`\n\nAn edge connecting two nodes in the graph\n\n```ts\ntype GraphEdge = {\n from: string\n to: string\n}\n```\n\n### `EntityOperationTrigger`\n\nConfiguration for triggering an event based on entity operations.\n\nWhen an entity operation matches the configured criteria, the event will be triggered.\n- On createEntity: the attribute must be present in the entity payload\n- On updateEntity: the attribute must be in diff.added, diff.updated, or di\n\n```ts\ntype EntityOperationTrigger = {\n operation: "createEntity" | "updateEntity" | "deleteEntity"[]\n schema: string[]\n attribute?: string[]\n purpose?: string[]\n purpose_filters?: Array<{\n id: string\n display_name: string\n }>\n}\n```\n\n### `SearchOptions`\n\n```ts\ntype SearchOptions = {\n limit?: number\n cursor?: {\n event_time?: string\n event_id?: string\n }\n timestamp?: {\n from?: string // date-time\n to?: string // date-time\n }\n event_id?: string\n}\n```\n\n### `SearchOptionsV2`\n\nSearch options for the v2 history endpoint.\n\nExtends `SearchOptions` with an optional `fields` projection. When `fields`\nis omitted, the response includes all `_*` metadata plus all scalar payload\nfields (and primitive arrays / empty objects/arrays) after entity stripping.\nWhen `fields` is provided,\n\n```ts\ntype SearchOptionsV2 = {\n limit?: number\n cursor?: {\n event_time?: string\n event_id?: string\n }\n timestamp?: {\n from?: string // date-time\n to?: string // date-time\n }\n event_id?: string\n fields?: string[]\n}\n```\n\n### `FieldsParam`\n\nList of entity fields to include or exclude in the response\n\nUse ! to exclude fields, e.g. `!_id` to exclude the `_id` field.\n\nGlobbing and globstart (**) is supported for nested fields.\n\n\n```ts\ntype FieldsParam = string[]\n```\n\n### `TriggerEventPayload`\n\nPayload for explicitly triggering an event via API\n\n```ts\ntype TriggerEventPayload = {\n seed?: {\n entity_id: string // uuid\n node_id: string\n }\n fields?: Record<string, unknown>\n skip_hydration?: string[]\n _trigger_source_type?: string\n _trigger_source?: string\n _automation_chain?: string[]\n}\n```\n\n### `TriggerEventResponse`\n\nResponse from triggering an event\n\n```ts\ntype TriggerEventResponse = {\n success: boolean\n event_id: string\n event_bridge_event_id?: string\n}\n```\n\n### `EventAttachment`\n\nA file attachment associated with an event\n\n```ts\ntype EventAttachment = {\n entity_id: string // uuid\n filename?: string\n mime_type?: string\n size_bytes?: number\n s3ref?: {\n bucket: string\n key: string\n }\n version_index: number\n readable_size?: string\n}\n```\n\n### `FieldChange`\n\nA field-level change descriptor. Powers the declarative half of the\nversion DSL.\n\n\n```ts\ntype FieldChange = {\n field: string\n op: "added" | "removed" | "type-changed"\n type_old?: string\n type_new?: string\n}\n```\n\n### `VersionMeta`\n\nOne entry of an event\'s version timeline.\n\n```ts\ntype VersionMeta = {\n version: string\n released_at: string\n change_summary: string\n change_notes?: string\n changes: Array<{\n field: string\n op: "added" | "removed" | "type-changed"\n type_old?: string\n type_new?: string\n }>\n}\n```\n\n### `EventVersionRegistrySummary`\n\nSummary of an event\'s version timeline returned by\n`GET /v1/events/{event_name}/versions`.\n\n\n```ts\ntype EventVersionRegistrySummary = {\n event_name: string\n latest: string\n versions: Array<{\n version: string\n released_at: string\n change_summary: string\n change_notes?: string\n changes: Array<{\n field: { ... }\n op: { ... }\n type_old?: { ... }\n type_new?: { ... }\n }>\n }>\n}\n```\n';
5
- export {
6
- event_catalog_default as default
7
- };
@@ -1,7 +0,0 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true});require('./chunk-NJK5F5TF.cjs');
2
-
3
- // src/docs/event-catalog.json
4
- var event_catalog_default = '# Event Catalog API\n\n- **Base URL:** `https://event-catalog.sls.epilot.io`\n- **Full API Docs:** [https://docs.epilot.io/api/event-catalog](https://docs.epilot.io/api/event-catalog)\n\n## Usage\n\n```ts\nimport { epilot } from \'@epilot/sdk\'\n\nepilot.authorize(() => \'<token>\')\nconst { data } = await epilot.eventCatalog.listEvents(...)\n```\n\n### Tree-shakeable import\n\n```ts\nimport { getClient, authorize } from \'@epilot/sdk/event-catalog\'\n\nconst eventCatalogClient = getClient()\nauthorize(eventCatalogClient, () => \'<token>\')\nconst { data } = await eventCatalogClient.listEvents(...)\n```\n\n## Operations\n\n**Event Catalog**\n- [`listEvents`](#listevents)\n- [`createCustomEvent`](#createcustomevent)\n- [`getEvent`](#getevent)\n- [`patchEvent`](#patchevent)\n- [`replaceCustomEventDraft`](#replacecustomeventdraft)\n- [`deprecateCustomEvent`](#deprecatecustomevent)\n- [`previewCustomEvent`](#previewcustomevent)\n- [`publishCustomEventDefinition`](#publishcustomeventdefinition)\n- [`getEventJSONSchema`](#geteventjsonschema)\n- [`getEventExample`](#geteventexample)\n- [`listEventVersions`](#listeventversions)\n- [`searchEventHistory`](#searcheventhistory)\n- [`searchEventHistoryV2`](#searcheventhistoryv2)\n- [`getHistoricalEvent`](#gethistoricalevent)\n- [`triggerEvent`](#triggerevent)\n\n**Schemas**\n- [`EventConfigBase`](#eventconfigbase)\n- [`EventConfig`](#eventconfig)\n- [`CreateCustomEventPayload`](#createcustomeventpayload)\n- [`EventMapping`](#eventmapping)\n- [`CustomEventLineage`](#customeventlineage)\n- [`PurposeFilterSnapshot`](#purposefiltersnapshot)\n- [`PublishCustomEventPayload`](#publishcustomeventpayload)\n- [`ValidationIssue`](#validationissue)\n- [`PreviewEventResponse`](#previeweventresponse)\n- [`UpdateEventPayload`](#updateeventpayload)\n- [`PrimitiveField`](#primitivefield)\n- [`ContextEntity`](#contextentity)\n- [`AttachmentField`](#attachmentfield)\n- [`CustomSchemaField`](#customschemafield)\n- [`SchemaField`](#schemafield)\n- [`SuccessCriterion`](#successcriterion)\n- [`CommonEventMetadata`](#commoneventmetadata)\n- [`EventJsonSchema`](#eventjsonschema)\n- [`InlineDowngradeStep`](#inlinedowngradestep)\n- [`Event`](#event)\n- [`EventSummary`](#eventsummary)\n- [`GraphDefinition`](#graphdefinition)\n- [`GraphNode`](#graphnode)\n- [`GraphEdge`](#graphedge)\n- [`EntityOperationTrigger`](#entityoperationtrigger)\n- [`SearchOptions`](#searchoptions)\n- [`SearchOptionsV2`](#searchoptionsv2)\n- [`FieldsParam`](#fieldsparam)\n- [`TriggerEventPayload`](#triggereventpayload)\n- [`TriggerEventResponse`](#triggereventresponse)\n- [`EventAttachment`](#eventattachment)\n- [`FieldChange`](#fieldchange)\n- [`VersionMeta`](#versionmeta)\n- [`EventVersionRegistrySummary`](#eventversionregistrysummary)\n\n### `listEvents`\n\nRetrieve list of available business events\n\n`GET /v1/events`\n\n```ts\nconst { data } = await client.listEvents()\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "results": [\n {\n "event_name": "AddMeterReading",\n "event_title": "Add Meter Reading",\n "event_description": "Triggered when a new meter reading is added",\n "event_version": "1.0",\n "event_status": "active",\n "event_tags": ["builtin", "metering", "erp"],\n "schema_fields": {},\n "entity_graph": {\n "nodes": [\n {\n "id": "contact",\n "schema": "contact",\n "cardinality": "one",\n "fields": ["_id", "_title", "first_name", "account", "!account.*._files", "**._product"]\n }\n ],\n "edges": [\n {\n "from": "contact",\n "to": "billing_account"\n }\n ]\n },\n "entity_operation": {\n "operation": ["createEntity", "updateEntity"],\n "schema": ["contact", "contract", "order"],\n "attribute": ["email", "phone", "status"],\n "purpose": ["K\xFCndigung", "Umzug/Auszug"],\n "purpose_filters": [\n {\n "id": "string",\n "display_name": "string"\n }\n ]\n },\n "enabled": true,\n "auto_trigger": true,\n "automation_trigger": true,\n "api_trigger": true,\n "automation_trigger_only": true,\n "automation_trigger_seed_node": "ticket",\n "event_origin": "builtin",\n "mapping": {\n "mode": "guided",\n "jsonata": "string"\n },\n "lineage": {\n "base_event_name": "string",\n "base_event_version": "string"\n },\n "success_criteria": [\n {\n "entity_schema": "contract",\n "attribute": "installment_amount"\n },\n {\n "entity_schema": "billing_account",\n "attribute": "due_date"\n }\n ]\n }\n ]\n}\n```\n\n</details>\n\n---\n\n### `createCustomEvent`\n\nReserve an org-scoped custom event name and persist its immutable v1.0 draft definition. Custom events are always projected from an entity graph: entity_graph is required and, in guided mapping mode, \n\n`POST /v1/events`\n\n```ts\nconst { data } = await client.createCustomEvent(\n null,\n {\n event_name: \'string\',\n event_title: \'string\',\n event_description: \'string\',\n event_tags: [\'string\'],\n schema_fields: {},\n entity_graph: {\n nodes: [\n {\n id: \'contact\',\n schema: \'contact\',\n cardinality: \'one\',\n fields: [\'_id\', \'_title\', \'first_name\', \'account\', \'!account.*._files\', \'**._product\']\n }\n ],\n edges: [\n {\n from: \'contact\',\n to: \'billing_account\'\n }\n ]\n },\n entity_operation: {\n operation: [\'createEntity\', \'updateEntity\'],\n schema: [\'contact\', \'contract\', \'order\'],\n attribute: [\'email\', \'phone\', \'status\'],\n purpose: [\'K\xFCndigung\', \'Umzug/Auszug\'],\n purpose_filters: [\n {\n id: \'string\',\n display_name: \'string\'\n }\n ]\n },\n automation_trigger: true,\n api_trigger: true,\n automation_trigger_only: false,\n automation_trigger_seed_node: \'string\',\n mapping: {\n mode: \'guided\',\n jsonata: \'string\'\n },\n lineage: {\n base_event_name: \'string\',\n base_event_version: \'string\'\n },\n example: {}\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "event_name": "AddMeterReading",\n "event_title": "Add Meter Reading",\n "event_description": "Triggered when a new meter reading is added",\n "event_version": "1.0",\n "event_status": "active",\n "event_tags": ["builtin", "metering", "erp"],\n "schema_fields": {},\n "entity_graph": {\n "nodes": [\n {\n "id": "contact",\n "schema": "contact",\n "cardinality": "one",\n "fields": ["_id", "_title", "first_name", "account", "!account.*._files", "**._product"]\n }\n ],\n "edges": [\n {\n "from": "contact",\n "to": "billing_account"\n }\n ]\n },\n "entity_operation": {\n "operation": ["createEntity", "updateEntity"],\n "schema": ["contact", "contract", "order"],\n "attribute": ["email", "phone", "status"],\n "purpose": ["K\xFCndigung", "Umzug/Auszug"],\n "purpose_filters": [\n {\n "id": "string",\n "display_name": "string"\n }\n ]\n },\n "enabled": true,\n "auto_trigger": true,\n "automation_trigger": true,\n "api_trigger": true,\n "automation_trigger_only": true,\n "automation_trigger_seed_node": "ticket",\n "event_origin": "builtin",\n "mapping": {\n "mode": "guided",\n "jsonata": "string"\n },\n "lineage": {\n "base_event_name": "string",\n "base_event_version": "string"\n },\n "success_criteria": [\n {\n "entity_schema": "contract",\n "attribute": "installment_amount"\n },\n {\n "entity_schema": "billing_account",\n "attribute": "due_date"\n }\n ]\n}\n```\n\n</details>\n\n---\n\n### `getEvent`\n\nRetrieve the configuration of a specific business event\n\n`GET /v1/events/{event_name}`\n\n```ts\nconst { data } = await client.getEvent({\n event_name: \'example\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "event_name": "AddMeterReading",\n "event_title": "Add Meter Reading",\n "event_description": "Triggered when a new meter reading is added",\n "event_version": "1.0",\n "event_status": "active",\n "event_tags": ["builtin", "metering", "erp"],\n "schema_fields": {},\n "entity_graph": {\n "nodes": [\n {\n "id": "contact",\n "schema": "contact",\n "cardinality": "one",\n "fields": ["_id", "_title", "first_name", "account", "!account.*._files", "**._product"]\n }\n ],\n "edges": [\n {\n "from": "contact",\n "to": "billing_account"\n }\n ]\n },\n "entity_operation": {\n "operation": ["createEntity", "updateEntity"],\n "schema": ["contact", "contract", "order"],\n "attribute": ["email", "phone", "status"],\n "purpose": ["K\xFCndigung", "Umzug/Auszug"],\n "purpose_filters": [\n {\n "id": "string",\n "display_name": "string"\n }\n ]\n },\n "enabled": true,\n "auto_trigger": true,\n "automation_trigger": true,\n "api_trigger": true,\n "automation_trigger_only": true,\n "automation_trigger_seed_node": "ticket",\n "event_origin": "builtin",\n "mapping": {\n "mode": "guided",\n "jsonata": "string"\n },\n "lineage": {\n "base_event_name": "string",\n "base_event_version": "string"\n },\n "success_criteria": [\n {\n "entity_schema": "contract",\n "attribute": "installment_amount"\n },\n {\n "entity_schema": "billing_account",\n "attribute": "due_date"\n }\n ]\n}\n```\n\n</details>\n\n---\n\n### `patchEvent`\n\nUpdate the configuration of a specific business event for the organization\n\n`PATCH /v1/events/{event_name}`\n\n```ts\nconst { data } = await client.patchEvent(\n {\n event_name: \'example\',\n },\n {\n enabled: true,\n auto_trigger: true,\n success_criteria: [\n {\n entity_schema: \'contract\',\n attribute: \'installment_amount\'\n }\n ]\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "event_name": "AddMeterReading",\n "event_title": "Add Meter Reading",\n "event_description": "Triggered when a new meter reading is added",\n "event_version": "1.0",\n "event_status": "active",\n "event_tags": ["builtin", "metering", "erp"],\n "schema_fields": {},\n "entity_graph": {\n "nodes": [\n {\n "id": "contact",\n "schema": "contact",\n "cardinality": "one",\n "fields": ["_id", "_title", "first_name", "account", "!account.*._files", "**._product"]\n }\n ],\n "edges": [\n {\n "from": "contact",\n "to": "billing_account"\n }\n ]\n },\n "entity_operation": {\n "operation": ["createEntity", "updateEntity"],\n "schema": ["contact", "contract", "order"],\n "attribute": ["email", "phone", "status"],\n "purpose": ["K\xFCndigung", "Umzug/Auszug"],\n "purpose_filters": [\n {\n "id": "string",\n "display_name": "string"\n }\n ]\n },\n "enabled": true,\n "auto_trigger": true,\n "automation_trigger": true,\n "api_trigger": true,\n "automation_trigger_only": true,\n "automation_trigger_seed_node": "ticket",\n "event_origin": "builtin",\n "mapping": {\n "mode": "guided",\n "jsonata": "string"\n },\n "lineage": {\n "base_event_name": "string",\n "base_event_version": "string"\n },\n "success_criteria": [\n {\n "entity_schema": "contract",\n "attribute": "installment_amount"\n },\n {\n "entity_schema": "billing_account",\n "attribute": "due_date"\n }\n ]\n}\n```\n\n</details>\n\n---\n\n### `replaceCustomEventDraft`\n\nReplace the complete v1.0 definition of an org-scoped custom event while it is still an\nunpublished draft. Drafts have no consumers, so their definition is not yet immutable;\nthe event name is the ide\n\n`PUT /v1/events/{event_name}`\n\n```ts\nconst { data } = await client.replaceCustomEventDraft(\n {\n event_name: \'example\',\n },\n {\n event_name: \'string\',\n event_title: \'string\',\n event_description: \'string\',\n event_tags: [\'string\'],\n schema_fields: {},\n entity_graph: {\n nodes: [\n {\n id: \'contact\',\n schema: \'contact\',\n cardinality: \'one\',\n fields: [\'_id\', \'_title\', \'first_name\', \'account\', \'!account.*._files\', \'**._product\']\n }\n ],\n edges: [\n {\n from: \'contact\',\n to: \'billing_account\'\n }\n ]\n },\n entity_operation: {\n operation: [\'createEntity\', \'updateEntity\'],\n schema: [\'contact\', \'contract\', \'order\'],\n attribute: [\'email\', \'phone\', \'status\'],\n purpose: [\'K\xFCndigung\', \'Umzug/Auszug\'],\n purpose_filters: [\n {\n id: \'string\',\n display_name: \'string\'\n }\n ]\n },\n automation_trigger: true,\n api_trigger: true,\n automation_trigger_only: false,\n automation_trigger_seed_node: \'string\',\n mapping: {\n mode: \'guided\',\n jsonata: \'string\'\n },\n lineage: {\n base_event_name: \'string\',\n base_event_version: \'string\'\n },\n example: {}\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "event_name": "AddMeterReading",\n "event_title": "Add Meter Reading",\n "event_description": "Triggered when a new meter reading is added",\n "event_version": "1.0",\n "event_status": "active",\n "event_tags": ["builtin", "metering", "erp"],\n "schema_fields": {},\n "entity_graph": {\n "nodes": [\n {\n "id": "contact",\n "schema": "contact",\n "cardinality": "one",\n "fields": ["_id", "_title", "first_name", "account", "!account.*._files", "**._product"]\n }\n ],\n "edges": [\n {\n "from": "contact",\n "to": "billing_account"\n }\n ]\n },\n "entity_operation": {\n "operation": ["createEntity", "updateEntity"],\n "schema": ["contact", "contract", "order"],\n "attribute": ["email", "phone", "status"],\n "purpose": ["K\xFCndigung", "Umzug/Auszug"],\n "purpose_filters": [\n {\n "id": "string",\n "display_name": "string"\n }\n ]\n },\n "enabled": true,\n "auto_trigger": true,\n "automation_trigger": true,\n "api_trigger": true,\n "automation_trigger_only": true,\n "automation_trigger_seed_node": "ticket",\n "event_origin": "builtin",\n "mapping": {\n "mode": "guided",\n "jsonata": "string"\n },\n "lineage": {\n "base_event_name": "string",\n "base_event_version": "string"\n },\n "success_criteria": [\n {\n "entity_schema": "contract",\n "attribute": "installment_amount"\n },\n {\n "entity_schema": "billing_account",\n "attribute": "due_date"\n }\n ]\n}\n```\n\n</details>\n\n---\n\n### `deprecateCustomEvent`\n\nSoft-deprecate an org-scoped custom event. Definitions and v1.0 history remain readable.\n\n`DELETE /v1/events/{event_name}`\n\n```ts\nconst { data } = await client.deprecateCustomEvent({\n event_name: \'example\',\n})\n```\n\n---\n\n### `previewCustomEvent`\n\nAssemble and fully validate a persisted custom-event draft without publishing it.\n\n`POST /v1/events/{event_name}:preview`\n\n```ts\nconst { data } = await client.previewCustomEvent(\n {\n event_name: \'example\',\n },\n {\n seed: {\n entity_id: \'3fa85f64-5717-4562-b3fc-2c963f66afa6\',\n node_id: \'ticket\'\n },\n _trigger_source_type: \'automation\',\n _trigger_source: \'execution-id/action-id\'\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "payload": {},\n "errors": [\n {\n "path": "string",\n "message": "string"\n }\n ]\n}\n```\n\n</details>\n\n---\n\n### `publishCustomEventDefinition`\n\nConditionally activate an immutable custom-event v1.0 definition.\n\n`POST /v1/events/{event_name}:publish`\n\n```ts\nconst { data } = await client.publishCustomEventDefinition(\n {\n event_name: \'example\',\n },\n {\n enabled: true,\n auto_trigger: true,\n base_auto_trigger_enabled: true\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "event_name": "AddMeterReading",\n "event_title": "Add Meter Reading",\n "event_description": "Triggered when a new meter reading is added",\n "event_version": "1.0",\n "event_status": "active",\n "event_tags": ["builtin", "metering", "erp"],\n "schema_fields": {},\n "entity_graph": {\n "nodes": [\n {\n "id": "contact",\n "schema": "contact",\n "cardinality": "one",\n "fields": ["_id", "_title", "first_name", "account", "!account.*._files", "**._product"]\n }\n ],\n "edges": [\n {\n "from": "contact",\n "to": "billing_account"\n }\n ]\n },\n "entity_operation": {\n "operation": ["createEntity", "updateEntity"],\n "schema": ["contact", "contract", "order"],\n "attribute": ["email", "phone", "status"],\n "purpose": ["K\xFCndigung", "Umzug/Auszug"],\n "purpose_filters": [\n {\n "id": "string",\n "display_name": "string"\n }\n ]\n },\n "enabled": true,\n "auto_trigger": true,\n "automation_trigger": true,\n "api_trigger": true,\n "automation_trigger_only": true,\n "automation_trigger_seed_node": "ticket",\n "event_origin": "builtin",\n "mapping": {\n "mode": "guided",\n "jsonata": "string"\n },\n "lineage": {\n "base_event_name": "string",\n "base_event_version": "string"\n },\n "success_criteria": [\n {\n "entity_schema": "contract",\n "attribute": "installment_amount"\n },\n {\n "entity_schema": "billing_account",\n "attribute": "due_date"\n }\n ]\n}\n```\n\n</details>\n\n---\n\n### `getEventJSONSchema`\n\nRetrieve the JSON Schema of a specific business event. Pass an optional\n`Epilot-Event-Version` header to retrieve a specific version\'s schema;\nwhen omitted, the event\'s latest version is returned.\n\n`GET /v1/events/{event_name}/json_schema`\n\n```ts\nconst { data } = await client.getEventJSONSchema({\n event_name: \'example\',\n Epilot-Event-Version: \'example\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "type": "object",\n "properties": {\n "_org_id": {\n "type": "string",\n "description": "epilot tenant/organization ID"\n },\n "_event_time": {\n "type": "string",\n "format": "date-time",\n "description": "ISO 8601 timestamp when event occurred"\n },\n "_event_id": {\n "type": "string",\n "description": "Unique event identifier (ULID)"\n },\n "_event_name": {\n "type": "string",\n "description": "Event name from catalog"\n },\n "_event_version": {\n "type": "string",\n "description": "Event payload version (MAJOR.MINOR)"\n },\n "_event_source": {\n "type": "string",\n "description": "Source that triggered the event"\n },\n "reading_value": {\n "type": "number",\n "description": "The meter reading value"\n },\n "reading_date": {\n "type": "string",\n "format": "date-time",\n "description": "ISO 8601 timestamp when reading was taken"\n },\n "read_by": {\n "type": "string",\n "description": "Name or identifier of who submitted the reading"\n },\n "reason": {\n "type": "string",\n "enum": ["regular", "move-in", "move-out", "supplier-change", "correction", "final"],\n "description": "Reason for the meter reading"\n },\n "direction": {\n "type": "string",\n "enum": ["feed-in", "feed-out"],\n "description": "Direction of energy flow"\n },\n "source": {\n "type": "string",\n "enum": ["portal", "360", "api", "automation"],\n "description": "Source system where reading was submitted"\n },\n "meter_id": {\n "type": "string",\n "format": "uuid",\n "description": "Entity ID of the meter"\n },\n "counter_id": {\n "type": "string",\n "format": "uuid",\n "description": "Entity ID of the meter counter"\n },\n "meter_number": {\n "type": "string",\n "description": "Human-readable meter number"\n },\n "obis_number": {\n "type": "string",\n "description": "OBIS code of the counter"\n },\n "unit": {\n "type": "string",\n "description": "Unit of measurement (e.g., kWh, m3)"\n },\n "customer_id": {\n "type": "string",\n "format": "uuid",\n "description": "Entity ID of the customer"\n },\n "contract_id": {\n "type": "string",\n "format": "uuid",\n "description": "Entity ID of the contract"\n },\n "user_id": {\n "type": "string",\n "description": "ID of the user who submitted the reading"\n },\n "user_email": {\n "type": "string",\n "format": "email",\n "description": "Email of the user who submitted the reading"\n }\n },\n "required": ["_org_id", "_event_time", "_event_id", "_event_name", "_event_version", "_event_source", "reading_value", "reading_date", "read_by", "reason", "direction", "source", "meter_id", "counter_id", "meter_number", "obis_number", "unit", "customer_id", "contract_id"]\n}\n```\n\n</details>\n\n---\n\n### `getEventExample`\n\nGenerate a sample event payload based on the event\'s JSON Schema. Pass an\noptional `Epilot-Event-Version` header to generate the example for a\nspecific version; when omitted, the event\'s latest versio\n\n`GET /v1/events/{event_name}/example`\n\n```ts\nconst { data } = await client.getEventExample({\n event_name: \'example\',\n Epilot-Event-Version: \'example\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{}\n```\n\n</details>\n\n---\n\n### `listEventVersions`\n\nList every known version of an event, along with the `latest`\nand the set of currently `active` versions. See \xA73.2 of the\nEvent Payload Versioning RFC.\n\n`GET /v1/events/{event_name}/versions`\n\n```ts\nconst { data } = await client.listEventVersions({\n event_name: \'example\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "event_name": "MeterReadingAdded",\n "latest": "1.0",\n "versions": [\n {\n "version": "1.0",\n "released_at": "2025-11-15",\n "change_summary": "string",\n "change_notes": "string",\n "changes": [\n {\n "field": "reading",\n "op": "added",\n "type_old": "string",\n "type_new": "string"\n }\n ]\n }\n ]\n}\n```\n\n</details>\n\n---\n\n### `searchEventHistory`\n\nPaginated history of events\n\n`POST /v1/events/{event_name}:history`\n\n```ts\nconst { data } = await client.searchEventHistory(\n {\n event_name: \'example\',\n },\n {\n limit: 10,\n cursor: {\n event_time: \'2025-10-31 12:34:56\',\n event_id: \'evt_1234567890abcdef\'\n },\n timestamp: {\n from: \'2025-10-01T00:00:00Z\',\n to: \'2025-10-31T23:59:59Z\'\n },\n event_id: \'evt_1234567890abcdef\'\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "results": [\n {\n "_org_id": "org_123456",\n "_event_time": "2024-01-01T12:00:00Z",\n "_event_id": "01FZ4Z5FZ5FZ5FZ5FZ5FZ5FZ5F",\n "_event_name": "MeterReading",\n "_event_version": "1.0",\n "_event_source": "api",\n "_trigger_source_type": "api",\n "_trigger_source": "user_123456",\n "reading_value": 123.45,\n "reading_date": "2024-01-01T11:59:00Z",\n "read_by": "John Doe",\n "reason": "regular",\n "direction": "feed-out",\n "source": "portal",\n "meter_id": "550e8400-e29b-41d4-a716-446655440000",\n "counter_id": "660e8400-e29b-41d4-a716-446655440000",\n "meter_number": "MT123456789",\n "obis_number": "1-0:1.8.0",\n "unit": "kWh",\n "customer_id": "770e8400-e29b-41d4-a716-446655440000",\n "contract_id": "880e8400-e29b-41d4-a716-446655440000"\n }\n ],\n "next_cursor": {\n "event_time": "2025-10-31T12:34:56Z",\n "event_id": "evt_1234567890abcdef"\n }\n}\n```\n\n</details>\n\n---\n\n### `searchEventHistoryV2`\n\nPaginated history of events with projected/lightweight payload (v2).\n\n`POST /v2/events/{event_name}:history`\n\n```ts\nconst { data } = await client.searchEventHistoryV2(\n {\n event_name: \'example\',\n },\n {\n limit: 10,\n cursor: {\n event_time: \'2025-10-31 12:34:56\',\n event_id: \'evt_1234567890abcdef\'\n },\n timestamp: {\n from: \'2025-10-01T00:00:00Z\',\n to: \'2025-10-31T23:59:59Z\'\n },\n event_id: \'evt_1234567890abcdef\',\n fields: [\'_id\', \'_title\', \'first_name\', \'account\', \'!account.*._files\', \'**._product\']\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "results": [\n {\n "_org_id": "string",\n "_event_time": "1970-01-01T00:00:00.000Z",\n "_event_id": "string",\n "_event_name": "string",\n "_event_version": "1.0",\n "_event_source": "string",\n "_trigger_source_type": "api",\n "_trigger_source": "string",\n "_ack_id": "string"\n }\n ],\n "next_cursor": {\n "event_time": "2025-10-31T12:34:56Z",\n "event_id": "evt_1234567890abcdef"\n }\n}\n```\n\n</details>\n\n---\n\n### `getHistoricalEvent`\n\nFetch a single historical event by id with full hydration\n\n`GET /v2/events/{event_name}/history/{event_id}`\n\n```ts\nconst { data } = await client.getHistoricalEvent({\n event_name: \'example\',\n event_id: \'example\',\n})\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "_org_id": "org_123456",\n "_event_time": "2024-01-01T12:00:00Z",\n "_event_id": "01FZ4Z5FZ5FZ5FZ5FZ5FZ5FZ5F",\n "_event_name": "MeterReading",\n "_event_version": "1.0",\n "_event_source": "api",\n "_trigger_source_type": "api",\n "_trigger_source": "user_123456",\n "reading_value": 123.45,\n "reading_date": "2024-01-01T11:59:00Z",\n "read_by": "John Doe",\n "reason": "regular",\n "direction": "feed-out",\n "source": "portal",\n "meter_id": "550e8400-e29b-41d4-a716-446655440000",\n "counter_id": "660e8400-e29b-41d4-a716-446655440000",\n "meter_number": "MT123456789",\n "obis_number": "1-0:1.8.0",\n "unit": "kWh",\n "customer_id": "770e8400-e29b-41d4-a716-446655440000",\n "contract_id": "880e8400-e29b-41d4-a716-446655440000"\n}\n```\n\n</details>\n\n---\n\n### `triggerEvent`\n\nExplicitly trigger an event by providing input field values and an optional entity seed\nfor graph hydration. The event must be enabled for the organization.\n\n`POST /v1/events/{event_name}:trigger`\n\n```ts\nconst { data } = await client.triggerEvent(\n {\n event_name: \'example\',\n },\n {\n seed: {\n entity_id: \'3fa85f64-5717-4562-b3fc-2c963f66afa6\',\n node_id: \'ticket\'\n },\n _trigger_source_type: \'automation\',\n _trigger_source: \'execution-id/action-id\'\n },\n)\n```\n\n<details>\n<summary>Response</summary>\n\n```json\n{\n "success": true,\n "event_id": "string",\n "event_bridge_event_id": "string"\n}\n```\n\n</details>\n\n---\n\n## Schemas\n\n### `EventConfigBase`\n\nBase properties shared between EventConfig and UpdateEventPayload\n\n```ts\ntype EventConfigBase = {\n event_name?: string\n event_title?: string\n event_description?: string\n event_version?: string\n event_status?: "active" | "deprecated" | "draft" | "disabled"\n event_tags?: string[]\n schema_fields?: Record<string, {\n json_schema: object\n required?: boolean\n graph_source?: string\n } | {\n entity_schema: string\n required?: boolean\n } | {\n items: {\n entity_id: { ... }\n filename?: { ... }\n mime_type?: { ... }\n size_bytes?: { ... }\n s3ref?: { ... }\n version_index: { ... }\n readable_size?: { ... }\n }\n required?: boolean\n }>\n entity_graph?: {\n nodes: Array<{\n id: { ... }\n schema: { ... }\n cardinality?: { ... }\n fields?: { ... }\n }>\n edges: Array<{\n from: { ... }\n to: { ... }\n }>\n }\n entity_operation?: {\n operation: "createEntity" | "updateEntity" | "deleteEntity"[]\n schema: string[]\n attribute?: string[]\n purpose?: string[]\n purpose_filters?: Array<{\n id: { ... }\n display_name: { ... }\n }>\n }\n enabled?: boolean\n auto_trigger?: boolean\n automation_trigger?: boolean\n api_trigger?: boolean\n automation_trigger_only?: boolean\n automation_trigger_seed_node?: string\n event_origin?: "builtin" | "custom"\n mapping?: {\n mode: "guided" | "jsonata"\n jsonata?: string\n }\n lineage?: {\n base_event_name: string\n base_event_version: string\n }\n success_criteria?: Array<{\n entity_schema: string\n attribute: string\n }>\n}\n```\n\n### `EventConfig`\n\nEvent configuration with required fields\n\n```ts\ntype EventConfig = {\n event_name: string\n event_title?: string\n event_description?: string\n event_version: string\n event_status?: "active" | "deprecated" | "draft" | "disabled"\n event_tags?: string[]\n schema_fields: Record<string, {\n json_schema: object\n required?: boolean\n graph_source?: string\n } | {\n entity_schema: string\n required?: boolean\n } | {\n items: {\n entity_id: { ... }\n filename?: { ... }\n mime_type?: { ... }\n size_bytes?: { ... }\n s3ref?: { ... }\n version_index: { ... }\n readable_size?: { ... }\n }\n required?: boolean\n }>\n entity_graph?: {\n nodes: Array<{\n id: { ... }\n schema: { ... }\n cardinality?: { ... }\n fields?: { ... }\n }>\n edges: Array<{\n from: { ... }\n to: { ... }\n }>\n }\n entity_operation?: {\n operation: "createEntity" | "updateEntity" | "deleteEntity"[]\n schema: string[]\n attribute?: string[]\n purpose?: string[]\n purpose_filters?: Array<{\n id: { ... }\n display_name: { ... }\n }>\n }\n enabled?: boolean\n auto_trigger?: boolean\n automation_trigger?: boolean\n api_trigger?: boolean\n automation_trigger_only?: boolean\n automation_trigger_seed_node?: string\n event_origin?: "builtin" | "custom"\n mapping?: {\n mode: "guided" | "jsonata"\n jsonata?: string\n }\n lineage?: {\n base_event_name: string\n base_event_version: string\n }\n success_criteria?: Array<{\n entity_schema: string\n attribute: string\n }>\n}\n```\n\n### `CreateCustomEventPayload`\n\nComplete immutable custom-event v1.0 definition projected from a required entity graph. Publication is a separate conditional action.\n\n```ts\ntype CreateCustomEventPayload = {\n event_name: string\n event_title: string\n event_description?: string\n event_tags?: string[]\n schema_fields: Record<string, {\n json_schema: object\n required?: boolean\n graph_source?: string\n } | {\n entity_schema: string\n required?: boolean\n }>\n entity_graph: {\n nodes: Array<{\n id: { ... }\n schema: { ... }\n cardinality?: { ... }\n fields?: { ... }\n }>\n edges: Array<{\n from: { ... }\n to: { ... }\n }>\n }\n entity_operation?: {\n operation: "createEntity" | "updateEntity" | "deleteEntity"[]\n schema: string[]\n attribute?: string[]\n purpose?: string[]\n purpose_filters?: Array<{\n id: { ... }\n display_name: { ... }\n }>\n }\n automation_trigger?: boolean\n api_trigger?: boolean\n automation_trigger_only?: boolean\n automation_trigger_seed_node?: string\n mapping?: {\n mode: "guided" | "jsonata"\n jsonata?: string\n }\n lineage?: {\n base_event_name: string\n base_event_version: string\n }\n example?: Record<string, unknown>\n}\n```\n\n### `EventMapping`\n\nGuided mappings use schema_fields graph_source expressions; raw mode evaluates one JSONata object transform.\n\n```ts\ntype EventMapping = {\n mode: "guided" | "jsonata"\n jsonata?: string\n}\n```\n\n### `CustomEventLineage`\n\nOptional catalog lineage to a separately named base event. Built-in inheritance is validated against this exact registered version; its trigger restrictions cannot be removed or replaced. It does not replace the base event.\n\n```ts\ntype CustomEventLineage = {\n base_event_name: string\n base_event_version: string\n}\n```\n\n### `PurposeFilterSnapshot`\n\n```ts\ntype PurposeFilterSnapshot = {\n id: string\n display_name: string\n}\n```\n\n### `PublishCustomEventPayload`\n\n```ts\ntype PublishCustomEventPayload = {\n enabled?: boolean\n auto_trigger?: boolean\n base_auto_trigger_enabled?: boolean\n}\n```\n\n### `ValidationIssue`\n\n```ts\ntype ValidationIssue = {\n path: string\n message: string\n}\n```\n\n### `PreviewEventResponse`\n\n```ts\ntype PreviewEventResponse = {\n payload: Record<string, unknown>\n errors: Array<{\n path: string\n message: string\n }>\n}\n```\n\n### `UpdateEventPayload`\n\nMutable org activation overlay. Immutable event definition fields are not accepted.\n\n```ts\ntype UpdateEventPayload = {\n enabled?: boolean\n auto_trigger?: boolean\n success_criteria?: Array<{\n entity_schema: string\n attribute: string\n }>\n}\n```\n\n### `PrimitiveField`\n\nA primitive JSON Schema field definition\n\n```ts\ntype PrimitiveField = {\n json_schema: object\n required?: boolean\n graph_source?: string\n}\n```\n\n### `ContextEntity`\n\n```ts\ntype ContextEntity = {\n entity_schema: string\n required?: boolean\n}\n```\n\n### `AttachmentField`\n\nA schema field representing file attachments associated with the event.\nPresent in schema_fields for events tagged with "attachment".\n\n\n```ts\ntype AttachmentField = {\n items: {\n entity_id: string // uuid\n filename?: string\n mime_type?: string\n size_bytes?: number\n s3ref?: {\n bucket: { ... }\n key: { ... }\n }\n version_index: number\n readable_size?: string\n }\n required?: boolean\n}\n```\n\n### `CustomSchemaField`\n\nCustom v1 fields support graph-projected JSON Schema values and context entities; attachment semantics are built-in-only.\n\n```ts\ntype CustomSchemaField = {\n json_schema: object\n required?: boolean\n graph_source?: string\n} | {\n entity_schema: string\n required?: boolean\n}\n```\n\n### `SchemaField`\n\n```ts\ntype SchemaField = {\n json_schema: object\n required?: boolean\n graph_source?: string\n} | {\n entity_schema: string\n required?: boolean\n} | {\n items: {\n entity_id: string // uuid\n filename?: string\n mime_type?: string\n size_bytes?: number\n s3ref?: {\n bucket: { ... }\n key: { ... }\n }\n version_index: number\n readable_size?: string\n }\n required?: boolean\n}\n```\n\n### `SuccessCriterion`\n\nA single org-defined success criterion: an entity attribute that must be captured\nfor this event\'s change request to be considered complete.\n\nIdentity is the entity schema plus the attribute name \u2014 mirroring the\nEntityOperationTrigger `schema`/`attribute` vocabulary. On write (PATCH), both\n`attribut\n\n```ts\ntype SuccessCriterion = {\n entity_schema: string\n attribute: string\n}\n```\n\n### `CommonEventMetadata`\n\nCommon metadata fields present in all event payloads\n\n```ts\ntype CommonEventMetadata = object\n```\n\n### `EventJsonSchema`\n\nJSON Schema declaring the event payload structure\n\n```ts\ntype EventJsonSchema = object\n```\n\n### `InlineDowngradeStep`\n\nOne step of an event\'s inline `_downgrades` chain. Maps the current-version payload to the previous version via a JSONata expression. Stamped by Event Catalog at publish time; executed by consumers during walk-back, never by EC itself.\n\n```ts\ntype InlineDowngradeStep = {\n to: string\n jsonata: string\n}\n```\n\n### `Event`\n\nAn event instance in the event history\n\n```ts\ntype Event = {\n _org_id: string\n _event_time: string // date-time\n _event_id: string\n _event_name: string\n _event_version: string\n _event_source: string\n _trigger_source_type?: string\n _trigger_source?: string\n _ack_id?: string\n _downgrades?: Array<{\n to: string\n jsonata: string\n }>\n _automation_chain?: string[]\n}\n```\n\n### `EventSummary`\n\nA lightweight event summary returned by the v2 history endpoint.\n\nIncludes the standard `_*` metadata fields plus a projected subset of the\nevent payload. Hydrated entity objects (values carrying `_schema` or `_id`)\n\u2014 and arrays of such objects \u2014 are reduced to reference stubs\n`{_schema, _id, _title\n\n```ts\ntype EventSummary = {\n _org_id: string\n _event_time: string // date-time\n _event_id: string\n _event_name: string\n _event_version: string\n _event_source: string\n _trigger_source_type?: string\n _trigger_source?: string\n _ack_id?: string\n}\n```\n\n### `GraphDefinition`\n\nEntity graph definition for resolving related entities\n\n```ts\ntype GraphDefinition = {\n nodes: Array<{\n id: string\n schema: string\n cardinality?: "one" | "many"\n fields?: object\n }>\n edges: Array<{\n from: string\n to: string\n }>\n}\n```\n\n### `GraphNode`\n\nA node in the entity graph\n\n```ts\ntype GraphNode = {\n id: string\n schema: string\n cardinality?: "one" | "many"\n fields?: object\n}\n```\n\n### `GraphEdge`\n\nAn edge connecting two nodes in the graph\n\n```ts\ntype GraphEdge = {\n from: string\n to: string\n}\n```\n\n### `EntityOperationTrigger`\n\nConfiguration for triggering an event based on entity operations.\n\nWhen an entity operation matches the configured criteria, the event will be triggered.\n- On createEntity: the attribute must be present in the entity payload\n- On updateEntity: the attribute must be in diff.added, diff.updated, or di\n\n```ts\ntype EntityOperationTrigger = {\n operation: "createEntity" | "updateEntity" | "deleteEntity"[]\n schema: string[]\n attribute?: string[]\n purpose?: string[]\n purpose_filters?: Array<{\n id: string\n display_name: string\n }>\n}\n```\n\n### `SearchOptions`\n\n```ts\ntype SearchOptions = {\n limit?: number\n cursor?: {\n event_time?: string\n event_id?: string\n }\n timestamp?: {\n from?: string // date-time\n to?: string // date-time\n }\n event_id?: string\n}\n```\n\n### `SearchOptionsV2`\n\nSearch options for the v2 history endpoint.\n\nExtends `SearchOptions` with an optional `fields` projection. When `fields`\nis omitted, the response includes all `_*` metadata plus all scalar payload\nfields (and primitive arrays / empty objects/arrays) after entity stripping.\nWhen `fields` is provided,\n\n```ts\ntype SearchOptionsV2 = {\n limit?: number\n cursor?: {\n event_time?: string\n event_id?: string\n }\n timestamp?: {\n from?: string // date-time\n to?: string // date-time\n }\n event_id?: string\n fields?: string[]\n}\n```\n\n### `FieldsParam`\n\nList of entity fields to include or exclude in the response\n\nUse ! to exclude fields, e.g. `!_id` to exclude the `_id` field.\n\nGlobbing and globstart (**) is supported for nested fields.\n\n\n```ts\ntype FieldsParam = string[]\n```\n\n### `TriggerEventPayload`\n\nPayload for explicitly triggering an event via API\n\n```ts\ntype TriggerEventPayload = {\n seed?: {\n entity_id: string // uuid\n node_id: string\n }\n fields?: Record<string, unknown>\n skip_hydration?: string[]\n _trigger_source_type?: string\n _trigger_source?: string\n _automation_chain?: string[]\n}\n```\n\n### `TriggerEventResponse`\n\nResponse from triggering an event\n\n```ts\ntype TriggerEventResponse = {\n success: boolean\n event_id: string\n event_bridge_event_id?: string\n}\n```\n\n### `EventAttachment`\n\nA file attachment associated with an event\n\n```ts\ntype EventAttachment = {\n entity_id: string // uuid\n filename?: string\n mime_type?: string\n size_bytes?: number\n s3ref?: {\n bucket: string\n key: string\n }\n version_index: number\n readable_size?: string\n}\n```\n\n### `FieldChange`\n\nA field-level change descriptor. Powers the declarative half of the\nversion DSL.\n\n\n```ts\ntype FieldChange = {\n field: string\n op: "added" | "removed" | "type-changed"\n type_old?: string\n type_new?: string\n}\n```\n\n### `VersionMeta`\n\nOne entry of an event\'s version timeline.\n\n```ts\ntype VersionMeta = {\n version: string\n released_at: string\n change_summary: string\n change_notes?: string\n changes: Array<{\n field: string\n op: "added" | "removed" | "type-changed"\n type_old?: string\n type_new?: string\n }>\n}\n```\n\n### `EventVersionRegistrySummary`\n\nSummary of an event\'s version timeline returned by\n`GET /v1/events/{event_name}/versions`.\n\n\n```ts\ntype EventVersionRegistrySummary = {\n event_name: string\n latest: string\n versions: Array<{\n version: string\n released_at: string\n change_summary: string\n change_notes?: string\n changes: Array<{\n field: { ... }\n op: { ... }\n type_old?: { ... }\n type_new?: { ... }\n }>\n }>\n}\n```\n';
5
-
6
-
7
- exports.default = event_catalog_default;