@epilot/sdk 2.20.50 → 2.20.52

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 (147) hide show
  1. package/README.md +1 -0
  2. package/definitions/external-values-runtime.json +1 -0
  3. package/definitions/external-values.json +450 -0
  4. package/definitions/pricing.json +206 -8
  5. package/dist/README-B6X6BXAW.cjs +7 -0
  6. package/dist/README-LE2VBY2Y.js +7 -0
  7. package/dist/{_index-UWRY3DNX.cjs → _index-DEYTKG4Z.cjs} +4 -1
  8. package/dist/{_index-UBUNWMRP.js → _index-HL3HOTXB.js} +3 -0
  9. package/dist/apis/access-token.cjs +6 -6
  10. package/dist/apis/access-token.js +1 -1
  11. package/dist/apis/address-suggestions.cjs +6 -6
  12. package/dist/apis/address-suggestions.js +1 -1
  13. package/dist/apis/address.cjs +6 -6
  14. package/dist/apis/address.js +1 -1
  15. package/dist/apis/ai-agents.cjs +6 -6
  16. package/dist/apis/ai-agents.js +1 -1
  17. package/dist/apis/app.cjs +6 -6
  18. package/dist/apis/app.js +1 -1
  19. package/dist/apis/audit-logs.cjs +6 -6
  20. package/dist/apis/audit-logs.js +1 -1
  21. package/dist/apis/automation.cjs +6 -6
  22. package/dist/apis/automation.js +1 -1
  23. package/dist/apis/billing.cjs +6 -6
  24. package/dist/apis/billing.js +1 -1
  25. package/dist/apis/blueprint-manifest.cjs +6 -6
  26. package/dist/apis/blueprint-manifest.js +1 -1
  27. package/dist/apis/calendar.cjs +6 -6
  28. package/dist/apis/calendar.js +1 -1
  29. package/dist/apis/chat.cjs +6 -6
  30. package/dist/apis/chat.js +1 -1
  31. package/dist/apis/configuration-hub.cjs +6 -6
  32. package/dist/apis/configuration-hub.js +1 -1
  33. package/dist/apis/consent.cjs +6 -6
  34. package/dist/apis/consent.js +1 -1
  35. package/dist/apis/customer-portal.cjs +6 -6
  36. package/dist/apis/customer-portal.js +1 -1
  37. package/dist/apis/dashboard.cjs +6 -6
  38. package/dist/apis/dashboard.js +1 -1
  39. package/dist/apis/data-governance.cjs +6 -6
  40. package/dist/apis/data-governance.js +1 -1
  41. package/dist/apis/deduplication.cjs +6 -6
  42. package/dist/apis/deduplication.js +1 -1
  43. package/dist/apis/design.cjs +6 -6
  44. package/dist/apis/design.js +1 -1
  45. package/dist/apis/document.cjs +6 -6
  46. package/dist/apis/document.js +1 -1
  47. package/dist/apis/email-settings.cjs +6 -6
  48. package/dist/apis/email-settings.js +1 -1
  49. package/dist/apis/email-template.cjs +6 -6
  50. package/dist/apis/email-template.js +1 -1
  51. package/dist/apis/entity-mapping.cjs +6 -6
  52. package/dist/apis/entity-mapping.js +1 -1
  53. package/dist/apis/entity.cjs +6 -6
  54. package/dist/apis/entity.js +1 -1
  55. package/dist/apis/environments.cjs +6 -6
  56. package/dist/apis/environments.js +1 -1
  57. package/dist/apis/event-catalog.cjs +6 -6
  58. package/dist/apis/event-catalog.js +1 -1
  59. package/dist/apis/external-values.cjs +38 -0
  60. package/dist/apis/external-values.d.cts +18 -0
  61. package/dist/apis/external-values.d.ts +18 -0
  62. package/dist/apis/external-values.js +38 -0
  63. package/dist/apis/file.cjs +6 -6
  64. package/dist/apis/file.js +1 -1
  65. package/dist/apis/iban.cjs +6 -6
  66. package/dist/apis/iban.js +1 -1
  67. package/dist/apis/identity.cjs +6 -6
  68. package/dist/apis/identity.js +1 -1
  69. package/dist/apis/integration-toolkit.cjs +6 -6
  70. package/dist/apis/integration-toolkit.js +1 -1
  71. package/dist/apis/journey.cjs +6 -6
  72. package/dist/apis/journey.js +1 -1
  73. package/dist/apis/kanban.cjs +6 -6
  74. package/dist/apis/kanban.js +1 -1
  75. package/dist/apis/message.cjs +6 -6
  76. package/dist/apis/message.js +1 -1
  77. package/dist/apis/metering.cjs +6 -6
  78. package/dist/apis/metering.js +1 -1
  79. package/dist/apis/notes.cjs +6 -6
  80. package/dist/apis/notes.js +1 -1
  81. package/dist/apis/notification.cjs +6 -6
  82. package/dist/apis/notification.js +1 -1
  83. package/dist/apis/organization.cjs +6 -6
  84. package/dist/apis/organization.js +1 -1
  85. package/dist/apis/partner-directory.cjs +6 -6
  86. package/dist/apis/partner-directory.js +1 -1
  87. package/dist/apis/permissions.cjs +6 -6
  88. package/dist/apis/permissions.js +1 -1
  89. package/dist/apis/pricing-tier.cjs +6 -6
  90. package/dist/apis/pricing-tier.js +1 -1
  91. package/dist/apis/pricing.cjs +6 -6
  92. package/dist/apis/pricing.d.cts +2 -2
  93. package/dist/apis/pricing.d.ts +2 -2
  94. package/dist/apis/pricing.js +1 -1
  95. package/dist/apis/purpose.cjs +6 -6
  96. package/dist/apis/purpose.js +1 -1
  97. package/dist/apis/query.cjs +6 -6
  98. package/dist/apis/query.js +1 -1
  99. package/dist/apis/sandbox.cjs +6 -6
  100. package/dist/apis/sandbox.js +1 -1
  101. package/dist/apis/sharing.cjs +6 -6
  102. package/dist/apis/sharing.js +1 -1
  103. package/dist/apis/snapshot.cjs +6 -6
  104. package/dist/apis/snapshot.js +1 -1
  105. package/dist/apis/submission.cjs +6 -6
  106. package/dist/apis/submission.js +1 -1
  107. package/dist/apis/target.cjs +6 -6
  108. package/dist/apis/target.js +1 -1
  109. package/dist/apis/targeting.cjs +6 -6
  110. package/dist/apis/targeting.js +1 -1
  111. package/dist/apis/template-variables.cjs +6 -6
  112. package/dist/apis/template-variables.js +1 -1
  113. package/dist/apis/user.cjs +6 -6
  114. package/dist/apis/user.js +1 -1
  115. package/dist/apis/validation-rules.cjs +6 -6
  116. package/dist/apis/validation-rules.js +1 -1
  117. package/dist/apis/webhooks.cjs +6 -6
  118. package/dist/apis/webhooks.js +1 -1
  119. package/dist/apis/workflow-definition.cjs +6 -6
  120. package/dist/apis/workflow-definition.js +1 -1
  121. package/dist/apis/workflow.cjs +6 -6
  122. package/dist/apis/workflow.js +1 -1
  123. package/dist/chunk-CMEMMJ3T.js +14 -0
  124. package/dist/chunk-NC33X2WL.cjs +14 -0
  125. package/dist/{chunk-VMA2UKDS.js → chunk-OI4LZOVC.js} +5 -3
  126. package/dist/{chunk-TF4SGSFP.cjs → chunk-YJ7BKTTM.cjs} +5 -3
  127. package/dist/external-values-DALDMPMB.js +7 -0
  128. package/dist/external-values-XG5LFKZQ.cjs +7 -0
  129. package/dist/external-values-runtime-BPR3H6RL.cjs +5 -0
  130. package/dist/external-values-runtime-VXZRGQCT.js +5 -0
  131. package/dist/external-values.d-DjP9C_-r.d.cts +391 -0
  132. package/dist/external-values.d-DjP9C_-r.d.ts +391 -0
  133. package/dist/index.cjs +22 -14
  134. package/dist/index.d.cts +58 -56
  135. package/dist/index.d.ts +58 -56
  136. package/dist/index.js +15 -7
  137. package/dist/pricing-5ZPVKMML.js +7 -0
  138. package/dist/pricing-VZXOELOD.cjs +7 -0
  139. package/dist/{pricing.d-BMV5QoZ7.d.cts → pricing.d-V26VSdNU.d.cts} +267 -60
  140. package/dist/{pricing.d-BMV5QoZ7.d.ts → pricing.d-V26VSdNU.d.ts} +267 -60
  141. package/docs/external-values.md +330 -0
  142. package/docs/pricing.md +395 -25
  143. package/package.json +10 -1
  144. package/dist/README-OSHX3IVR.cjs +0 -7
  145. package/dist/README-ZSJDIPZZ.js +0 -7
  146. package/dist/pricing-FYBJTHHN.js +0 -7
  147. package/dist/pricing-M2FG4LZ6.cjs +0 -7
@@ -6134,7 +6134,9 @@
6134
6134
  },
6135
6135
  "ResolveContext": {
6136
6136
  "type": "object",
6137
- "additionalProperties": true,
6137
+ "additionalProperties": {
6138
+ "$ref": "#/components/schemas/ContextConditionValue"
6139
+ },
6138
6140
  "description": "The situation to resolve for: a flat map keyed by condition name. A condition left out\nmatches only variants that leave it unpinned; an empty map therefore returns the `default`\nvariant.\n\nEach value is an exact value, typed by its condition, or a single-operator predicate:\n\n- `{ \"lt\": v }`, `{ \"lte\": v }`, `{ \"gt\": v }`, `{ \"gte\": v }` — order, against a `number`\n or `date` condition\n- `{ \"in\": [...] }` — membership, against a `string`, `select` or `number` condition\n- `{ \"between\": \"2026-03-01\" }` — `daterange` containment, which a plain date also means\n- `{ \"exists\": true }` — pinned to any value; `{ \"exists\": false }` — left unpinned\n\nAn `in` list carries at most 50,000 values. A `string` or `select` matches exactly and\ncase-sensitively. A `location` of format\n`postal_code` is the postal code itself; one of format `postal_code_city` is an object carrying\n`postal_code` and `city`, named as an entity address names them, whose city is compared\ncase- and whitespace-insensitively.\n\n`default` and names beginning with `_` are reserved and cannot be supplied.\n",
6139
6141
  "example": {
6140
6142
  "postal_code": "46045",
@@ -6258,7 +6260,9 @@
6258
6260
  },
6259
6261
  "VariantConditions": {
6260
6262
  "type": "object",
6261
- "additionalProperties": true,
6263
+ "additionalProperties": {
6264
+ "$ref": "#/components/schemas/PinnedConditionValue"
6265
+ },
6262
6266
  "required": [
6263
6267
  "default"
6264
6268
  ],
@@ -6275,12 +6279,204 @@
6275
6279
  },
6276
6280
  "PinnedConditions": {
6277
6281
  "type": "object",
6278
- "additionalProperties": true,
6282
+ "additionalProperties": {
6283
+ "$ref": "#/components/schemas/PinnedConditionValue"
6284
+ },
6279
6285
  "description": "The situation this variant applies to: a flat map keyed by condition name. A condition left\nout is a wildcard, which is what makes adding a condition to a schema non-breaking for\nexisting variants.\n\nExact values only; predicates belong to reads. Values are stored canonicalized for their\ntype: a `date` becomes millisecond-precision UTC, a `daterange` an object carrying `from`\nand `until` where an empty string is an open end, a `location` of format `postal_code` the\npostal code itself and one of format `postal_code_city` an object carrying `postal_code` and\n`city`.\n\n`default` and names beginning with `_` are reserved; use the request's `default` flag.\n",
6280
6286
  "example": {
6281
6287
  "postal_code": "46045"
6282
6288
  }
6283
6289
  },
6290
+ "PinnedConditionValue": {
6291
+ "description": "One condition's exact value. Which of these shapes a condition takes is set by its type in the\nentity's schema, and a value of another shape is refused with `PIN_FORMAT_INVALID`.\n",
6292
+ "anyOf": [
6293
+ {
6294
+ "type": "string"
6295
+ },
6296
+ {
6297
+ "type": "number"
6298
+ },
6299
+ {
6300
+ "type": "boolean"
6301
+ },
6302
+ {
6303
+ "$ref": "#/components/schemas/ConditionDateRange"
6304
+ },
6305
+ {
6306
+ "$ref": "#/components/schemas/PostalCodeCity"
6307
+ }
6308
+ ]
6309
+ },
6310
+ "ConditionDateRange": {
6311
+ "type": "object",
6312
+ "additionalProperties": false,
6313
+ "description": "The value of a `daterange` condition. A bound that is absent, `null` or an empty string is an\nopen end; stored, an open end is an empty string.\n",
6314
+ "properties": {
6315
+ "from": {
6316
+ "type": "string",
6317
+ "nullable": true,
6318
+ "example": "2026-01-01"
6319
+ },
6320
+ "until": {
6321
+ "type": "string",
6322
+ "nullable": true,
6323
+ "example": "2027-01-01"
6324
+ }
6325
+ }
6326
+ },
6327
+ "PostalCodeCity": {
6328
+ "type": "object",
6329
+ "additionalProperties": false,
6330
+ "description": "The value of a `location` condition of format `postal_code_city`, its parts named as an entity\naddress names them.\n",
6331
+ "required": [
6332
+ "postal_code",
6333
+ "city"
6334
+ ],
6335
+ "properties": {
6336
+ "postal_code": {
6337
+ "type": "string",
6338
+ "minLength": 1,
6339
+ "example": "50667"
6340
+ },
6341
+ "city": {
6342
+ "type": "string",
6343
+ "minLength": 1,
6344
+ "example": "Köln"
6345
+ }
6346
+ }
6347
+ },
6348
+ "ContextConditionValue": {
6349
+ "description": "One condition's value in a resolve context or listing filter: an exact value, or a predicate.\nWhich of these a condition takes is set by its type in the entity's schema, and a value of\nanother shape is refused with `CONTEXT_FORMAT_INVALID`, or `OPERATOR_UNSUPPORTED` for a\npredicate its type does not support.\n",
6350
+ "anyOf": [
6351
+ {
6352
+ "type": "string"
6353
+ },
6354
+ {
6355
+ "type": "number"
6356
+ },
6357
+ {
6358
+ "type": "boolean"
6359
+ },
6360
+ {
6361
+ "$ref": "#/components/schemas/PostalCodeCity"
6362
+ },
6363
+ {
6364
+ "$ref": "#/components/schemas/ConditionPredicate"
6365
+ }
6366
+ ]
6367
+ },
6368
+ "ConditionPredicate": {
6369
+ "description": "A single-operator predicate.",
6370
+ "oneOf": [
6371
+ {
6372
+ "type": "object",
6373
+ "additionalProperties": false,
6374
+ "required": [
6375
+ "lt"
6376
+ ],
6377
+ "properties": {
6378
+ "lt": {
6379
+ "$ref": "#/components/schemas/OrderedConditionOperand"
6380
+ }
6381
+ }
6382
+ },
6383
+ {
6384
+ "type": "object",
6385
+ "additionalProperties": false,
6386
+ "required": [
6387
+ "lte"
6388
+ ],
6389
+ "properties": {
6390
+ "lte": {
6391
+ "$ref": "#/components/schemas/OrderedConditionOperand"
6392
+ }
6393
+ }
6394
+ },
6395
+ {
6396
+ "type": "object",
6397
+ "additionalProperties": false,
6398
+ "required": [
6399
+ "gt"
6400
+ ],
6401
+ "properties": {
6402
+ "gt": {
6403
+ "$ref": "#/components/schemas/OrderedConditionOperand"
6404
+ }
6405
+ }
6406
+ },
6407
+ {
6408
+ "type": "object",
6409
+ "additionalProperties": false,
6410
+ "required": [
6411
+ "gte"
6412
+ ],
6413
+ "properties": {
6414
+ "gte": {
6415
+ "$ref": "#/components/schemas/OrderedConditionOperand"
6416
+ }
6417
+ }
6418
+ },
6419
+ {
6420
+ "type": "object",
6421
+ "additionalProperties": false,
6422
+ "required": [
6423
+ "in"
6424
+ ],
6425
+ "properties": {
6426
+ "in": {
6427
+ "type": "array",
6428
+ "minItems": 1,
6429
+ "items": {
6430
+ "anyOf": [
6431
+ {
6432
+ "type": "string"
6433
+ },
6434
+ {
6435
+ "type": "number"
6436
+ }
6437
+ ]
6438
+ }
6439
+ }
6440
+ }
6441
+ },
6442
+ {
6443
+ "type": "object",
6444
+ "additionalProperties": false,
6445
+ "required": [
6446
+ "between"
6447
+ ],
6448
+ "properties": {
6449
+ "between": {
6450
+ "type": "string",
6451
+ "description": "The instant a `daterange` condition's range must contain."
6452
+ }
6453
+ }
6454
+ },
6455
+ {
6456
+ "type": "object",
6457
+ "additionalProperties": false,
6458
+ "required": [
6459
+ "exists"
6460
+ ],
6461
+ "properties": {
6462
+ "exists": {
6463
+ "type": "boolean"
6464
+ }
6465
+ }
6466
+ }
6467
+ ]
6468
+ },
6469
+ "OrderedConditionOperand": {
6470
+ "description": "A number, or a date as an RFC 3339 date or date-time.",
6471
+ "anyOf": [
6472
+ {
6473
+ "type": "number"
6474
+ },
6475
+ {
6476
+ "type": "string"
6477
+ }
6478
+ ]
6479
+ },
6284
6480
  "VariantValues": {
6285
6481
  "type": "object",
6286
6482
  "additionalProperties": true,
@@ -6907,7 +7103,9 @@
6907
7103
  },
6908
7104
  "VariantConditionFilter": {
6909
7105
  "type": "object",
6910
- "additionalProperties": true,
7106
+ "additionalProperties": {
7107
+ "$ref": "#/components/schemas/ContextConditionValue"
7108
+ },
6911
7109
  "description": "Which pins a variant must carry to be listed: a flat map keyed by condition name, taking the\nsame exact values and predicates a resolve context does. A condition left out is not\nfiltered on. An `in` list carries at most 50,000 values.\n\nA variant matches only where it pins the condition — unlike `:resolve`, where an unpinned\ncondition matches any value. `{ \"exists\": false }` selects the variants that leave it\nunpinned.\n\n`default` is accepted as an exact boolean and takes no predicate: `true` selects the\nentity's fallback variant, `false` every variant that is not it. Names beginning with `_`\nare reserved.\n",
6912
7110
  "example": {
6913
7111
  "postal_code": "46045",
@@ -11276,7 +11474,7 @@
11276
11474
  "CatalogContext": {
11277
11475
  "type": "object",
11278
11476
  "additionalProperties": false,
11279
- "description": "One context per entity type, each the authenticated resolve's context and checked against\nthat type's schema alone. A product resolves against `product`, a price and each of a\ncomposite's components against `price`, and a coupon against `coupon`. A type left out\nresolves against an empty context, which serves the `default` variant.\n",
11477
+ "description": "One context per entity type, each the authenticated resolve's context and checked against\nthat type's schema alone. A product resolves against `product`, and a price and each of a\ncomposite's components against `price`. A type left out resolves against an empty context,\nwhich serves the `default` variant.\n",
11280
11478
  "properties": {
11281
11479
  "product": {
11282
11480
  "$ref": "#/components/schemas/ResolveContext"
@@ -11424,7 +11622,7 @@
11424
11622
  },
11425
11623
  "ResolvedPriceComponents": {
11426
11624
  "type": "object",
11427
- "description": "The components of a composite price as the v2 catalog serves them: hydrated in place, and\na component that is itself conditional resolved against the same context, carrying the\ndiscriminators a resolved payload carries. A conditional component with no variant in\neffect — nothing matches and there is no default — is left out, as a deleted component is\n(ADR 0048).\n",
11625
+ "description": "The components of a composite price as the v2 catalog serves them: hydrated in place, and\na component that is itself conditional resolved against the same context, carrying the\ndiscriminators a resolved payload carries. A conditional component with no variant in\neffect — nothing matches and there is no default — is left out, as a deleted component is.\n",
11428
11626
  "properties": {
11429
11627
  "price_components": {
11430
11628
  "type": "array",
@@ -11575,14 +11773,14 @@
11575
11773
  },
11576
11774
  "price_components": {
11577
11775
  "type": "array",
11578
- "description": "Present for a composite price that serves at least one component: the components this\npair is the combination of, each with its variant where one produced it. A conditional\ncomponent with no variant in effect is left out of the composite and is not named here\n(ADR 0048). A component line item carries no reference of its own.\n",
11776
+ "description": "Present for a composite price that serves at least one component: the components this\npair is the combination of, each with its variant where one produced it. A conditional\ncomponent with no variant in effect is left out of the composite and is not named here.\nA component line item carries no reference of its own.\n",
11579
11777
  "items": {
11580
11778
  "$ref": "#/components/schemas/CatalogReferenceMember"
11581
11779
  }
11582
11780
  },
11583
11781
  "coupons": {
11584
11782
  "type": "array",
11585
- "description": "Present when coupons apply to the price. A coupon's `variant` exists only once coupons\ncan be conditional.\n",
11783
+ "description": "Present when coupons apply to the price. Coupons are served as stored, so a coupon member\ncarries no `variant`.\n",
11586
11784
  "items": {
11587
11785
  "$ref": "#/components/schemas/CatalogReferenceMember"
11588
11786
  }
@@ -0,0 +1,7 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});require('./chunk-NJK5F5TF.cjs');
2
+
3
+ // src/docs/README.json
4
+ var README_default = "<h1 align=\"center\"><img alt=\"epilot\" src=\"https://raw.githubusercontent.com/epilot-dev/sdk-js/main/logo.png\" width=\"200\"><br>@epilot/sdk</h1>\n\n<p align=\"center\">\n <a href=\"https://github.com/epilot-dev/sdk-js/actions?query=workflow%3ACI\"><img src=\"https://github.com/epilot-dev/sdk-js/workflows/CI/badge.svg\" alt=\"CI\"></a>\n <a href=\"https://www.npmjs.com/package/@epilot/sdk\"><img src=\"https://img.shields.io/npm/v/@epilot/sdk.svg\" alt=\"npm version\"></a>\n <a href=\"https://github.com/epilot-dev/sdk-js/blob/main/\"><img src=\"http://img.shields.io/:license-mit-blue.svg\" alt=\"License\"></a>\n</p>\n\n<p align=\"center\">JavaScript/TypeScript SDK for epilot APIs. Full types, tree-shakeable imports, and lazy-loaded OpenAPI specs.</p>\n\n## Install\n\n```bash\nnpm i @epilot/sdk axios openapi-client-axios\n```\n\n## Quick Start\n\n```ts\nimport { epilot } from '@epilot/sdk'\n\nepilot.authorize(() => '<my-bearer-token>')\n\nconst { data: entity } = await epilot.entity.createEntity(\n { slug: 'contact' },\n { first_name: 'John', last_name: 'Doe' },\n)\n\nconst { data: file } = await epilot.file.getFile({ id: 'file-123' })\n\nconst { data: executions } = await epilot.workflow.getExecutions()\n```\n\nAPI clients are built on [openapi-client-axios](https://openapistack.co/docs/openapi-client-axios/intro/), which generates fully typed operation methods on top of regular [axios](https://axios-http.com/docs/intro) instances. All standard axios features (interceptors, defaults, config) work as expected. Each operation is forwarded to a lazy singleton \u2014 the spec is loaded and the client initialized on first use, then cached.\n\nFull API documentation: [https://docs.epilot.io/api](https://docs.epilot.io/api)\n\n## API Reference\n\n<!-- api-reference-table -->\n| API | Import | Docs |\n| --- | ------ | ---- |\n| `epilot.accessToken` | `@epilot/sdk/access-token` | [docs](./docs/access-token.md) |\n| `epilot.address` | `@epilot/sdk/address` | [docs](./docs/address.md) |\n| `epilot.addressSuggestions` | `@epilot/sdk/address-suggestions` | [docs](./docs/address-suggestions.md) |\n| `epilot.aiAgents` | `@epilot/sdk/ai-agents` | [docs](./docs/ai-agents.md) |\n| `epilot.app` | `@epilot/sdk/app` | [docs](./docs/app.md) |\n| `epilot.auditLogs` | `@epilot/sdk/audit-logs` | [docs](./docs/audit-logs.md) |\n| `epilot.automation` | `@epilot/sdk/automation` | [docs](./docs/automation.md) |\n| `epilot.billing` | `@epilot/sdk/billing` | [docs](./docs/billing.md) |\n| `epilot.blueprintManifest` | `@epilot/sdk/blueprint-manifest` | [docs](./docs/blueprint-manifest.md) |\n| `epilot.calendar` | `@epilot/sdk/calendar` | [docs](./docs/calendar.md) |\n| `epilot.chat` | `@epilot/sdk/chat` | [docs](./docs/chat.md) |\n| `epilot.configurationHub` | `@epilot/sdk/configuration-hub` | [docs](./docs/configuration-hub.md) |\n| `epilot.consent` | `@epilot/sdk/consent` | [docs](./docs/consent.md) |\n| `epilot.customerPortal` | `@epilot/sdk/customer-portal` | [docs](./docs/customer-portal.md) |\n| `epilot.dashboard` | `@epilot/sdk/dashboard` | [docs](./docs/dashboard.md) |\n| `epilot.dataGovernance` | `@epilot/sdk/data-governance` | [docs](./docs/data-governance.md) |\n| `epilot.deduplication` | `@epilot/sdk/deduplication` | [docs](./docs/deduplication.md) |\n| `epilot.design` | `@epilot/sdk/design` | [docs](./docs/design.md) |\n| `epilot.document` | `@epilot/sdk/document` | [docs](./docs/document.md) |\n| `epilot.emailSettings` | `@epilot/sdk/email-settings` | [docs](./docs/email-settings.md) |\n| `epilot.emailTemplate` | `@epilot/sdk/email-template` | [docs](./docs/email-template.md) |\n| `epilot.entity` | `@epilot/sdk/entity` | [docs](./docs/entity.md) |\n| `epilot.entityMapping` | `@epilot/sdk/entity-mapping` | [docs](./docs/entity-mapping.md) |\n| `epilot.environments` | `@epilot/sdk/environments` | [docs](./docs/environments.md) |\n| `epilot.eventCatalog` | `@epilot/sdk/event-catalog` | [docs](./docs/event-catalog.md) |\n| `epilot.externalValues` | `@epilot/sdk/external-values` | [docs](./docs/external-values.md) |\n| `epilot.file` | `@epilot/sdk/file` | [docs](./docs/file.md) |\n| `epilot.iban` | `@epilot/sdk/iban` | [docs](./docs/iban.md) |\n| `epilot.identity` | `@epilot/sdk/identity` | [docs](./docs/identity.md) |\n| `epilot.integrationToolkit` | `@epilot/sdk/integration-toolkit` | [docs](./docs/integration-toolkit.md) |\n| `epilot.journey` | `@epilot/sdk/journey` | [docs](./docs/journey.md) |\n| `epilot.kanban` | `@epilot/sdk/kanban` | [docs](./docs/kanban.md) |\n| `epilot.message` | `@epilot/sdk/message` | [docs](./docs/message.md) |\n| `epilot.metering` | `@epilot/sdk/metering` | [docs](./docs/metering.md) |\n| `epilot.notes` | `@epilot/sdk/notes` | [docs](./docs/notes.md) |\n| `epilot.notification` | `@epilot/sdk/notification` | [docs](./docs/notification.md) |\n| `epilot.organization` | `@epilot/sdk/organization` | [docs](./docs/organization.md) |\n| `epilot.partnerDirectory` | `@epilot/sdk/partner-directory` | [docs](./docs/partner-directory.md) |\n| `epilot.permissions` | `@epilot/sdk/permissions` | [docs](./docs/permissions.md) |\n| `epilot.pricing` | `@epilot/sdk/pricing` | [docs](./docs/pricing.md) |\n| `epilot.pricingTier` | `@epilot/sdk/pricing-tier` | [docs](./docs/pricing-tier.md) |\n| `epilot.purpose` | `@epilot/sdk/purpose` | [docs](./docs/purpose.md) |\n| `epilot.query` | `@epilot/sdk/query` | [docs](./docs/query.md) |\n| `epilot.sandbox` | `@epilot/sdk/sandbox` | [docs](./docs/sandbox.md) |\n| `epilot.sharing` | `@epilot/sdk/sharing` | [docs](./docs/sharing.md) |\n| `epilot.snapshot` | `@epilot/sdk/snapshot` | [docs](./docs/snapshot.md) |\n| `epilot.submission` | `@epilot/sdk/submission` | [docs](./docs/submission.md) |\n| `epilot.targeting` | `@epilot/sdk/targeting` | [docs](./docs/targeting.md) |\n| `epilot.templateVariables` | `@epilot/sdk/template-variables` | [docs](./docs/template-variables.md) |\n| `epilot.user` | `@epilot/sdk/user` | [docs](./docs/user.md) |\n| `epilot.validationRules` | `@epilot/sdk/validation-rules` | [docs](./docs/validation-rules.md) |\n| `epilot.webhooks` | `@epilot/sdk/webhooks` | [docs](./docs/webhooks.md) |\n| `epilot.workflow` | `@epilot/sdk/workflow` | [docs](./docs/workflow.md) |\n| `epilot.workflowDefinition` | `@epilot/sdk/workflow-definition` | [docs](./docs/workflow-definition.md) |\n<!-- /api-reference-table -->\n\n## OpenAPI Spec\n\nRetrieve the full OpenAPI specification for any API at runtime. The spec is lazy-loaded on first call and cached.\n\n```ts\nimport { epilot } from '@epilot/sdk'\n\n// Via API handle\nconst entitySpec = await epilot.entity.openapi()\nconsole.log(entitySpec.info.title) // \"Entity API\"\nconsole.log(entitySpec.paths) // all paths with full schemas\n\n// Via top-level method\nconst spec = await epilot.openapi('entity')\n```\n\nFor tree-shakeable imports:\n\n```ts\nimport { openapi } from '@epilot/sdk/entity'\n\nconst spec = await openapi()\n```\n\n## Explicit Client Access\n\n```ts\nimport { epilot } from '@epilot/sdk'\n\nepilot.authorize(() => '<my-token>')\n\n// Get the cached singleton client\nconst entityClient = epilot.entity.getClient()\nconst { data } = await entityClient.getEntity({ slug: 'contact', id: '123' })\n\n// Create a fresh (non-singleton) client instance\nconst freshClient = epilot.entity.createClient()\nauthorize(freshClient, () => '<my-token>')\n```\n\n## Tree-Shakeable Imports\n\nImport only what you need. Other APIs never touch your bundle.\n\n```ts\nimport { getClient, authorize } from '@epilot/sdk/entity'\n\nconst entityClient = getClient()\nauthorize(entityClient, () => '<my-token>')\n\nconst { data } = await entityClient.getEntity({ slug: 'contact', id: '123' })\n\n// Or use the handle for direct operation forwarding\nimport { entity } from '@epilot/sdk/entity'\nconst { data } = await entity.getEntity({ slug: 'contact', id: '123' })\n```\n\n## Types\n\nEach API subpath re-exports all schema types generated from the OpenAPI spec. Import them directly:\n\n```ts\nimport type { Entity, EntitySchema, RelationAttribute } from '@epilot/sdk/entity'\nimport type { FileItem } from '@epilot/sdk/file'\nimport type { AutomationFlow } from '@epilot/sdk/automation'\n```\n\nThe `Client`, `OperationMethods`, and `PathsDictionary` types are also available for typing client instances:\n\n```ts\nimport type { Client } from '@epilot/sdk/entity'\n\nconst entityClient: Client = epilot.entity.getClient()\n```\n\n## Headers\n\n### Global Headers\n\nSet default headers applied to all clients. Useful for `x-epilot-org-id`, `x-epilot-user-id`, etc.\n\n```ts\nimport { epilot } from '@epilot/sdk'\n\nepilot.authorize(() => '<my-token>')\nepilot.headers({\n 'x-epilot-org-id': 'org-123',\n 'x-epilot-user-id': 'user-456',\n})\n\nconst { data } = await epilot.entity.searchEntities(...)\n```\n\n### Standard Axios Headers\n\nUse standard axios `defaults.headers.common` on individual clients:\n\n```ts\nconst entityClient = epilot.entity.getClient()\nentityClient.defaults.headers.common['x-epilot-org-id'] = 'org-123'\n```\n\n## Auth Patterns\n\n`authorize()` accepts a string or a function. The function form is preferred \u2014 it is called on every request, so tokens stay fresh.\n\n```ts\nimport { authorize } from '@epilot/sdk'\nimport { getClient } from '@epilot/sdk/entity'\n\n// Per-client \u2014 function predicate (recommended)\nconst entityClient = getClient()\nauthorize(entityClient, () => '<my-token>')\n\n// Per-client \u2014 async function (e.g. OAuth / session)\nauthorize(entityClient, async () => {\n return await getTokenFromSession()\n})\n\n// Per-client \u2014 static string (sets default header once)\nauthorize(entityClient, 'my-static-api-token')\n```\n\n```ts\n// Global \u2014 applies to all clients resolved from the SDK\nimport { epilot } from '@epilot/sdk'\n\nepilot.authorize(() => '<my-token>')\nepilot.authorize(async () => await getTokenFromSession())\nepilot.authorize('my-static-api-token')\n```\n\n## Fresh Client Instance\n\n```ts\nimport { createClient, authorize } from '@epilot/sdk/entity'\n\nconst entityClient = createClient()\nauthorize(entityClient, () => '<my-token>')\nentityClient.defaults.headers.common['x-epilot-org-id'] = 'org-123'\n```\n\n## Multiple SDK Instances\n\n```ts\nimport { createSDK } from '@epilot/sdk'\n\nconst sdk1 = createSDK()\nsdk1.authorize(() => '<token-for-org-1>')\nsdk1.headers({ 'x-epilot-org-id': 'org-1' })\n\nconst sdk2 = createSDK()\nsdk2.authorize(() => '<token-for-org-2>')\nsdk2.headers({ 'x-epilot-org-id': 'org-2' })\n```\n\n\n## Interceptors\n\nUse axios interceptors for custom request/response processing. Since clients are axios instances, you can use `client.interceptors` directly:\n\n```ts\nentityClient.interceptors.response.use((response) => {\n console.debug(`${response.config.method?.toUpperCase()} ${response.config.url}`, {\n status: response.status,\n data: response.data,\n })\n return response\n})\n```\n\nOr register global interceptors applied to all clients:\n\n```ts\nepilot.interceptors.request((config) => {\n config.headers['x-correlation-id'] = generateTraceId()\n return config\n})\n```\n\n## Auto-Retry (429 Too Many Requests)\n\nThe SDK automatically retries requests that receive a `429 Too Many Requests` response. It respects the `Retry-After` header (in seconds) to determine how long to wait before retrying.\n\nEnabled by default with up to 3 retries.\n\n```ts\nimport { epilot } from '@epilot/sdk'\n\n// Customize retry behavior\nepilot.retry({ maxRetries: 5, defaultDelayMs: 2000 })\n\n// Disable retries\nepilot.retry({ maxRetries: 0 })\n```\n\n| Option | Default | Description |\n| --- | --- | --- |\n| `maxRetries` | `3` | Maximum number of retries. Set to `0` to disable. |\n| `defaultDelayMs` | `1000` | Fallback delay in ms when `Retry-After` header is missing. |\n\nFor individually imported clients (tree-shakeable imports), apply the interceptor manually:\n\n```ts\nimport { getClient, authorize } from '@epilot/sdk/entity'\nimport { applyRetryInterceptor } from '@epilot/sdk'\n\nconst entityClient = getClient()\nauthorize(entityClient, () => '<my-token>')\napplyRetryInterceptor({ client: entityClient, config: { maxRetries: 3 } })\n```\n\n## Large Response Handling (413 Payload Too Large)\n\nepilot APIs use a [large response middleware](https://github.com/epilot-dev/aws-lambda-utility-middlewares) to work around the AWS Lambda 6MB response limit. When a response exceeds ~5.1MB, the API uploads the payload to S3 and returns a presigned URL instead.\n\nThe SDK handles this transparently \u2014 it sends the opt-in `Accept` header and automatically fetches the full payload from S3 when a large response URL is returned. Enabled by default.\n\n```ts\nimport { epilot } from '@epilot/sdk'\n\n// Disable large response handling\nepilot.largeResponse({ enabled: false })\n```\n\nFor individually imported clients (tree-shakeable imports), apply the interceptor manually:\n\n```ts\nimport { getClient, authorize } from '@epilot/sdk/entity'\nimport { applyLargeResponseInterceptor } from '@epilot/sdk'\n\nconst entityClient = getClient()\nauthorize(entityClient, () => '<my-token>')\napplyLargeResponseInterceptor({ client: entityClient, config: { enabled: true } })\n```\n\n## Overrides & Custom APIs\n\nOverride built-in API specs or register custom APIs via `.epilot/sdk-overrides.json`. This is useful for testing new versions of an API spec or getting the latest types without waiting for an SDK release.\n\n```json\n{\n \"entity\": \"./specs/entity-openapi.json\",\n \"myNewApi\": \"./specs/my-new-api-openapi.json\"\n}\n```\n\n```ts\n// Built-in API with overridden spec\nconst { data } = await epilot.entity.getEntity({ slug: 'contact', id: '123' })\n```\n\n### Override Commands\n\n```bash\n# Apply all overrides from .epilot/sdk-overrides.json\nnpx epilot-sdk override\n\n# Override a single API\nnpx epilot-sdk override entity ./my-local-entity-spec.yaml\n\n# Regenerate types after spec changes\nnpx epilot-sdk typegen\n```\n\n<details>\n<summary>Migration from <code>@epilot/*-client</code></summary>\n\nDrop-in replacement \u2014 just change the import path:\n\n```ts\n// Before\nimport { getClient, createClient, authorize } from '@epilot/entity-client'\nimport type { Client, Entity } from '@epilot/entity-client'\n\n// After\nimport { getClient, createClient, authorize } from '@epilot/sdk/entity'\nimport type { Client, Entity } from '@epilot/sdk/entity'\n```\n\n</details>\n\n<details>\n<summary>Client Lifecycle</summary>\n\nWhen you call `authorize()`, `headers()`, `retry()`, `largeResponse()`, or `interceptors`, the SDK invalidates all cached client instances. The next operation call creates a fresh client with the updated configuration.\n\n**Operation methods are always up to date** \u2014 calls like `epilot.entity.getEntity(...)` re-resolve the client on every invocation, so they always use the latest config.\n\n**Direct `getClient()` references can go stale** \u2014 if you hold a reference and then change config, your reference still points to the old client:\n\n```ts\nconst entityClient = epilot.entity.getClient()\n\nepilot.authorize('new-token') // invalidates all cached clients\n\n// entityClient still has the old token\n// epilot.entity.getEntity(...) will use a new client with the new token\n```\n\nIf you need a long-lived reference that survives config changes, call `getClient()` again after changing config, or use operation methods directly.\n\n</details>\n";
5
+
6
+
7
+ exports.default = README_default;
@@ -0,0 +1,7 @@
1
+ import "./chunk-YPSWSI3M.js";
2
+
3
+ // src/docs/README.json
4
+ var README_default = "<h1 align=\"center\"><img alt=\"epilot\" src=\"https://raw.githubusercontent.com/epilot-dev/sdk-js/main/logo.png\" width=\"200\"><br>@epilot/sdk</h1>\n\n<p align=\"center\">\n <a href=\"https://github.com/epilot-dev/sdk-js/actions?query=workflow%3ACI\"><img src=\"https://github.com/epilot-dev/sdk-js/workflows/CI/badge.svg\" alt=\"CI\"></a>\n <a href=\"https://www.npmjs.com/package/@epilot/sdk\"><img src=\"https://img.shields.io/npm/v/@epilot/sdk.svg\" alt=\"npm version\"></a>\n <a href=\"https://github.com/epilot-dev/sdk-js/blob/main/\"><img src=\"http://img.shields.io/:license-mit-blue.svg\" alt=\"License\"></a>\n</p>\n\n<p align=\"center\">JavaScript/TypeScript SDK for epilot APIs. Full types, tree-shakeable imports, and lazy-loaded OpenAPI specs.</p>\n\n## Install\n\n```bash\nnpm i @epilot/sdk axios openapi-client-axios\n```\n\n## Quick Start\n\n```ts\nimport { epilot } from '@epilot/sdk'\n\nepilot.authorize(() => '<my-bearer-token>')\n\nconst { data: entity } = await epilot.entity.createEntity(\n { slug: 'contact' },\n { first_name: 'John', last_name: 'Doe' },\n)\n\nconst { data: file } = await epilot.file.getFile({ id: 'file-123' })\n\nconst { data: executions } = await epilot.workflow.getExecutions()\n```\n\nAPI clients are built on [openapi-client-axios](https://openapistack.co/docs/openapi-client-axios/intro/), which generates fully typed operation methods on top of regular [axios](https://axios-http.com/docs/intro) instances. All standard axios features (interceptors, defaults, config) work as expected. Each operation is forwarded to a lazy singleton \u2014 the spec is loaded and the client initialized on first use, then cached.\n\nFull API documentation: [https://docs.epilot.io/api](https://docs.epilot.io/api)\n\n## API Reference\n\n<!-- api-reference-table -->\n| API | Import | Docs |\n| --- | ------ | ---- |\n| `epilot.accessToken` | `@epilot/sdk/access-token` | [docs](./docs/access-token.md) |\n| `epilot.address` | `@epilot/sdk/address` | [docs](./docs/address.md) |\n| `epilot.addressSuggestions` | `@epilot/sdk/address-suggestions` | [docs](./docs/address-suggestions.md) |\n| `epilot.aiAgents` | `@epilot/sdk/ai-agents` | [docs](./docs/ai-agents.md) |\n| `epilot.app` | `@epilot/sdk/app` | [docs](./docs/app.md) |\n| `epilot.auditLogs` | `@epilot/sdk/audit-logs` | [docs](./docs/audit-logs.md) |\n| `epilot.automation` | `@epilot/sdk/automation` | [docs](./docs/automation.md) |\n| `epilot.billing` | `@epilot/sdk/billing` | [docs](./docs/billing.md) |\n| `epilot.blueprintManifest` | `@epilot/sdk/blueprint-manifest` | [docs](./docs/blueprint-manifest.md) |\n| `epilot.calendar` | `@epilot/sdk/calendar` | [docs](./docs/calendar.md) |\n| `epilot.chat` | `@epilot/sdk/chat` | [docs](./docs/chat.md) |\n| `epilot.configurationHub` | `@epilot/sdk/configuration-hub` | [docs](./docs/configuration-hub.md) |\n| `epilot.consent` | `@epilot/sdk/consent` | [docs](./docs/consent.md) |\n| `epilot.customerPortal` | `@epilot/sdk/customer-portal` | [docs](./docs/customer-portal.md) |\n| `epilot.dashboard` | `@epilot/sdk/dashboard` | [docs](./docs/dashboard.md) |\n| `epilot.dataGovernance` | `@epilot/sdk/data-governance` | [docs](./docs/data-governance.md) |\n| `epilot.deduplication` | `@epilot/sdk/deduplication` | [docs](./docs/deduplication.md) |\n| `epilot.design` | `@epilot/sdk/design` | [docs](./docs/design.md) |\n| `epilot.document` | `@epilot/sdk/document` | [docs](./docs/document.md) |\n| `epilot.emailSettings` | `@epilot/sdk/email-settings` | [docs](./docs/email-settings.md) |\n| `epilot.emailTemplate` | `@epilot/sdk/email-template` | [docs](./docs/email-template.md) |\n| `epilot.entity` | `@epilot/sdk/entity` | [docs](./docs/entity.md) |\n| `epilot.entityMapping` | `@epilot/sdk/entity-mapping` | [docs](./docs/entity-mapping.md) |\n| `epilot.environments` | `@epilot/sdk/environments` | [docs](./docs/environments.md) |\n| `epilot.eventCatalog` | `@epilot/sdk/event-catalog` | [docs](./docs/event-catalog.md) |\n| `epilot.externalValues` | `@epilot/sdk/external-values` | [docs](./docs/external-values.md) |\n| `epilot.file` | `@epilot/sdk/file` | [docs](./docs/file.md) |\n| `epilot.iban` | `@epilot/sdk/iban` | [docs](./docs/iban.md) |\n| `epilot.identity` | `@epilot/sdk/identity` | [docs](./docs/identity.md) |\n| `epilot.integrationToolkit` | `@epilot/sdk/integration-toolkit` | [docs](./docs/integration-toolkit.md) |\n| `epilot.journey` | `@epilot/sdk/journey` | [docs](./docs/journey.md) |\n| `epilot.kanban` | `@epilot/sdk/kanban` | [docs](./docs/kanban.md) |\n| `epilot.message` | `@epilot/sdk/message` | [docs](./docs/message.md) |\n| `epilot.metering` | `@epilot/sdk/metering` | [docs](./docs/metering.md) |\n| `epilot.notes` | `@epilot/sdk/notes` | [docs](./docs/notes.md) |\n| `epilot.notification` | `@epilot/sdk/notification` | [docs](./docs/notification.md) |\n| `epilot.organization` | `@epilot/sdk/organization` | [docs](./docs/organization.md) |\n| `epilot.partnerDirectory` | `@epilot/sdk/partner-directory` | [docs](./docs/partner-directory.md) |\n| `epilot.permissions` | `@epilot/sdk/permissions` | [docs](./docs/permissions.md) |\n| `epilot.pricing` | `@epilot/sdk/pricing` | [docs](./docs/pricing.md) |\n| `epilot.pricingTier` | `@epilot/sdk/pricing-tier` | [docs](./docs/pricing-tier.md) |\n| `epilot.purpose` | `@epilot/sdk/purpose` | [docs](./docs/purpose.md) |\n| `epilot.query` | `@epilot/sdk/query` | [docs](./docs/query.md) |\n| `epilot.sandbox` | `@epilot/sdk/sandbox` | [docs](./docs/sandbox.md) |\n| `epilot.sharing` | `@epilot/sdk/sharing` | [docs](./docs/sharing.md) |\n| `epilot.snapshot` | `@epilot/sdk/snapshot` | [docs](./docs/snapshot.md) |\n| `epilot.submission` | `@epilot/sdk/submission` | [docs](./docs/submission.md) |\n| `epilot.targeting` | `@epilot/sdk/targeting` | [docs](./docs/targeting.md) |\n| `epilot.templateVariables` | `@epilot/sdk/template-variables` | [docs](./docs/template-variables.md) |\n| `epilot.user` | `@epilot/sdk/user` | [docs](./docs/user.md) |\n| `epilot.validationRules` | `@epilot/sdk/validation-rules` | [docs](./docs/validation-rules.md) |\n| `epilot.webhooks` | `@epilot/sdk/webhooks` | [docs](./docs/webhooks.md) |\n| `epilot.workflow` | `@epilot/sdk/workflow` | [docs](./docs/workflow.md) |\n| `epilot.workflowDefinition` | `@epilot/sdk/workflow-definition` | [docs](./docs/workflow-definition.md) |\n<!-- /api-reference-table -->\n\n## OpenAPI Spec\n\nRetrieve the full OpenAPI specification for any API at runtime. The spec is lazy-loaded on first call and cached.\n\n```ts\nimport { epilot } from '@epilot/sdk'\n\n// Via API handle\nconst entitySpec = await epilot.entity.openapi()\nconsole.log(entitySpec.info.title) // \"Entity API\"\nconsole.log(entitySpec.paths) // all paths with full schemas\n\n// Via top-level method\nconst spec = await epilot.openapi('entity')\n```\n\nFor tree-shakeable imports:\n\n```ts\nimport { openapi } from '@epilot/sdk/entity'\n\nconst spec = await openapi()\n```\n\n## Explicit Client Access\n\n```ts\nimport { epilot } from '@epilot/sdk'\n\nepilot.authorize(() => '<my-token>')\n\n// Get the cached singleton client\nconst entityClient = epilot.entity.getClient()\nconst { data } = await entityClient.getEntity({ slug: 'contact', id: '123' })\n\n// Create a fresh (non-singleton) client instance\nconst freshClient = epilot.entity.createClient()\nauthorize(freshClient, () => '<my-token>')\n```\n\n## Tree-Shakeable Imports\n\nImport only what you need. Other APIs never touch your bundle.\n\n```ts\nimport { getClient, authorize } from '@epilot/sdk/entity'\n\nconst entityClient = getClient()\nauthorize(entityClient, () => '<my-token>')\n\nconst { data } = await entityClient.getEntity({ slug: 'contact', id: '123' })\n\n// Or use the handle for direct operation forwarding\nimport { entity } from '@epilot/sdk/entity'\nconst { data } = await entity.getEntity({ slug: 'contact', id: '123' })\n```\n\n## Types\n\nEach API subpath re-exports all schema types generated from the OpenAPI spec. Import them directly:\n\n```ts\nimport type { Entity, EntitySchema, RelationAttribute } from '@epilot/sdk/entity'\nimport type { FileItem } from '@epilot/sdk/file'\nimport type { AutomationFlow } from '@epilot/sdk/automation'\n```\n\nThe `Client`, `OperationMethods`, and `PathsDictionary` types are also available for typing client instances:\n\n```ts\nimport type { Client } from '@epilot/sdk/entity'\n\nconst entityClient: Client = epilot.entity.getClient()\n```\n\n## Headers\n\n### Global Headers\n\nSet default headers applied to all clients. Useful for `x-epilot-org-id`, `x-epilot-user-id`, etc.\n\n```ts\nimport { epilot } from '@epilot/sdk'\n\nepilot.authorize(() => '<my-token>')\nepilot.headers({\n 'x-epilot-org-id': 'org-123',\n 'x-epilot-user-id': 'user-456',\n})\n\nconst { data } = await epilot.entity.searchEntities(...)\n```\n\n### Standard Axios Headers\n\nUse standard axios `defaults.headers.common` on individual clients:\n\n```ts\nconst entityClient = epilot.entity.getClient()\nentityClient.defaults.headers.common['x-epilot-org-id'] = 'org-123'\n```\n\n## Auth Patterns\n\n`authorize()` accepts a string or a function. The function form is preferred \u2014 it is called on every request, so tokens stay fresh.\n\n```ts\nimport { authorize } from '@epilot/sdk'\nimport { getClient } from '@epilot/sdk/entity'\n\n// Per-client \u2014 function predicate (recommended)\nconst entityClient = getClient()\nauthorize(entityClient, () => '<my-token>')\n\n// Per-client \u2014 async function (e.g. OAuth / session)\nauthorize(entityClient, async () => {\n return await getTokenFromSession()\n})\n\n// Per-client \u2014 static string (sets default header once)\nauthorize(entityClient, 'my-static-api-token')\n```\n\n```ts\n// Global \u2014 applies to all clients resolved from the SDK\nimport { epilot } from '@epilot/sdk'\n\nepilot.authorize(() => '<my-token>')\nepilot.authorize(async () => await getTokenFromSession())\nepilot.authorize('my-static-api-token')\n```\n\n## Fresh Client Instance\n\n```ts\nimport { createClient, authorize } from '@epilot/sdk/entity'\n\nconst entityClient = createClient()\nauthorize(entityClient, () => '<my-token>')\nentityClient.defaults.headers.common['x-epilot-org-id'] = 'org-123'\n```\n\n## Multiple SDK Instances\n\n```ts\nimport { createSDK } from '@epilot/sdk'\n\nconst sdk1 = createSDK()\nsdk1.authorize(() => '<token-for-org-1>')\nsdk1.headers({ 'x-epilot-org-id': 'org-1' })\n\nconst sdk2 = createSDK()\nsdk2.authorize(() => '<token-for-org-2>')\nsdk2.headers({ 'x-epilot-org-id': 'org-2' })\n```\n\n\n## Interceptors\n\nUse axios interceptors for custom request/response processing. Since clients are axios instances, you can use `client.interceptors` directly:\n\n```ts\nentityClient.interceptors.response.use((response) => {\n console.debug(`${response.config.method?.toUpperCase()} ${response.config.url}`, {\n status: response.status,\n data: response.data,\n })\n return response\n})\n```\n\nOr register global interceptors applied to all clients:\n\n```ts\nepilot.interceptors.request((config) => {\n config.headers['x-correlation-id'] = generateTraceId()\n return config\n})\n```\n\n## Auto-Retry (429 Too Many Requests)\n\nThe SDK automatically retries requests that receive a `429 Too Many Requests` response. It respects the `Retry-After` header (in seconds) to determine how long to wait before retrying.\n\nEnabled by default with up to 3 retries.\n\n```ts\nimport { epilot } from '@epilot/sdk'\n\n// Customize retry behavior\nepilot.retry({ maxRetries: 5, defaultDelayMs: 2000 })\n\n// Disable retries\nepilot.retry({ maxRetries: 0 })\n```\n\n| Option | Default | Description |\n| --- | --- | --- |\n| `maxRetries` | `3` | Maximum number of retries. Set to `0` to disable. |\n| `defaultDelayMs` | `1000` | Fallback delay in ms when `Retry-After` header is missing. |\n\nFor individually imported clients (tree-shakeable imports), apply the interceptor manually:\n\n```ts\nimport { getClient, authorize } from '@epilot/sdk/entity'\nimport { applyRetryInterceptor } from '@epilot/sdk'\n\nconst entityClient = getClient()\nauthorize(entityClient, () => '<my-token>')\napplyRetryInterceptor({ client: entityClient, config: { maxRetries: 3 } })\n```\n\n## Large Response Handling (413 Payload Too Large)\n\nepilot APIs use a [large response middleware](https://github.com/epilot-dev/aws-lambda-utility-middlewares) to work around the AWS Lambda 6MB response limit. When a response exceeds ~5.1MB, the API uploads the payload to S3 and returns a presigned URL instead.\n\nThe SDK handles this transparently \u2014 it sends the opt-in `Accept` header and automatically fetches the full payload from S3 when a large response URL is returned. Enabled by default.\n\n```ts\nimport { epilot } from '@epilot/sdk'\n\n// Disable large response handling\nepilot.largeResponse({ enabled: false })\n```\n\nFor individually imported clients (tree-shakeable imports), apply the interceptor manually:\n\n```ts\nimport { getClient, authorize } from '@epilot/sdk/entity'\nimport { applyLargeResponseInterceptor } from '@epilot/sdk'\n\nconst entityClient = getClient()\nauthorize(entityClient, () => '<my-token>')\napplyLargeResponseInterceptor({ client: entityClient, config: { enabled: true } })\n```\n\n## Overrides & Custom APIs\n\nOverride built-in API specs or register custom APIs via `.epilot/sdk-overrides.json`. This is useful for testing new versions of an API spec or getting the latest types without waiting for an SDK release.\n\n```json\n{\n \"entity\": \"./specs/entity-openapi.json\",\n \"myNewApi\": \"./specs/my-new-api-openapi.json\"\n}\n```\n\n```ts\n// Built-in API with overridden spec\nconst { data } = await epilot.entity.getEntity({ slug: 'contact', id: '123' })\n```\n\n### Override Commands\n\n```bash\n# Apply all overrides from .epilot/sdk-overrides.json\nnpx epilot-sdk override\n\n# Override a single API\nnpx epilot-sdk override entity ./my-local-entity-spec.yaml\n\n# Regenerate types after spec changes\nnpx epilot-sdk typegen\n```\n\n<details>\n<summary>Migration from <code>@epilot/*-client</code></summary>\n\nDrop-in replacement \u2014 just change the import path:\n\n```ts\n// Before\nimport { getClient, createClient, authorize } from '@epilot/entity-client'\nimport type { Client, Entity } from '@epilot/entity-client'\n\n// After\nimport { getClient, createClient, authorize } from '@epilot/sdk/entity'\nimport type { Client, Entity } from '@epilot/sdk/entity'\n```\n\n</details>\n\n<details>\n<summary>Client Lifecycle</summary>\n\nWhen you call `authorize()`, `headers()`, `retry()`, `largeResponse()`, or `interceptors`, the SDK invalidates all cached client instances. The next operation call creates a fresh client with the updated configuration.\n\n**Operation methods are always up to date** \u2014 calls like `epilot.entity.getEntity(...)` re-resolve the client on every invocation, so they always use the latest config.\n\n**Direct `getClient()` references can go stale** \u2014 if you hold a reference and then change config, your reference still points to the old client:\n\n```ts\nconst entityClient = epilot.entity.getClient()\n\nepilot.authorize('new-token') // invalidates all cached clients\n\n// entityClient still has the old token\n// epilot.entity.getEntity(...) will use a new client with the new token\n```\n\nIf you need a long-lived reference that survives config changes, call `getClient()` again after changing config, or use operation methods directly.\n\n</details>\n";
5
+ export {
6
+ README_default as default
7
+ };
@@ -26,6 +26,7 @@ var entity = "entity";
26
26
  var entityMapping = "entity-mapping";
27
27
  var environments = "environments";
28
28
  var eventCatalog = "event-catalog";
29
+ var externalValues = "external-values";
29
30
  var file = "file";
30
31
  var iban = "iban";
31
32
  var identity = "identity";
@@ -80,6 +81,7 @@ var index_default = {
80
81
  entityMapping,
81
82
  environments,
82
83
  eventCatalog,
84
+ externalValues,
83
85
  file,
84
86
  iban,
85
87
  identity,
@@ -164,4 +166,5 @@ var index_default = {
164
166
 
165
167
 
166
168
 
167
- exports.accessToken = accessToken; exports.address = address; exports.addressSuggestions = addressSuggestions; exports.aiAgents = aiAgents; exports.app = app; exports.auditLogs = auditLogs; exports.automation = automation; exports.billing = billing; exports.blueprintManifest = blueprintManifest; exports.calendar = calendar; exports.chat = chat; exports.configurationHub = configurationHub; exports.consent = consent; exports.customerPortal = customerPortal; exports.dashboard = dashboard; exports.dataGovernance = dataGovernance; exports.deduplication = deduplication; exports.default = index_default; exports.design = design; exports.document = document; exports.emailSettings = emailSettings; exports.emailTemplate = emailTemplate; exports.entity = entity; exports.entityMapping = entityMapping; exports.environments = environments; exports.eventCatalog = eventCatalog; exports.file = file; exports.iban = iban; exports.identity = identity; exports.integrationToolkit = integrationToolkit; exports.journey = journey; exports.kanban = kanban; exports.message = message; exports.metering = metering; exports.notes = notes; exports.notification = notification; exports.organization = organization; exports.partnerDirectory = partnerDirectory; exports.permissions = permissions; exports.pricing = pricing; exports.pricingTier = pricingTier; exports.purpose = purpose; exports.query = query; exports.sandbox = sandbox; exports.sharing = sharing; exports.snapshot = snapshot; exports.submission = submission; exports.targeting = targeting; exports.templateVariables = templateVariables; exports.user = user; exports.validationRules = validationRules; exports.webhooks = webhooks; exports.workflow = workflow; exports.workflowDefinition = workflowDefinition;
169
+
170
+ exports.accessToken = accessToken; exports.address = address; exports.addressSuggestions = addressSuggestions; exports.aiAgents = aiAgents; exports.app = app; exports.auditLogs = auditLogs; exports.automation = automation; exports.billing = billing; exports.blueprintManifest = blueprintManifest; exports.calendar = calendar; exports.chat = chat; exports.configurationHub = configurationHub; exports.consent = consent; exports.customerPortal = customerPortal; exports.dashboard = dashboard; exports.dataGovernance = dataGovernance; exports.deduplication = deduplication; exports.default = index_default; exports.design = design; exports.document = document; exports.emailSettings = emailSettings; exports.emailTemplate = emailTemplate; exports.entity = entity; exports.entityMapping = entityMapping; exports.environments = environments; exports.eventCatalog = eventCatalog; exports.externalValues = externalValues; exports.file = file; exports.iban = iban; exports.identity = identity; exports.integrationToolkit = integrationToolkit; exports.journey = journey; exports.kanban = kanban; exports.message = message; exports.metering = metering; exports.notes = notes; exports.notification = notification; exports.organization = organization; exports.partnerDirectory = partnerDirectory; exports.permissions = permissions; exports.pricing = pricing; exports.pricingTier = pricingTier; exports.purpose = purpose; exports.query = query; exports.sandbox = sandbox; exports.sharing = sharing; exports.snapshot = snapshot; exports.submission = submission; exports.targeting = targeting; exports.templateVariables = templateVariables; exports.user = user; exports.validationRules = validationRules; exports.webhooks = webhooks; exports.workflow = workflow; exports.workflowDefinition = workflowDefinition;
@@ -26,6 +26,7 @@ var entity = "entity";
26
26
  var entityMapping = "entity-mapping";
27
27
  var environments = "environments";
28
28
  var eventCatalog = "event-catalog";
29
+ var externalValues = "external-values";
29
30
  var file = "file";
30
31
  var iban = "iban";
31
32
  var identity = "identity";
@@ -80,6 +81,7 @@ var index_default = {
80
81
  entityMapping,
81
82
  environments,
82
83
  eventCatalog,
84
+ externalValues,
83
85
  file,
84
86
  iban,
85
87
  identity,
@@ -136,6 +138,7 @@ export {
136
138
  entityMapping,
137
139
  environments,
138
140
  eventCatalog,
141
+ externalValues,
139
142
  file,
140
143
  iban,
141
144
  identity,
@@ -6,25 +6,25 @@ var _chunkZMBA3WV4cjs = require('../chunk-ZMBA3WV4.cjs');
6
6
 
7
7
 
8
8
 
9
- var _chunkTF4SGSFPcjs = require('../chunk-TF4SGSFP.cjs');
9
+ var _chunkYJ7BKTTMcjs = require('../chunk-YJ7BKTTM.cjs');
10
10
  require('../chunk-NJK5F5TF.cjs');
11
11
 
12
12
  // src/apis/access-token.ts
13
13
  var loadDefinition = () => {
14
14
  const mod = _chunkZMBA3WV4cjs.require_access_token_runtime.call(void 0, );
15
- return _chunkTF4SGSFPcjs.expand.call(void 0, _nullishCoalesce(mod.default, () => ( mod)));
15
+ return _chunkYJ7BKTTMcjs.expand.call(void 0, _nullishCoalesce(mod.default, () => ( mod)));
16
16
  };
17
17
  var _instance = null;
18
18
  var resolve = () => {
19
19
  if (!_instance) {
20
20
  const def = loadDefinition();
21
- _instance = _chunkTF4SGSFPcjs.createApiClient.call(void 0, { definition: def, apiName: "accessToken" });
21
+ _instance = _chunkYJ7BKTTMcjs.createApiClient.call(void 0, { definition: def, apiName: "accessToken" });
22
22
  }
23
23
  return _instance;
24
24
  };
25
- var _handle = _chunkTF4SGSFPcjs.createApiHandle.call(void 0, {
25
+ var _handle = _chunkYJ7BKTTMcjs.createApiHandle.call(void 0, {
26
26
  resolveClient: resolve,
27
- createClient: () => _chunkTF4SGSFPcjs.createApiClient.call(void 0, { definition: loadDefinition(), apiName: "accessToken" }),
27
+ createClient: () => _chunkYJ7BKTTMcjs.createApiClient.call(void 0, { definition: loadDefinition(), apiName: "accessToken" }),
28
28
  apiName: "accessToken"
29
29
  });
30
30
  var getClient = _handle.getClient;
@@ -35,4 +35,4 @@ var accessToken = _handle;
35
35
 
36
36
 
37
37
 
38
- exports.accessToken = accessToken; exports.authorize = _chunkTF4SGSFPcjs.authorize; exports.createClient = createClient; exports.getClient = getClient;
38
+ exports.accessToken = accessToken; exports.authorize = _chunkYJ7BKTTMcjs.authorize; exports.createClient = createClient; exports.getClient = getClient;
@@ -6,7 +6,7 @@ import {
6
6
  createApiClient,
7
7
  createApiHandle,
8
8
  expand
9
- } from "../chunk-VMA2UKDS.js";
9
+ } from "../chunk-OI4LZOVC.js";
10
10
  import "../chunk-YPSWSI3M.js";
11
11
 
12
12
  // src/apis/access-token.ts
@@ -6,25 +6,25 @@ var _chunkLKRBFBFNcjs = require('../chunk-LKRBFBFN.cjs');
6
6
 
7
7
 
8
8
 
9
- var _chunkTF4SGSFPcjs = require('../chunk-TF4SGSFP.cjs');
9
+ var _chunkYJ7BKTTMcjs = require('../chunk-YJ7BKTTM.cjs');
10
10
  require('../chunk-NJK5F5TF.cjs');
11
11
 
12
12
  // src/apis/address-suggestions.ts
13
13
  var loadDefinition = () => {
14
14
  const mod = _chunkLKRBFBFNcjs.require_address_suggestions_runtime.call(void 0, );
15
- return _chunkTF4SGSFPcjs.expand.call(void 0, _nullishCoalesce(mod.default, () => ( mod)));
15
+ return _chunkYJ7BKTTMcjs.expand.call(void 0, _nullishCoalesce(mod.default, () => ( mod)));
16
16
  };
17
17
  var _instance = null;
18
18
  var resolve = () => {
19
19
  if (!_instance) {
20
20
  const def = loadDefinition();
21
- _instance = _chunkTF4SGSFPcjs.createApiClient.call(void 0, { definition: def, apiName: "addressSuggestions" });
21
+ _instance = _chunkYJ7BKTTMcjs.createApiClient.call(void 0, { definition: def, apiName: "addressSuggestions" });
22
22
  }
23
23
  return _instance;
24
24
  };
25
- var _handle = _chunkTF4SGSFPcjs.createApiHandle.call(void 0, {
25
+ var _handle = _chunkYJ7BKTTMcjs.createApiHandle.call(void 0, {
26
26
  resolveClient: resolve,
27
- createClient: () => _chunkTF4SGSFPcjs.createApiClient.call(void 0, { definition: loadDefinition(), apiName: "addressSuggestions" }),
27
+ createClient: () => _chunkYJ7BKTTMcjs.createApiClient.call(void 0, { definition: loadDefinition(), apiName: "addressSuggestions" }),
28
28
  apiName: "addressSuggestions"
29
29
  });
30
30
  var getClient = _handle.getClient;
@@ -35,4 +35,4 @@ var addressSuggestions = _handle;
35
35
 
36
36
 
37
37
 
38
- exports.addressSuggestions = addressSuggestions; exports.authorize = _chunkTF4SGSFPcjs.authorize; exports.createClient = createClient; exports.getClient = getClient;
38
+ exports.addressSuggestions = addressSuggestions; exports.authorize = _chunkYJ7BKTTMcjs.authorize; exports.createClient = createClient; exports.getClient = getClient;
@@ -6,7 +6,7 @@ import {
6
6
  createApiClient,
7
7
  createApiHandle,
8
8
  expand
9
- } from "../chunk-VMA2UKDS.js";
9
+ } from "../chunk-OI4LZOVC.js";
10
10
  import "../chunk-YPSWSI3M.js";
11
11
 
12
12
  // src/apis/address-suggestions.ts
@@ -6,25 +6,25 @@ var _chunkT67ZXTVGcjs = require('../chunk-T67ZXTVG.cjs');
6
6
 
7
7
 
8
8
 
9
- var _chunkTF4SGSFPcjs = require('../chunk-TF4SGSFP.cjs');
9
+ var _chunkYJ7BKTTMcjs = require('../chunk-YJ7BKTTM.cjs');
10
10
  require('../chunk-NJK5F5TF.cjs');
11
11
 
12
12
  // src/apis/address.ts
13
13
  var loadDefinition = () => {
14
14
  const mod = _chunkT67ZXTVGcjs.require_address_runtime.call(void 0, );
15
- return _chunkTF4SGSFPcjs.expand.call(void 0, _nullishCoalesce(mod.default, () => ( mod)));
15
+ return _chunkYJ7BKTTMcjs.expand.call(void 0, _nullishCoalesce(mod.default, () => ( mod)));
16
16
  };
17
17
  var _instance = null;
18
18
  var resolve = () => {
19
19
  if (!_instance) {
20
20
  const def = loadDefinition();
21
- _instance = _chunkTF4SGSFPcjs.createApiClient.call(void 0, { definition: def, apiName: "address" });
21
+ _instance = _chunkYJ7BKTTMcjs.createApiClient.call(void 0, { definition: def, apiName: "address" });
22
22
  }
23
23
  return _instance;
24
24
  };
25
- var _handle = _chunkTF4SGSFPcjs.createApiHandle.call(void 0, {
25
+ var _handle = _chunkYJ7BKTTMcjs.createApiHandle.call(void 0, {
26
26
  resolveClient: resolve,
27
- createClient: () => _chunkTF4SGSFPcjs.createApiClient.call(void 0, { definition: loadDefinition(), apiName: "address" }),
27
+ createClient: () => _chunkYJ7BKTTMcjs.createApiClient.call(void 0, { definition: loadDefinition(), apiName: "address" }),
28
28
  apiName: "address"
29
29
  });
30
30
  var getClient = _handle.getClient;
@@ -35,4 +35,4 @@ var address = _handle;
35
35
 
36
36
 
37
37
 
38
- exports.address = address; exports.authorize = _chunkTF4SGSFPcjs.authorize; exports.createClient = createClient; exports.getClient = getClient;
38
+ exports.address = address; exports.authorize = _chunkYJ7BKTTMcjs.authorize; exports.createClient = createClient; exports.getClient = getClient;
@@ -6,7 +6,7 @@ import {
6
6
  createApiClient,
7
7
  createApiHandle,
8
8
  expand
9
- } from "../chunk-VMA2UKDS.js";
9
+ } from "../chunk-OI4LZOVC.js";
10
10
  import "../chunk-YPSWSI3M.js";
11
11
 
12
12
  // src/apis/address.ts
@@ -6,25 +6,25 @@ var _chunkGD6KHA54cjs = require('../chunk-GD6KHA54.cjs');
6
6
 
7
7
 
8
8
 
9
- var _chunkTF4SGSFPcjs = require('../chunk-TF4SGSFP.cjs');
9
+ var _chunkYJ7BKTTMcjs = require('../chunk-YJ7BKTTM.cjs');
10
10
  require('../chunk-NJK5F5TF.cjs');
11
11
 
12
12
  // src/apis/ai-agents.ts
13
13
  var loadDefinition = () => {
14
14
  const mod = _chunkGD6KHA54cjs.require_ai_agents_runtime.call(void 0, );
15
- return _chunkTF4SGSFPcjs.expand.call(void 0, _nullishCoalesce(mod.default, () => ( mod)));
15
+ return _chunkYJ7BKTTMcjs.expand.call(void 0, _nullishCoalesce(mod.default, () => ( mod)));
16
16
  };
17
17
  var _instance = null;
18
18
  var resolve = () => {
19
19
  if (!_instance) {
20
20
  const def = loadDefinition();
21
- _instance = _chunkTF4SGSFPcjs.createApiClient.call(void 0, { definition: def, apiName: "aiAgents" });
21
+ _instance = _chunkYJ7BKTTMcjs.createApiClient.call(void 0, { definition: def, apiName: "aiAgents" });
22
22
  }
23
23
  return _instance;
24
24
  };
25
- var _handle = _chunkTF4SGSFPcjs.createApiHandle.call(void 0, {
25
+ var _handle = _chunkYJ7BKTTMcjs.createApiHandle.call(void 0, {
26
26
  resolveClient: resolve,
27
- createClient: () => _chunkTF4SGSFPcjs.createApiClient.call(void 0, { definition: loadDefinition(), apiName: "aiAgents" }),
27
+ createClient: () => _chunkYJ7BKTTMcjs.createApiClient.call(void 0, { definition: loadDefinition(), apiName: "aiAgents" }),
28
28
  apiName: "aiAgents"
29
29
  });
30
30
  var getClient = _handle.getClient;
@@ -35,4 +35,4 @@ var aiAgents = _handle;
35
35
 
36
36
 
37
37
 
38
- exports.aiAgents = aiAgents; exports.authorize = _chunkTF4SGSFPcjs.authorize; exports.createClient = createClient; exports.getClient = getClient;
38
+ exports.aiAgents = aiAgents; exports.authorize = _chunkYJ7BKTTMcjs.authorize; exports.createClient = createClient; exports.getClient = getClient;
@@ -6,7 +6,7 @@ import {
6
6
  createApiClient,
7
7
  createApiHandle,
8
8
  expand
9
- } from "../chunk-VMA2UKDS.js";
9
+ } from "../chunk-OI4LZOVC.js";
10
10
  import "../chunk-YPSWSI3M.js";
11
11
 
12
12
  // src/apis/ai-agents.ts