@epilot/sdk 2.18.32 → 2.18.34

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 (138) hide show
  1. package/definitions/integration-toolkit.json +29 -11
  2. package/definitions/validation-rules-runtime.json +1 -1
  3. package/definitions/validation-rules.json +9 -3
  4. package/dist/apis/access-token.cjs +6 -6
  5. package/dist/apis/access-token.js +1 -1
  6. package/dist/apis/address-suggestions.cjs +6 -6
  7. package/dist/apis/address-suggestions.js +1 -1
  8. package/dist/apis/address.cjs +6 -6
  9. package/dist/apis/address.js +1 -1
  10. package/dist/apis/ai-agents.cjs +6 -6
  11. package/dist/apis/ai-agents.js +1 -1
  12. package/dist/apis/app.cjs +6 -6
  13. package/dist/apis/app.js +1 -1
  14. package/dist/apis/audit-logs.cjs +6 -6
  15. package/dist/apis/audit-logs.js +1 -1
  16. package/dist/apis/automation.cjs +6 -6
  17. package/dist/apis/automation.js +1 -1
  18. package/dist/apis/billing.cjs +6 -6
  19. package/dist/apis/billing.js +1 -1
  20. package/dist/apis/blueprint-manifest.cjs +6 -6
  21. package/dist/apis/blueprint-manifest.js +1 -1
  22. package/dist/apis/calendar.cjs +6 -6
  23. package/dist/apis/calendar.js +1 -1
  24. package/dist/apis/configuration-hub.cjs +6 -6
  25. package/dist/apis/configuration-hub.js +1 -1
  26. package/dist/apis/consent.cjs +6 -6
  27. package/dist/apis/consent.js +1 -1
  28. package/dist/apis/customer-portal.cjs +6 -6
  29. package/dist/apis/customer-portal.js +1 -1
  30. package/dist/apis/dashboard.cjs +6 -6
  31. package/dist/apis/dashboard.js +1 -1
  32. package/dist/apis/data-governance.cjs +6 -6
  33. package/dist/apis/data-governance.js +1 -1
  34. package/dist/apis/deduplication.cjs +6 -6
  35. package/dist/apis/deduplication.js +1 -1
  36. package/dist/apis/design.cjs +6 -6
  37. package/dist/apis/design.js +1 -1
  38. package/dist/apis/document.cjs +6 -6
  39. package/dist/apis/document.js +1 -1
  40. package/dist/apis/email-settings.cjs +6 -6
  41. package/dist/apis/email-settings.js +1 -1
  42. package/dist/apis/email-template.cjs +6 -6
  43. package/dist/apis/email-template.js +1 -1
  44. package/dist/apis/entity-mapping.cjs +6 -6
  45. package/dist/apis/entity-mapping.js +1 -1
  46. package/dist/apis/entity.cjs +6 -6
  47. package/dist/apis/entity.js +1 -1
  48. package/dist/apis/environments.cjs +6 -6
  49. package/dist/apis/environments.js +1 -1
  50. package/dist/apis/event-catalog.cjs +6 -6
  51. package/dist/apis/event-catalog.js +1 -1
  52. package/dist/apis/file.cjs +6 -6
  53. package/dist/apis/file.js +1 -1
  54. package/dist/apis/iban.cjs +6 -6
  55. package/dist/apis/iban.js +1 -1
  56. package/dist/apis/integration-toolkit.cjs +6 -6
  57. package/dist/apis/integration-toolkit.d.cts +2 -2
  58. package/dist/apis/integration-toolkit.d.ts +2 -2
  59. package/dist/apis/integration-toolkit.js +1 -1
  60. package/dist/apis/journey.cjs +6 -6
  61. package/dist/apis/journey.js +1 -1
  62. package/dist/apis/kanban.cjs +6 -6
  63. package/dist/apis/kanban.js +1 -1
  64. package/dist/apis/message.cjs +6 -6
  65. package/dist/apis/message.js +1 -1
  66. package/dist/apis/metering.cjs +6 -6
  67. package/dist/apis/metering.js +1 -1
  68. package/dist/apis/notes.cjs +6 -6
  69. package/dist/apis/notes.js +1 -1
  70. package/dist/apis/notification.cjs +6 -6
  71. package/dist/apis/notification.js +1 -1
  72. package/dist/apis/organization.cjs +6 -6
  73. package/dist/apis/organization.js +1 -1
  74. package/dist/apis/partner-directory.cjs +6 -6
  75. package/dist/apis/partner-directory.js +1 -1
  76. package/dist/apis/permissions.cjs +6 -6
  77. package/dist/apis/permissions.js +1 -1
  78. package/dist/apis/pricing-tier.cjs +6 -6
  79. package/dist/apis/pricing-tier.js +1 -1
  80. package/dist/apis/pricing.cjs +6 -6
  81. package/dist/apis/pricing.js +1 -1
  82. package/dist/apis/purpose.cjs +6 -6
  83. package/dist/apis/purpose.js +1 -1
  84. package/dist/apis/query.cjs +6 -6
  85. package/dist/apis/query.js +1 -1
  86. package/dist/apis/sandbox.cjs +6 -6
  87. package/dist/apis/sandbox.js +1 -1
  88. package/dist/apis/sharing.cjs +6 -6
  89. package/dist/apis/sharing.js +1 -1
  90. package/dist/apis/snapshot.cjs +6 -6
  91. package/dist/apis/snapshot.js +1 -1
  92. package/dist/apis/submission.cjs +6 -6
  93. package/dist/apis/submission.js +1 -1
  94. package/dist/apis/target.cjs +6 -6
  95. package/dist/apis/target.js +1 -1
  96. package/dist/apis/targeting.cjs +6 -6
  97. package/dist/apis/targeting.js +1 -1
  98. package/dist/apis/template-variables.cjs +6 -6
  99. package/dist/apis/template-variables.js +1 -1
  100. package/dist/apis/user.cjs +6 -6
  101. package/dist/apis/user.js +1 -1
  102. package/dist/apis/validation-rules.cjs +8 -8
  103. package/dist/apis/validation-rules.d.cts +2 -2
  104. package/dist/apis/validation-rules.d.ts +2 -2
  105. package/dist/apis/validation-rules.js +2 -2
  106. package/dist/apis/webhooks.cjs +6 -6
  107. package/dist/apis/webhooks.js +1 -1
  108. package/dist/apis/workflow-definition.cjs +6 -6
  109. package/dist/apis/workflow-definition.js +1 -1
  110. package/dist/apis/workflow.cjs +6 -6
  111. package/dist/apis/workflow.js +1 -1
  112. package/dist/chunk-7IKQIVUS.js +14 -0
  113. package/dist/{chunk-5A6KKQEZ.cjs → chunk-HA3PH5QM.cjs} +3 -3
  114. package/dist/chunk-JIUTCNTB.cjs +14 -0
  115. package/dist/{chunk-Z3EVGVBQ.js → chunk-PYZPMZ7V.js} +3 -3
  116. package/dist/index.cjs +10 -10
  117. package/dist/index.d.cts +2 -2
  118. package/dist/index.d.ts +2 -2
  119. package/dist/index.js +2 -2
  120. package/dist/integration-toolkit-6SBBMBPK.cjs +7 -0
  121. package/dist/integration-toolkit-AWMCD2KB.js +7 -0
  122. package/dist/{integration-toolkit.d-D8kNGpJq.d.cts → integration-toolkit.d-CLVwmd8s.d.cts} +858 -7
  123. package/dist/{integration-toolkit.d-D8kNGpJq.d.ts → integration-toolkit.d-CLVwmd8s.d.ts} +858 -7
  124. package/dist/validation-rules-B2KQKMLO.js +7 -0
  125. package/dist/validation-rules-GR2IVLGJ.cjs +7 -0
  126. package/dist/{validation-rules-runtime-VGLVHV36.js → validation-rules-runtime-6MRCS5X2.js} +1 -1
  127. package/dist/{validation-rules-runtime-DENVKYLF.cjs → validation-rules-runtime-X7M3QE5I.cjs} +2 -2
  128. package/dist/{validation-rules.d-MvjG-zzw.d.cts → validation-rules.d-CvGvBnMX.d.cts} +15 -5
  129. package/dist/{validation-rules.d-MvjG-zzw.d.ts → validation-rules.d-CvGvBnMX.d.ts} +15 -5
  130. package/docs/integration-toolkit.md +22 -7
  131. package/docs/validation-rules.md +7 -6
  132. package/package.json +1 -1
  133. package/dist/chunk-HRSCAD3W.cjs +0 -14
  134. package/dist/chunk-PPX45U34.js +0 -14
  135. package/dist/integration-toolkit-RVVT6BCK.cjs +0 -7
  136. package/dist/integration-toolkit-X64BK3WX.js +0 -7
  137. package/dist/validation-rules-G5BWXUWI.cjs +0 -7
  138. package/dist/validation-rules-NLHK2CD3.js +0 -7
@@ -1591,6 +1591,569 @@ declare namespace Components {
1591
1591
  *
1592
1592
  */
1593
1593
  FileProxyDeliveryConfig;
1594
+ /**
1595
+ * A single pre-mapped entity operation: upserts, soft-deletes, or purges one entity,
1596
+ * identified by its unique ids. Produces the same internal update as a mapped-mode entity
1597
+ * configuration, so create-vs-update resolution, relation resolution, ordering, and
1598
+ * monitoring behave identically.
1599
+ *
1600
+ */
1601
+ export interface DirectEntityOperation {
1602
+ /**
1603
+ * Operation discriminator. Optional - an operation without `type` is an entity operation.
1604
+ */
1605
+ type?: "entity";
1606
+ /**
1607
+ * Target entity schema slug (e.g. `contact`, `contract`).
1608
+ * example:
1609
+ * contract
1610
+ */
1611
+ entity_slug: string;
1612
+ /**
1613
+ * Attribute values that uniquely identify this entity, as `{ attribute: value }`.
1614
+ * Values may be strings or numbers (numbers are coerced to strings); values that are
1615
+ * empty after trimming are rejected. Use `_id` as the sole key to reference an entity
1616
+ * directly by its epilot id.
1617
+ *
1618
+ * Unlike mapped mode, the unique-id ATTRIBUTE NAMES are given directly - there is no
1619
+ * field-to-attribute mapping step.
1620
+ *
1621
+ * example:
1622
+ * {
1623
+ * "contract_number": "CTR-001"
1624
+ * }
1625
+ */
1626
+ unique_ids: {
1627
+ [name: string]: string | number;
1628
+ };
1629
+ /**
1630
+ * Optional per-field type hints for repeatable unique-id fields (`email` / `phone`),
1631
+ * needed so lookups search the repeatable storage format correctly. When omitted, the
1632
+ * server derives the types from the entity schema; explicit values always win over
1633
+ * derivation.
1634
+ *
1635
+ */
1636
+ unique_id_types?: {
1637
+ [name: string]: "email" | "phone";
1638
+ };
1639
+ /**
1640
+ * Operation mode: `upsert` creates or updates the entity (default), `delete` soft
1641
+ * deletes it, `purge` removes it permanently. For `delete` / `purge`, `attributes`
1642
+ * may be omitted - only `unique_ids` are used to locate the entity.
1643
+ *
1644
+ */
1645
+ mode?: "upsert" | "delete" | "purge";
1646
+ /**
1647
+ * Attribute values to write, keyed by attribute name. Required when `mode` is `upsert`
1648
+ * (an empty object is allowed); optional for `delete` / `purge`.
1649
+ *
1650
+ * Values are written verbatim - the server does not validate them against the entity
1651
+ * schema (attributes not defined in the schema are stored but not indexed; the
1652
+ * simulation endpoint surfaces warnings for unique-id fields missing from the schema).
1653
+ * Two envelope forms receive special treatment: `$relation` values
1654
+ * (`DirectRelationValue`) and `$relation_ref` values (`DirectRelationRefValue`) are
1655
+ * validated and resolved to entity relations.
1656
+ *
1657
+ */
1658
+ attributes?: {
1659
+ [name: string]: /**
1660
+ * An entity attribute value that establishes relations to other entities. Written on any
1661
+ * attribute inside a direct entity operation's `attributes`.
1662
+ *
1663
+ * Two forms are accepted: a bare array of items (shorthand for `_set`, i.e. replace), or
1664
+ * an object with EXACTLY ONE of the operations `_set` (replace), `_append` (merge,
1665
+ * deduplicated by entity id), `_append_all` (merge without deduplication). No other
1666
+ * operation keys are accepted.
1667
+ *
1668
+ */
1669
+ DirectRelationValue | /**
1670
+ * An entity attribute value that references an ITEM INSIDE a repeatable attribute of
1671
+ * another entity - for example one address out of a contact's `address` list. The target
1672
+ * entity is looked up by unique ids, then the item at `path` matching `value` is
1673
+ * referenced (creating it when missing).
1674
+ *
1675
+ * The same operation envelope as `$relation` applies: a bare array is shorthand for
1676
+ * `_set`, otherwise exactly one of `_set`, `_append`, `_append_all`.
1677
+ *
1678
+ */
1679
+ DirectRelationRefValue | any;
1680
+ };
1681
+ }
1682
+ /**
1683
+ * A single pre-mapped meter reading operation: upserts or deletes one reading on a meter
1684
+ * (and optionally a specific counter), identified by their unique ids. Produces the same
1685
+ * internal update as a mapped-mode meter reading configuration.
1686
+ *
1687
+ */
1688
+ export interface DirectMeterReadingOperation {
1689
+ /**
1690
+ * Operation discriminator. Required for meter reading operations.
1691
+ */
1692
+ type: "meter_reading";
1693
+ /**
1694
+ * Reference to the meter this reading belongs to.
1695
+ */
1696
+ meter: {
1697
+ /**
1698
+ * Attribute values that uniquely identify the meter, as `{ attribute: value }`.
1699
+ * example:
1700
+ * {
1701
+ * "meter_number": "M-001"
1702
+ * }
1703
+ */
1704
+ unique_ids: {
1705
+ [name: string]: string | number;
1706
+ };
1707
+ };
1708
+ /**
1709
+ * Optional reference to the meter counter (register) the reading belongs to. Required
1710
+ * when `reading_matching` is `strict-date`.
1711
+ *
1712
+ */
1713
+ counter?: {
1714
+ /**
1715
+ * Attribute values that uniquely identify the counter, as `{ attribute: value }`.
1716
+ * example:
1717
+ * {
1718
+ * "obis_number": "1-0:1.8.0"
1719
+ * }
1720
+ */
1721
+ unique_ids: {
1722
+ [name: string]: string | number;
1723
+ };
1724
+ };
1725
+ /**
1726
+ * Operation mode: `upsert` creates or updates the reading (default), `delete` removes it.
1727
+ */
1728
+ mode?: "upsert" | "delete";
1729
+ /**
1730
+ * Strategy for matching this reading against existing readings. `external_id` (the
1731
+ * default) matches by the reading's `external_id`; `strict-date` matches by meter +
1732
+ * counter + direction + date and REQUIRES `counter`. Useful when readings originate in
1733
+ * the portal and are echoed back by the ERP with truncated timestamps.
1734
+ *
1735
+ */
1736
+ reading_matching?: "external_id" | "strict-date";
1737
+ /**
1738
+ * The reading data. Additional keys (e.g. `direction`, `reason`, `read_by`, `status`,
1739
+ * `metadata`) pass through to the metering service verbatim.
1740
+ *
1741
+ */
1742
+ attributes: {
1743
+ /**
1744
+ * External identifier of the reading (numbers are coerced to strings).
1745
+ */
1746
+ external_id: /* External identifier of the reading (numbers are coerced to strings). */ string | number;
1747
+ /**
1748
+ * When the reading was taken. ISO 8601 - either `YYYY-MM-DD` or
1749
+ * `YYYY-MM-DDTHH:mm:ss` (optional fractional seconds and `Z` / `±HH:mm` offset).
1750
+ * Other formats (e.g. `DD.MM.YYYY`, epoch numbers) are rejected.
1751
+ *
1752
+ * example:
1753
+ * 2026-08-24T06:00:00Z
1754
+ */
1755
+ timestamp: string;
1756
+ /**
1757
+ * Origin system of the reading.
1758
+ */
1759
+ source: "ECP" | "ERP" | "360" | "journey-submission";
1760
+ /**
1761
+ * The reading value - a number, or a numeric string (coerced to a number).
1762
+ */
1763
+ value: /* The reading value - a number, or a numeric string (coerced to a number). */ number | string;
1764
+ };
1765
+ }
1766
+ /**
1767
+ * The payload of an ERP event routed to a `direct: true` use case: a versioned envelope of
1768
+ * pre-mapped operations that skip the mapping engine. Sent as the `payload` of an
1769
+ * `ErpEventV3` - either as a JSON object or as a JSON string (`format` must be `json`;
1770
+ * XML is rejected for direct use cases).
1771
+ *
1772
+ * The schema is strict: unknown keys on the envelope or on any operation are rejected with
1773
+ * an error naming the offending path. Attribute values, by contrast, pass through to the
1774
+ * entity verbatim (except `$relation` / `$relation_ref` envelopes, which are validated and
1775
+ * resolved).
1776
+ *
1777
+ * One event lands as one queue message, so the whole event (including this payload) must
1778
+ * stay within the 256 KiB message budget. Identical consecutive payloads within 5 minutes
1779
+ * can be deduplicated by the queue - use the event's `deduplication_id` deliberately when
1780
+ * re-sending identical data.
1781
+ *
1782
+ */
1783
+ export interface DirectPayload {
1784
+ /**
1785
+ * Version of the direct payload contract. Currently only `"1"` is supported; an
1786
+ * unsupported version is rejected with `DIRECT_VERSION_UNSUPPORTED`. Deliberately not
1787
+ * an enum: the constraint is enforced by the handler so the dry-run endpoint returns
1788
+ * a structured `valid: false` verdict instead of a schema-level 400.
1789
+ *
1790
+ */
1791
+ version: string;
1792
+ /**
1793
+ * The operations to apply, in order. At most 100 operations per event (enforced by
1794
+ * the handler, with a structured error naming the limit). Each item is either an
1795
+ * entity operation (`type` omitted or `"entity"`) or a meter reading operation
1796
+ * (`type: "meter_reading"`).
1797
+ *
1798
+ */
1799
+ operations: (/**
1800
+ * A single pre-mapped entity operation: upserts, soft-deletes, or purges one entity,
1801
+ * identified by its unique ids. Produces the same internal update as a mapped-mode entity
1802
+ * configuration, so create-vs-update resolution, relation resolution, ordering, and
1803
+ * monitoring behave identically.
1804
+ *
1805
+ */
1806
+ DirectEntityOperation | /**
1807
+ * A single pre-mapped meter reading operation: upserts or deletes one reading on a meter
1808
+ * (and optionally a specific counter), identified by their unique ids. Produces the same
1809
+ * internal update as a mapped-mode meter reading configuration.
1810
+ *
1811
+ */
1812
+ DirectMeterReadingOperation)[];
1813
+ }
1814
+ /**
1815
+ * One relation target: either an already-resolved reference (`entity_id`), or a lookup by
1816
+ * unique ids (`schema` + `unique_ids`, resolved by the pipeline like any other unique-id
1817
+ * lookup, including stub creation and retry when the target does not exist yet). The two
1818
+ * forms are mutually exclusive. Use `_id` as the sole `unique_ids` key for a direct-id
1819
+ * lookup.
1820
+ *
1821
+ */
1822
+ export interface DirectRelationItem {
1823
+ /**
1824
+ * Epilot entity id of the relation target. Must not be combined with `schema` / `unique_ids`.
1825
+ */
1826
+ entity_id?: string;
1827
+ /**
1828
+ * Entity schema slug of the relation target. Required when `entity_id` is not given.
1829
+ * example:
1830
+ * contact
1831
+ */
1832
+ schema?: string;
1833
+ /**
1834
+ * Attribute values that uniquely identify the target. Required when `entity_id` is not given.
1835
+ * example:
1836
+ * {
1837
+ * "customer_number": "CUST-12345"
1838
+ * }
1839
+ */
1840
+ unique_ids?: {
1841
+ [name: string]: string | number;
1842
+ };
1843
+ /**
1844
+ * Optional per-field type hints for repeatable unique-id fields, as on the entity operation.
1845
+ */
1846
+ unique_id_types?: {
1847
+ [name: string]: "email" | "phone";
1848
+ };
1849
+ /**
1850
+ * Optional relation tags (e.g. `primary`, `billing`).
1851
+ */
1852
+ tags?: string[];
1853
+ }
1854
+ /**
1855
+ * One relation-ref target - the entity to look up, and the repeatable item to reference on it.
1856
+ */
1857
+ export interface DirectRelationRefItem {
1858
+ /**
1859
+ * Entity schema slug of the target entity.
1860
+ * example:
1861
+ * contact
1862
+ */
1863
+ schema: string;
1864
+ /**
1865
+ * Attribute values that uniquely identify the target entity.
1866
+ */
1867
+ unique_ids: {
1868
+ [name: string]: string | number;
1869
+ };
1870
+ /**
1871
+ * Optional per-field type hints for repeatable unique-id fields.
1872
+ */
1873
+ unique_id_types?: {
1874
+ [name: string]: "email" | "phone";
1875
+ };
1876
+ /**
1877
+ * The attribute on the TARGET entity that holds the repeatable array (e.g. `address`).
1878
+ */
1879
+ path: string;
1880
+ /**
1881
+ * The item to match (or create) at `path` - e.g. an address object.
1882
+ * example:
1883
+ * {
1884
+ * "street": "Main Street",
1885
+ * "city": "Berlin"
1886
+ * }
1887
+ */
1888
+ value: any;
1889
+ }
1890
+ /**
1891
+ * An entity attribute value that references an ITEM INSIDE a repeatable attribute of
1892
+ * another entity - for example one address out of a contact's `address` list. The target
1893
+ * entity is looked up by unique ids, then the item at `path` matching `value` is
1894
+ * referenced (creating it when missing).
1895
+ *
1896
+ * The same operation envelope as `$relation` applies: a bare array is shorthand for
1897
+ * `_set`, otherwise exactly one of `_set`, `_append`, `_append_all`.
1898
+ *
1899
+ */
1900
+ export interface DirectRelationRefValue {
1901
+ $relation_ref: /* One relation-ref target - the entity to look up, and the repeatable item to reference on it. */ DirectRelationRefItem[] | {
1902
+ _set?: /* One relation-ref target - the entity to look up, and the repeatable item to reference on it. */ DirectRelationRefItem[];
1903
+ _append?: /* One relation-ref target - the entity to look up, and the repeatable item to reference on it. */ DirectRelationRefItem[];
1904
+ _append_all?: /* One relation-ref target - the entity to look up, and the repeatable item to reference on it. */ DirectRelationRefItem[];
1905
+ };
1906
+ }
1907
+ /**
1908
+ * An entity attribute value that establishes relations to other entities. Written on any
1909
+ * attribute inside a direct entity operation's `attributes`.
1910
+ *
1911
+ * Two forms are accepted: a bare array of items (shorthand for `_set`, i.e. replace), or
1912
+ * an object with EXACTLY ONE of the operations `_set` (replace), `_append` (merge,
1913
+ * deduplicated by entity id), `_append_all` (merge without deduplication). No other
1914
+ * operation keys are accepted.
1915
+ *
1916
+ */
1917
+ export interface DirectRelationValue {
1918
+ $relation: /**
1919
+ * One relation target: either an already-resolved reference (`entity_id`), or a lookup by
1920
+ * unique ids (`schema` + `unique_ids`, resolved by the pipeline like any other unique-id
1921
+ * lookup, including stub creation and retry when the target does not exist yet). The two
1922
+ * forms are mutually exclusive. Use `_id` as the sole `unique_ids` key for a direct-id
1923
+ * lookup.
1924
+ *
1925
+ */
1926
+ DirectRelationItem[] | {
1927
+ _set?: /**
1928
+ * One relation target: either an already-resolved reference (`entity_id`), or a lookup by
1929
+ * unique ids (`schema` + `unique_ids`, resolved by the pipeline like any other unique-id
1930
+ * lookup, including stub creation and retry when the target does not exist yet). The two
1931
+ * forms are mutually exclusive. Use `_id` as the sole `unique_ids` key for a direct-id
1932
+ * lookup.
1933
+ *
1934
+ */
1935
+ DirectRelationItem[];
1936
+ _append?: /**
1937
+ * One relation target: either an already-resolved reference (`entity_id`), or a lookup by
1938
+ * unique ids (`schema` + `unique_ids`, resolved by the pipeline like any other unique-id
1939
+ * lookup, including stub creation and retry when the target does not exist yet). The two
1940
+ * forms are mutually exclusive. Use `_id` as the sole `unique_ids` key for a direct-id
1941
+ * lookup.
1942
+ *
1943
+ */
1944
+ DirectRelationItem[];
1945
+ _append_all?: /**
1946
+ * One relation target: either an already-resolved reference (`entity_id`), or a lookup by
1947
+ * unique ids (`schema` + `unique_ids`, resolved by the pipeline like any other unique-id
1948
+ * lookup, including stub creation and retry when the target does not exist yet). The two
1949
+ * forms are mutually exclusive. Use `_id` as the sole `unique_ids` key for a direct-id
1950
+ * lookup.
1951
+ *
1952
+ */
1953
+ DirectRelationItem[];
1954
+ };
1955
+ }
1956
+ /**
1957
+ * One validation error found during a direct-mode dry run.
1958
+ */
1959
+ export interface DirectSimulationError {
1960
+ /**
1961
+ * Error class, matching the monitoring codes the ingest pipeline emits:
1962
+ * `DIRECT_PAYLOAD_INVALID` (schema violation, JSON parse failure, or XML format),
1963
+ * `DIRECT_VERSION_UNSUPPORTED` (unknown payload `version`),
1964
+ * `DIRECT_ENTITY_NOT_ALLOWED` (entity or unique-id keys not permitted by the use
1965
+ * case's allowlist).
1966
+ *
1967
+ */
1968
+ code: "DIRECT_PAYLOAD_INVALID" | "DIRECT_VERSION_UNSUPPORTED" | "DIRECT_ENTITY_NOT_ALLOWED";
1969
+ /**
1970
+ * Human-readable description, including the path of the offending element.
1971
+ */
1972
+ message: string;
1973
+ /**
1974
+ * Zero-based index of the operation the error refers to, when attributable to one.
1975
+ */
1976
+ operation_index?: number;
1977
+ }
1978
+ /**
1979
+ * Request for a direct-mode dry run: the `direct: true` use case configuration to test
1980
+ * against, and the payload to validate and translate.
1981
+ *
1982
+ */
1983
+ export interface DirectSimulationRequest {
1984
+ /**
1985
+ * The direct use case configuration to simulate against. `direct` must be `true`;
1986
+ * `entities` acts as the optional allowlist exactly as at runtime. This is the same
1987
+ * configuration format stored on the inbound use case resource, so a configuration can
1988
+ * be tested before saving it.
1989
+ *
1990
+ */
1991
+ event_configuration: {
1992
+ /**
1993
+ * Enables direct mode for this use case. When `true`, every event routed to this use
1994
+ * case must carry a `DirectPayload` - pre-mapped entity and meter reading operations -
1995
+ * instead of raw ERP data, and the mapping engine is skipped entirely. Everything else
1996
+ * in the inbound pipeline (deduplication, ordering, create-vs-update resolution,
1997
+ * relation resolution, monitoring) behaves exactly as in mapped mode.
1998
+ *
1999
+ * In direct mode, `entities` doubles as an optional allowlist: when non-empty, each
2000
+ * operation's `entity_slug` must match an entry's `entity_schema`, and when that entry
2001
+ * declares `unique_ids`, the operation's unique-id keys must be exactly that set (or
2002
+ * just `_id`). Entries need only `entity_schema` and `unique_ids` - `fields` is not
2003
+ * required and is ignored. `meter_readings` is ignored in direct mode.
2004
+ *
2005
+ * Flag changes take up to 5 minutes to propagate (configuration cache).
2006
+ *
2007
+ */
2008
+ direct?: boolean;
2009
+ /**
2010
+ * Array of entity configurations for this event
2011
+ */
2012
+ entities?: IntegrationEntity[];
2013
+ /**
2014
+ * Array of meter reading configurations for this event
2015
+ */
2016
+ meter_readings?: IntegrationMeterReading[];
2017
+ };
2018
+ /**
2019
+ * The direct payload to validate - a `DirectPayload` object, or its JSON string form.
2020
+ */
2021
+ payload: /* The direct payload to validate - a `DirectPayload` object, or its JSON string form. */ string | /**
2022
+ * The payload of an ERP event routed to a `direct: true` use case: a versioned envelope of
2023
+ * pre-mapped operations that skip the mapping engine. Sent as the `payload` of an
2024
+ * `ErpEventV3` - either as a JSON object or as a JSON string (`format` must be `json`;
2025
+ * XML is rejected for direct use cases).
2026
+ *
2027
+ * The schema is strict: unknown keys on the envelope or on any operation are rejected with
2028
+ * an error naming the offending path. Attribute values, by contrast, pass through to the
2029
+ * entity verbatim (except `$relation` / `$relation_ref` envelopes, which are validated and
2030
+ * resolved).
2031
+ *
2032
+ * One event lands as one queue message, so the whole event (including this payload) must
2033
+ * stay within the 256 KiB message budget. Identical consecutive payloads within 5 minutes
2034
+ * can be deduplicated by the queue - use the event's `deduplication_id` deliberately when
2035
+ * re-sending identical data.
2036
+ *
2037
+ */
2038
+ DirectPayload;
2039
+ }
2040
+ /**
2041
+ * Result of a direct-mode dry run. `valid: false` responses list EVERY violation found
2042
+ * across all operations in `errors`. `valid: true` responses preview the internal updates
2043
+ * the pipeline would apply, plus non-blocking `warnings`.
2044
+ *
2045
+ */
2046
+ export interface DirectSimulationResponse {
2047
+ /**
2048
+ * Whether the payload would be accepted by the ingest endpoint.
2049
+ */
2050
+ valid: boolean;
2051
+ /**
2052
+ * All validation errors found. Empty when `valid` is `true`.
2053
+ */
2054
+ errors: /* One validation error found during a direct-mode dry run. */ DirectSimulationError[];
2055
+ /**
2056
+ * Non-blocking findings - e.g. unique-id fields not defined in the target entity
2057
+ * schema (lookups would never match), or a failed server-side unique-id type
2058
+ * derivation.
2059
+ *
2060
+ */
2061
+ warnings?: MappingSimulationWarning[];
2062
+ /**
2063
+ * The translated internal entity updates, exactly as the pipeline would process them.
2064
+ * Only present when `valid` is `true`.
2065
+ *
2066
+ */
2067
+ entity_updates?: {
2068
+ /**
2069
+ * The entity type slug
2070
+ */
2071
+ entity_slug: string;
2072
+ /**
2073
+ * Unique identifier mappings for this entity
2074
+ */
2075
+ unique_identifiers: {
2076
+ [name: string]: any;
2077
+ };
2078
+ /**
2079
+ * Mapped attribute values
2080
+ */
2081
+ attributes: {
2082
+ [name: string]: any;
2083
+ };
2084
+ /**
2085
+ * Present when the entity mapping has a `pricing` block. Echoes the pricing configuration and the data extracted for it, so mapping authors can see what would be sent to the pricing service.
2086
+ */
2087
+ pricing?: {
2088
+ /**
2089
+ * The pricing configuration from the entity mapping
2090
+ */
2091
+ config: {
2092
+ [name: string]: any;
2093
+ };
2094
+ /**
2095
+ * The pricing input data extracted from the payload
2096
+ */
2097
+ data: {
2098
+ [name: string]: any;
2099
+ }[];
2100
+ };
2101
+ /**
2102
+ * Effective operation mode applied to this entity at runtime. `upsert-prune-scope-purge` / `upsert-prune-scope-delete` configurations report `upsert` here, because the individual entities in the payload are upserted — the destructive part of those modes is reported separately in `prune_scope_updates`. For `delete` / `purge`, `attributes` are still mapped and returned but ignored at runtime: only `unique_identifiers` are used to locate the entity to remove.
2103
+ */
2104
+ mode: "upsert" | "delete" | "purge";
2105
+ /**
2106
+ * Per-field metadata for repeatable unique-id fields - explicit
2107
+ * `unique_id_types` merged with server-side schema derivation. Absent when
2108
+ * no field resolved to a repeatable type.
2109
+ *
2110
+ */
2111
+ unique_identifiers_metadata?: {
2112
+ [name: string]: {
2113
+ fieldType?: "email" | "phone";
2114
+ index?: number;
2115
+ };
2116
+ };
2117
+ }[];
2118
+ /**
2119
+ * The translated internal meter reading updates. Only present when `valid` is `true`.
2120
+ *
2121
+ */
2122
+ meter_reading_updates?: {
2123
+ meter: {
2124
+ /**
2125
+ * Unique identifiers for the meter
2126
+ */
2127
+ $entity_unique_ids: {
2128
+ [name: string]: any;
2129
+ };
2130
+ };
2131
+ meter_counter?: {
2132
+ /**
2133
+ * Unique identifiers for the meter counter
2134
+ */
2135
+ $entity_unique_ids?: {
2136
+ [name: string]: any;
2137
+ };
2138
+ };
2139
+ /**
2140
+ * Meter reading attributes. Required: external_id, timestamp, source, value. `timestamp` must be ISO 8601 — either `YYYY-MM-DD` or `YYYY-MM-DDTHH:mm:ss` (with optional fractional seconds and optional `Z` / `±HH:mm` timezone offset); non-ISO formats (e.g. `DD.MM.YYYY` or epoch numbers) are rejected and must be converted upstream via a `jsonataExpression` (e.g. `$fromMillis(...)`). Date-only values are normalized to midnight UTC and offset-less date-times are anchored to UTC before being forwarded to the metering API. `source` must be one of: ECP, ERP, 360, journey-submission. `reason` (optional) must be one of: regular, irregular, last, first, meter_change, contract_change, meter_adjustment (or empty/null).
2141
+ */
2142
+ attributes: {
2143
+ [name: string]: any;
2144
+ };
2145
+ /**
2146
+ * Effective operation mode applied to this reading at runtime. `upsert-prune-scope` configurations report `upsert` here — their destructive part is reported separately in `meter_readings_prune_scope_updates`.
2147
+ */
2148
+ mode: "upsert" | "delete";
2149
+ /**
2150
+ * Per-reading pipeline configuration carried by the operation.
2151
+ */
2152
+ _config?: {
2153
+ reading_matching?: "external_id" | "strict-date";
2154
+ };
2155
+ }[];
2156
+ }
1594
2157
  /**
1595
2158
  * A markdown documentation page of an integration
1596
2159
  */
@@ -1938,6 +2501,88 @@ declare namespace Components {
1938
2501
  */
1939
2502
  deletion_mode: "delete" | "purge";
1940
2503
  }
2504
+ /**
2505
+ * Inbound sync state of one entity for one integration. Carries two
2506
+ * independent groups: the entity-level fields (`last_synced_at`, …) and,
2507
+ * on meter/meter_counter entities, the readings-level fields
2508
+ * (`readings_last_synced_at`, …). Either group can be present alone — a
2509
+ * meter whose readings sync via the ERP but whose entity was never
2510
+ * itself inbound-mapped carries only the readings group.
2511
+ *
2512
+ */
2513
+ export interface EntitySyncState {
2514
+ /**
2515
+ * The entity ID
2516
+ */
2517
+ entity_id: string; // uuid
2518
+ /**
2519
+ * The integration that synchronized the entity
2520
+ */
2521
+ integration_id: string; // uuid
2522
+ /**
2523
+ * The entity schema slug
2524
+ * example:
2525
+ * contract
2526
+ */
2527
+ entity_slug: string;
2528
+ /**
2529
+ * The inbound use case that last processed the entity
2530
+ */
2531
+ use_case_id?: string;
2532
+ /**
2533
+ * Last time an inbound ERP event for this entity was processed —
2534
+ * including no-op checks that changed nothing on the entity.
2535
+ *
2536
+ */
2537
+ last_synced_at?: string; // date-time
2538
+ /**
2539
+ * Last time an inbound ERP event actually changed the entity (create/patch/delete)
2540
+ */
2541
+ last_changed_at?: string; // date-time
2542
+ /**
2543
+ * Outcome of the most recent inbound sync check
2544
+ */
2545
+ last_operation?: "create" | "patch" | "delete" | "no-op";
2546
+ /**
2547
+ * The event ID of the most recent inbound sync check
2548
+ */
2549
+ last_event_id?: string;
2550
+ /**
2551
+ * Last time meter readings for this meter/meter_counter entity were
2552
+ * received and processed from the ERP. Only present on meter and
2553
+ * meter_counter entities. The metering path cannot detect no-ops,
2554
+ * so there is no separate readings changed-at.
2555
+ *
2556
+ */
2557
+ readings_last_synced_at?: string; // date-time
2558
+ /**
2559
+ * Outcome of the most recent inbound readings sync
2560
+ */
2561
+ readings_last_operation?: "upsert" | "delete";
2562
+ /**
2563
+ * The event ID of the most recent inbound readings sync
2564
+ */
2565
+ readings_last_event_id?: string;
2566
+ }
2567
+ export interface EntitySyncStatusResponse {
2568
+ /**
2569
+ * The entity the sync states belong to
2570
+ */
2571
+ entity_id: string; // uuid
2572
+ /**
2573
+ * One entry per integration that has processed an inbound event for the entity
2574
+ */
2575
+ sync_states: /**
2576
+ * Inbound sync state of one entity for one integration. Carries two
2577
+ * independent groups: the entity-level fields (`last_synced_at`, …) and,
2578
+ * on meter/meter_counter entities, the readings-level fields
2579
+ * (`readings_last_synced_at`, …). Either group can be present alone — a
2580
+ * meter whose readings sync via the ERP but whose entity was never
2581
+ * itself inbound-mapped carries only the readings group.
2582
+ *
2583
+ */
2584
+ EntitySyncState[];
2585
+ }
1941
2586
  export interface EntityUpdate {
1942
2587
  /**
1943
2588
  * The entity type slug
@@ -2104,12 +2749,30 @@ declare namespace Components {
2104
2749
  */
2105
2750
  format: "json" | "xml";
2106
2751
  /**
2107
- * The object data payload - can be either a serialized string or a direct JSON object
2752
+ * The object data payload - can be either a serialized string or a direct JSON object.
2753
+ *
2754
+ * For events routed to a mapped (default) use case this is the raw ERP object; the use
2755
+ * case's mapping configuration transforms it into entity updates.
2756
+ *
2757
+ * For events routed to a use case whose configuration has `direct: true`, the payload
2758
+ * MUST be a `DirectPayload` (as an object, or a JSON string): a versioned envelope of
2759
+ * pre-mapped entity and meter reading operations that skip the mapping engine entirely.
2760
+ * Direct use cases accept JSON only - `format: "xml"` events are rejected.
2761
+ *
2108
2762
  * example:
2109
2763
  * {"id":"BP10001","name":"Acme Corporation","type":"organization","tax_id":"DE123456789","status":"active"}
2110
2764
  */
2111
2765
  payload: /**
2112
- * The object data payload - can be either a serialized string or a direct JSON object
2766
+ * The object data payload - can be either a serialized string or a direct JSON object.
2767
+ *
2768
+ * For events routed to a mapped (default) use case this is the raw ERP object; the use
2769
+ * case's mapping configuration transforms it into entity updates.
2770
+ *
2771
+ * For events routed to a use case whose configuration has `direct: true`, the payload
2772
+ * MUST be a `DirectPayload` (as an object, or a JSON string): a versioned envelope of
2773
+ * pre-mapped entity and meter reading operations that skip the mapping engine entirely.
2774
+ * Direct use cases accept JSON only - `format: "xml"` events are rejected.
2775
+ *
2113
2776
  * example:
2114
2777
  * {"id":"BP10001","name":"Acme Corporation","type":"organization","tax_id":"DE123456789","status":"active"}
2115
2778
  */
@@ -2137,6 +2800,13 @@ declare namespace Components {
2137
2800
  * customer-42
2138
2801
  */
2139
2802
  group_id?: string;
2803
+ /**
2804
+ * Optional per-event trace id. Overrides the request-level `correlation_id` for THIS event, so a batch carrying several distinct business operations keeps its traces segregated in monitoring instead of merged under one request-level id. When absent, the event inherits the request-level `correlation_id`.
2805
+ *
2806
+ * example:
2807
+ * customer-42-sync-2026-08-26
2808
+ */
2809
+ correlation_id?: string;
2140
2810
  } | {
2141
2811
  /**
2142
2812
  * Event name from integration mapping (e.g., business_partner, contract_account). Required when use_case_slug is not provided.
@@ -2158,12 +2828,30 @@ declare namespace Components {
2158
2828
  */
2159
2829
  format: "json" | "xml";
2160
2830
  /**
2161
- * The object data payload - can be either a serialized string or a direct JSON object
2831
+ * The object data payload - can be either a serialized string or a direct JSON object.
2832
+ *
2833
+ * For events routed to a mapped (default) use case this is the raw ERP object; the use
2834
+ * case's mapping configuration transforms it into entity updates.
2835
+ *
2836
+ * For events routed to a use case whose configuration has `direct: true`, the payload
2837
+ * MUST be a `DirectPayload` (as an object, or a JSON string): a versioned envelope of
2838
+ * pre-mapped entity and meter reading operations that skip the mapping engine entirely.
2839
+ * Direct use cases accept JSON only - `format: "xml"` events are rejected.
2840
+ *
2162
2841
  * example:
2163
2842
  * {"id":"BP10001","name":"Acme Corporation","type":"organization","tax_id":"DE123456789","status":"active"}
2164
2843
  */
2165
2844
  payload: /**
2166
- * The object data payload - can be either a serialized string or a direct JSON object
2845
+ * The object data payload - can be either a serialized string or a direct JSON object.
2846
+ *
2847
+ * For events routed to a mapped (default) use case this is the raw ERP object; the use
2848
+ * case's mapping configuration transforms it into entity updates.
2849
+ *
2850
+ * For events routed to a use case whose configuration has `direct: true`, the payload
2851
+ * MUST be a `DirectPayload` (as an object, or a JSON string): a versioned envelope of
2852
+ * pre-mapped entity and meter reading operations that skip the mapping engine entirely.
2853
+ * Direct use cases accept JSON only - `format: "xml"` events are rejected.
2854
+ *
2167
2855
  * example:
2168
2856
  * {"id":"BP10001","name":"Acme Corporation","type":"organization","tax_id":"DE123456789","status":"active"}
2169
2857
  */
@@ -2191,6 +2879,13 @@ declare namespace Components {
2191
2879
  * customer-42
2192
2880
  */
2193
2881
  group_id?: string;
2882
+ /**
2883
+ * Optional per-event trace id. Overrides the request-level `correlation_id` for THIS event, so a batch carrying several distinct business operations keeps its traces segregated in monitoring instead of merged under one request-level id. When absent, the event inherits the request-level `correlation_id`.
2884
+ *
2885
+ * example:
2886
+ * customer-42-sync-2026-08-26
2887
+ */
2888
+ correlation_id?: string;
2194
2889
  };
2195
2890
  /**
2196
2891
  * Why the import failed — present if and only if status = FAILED. `code` is the translation key; for VALIDATION_BLOCKED the specifics are in `validation`.
@@ -3325,6 +4020,23 @@ declare namespace Components {
3325
4020
  * Configuration for inbound use cases (ERP to epilot)
3326
4021
  */
3327
4022
  export interface InboundIntegrationEventConfiguration {
4023
+ /**
4024
+ * Enables direct mode for this use case. When `true`, every event routed to this use
4025
+ * case must carry a `DirectPayload` - pre-mapped entity and meter reading operations -
4026
+ * instead of raw ERP data, and the mapping engine is skipped entirely. Everything else
4027
+ * in the inbound pipeline (deduplication, ordering, create-vs-update resolution,
4028
+ * relation resolution, monitoring) behaves exactly as in mapped mode.
4029
+ *
4030
+ * In direct mode, `entities` doubles as an optional allowlist: when non-empty, each
4031
+ * operation's `entity_slug` must match an entry's `entity_schema`, and when that entry
4032
+ * declares `unique_ids`, the operation's unique-id keys must be exactly that set (or
4033
+ * just `_id`). Entries need only `entity_schema` and `unique_ids` - `fields` is not
4034
+ * required and is ignored. `meter_readings` is ignored in direct mode.
4035
+ *
4036
+ * Flag changes take up to 5 minutes to propagate (configuration cache).
4037
+ *
4038
+ */
4039
+ direct?: boolean;
3328
4040
  /**
3329
4041
  * Array of entity configurations for this event
3330
4042
  */
@@ -4183,9 +4895,11 @@ declare namespace Components {
4183
4895
  */
4184
4896
  PruneScopeConfig;
4185
4897
  /**
4186
- * Field mapping definitions
4898
+ * Field mapping definitions. Required for mapped-mode entity configurations; may be
4899
+ * omitted for allowlist entries of a `direct: true` use case, where no mapping runs.
4900
+ *
4187
4901
  */
4188
- fields: IntegrationEntityField[];
4902
+ fields?: IntegrationEntityField[];
4189
4903
  }
4190
4904
  export interface IntegrationEntityField {
4191
4905
  /**
@@ -7791,6 +8505,24 @@ declare namespace Paths {
7791
8505
  export type $500 = Components.Responses.InternalServerError;
7792
8506
  }
7793
8507
  }
8508
+ namespace GetEntitySyncStatus {
8509
+ namespace Parameters {
8510
+ export type EntityId = string; // uuid
8511
+ export type IntegrationId = string; // uuid
8512
+ }
8513
+ export interface PathParameters {
8514
+ entityId: Parameters.EntityId /* uuid */;
8515
+ }
8516
+ export interface QueryParameters {
8517
+ integration_id?: Parameters.IntegrationId /* uuid */;
8518
+ }
8519
+ namespace Responses {
8520
+ export type $200 = Components.Schemas.EntitySyncStatusResponse;
8521
+ export type $400 = Components.Responses.BadRequest;
8522
+ export type $401 = Components.Responses.Unauthorized;
8523
+ export type $500 = Components.Responses.InternalServerError;
8524
+ }
8525
+ }
7794
8526
  namespace GetErpImport {
7795
8527
  namespace Parameters {
7796
8528
  export type ImportId = string;
@@ -8427,6 +9159,27 @@ declare namespace Paths {
8427
9159
  export type $500 = Components.Responses.InternalServerError;
8428
9160
  }
8429
9161
  }
9162
+ namespace SimulateDirect {
9163
+ export type RequestBody = /**
9164
+ * Request for a direct-mode dry run: the `direct: true` use case configuration to test
9165
+ * against, and the payload to validate and translate.
9166
+ *
9167
+ */
9168
+ Components.Schemas.DirectSimulationRequest;
9169
+ namespace Responses {
9170
+ export type $200 = /**
9171
+ * Result of a direct-mode dry run. `valid: false` responses list EVERY violation found
9172
+ * across all operations in `errors`. `valid: true` responses preview the internal updates
9173
+ * the pipeline would apply, plus non-blocking `warnings`.
9174
+ *
9175
+ */
9176
+ Components.Schemas.DirectSimulationResponse;
9177
+ export type $400 = Components.Responses.BadRequest;
9178
+ export type $401 = Components.Responses.Unauthorized;
9179
+ export type $422 = Components.Schemas.ErrorResponseBase;
9180
+ export type $500 = Components.Responses.InternalServerError;
9181
+ }
9182
+ }
8430
9183
  namespace SimulateMapping {
8431
9184
  export type RequestBody = Components.Schemas.MappingSimulationRequest;
8432
9185
  namespace Responses {
@@ -8720,6 +9473,29 @@ interface OperationMethods {
8720
9473
  data?: Paths.SimulateMappingV2.RequestBody,
8721
9474
  config?: AxiosRequestConfig
8722
9475
  ): OperationResponse<Paths.SimulateMappingV2.Responses.$200>
9476
+ /**
9477
+ * simulateDirect - simulateDirect
9478
+ *
9479
+ * Dry run for direct-mode payloads: validates a `DirectPayload` against a `direct: true`
9480
+ * use case configuration and previews the internal entity and meter reading updates the
9481
+ * pipeline would apply — without persisting anything.
9482
+ *
9483
+ * Unlike the ingest endpoint, validation does not stop at the first problem: ALL issues
9484
+ * across all operations are collected into `errors`, each carrying the index of the
9485
+ * operation it refers to. When the payload is valid, the response additionally contains
9486
+ * the translated update previews plus non-blocking `warnings` (for example unique-id
9487
+ * fields that are not defined in the target entity schema, or a failed server-side
9488
+ * unique-id type derivation).
9489
+ *
9490
+ * Use this endpoint while designing a direct integration, before sending events to
9491
+ * `POST /v3/erp/updates/events`. See documentation at /docs/DIRECT_MODE.md.
9492
+ *
9493
+ */
9494
+ 'simulateDirect'(
9495
+ parameters?: Parameters<UnknownParamsObject> | null,
9496
+ data?: Paths.SimulateDirect.RequestBody,
9497
+ config?: AxiosRequestConfig
9498
+ ): OperationResponse<Paths.SimulateDirect.Responses.$200>
8723
9499
  /**
8724
9500
  * simulateMapping - simulateMapping
8725
9501
  *
@@ -9147,6 +9923,24 @@ interface OperationMethods {
9147
9923
  data?: any,
9148
9924
  config?: AxiosRequestConfig
9149
9925
  ): OperationResponse<Paths.GetOutboundStatus.Responses.$200>
9926
+ /**
9927
+ * getEntitySyncStatus - getEntitySyncStatus
9928
+ *
9929
+ * Get the inbound ERP sync status of an entity: when each integration last
9930
+ * synchronized (checked) the entity against the ERP, and when it last
9931
+ * actually changed it. `last_synced_at` also advances on no-op checks —
9932
+ * events that were received and evaluated but changed nothing — which by
9933
+ * design leave no trace on the entity itself (no activity feed entry, no
9934
+ * `_updated_at` bump). Use it to tell whether an entity is up to date with
9935
+ * the ERP. Returns an empty list for entities no inbound use case has
9936
+ * processed. Org-scoped via the caller's token.
9937
+ *
9938
+ */
9939
+ 'getEntitySyncStatus'(
9940
+ parameters?: Parameters<Paths.GetEntitySyncStatus.QueryParameters & Paths.GetEntitySyncStatus.PathParameters> | null,
9941
+ data?: any,
9942
+ config?: AxiosRequestConfig
9943
+ ): OperationResponse<Paths.GetEntitySyncStatus.Responses.$200>
9150
9944
  /**
9151
9945
  * pollOutboundMessages - pollOutboundMessages
9152
9946
  *
@@ -9600,6 +10394,31 @@ interface PathsDictionary {
9600
10394
  config?: AxiosRequestConfig
9601
10395
  ): OperationResponse<Paths.SimulateMappingV2.Responses.$200>
9602
10396
  }
10397
+ ['/v1/erp/updates/direct_simulation']: {
10398
+ /**
10399
+ * simulateDirect - simulateDirect
10400
+ *
10401
+ * Dry run for direct-mode payloads: validates a `DirectPayload` against a `direct: true`
10402
+ * use case configuration and previews the internal entity and meter reading updates the
10403
+ * pipeline would apply — without persisting anything.
10404
+ *
10405
+ * Unlike the ingest endpoint, validation does not stop at the first problem: ALL issues
10406
+ * across all operations are collected into `errors`, each carrying the index of the
10407
+ * operation it refers to. When the payload is valid, the response additionally contains
10408
+ * the translated update previews plus non-blocking `warnings` (for example unique-id
10409
+ * fields that are not defined in the target entity schema, or a failed server-side
10410
+ * unique-id type derivation).
10411
+ *
10412
+ * Use this endpoint while designing a direct integration, before sending events to
10413
+ * `POST /v3/erp/updates/events`. See documentation at /docs/DIRECT_MODE.md.
10414
+ *
10415
+ */
10416
+ 'post'(
10417
+ parameters?: Parameters<UnknownParamsObject> | null,
10418
+ data?: Paths.SimulateDirect.RequestBody,
10419
+ config?: AxiosRequestConfig
10420
+ ): OperationResponse<Paths.SimulateDirect.Responses.$200>
10421
+ }
9603
10422
  ['/v1/erp/updates/mapping_simulation']: {
9604
10423
  /**
9605
10424
  * simulateMapping - simulateMapping
@@ -10071,6 +10890,26 @@ interface PathsDictionary {
10071
10890
  config?: AxiosRequestConfig
10072
10891
  ): OperationResponse<Paths.GetOutboundStatus.Responses.$200>
10073
10892
  }
10893
+ ['/v1/entities/{entityId}/sync-status']: {
10894
+ /**
10895
+ * getEntitySyncStatus - getEntitySyncStatus
10896
+ *
10897
+ * Get the inbound ERP sync status of an entity: when each integration last
10898
+ * synchronized (checked) the entity against the ERP, and when it last
10899
+ * actually changed it. `last_synced_at` also advances on no-op checks —
10900
+ * events that were received and evaluated but changed nothing — which by
10901
+ * design leave no trace on the entity itself (no activity feed entry, no
10902
+ * `_updated_at` bump). Use it to tell whether an entity is up to date with
10903
+ * the ERP. Returns an empty list for entities no inbound use case has
10904
+ * processed. Org-scoped via the caller's token.
10905
+ *
10906
+ */
10907
+ 'get'(
10908
+ parameters?: Parameters<Paths.GetEntitySyncStatus.QueryParameters & Paths.GetEntitySyncStatus.PathParameters> | null,
10909
+ data?: any,
10910
+ config?: AxiosRequestConfig
10911
+ ): OperationResponse<Paths.GetEntitySyncStatus.Responses.$200>
10912
+ }
10074
10913
  ['/v1/integrations/{integrationId}/outbound/messages/poll']: {
10075
10914
  /**
10076
10915
  * pollOutboundMessages - pollOutboundMessages
@@ -10512,6 +11351,16 @@ type CreateUseCaseRequest = Components.Schemas.CreateUseCaseRequest;
10512
11351
  type CreateUseCaseRequestBase = Components.Schemas.CreateUseCaseRequestBase;
10513
11352
  type DeleteIntegrationAppMappingRequest = Components.Schemas.DeleteIntegrationAppMappingRequest;
10514
11353
  type DeliveryConfig = Components.Schemas.DeliveryConfig;
11354
+ type DirectEntityOperation = Components.Schemas.DirectEntityOperation;
11355
+ type DirectMeterReadingOperation = Components.Schemas.DirectMeterReadingOperation;
11356
+ type DirectPayload = Components.Schemas.DirectPayload;
11357
+ type DirectRelationItem = Components.Schemas.DirectRelationItem;
11358
+ type DirectRelationRefItem = Components.Schemas.DirectRelationRefItem;
11359
+ type DirectRelationRefValue = Components.Schemas.DirectRelationRefValue;
11360
+ type DirectRelationValue = Components.Schemas.DirectRelationValue;
11361
+ type DirectSimulationError = Components.Schemas.DirectSimulationError;
11362
+ type DirectSimulationRequest = Components.Schemas.DirectSimulationRequest;
11363
+ type DirectSimulationResponse = Components.Schemas.DirectSimulationResponse;
10515
11364
  type DocumentationPage = Components.Schemas.DocumentationPage;
10516
11365
  type DocumentationPageSummary = Components.Schemas.DocumentationPageSummary;
10517
11366
  type EmbeddedFileProxyUseCaseRequest = Components.Schemas.EmbeddedFileProxyUseCaseRequest;
@@ -10522,6 +11371,8 @@ type EmbeddedSecureProxyUseCaseRequest = Components.Schemas.EmbeddedSecureProxyU
10522
11371
  type EmbeddedUseCaseRequest = Components.Schemas.EmbeddedUseCaseRequest;
10523
11372
  type EmbeddedUseCaseRequestBase = Components.Schemas.EmbeddedUseCaseRequestBase;
10524
11373
  type EntityPruneScopeUpdate = Components.Schemas.EntityPruneScopeUpdate;
11374
+ type EntitySyncState = Components.Schemas.EntitySyncState;
11375
+ type EntitySyncStatusResponse = Components.Schemas.EntitySyncStatusResponse;
10525
11376
  type EntityUpdate = Components.Schemas.EntityUpdate;
10526
11377
  type EnvVarRefConfig = Components.Schemas.EnvVarRefConfig;
10527
11378
  type EnvironmentFieldConfig = Components.Schemas.EnvironmentFieldConfig;
@@ -10688,4 +11539,4 @@ type ValidateErpImportRequest = Components.Schemas.ValidateErpImportRequest;
10688
11539
  type WebhookDeliveryConfig = Components.Schemas.WebhookDeliveryConfig;
10689
11540
  type WebhookStatus = Components.Schemas.WebhookStatus;
10690
11541
 
10691
- export { type FileProxyAuth as $, type AccessLogEntry as A, type EmbeddedUseCaseRequest as B, type Client as C, type DeleteIntegrationAppMappingRequest as D, type EmbeddedFileProxyUseCaseRequest as E, type EmbeddedUseCaseRequestBase as F, type EntityPruneScopeUpdate as G, type EntityUpdate as H, type EnvVarRefConfig as I, type EnvironmentFieldConfig as J, type ErpEvent as K, type ErpEventV3 as L, type ErpImportError as M, type ErpImportFilePreview as N, type OperationMethods as O, Paths as P, type ErpImportIssue as Q, type ErpImportJob as R, type ErpImportList as S, type ErpImportProgress as T, type ErpImportUseCaseSuggestion as U, type ErpImportValidation as V, type ErpUpdatesEventsV2Request as W, type ErpUpdatesEventsV3Request as X, type ErrorResponseBase as Y, type ExecuteErpImportRequest as Z, type ExternalMonitoringSpan as _, Components as a, type NotificationRecipient as a$, type FileProxyDeliveryConfig as a0, type FileProxyFanOutConfig as a1, type FileProxyParam as a2, type FileProxyResponseConfig as a3, type FileProxySecureProxyAttachment as a4, type FileProxyStep as a5, type FileProxyUploadConfig as a6, type FileProxyUrlConfig as a7, type FileProxyUrlParam as a8, type FileProxyUrlParams as a9, type IntegrationObjectV1 as aA, type IntegrationSettings as aB, type IntegrationWithUseCases as aC, type ManagedCallAuth as aD, type ManagedCallErrorResponse as aE, type ManagedCallExecuteRequest as aF, type ManagedCallExecuteResponse as aG, type ManagedCallOperation as aH, type ManagedCallOperationConfig as aI, type ManagedCallUseCase as aJ, type ManagedCallUseCaseHistoryEntry as aK, type MappingSimulationRequest as aL, type MappingSimulationResponse as aM, type MappingSimulationV2Request as aN, type MappingSimulationWarning as aO, type MeterReadingPruneScopeConfig as aP, type MeterReadingPruneScopeUpdate as aQ, type MeterReadingUpdate as aR, type MeterUniqueIdsConfig as aS, type MonitoringEventV2 as aT, type MonitoringStats as aU, type MonitoringStatsV2 as aV, type MonitoringTraceResponse as aW, type NotificationChannelSet as aX, type NotificationDigestConfig as aY, type NotificationHistoryItem as aZ, type NotificationHistoryResponse as a_, type FileProxyUseCase as aa, type FileProxyUseCaseConfiguration as ab, type FileProxyUseCaseHistoryEntry as ac, type GenerateTypesPreviewResponse as ad, type GenerateTypesRequest as ae, type GenerateTypesResponse as af, type GetMonitoringStatsRequest as ag, type GetMonitoringStatsV2Request as ah, type GetMonitoringTimeSeriesRequest as ai, type GetMonitoringTimeSeriesV2Request as aj, type InboundIntegrationEventConfiguration as ak, type InboundMonitoringEvent as al, type InboundUseCase as am, type InboundUseCaseHistoryEntry as an, type IngestExternalMonitoringEventsRequest as ao, type IngestExternalMonitoringEventsResponse as ap, type Integration as aq, type IntegrationAppMapping as ar, type IntegrationConfigurationV1 as as, type IntegrationConfigurationV2 as at, type IntegrationEditableFields as au, type IntegrationEntity as av, type IntegrationEntityField as aw, type IntegrationFieldV1 as ax, type IntegrationMeterReading as ay, type IntegrationNotificationConfig as az, type PathsDictionary as b, type UnblockOutboundStreamResponse as b$, type NotificationRule as b0, type NotificationRuleStatus as b1, type NotificationStatusResponse as b2, type OutboundConflict as b3, type OutboundDlqListResponse as b4, type OutboundDlqMessage as b5, type OutboundFileProxyTargetStatus as b6, type OutboundIntegrationEventConfiguration as b7, type OutboundMapping as b8, type OutboundMessage as b9, type RelationUniqueIdField as bA, type RepeatableFieldType as bB, type ReplayEventsRequest as bC, type RuleBaselineBucket as bD, type RuleBaselineStatus as bE, type S3Reference as bF, type SecureProxyRequest as bG, type SecureProxyResponse as bH, type SecureProxySummary as bI, type SecureProxyUpstreamError as bJ, type SecureProxyUseCase as bK, type SecureProxyUseCaseConfiguration as bL, type SecureProxyUseCaseHistoryEntry as bM, type SecureProxyWhitelist as bN, type SecureProxyWhitelistUpdate as bO, type SetIntegrationAppMappingRequest as bP, type SuggestErpImportUseCasesResponse as bQ, type TestNotificationRequest as bR, type TestNotificationResponse as bS, type TimeSeriesBreakdownItemV2 as bT, type TimeSeriesBucket as bU, type TimeSeriesBucketV2 as bV, type TriggerErpActionRequest as bW, type TriggerWebhookResp as bX, type TypeAnnotations as bY, type TypeDescriptor as bZ, type UnblockOutboundStreamRequest as b_, type OutboundMonitoringEvent as ba, type OutboundPollStatus as bb, type OutboundStatusResponse as bc, type OutboundUseCase as bd, type OutboundUseCaseHistoryEntry as be, type OutboundUseCaseStatus as bf, type PollDeliveryConfig as bg, type PollOutboundMessagesRequest as bh, type PollOutboundMessagesResponse as bi, type PortalOrigin as bj, type PortalRefConfig as bk, type PortalRefFilter as bl, type PruneScopeConfig as bm, type QueryAccessLogsRequest as bn, type QueryEventsRequest as bo, type QueryInboundMonitoringEventsRequest as bp, type QueryMonitoringEventsV2Request as bq, type QueryOutboundMonitoringEventsRequest as br, type RedriveOutboundDlqRequest as bs, type RedriveOutboundDlqResponse as bt, type RedriveOutboundDlqResult as bu, type RelationConfig as bv, type RelationItemConfig as bw, type RelationRefItemConfig as bx, type RelationRefValueConfig as by, type RelationRefsConfig as bz, type AckOutboundMessagesRequest as c, type UpdateFileProxyUseCaseRequest as c0, type UpdateInboundUseCaseRequest as c1, type UpdateIntegrationRequest as c2, type UpdateManagedCallUseCaseRequest as c3, type UpdateOutboundUseCaseRequest as c4, type UpdateSecureProxyUseCaseRequest as c5, type UpdateUseCaseRequest as c6, type UpdateUseCaseRequestBase as c7, type UpsertDocumentationPageRequest as c8, type UpsertIntegrationWithUseCasesRequest as c9, type UseCase as ca, type UseCaseBase as cb, type UseCaseHistoryEntry as cc, type UseCaseHistoryEntryBase as cd, type UseCaseTypePreview as ce, type ValidateErpImportRequest as cf, type WebhookDeliveryConfig as cg, type WebhookStatus as ch, type AckOutboundMessagesResponse as d, type AckResult as e, type AutoRefreshSettings as f, type CommitTypesRequest as g, type CommitTypesResponse as h, type ConnectorConfig as i, type CreateErpImportRequest as j, type CreateErpImportResponse as k, type CreateFileProxyUseCaseRequest as l, type CreateInboundUseCaseRequest as m, type CreateIntegrationRequest as n, type CreateManagedCallUseCaseRequest as o, type CreateOutboundUseCaseRequest as p, type CreateSecureProxyUseCaseRequest as q, type CreateUseCaseRequest as r, type CreateUseCaseRequestBase as s, type DeliveryConfig as t, type DocumentationPage as u, type DocumentationPageSummary as v, type EmbeddedInboundUseCaseRequest as w, type EmbeddedManagedCallUseCaseRequest as x, type EmbeddedOutboundUseCaseRequest as y, type EmbeddedSecureProxyUseCaseRequest as z };
11542
+ export { type ErpImportFilePreview as $, type AccessLogEntry as A, type DirectRelationValue as B, type Client as C, type DeleteIntegrationAppMappingRequest as D, type DirectSimulationError as E, type DirectSimulationRequest as F, type DirectSimulationResponse as G, type DocumentationPage as H, type DocumentationPageSummary as I, type EmbeddedFileProxyUseCaseRequest as J, type EmbeddedInboundUseCaseRequest as K, type EmbeddedManagedCallUseCaseRequest as L, type EmbeddedOutboundUseCaseRequest as M, type EmbeddedSecureProxyUseCaseRequest as N, type OperationMethods as O, Paths as P, type EmbeddedUseCaseRequest as Q, type EmbeddedUseCaseRequestBase as R, type EntityPruneScopeUpdate as S, type EntitySyncState as T, type EntitySyncStatusResponse as U, type EntityUpdate as V, type EnvVarRefConfig as W, type EnvironmentFieldConfig as X, type ErpEvent as Y, type ErpEventV3 as Z, type ErpImportError as _, Components as a, type MeterReadingPruneScopeConfig as a$, type ErpImportIssue as a0, type ErpImportJob as a1, type ErpImportList as a2, type ErpImportProgress as a3, type ErpImportUseCaseSuggestion as a4, type ErpImportValidation as a5, type ErpUpdatesEventsV2Request as a6, type ErpUpdatesEventsV3Request as a7, type ErrorResponseBase as a8, type ExecuteErpImportRequest as a9, type IngestExternalMonitoringEventsRequest as aA, type IngestExternalMonitoringEventsResponse as aB, type Integration as aC, type IntegrationAppMapping as aD, type IntegrationConfigurationV1 as aE, type IntegrationConfigurationV2 as aF, type IntegrationEditableFields as aG, type IntegrationEntity as aH, type IntegrationEntityField as aI, type IntegrationFieldV1 as aJ, type IntegrationMeterReading as aK, type IntegrationNotificationConfig as aL, type IntegrationObjectV1 as aM, type IntegrationSettings as aN, type IntegrationWithUseCases as aO, type ManagedCallAuth as aP, type ManagedCallErrorResponse as aQ, type ManagedCallExecuteRequest as aR, type ManagedCallExecuteResponse as aS, type ManagedCallOperation as aT, type ManagedCallOperationConfig as aU, type ManagedCallUseCase as aV, type ManagedCallUseCaseHistoryEntry as aW, type MappingSimulationRequest as aX, type MappingSimulationResponse as aY, type MappingSimulationV2Request as aZ, type MappingSimulationWarning as a_, type ExternalMonitoringSpan as aa, type FileProxyAuth as ab, type FileProxyDeliveryConfig as ac, type FileProxyFanOutConfig as ad, type FileProxyParam as ae, type FileProxyResponseConfig as af, type FileProxySecureProxyAttachment as ag, type FileProxyStep as ah, type FileProxyUploadConfig as ai, type FileProxyUrlConfig as aj, type FileProxyUrlParam as ak, type FileProxyUrlParams as al, type FileProxyUseCase as am, type FileProxyUseCaseConfiguration as an, type FileProxyUseCaseHistoryEntry as ao, type GenerateTypesPreviewResponse as ap, type GenerateTypesRequest as aq, type GenerateTypesResponse as ar, type GetMonitoringStatsRequest as as, type GetMonitoringStatsV2Request as at, type GetMonitoringTimeSeriesRequest as au, type GetMonitoringTimeSeriesV2Request as av, type InboundIntegrationEventConfiguration as aw, type InboundMonitoringEvent as ax, type InboundUseCase as ay, type InboundUseCaseHistoryEntry as az, type PathsDictionary as b, type SetIntegrationAppMappingRequest as b$, type MeterReadingPruneScopeUpdate as b0, type MeterReadingUpdate as b1, type MeterUniqueIdsConfig as b2, type MonitoringEventV2 as b3, type MonitoringStats as b4, type MonitoringStatsV2 as b5, type MonitoringTraceResponse as b6, type NotificationChannelSet as b7, type NotificationDigestConfig as b8, type NotificationHistoryItem as b9, type QueryEventsRequest as bA, type QueryInboundMonitoringEventsRequest as bB, type QueryMonitoringEventsV2Request as bC, type QueryOutboundMonitoringEventsRequest as bD, type RedriveOutboundDlqRequest as bE, type RedriveOutboundDlqResponse as bF, type RedriveOutboundDlqResult as bG, type RelationConfig as bH, type RelationItemConfig as bI, type RelationRefItemConfig as bJ, type RelationRefValueConfig as bK, type RelationRefsConfig as bL, type RelationUniqueIdField as bM, type RepeatableFieldType as bN, type ReplayEventsRequest as bO, type RuleBaselineBucket as bP, type RuleBaselineStatus as bQ, type S3Reference as bR, type SecureProxyRequest as bS, type SecureProxyResponse as bT, type SecureProxySummary as bU, type SecureProxyUpstreamError as bV, type SecureProxyUseCase as bW, type SecureProxyUseCaseConfiguration as bX, type SecureProxyUseCaseHistoryEntry as bY, type SecureProxyWhitelist as bZ, type SecureProxyWhitelistUpdate as b_, type NotificationHistoryResponse as ba, type NotificationRecipient as bb, type NotificationRule as bc, type NotificationRuleStatus as bd, type NotificationStatusResponse as be, type OutboundConflict as bf, type OutboundDlqListResponse as bg, type OutboundDlqMessage as bh, type OutboundFileProxyTargetStatus as bi, type OutboundIntegrationEventConfiguration as bj, type OutboundMapping as bk, type OutboundMessage as bl, type OutboundMonitoringEvent as bm, type OutboundPollStatus as bn, type OutboundStatusResponse as bo, type OutboundUseCase as bp, type OutboundUseCaseHistoryEntry as bq, type OutboundUseCaseStatus as br, type PollDeliveryConfig as bs, type PollOutboundMessagesRequest as bt, type PollOutboundMessagesResponse as bu, type PortalOrigin as bv, type PortalRefConfig as bw, type PortalRefFilter as bx, type PruneScopeConfig as by, type QueryAccessLogsRequest as bz, type AckOutboundMessagesRequest as c, type SuggestErpImportUseCasesResponse as c0, type TestNotificationRequest as c1, type TestNotificationResponse as c2, type TimeSeriesBreakdownItemV2 as c3, type TimeSeriesBucket as c4, type TimeSeriesBucketV2 as c5, type TriggerErpActionRequest as c6, type TriggerWebhookResp as c7, type TypeAnnotations as c8, type TypeDescriptor as c9, type UnblockOutboundStreamRequest as ca, type UnblockOutboundStreamResponse as cb, type UpdateFileProxyUseCaseRequest as cc, type UpdateInboundUseCaseRequest as cd, type UpdateIntegrationRequest as ce, type UpdateManagedCallUseCaseRequest as cf, type UpdateOutboundUseCaseRequest as cg, type UpdateSecureProxyUseCaseRequest as ch, type UpdateUseCaseRequest as ci, type UpdateUseCaseRequestBase as cj, type UpsertDocumentationPageRequest as ck, type UpsertIntegrationWithUseCasesRequest as cl, type UseCase as cm, type UseCaseBase as cn, type UseCaseHistoryEntry as co, type UseCaseHistoryEntryBase as cp, type UseCaseTypePreview as cq, type ValidateErpImportRequest as cr, type WebhookDeliveryConfig as cs, type WebhookStatus as ct, type AckOutboundMessagesResponse as d, type AckResult as e, type AutoRefreshSettings as f, type CommitTypesRequest as g, type CommitTypesResponse as h, type ConnectorConfig as i, type CreateErpImportRequest as j, type CreateErpImportResponse as k, type CreateFileProxyUseCaseRequest as l, type CreateInboundUseCaseRequest as m, type CreateIntegrationRequest as n, type CreateManagedCallUseCaseRequest as o, type CreateOutboundUseCaseRequest as p, type CreateSecureProxyUseCaseRequest as q, type CreateUseCaseRequest as r, type CreateUseCaseRequestBase as s, type DeliveryConfig as t, type DirectEntityOperation as u, type DirectMeterReadingOperation as v, type DirectPayload as w, type DirectRelationItem as x, type DirectRelationRefItem as y, type DirectRelationRefValue as z };