@epilot/sdk 2.18.6 → 2.18.8

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 (126) hide show
  1. package/definitions/integration-toolkit-runtime.json +1 -1
  2. package/definitions/integration-toolkit.json +472 -21
  3. package/dist/apis/access-token.cjs +6 -6
  4. package/dist/apis/access-token.js +1 -1
  5. package/dist/apis/address-suggestions.cjs +6 -6
  6. package/dist/apis/address-suggestions.js +1 -1
  7. package/dist/apis/address.cjs +6 -6
  8. package/dist/apis/address.js +1 -1
  9. package/dist/apis/ai-agents.cjs +6 -6
  10. package/dist/apis/ai-agents.js +1 -1
  11. package/dist/apis/app.cjs +6 -6
  12. package/dist/apis/app.js +1 -1
  13. package/dist/apis/audit-logs.cjs +6 -6
  14. package/dist/apis/audit-logs.js +1 -1
  15. package/dist/apis/automation.cjs +6 -6
  16. package/dist/apis/automation.js +1 -1
  17. package/dist/apis/billing.cjs +6 -6
  18. package/dist/apis/billing.js +1 -1
  19. package/dist/apis/blueprint-manifest.cjs +6 -6
  20. package/dist/apis/blueprint-manifest.js +1 -1
  21. package/dist/apis/calendar.cjs +6 -6
  22. package/dist/apis/calendar.js +1 -1
  23. package/dist/apis/configuration-hub.cjs +6 -6
  24. package/dist/apis/configuration-hub.js +1 -1
  25. package/dist/apis/consent.cjs +6 -6
  26. package/dist/apis/consent.js +1 -1
  27. package/dist/apis/customer-portal.cjs +6 -6
  28. package/dist/apis/customer-portal.js +1 -1
  29. package/dist/apis/dashboard.cjs +6 -6
  30. package/dist/apis/dashboard.js +1 -1
  31. package/dist/apis/data-governance.cjs +6 -6
  32. package/dist/apis/data-governance.js +1 -1
  33. package/dist/apis/deduplication.cjs +6 -6
  34. package/dist/apis/deduplication.js +1 -1
  35. package/dist/apis/design.cjs +6 -6
  36. package/dist/apis/design.js +1 -1
  37. package/dist/apis/document.cjs +6 -6
  38. package/dist/apis/document.js +1 -1
  39. package/dist/apis/email-settings.cjs +6 -6
  40. package/dist/apis/email-settings.js +1 -1
  41. package/dist/apis/email-template.cjs +6 -6
  42. package/dist/apis/email-template.js +1 -1
  43. package/dist/apis/entity-mapping.cjs +6 -6
  44. package/dist/apis/entity-mapping.js +1 -1
  45. package/dist/apis/entity.cjs +6 -6
  46. package/dist/apis/entity.js +1 -1
  47. package/dist/apis/environments.cjs +6 -6
  48. package/dist/apis/environments.js +1 -1
  49. package/dist/apis/event-catalog.cjs +6 -6
  50. package/dist/apis/event-catalog.js +1 -1
  51. package/dist/apis/file.cjs +6 -6
  52. package/dist/apis/file.js +1 -1
  53. package/dist/apis/iban.cjs +6 -6
  54. package/dist/apis/iban.js +1 -1
  55. package/dist/apis/integration-toolkit.cjs +8 -8
  56. package/dist/apis/integration-toolkit.d.cts +2 -2
  57. package/dist/apis/integration-toolkit.d.ts +2 -2
  58. package/dist/apis/integration-toolkit.js +2 -2
  59. package/dist/apis/journey.cjs +6 -6
  60. package/dist/apis/journey.js +1 -1
  61. package/dist/apis/kanban.cjs +6 -6
  62. package/dist/apis/kanban.js +1 -1
  63. package/dist/apis/message.cjs +6 -6
  64. package/dist/apis/message.js +1 -1
  65. package/dist/apis/metering.cjs +6 -6
  66. package/dist/apis/metering.js +1 -1
  67. package/dist/apis/notes.cjs +6 -6
  68. package/dist/apis/notes.js +1 -1
  69. package/dist/apis/notification.cjs +6 -6
  70. package/dist/apis/notification.js +1 -1
  71. package/dist/apis/organization.cjs +6 -6
  72. package/dist/apis/organization.js +1 -1
  73. package/dist/apis/partner-directory.cjs +6 -6
  74. package/dist/apis/partner-directory.js +1 -1
  75. package/dist/apis/permissions.cjs +6 -6
  76. package/dist/apis/permissions.js +1 -1
  77. package/dist/apis/pricing-tier.cjs +6 -6
  78. package/dist/apis/pricing-tier.js +1 -1
  79. package/dist/apis/pricing.cjs +6 -6
  80. package/dist/apis/pricing.js +1 -1
  81. package/dist/apis/purpose.cjs +6 -6
  82. package/dist/apis/purpose.js +1 -1
  83. package/dist/apis/query.cjs +6 -6
  84. package/dist/apis/query.js +1 -1
  85. package/dist/apis/sandbox.cjs +6 -6
  86. package/dist/apis/sandbox.js +1 -1
  87. package/dist/apis/sharing.cjs +6 -6
  88. package/dist/apis/sharing.js +1 -1
  89. package/dist/apis/snapshot.cjs +6 -6
  90. package/dist/apis/snapshot.js +1 -1
  91. package/dist/apis/submission.cjs +6 -6
  92. package/dist/apis/submission.js +1 -1
  93. package/dist/apis/target.cjs +6 -6
  94. package/dist/apis/target.js +1 -1
  95. package/dist/apis/targeting.cjs +6 -6
  96. package/dist/apis/targeting.js +1 -1
  97. package/dist/apis/template-variables.cjs +6 -6
  98. package/dist/apis/template-variables.js +1 -1
  99. package/dist/apis/user.cjs +6 -6
  100. package/dist/apis/user.js +1 -1
  101. package/dist/apis/validation-rules.cjs +6 -6
  102. package/dist/apis/validation-rules.js +1 -1
  103. package/dist/apis/webhooks.cjs +6 -6
  104. package/dist/apis/webhooks.js +1 -1
  105. package/dist/apis/workflow-definition.cjs +6 -6
  106. package/dist/apis/workflow-definition.js +1 -1
  107. package/dist/apis/workflow.cjs +6 -6
  108. package/dist/apis/workflow.js +1 -1
  109. package/dist/{chunk-MIKSJIFK.cjs → chunk-JMRPVDMK.cjs} +2 -2
  110. package/dist/{chunk-TAQOJW6T.js → chunk-M44TEEFZ.js} +2 -2
  111. package/dist/{chunk-RXFXAZK3.cjs → chunk-TIH5X7Q4.cjs} +1 -1
  112. package/dist/{chunk-5OOGTDF2.js → chunk-YWZCVCG2.js} +1 -1
  113. package/dist/index.cjs +10 -10
  114. package/dist/index.d.cts +1 -1
  115. package/dist/index.d.ts +1 -1
  116. package/dist/index.js +2 -2
  117. package/dist/integration-toolkit-OSK5M75F.js +7 -0
  118. package/dist/integration-toolkit-W5IENOJW.cjs +7 -0
  119. package/dist/{integration-toolkit-runtime-2MBB4EOE.js → integration-toolkit-runtime-6J2KUTFL.js} +1 -1
  120. package/dist/{integration-toolkit-runtime-VUI4NCRJ.cjs → integration-toolkit-runtime-REEOXZO6.cjs} +2 -2
  121. package/dist/{integration-toolkit.d-E2nrIdIM.d.cts → integration-toolkit.d-D5LjhCQB.d.cts} +685 -46
  122. package/dist/{integration-toolkit.d-E2nrIdIM.d.ts → integration-toolkit.d-D5LjhCQB.d.ts} +685 -46
  123. package/docs/integration-toolkit.md +543 -146
  124. package/package.json +1 -1
  125. package/dist/integration-toolkit-63NIMAHB.js +0 -7
  126. package/dist/integration-toolkit-7NCK7Z5G.cjs +0 -7
@@ -92,17 +92,23 @@ const { data } = await integrationToolkitClient.acknowledgeTracking(...)
92
92
  - [`createErpImport`](#createerpimport)
93
93
  - [`listErpImports`](#listerpimports)
94
94
  - [`getErpImport`](#geterpimport)
95
+ - [`validateErpImport`](#validateerpimport)
96
+ - [`suggestErpImportUseCases`](#suggesterpimportusecases)
95
97
  - [`executeErpImport`](#executeerpimport)
96
98
  - [`abortErpImport`](#aborterpimport)
97
99
 
98
100
  **Schemas**
99
101
  - [`S3Reference`](#s3reference)
100
102
  - [`CreateErpImportRequest`](#createerpimportrequest)
103
+ - [`ValidateErpImportRequest`](#validateerpimportrequest)
104
+ - [`ErpImportUseCaseSuggestion`](#erpimportusecasesuggestion)
105
+ - [`SuggestErpImportUseCasesResponse`](#suggesterpimportusecasesresponse)
101
106
  - [`ExecuteErpImportRequest`](#executeerpimportrequest)
102
107
  - [`ErpImportIssue`](#erpimportissue)
103
108
  - [`ErpImportValidation`](#erpimportvalidation)
104
109
  - [`ErpImportProgress`](#erpimportprogress)
105
110
  - [`ErpImportError`](#erpimporterror)
111
+ - [`ErpImportFilePreview`](#erpimportfilepreview)
106
112
  - [`CreateErpImportResponse`](#createerpimportresponse)
107
113
  - [`ErpImportJob`](#erpimportjob)
108
114
  - [`ErpImportList`](#erpimportlist)
@@ -215,6 +221,8 @@ const { data } = await integrationToolkitClient.acknowledgeTracking(...)
215
221
  - [`FileProxyAuth`](#fileproxyauth)
216
222
  - [`FileProxyParam`](#fileproxyparam)
217
223
  - [`FileProxyStep`](#fileproxystep)
224
+ - [`FileProxyFanOutConfig`](#fileproxyfanoutconfig)
225
+ - [`FileProxyUploadConfig`](#fileproxyuploadconfig)
218
226
  - [`FileProxyResponseConfig`](#fileproxyresponseconfig)
219
227
  - [`MappingSimulationRequest`](#mappingsimulationrequest)
220
228
  - [`MappingSimulationV2Request`](#mappingsimulationv2request)
@@ -232,8 +240,11 @@ const { data } = await integrationToolkitClient.acknowledgeTracking(...)
232
240
  - [`DeliveryConfig`](#deliveryconfig)
233
241
  - [`WebhookDeliveryConfig`](#webhookdeliveryconfig)
234
242
  - [`PollDeliveryConfig`](#polldeliveryconfig)
243
+ - [`FileProxyDeliveryConfig`](#fileproxydeliveryconfig)
244
+ - [`FileProxyLookup`](#fileproxylookup)
235
245
  - [`OutboundStatusResponse`](#outboundstatusresponse)
236
246
  - [`OutboundUseCaseStatus`](#outboundusecasestatus)
247
+ - [`OutboundFileProxyTargetStatus`](#outboundfileproxytargetstatus)
237
248
  - [`OutboundPollStatus`](#outboundpollstatus)
238
249
  - [`WebhookStatus`](#webhookstatus)
239
250
  - [`OutboundConflict`](#outboundconflict)
@@ -2368,7 +2379,18 @@ const { data } = await client.getOutboundStatus({
2368
2379
  "last_ack_at": "1970-01-01T00:00:00.000Z",
2369
2380
  "blocked": true,
2370
2381
  "dlq_count": 0
2371
- }
2382
+ },
2383
+ "file_proxy": [
2384
+ {
2385
+ "mapping_id": "string",
2386
+ "use_case_slug": "string",
2387
+ "resolved": true,
2388
+ "target_use_case_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
2389
+ "target_enabled": true,
2390
+ "target_updated_at": "1970-01-01T00:00:00.000Z",
2391
+ "unresolved_reason": "not_found"
2392
+ }
2393
+ ]
2372
2394
  }
2373
2395
  ]
2374
2396
  }
@@ -3192,7 +3214,7 @@ const { data } = await client.commitTypes(
3192
3214
 
3193
3215
  ### `createErpImport`
3194
3216
 
3195
- Create a pricing-file import job from an already-uploaded file (S3 ref). Returns a job id and starts the validate phase asynchronously poll GET /v2/erp/imports/{importId}.
3217
+ Register an already-uploaded file (S3 ref) as a pricing-file import job and return its id. Nothing runs yet: no use case is chosen and no validation starts here. Rank the candidates with POST /v2/erp/
3196
3218
 
3197
3219
  `POST /v2/erp/imports`
3198
3220
 
@@ -3204,8 +3226,7 @@ const { data } = await client.createErpImport(
3204
3226
  bucket: 'string',
3205
3227
  key: 'string'
3206
3228
  },
3207
- integration_id: 'string',
3208
- use_case_slug: 'string'
3229
+ include_preview: false
3209
3230
  },
3210
3231
  )
3211
3232
  ```
@@ -3340,6 +3361,63 @@ const { data } = await client.getErpImport({
3340
3361
 
3341
3362
  ---
3342
3363
 
3364
+ ### `validateErpImport`
3365
+
3366
+ Choose the use case to read this file with, and start the validate phase.
3367
+ Callable from PENDING, READY and FAILED — so a wrong choice is corrected by calling this again with a different use case, rath
3368
+
3369
+ `POST /v2/erp/imports/{importId}:validate`
3370
+
3371
+ ```ts
3372
+ const { data } = await client.validateErpImport(
3373
+ {
3374
+ importId: 'example',
3375
+ },
3376
+ {
3377
+ integration_id: 'string',
3378
+ use_case_slug: 'string'
3379
+ },
3380
+ )
3381
+ ```
3382
+
3383
+ ---
3384
+
3385
+ ### `suggestErpImportUseCases`
3386
+
3387
+ Rank the org's inbound use cases against this file's columns — the input to the ranked picker ("matches 6 of your 7 columns"). Reads only the file's first row, not its data.
3388
+ Every eligible use case is
3389
+
3390
+ `POST /v2/erp/imports/{importId}:suggest-use-cases`
3391
+
3392
+ ```ts
3393
+ const { data } = await client.suggestErpImportUseCases({
3394
+ importId: 'example',
3395
+ })
3396
+ ```
3397
+
3398
+ <details>
3399
+ <summary>Response</summary>
3400
+
3401
+ ```json
3402
+ {
3403
+ "suggestions": [
3404
+ {
3405
+ "integration_id": "string",
3406
+ "integration_name": "string",
3407
+ "use_case_slug": "string",
3408
+ "use_case_name": "string",
3409
+ "entity_types": 0,
3410
+ "matched_columns": 0,
3411
+ "file_columns": 0
3412
+ }
3413
+ ]
3414
+ }
3415
+ ```
3416
+
3417
+ </details>
3418
+
3419
+ ---
3420
+
3343
3421
  ### `executeErpImport`
3344
3422
 
3345
3423
  Confirm and run the write phase of a validated import. Only a READY job may be executed; any other status returns 409.
@@ -3434,14 +3512,54 @@ type S3Reference = {
3434
3512
 
3435
3513
  ### `CreateErpImportRequest`
3436
3514
 
3515
+ Register an already-uploaded file as an import. The use case is chosen later, via `:validate` — upload and interpretation are separate decisions.
3516
+
3437
3517
  ```ts
3438
3518
  type CreateErpImportRequest = {
3439
3519
  s3_reference: {
3440
3520
  bucket: string
3441
3521
  key: string
3442
3522
  }
3523
+ include_preview?: boolean
3524
+ }
3525
+ ```
3526
+
3527
+ ### `ValidateErpImportRequest`
3528
+
3529
+ ```ts
3530
+ type ValidateErpImportRequest = {
3443
3531
  integration_id: string
3444
- use_case_slug?: string
3532
+ use_case_slug: string
3533
+ }
3534
+ ```
3535
+
3536
+ ### `ErpImportUseCaseSuggestion`
3537
+
3538
+ ```ts
3539
+ type ErpImportUseCaseSuggestion = {
3540
+ integration_id: string
3541
+ integration_name: string
3542
+ use_case_slug: string
3543
+ use_case_name: string
3544
+ entity_types: number
3545
+ matched_columns: number
3546
+ file_columns: number
3547
+ }
3548
+ ```
3549
+
3550
+ ### `SuggestErpImportUseCasesResponse`
3551
+
3552
+ ```ts
3553
+ type SuggestErpImportUseCasesResponse = {
3554
+ suggestions: Array<{
3555
+ integration_id: string
3556
+ integration_name: string
3557
+ use_case_slug: string
3558
+ use_case_name: string
3559
+ entity_types: number
3560
+ matched_columns: number
3561
+ file_columns: number
3562
+ }>
3445
3563
  }
3446
3564
  ```
3447
3565
 
@@ -3510,11 +3628,28 @@ type ErpImportError = {
3510
3628
  }
3511
3629
  ```
3512
3630
 
3631
+ ### `ErpImportFilePreview`
3632
+
3633
+ Sample of the file's first rows, using the same parser as `:validate`. `status` is the outcome of this read, not a verdict on the file.
3634
+
3635
+ ```ts
3636
+ type ErpImportFilePreview = {
3637
+ status: "AVAILABLE" | "FORMAT_UNSUPPORTED" | "UNREADABLE"
3638
+ columns?: string[]
3639
+ rows?: string[][]
3640
+ }
3641
+ ```
3642
+
3513
3643
  ### `CreateErpImportResponse`
3514
3644
 
3515
3645
  ```ts
3516
3646
  type CreateErpImportResponse = {
3517
3647
  import_id: string
3648
+ preview?: {
3649
+ status: "AVAILABLE" | "FORMAT_UNSUPPORTED" | "UNREADABLE"
3650
+ columns?: string[]
3651
+ rows?: string[][]
3652
+ }
3518
3653
  }
3519
3654
  ```
3520
3655
 
@@ -3525,7 +3660,7 @@ type ErpImportJob = {
3525
3660
  import_id: string
3526
3661
  org_id: string
3527
3662
  created_by?: string
3528
- integration_id: string
3663
+ integration_id?: string
3529
3664
  use_case_slug?: string
3530
3665
  format: "csv" | "xlsx"
3531
3666
  status: "PENDING" | "VALIDATING" | "READY" | "PROCESSING" | "IMPORTED" | "FAILED" | "CANCELLING" | "CANCELLED"
@@ -3568,7 +3703,7 @@ type ErpImportList = {
3568
3703
  import_id: string
3569
3704
  org_id: string
3570
3705
  created_by?: string
3571
- integration_id: string
3706
+ integration_id?: string
3572
3707
  use_case_slug?: string
3573
3708
  format: "csv" | "xlsx"
3574
3709
  status: "PENDING" | "VALIDATING" | "READY" | "PROCESSING" | "IMPORTED" | "FAILED" | "CANCELLING" | "CANCELLED"
@@ -4398,7 +4533,9 @@ type IntegrationWithUseCases = {
4398
4533
  updated_at: string // date-time
4399
4534
  configuration?: {
4400
4535
  event_catalog_event: { ... }
4536
+ event_filter?: { ... }
4401
4537
  mappings: { ... }
4538
+ ack_tracking?: { ... }
4402
4539
  }
4403
4540
  } | {
4404
4541
  id: string // uuid
@@ -4412,12 +4549,20 @@ type IntegrationWithUseCases = {
4412
4549
  created_at: string // date-time
4413
4550
  updated_at: string // date-time
4414
4551
  configuration?: {
4552
+ direction?: { ... }
4553
+ upload?: { ... }
4554
+ fan_out?: { ... }
4555
+ params_mapping?: { ... }
4556
+ lookups?: { ... }
4557
+ constants?: { ... }
4558
+ file_source?: { ... }
4559
+ required_params?: { ... }
4415
4560
  secure_proxy?: { ... }
4416
4561
  auth?: { ... }
4417
4562
  params?: { ... }
4418
4563
  allowed_origins?: { ... }
4419
4564
  steps: { ... }
4420
- response: { ... }
4565
+ response?: { ... }
4421
4566
  prevent_indirect_serving?: { ... }
4422
4567
  }
4423
4568
  } | {
@@ -4459,6 +4604,7 @@ type IntegrationWithUseCases = {
4459
4604
  allowed_ips?: { ... }
4460
4605
  }
4461
4606
  }>
4607
+ // ...
4462
4608
  }
4463
4609
  ```
4464
4610
 
@@ -4544,7 +4690,9 @@ type UpsertIntegrationWithUseCasesRequest = {
4544
4690
  type: "outbound"
4545
4691
  configuration?: {
4546
4692
  event_catalog_event: { ... }
4693
+ event_filter?: { ... }
4547
4694
  mappings: { ... }
4695
+ ack_tracking?: { ... }
4548
4696
  }
4549
4697
  } | {
4550
4698
  id?: string // uuid
@@ -4554,17 +4702,15 @@ type UpsertIntegrationWithUseCasesRequest = {
4554
4702
  change_description?: string
4555
4703
  type: "file_proxy"
4556
4704
  configuration?: {
4705
+ direction?: { ... }
4706
+ upload?: { ... }
4707
+ fan_out?: { ... }
4708
+ params_mapping?: { ... }
4709
+ lookups?: { ... }
4710
+ constants?: { ... }
4711
+ file_source?: { ... }
4712
+ required_params?: { ... }
4557
4713
  secure_proxy?: { ... }
4558
- auth?: { ... }
4559
- params?: { ... }
4560
- allowed_origins?: { ... }
4561
- steps: { ... }
4562
- response: { ... }
4563
- prevent_indirect_serving?: { ... }
4564
- }
4565
- } | {
4566
- id?: string // uuid
4567
- name: string
4568
4714
  // ...
4569
4715
  }
4570
4716
  ```
@@ -4638,6 +4784,7 @@ Configuration for outbound use cases. Defines the event that triggers the flow a
4638
4784
  ```ts
4639
4785
  type OutboundIntegrationEventConfiguration = {
4640
4786
  event_catalog_event: string
4787
+ event_filter?: string
4641
4788
  mappings: Array<{
4642
4789
  id?: string // uuid
4643
4790
  name: string
@@ -4653,10 +4800,14 @@ type OutboundIntegrationEventConfiguration = {
4653
4800
  retention_days?: { ... }
4654
4801
  poison_policy?: { ... }
4655
4802
  max_delivery_attempts?: { ... }
4803
+ } | {
4804
+ type: { ... }
4805
+ use_case_slug: { ... }
4656
4806
  }
4657
4807
  created_at?: string // date-time
4658
4808
  updated_at?: string // date-time
4659
4809
  }>
4810
+ ack_tracking?: "on" | "off"
4660
4811
  }
4661
4812
  ```
4662
4813
 
@@ -5116,6 +5267,7 @@ type EmbeddedUseCaseRequest = {
5116
5267
  type: "outbound"
5117
5268
  configuration?: {
5118
5269
  event_catalog_event: string
5270
+ event_filter?: string
5119
5271
  mappings: Array<{
5120
5272
  id?: { ... }
5121
5273
  name: { ... }
@@ -5125,6 +5277,7 @@ type EmbeddedUseCaseRequest = {
5125
5277
  created_at?: { ... }
5126
5278
  updated_at?: { ... }
5127
5279
  }>
5280
+ ack_tracking?: "on" | "off"
5128
5281
  }
5129
5282
  } | {
5130
5283
  id?: string // uuid
@@ -5134,6 +5287,27 @@ type EmbeddedUseCaseRequest = {
5134
5287
  change_description?: string
5135
5288
  type: "file_proxy"
5136
5289
  configuration?: {
5290
+ direction?: "download" | "upload"
5291
+ upload?: {
5292
+ max_file_bytes?: { ... }
5293
+ max_delivery_attempts?: { ... }
5294
+ success_when?: { ... }
5295
+ external_id?: { ... }
5296
+ }
5297
+ fan_out?: {
5298
+ enabled: { ... }
5299
+ split_expression?: { ... }
5300
+ }
5301
+ params_mapping?: string
5302
+ lookups?: Record<string, {
5303
+ source: { ... }
5304
+ entries: { ... }
5305
+ default?: { ... }
5306
+ on_miss?: { ... }
5307
+ }>
5308
+ constants?: Record<string, unknown>
5309
+ file_source?: string
5310
+ required_params?: string[]
5137
5311
  secure_proxy?: {
5138
5312
  use_case_slug: { ... }
5139
5313
  }
@@ -5157,29 +5331,6 @@ type EmbeddedUseCaseRequest = {
5157
5331
  description?: { ... }
5158
5332
  }>
5159
5333
  allowed_origins?: string // uri[]
5160
- steps: Array<{
5161
- url: { ... }
5162
- method: { ... }
5163
- headers?: { ... }
5164
- body?: { ... }
5165
- response_type: { ... }
5166
- }>
5167
- response: {
5168
- body: { ... }
5169
- encoding: { ... }
5170
- filename?: { ... }
5171
- content_type?: { ... }
5172
- }
5173
- prevent_indirect_serving?: boolean
5174
- }
5175
- } | {
5176
- id?: string // uuid
5177
- name: string
5178
- slug?: string
5179
- enabled: boolean
5180
- change_description?: string
5181
- type: "managed_call"
5182
- configuration?: {
5183
5334
  // ...
5184
5335
  }
5185
5336
  ```
@@ -5241,6 +5392,7 @@ type EmbeddedOutboundUseCaseRequest = {
5241
5392
  type: "outbound"
5242
5393
  configuration?: {
5243
5394
  event_catalog_event: string
5395
+ event_filter?: string
5244
5396
  mappings: Array<{
5245
5397
  id?: { ... }
5246
5398
  name: { ... }
@@ -5250,6 +5402,7 @@ type EmbeddedOutboundUseCaseRequest = {
5250
5402
  created_at?: { ... }
5251
5403
  updated_at?: { ... }
5252
5404
  }>
5405
+ ack_tracking?: "on" | "off"
5253
5406
  }
5254
5407
  }
5255
5408
  ```
@@ -5265,6 +5418,27 @@ type EmbeddedFileProxyUseCaseRequest = {
5265
5418
  change_description?: string
5266
5419
  type: "file_proxy"
5267
5420
  configuration?: {
5421
+ direction?: "download" | "upload"
5422
+ upload?: {
5423
+ max_file_bytes?: { ... }
5424
+ max_delivery_attempts?: { ... }
5425
+ success_when?: { ... }
5426
+ external_id?: { ... }
5427
+ }
5428
+ fan_out?: {
5429
+ enabled: { ... }
5430
+ split_expression?: { ... }
5431
+ }
5432
+ params_mapping?: string
5433
+ lookups?: Record<string, {
5434
+ source: { ... }
5435
+ entries: { ... }
5436
+ default?: { ... }
5437
+ on_miss?: { ... }
5438
+ }>
5439
+ constants?: Record<string, unknown>
5440
+ file_source?: string
5441
+ required_params?: string[]
5268
5442
  secure_proxy?: {
5269
5443
  use_case_slug: { ... }
5270
5444
  }
@@ -5295,7 +5469,7 @@ type EmbeddedFileProxyUseCaseRequest = {
5295
5469
  body?: { ... }
5296
5470
  response_type: { ... }
5297
5471
  }>
5298
- response: {
5472
+ response?: {
5299
5473
  body: { ... }
5300
5474
  encoding: { ... }
5301
5475
  filename?: { ... }
@@ -5418,6 +5592,7 @@ type OutboundUseCase = {
5418
5592
  updated_at: string // date-time
5419
5593
  configuration?: {
5420
5594
  event_catalog_event: string
5595
+ event_filter?: string
5421
5596
  mappings: Array<{
5422
5597
  id?: { ... }
5423
5598
  name: { ... }
@@ -5427,6 +5602,7 @@ type OutboundUseCase = {
5427
5602
  created_at?: { ... }
5428
5603
  updated_at?: { ... }
5429
5604
  }>
5605
+ ack_tracking?: "on" | "off"
5430
5606
  }
5431
5607
  }
5432
5608
  ```
@@ -5446,6 +5622,27 @@ type FileProxyUseCase = {
5446
5622
  created_at: string // date-time
5447
5623
  updated_at: string // date-time
5448
5624
  configuration?: {
5625
+ direction?: "download" | "upload"
5626
+ upload?: {
5627
+ max_file_bytes?: { ... }
5628
+ max_delivery_attempts?: { ... }
5629
+ success_when?: { ... }
5630
+ external_id?: { ... }
5631
+ }
5632
+ fan_out?: {
5633
+ enabled: { ... }
5634
+ split_expression?: { ... }
5635
+ }
5636
+ params_mapping?: string
5637
+ lookups?: Record<string, {
5638
+ source: { ... }
5639
+ entries: { ... }
5640
+ default?: { ... }
5641
+ on_miss?: { ... }
5642
+ }>
5643
+ constants?: Record<string, unknown>
5644
+ file_source?: string
5645
+ required_params?: string[]
5449
5646
  secure_proxy?: {
5450
5647
  use_case_slug: { ... }
5451
5648
  }
@@ -5476,7 +5673,7 @@ type FileProxyUseCase = {
5476
5673
  body?: { ... }
5477
5674
  response_type: { ... }
5478
5675
  }>
5479
- response: {
5676
+ response?: {
5480
5677
  body: { ... }
5481
5678
  encoding: { ... }
5482
5679
  filename?: { ... }
@@ -5589,6 +5786,7 @@ type UseCase = {
5589
5786
  updated_at: string // date-time
5590
5787
  configuration?: {
5591
5788
  event_catalog_event: string
5789
+ event_filter?: string
5592
5790
  mappings: Array<{
5593
5791
  id?: { ... }
5594
5792
  name: { ... }
@@ -5598,6 +5796,7 @@ type UseCase = {
5598
5796
  created_at?: { ... }
5599
5797
  updated_at?: { ... }
5600
5798
  }>
5799
+ ack_tracking?: "on" | "off"
5601
5800
  }
5602
5801
  } | {
5603
5802
  id: string // uuid
@@ -5611,6 +5810,27 @@ type UseCase = {
5611
5810
  created_at: string // date-time
5612
5811
  updated_at: string // date-time
5613
5812
  configuration?: {
5813
+ direction?: "download" | "upload"
5814
+ upload?: {
5815
+ max_file_bytes?: { ... }
5816
+ max_delivery_attempts?: { ... }
5817
+ success_when?: { ... }
5818
+ external_id?: { ... }
5819
+ }
5820
+ fan_out?: {
5821
+ enabled: { ... }
5822
+ split_expression?: { ... }
5823
+ }
5824
+ params_mapping?: string
5825
+ lookups?: Record<string, {
5826
+ source: { ... }
5827
+ entries: { ... }
5828
+ default?: { ... }
5829
+ on_miss?: { ... }
5830
+ }>
5831
+ constants?: Record<string, unknown>
5832
+ file_source?: string
5833
+ required_params?: string[]
5614
5834
  secure_proxy?: {
5615
5835
  use_case_slug: { ... }
5616
5836
  }
@@ -5622,29 +5842,6 @@ type UseCase = {
5622
5842
  scope?: { ... }
5623
5843
  audience?: { ... }
5624
5844
  resource?: { ... }
5625
- username?: { ... }
5626
- password?: { ... }
5627
- body_params?: { ... }
5628
- headers?: { ... }
5629
- query_params?: { ... }
5630
- }
5631
- params?: Array<{
5632
- name: { ... }
5633
- required: { ... }
5634
- description?: { ... }
5635
- }>
5636
- allowed_origins?: string // uri[]
5637
- steps: Array<{
5638
- url: { ... }
5639
- method: { ... }
5640
- headers?: { ... }
5641
- body?: { ... }
5642
- response_type: { ... }
5643
- }>
5644
- response: {
5645
- body: { ... }
5646
- encoding: { ... }
5647
- filename?: { ... }
5648
5845
  // ...
5649
5846
  }
5650
5847
  ```
@@ -5684,6 +5881,7 @@ type CreateUseCaseRequest = {
5684
5881
  type: "outbound"
5685
5882
  configuration?: {
5686
5883
  event_catalog_event: string
5884
+ event_filter?: string
5687
5885
  mappings: Array<{
5688
5886
  id?: { ... }
5689
5887
  name: { ... }
@@ -5693,6 +5891,7 @@ type CreateUseCaseRequest = {
5693
5891
  created_at?: { ... }
5694
5892
  updated_at?: { ... }
5695
5893
  }>
5894
+ ack_tracking?: "on" | "off"
5696
5895
  }
5697
5896
  } | {
5698
5897
  name: string
@@ -5700,6 +5899,27 @@ type CreateUseCaseRequest = {
5700
5899
  enabled: boolean
5701
5900
  type: "file_proxy"
5702
5901
  configuration?: {
5902
+ direction?: "download" | "upload"
5903
+ upload?: {
5904
+ max_file_bytes?: { ... }
5905
+ max_delivery_attempts?: { ... }
5906
+ success_when?: { ... }
5907
+ external_id?: { ... }
5908
+ }
5909
+ fan_out?: {
5910
+ enabled: { ... }
5911
+ split_expression?: { ... }
5912
+ }
5913
+ params_mapping?: string
5914
+ lookups?: Record<string, {
5915
+ source: { ... }
5916
+ entries: { ... }
5917
+ default?: { ... }
5918
+ on_miss?: { ... }
5919
+ }>
5920
+ constants?: Record<string, unknown>
5921
+ file_source?: string
5922
+ required_params?: string[]
5703
5923
  secure_proxy?: {
5704
5924
  use_case_slug: { ... }
5705
5925
  }
@@ -5729,29 +5949,6 @@ type CreateUseCaseRequest = {
5729
5949
  headers?: { ... }
5730
5950
  body?: { ... }
5731
5951
  response_type: { ... }
5732
- }>
5733
- response: {
5734
- body: { ... }
5735
- encoding: { ... }
5736
- filename?: { ... }
5737
- content_type?: { ... }
5738
- }
5739
- prevent_indirect_serving?: boolean
5740
- }
5741
- } | {
5742
- name: string
5743
- slug: string
5744
- enabled: boolean
5745
- type: "managed_call"
5746
- configuration?: {
5747
- operation: {
5748
- method: { ... }
5749
- path: { ... }
5750
- headers?: { ... }
5751
- query_params?: { ... }
5752
- }
5753
- request_mapping?: string
5754
- response_mapping?: string
5755
5952
  // ...
5756
5953
  }
5757
5954
  ```
@@ -5807,6 +6004,7 @@ type CreateOutboundUseCaseRequest = {
5807
6004
  type: "outbound"
5808
6005
  configuration?: {
5809
6006
  event_catalog_event: string
6007
+ event_filter?: string
5810
6008
  mappings: Array<{
5811
6009
  id?: { ... }
5812
6010
  name: { ... }
@@ -5816,6 +6014,7 @@ type CreateOutboundUseCaseRequest = {
5816
6014
  created_at?: { ... }
5817
6015
  updated_at?: { ... }
5818
6016
  }>
6017
+ ack_tracking?: "on" | "off"
5819
6018
  }
5820
6019
  }
5821
6020
  ```
@@ -5829,6 +6028,27 @@ type CreateFileProxyUseCaseRequest = {
5829
6028
  enabled: boolean
5830
6029
  type: "file_proxy"
5831
6030
  configuration?: {
6031
+ direction?: "download" | "upload"
6032
+ upload?: {
6033
+ max_file_bytes?: { ... }
6034
+ max_delivery_attempts?: { ... }
6035
+ success_when?: { ... }
6036
+ external_id?: { ... }
6037
+ }
6038
+ fan_out?: {
6039
+ enabled: { ... }
6040
+ split_expression?: { ... }
6041
+ }
6042
+ params_mapping?: string
6043
+ lookups?: Record<string, {
6044
+ source: { ... }
6045
+ entries: { ... }
6046
+ default?: { ... }
6047
+ on_miss?: { ... }
6048
+ }>
6049
+ constants?: Record<string, unknown>
6050
+ file_source?: string
6051
+ required_params?: string[]
5832
6052
  secure_proxy?: {
5833
6053
  use_case_slug: { ... }
5834
6054
  }
@@ -5859,7 +6079,7 @@ type CreateFileProxyUseCaseRequest = {
5859
6079
  body?: { ... }
5860
6080
  response_type: { ... }
5861
6081
  }>
5862
- response: {
6082
+ response?: {
5863
6083
  body: { ... }
5864
6084
  encoding: { ... }
5865
6085
  filename?: { ... }
@@ -5945,6 +6165,7 @@ type UpdateUseCaseRequest = {
5945
6165
  type?: "outbound"
5946
6166
  configuration?: {
5947
6167
  event_catalog_event: string
6168
+ event_filter?: string
5948
6169
  mappings: Array<{
5949
6170
  id?: { ... }
5950
6171
  name: { ... }
@@ -5954,6 +6175,7 @@ type UpdateUseCaseRequest = {
5954
6175
  created_at?: { ... }
5955
6176
  updated_at?: { ... }
5956
6177
  }>
6178
+ ack_tracking?: "on" | "off"
5957
6179
  }
5958
6180
  } | {
5959
6181
  name?: string
@@ -5962,6 +6184,27 @@ type UpdateUseCaseRequest = {
5962
6184
  change_description?: string
5963
6185
  type?: "file_proxy"
5964
6186
  configuration?: {
6187
+ direction?: "download" | "upload"
6188
+ upload?: {
6189
+ max_file_bytes?: { ... }
6190
+ max_delivery_attempts?: { ... }
6191
+ success_when?: { ... }
6192
+ external_id?: { ... }
6193
+ }
6194
+ fan_out?: {
6195
+ enabled: { ... }
6196
+ split_expression?: { ... }
6197
+ }
6198
+ params_mapping?: string
6199
+ lookups?: Record<string, {
6200
+ source: { ... }
6201
+ entries: { ... }
6202
+ default?: { ... }
6203
+ on_miss?: { ... }
6204
+ }>
6205
+ constants?: Record<string, unknown>
6206
+ file_source?: string
6207
+ required_params?: string[]
5965
6208
  secure_proxy?: {
5966
6209
  use_case_slug: { ... }
5967
6210
  }
@@ -5988,29 +6231,6 @@ type UpdateUseCaseRequest = {
5988
6231
  steps: Array<{
5989
6232
  url: { ... }
5990
6233
  method: { ... }
5991
- headers?: { ... }
5992
- body?: { ... }
5993
- response_type: { ... }
5994
- }>
5995
- response: {
5996
- body: { ... }
5997
- encoding: { ... }
5998
- filename?: { ... }
5999
- content_type?: { ... }
6000
- }
6001
- prevent_indirect_serving?: boolean
6002
- }
6003
- } | {
6004
- name?: string
6005
- slug?: string
6006
- enabled?: boolean
6007
- change_description?: string
6008
- type?: "managed_call"
6009
- configuration?: {
6010
- operation: {
6011
- method: { ... }
6012
- path: { ... }
6013
- headers?: { ... }
6014
6234
  // ...
6015
6235
  }
6016
6236
  ```
@@ -6069,6 +6289,7 @@ type UpdateOutboundUseCaseRequest = {
6069
6289
  type?: "outbound"
6070
6290
  configuration?: {
6071
6291
  event_catalog_event: string
6292
+ event_filter?: string
6072
6293
  mappings: Array<{
6073
6294
  id?: { ... }
6074
6295
  name: { ... }
@@ -6078,6 +6299,7 @@ type UpdateOutboundUseCaseRequest = {
6078
6299
  created_at?: { ... }
6079
6300
  updated_at?: { ... }
6080
6301
  }>
6302
+ ack_tracking?: "on" | "off"
6081
6303
  }
6082
6304
  }
6083
6305
  ```
@@ -6092,6 +6314,27 @@ type UpdateFileProxyUseCaseRequest = {
6092
6314
  change_description?: string
6093
6315
  type?: "file_proxy"
6094
6316
  configuration?: {
6317
+ direction?: "download" | "upload"
6318
+ upload?: {
6319
+ max_file_bytes?: { ... }
6320
+ max_delivery_attempts?: { ... }
6321
+ success_when?: { ... }
6322
+ external_id?: { ... }
6323
+ }
6324
+ fan_out?: {
6325
+ enabled: { ... }
6326
+ split_expression?: { ... }
6327
+ }
6328
+ params_mapping?: string
6329
+ lookups?: Record<string, {
6330
+ source: { ... }
6331
+ entries: { ... }
6332
+ default?: { ... }
6333
+ on_miss?: { ... }
6334
+ }>
6335
+ constants?: Record<string, unknown>
6336
+ file_source?: string
6337
+ required_params?: string[]
6095
6338
  secure_proxy?: {
6096
6339
  use_case_slug: { ... }
6097
6340
  }
@@ -6122,7 +6365,7 @@ type UpdateFileProxyUseCaseRequest = {
6122
6365
  body?: { ... }
6123
6366
  response_type: { ... }
6124
6367
  }>
6125
- response: {
6368
+ response?: {
6126
6369
  body: { ... }
6127
6370
  encoding: { ... }
6128
6371
  filename?: { ... }
@@ -6228,6 +6471,7 @@ type UseCaseHistoryEntry = {
6228
6471
  type: "outbound"
6229
6472
  configuration?: {
6230
6473
  event_catalog_event: string
6474
+ event_filter?: string
6231
6475
  mappings: Array<{
6232
6476
  id?: { ... }
6233
6477
  name: { ... }
@@ -6237,6 +6481,7 @@ type UseCaseHistoryEntry = {
6237
6481
  created_at?: { ... }
6238
6482
  updated_at?: { ... }
6239
6483
  }>
6484
+ ack_tracking?: "on" | "off"
6240
6485
  }
6241
6486
  } | {
6242
6487
  id: string // uuid
@@ -6252,34 +6497,32 @@ type UseCaseHistoryEntry = {
6252
6497
  history_created_at: string // date-time
6253
6498
  type: "file_proxy"
6254
6499
  configuration?: {
6500
+ direction?: "download" | "upload"
6501
+ upload?: {
6502
+ max_file_bytes?: { ... }
6503
+ max_delivery_attempts?: { ... }
6504
+ success_when?: { ... }
6505
+ external_id?: { ... }
6506
+ }
6507
+ fan_out?: {
6508
+ enabled: { ... }
6509
+ split_expression?: { ... }
6510
+ }
6511
+ params_mapping?: string
6512
+ lookups?: Record<string, {
6513
+ source: { ... }
6514
+ entries: { ... }
6515
+ default?: { ... }
6516
+ on_miss?: { ... }
6517
+ }>
6518
+ constants?: Record<string, unknown>
6519
+ file_source?: string
6520
+ required_params?: string[]
6255
6521
  secure_proxy?: {
6256
6522
  use_case_slug: { ... }
6257
6523
  }
6258
6524
  auth?: {
6259
6525
  type: { ... }
6260
- token_url: { ... }
6261
- client_id: { ... }
6262
- client_secret: { ... }
6263
- scope?: { ... }
6264
- audience?: { ... }
6265
- resource?: { ... }
6266
- username?: { ... }
6267
- password?: { ... }
6268
- body_params?: { ... }
6269
- headers?: { ... }
6270
- query_params?: { ... }
6271
- }
6272
- params?: Array<{
6273
- name: { ... }
6274
- required: { ... }
6275
- description?: { ... }
6276
- }>
6277
- allowed_origins?: string // uri[]
6278
- steps: Array<{
6279
- url: { ... }
6280
- method: { ... }
6281
- headers?: { ... }
6282
- body?: { ... }
6283
6526
  // ...
6284
6527
  }
6285
6528
  ```
@@ -6359,6 +6602,7 @@ type OutboundUseCaseHistoryEntry = {
6359
6602
  type: "outbound"
6360
6603
  configuration?: {
6361
6604
  event_catalog_event: string
6605
+ event_filter?: string
6362
6606
  mappings: Array<{
6363
6607
  id?: { ... }
6364
6608
  name: { ... }
@@ -6368,6 +6612,7 @@ type OutboundUseCaseHistoryEntry = {
6368
6612
  created_at?: { ... }
6369
6613
  updated_at?: { ... }
6370
6614
  }>
6615
+ ack_tracking?: "on" | "off"
6371
6616
  }
6372
6617
  }
6373
6618
  ```
@@ -6389,6 +6634,27 @@ type FileProxyUseCaseHistoryEntry = {
6389
6634
  history_created_at: string // date-time
6390
6635
  type: "file_proxy"
6391
6636
  configuration?: {
6637
+ direction?: "download" | "upload"
6638
+ upload?: {
6639
+ max_file_bytes?: { ... }
6640
+ max_delivery_attempts?: { ... }
6641
+ success_when?: { ... }
6642
+ external_id?: { ... }
6643
+ }
6644
+ fan_out?: {
6645
+ enabled: { ... }
6646
+ split_expression?: { ... }
6647
+ }
6648
+ params_mapping?: string
6649
+ lookups?: Record<string, {
6650
+ source: { ... }
6651
+ entries: { ... }
6652
+ default?: { ... }
6653
+ on_miss?: { ... }
6654
+ }>
6655
+ constants?: Record<string, unknown>
6656
+ file_source?: string
6657
+ required_params?: string[]
6392
6658
  secure_proxy?: {
6393
6659
  use_case_slug: { ... }
6394
6660
  }
@@ -6419,7 +6685,7 @@ type FileProxyUseCaseHistoryEntry = {
6419
6685
  body?: { ... }
6420
6686
  response_type: { ... }
6421
6687
  }>
6422
- response: {
6688
+ response?: {
6423
6689
  body: { ... }
6424
6690
  encoding: { ... }
6425
6691
  filename?: { ... }
@@ -6903,13 +7169,35 @@ type CommitTypesResponse = {
6903
7169
 
6904
7170
  ### `FileProxyUseCaseConfiguration`
6905
7171
 
6906
- Configuration for file_proxy use cases. Defines how to authenticate and fetch files from external document systems.
7172
+ Configuration for file_proxy use cases. Defines how to authenticate and move files
7173
+ between epilot and an external document system, in either direction (see `direction`).
6907
7174
 
6908
- The file proxy download URL always requires `orgId`, `integrationId`, and either `useCaseSlug` (recommended) or `useCaseId` (legacy UUID) as query parameters.
6909
- The `orgId` is included
7175
+ **Download** (`direction: download`, the default) fetches a file from the external system
7176
+ and serves it to a browser. The downloa
6910
7177
 
6911
7178
  ```ts
6912
7179
  type FileProxyUseCaseConfiguration = {
7180
+ direction?: "download" | "upload"
7181
+ upload?: {
7182
+ max_file_bytes?: number
7183
+ max_delivery_attempts?: number
7184
+ success_when?: string
7185
+ external_id?: string
7186
+ }
7187
+ fan_out?: {
7188
+ enabled: boolean
7189
+ split_expression?: string
7190
+ }
7191
+ params_mapping?: string
7192
+ lookups?: Record<string, {
7193
+ source: string
7194
+ entries: Record<string, string>
7195
+ default?: string
7196
+ on_miss?: "default" | "warn" | "fail"
7197
+ }>
7198
+ constants?: Record<string, unknown>
7199
+ file_source?: string
7200
+ required_params?: string[]
6913
7201
  secure_proxy?: {
6914
7202
  use_case_slug: string
6915
7203
  }
@@ -6935,12 +7223,12 @@ type FileProxyUseCaseConfiguration = {
6935
7223
  allowed_origins?: string // uri[]
6936
7224
  steps: Array<{
6937
7225
  url: string
6938
- method: "GET" | "POST"
7226
+ method: "GET" | "POST" | "PUT" | "PATCH"
6939
7227
  headers?: Record<string, string>
6940
7228
  body?: string
6941
7229
  response_type: "json" | "binary"
6942
7230
  }>
6943
- response: {
7231
+ response?: {
6944
7232
  body: string
6945
7233
  encoding: "base64" | "binary"
6946
7234
  filename?: string
@@ -6992,15 +7280,51 @@ type FileProxyParam = {
6992
7280
  ```ts
6993
7281
  type FileProxyStep = {
6994
7282
  url: string
6995
- method: "GET" | "POST"
7283
+ method: "GET" | "POST" | "PUT" | "PATCH"
6996
7284
  headers?: Record<string, string>
6997
7285
  body?: string
6998
7286
  response_type: "json" | "binary"
6999
7287
  }
7000
7288
  ```
7001
7289
 
7290
+ ### `FileProxyFanOutConfig`
7291
+
7292
+ Splits one event into several independent deliveries.
7293
+
7294
+ Mirrors the inbound mapping idiom, where an entity's JSONata expression returning an array
7295
+ produces one entity update per element. Made explicit with a toggle here because an upload
7296
+ is also legitimately used without splitting, and because auto-d
7297
+
7298
+ ```ts
7299
+ type FileProxyFanOutConfig = {
7300
+ enabled: boolean
7301
+ split_expression?: string
7302
+ }
7303
+ ```
7304
+
7305
+ ### `FileProxyUploadConfig`
7306
+
7307
+ Upload-side settings for a file_proxy use case with `direction: upload`.
7308
+ Everything about WHAT is sent lives on the outbound mapping
7309
+ (see `FileProxyDeliveryConfig`); this object only governs HOW the transfer is bounded
7310
+ and judged.
7311
+
7312
+
7313
+ ```ts
7314
+ type FileProxyUploadConfig = {
7315
+ max_file_bytes?: number
7316
+ max_delivery_attempts?: number
7317
+ success_when?: string
7318
+ external_id?: string
7319
+ }
7320
+ ```
7321
+
7002
7322
  ### `FileProxyResponseConfig`
7003
7323
 
7324
+ How to extract the file from the step results. REQUIRED when `direction` is `download`;
7325
+ rejected when `direction` is `upload` (an upload has no file to extract).
7326
+
7327
+
7004
7328
  ```ts
7005
7329
  type FileProxyResponseConfig = {
7006
7330
  body: string
@@ -7247,7 +7571,7 @@ type IntegrationConfigurationV2 = {
7247
7571
 
7248
7572
  ### `OutboundMapping`
7249
7573
 
7250
- A mapping that delivers an event to an external system — either pushed to a webhook (with a JSONata payload transformation) or made available on the pull-based poll queue (raw event payload, no transformation)
7574
+ 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
7251
7575
 
7252
7576
  ```ts
7253
7577
  type OutboundMapping = {
@@ -7265,6 +7589,9 @@ type OutboundMapping = {
7265
7589
  retention_days?: number
7266
7590
  poison_policy?: "dead_letter" | "block"
7267
7591
  max_delivery_attempts?: number
7592
+ } | {
7593
+ type: "file_proxy"
7594
+ use_case_slug: string
7268
7595
  }
7269
7596
  created_at?: string // date-time
7270
7597
  updated_at?: string // date-time
@@ -7273,7 +7600,7 @@ type OutboundMapping = {
7273
7600
 
7274
7601
  ### `DeliveryConfig`
7275
7602
 
7276
- 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)
7603
+ 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
7277
7604
 
7278
7605
  ```ts
7279
7606
  type DeliveryConfig = {
@@ -7286,6 +7613,9 @@ type DeliveryConfig = {
7286
7613
  retention_days?: number
7287
7614
  poison_policy?: "dead_letter" | "block"
7288
7615
  max_delivery_attempts?: number
7616
+ } | {
7617
+ type: "file_proxy"
7618
+ use_case_slug: string
7289
7619
  }
7290
7620
  ```
7291
7621
 
@@ -7315,6 +7645,35 @@ type PollDeliveryConfig = {
7315
7645
  }
7316
7646
  ```
7317
7647
 
7648
+ ### `FileProxyDeliveryConfig`
7649
+
7650
+ Push delivery to an external document system through a `file_proxy` use case.
7651
+
7652
+ A pure pointer, deliberately. The outbound use case decides WHEN to deliver — its event
7653
+ name plus `event_filter` — and the referenced `file_proxy` use case decides WHAT and HOW:
7654
+ which items to fan out over (`fan_out`), wh
7655
+
7656
+ ```ts
7657
+ type FileProxyDeliveryConfig = {
7658
+ type: "file_proxy"
7659
+ use_case_slug: string
7660
+ }
7661
+ ```
7662
+
7663
+ ### `FileProxyLookup`
7664
+
7665
+ A named translation from a value in the event to a value the external system expects.
7666
+
7667
+
7668
+ ```ts
7669
+ type FileProxyLookup = {
7670
+ source: string
7671
+ entries: Record<string, string>
7672
+ default?: string
7673
+ on_miss?: "default" | "warn" | "fail"
7674
+ }
7675
+ ```
7676
+
7318
7677
  ### `OutboundStatusResponse`
7319
7678
 
7320
7679
  ```ts
@@ -7344,6 +7703,15 @@ type OutboundStatusResponse = {
7344
7703
  blocked: { ... }
7345
7704
  dlq_count: { ... }
7346
7705
  }
7706
+ file_proxy?: Array<{
7707
+ mapping_id: { ... }
7708
+ use_case_slug: { ... }
7709
+ resolved: { ... }
7710
+ target_use_case_id?: { ... }
7711
+ target_enabled?: { ... }
7712
+ target_updated_at?: { ... }
7713
+ unresolved_reason?: { ... }
7714
+ }>
7347
7715
  }>
7348
7716
  }
7349
7717
  ```
@@ -7376,6 +7744,35 @@ type OutboundUseCaseStatus = {
7376
7744
  blocked: boolean
7377
7745
  dlq_count: number
7378
7746
  }
7747
+ file_proxy?: Array<{
7748
+ mapping_id: string
7749
+ use_case_slug: string
7750
+ resolved: boolean
7751
+ target_use_case_id?: string // uuid
7752
+ target_enabled?: boolean
7753
+ target_updated_at?: string // date-time
7754
+ unresolved_reason?: "not_found" | "wrong_type" | "wrong_direction" | "disabled"
7755
+ }>
7756
+ }
7757
+ ```
7758
+
7759
+ ### `OutboundFileProxyTargetStatus`
7760
+
7761
+ Resolution state of one file_proxy mapping's referenced upload use case.
7762
+
7763
+ Because the transport lives on a separate use case, edits to the endpoint or credentials
7764
+ do not appear in THIS use case's history. `target_updated_at` is the hook that lets an
7765
+ operator notice a target changed underneath a deli
7766
+
7767
+ ```ts
7768
+ type OutboundFileProxyTargetStatus = {
7769
+ mapping_id: string
7770
+ use_case_slug: string
7771
+ resolved: boolean
7772
+ target_use_case_id?: string // uuid
7773
+ target_enabled?: boolean
7774
+ target_updated_at?: string // date-time
7775
+ unresolved_reason?: "not_found" | "wrong_type" | "wrong_direction" | "disabled"
7379
7776
  }
7380
7777
  ```
7381
7778