diff --git a/clients/journey-client/src/openapi.d.ts b/clients/journey-client/src/openapi.d.ts index 2eb8539d..f7bec10a 100644 --- a/clients/journey-client/src/openapi.d.ts +++ b/clients/journey-client/src/openapi.d.ts @@ -363,10 +363,6 @@ declare namespace Components { * } */ ValidationRuleRef; - /** - * Manifest/Blueprint ID used to create/update the entity - */ - _manifest?: string /* uuid */[]; createdBy?: string; updatedBy?: string | null; /** @@ -615,10 +611,6 @@ declare namespace Components { * } */ ValidationRuleRef; - /** - * Manifest/Blueprint ID used to create/update the entity - */ - _manifest?: string /* uuid */[]; createdBy?: string; updatedBy?: string | null; /** diff --git a/clients/journey-client/src/openapi.json b/clients/journey-client/src/openapi.json index 64b6b0aa..57dacd57 100644 --- a/clients/journey-client/src/openapi.json +++ b/clients/journey-client/src/openapi.json @@ -1493,15 +1493,6 @@ "validationRules": { "$ref": "#/components/schemas/ValidationRuleRef" }, - "_manifest": { - "type": "array", - "description": "Manifest/Blueprint ID used to create/update the entity", - "items": { - "type": "string", - "format": "uuid", - "example": "123e4567-e89b-12d3-a456-426614174000" - } - }, "createdBy": { "type": "string" }, diff --git a/package-lock.json b/package-lock.json index d446af4b..dbdb29f0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,20 +1,17 @@ { "name": "@epilot/sdk-monorepo", - "version": "4.7.3", + "version": "4.8.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@epilot/sdk-monorepo", - "version": "4.7.3", + "version": "4.8.0", "license": "MIT", "workspaces": [ "packages/*", "clients/*" ], - "dependencies": { - "@rollup/rollup-linux-x64-gnu": "^4.60.0" - }, "devDependencies": { "@biomejs/biome": "^2.4.6", "@changesets/cli": "^2.29.5", @@ -666,7 +663,7 @@ }, "clients/automation-client": { "name": "@epilot/automation-client", - "version": "2.30.0", + "version": "2.31.0", "license": "MIT", "dependencies": { "buffer": "^6.0.3", @@ -1313,7 +1310,7 @@ }, "clients/data-management-client": { "name": "@epilot/data-management-client", - "version": "1.3.0", + "version": "1.4.0", "license": "MIT", "dependencies": { "@dazn/lambda-powertools-correlation-ids": "^1.28.1", @@ -2317,7 +2314,7 @@ }, "clients/erp-integration-client": { "name": "@epilot/erp-integration-client", - "version": "0.28.0", + "version": "0.29.0", "license": "MIT", "dependencies": { "@dazn/lambda-powertools-correlation-ids": "^1.28.1", @@ -5470,7 +5467,7 @@ }, "node_modules/@babel/runtime": { "version": "7.28.4", - "dev": true, + "devOptional": true, "license": "MIT", "engines": { "node": ">=6.9.0" @@ -6148,6 +6145,14 @@ "node": ">=10.0.0" } }, + "node_modules/@emotion/hash": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.8.0.tgz", + "integrity": "sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==", + "license": "MIT", + "optional": true, + "peer": true + }, "node_modules/@epilot/access-token-client": { "resolved": "clients/access-token-client", "link": true @@ -6244,6 +6249,19 @@ "resolved": "clients/environments-client", "link": true }, + "node_modules/@epilot/epilot-journey-sdk": { + "version": "2.0.0-alpha.1", + "resolved": "https://registry.npmjs.org/@epilot/epilot-journey-sdk/-/epilot-journey-sdk-2.0.0-alpha.1.tgz", + "integrity": "sha512-1W9WxXflAJ7Z+ycR07D0BoFIOIL+wmPk6917MAk0XXx4VzYebzqa7RFOaYm2WrqLOppkQRhJVtlUHvPA0KDdRg==", + "license": "MIT", + "optional": true, + "dependencies": { + "@epilot/journey-client": "^0.5.1" + }, + "peerDependencies": { + "@material-ui/core": "4.*" + } + }, "node_modules/@epilot/erp-integration-client": { "resolved": "clients/erp-integration-client", "link": true @@ -6423,7 +6441,6 @@ "os": [ "darwin" ], - "peer": true, "engines": { "node": ">=18" } @@ -8311,6 +8328,173 @@ "dev": true, "license": "MIT" }, + "node_modules/@material-ui/core": { + "version": "4.12.4", + "resolved": "https://registry.npmjs.org/@material-ui/core/-/core-4.12.4.tgz", + "integrity": "sha512-tr7xekNlM9LjA6pagJmL8QCgZXaubWUwkJnoYcMKd4gw/t4XiyvnTkjdGrUVicyB2BsdaAv1tvow45bPM4sSwQ==", + "deprecated": "Material UI v4 doesn't receive active development since September 2021. See the guide https://mui.com/material-ui/migration/migration-v4/ to upgrade to v5.", + "license": "MIT", + "optional": true, + "peer": true, + "dependencies": { + "@babel/runtime": "^7.4.4", + "@material-ui/styles": "^4.11.5", + "@material-ui/system": "^4.12.2", + "@material-ui/types": "5.1.0", + "@material-ui/utils": "^4.11.3", + "@types/react-transition-group": "^4.2.0", + "clsx": "^1.0.4", + "hoist-non-react-statics": "^3.3.2", + "popper.js": "1.16.1-lts", + "prop-types": "^15.7.2", + "react-is": "^16.8.0 || ^17.0.0", + "react-transition-group": "^4.4.0" + }, + "engines": { + "node": ">=8.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/material-ui" + }, + "peerDependencies": { + "@types/react": "^16.8.6 || ^17.0.0", + "react": "^16.8.0 || ^17.0.0", + "react-dom": "^16.8.0 || ^17.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@material-ui/core/node_modules/react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "license": "MIT", + "optional": true, + "peer": true + }, + "node_modules/@material-ui/styles": { + "version": "4.11.5", + "resolved": "https://registry.npmjs.org/@material-ui/styles/-/styles-4.11.5.tgz", + "integrity": "sha512-o/41ot5JJiUsIETME9wVLAJrmIWL3j0R0Bj2kCOLbSfqEkKf0fmaPt+5vtblUh5eXr2S+J/8J3DaCb10+CzPGA==", + "deprecated": "Material UI v4 doesn't receive active development since September 2021. See the guide https://mui.com/material-ui/migration/migration-v4/ to upgrade to v5.", + "license": "MIT", + "optional": true, + "peer": true, + "dependencies": { + "@babel/runtime": "^7.4.4", + "@emotion/hash": "^0.8.0", + "@material-ui/types": "5.1.0", + "@material-ui/utils": "^4.11.3", + "clsx": "^1.0.4", + "csstype": "^2.5.2", + "hoist-non-react-statics": "^3.3.2", + "jss": "^10.5.1", + "jss-plugin-camel-case": "^10.5.1", + "jss-plugin-default-unit": "^10.5.1", + "jss-plugin-global": "^10.5.1", + "jss-plugin-nested": "^10.5.1", + "jss-plugin-props-sort": "^10.5.1", + "jss-plugin-rule-value-function": "^10.5.1", + "jss-plugin-vendor-prefixer": "^10.5.1", + "prop-types": "^15.7.2" + }, + "engines": { + "node": ">=8.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/material-ui" + }, + "peerDependencies": { + "@types/react": "^16.8.6 || ^17.0.0", + "react": "^16.8.0 || ^17.0.0", + "react-dom": "^16.8.0 || ^17.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@material-ui/system": { + "version": "4.12.2", + "resolved": "https://registry.npmjs.org/@material-ui/system/-/system-4.12.2.tgz", + "integrity": "sha512-6CSKu2MtmiJgcCGf6nBQpM8fLkuB9F55EKfbdTC80NND5wpTmKzwdhLYLH3zL4cLlK0gVaaltW7/wMuyTnN0Lw==", + "license": "MIT", + "optional": true, + "peer": true, + "dependencies": { + "@babel/runtime": "^7.4.4", + "@material-ui/utils": "^4.11.3", + "csstype": "^2.5.2", + "prop-types": "^15.7.2" + }, + "engines": { + "node": ">=8.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/material-ui" + }, + "peerDependencies": { + "@types/react": "^16.8.6 || ^17.0.0", + "react": "^16.8.0 || ^17.0.0", + "react-dom": "^16.8.0 || ^17.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@material-ui/types": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@material-ui/types/-/types-5.1.0.tgz", + "integrity": "sha512-7cqRjrY50b8QzRSYyhSpx4WRw2YuO0KKIGQEVk5J8uoz2BanawykgZGoWEqKm7pVIbzFDN0SpPcVV4IhOFkl8A==", + "license": "MIT", + "optional": true, + "peer": true, + "peerDependencies": { + "@types/react": "*" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@material-ui/utils": { + "version": "4.11.3", + "resolved": "https://registry.npmjs.org/@material-ui/utils/-/utils-4.11.3.tgz", + "integrity": "sha512-ZuQPV4rBK/V1j2dIkSSEcH5uT6AaHuKWFfotADHsC0wVL1NLd2WkFCm4ZZbX33iO4ydl6V0GPngKm8HZQ2oujg==", + "license": "MIT", + "optional": true, + "peer": true, + "dependencies": { + "@babel/runtime": "^7.4.4", + "prop-types": "^15.7.2", + "react-is": "^16.8.0 || ^17.0.0" + }, + "engines": { + "node": ">=8.0.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0", + "react-dom": "^16.8.0 || ^17.0.0" + } + }, + "node_modules/@material-ui/utils/node_modules/react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "license": "MIT", + "optional": true, + "peer": true + }, "node_modules/@mswjs/interceptors": { "version": "0.41.3", "resolved": "https://registry.npmjs.org/@mswjs/interceptors/-/interceptors-0.41.3.tgz", @@ -9066,17 +9250,6 @@ "linux" ] }, - "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.60.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.60.0.tgz", - "integrity": "sha512-EtylprDtQPdS5rXvAayrNDYoJhIz1/vzN2fEubo3yLE7tfAw+948dO0g4M0vkTVFhKojnF+n6C8bDNe+gDRdTg==", - "cpu": [ - "x64" - ], - "os": [ - "linux" - ] - }, "node_modules/@rollup/rollup-linux-x64-musl": { "version": "4.46.0", "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.46.0.tgz", @@ -9328,6 +9501,54 @@ "undici-types": "~7.10.0" } }, + "node_modules/@types/prop-types": { + "version": "15.7.15", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.15.tgz", + "integrity": "sha512-F6bEyamV9jKGAFBEmlQnesRPGOQqS2+Uwi0Em15xenOxHaf2hv6L8YCVn3rPdPJOiJfPiCnLIRyvwVaqMY3MIw==", + "license": "MIT", + "optional": true, + "peer": true + }, + "node_modules/@types/react": { + "version": "17.0.91", + "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.91.tgz", + "integrity": "sha512-xauZca6qMeCU3Moy0KxCM9jtf1vyk6qRYK39Ryf3afUqwgNUjRIGoDdS9BcGWgAMGSg1hvP4XcmlYrM66PtqeA==", + "license": "MIT", + "optional": true, + "peer": true, + "dependencies": { + "@types/prop-types": "*", + "@types/scheduler": "^0.16", + "csstype": "^3.2.2" + } + }, + "node_modules/@types/react-transition-group": { + "version": "4.4.12", + "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.12.tgz", + "integrity": "sha512-8TV6R3h2j7a91c+1DXdJi3Syo69zzIZbz7Lg5tORM5LEJG7X/E6a1V3drRyBRZq7/utz7A+c4OgYLiLcYGHG6w==", + "license": "MIT", + "optional": true, + "peer": true, + "peerDependencies": { + "@types/react": "*" + } + }, + "node_modules/@types/react/node_modules/csstype": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz", + "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==", + "license": "MIT", + "optional": true, + "peer": true + }, + "node_modules/@types/scheduler": { + "version": "0.16.8", + "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.8.tgz", + "integrity": "sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A==", + "license": "MIT", + "optional": true, + "peer": true + }, "node_modules/@types/stack-utils": { "version": "2.0.3", "dev": true, @@ -10786,6 +11007,17 @@ "node": ">=0.10.0" } }, + "node_modules/clsx": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.2.1.tgz", + "integrity": "sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==", + "license": "MIT", + "optional": true, + "peer": true, + "engines": { + "node": ">=6" + } + }, "node_modules/co": { "version": "4.6.0", "dev": true, @@ -11109,6 +11341,18 @@ "node": ">= 8" } }, + "node_modules/css-vendor": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/css-vendor/-/css-vendor-2.0.8.tgz", + "integrity": "sha512-x9Aq0XTInxrkuFeHKbYC7zWY8ai7qJ04Kxd9MnvbC1uO5DagxoHQjm4JvG+vCdXOoFtCjbL2XSZfxmoYa9uQVQ==", + "license": "MIT", + "optional": true, + "peer": true, + "dependencies": { + "@babel/runtime": "^7.8.3", + "is-in-browser": "^1.0.2" + } + }, "node_modules/css.escape": { "version": "1.5.1", "dev": true, @@ -11126,6 +11370,14 @@ "node": ">=18" } }, + "node_modules/csstype": { + "version": "2.6.21", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.21.tgz", + "integrity": "sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w==", + "license": "MIT", + "optional": true, + "peer": true + }, "node_modules/dashdash": { "version": "1.14.1", "dev": true, @@ -11343,6 +11595,26 @@ "dev": true, "license": "MIT" }, + "node_modules/dom-helpers": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz", + "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==", + "license": "MIT", + "optional": true, + "peer": true, + "dependencies": { + "@babel/runtime": "^7.8.7", + "csstype": "^3.0.2" + } + }, + "node_modules/dom-helpers/node_modules/csstype": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz", + "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==", + "license": "MIT", + "optional": true, + "peer": true + }, "node_modules/dunder-proto": { "version": "1.0.1", "license": "MIT", @@ -11598,7 +11870,6 @@ "os": [ "aix" ], - "peer": true, "engines": { "node": ">=18" } @@ -11615,7 +11886,6 @@ "os": [ "android" ], - "peer": true, "engines": { "node": ">=18" } @@ -11632,7 +11902,6 @@ "os": [ "android" ], - "peer": true, "engines": { "node": ">=18" } @@ -11649,7 +11918,6 @@ "os": [ "android" ], - "peer": true, "engines": { "node": ">=18" } @@ -11666,7 +11934,6 @@ "os": [ "darwin" ], - "peer": true, "engines": { "node": ">=18" } @@ -11683,7 +11950,6 @@ "os": [ "freebsd" ], - "peer": true, "engines": { "node": ">=18" } @@ -11700,7 +11966,6 @@ "os": [ "freebsd" ], - "peer": true, "engines": { "node": ">=18" } @@ -11717,7 +11982,6 @@ "os": [ "linux" ], - "peer": true, "engines": { "node": ">=18" } @@ -11734,7 +11998,6 @@ "os": [ "linux" ], - "peer": true, "engines": { "node": ">=18" } @@ -11751,7 +12014,6 @@ "os": [ "linux" ], - "peer": true, "engines": { "node": ">=18" } @@ -11768,7 +12030,6 @@ "os": [ "linux" ], - "peer": true, "engines": { "node": ">=18" } @@ -11785,7 +12046,6 @@ "os": [ "linux" ], - "peer": true, "engines": { "node": ">=18" } @@ -11802,7 +12062,6 @@ "os": [ "linux" ], - "peer": true, "engines": { "node": ">=18" } @@ -11819,7 +12078,6 @@ "os": [ "linux" ], - "peer": true, "engines": { "node": ">=18" } @@ -11836,7 +12094,6 @@ "os": [ "linux" ], - "peer": true, "engines": { "node": ">=18" } @@ -11853,7 +12110,6 @@ "os": [ "linux" ], - "peer": true, "engines": { "node": ">=18" } @@ -11870,7 +12126,6 @@ "os": [ "netbsd" ], - "peer": true, "engines": { "node": ">=18" } @@ -11887,7 +12142,6 @@ "os": [ "netbsd" ], - "peer": true, "engines": { "node": ">=18" } @@ -11904,7 +12158,6 @@ "os": [ "openbsd" ], - "peer": true, "engines": { "node": ">=18" } @@ -11921,7 +12174,6 @@ "os": [ "openbsd" ], - "peer": true, "engines": { "node": ">=18" } @@ -11938,7 +12190,6 @@ "os": [ "openharmony" ], - "peer": true, "engines": { "node": ">=18" } @@ -11955,7 +12206,6 @@ "os": [ "sunos" ], - "peer": true, "engines": { "node": ">=18" } @@ -11972,7 +12222,6 @@ "os": [ "win32" ], - "peer": true, "engines": { "node": ">=18" } @@ -11989,7 +12238,6 @@ "os": [ "win32" ], - "peer": true, "engines": { "node": ">=18" } @@ -12006,7 +12254,6 @@ "os": [ "win32" ], - "peer": true, "engines": { "node": ">=18" } @@ -12787,6 +13034,25 @@ "version": "4.0.3", "license": "MIT" }, + "node_modules/hoist-non-react-statics": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", + "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", + "license": "BSD-3-Clause", + "optional": true, + "peer": true, + "dependencies": { + "react-is": "^16.7.0" + } + }, + "node_modules/hoist-non-react-statics/node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "license": "MIT", + "optional": true, + "peer": true + }, "node_modules/html-encoding-sniffer": { "version": "4.0.0", "dev": true, @@ -12921,6 +13187,14 @@ "node": ">=4" } }, + "node_modules/hyphenate-style-name": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/hyphenate-style-name/-/hyphenate-style-name-1.1.0.tgz", + "integrity": "sha512-WDC/ui2VVRrz3jOVi+XtjqkDjiVjTtFaAGiW37k6b+ohyQ5wYDOGkvCZa8+H0nx3gyvv0+BST9xuOgIyGQ00gw==", + "license": "BSD-3-Clause", + "optional": true, + "peer": true + }, "node_modules/iconv-lite": { "version": "0.4.24", "dev": true, @@ -13153,6 +13427,14 @@ "node": ">=0.10.0" } }, + "node_modules/is-in-browser": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/is-in-browser/-/is-in-browser-1.1.3.tgz", + "integrity": "sha512-FeXIBgG/CPGd/WUxuEyvgGTEfwiG9Z4EKGxjNMRqviiIIfsmgrpnHLffEDdwUHqNva1VEW91o3xBT/m8Elgl9g==", + "license": "MIT", + "optional": true, + "peer": true + }, "node_modules/is-inside-container": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", @@ -15168,7 +15450,7 @@ }, "node_modules/js-tokens": { "version": "4.0.0", - "dev": true, + "devOptional": true, "license": "MIT" }, "node_modules/js-yaml": { @@ -15314,6 +15596,120 @@ "node": ">=0.6.0" } }, + "node_modules/jss": { + "version": "10.10.0", + "resolved": "https://registry.npmjs.org/jss/-/jss-10.10.0.tgz", + "integrity": "sha512-cqsOTS7jqPsPMjtKYDUpdFC0AbhYFLTcuGRqymgmdJIeQ8cH7+AgX7YSgQy79wXloZq2VvATYxUOUQEvS1V/Zw==", + "license": "MIT", + "optional": true, + "peer": true, + "dependencies": { + "@babel/runtime": "^7.3.1", + "csstype": "^3.0.2", + "is-in-browser": "^1.1.3", + "tiny-warning": "^1.0.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/jss" + } + }, + "node_modules/jss-plugin-camel-case": { + "version": "10.10.0", + "resolved": "https://registry.npmjs.org/jss-plugin-camel-case/-/jss-plugin-camel-case-10.10.0.tgz", + "integrity": "sha512-z+HETfj5IYgFxh1wJnUAU8jByI48ED+v0fuTuhKrPR+pRBYS2EDwbusU8aFOpCdYhtRc9zhN+PJ7iNE8pAWyPw==", + "license": "MIT", + "optional": true, + "peer": true, + "dependencies": { + "@babel/runtime": "^7.3.1", + "hyphenate-style-name": "^1.0.3", + "jss": "10.10.0" + } + }, + "node_modules/jss-plugin-default-unit": { + "version": "10.10.0", + "resolved": "https://registry.npmjs.org/jss-plugin-default-unit/-/jss-plugin-default-unit-10.10.0.tgz", + "integrity": "sha512-SvpajxIECi4JDUbGLefvNckmI+c2VWmP43qnEy/0eiwzRUsafg5DVSIWSzZe4d2vFX1u9nRDP46WCFV/PXVBGQ==", + "license": "MIT", + "optional": true, + "peer": true, + "dependencies": { + "@babel/runtime": "^7.3.1", + "jss": "10.10.0" + } + }, + "node_modules/jss-plugin-global": { + "version": "10.10.0", + "resolved": "https://registry.npmjs.org/jss-plugin-global/-/jss-plugin-global-10.10.0.tgz", + "integrity": "sha512-icXEYbMufiNuWfuazLeN+BNJO16Ge88OcXU5ZDC2vLqElmMybA31Wi7lZ3lf+vgufRocvPj8443irhYRgWxP+A==", + "license": "MIT", + "optional": true, + "peer": true, + "dependencies": { + "@babel/runtime": "^7.3.1", + "jss": "10.10.0" + } + }, + "node_modules/jss-plugin-nested": { + "version": "10.10.0", + "resolved": "https://registry.npmjs.org/jss-plugin-nested/-/jss-plugin-nested-10.10.0.tgz", + "integrity": "sha512-9R4JHxxGgiZhurDo3q7LdIiDEgtA1bTGzAbhSPyIOWb7ZubrjQe8acwhEQ6OEKydzpl8XHMtTnEwHXCARLYqYA==", + "license": "MIT", + "optional": true, + "peer": true, + "dependencies": { + "@babel/runtime": "^7.3.1", + "jss": "10.10.0", + "tiny-warning": "^1.0.2" + } + }, + "node_modules/jss-plugin-props-sort": { + "version": "10.10.0", + "resolved": "https://registry.npmjs.org/jss-plugin-props-sort/-/jss-plugin-props-sort-10.10.0.tgz", + "integrity": "sha512-5VNJvQJbnq/vRfje6uZLe/FyaOpzP/IH1LP+0fr88QamVrGJa0hpRRyAa0ea4U/3LcorJfBFVyC4yN2QC73lJg==", + "license": "MIT", + "optional": true, + "peer": true, + "dependencies": { + "@babel/runtime": "^7.3.1", + "jss": "10.10.0" + } + }, + "node_modules/jss-plugin-rule-value-function": { + "version": "10.10.0", + "resolved": "https://registry.npmjs.org/jss-plugin-rule-value-function/-/jss-plugin-rule-value-function-10.10.0.tgz", + "integrity": "sha512-uEFJFgaCtkXeIPgki8ICw3Y7VMkL9GEan6SqmT9tqpwM+/t+hxfMUdU4wQ0MtOiMNWhwnckBV0IebrKcZM9C0g==", + "license": "MIT", + "optional": true, + "peer": true, + "dependencies": { + "@babel/runtime": "^7.3.1", + "jss": "10.10.0", + "tiny-warning": "^1.0.2" + } + }, + "node_modules/jss-plugin-vendor-prefixer": { + "version": "10.10.0", + "resolved": "https://registry.npmjs.org/jss-plugin-vendor-prefixer/-/jss-plugin-vendor-prefixer-10.10.0.tgz", + "integrity": "sha512-UY/41WumgjW8r1qMCO8l1ARg7NHnfRVWRhZ2E2m0DMYsr2DD91qIXLyNhiX83hHswR7Wm4D+oDYNC1zWCJWtqg==", + "license": "MIT", + "optional": true, + "peer": true, + "dependencies": { + "@babel/runtime": "^7.3.1", + "css-vendor": "^2.0.8", + "jss": "10.10.0" + } + }, + "node_modules/jss/node_modules/csstype": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz", + "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==", + "license": "MIT", + "optional": true, + "peer": true + }, "node_modules/keygrip": { "version": "1.1.0", "dev": true, @@ -15693,6 +16089,20 @@ "dev": true, "license": "MIT" }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "license": "MIT", + "optional": true, + "peer": true, + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, "node_modules/loupe": { "version": "2.3.7", "dev": true, @@ -18947,7 +19357,7 @@ "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "dev": true, + "devOptional": true, "engines": { "node": ">=0.10.0" } @@ -19493,6 +19903,14 @@ "dev": true, "license": "MIT" }, + "node_modules/popper.js": { + "version": "1.16.1-lts", + "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.16.1-lts.tgz", + "integrity": "sha512-Kjw8nKRl1m+VrSFCoVGPph93W/qrSO7ZkqPpTf7F4bk/sqcfWK019dWBUpE/fBOsOQY1dks/Bmcbfn1heM/IsA==", + "license": "MIT", + "optional": true, + "peer": true + }, "node_modules/possible-typed-array-names": { "version": "1.1.0", "license": "MIT", @@ -19600,6 +20018,27 @@ "node": ">= 6" } }, + "node_modules/prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "license": "MIT", + "optional": true, + "peer": true, + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "node_modules/prop-types/node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "license": "MIT", + "optional": true, + "peer": true + }, "node_modules/proxy-from-env": { "version": "1.1.0", "license": "MIT" @@ -19735,11 +20174,60 @@ "node": ">= 0.8" } }, + "node_modules/react": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react/-/react-17.0.2.tgz", + "integrity": "sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==", + "license": "MIT", + "optional": true, + "peer": true, + "dependencies": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-dom": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz", + "integrity": "sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==", + "license": "MIT", + "optional": true, + "peer": true, + "dependencies": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "scheduler": "^0.20.2" + }, + "peerDependencies": { + "react": "17.0.2" + } + }, "node_modules/react-is": { "version": "18.3.1", "dev": true, "license": "MIT" }, + "node_modules/react-transition-group": { + "version": "4.4.5", + "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz", + "integrity": "sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==", + "license": "BSD-3-Clause", + "optional": true, + "peer": true, + "dependencies": { + "@babel/runtime": "^7.5.5", + "dom-helpers": "^5.0.1", + "loose-envify": "^1.4.0", + "prop-types": "^15.6.2" + }, + "peerDependencies": { + "react": ">=16.6.0", + "react-dom": ">=16.6.0" + } + }, "node_modules/read-yaml-file": { "version": "1.1.0", "dev": true, @@ -20362,6 +20850,18 @@ "node": ">=v12.22.7" } }, + "node_modules/scheduler": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz", + "integrity": "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==", + "license": "MIT", + "optional": true, + "peer": true, + "dependencies": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" + } + }, "node_modules/schema-utils": { "version": "3.3.0", "dev": true, @@ -21260,6 +21760,14 @@ "dev": true, "license": "MIT" }, + "node_modules/tiny-warning": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz", + "integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==", + "license": "MIT", + "optional": true, + "peer": true + }, "node_modules/tinybench": { "version": "2.9.0", "dev": true, @@ -24103,7 +24611,7 @@ }, "packages/app-sdk": { "name": "@epilot/app-sdk", - "version": "0.0.1-alpha.2", + "version": "0.0.2", "license": "MIT", "dependencies": { "msw": "^2.10.2", @@ -25000,7 +25508,7 @@ }, "packages/cli": { "name": "@epilot/cli", - "version": "0.1.10", + "version": "0.1.14", "license": "MIT", "dependencies": { "@inquirer/prompts": "^7.0.0", @@ -25029,7 +25537,7 @@ }, "packages/cli-wrapper": { "name": "epilot", - "version": "0.1.10", + "version": "0.1.14", "license": "MIT", "dependencies": { "@epilot/cli": "^0.1.10" @@ -25102,7 +25610,7 @@ }, "packages/epilot-sdk-v2": { "name": "@epilot/sdk", - "version": "2.1.10", + "version": "2.3.0", "license": "MIT", "bin": { "epilot-sdk": "dist/bin/cli.js" @@ -25116,6 +25624,9 @@ "typescript": "^5.3.0", "vitest": "^1.0.0" }, + "optionalDependencies": { + "@epilot/epilot-journey-sdk": ">=2.0.0-alpha.1" + }, "peerDependencies": { "axios": "^1.0.0", "openapi-client-axios": "^7.0.0" diff --git a/packages/cli/README.md b/packages/cli/README.md index 04d3744b..658665b0 100644 --- a/packages/cli/README.md +++ b/packages/cli/README.md @@ -29,7 +29,7 @@ npm install -g @epilot/cli ``` -epilot v0.1.10 — CLI for epilot APIs +epilot v0.1.17 — CLI for epilot APIs USAGE epilot [params...] [flags] diff --git a/packages/cli/definitions/automation.json b/packages/cli/definitions/automation.json index bd161457..e1e43107 100644 --- a/packages/cli/definitions/automation.json +++ b/packages/cli/definitions/automation.json @@ -3,7 +3,7 @@ "info": { "title": "Automation API", "description": "API Backend for epilot Automation Workflows feature", - "version": "1.4.0" + "version": "1.4.1" }, "tags": [ { @@ -1131,6 +1131,10 @@ "example": "123e4567-e89b-12d3-a456-426614174000" }, "nullable": true + }, + "protected": { + "type": "boolean", + "description": "If true, automation is displayed in read-only mode in the UI to discourage changes" } }, "required": [ diff --git a/packages/cli/definitions/data-management.json b/packages/cli/definitions/data-management.json index 5ea151b1..7b4cb5ab 100644 --- a/packages/cli/definitions/data-management.json +++ b/packages/cli/definitions/data-management.json @@ -749,6 +749,16 @@ "RECEIVED" ] } + }, + "workflow_status": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "CLOSED", + "DONE" + ] + } } } }, @@ -964,9 +974,5 @@ } } }, - "servers": [ - { - "url": "https://data-management.sls.epilot.io" - } - ] + "servers": [] } diff --git a/packages/cli/definitions/entity.json b/packages/cli/definitions/entity.json index 2585c3e1..59b1943d 100644 --- a/packages/cli/definitions/entity.json +++ b/packages/cli/definitions/entity.json @@ -66,6 +66,16 @@ "in": "query", "name": "unpublished", "description": "Return unpublished draft schemas", + "deprecated": true, + "schema": { + "type": "boolean", + "default": false + } + }, + { + "in": "query", + "name": "latest", + "description": "When true, return the latest version instead of the frozen version for frozen schemas.", "schema": { "type": "boolean", "default": false @@ -142,6 +152,16 @@ "in": "query", "name": "unpublished", "description": "Return unpublished draft schemas", + "deprecated": true, + "schema": { + "type": "boolean", + "default": false + } + }, + { + "in": "query", + "name": "latest", + "description": "When true, return the latest version instead of the frozen version for frozen schemas.", "schema": { "type": "boolean", "default": false @@ -203,7 +223,7 @@ "get": { "operationId": "getSchema", "summary": "getSchema", - "description": "By default gets the latest version of the Schema and to get the specific version of schema pass the id.", + "description": "By default gets the current version of the Schema (frozen version if frozen, otherwise latest).\nPass ?latest=true to get the latest version when the schema is frozen.\nPass ?id= to get a specific version by ID.\n", "tags": [ "Schemas" ], @@ -217,6 +237,15 @@ "schema": { "$ref": "#/components/schemas/SchemaId" } + }, + { + "in": "query", + "name": "latest", + "description": "When true, return the latest version instead of the frozen version for frozen schemas.", + "schema": { + "type": "boolean", + "default": false + } } ], "responses": { @@ -238,7 +267,7 @@ "put": { "operationId": "putSchema", "summary": "putSchema", - "description": "Create or update a schema with a new version", + "description": "Create or update a schema with a new version.\nWhen the schema is frozen, writes update the latest version without affecting the frozen version.\n", "tags": [ "Schemas" ], @@ -249,6 +278,7 @@ { "in": "query", "name": "draft", + "deprecated": true, "schema": { "default": false, "type": "boolean" @@ -746,6 +776,7 @@ } }, "drafts": { + "deprecated": true, "type": "array", "items": { "$ref": "#/components/schemas/EntitySchemaItem" @@ -756,8 +787,17 @@ "type": "boolean" }, "drafts_more": { + "deprecated": true, "description": "Pagination: Whether more drafts are available", "type": "boolean" + }, + "frozen_version": { + "description": "The version ID that is currently frozen, if any", + "allOf": [ + { + "$ref": "#/components/schemas/SchemaId" + } + ] } }, "required": [ @@ -771,6 +811,85 @@ } } }, + "/v1/entity/schemas/{slug}/freeze": { + "post": { + "operationId": "freezeSchema", + "summary": "freezeSchema", + "description": "Freeze a schema at its current version, or at a specific version.\nWhen frozen, getSchema returns the frozen version by default.\nNew edits via putSchema update the latest version without affecting the frozen version.\n", + "tags": [ + "Schemas" + ], + "parameters": [ + { + "$ref": "#/components/parameters/EntitySlugPathParam" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "version_id": { + "description": "Freeze to a specific version ID. Defaults to the current version.", + "allOf": [ + { + "$ref": "#/components/schemas/SchemaId" + } + ] + } + } + } + } + } + }, + "responses": { + "200": { + "description": "Schema frozen successfully", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/EntitySchemaItem" + } + } + } + }, + "404": { + "$ref": "#/components/responses/NotFoundError" + } + } + } + }, + "/v1/entity/schemas/{slug}/unfreeze": { + "post": { + "operationId": "unfreezeSchema", + "summary": "unfreezeSchema", + "description": "Unfreeze a schema. Promotes the latest version to the current version for all users.\n", + "tags": [ + "Schemas" + ], + "parameters": [ + { + "$ref": "#/components/parameters/EntitySlugPathParam" + } + ], + "responses": { + "200": { + "description": "Schema unfrozen successfully", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/EntitySchemaItem" + } + } + } + }, + "404": { + "$ref": "#/components/responses/NotFoundError" + } + } + } + }, "/v1/entity/schemas/{slug}/capabilities/available": { "get": { "operationId": "listAvailableCapabilities", @@ -3420,6 +3539,34 @@ "schema": { "$ref": "#/components/schemas/TaxonomySearchIncludeArchivedParam" } + }, + { + "in": "query", + "name": "exclude_types", + "description": "Taxonomy type(s) to exclude from the results. Useful to filter out relation labels, schema labels, and system labels.\n", + "schema": { + "anyOf": [ + { + "type": "string", + "enum": [ + "relation", + "schema", + "system" + ] + }, + { + "type": "array", + "items": { + "type": "string", + "enum": [ + "relation", + "schema", + "system" + ] + } + } + ] + } } ], "requestBody": { @@ -3557,7 +3704,7 @@ "description": "ISO 8601 timestamp to filter jobs created after this time (e.g., 2023-01-01T00:00:00Z).", "type": "string", "format": "date-time", - "example": "2023-01-01T00:00:00Z" + "example": "2023-01-01T00:00:00.000Z" } }, { @@ -4563,6 +4710,7 @@ "example": false }, "draft": { + "deprecated": true, "type": "boolean", "example": false }, @@ -4833,6 +4981,14 @@ } } }, + "frozen": { + "description": "Indicates this schema is currently frozen. Present when the returned version is the frozen version.", + "type": "boolean" + }, + "latest": { + "description": "Indicates this is the latest version of the schema. Both frozen and latest can be true if no changes were made since freezing.", + "type": "boolean" + }, "_summary": { "description": "Indicates this is a truncated summary schema (attributes trimmed to summary_attributes only, no capabilities or group_settings)", "type": "boolean" diff --git a/packages/cli/definitions/erp-integration.json b/packages/cli/definitions/erp-integration.json index 96168842..ec88db66 100644 --- a/packages/cli/definitions/erp-integration.json +++ b/packages/cli/definitions/erp-integration.json @@ -2,7 +2,7 @@ "openapi": "3.0.3", "info": { "title": "ERP Integration API", - "version": "0.49.0", + "version": "0.56.0", "description": "API for integrating with ERP systems, handling tracking acknowledgments, triggering ERP processes, and processing ERP updates." }, "tags": [ @@ -21,6 +21,14 @@ { "name": "monitoring", "description": "Monitoring and analytics endpoints" + }, + { + "name": "managed-call", + "description": "Managed call endpoints for synchronous external API calls" + }, + { + "name": "proxy", + "description": "Secure proxy endpoints" } ], "servers": [ @@ -2249,6 +2257,202 @@ } } }, + "/v2/integrations/{integrationId}/monitoring/events": { + "post": { + "operationId": "queryMonitoringEventsV2", + "summary": "queryMonitoringEventsV2", + "description": "Query monitoring events from the unified erp_monitoring_v2 table.\nReturns all event types (inbound, outbound, file_proxy, etc.) in a single list.\nReplaces the separate v1 inbound-events and outbound-events endpoints.\n", + "tags": [ + "monitoring", + "integrations" + ], + "parameters": [ + { + "name": "integrationId", + "in": "path", + "required": true, + "description": "The integration ID", + "schema": { + "type": "string", + "format": "uuid" + } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/QueryMonitoringEventsV2Request" + } + } + } + }, + "responses": { + "200": { + "$ref": "#/components/responses/QueryMonitoringEventsV2Response" + }, + "400": { + "$ref": "#/components/responses/BadRequest" + }, + "401": { + "$ref": "#/components/responses/Unauthorized" + }, + "404": { + "$ref": "#/components/responses/NotFound" + }, + "500": { + "$ref": "#/components/responses/InternalServerError" + } + } + } + }, + "/v2/integrations/{integrationId}/monitoring/stats": { + "post": { + "operationId": "getMonitoringStatsV2", + "summary": "getMonitoringStatsV2", + "description": "Get aggregated statistics from the unified erp_monitoring_v2 table.\nReturns combined metrics for all event types with optional breakdowns.\n", + "tags": [ + "monitoring", + "integrations" + ], + "parameters": [ + { + "name": "integrationId", + "in": "path", + "required": true, + "description": "The integration ID", + "schema": { + "type": "string", + "format": "uuid" + } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GetMonitoringStatsV2Request" + } + } + } + }, + "responses": { + "200": { + "$ref": "#/components/responses/GetMonitoringStatsV2Response" + }, + "400": { + "$ref": "#/components/responses/BadRequest" + }, + "401": { + "$ref": "#/components/responses/Unauthorized" + }, + "404": { + "$ref": "#/components/responses/NotFound" + }, + "500": { + "$ref": "#/components/responses/InternalServerError" + } + } + } + }, + "/v2/integrations/{integrationId}/monitoring/time-series": { + "post": { + "operationId": "getMonitoringTimeSeriesV2", + "summary": "getMonitoringTimeSeriesV2", + "description": "Get time-series aggregated event counts from the unified erp_monitoring_v2 table.\nReturns bucketed counts for chart rendering.\n", + "tags": [ + "monitoring", + "integrations" + ], + "parameters": [ + { + "name": "integrationId", + "in": "path", + "required": true, + "description": "The integration ID", + "schema": { + "type": "string", + "format": "uuid" + } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GetMonitoringTimeSeriesV2Request" + } + } + } + }, + "responses": { + "200": { + "$ref": "#/components/responses/GetMonitoringTimeSeriesV2Response" + }, + "400": { + "$ref": "#/components/responses/BadRequest" + }, + "401": { + "$ref": "#/components/responses/Unauthorized" + }, + "404": { + "$ref": "#/components/responses/NotFound" + }, + "500": { + "$ref": "#/components/responses/InternalServerError" + } + } + } + }, + "/v2/integrations/{integrationId}/monitoring/events/{eventId}/associated": { + "get": { + "operationId": "getAssociatedMonitoringEvents", + "summary": "getAssociatedMonitoringEvents", + "description": "Returns all monitoring events sharing the same event_id, ordered chronologically.\nAlso includes the original inbound event payload from erp_incoming_events if available.\nUsed to display a full event trace/timeline.\n", + "tags": [ + "monitoring", + "integrations" + ], + "parameters": [ + { + "name": "integrationId", + "in": "path", + "required": true, + "description": "The integration ID", + "schema": { + "type": "string", + "format": "uuid" + } + }, + { + "name": "eventId", + "in": "path", + "required": true, + "description": "The event ID to get associated events for", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "$ref": "#/components/responses/GetAssociatedMonitoringEventsResponse" + }, + "400": { + "$ref": "#/components/responses/BadRequest" + }, + "401": { + "$ref": "#/components/responses/Unauthorized" + }, + "500": { + "$ref": "#/components/responses/InternalServerError" + } + } + } + }, "/v1/integrations/secure-proxies": { "get": { "operationId": "listSecureProxies", @@ -2375,55 +2579,314 @@ } } } - } - }, - "components": { - "securitySchemes": { - "EpilotAuth": { - "type": "http", - "scheme": "bearer", - "description": "Authorization header with epilot OAuth2 bearer token", - "bearerFormat": "JWT" - } }, - "schemas": { - "ErrorResponseBase": { - "type": "object", - "properties": { - "code": { - "type": "string", - "description": "Computer-readable error code" - }, - "message": { - "type": "string", - "description": "Error message" + "/v1/managed-call/{slug}/execute": { + "post": { + "operationId": "managedCallExecute", + "summary": "Execute a managed call operation", + "description": "Execute a managed call operation synchronously. The slug in the path acts as the RPC method name.\nCalls an external partner API with JSONata mapping on both request and response.\n", + "tags": [ + "managed-call" + ], + "security": [ + { + "EpilotAuth": [] } - } - }, - "ErpEvent": { - "type": "object", - "required": [ - "event_type", - "object_type", - "timestamp", - "format", - "payload" ], - "properties": { - "event_type": { - "type": "string", - "enum": [ - "CREATE", - "UPDATE", - "DELETE" - ], - "description": "Type of event (create, update, delete)" - }, - "object_type": { - "type": "string", - "description": "Type of the object being updated (business_partner, contract_account, etc.). Corresponds to \"Event Name\" from the integration UI." + "parameters": [ + { + "name": "slug", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^[a-z0-9][a-z0-9_-]*$" + }, + "description": "Use case slug (acts as the RPC method name)" + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ManagedCallExecuteRequest" + } + } + } + }, + "responses": { + "200": { + "description": "Managed call executed successfully.\nThe response body is the JSONata-mapped result (or raw external API response if no mapping).\nIf inbound routing is configured, check X-Inbound-Event-Id header for tracking.\n", + "headers": { + "X-Inbound-Event-Id": { + "description": "Event ID for tracking inbound pipeline processing (only present when inbound routing is configured)", + "schema": { + "type": "string" + } + } + }, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ManagedCallExecuteResponse" + } + } + } }, - "timestamp": { + "400": { + "description": "Bad request (e.g., invalid URL blocked by SSRF protection)", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ManagedCallErrorResponse" + } + } + } + }, + "401": { + "$ref": "#/components/responses/Unauthorized" + }, + "403": { + "$ref": "#/components/responses/Forbidden" + }, + "404": { + "$ref": "#/components/responses/NotFound" + }, + "500": { + "$ref": "#/components/responses/InternalServerError" + }, + "502": { + "description": "External API error (upstream service returned an error)", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ManagedCallErrorResponse" + } + } + } + } + } + } + }, + "/v1/integrations/{integrationId}/generate-types-preview": { + "post": { + "operationId": "generateTypesPreview", + "summary": "Preview scaffolded types for a connector integration", + "description": "Analyses the JSONata mappings of all managed-call use cases in the integration and returns scaffolded type descriptors. The frontend uses these to show the type editor modal where developers fill in leaf types.\n", + "tags": [ + "integrations" + ], + "security": [ + { + "EpilotAuth": [] + } + ], + "parameters": [ + { + "name": "integrationId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + } + ], + "responses": { + "200": { + "description": "Scaffolded type preview", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GenerateTypesPreviewResponse" + } + } + } + }, + "400": { + "$ref": "#/components/responses/BadRequest" + }, + "403": { + "$ref": "#/components/responses/Forbidden" + }, + "404": { + "$ref": "#/components/responses/NotFound" + }, + "500": { + "$ref": "#/components/responses/InternalServerError" + } + } + } + }, + "/v1/integrations/{integrationId}/generate-types": { + "post": { + "operationId": "generateTypes", + "summary": "Generate a TypeScript npm package for a connector integration", + "description": "Generates a complete TypeScript npm package with typed interfaces for all managed-call use cases. This is a stateless operation that does not persist any changes. Use the commit-types endpoint to lock configurations after review.\n", + "tags": [ + "integrations" + ], + "security": [ + { + "EpilotAuth": [] + } + ], + "parameters": [ + { + "name": "integrationId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GenerateTypesRequest" + } + } + } + }, + "responses": { + "200": { + "description": "Generated package", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GenerateTypesResponse" + } + } + } + }, + "400": { + "$ref": "#/components/responses/BadRequest" + }, + "403": { + "$ref": "#/components/responses/Forbidden" + }, + "404": { + "$ref": "#/components/responses/NotFound" + }, + "500": { + "$ref": "#/components/responses/InternalServerError" + } + } + } + }, + "/v1/integrations/{integrationId}/commit-types": { + "post": { + "operationId": "commitTypes", + "summary": "Commit generated types and lock use case configurations", + "description": "Commits the generated types by locking use case configurations and updating version tracking. Should be called after the user reviews and downloads the generated package.\n", + "tags": [ + "integrations" + ], + "security": [ + { + "EpilotAuth": [] + } + ], + "parameters": [ + { + "name": "integrationId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CommitTypesRequest" + } + } + } + }, + "responses": { + "200": { + "description": "Types committed successfully", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CommitTypesResponse" + } + } + } + }, + "400": { + "$ref": "#/components/responses/BadRequest" + }, + "403": { + "$ref": "#/components/responses/Forbidden" + }, + "404": { + "$ref": "#/components/responses/NotFound" + }, + "500": { + "$ref": "#/components/responses/InternalServerError" + } + } + } + } + }, + "components": { + "securitySchemes": { + "EpilotAuth": { + "type": "http", + "scheme": "bearer", + "description": "Authorization header with epilot OAuth2 bearer token", + "bearerFormat": "JWT" + } + }, + "schemas": { + "ErrorResponseBase": { + "type": "object", + "properties": { + "code": { + "type": "string", + "description": "Computer-readable error code" + }, + "message": { + "type": "string", + "description": "Error message" + } + } + }, + "ErpEvent": { + "type": "object", + "required": [ + "event_type", + "object_type", + "timestamp", + "format", + "payload" + ], + "properties": { + "event_type": { + "type": "string", + "enum": [ + "CREATE", + "UPDATE", + "DELETE" + ], + "description": "Type of event (create, update, delete)" + }, + "object_type": { + "type": "string", + "description": "Type of the object being updated (business_partner, contract_account, etc.). Corresponds to \"Event Name\" from the integration UI." + }, + "timestamp": { "type": "string", "format": "date-time", "description": "Timestamp when the event occurred" @@ -2510,12 +2973,14 @@ "properties": { "event_name": { "type": "string", - "description": "Event name from integration mapping (e.g., business_partner, contract_account). Required when use_case_slug is not provided.\n" + "description": "Event name from integration mapping (e.g., business_partner, contract_account). Required when use_case_slug is not provided.\n", + "example": "business_partner" }, "timestamp": { "type": "string", "format": "date-time", - "description": "Timestamp when the event occurred" + "description": "Timestamp when the event occurred", + "example": "2025-05-01T08:30:00Z" }, "format": { "type": "string", @@ -2524,7 +2989,8 @@ "xml" ], "default": "json", - "description": "Format of the payload data" + "description": "Format of the payload data", + "example": "json" }, "payload": { "oneOf": [ @@ -2540,14 +3006,16 @@ "additionalProperties": true } ], - "description": "The object data payload - can be either a serialized string or a direct JSON object" + "description": "The object data payload - can be either a serialized string or a direct JSON object", + "example": "{\"id\":\"BP10001\",\"name\":\"Acme Corporation\",\"type\":\"organization\",\"tax_id\":\"DE123456789\",\"status\":\"active\"}" }, "use_case_slug": { "type": "string", "pattern": "^[a-z0-9][a-z0-9_-]*$", "minLength": 1, "maxLength": 255, - "description": "Recommended. Use case slug for routing this event to the correct use case configuration. If provided, takes precedence over event_name for use case lookup. Preferred over event_name-based routing as slugs are portable across environments.\n" + "description": "Recommended. Use case slug for routing this event to the correct use case configuration. If provided, takes precedence over event_name for use case lookup. Preferred over event_name-based routing as slugs are portable across environments.\n", + "example": "business_partner" }, "deduplication_id": { "type": "string", @@ -2712,30 +3180,175 @@ }, "settings": { "$ref": "#/components/schemas/IntegrationSettings" + }, + "integration_type": { + "type": "string", + "enum": [ + "erp", + "connector" + ], + "default": "erp", + "description": "Type of integration. \"erp\" is the ERP integration with inbound/outbound use cases. \"connector\" is for complex proxy integrations with external APIs.\n" + }, + "connector_config": { + "$ref": "#/components/schemas/ConnectorConfig" + }, + "protected": { + "type": "boolean", + "description": "If true, integration is displayed in read-only mode in the UI to discourage changes" } } }, - "Integration": { - "allOf": [ - { - "type": "object", - "required": [ - "id", - "orgId", - "name", - "created_at", - "updated_at" - ], - "properties": { - "id": { - "type": "string", - "format": "uuid", - "readOnly": true, - "description": "Unique identifier for the integration" - }, - "orgId": { - "type": "string", - "readOnly": true, + "ConnectorConfig": { + "type": "object", + "description": "Shared configuration for connector-type integrations", + "properties": { + "base_url": { + "type": "string", + "description": "Base URL for the partner API" + }, + "auth": { + "$ref": "#/components/schemas/ManagedCallAuth" + }, + "types_versions": { + "type": "array", + "description": "History of generated type package versions", + "items": { + "type": "object", + "required": [ + "version", + "package_name", + "generated_at", + "generated_by", + "status" + ], + "properties": { + "version": { + "type": "string" + }, + "package_name": { + "type": "string" + }, + "generated_at": { + "type": "string", + "format": "date-time" + }, + "generated_by": { + "type": "string" + }, + "status": { + "type": "string", + "enum": [ + "active", + "deprecated" + ] + } + } + } + }, + "latest_types_version": { + "type": "string", + "description": "Latest active types package version" + }, + "latest_types_package_name": { + "type": "string", + "description": "Latest active types package name" + } + } + }, + "ManagedCallAuth": { + "type": "object", + "description": "Authentication configuration for managed call requests", + "properties": { + "type": { + "type": "string", + "enum": [ + "oauth2_client_credentials", + "api_key", + "bearer" + ], + "description": "Authentication type" + }, + "token_url": { + "type": "string", + "description": "OAuth2 token URL. Can be plain text or {{env.key}} reference." + }, + "client_id": { + "type": "string", + "description": "OAuth2 client ID. Can be plain text or {{env.key}} reference." + }, + "client_secret": { + "type": "string", + "description": "OAuth2 client secret. Must be an {{env.key}} reference (secret)." + }, + "scope": { + "type": "string", + "description": "OAuth2 scope" + }, + "audience": { + "type": "string", + "description": "OAuth2 audience parameter (e.g. for Auth0, Azure AD). Can be plain text or {{env.key}} reference." + }, + "resource": { + "type": "string", + "description": "OAuth2 resource parameter (e.g. for Azure AD). Can be plain text or {{env.key}} reference." + }, + "body_params": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Additional key-value pairs for the OAuth2 token request body. Values can be {{env.key}} references." + }, + "headers": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Additional headers for the OAuth2 token request. Values can be {{env.key}} references." + }, + "query_params": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Additional query parameters for the OAuth2 token URL. Values can be {{env.key}} references." + }, + "api_key_header": { + "type": "string", + "description": "Header name for API key auth (default X-API-Key)" + }, + "api_key": { + "type": "string", + "description": "API key value. Must be an {{env.key}} reference (secret)." + }, + "token": { + "type": "string", + "description": "Bearer token value. Must be an {{env.key}} reference (secret)." + } + } + }, + "Integration": { + "allOf": [ + { + "type": "object", + "required": [ + "id", + "orgId", + "name", + "created_at", + "updated_at" + ], + "properties": { + "id": { + "type": "string", + "format": "uuid", + "readOnly": true, + "description": "Unique identifier for the integration" + }, + "orgId": { + "type": "string", + "readOnly": true, "description": "Organization ID" }, "created_at": { @@ -3294,6 +3907,9 @@ { "$ref": "#/components/schemas/EmbeddedFileProxyUseCaseRequest" }, + { + "$ref": "#/components/schemas/EmbeddedManagedCallUseCaseRequest" + }, { "$ref": "#/components/schemas/EmbeddedSecureProxyUseCaseRequest" } @@ -3304,6 +3920,7 @@ "inbound": "#/components/schemas/EmbeddedInboundUseCaseRequest", "outbound": "#/components/schemas/EmbeddedOutboundUseCaseRequest", "file_proxy": "#/components/schemas/EmbeddedFileProxyUseCaseRequest", + "managed_call": "#/components/schemas/EmbeddedManagedCallUseCaseRequest", "secure_proxy": "#/components/schemas/EmbeddedSecureProxyUseCaseRequest" } } @@ -3420,6 +4037,31 @@ } ] }, + "EmbeddedManagedCallUseCaseRequest": { + "allOf": [ + { + "$ref": "#/components/schemas/EmbeddedUseCaseRequestBase" + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "managed_call" + ], + "description": "Use case type for managed API calls" + }, + "configuration": { + "$ref": "#/components/schemas/ManagedCallOperationConfig" + } + } + } + ] + }, "EmbeddedSecureProxyUseCaseRequest": { "allOf": [ { @@ -3484,6 +4126,7 @@ "inbound", "outbound", "file_proxy", + "managed_call", "secure_proxy" ], "description": "Use case type" @@ -3583,6 +4226,38 @@ } ] }, + "ManagedCallUseCase": { + "allOf": [ + { + "$ref": "#/components/schemas/UseCaseBase" + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "managed_call" + ], + "description": "Use case type for managed API calls" + }, + "configuration": { + "$ref": "#/components/schemas/ManagedCallOperationConfig" + }, + "type_annotations": { + "$ref": "#/components/schemas/TypeAnnotations" + }, + "types_locked": { + "type": "boolean", + "description": "Whether types have been generated for this use case" + } + } + } + ] + }, "SecureProxyUseCase": { "allOf": [ { @@ -3619,6 +4294,9 @@ { "$ref": "#/components/schemas/FileProxyUseCase" }, + { + "$ref": "#/components/schemas/ManagedCallUseCase" + }, { "$ref": "#/components/schemas/SecureProxyUseCase" } @@ -3629,6 +4307,7 @@ "inbound": "#/components/schemas/InboundUseCase", "outbound": "#/components/schemas/OutboundUseCase", "file_proxy": "#/components/schemas/FileProxyUseCase", + "managed_call": "#/components/schemas/ManagedCallUseCase", "secure_proxy": "#/components/schemas/SecureProxyUseCase" } } @@ -3644,6 +4323,9 @@ { "$ref": "#/components/schemas/CreateFileProxyUseCaseRequest" }, + { + "$ref": "#/components/schemas/CreateManagedCallUseCaseRequest" + }, { "$ref": "#/components/schemas/CreateSecureProxyUseCaseRequest" } @@ -3654,6 +4336,7 @@ "inbound": "#/components/schemas/CreateInboundUseCaseRequest", "outbound": "#/components/schemas/CreateOutboundUseCaseRequest", "file_proxy": "#/components/schemas/CreateFileProxyUseCaseRequest", + "managed_call": "#/components/schemas/CreateManagedCallUseCaseRequest", "secure_proxy": "#/components/schemas/CreateSecureProxyUseCaseRequest" } } @@ -3760,6 +4443,31 @@ } ] }, + "CreateManagedCallUseCaseRequest": { + "allOf": [ + { + "$ref": "#/components/schemas/CreateUseCaseRequestBase" + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "managed_call" + ], + "description": "Use case type for managed API calls" + }, + "configuration": { + "$ref": "#/components/schemas/ManagedCallOperationConfig" + } + } + } + ] + }, "CreateSecureProxyUseCaseRequest": { "allOf": [ { @@ -3796,6 +4504,9 @@ { "$ref": "#/components/schemas/UpdateFileProxyUseCaseRequest" }, + { + "$ref": "#/components/schemas/UpdateManagedCallUseCaseRequest" + }, { "$ref": "#/components/schemas/UpdateSecureProxyUseCaseRequest" } @@ -3806,6 +4517,7 @@ "inbound": "#/components/schemas/UpdateInboundUseCaseRequest", "outbound": "#/components/schemas/UpdateOutboundUseCaseRequest", "file_proxy": "#/components/schemas/UpdateFileProxyUseCaseRequest", + "managed_call": "#/components/schemas/UpdateManagedCallUseCaseRequest", "secure_proxy": "#/components/schemas/UpdateSecureProxyUseCaseRequest" } } @@ -3903,6 +4615,31 @@ } ] }, + "UpdateManagedCallUseCaseRequest": { + "allOf": [ + { + "$ref": "#/components/schemas/UpdateUseCaseRequestBase" + }, + { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "managed_call" + ], + "description": "Use case type for managed API calls" + }, + "configuration": { + "$ref": "#/components/schemas/ManagedCallOperationConfig" + }, + "type_annotations": { + "$ref": "#/components/schemas/TypeAnnotations" + } + } + } + ] + }, "UpdateSecureProxyUseCaseRequest": { "allOf": [ { @@ -3936,6 +4673,9 @@ { "$ref": "#/components/schemas/FileProxyUseCaseHistoryEntry" }, + { + "$ref": "#/components/schemas/ManagedCallUseCaseHistoryEntry" + }, { "$ref": "#/components/schemas/SecureProxyUseCaseHistoryEntry" } @@ -3946,6 +4686,7 @@ "inbound": "#/components/schemas/InboundUseCaseHistoryEntry", "outbound": "#/components/schemas/OutboundUseCaseHistoryEntry", "file_proxy": "#/components/schemas/FileProxyUseCaseHistoryEntry", + "managed_call": "#/components/schemas/ManagedCallUseCaseHistoryEntry", "secure_proxy": "#/components/schemas/SecureProxyUseCaseHistoryEntry" } } @@ -4087,6 +4828,38 @@ } ] }, + "ManagedCallUseCaseHistoryEntry": { + "allOf": [ + { + "$ref": "#/components/schemas/UseCaseHistoryEntryBase" + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "managed_call" + ], + "description": "Use case type for managed API calls" + }, + "configuration": { + "$ref": "#/components/schemas/ManagedCallOperationConfig" + }, + "type_annotations": { + "$ref": "#/components/schemas/TypeAnnotations" + }, + "types_locked": { + "type": "boolean", + "description": "Whether types have been generated for this use case" + } + } + } + ] + }, "SecureProxyUseCaseHistoryEntry": { "allOf": [ { @@ -4135,6 +4908,14 @@ }, "readOnly": true, "description": "Domain whitelist for secure_link mode. Admin-only — can only be modified directly in DynamoDB via admin script.\nSupports exact match (e.g., \"api.wemag.com\") and wildcard prefix (e.g., \"*.wemag.com\").\n" + }, + "allowed_ips": { + "type": "array", + "items": { + "type": "string" + }, + "readOnly": true, + "description": "IP allowlist (CIDR notation) for secure_link mode. Admin-only — can only be modified directly in DynamoDB via admin script.\nRequired for secure_link mode. All DNS-resolved IPs must match at least one range.\nExample: [\"10.0.1.0/24\", \"192.168.1.0/24\"]\n" } } }, @@ -4159,106 +4940,495 @@ "slug": { "type": "string" }, - "enabled": { - "type": "boolean" - }, - "vpc_mode": { - "type": "string", - "enum": [ - "static_ip", - "secure_link" - ] + "enabled": { + "type": "boolean" + }, + "vpc_mode": { + "type": "string", + "enum": [ + "static_ip", + "secure_link" + ] + }, + "allowed_domains": { + "type": "array", + "items": { + "type": "string" + } + }, + "allowed_ips": { + "type": "array", + "items": { + "type": "string" + } + }, + "integration_id": { + "type": "string", + "format": "uuid" + }, + "integration_name": { + "type": "string" + } + } + }, + "SecureProxyRequest": { + "type": "object", + "required": [ + "url", + "method", + "integration_id" + ], + "properties": { + "integration_id": { + "type": "string", + "format": "uuid", + "description": "Integration ID that owns the secure_proxy use case" + }, + "use_case_id": { + "type": "string", + "format": "uuid", + "description": "Use case ID (provide either use_case_id or use_case_slug)" + }, + "use_case_slug": { + "type": "string", + "description": "Use case slug (provide either use_case_id or use_case_slug)" + }, + "url": { + "type": "string", + "format": "uri", + "description": "Target URL to proxy the request to" + }, + "method": { + "type": "string", + "enum": [ + "GET", + "POST", + "PUT", + "PATCH", + "DELETE" + ], + "description": "HTTP method" + }, + "headers": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Request headers to forward" + }, + "body": { + "description": "Request body (string or JSON)" + }, + "response_type": { + "type": "string", + "enum": [ + "json", + "binary" + ], + "default": "json", + "description": "Expected response type" + } + } + }, + "SecureProxyResponse": { + "type": "object", + "properties": { + "status_code": { + "type": "integer", + "description": "HTTP status code from the upstream response" + }, + "headers": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Response headers from upstream" + }, + "body": { + "description": "Response body from upstream" + } + } + }, + "ManagedCallOperationConfig": { + "type": "object", + "required": [ + "operation" + ], + "description": "Configuration for managed_call use cases. Defines a single API operation with JSONata mapping.", + "properties": { + "operation": { + "$ref": "#/components/schemas/ManagedCallOperation" + }, + "request_mapping": { + "type": "string", + "description": "JSONata expression for outbound body transformation" + }, + "response_mapping": { + "type": "string", + "description": "JSONata expression for inbound response transformation" + }, + "inbound_use_case_slug": { + "type": "string", + "description": "Slug of the inbound use case to route responses to for async entity processing.\nWhen set, the managed call response is queued to the inbound pipeline and processed\nusing the referenced inbound use case's mapping configuration.\n" + } + } + }, + "ManagedCallOperation": { + "type": "object", + "required": [ + "method", + "path" + ], + "description": "HTTP operation configuration for managed calls", + "properties": { + "method": { + "type": "string", + "enum": [ + "GET", + "POST", + "PUT", + "PATCH", + "DELETE" + ] + }, + "path": { + "type": "string", + "description": "URL path template with {{variable}} interpolation" + }, + "headers": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "query_params": { + "type": "object", + "additionalProperties": { + "type": "string" + } + } + } + }, + "ManagedCallExecuteRequest": { + "type": "object", + "required": [ + "integration_id" + ], + "properties": { + "integration_id": { + "type": "string", + "format": "uuid", + "description": "Integration ID" + }, + "payload": { + "type": "object", + "additionalProperties": true, + "description": "Request payload for the managed call operation" + }, + "correlation_id": { + "type": "string", + "description": "Correlation ID for tracing related events (auto-generated if not provided)" + } + } + }, + "ManagedCallExecuteResponse": { + "description": "The response from a managed call execution.\nOn success, returns the JSONata-mapped response data directly (no wrapper).\nThe shape is entirely defined by your response_mapping JSONata expression.\nIf no response_mapping is configured, returns the raw external API response.\nCheck the X-Inbound-Event-Id header for inbound pipeline tracking when inbound routing is configured.\n", + "additionalProperties": true + }, + "ManagedCallErrorResponse": { + "type": "object", + "required": [ + "error" + ], + "properties": { + "error": { + "type": "object", + "required": [ + "code", + "message" + ], + "properties": { + "code": { + "type": "string", + "description": "Error code (e.g., EXTERNAL_API_ERROR, SSRF_BLOCKED, MANAGED_CALL_EXECUTION_ERROR)" + }, + "message": { + "type": "string", + "description": "Human-readable error message" + }, + "details": { + "type": "object", + "additionalProperties": true, + "description": "Additional error details (e.g., status code and body for external API errors)" + } + } + } + } + }, + "TypeAnnotations": { + "type": "object", + "description": "Developer-provided type annotations for a use case's request and response fields", + "properties": { + "request": { + "type": "object", + "description": "Type annotations for request fields, keyed by dot-path (e.g., \"vendors[].id\" -> \"string\")", + "additionalProperties": { + "type": "string" + } + }, + "response": { + "type": "object", + "description": "Type annotations for response fields", + "additionalProperties": { + "type": "string" + } + } + } + }, + "TypeDescriptor": { + "type": "object", + "description": "Describes the inferred type shape of a JSONata expression", + "required": [ + "kind" + ], + "properties": { + "kind": { + "type": "string", + "enum": [ + "object", + "array", + "string", + "number", + "boolean", + "null", + "unknown", + "union" + ] + }, + "properties": { + "type": "object", + "description": "For kind=object, the properties and their type descriptors", + "additionalProperties": { + "$ref": "#/components/schemas/TypeDescriptor" + } + }, + "items": { + "description": "For kind=array, the type of array items", + "allOf": [ + { + "$ref": "#/components/schemas/TypeDescriptor" + } + ] + }, + "source": { + "type": "string", + "description": "For kind=unknown, the JSONata path that produced this value" + }, + "variants": { + "type": "array", + "description": "For kind=union, the variant types", + "items": { + "$ref": "#/components/schemas/TypeDescriptor" + } + } + } + }, + "UseCaseTypePreview": { + "type": "object", + "description": "Scaffolded type descriptors for a single use case", + "required": [ + "slug", + "request_shape", + "response_shape" + ], + "properties": { + "slug": { + "type": "string" + }, + "name": { + "type": "string" + }, + "request_shape": { + "$ref": "#/components/schemas/TypeDescriptor" + }, + "response_shape": { + "$ref": "#/components/schemas/TypeDescriptor" + }, + "existing_annotations": { + "$ref": "#/components/schemas/TypeAnnotations" + } + } + }, + "GenerateTypesPreviewResponse": { + "type": "object", + "required": [ + "use_cases" + ], + "properties": { + "integration_name": { + "type": "string" + }, + "use_cases": { + "type": "array", + "items": { + "$ref": "#/components/schemas/UseCaseTypePreview" + } + }, + "previous_version": { + "type": "string", + "description": "Previously generated version, if any" + }, + "suggested_version": { + "type": "string", + "description": "Suggested next version based on detected changes" + }, + "suggested_bump": { + "type": "string", + "enum": [ + "major", + "minor" + ] + }, + "detected_changes": { + "type": "array", + "items": { + "type": "object", + "required": [ + "slug", + "field", + "type", + "description" + ], + "properties": { + "slug": { + "type": "string" + }, + "field": { + "type": "string" + }, + "type": { + "type": "string", + "enum": [ + "breaking", + "non-breaking" + ] + }, + "description": { + "type": "string" + } + } + } + } + } + }, + "GenerateTypesRequest": { + "type": "object", + "required": [ + "package_name", + "version" + ], + "properties": { + "package_name": { + "type": "string", + "description": "npm package name", + "example": "@epilot/hems-cleverpv" + }, + "version": { + "type": "string", + "description": "Package version", + "example": "1.0.0" + }, + "description": { + "type": "string" + }, + "domain_package": { + "type": "string", + "description": "Domain standard package to extend", + "example": "@epilot/hems" + }, + "domain_map_name": { + "type": "string", + "description": "Name of the domain UseCaseMap to extend", + "example": "HemsUseCaseMap" + }, + "annotations": { + "type": "object", + "description": "Type annotations per use case slug", + "additionalProperties": { + "$ref": "#/components/schemas/TypeAnnotations" + } + } + } + }, + "GenerateTypesResponse": { + "type": "object", + "required": [ + "package_name", + "version", + "files" + ], + "properties": { + "package_name": { + "type": "string" + }, + "version": { + "type": "string" + }, + "files": { + "type": "object", + "description": "Generated file contents keyed by file path", + "additionalProperties": { + "type": "string" + } }, - "allowed_domains": { + "warnings": { "type": "array", "items": { "type": "string" } - }, - "integration_id": { - "type": "string", - "format": "uuid" - }, - "integration_name": { - "type": "string" } } }, - "SecureProxyRequest": { + "CommitTypesRequest": { "type": "object", "required": [ - "url", - "method", - "integration_id" + "package_name", + "version" ], "properties": { - "integration_id": { - "type": "string", - "format": "uuid", - "description": "Integration ID that owns the secure_proxy use case" - }, - "use_case_id": { + "package_name": { "type": "string", - "format": "uuid", - "description": "Use case ID (provide either use_case_id or use_case_slug)" - }, - "use_case_slug": { - "type": "string", - "description": "Use case slug (provide either use_case_id or use_case_slug)" - }, - "url": { - "type": "string", - "format": "uri", - "description": "Target URL to proxy the request to" + "description": "npm package name", + "example": "@epilot/hems-cleverpv" }, - "method": { + "version": { "type": "string", - "enum": [ - "GET", - "POST", - "PUT", - "PATCH", - "DELETE" - ], - "description": "HTTP method" + "description": "Package version", + "example": "1.0.0" }, - "headers": { + "annotations": { "type": "object", + "description": "Type annotations per use case slug", "additionalProperties": { - "type": "string" - }, - "description": "Request headers to forward" - }, - "body": { - "description": "Request body (string or JSON)" - }, - "response_type": { - "type": "string", - "enum": [ - "json", - "binary" - ], - "default": "json", - "description": "Expected response type" + "$ref": "#/components/schemas/TypeAnnotations" + } } } }, - "SecureProxyResponse": { + "CommitTypesResponse": { "type": "object", + "required": [ + "committed" + ], "properties": { - "status_code": { - "type": "integer", - "description": "HTTP status code from the upstream response" + "committed": { + "type": "boolean" }, - "headers": { - "type": "object", - "additionalProperties": { + "warnings": { + "type": "array", + "items": { "type": "string" - }, - "description": "Response headers from upstream" - }, - "body": { - "description": "Response body from upstream" + } } } }, @@ -4271,8 +5441,12 @@ "description": "Configuration for file_proxy use cases. Defines how to authenticate and fetch files from external document systems.\n\nThe file proxy download URL always requires `orgId`, `integrationId`, and either `useCaseSlug` (recommended) or `useCaseId` (legacy UUID) as query parameters.\nThe `orgId` is included in the signed URL to establish organization context without requiring authentication.\nAdditional use-case-specific parameters are declared in the `params` array.\n", "properties": { "secure_proxy": { - "$ref": "#/components/schemas/FileProxySecureProxyAttachment", - "description": "Optional secure proxy attachment for routing all outbound file proxy requests.\nOnly `use_case_slug` is supported and the referenced secure_proxy use case\nmust belong to the same integration.\n" + "description": "Optional secure proxy attachment for routing all outbound file proxy requests.\nOnly `use_case_slug` is supported and the referenced secure_proxy use case\nmust belong to the same integration.\n", + "allOf": [ + { + "$ref": "#/components/schemas/FileProxySecureProxyAttachment" + } + ] }, "auth": { "$ref": "#/components/schemas/FileProxyAuth" @@ -5889,44 +7063,218 @@ }, "correlation_id": { "type": "string", - "nullable": true, - "description": "Correlation ID for tracing related events" + "nullable": true, + "description": "Correlation ID for tracing related events" + }, + "integration_id": { + "type": "string", + "nullable": true, + "description": "Integration ID" + }, + "use_case_id": { + "type": "string", + "nullable": true, + "description": "Use case ID" + }, + "event_type": { + "type": "string", + "enum": [ + "CREATE", + "UPDATE", + "DELETE", + "TRIGGER" + ], + "description": "Type of event (optional for V3 events)" + }, + "object_type": { + "type": "string", + "description": "Type of object being synced (e.g., 'contract', 'meter')" + }, + "sync_type": { + "type": "string", + "enum": [ + "entity", + "meter_reading", + "webhook", + "api_deprecation" + ], + "description": "Type of sync operation" + }, + "status": { + "type": "string", + "enum": [ + "success", + "error", + "skipped", + "warning" + ], + "description": "Processing status" + }, + "error_code": { + "type": "string", + "nullable": true, + "description": "Error code (when status=error)" + }, + "error_message": { + "type": "string", + "nullable": true, + "description": "Error message (when status=error)" + }, + "error_category": { + "type": "string", + "nullable": true, + "enum": [ + "validation", + "configuration", + "downstream_api", + "timeout", + "system" + ], + "description": "Error category (when status=error)" + }, + "processing_duration_ms": { + "type": "integer", + "nullable": true, + "description": "Processing duration in milliseconds" + }, + "received_at": { + "type": "string", + "format": "date-time", + "description": "When the event was received" + }, + "completed_at": { + "type": "string", + "format": "date-time", + "description": "When processing completed" + } + } + }, + "QueryMonitoringEventsV2Request": { + "type": "object", + "properties": { + "use_case_id": { + "type": "string", + "description": "Filter by use case ID (UUID). Empty string matches \"General\" events." + }, + "use_case_type": { + "type": "string", + "enum": [ + "inbound", + "outbound", + "file_proxy", + "managed_call", + "secure_proxy" + ], + "description": "Filter by use case type (replaces direction)" + }, + "level": { + "type": "string", + "enum": [ + "success", + "error", + "skipped", + "warning" + ], + "description": "Filter by event level" + }, + "code": { + "type": "string", + "description": "Filter by taxonomy code (e.g. OAUTH2_TOKEN_FAILURE, HTTP_502)" + }, + "event_id": { + "type": "string", + "description": "Filter by trigger/inbound event ID" + }, + "correlation_id": { + "type": "string", + "description": "Filter by correlation ID for tracing" + }, + "from_date": { + "type": "string", + "format": "date-time", + "description": "Filter events from this date (inclusive)", + "example": "2025-01-01T00:00:00Z" + }, + "to_date": { + "type": "string", + "format": "date-time", + "description": "Filter events until this date (inclusive)", + "example": "2025-01-31T23:59:59Z" + }, + "limit": { + "type": "integer", + "description": "Maximum number of results to return", + "example": 50, + "default": 50, + "minimum": 1, + "maximum": 100 + }, + "cursor": { + "type": "object", + "description": "Cursor for pagination (from previous response's next_cursor)", + "properties": { + "created_at": { + "type": "string", + "format": "date-time" + }, + "id": { + "type": "string", + "format": "uuid" + } + } + } + } + }, + "MonitoringEventV2": { + "type": "object", + "required": [ + "id", + "org_id", + "integration_id", + "event_id", + "use_case_type", + "level", + "created_at" + ], + "properties": { + "id": { + "type": "string", + "format": "uuid", + "description": "Unique monitoring event ID" + }, + "org_id": { + "type": "string", + "description": "Organization ID" }, "integration_id": { "type": "string", - "nullable": true, "description": "Integration ID" }, - "use_case_id": { + "event_id": { "type": "string", - "nullable": true, - "description": "Use case ID" + "description": "Trigger/inbound event ID (groups related monitoring events)" }, - "event_type": { + "correlation_id": { "type": "string", - "enum": [ - "CREATE", - "UPDATE", - "DELETE", - "TRIGGER" - ], - "description": "Type of event (optional for V3 events)" + "description": "Correlation ID for tracing. Empty when unavailable." }, - "object_type": { + "use_case_id": { "type": "string", - "description": "Type of object being synced (e.g., 'contract', 'meter')" + "description": "Use case ID. Empty for system-level events (\"General\")." }, - "sync_type": { + "use_case_type": { "type": "string", "enum": [ - "entity", - "meter_reading", - "webhook", - "api_deprecation" + "inbound", + "outbound", + "file_proxy", + "managed_call", + "secure_proxy", + "" ], - "description": "Type of sync operation" + "description": "Use case type. Empty for system-level events." }, - "status": { + "level": { "type": "string", "enum": [ "success", @@ -5934,44 +7282,198 @@ "skipped", "warning" ], - "description": "Processing status" + "description": "Event outcome level" }, - "error_code": { + "code": { "type": "string", - "nullable": true, - "description": "Error code (when status=error)" + "description": "Taxonomy code (e.g. OAUTH2_TOKEN_FAILURE, HTTP_502). Empty for success." }, - "error_message": { + "message": { "type": "string", + "description": "Human-readable message. Empty when not applicable." + }, + "detail": { + "type": "object", "nullable": true, - "description": "Error message (when status=error)" + "additionalProperties": true, + "description": "Event-specific JSON data. Structure determined by `code`." }, - "error_category": { + "created_at": { + "type": "string", + "format": "date-time", + "description": "When the monitoring event was created" + } + } + }, + "GetMonitoringStatsV2Request": { + "type": "object", + "properties": { + "from_date": { + "type": "string", + "format": "date-time", + "description": "Start of the time range", + "example": "2025-01-01T00:00:00Z" + }, + "to_date": { + "type": "string", + "format": "date-time", + "description": "End of the time range", + "example": "2025-01-31T23:59:59Z" + }, + "use_case_type": { "type": "string", - "nullable": true, "enum": [ - "validation", - "configuration", - "downstream_api", - "timeout", - "system" + "inbound", + "outbound", + "file_proxy", + "managed_call", + "secure_proxy" ], - "description": "Error category (when status=error)" + "description": "Filter stats by use case type" }, - "processing_duration_ms": { + "group_by": { + "type": "string", + "enum": [ + "use_case_id", + "use_case_type", + "level", + "code", + "date" + ], + "description": "Field to group the breakdown by" + } + } + }, + "MonitoringStatsV2": { + "type": "object", + "required": [ + "total_events", + "success_count", + "error_count", + "warning_count", + "skipped_count" + ], + "properties": { + "total_events": { + "type": "integer", + "description": "Total number of events in the period" + }, + "success_count": { + "type": "integer", + "description": "Number of successful events" + }, + "error_count": { + "type": "integer", + "description": "Number of error events" + }, + "warning_count": { + "type": "integer", + "description": "Number of warning events" + }, + "skipped_count": { + "type": "integer", + "description": "Number of skipped events" + }, + "ack_timeout_count": { "type": "integer", + "description": "Number of ACK_TIMEOUT events (acknowledgement timed out)" + }, + "success_rate": { + "type": "number", + "format": "float", + "description": "Success rate as percentage (0-100)" + }, + "last_error_at": { + "type": "string", + "format": "date-time", "nullable": true, - "description": "Processing duration in milliseconds" + "description": "Timestamp of the most recent error" }, - "received_at": { + "breakdown": { + "type": "array", + "description": "Statistics breakdown by requested group_by field", + "items": { + "type": "object", + "additionalProperties": true + } + } + } + }, + "GetMonitoringTimeSeriesV2Request": { + "type": "object", + "required": [ + "from_date", + "interval" + ], + "properties": { + "from_date": { "type": "string", "format": "date-time", - "description": "When the event was received" + "description": "Start of the time range (required)", + "example": "2025-01-01T00:00:00Z" }, - "completed_at": { + "to_date": { "type": "string", "format": "date-time", - "description": "When processing completed" + "description": "End of the time range (defaults to now)", + "example": "2025-01-31T23:59:59Z" + }, + "interval": { + "type": "string", + "enum": [ + "5m", + "10m", + "30m", + "1h", + "3h", + "1d" + ], + "description": "Time bucket interval" + }, + "use_case_type": { + "type": "string", + "enum": [ + "inbound", + "outbound", + "file_proxy", + "managed_call", + "secure_proxy" + ], + "description": "Filter by use case type" + } + } + }, + "TimeSeriesBucketV2": { + "type": "object", + "required": [ + "timestamp", + "total_count" + ], + "properties": { + "timestamp": { + "type": "string", + "format": "date-time", + "description": "Bucket start timestamp" + }, + "success_count": { + "type": "integer", + "description": "Number of successful events in the bucket" + }, + "error_count": { + "type": "integer", + "description": "Number of error events in the bucket" + }, + "warning_count": { + "type": "integer", + "description": "Number of warning events in the bucket" + }, + "skipped_count": { + "type": "integer", + "description": "Number of skipped events in the bucket" + }, + "total_count": { + "type": "integer", + "description": "Total events in the bucket" } } } @@ -6007,6 +7509,16 @@ } } }, + "Forbidden": { + "description": "Forbidden - insufficient permissions", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponseBase" + } + } + } + }, "InternalServerError": { "description": "Internal Server Error", "content": { @@ -6298,6 +7810,117 @@ } } } + }, + "QueryMonitoringEventsV2Response": { + "description": "Monitoring events queried successfully", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/MonitoringEventV2" + }, + "description": "List of monitoring events" + }, + "next_cursor": { + "type": "object", + "nullable": true, + "description": "Cursor to fetch the next page. Null if no more results.", + "properties": { + "created_at": { + "type": "string", + "format": "date-time" + }, + "id": { + "type": "string", + "format": "uuid" + } + } + }, + "has_more": { + "type": "boolean", + "description": "Indicates if more results are available" + } + } + } + } + } + }, + "GetMonitoringStatsV2Response": { + "description": "Monitoring statistics retrieved successfully", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MonitoringStatsV2" + } + } + } + }, + "GetMonitoringTimeSeriesV2Response": { + "description": "Time-series data retrieved successfully", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "interval": { + "type": "string", + "enum": [ + "5m", + "10m", + "30m", + "1h", + "3h", + "1d" + ], + "description": "The bucket interval" + }, + "from_date": { + "type": "string", + "format": "date-time" + }, + "to_date": { + "type": "string", + "format": "date-time" + }, + "buckets": { + "type": "array", + "items": { + "$ref": "#/components/schemas/TimeSeriesBucketV2" + } + } + } + } + } + } + }, + "GetAssociatedMonitoringEventsResponse": { + "description": "Associated monitoring events for the given event_id", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "monitoring_events": { + "type": "array", + "items": { + "$ref": "#/components/schemas/MonitoringEventV2" + }, + "description": "All monitoring events sharing this event_id, ordered by created_at ASC" + }, + "inbound_event": { + "type": "object", + "nullable": true, + "additionalProperties": true, + "description": "The original inbound event payload from erp_incoming_events, if available" + } + } + } + } + } } } } diff --git a/packages/cli/definitions/journey.json b/packages/cli/definitions/journey.json index 64b6b0aa..57dacd57 100644 --- a/packages/cli/definitions/journey.json +++ b/packages/cli/definitions/journey.json @@ -1493,15 +1493,6 @@ "validationRules": { "$ref": "#/components/schemas/ValidationRuleRef" }, - "_manifest": { - "type": "array", - "description": "Manifest/Blueprint ID used to create/update the entity", - "items": { - "type": "string", - "format": "uuid", - "example": "123e4567-e89b-12d3-a456-426614174000" - } - }, "createdBy": { "type": "string" }, diff --git a/packages/cli/definitions/workflow-definition.json b/packages/cli/definitions/workflow-definition.json index 533c5333..5e5f3900 100644 --- a/packages/cli/definitions/workflow-definition.json +++ b/packages/cli/definitions/workflow-definition.json @@ -750,131 +750,6 @@ } } }, - "/v2/flows/templates/{flowId}/export": { - "get": { - "operationId": "exportFlowTemplate", - "summary": "exportFlowTemplate", - "description": "Export a Flow Template with all referenced automations resolved and bundled alongside.", - "tags": [ - "Flows V2" - ], - "parameters": [ - { - "in": "path", - "name": "flowId", - "schema": { - "$ref": "#/components/schemas/FlowTemplateId" - }, - "required": true - } - ], - "responses": { - "200": { - "description": "Exported flow template with resolved automations", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/FlowTemplateExport" - } - } - } - }, - "401": { - "description": "Authentication Errors", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResp" - } - } - } - }, - "404": { - "description": "Flow template not found", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResp" - } - } - } - }, - "500": { - "description": "Other errors", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResp" - } - } - } - } - } - } - }, - "/v2/flows/templates/import": { - "post": { - "operationId": "importFlowTemplate", - "summary": "importFlowTemplate", - "description": "Import a Flow Template from an export payload. Creates all automations and the flow in the caller's organization.", - "tags": [ - "Flows V2" - ], - "requestBody": { - "description": "Export payload containing the flow template and resolved automations", - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/FlowTemplateExport" - } - } - } - }, - "responses": { - "201": { - "description": "Flow template imported successfully", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/FlowTemplateImportResult" - } - } - } - }, - "400": { - "description": "Validation Errors", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResp" - } - } - } - }, - "401": { - "description": "Authentication Errors", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResp" - } - } - } - }, - "500": { - "description": "Other errors", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResp" - } - } - } - } - } - } - }, "/v1/workflows/definitions/{definitionId}": { "get": { "operationId": "getDefinition", @@ -1851,7 +1726,7 @@ "v2", "v3" ], - "description": "Version of the workflow schema.\n\n- `v1` – *Deprecated*. The initial version of workflows with limited structure and automation capabilities. \n- `v2` – Linear workflows. Supports sequential task execution with basic automation triggers. \n- `v3` – Advanced workflows. Adds support for branching logic (conditions), parallel paths, and enhanced automation features such as dynamic triggers and flow control.\n", + "description": "Version of the workflow schema.\n\n- `v1` – *Deprecated*. The initial version of workflows with limited structure and automation capabilities.\n- `v2` – Linear workflows. Supports sequential task execution with basic automation triggers.\n- `v3` – Advanced workflows. Adds support for branching logic (conditions), parallel paths, and enhanced automation features such as dynamic triggers and flow control.\n", "example": 2 }, "Trigger": { @@ -2267,14 +2142,15 @@ "properties": { "id": { "type": "string", - "description": "The id of the entity / workflow / task, based on the origin of the schedule" + "description": "The id of the entity / workflow / task, based on the origin of the schedule. For all_preceding_tasks_completed, use the sentinel value \"all_preceding_tasks_completed\"." }, "origin": { "type": "string", "enum": [ "flow_started", "task_completed", - "trigger_entity_attribute" + "trigger_entity_attribute", + "all_preceding_tasks_completed" ] }, "schema": { @@ -2339,7 +2215,7 @@ "description": "Maximum number of iterations for the loop branch", "default": 3, "minimum": 1, - "maximum": 10 + "maximum": 100 } }, "required": [ @@ -2404,6 +2280,10 @@ "installer": { "$ref": "#/components/schemas/ECPDetails" }, + "partner": { + "$ref": "#/components/schemas/PartnerDetails", + "description": "Partner-specific task details shown to partner org users viewing shared resources" + }, "taxonomies": { "type": "array", "items": { @@ -2476,9 +2356,14 @@ "example": "{{entity.owner}}" }, "value": { - "type": "string", - "description": "The resolved value after variable evaluation (populated during execution)", - "example": "user_12345" + "type": "array", + "items": { + "type": "string" + }, + "description": "The resolved values after variable evaluation (populated during execution)", + "example": [ + "user_12345" + ] } }, "required": [ @@ -2504,7 +2389,8 @@ "type": "string" }, "to_id": { - "type": "string" + "type": "string", + "nullable": true }, "condition_id": { "type": "string" @@ -2516,8 +2402,7 @@ }, "required": [ "id", - "from_id", - "to_id" + "from_id" ] }, "Condition": { @@ -2541,6 +2426,7 @@ }, "statements": { "type": "array", + "nullable": true, "items": { "$ref": "#/components/schemas/Statement" } @@ -2570,6 +2456,14 @@ "items": { "type": "string" } + }, + "value_type": { + "type": "string", + "enum": [ + "static", + "relative_date" + ], + "description": "How to interpret values. \"static\" (default) means literal values. \"relative_date\" means values[0] is a dynamic date token like \"today\"." } }, "required": [ @@ -2646,7 +2540,26 @@ }, "attribute_sub_field": { "type": "string", - "description": "For complex attribute types, specifies which sub-field to extract (e.g., 'address', 'name', 'email_type')" + "description": "For complex attribute types, specifies which sub-field to extract (e.g., \"address\", \"name\", \"email_type\")" + }, + "date_offset": { + "type": "object", + "description": "Offset to apply to the source date value before comparison (e.g., +18 years for age check, +30 days for expiry)", + "properties": { + "amount": { + "type": "integer", + "description": "Number of units to offset" + }, + "unit": { + "type": "string", + "enum": [ + "days", + "months", + "years" + ], + "description": "Unit of the offset" + } + } } } }, @@ -2684,7 +2597,9 @@ "enum": [ "WORKFLOW_STARTED", "TASK_FINISHED", - "PHASE_FINISHED" + "PHASE_FINISHED", + "A_PRECEDING_TASK_COMPLETED", + "ALL_PRECEDING_TASKS_COMPLETED" ] }, "task_id": { @@ -2899,6 +2814,10 @@ "installer": { "$ref": "#/components/schemas/ECPDetails" }, + "partner": { + "$ref": "#/components/schemas/PartnerDetails", + "description": "Partner-specific task details shown to partner org users viewing shared resources" + }, "taxonomies": { "type": "array", "items": { @@ -3021,6 +2940,21 @@ } } }, + "PartnerDetails": { + "type": "object", + "description": "Details regarding partner for the workflow step", + "properties": { + "enabled": { + "type": "boolean" + }, + "label": { + "type": "string" + }, + "description": { + "type": "string" + } + } + }, "StepDescription": { "type": "object", "description": "Longer information regarding Task", @@ -3088,14 +3022,9 @@ "ClosingReason": { "type": "object", "description": "One Closing reason for a workflow", - "required": [ - "title", - "status" - ], "properties": { "id": { - "type": "string", - "readOnly": true + "type": "string" }, "title": { "type": "string" @@ -3353,64 +3282,6 @@ "type", "condition" ] - }, - "FlowTemplateExport": { - "allOf": [ - { - "$ref": "#/components/schemas/FlowTemplate" - }, - { - "type": "object", - "properties": { - "_resolved_automations": { - "type": "object", - "description": "Map of automation_id to full AutomationFlow object. Null values indicate automations that could not be resolved.", - "additionalProperties": { - "type": "object" - } - } - } - } - ] - }, - "FlowTemplateImportResult": { - "type": "object", - "properties": { - "flow": { - "$ref": "#/components/schemas/FlowTemplate" - }, - "_id_mappings": { - "type": "object", - "description": "Maps old IDs to new IDs for cross-referencing by callers (e.g. blueprint service)", - "properties": { - "flow_id": { - "type": "object", - "properties": { - "old": { - "type": "string" - }, - "new": { - "type": "string" - } - } - }, - "task_ids": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "Map of old_task_id to new_task_id" - }, - "automation_ids": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "Map of old_automation_id to new_automation_id" - } - } - } - } } } } diff --git a/packages/cli/docs/data-management.md b/packages/cli/docs/data-management.md index 0a8eaf70..5a82ea8c 100644 --- a/packages/cli/docs/data-management.md +++ b/packages/cli/docs/data-management.md @@ -1,6 +1,5 @@ # Data Management API -- **Base URL:** `https://data-management.sls.epilot.io` - **API Docs:** [https://docs.epilot.io/api/data-management](https://docs.epilot.io/api/data-management) ## Quick Start @@ -80,7 +79,8 @@ epilot data-management queryEntities \ "type": "entity_workflows_only_in_closed_or_cancelled_status", "related_entity_schemas": ["string"], "lookback_period_days": 0, - "message_type": ["SENT"] + "message_type": ["SENT"], + "workflow_status": ["CLOSED"] } ], "from": 0, @@ -449,7 +449,8 @@ epilot data-management getConfig -p config_id=123e4567-e89b-12d3-a456-4266141740 "type": "entity_workflows_only_in_closed_or_cancelled_status", "related_entity_schemas": ["string"], "lookback_period_days": 0, - "message_type": ["SENT"] + "message_type": ["SENT"], + "workflow_status": ["CLOSED"] } ] }, @@ -571,7 +572,8 @@ epilot data-management upsertConfig \ "type": "entity_workflows_only_in_closed_or_cancelled_status", "related_entity_schemas": ["string"], "lookback_period_days": 0, - "message_type": ["SENT"] + "message_type": ["SENT"], + "workflow_status": ["CLOSED"] } ] }, @@ -620,7 +622,8 @@ epilot data-management upsertConfig -p entity_schema=example --jsonata 'id' "type": "entity_workflows_only_in_closed_or_cancelled_status", "related_entity_schemas": ["string"], "lookback_period_days": 0, - "message_type": ["SENT"] + "message_type": ["SENT"], + "workflow_status": ["CLOSED"] } ] }, @@ -690,7 +693,8 @@ epilot data-management listConfigs --jsonata 'configs' "type": "entity_workflows_only_in_closed_or_cancelled_status", "related_entity_schemas": ["string"], "lookback_period_days": 0, - "message_type": ["SENT"] + "message_type": ["SENT"], + "workflow_status": ["CLOSED"] } ] }, diff --git a/packages/cli/docs/entity.md b/packages/cli/docs/entity.md index 6c47b45f..124c628b 100644 --- a/packages/cli/docs/entity.md +++ b/packages/cli/docs/entity.md @@ -38,12 +38,14 @@ epilot entity listSchemas **Schemas** - [`listSchemas`](#listschemas) — Get the latest versions of all schemas - [`listSchemasV2`](#listschemasv2) — Get the latest versions of all schemas. -- [`getSchema`](#getschema) — By default gets the latest version of the Schema and to get the specific version of schema pass the id. -- [`putSchema`](#putschema) — Create or update a schema with a new version +- [`getSchema`](#getschema) — By default gets the current version of the Schema (frozen version if frozen, otherwise latest). +- [`putSchema`](#putschema) — Create or update a schema with a new version. - [`deleteSchema`](#deleteschema) — Delete a schema, or a specific version of a schema - [`getJsonSchema`](#getjsonschema) — Get formal JSON schema definition draft 2020-12 for the given epilot schema - [`getSchemaExample`](#getschemaexample) — Get a full example entity for the given schema - [`getSchemaVersions`](#getschemaversions) — Get all versions of this schema ordered by the latest versions including drafts. +- [`freezeSchema`](#freezeschema) — Freeze a schema at its current version, or at a specific version. +- [`unfreezeSchema`](#unfreezeschema) — Unfreeze a schema. Promotes the latest version to the current version for all users. - [`listAvailableCapabilities`](#listavailablecapabilities) — List available capabilities for schema - [`listSchemaBlueprints`](#listschemablueprints) — List canonical versions of all available schemas - [`listTaxonomyClassificationsForSchema`](#listtaxonomyclassificationsforschema) — List taxonomy classifications for a given schema @@ -142,6 +144,7 @@ Get the latest versions of all schemas | Name | In | Type | Required | Description | | ---- | -- | ---- | -------- | ----------- | | `unpublished` | query | boolean | No | Return unpublished draft schemas | +| `latest` | query | boolean | No | When true, return the latest version instead of the frozen version for frozen schemas. | | `exclude` | query | string[] | No | List of schema slugs to exclude from the results. Accepts a comma-separated list of slugs to exclude from the results. | | `include` | query | string[] | No | List of schema slugs to include in the results. When provided, only these schemas are returned. Accepts a comma-separated list of slugs. | @@ -169,6 +172,8 @@ epilot entity listSchemas --jsonata 'results[0]' "updated_at": "string", "comment": "string", "source": {}, + "frozen": true, + "latest": true, "_summary": true, "slug": "contact", "version": 1, @@ -214,6 +219,7 @@ Get the latest versions of all schemas. | ---- | -- | ---- | -------- | ----------- | | `full` | query | boolean | No | Return full schemas including all attributes and capabilities | | `unpublished` | query | boolean | No | Return unpublished draft schemas | +| `latest` | query | boolean | No | When true, return the latest version instead of the frozen version for frozen schemas. | | `exclude` | query | string[] | No | List of schema slugs to exclude from the results. Accepts a comma-separated list of slugs to exclude from the results. | | `include` | query | string[] | No | List of schema slugs to include in the results. When provided, only these schemas are returned. Accepts a comma-separated list of slugs. | @@ -241,6 +247,8 @@ epilot entity listSchemasV2 --jsonata 'results[0]' "updated_at": "string", "comment": "string", "source": {}, + "frozen": true, + "latest": true, "_summary": true, "slug": "contact", "version": 1, @@ -276,7 +284,7 @@ epilot entity listSchemasV2 --jsonata 'results[0]' ### `getSchema` -By default gets the latest version of the Schema and to get the specific version of schema pass the id. +By default gets the current version of the Schema (frozen version if frozen, otherwise latest). `GET /v1/entity/schemas/{slug}` @@ -286,6 +294,7 @@ By default gets the latest version of the Schema and to get the specific version | ---- | -- | ---- | -------- | ----------- | | `slug` | path | string | Yes | Entity Type | | `id` | query | string (uuid) | No | | +| `latest` | query | boolean | No | When true, return the latest version instead of the frozen version for frozen schemas. | **Sample Call** @@ -319,6 +328,8 @@ epilot entity getSchema -p slug=contact --jsonata '$' "id": "string", "type": "string" }, + "frozen": true, + "latest": true, "_summary": true, "slug": "contact", "version": 1, @@ -445,7 +456,7 @@ epilot entity getSchema -p slug=contact --jsonata '$' ### `putSchema` -Create or update a schema with a new version +Create or update a schema with a new version. `PUT /v1/entity/schemas/{slug}` @@ -621,6 +632,8 @@ epilot entity putSchema -p slug=contact --jsonata '$' "id": "string", "type": "string" }, + "frozen": true, + "latest": true, "_summary": true, "slug": "contact", "version": 1, @@ -1015,6 +1028,8 @@ epilot entity getSchemaVersions -p slug=contact --jsonata 'versions' "updated_at": "string", "comment": "string", "source": {}, + "frozen": true, + "latest": true, "_summary": true, "slug": "contact", "version": 1, @@ -1048,6 +1063,8 @@ epilot entity getSchemaVersions -p slug=contact --jsonata 'versions' "updated_at": "string", "comment": "string", "source": {}, + "frozen": true, + "latest": true, "_summary": true, "slug": "contact", "version": 1, @@ -1075,7 +1092,357 @@ epilot entity getSchemaVersions -p slug=contact --jsonata 'versions' } ], "versions_more": true, - "drafts_more": true + "drafts_more": true, + "frozen_version": "3fa85f64-5717-4562-b3fc-2c963f66afa6" +} +``` + + + +--- + +### `freezeSchema` + +Freeze a schema at its current version, or at a specific version. + +`POST /v1/entity/schemas/{slug}/freeze` + +**Parameters** + +| Name | In | Type | Required | Description | +| ---- | -- | ---- | -------- | ----------- | +| `slug` | path | string | Yes | Entity Type | + +**Request Body** + +**Sample Call** + +```bash +epilot entity freezeSchema \ + -p slug=contact \ + -d '{"version_id":"3fa85f64-5717-4562-b3fc-2c963f66afa6"}' +``` + +Using positional args for path parameters: + +```bash +epilot entity freezeSchema contact +``` + +Using stdin pipe: + +```bash +cat body.json | epilot entity freezeSchema -p slug=contact +``` + +With JSONata filter: + +```bash +epilot entity freezeSchema -p slug=contact --jsonata '$' +``` + +
+Sample Response + +```json +{ + "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6", + "created_at": "string", + "updated_at": "string", + "comment": "string", + "source": { + "id": "string", + "type": "string" + }, + "frozen": true, + "latest": true, + "_summary": true, + "slug": "contact", + "version": 1, + "blueprint": "3fa85f64-5717-4562-b3fc-2c963f66afa6", + "feature_flag": "FF_MY_FEATURE_FLAG", + "enable_setting": ["360_features"], + "name": "Contact", + "plural": "Contacts", + "description": "Example description", + "docs_url": "https://docs.epilot.io/docs/pricing/entities", + "category": "customer_relations", + "published": false, + "draft": false, + "icon": "person", + "title_template": "{{first_name}} {{last_name}}", + "ui_config": { + "table_view": { + "view_type": "default", + "row_actions": ["string"], + "bulk_actions": ["string"], + "navbar_actions": [], + "enable_thumbnails": false + }, + "create_view": { + "view_type": "default", + "search_params": {} + }, + "edit_view": { + "view_type": "default", + "search_params": {}, + "summary_attributes": ["email"] + }, + "single_view": { + "view_type": "default", + "search_params": {}, + "summary_attributes": ["email"] + }, + "list_item": { + "summary_attributes": [], + "quick_actions": [], + "ui_config": {} + }, + "sharing": { + "show_sharing_button": true + } + }, + "capabilities": [ + { + "id": "d5839b94-ba20-4225-a78e-76951d352bd6", + "name": "customer_messaging", + "title": "Messaging", + "attributes": [], + "_purpose": ["taxonomy-slug:classification-slug"], + "_manifest": ["123e4567-e89b-12d3-a456-426614174000"], + "app_id": "123e4567-e89b-12d3-a456-426614174000", + "ui_config": {}, + "ui_hooks": [], + "feature_flag": "FF_MY_FEATURE_FLAG", + "settings_flag": [], + "schemas": [] + } + ], + "group_settings": [ + { + "id": "e18a532b-ae79-4d86-a6a5-e5dbfb579d14", + "label": "Contact Details", + "expanded": true, + "order": 1 + }, + { + "id": "e9a1ae28-27ba-4fa0-a79c-e279cc5c4a6e", + "label": "Address Details", + "expanded": false, + "order": 2, + "info_tooltip_title": {} + } + ], + "layout_settings": { + "grid_gap": "string", + "grid_template_columns": "string" + }, + "dialog_config": {}, + "attributes": [ + { + "name": "email", + "type": "email", + "label": "Email", + "required": true + }, + { + "name": "first_name", + "type": "string", + "label": "First Name" + } + ], + "_purpose": ["string"], + "explicit_search_mappings": { + "image": { + "type": "keyword", + "index": false + } + }, + "group_headlines": [ + { + "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6", + "name": "string", + "label": "string", + "layout": "string", + "group": "string", + "order": 0, + "type": "headline", + "enable_divider": false, + "divider": "top_divider", + "_purpose": ["taxonomy-slug:classification-slug"], + "_manifest": ["123e4567-e89b-12d3-a456-426614174000"] + } + ] +} +``` + +
+ +--- + +### `unfreezeSchema` + +Unfreeze a schema. Promotes the latest version to the current version for all users. + +`POST /v1/entity/schemas/{slug}/unfreeze` + +**Parameters** + +| Name | In | Type | Required | Description | +| ---- | -- | ---- | -------- | ----------- | +| `slug` | path | string | Yes | Entity Type | + +**Sample Call** + +```bash +epilot entity unfreezeSchema \ + -p slug=contact +``` + +Using positional args for path parameters: + +```bash +epilot entity unfreezeSchema contact +``` + +With JSONata filter: + +```bash +epilot entity unfreezeSchema -p slug=contact --jsonata '$' +``` + +
+Sample Response + +```json +{ + "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6", + "created_at": "string", + "updated_at": "string", + "comment": "string", + "source": { + "id": "string", + "type": "string" + }, + "frozen": true, + "latest": true, + "_summary": true, + "slug": "contact", + "version": 1, + "blueprint": "3fa85f64-5717-4562-b3fc-2c963f66afa6", + "feature_flag": "FF_MY_FEATURE_FLAG", + "enable_setting": ["360_features"], + "name": "Contact", + "plural": "Contacts", + "description": "Example description", + "docs_url": "https://docs.epilot.io/docs/pricing/entities", + "category": "customer_relations", + "published": false, + "draft": false, + "icon": "person", + "title_template": "{{first_name}} {{last_name}}", + "ui_config": { + "table_view": { + "view_type": "default", + "row_actions": ["string"], + "bulk_actions": ["string"], + "navbar_actions": [], + "enable_thumbnails": false + }, + "create_view": { + "view_type": "default", + "search_params": {} + }, + "edit_view": { + "view_type": "default", + "search_params": {}, + "summary_attributes": ["email"] + }, + "single_view": { + "view_type": "default", + "search_params": {}, + "summary_attributes": ["email"] + }, + "list_item": { + "summary_attributes": [], + "quick_actions": [], + "ui_config": {} + }, + "sharing": { + "show_sharing_button": true + } + }, + "capabilities": [ + { + "id": "d5839b94-ba20-4225-a78e-76951d352bd6", + "name": "customer_messaging", + "title": "Messaging", + "attributes": [], + "_purpose": ["taxonomy-slug:classification-slug"], + "_manifest": ["123e4567-e89b-12d3-a456-426614174000"], + "app_id": "123e4567-e89b-12d3-a456-426614174000", + "ui_config": {}, + "ui_hooks": [], + "feature_flag": "FF_MY_FEATURE_FLAG", + "settings_flag": [], + "schemas": [] + } + ], + "group_settings": [ + { + "id": "e18a532b-ae79-4d86-a6a5-e5dbfb579d14", + "label": "Contact Details", + "expanded": true, + "order": 1 + }, + { + "id": "e9a1ae28-27ba-4fa0-a79c-e279cc5c4a6e", + "label": "Address Details", + "expanded": false, + "order": 2, + "info_tooltip_title": {} + } + ], + "layout_settings": { + "grid_gap": "string", + "grid_template_columns": "string" + }, + "dialog_config": {}, + "attributes": [ + { + "name": "email", + "type": "email", + "label": "Email", + "required": true + }, + { + "name": "first_name", + "type": "string", + "label": "First Name" + } + ], + "_purpose": ["string"], + "explicit_search_mappings": { + "image": { + "type": "keyword", + "index": false + } + }, + "group_headlines": [ + { + "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6", + "name": "string", + "label": "string", + "layout": "string", + "group": "string", + "order": 0, + "type": "headline", + "enable_divider": false, + "divider": "top_divider", + "_purpose": ["taxonomy-slug:classification-slug"], + "_manifest": ["123e4567-e89b-12d3-a456-426614174000"] + } + ] } ``` @@ -1172,6 +1539,8 @@ epilot entity listSchemaBlueprints --jsonata 'results[0]' "updated_at": "string", "comment": "string", "source": {}, + "frozen": true, + "latest": true, "_summary": true, "slug": "contact", "version": 1, @@ -4845,6 +5214,8 @@ List taxonomy classifications in an organization based on taxonomy slug | `query` | query | string | No | The label names to search for (lowercase insensitive) | | `archived` | query | boolean | No | Filter by archived status. Deprecated. Use `include_archived` instead. | | `include_archived` | query | "true" \| "false" \| "only" | No | | +| `exclude_types` | query | "relation" \| "schema" \| "system" \| "relation" \| "schema" \| "system"[] | No | Taxonomy type(s) to exclude from the results. Useful to filter out relation labels, schema labels, and system labels. + | **Request Body** diff --git a/packages/cli/docs/erp-integration.md b/packages/cli/docs/erp-integration.md index 41c0c629..b501c185 100644 --- a/packages/cli/docs/erp-integration.md +++ b/packages/cli/docs/erp-integration.md @@ -65,6 +65,9 @@ epilot erp-integration acknowledgeTracking - [`deleteIntegrationAppMapping`](#deleteintegrationappmapping) — Removes a mapping from an app/component to an integration. - [`getOutboundStatus`](#getoutboundstatus) — Get the status of all outbound use cases for a specific integration. - [`listSecureProxies`](#listsecureproxies) — Lists all secure_proxy use cases across all integrations for the authenticated organization. +- [`generateTypesPreview`](#generatetypespreview) — Analyses the JSONata mappings of all managed-call use cases in the integration and returns scaffolded type descriptors. +- [`generateTypes`](#generatetypes) — Generates a complete TypeScript npm package with typed interfaces for all managed-call use cases. This is a stateless op +- [`commitTypes`](#committypes) — Commits the generated types by locking use case configurations and updating version tracking. Should be called after the **monitoring** - [`queryInboundMonitoringEvents`](#queryinboundmonitoringevents) — Query inbound monitoring events for a specific integration. @@ -72,10 +75,17 @@ epilot erp-integration acknowledgeTracking - [`getMonitoringTimeSeries`](#getmonitoringtimeseries) — Get time-series aggregated event counts for monitoring charts. - [`queryAccessLogs`](#queryaccesslogs) — Query API access logs for a specific integration's organization. - [`queryOutboundMonitoringEvents`](#queryoutboundmonitoringevents) — Query outbound monitoring events for a specific integration. +- [`queryMonitoringEventsV2`](#querymonitoringeventsv2) — Query monitoring events from the unified erp_monitoring_v2 table. +- [`getMonitoringStatsV2`](#getmonitoringstatsv2) — Get aggregated statistics from the unified erp_monitoring_v2 table. +- [`getMonitoringTimeSeriesV2`](#getmonitoringtimeseriesv2) — Get time-series aggregated event counts from the unified erp_monitoring_v2 table. +- [`getAssociatedMonitoringEvents`](#getassociatedmonitoringevents) — Returns all monitoring events sharing the same event_id, ordered chronologically. **proxy** - [`secureProxy`](#secureproxy) — Routes an HTTP request through a VPC with either static IP egress or VPN secure link access. +**managed-call** +- [`managedCallExecute`](#managedcallexecute) — Execute a managed call operation synchronously. The slug in the path acts as the RPC method name. + ### `acknowledgeTracking` Acknowledges an ERP tracking record by removing it from the tracking table, requires public authentication @@ -435,7 +445,38 @@ epilot erp-integration listIntegrations --jsonata 'integrations' "enabled": false, "freshnessThresholdMinutes": 1 } - } + }, + "integration_type": "erp", + "connector_config": { + "base_url": "string", + "auth": { + "type": "oauth2_client_credentials", + "token_url": "string", + "client_id": "string", + "client_secret": "string", + "scope": "string", + "audience": "string", + "resource": "string", + "body_params": {}, + "headers": {}, + "query_params": {}, + "api_key_header": "string", + "api_key": "string", + "token": "string" + }, + "types_versions": [ + { + "version": "string", + "package_name": "string", + "generated_at": "1970-01-01T00:00:00.000Z", + "generated_by": "string", + "status": "active" + } + ], + "latest_types_version": "string", + "latest_types_package_name": "string" + }, + "protected": true } ] } @@ -483,7 +524,38 @@ epilot erp-integration createIntegration \ "enabled": false, "freshnessThresholdMinutes": 1 } - } + }, + "integration_type": "erp", + "connector_config": { + "base_url": "string", + "auth": { + "type": "oauth2_client_credentials", + "token_url": "string", + "client_id": "string", + "client_secret": "string", + "scope": "string", + "audience": "string", + "resource": "string", + "body_params": {}, + "headers": {}, + "query_params": {}, + "api_key_header": "string", + "api_key": "string", + "token": "string" + }, + "types_versions": [ + { + "version": "string", + "package_name": "string", + "generated_at": "1970-01-01T00:00:00.000Z", + "generated_by": "string", + "status": "active" + } + ], + "latest_types_version": "string", + "latest_types_package_name": "string" + }, + "protected": true }' ``` @@ -527,7 +599,38 @@ epilot erp-integration createIntegration --jsonata '$' "enabled": false, "freshnessThresholdMinutes": 1 } - } + }, + "integration_type": "erp", + "connector_config": { + "base_url": "string", + "auth": { + "type": "oauth2_client_credentials", + "token_url": "string", + "client_id": "string", + "client_secret": "string", + "scope": "string", + "audience": "string", + "resource": "string", + "body_params": {}, + "headers": {}, + "query_params": {}, + "api_key_header": "string", + "api_key": "string", + "token": "string" + }, + "types_versions": [ + { + "version": "string", + "package_name": "string", + "generated_at": "1970-01-01T00:00:00.000Z", + "generated_by": "string", + "status": "active" + } + ], + "latest_types_version": "string", + "latest_types_package_name": "string" + }, + "protected": true } ``` @@ -594,7 +697,38 @@ epilot erp-integration getIntegration -p integrationId=123e4567-e89b-12d3-a456-4 "enabled": false, "freshnessThresholdMinutes": 1 } - } + }, + "integration_type": "erp", + "connector_config": { + "base_url": "string", + "auth": { + "type": "oauth2_client_credentials", + "token_url": "string", + "client_id": "string", + "client_secret": "string", + "scope": "string", + "audience": "string", + "resource": "string", + "body_params": {}, + "headers": {}, + "query_params": {}, + "api_key_header": "string", + "api_key": "string", + "token": "string" + }, + "types_versions": [ + { + "version": "string", + "package_name": "string", + "generated_at": "1970-01-01T00:00:00.000Z", + "generated_by": "string", + "status": "active" + } + ], + "latest_types_version": "string", + "latest_types_package_name": "string" + }, + "protected": true } ``` @@ -670,7 +804,38 @@ epilot erp-integration updateIntegration -p integrationId=123e4567-e89b-12d3-a45 "enabled": false, "freshnessThresholdMinutes": 1 } - } + }, + "integration_type": "erp", + "connector_config": { + "base_url": "string", + "auth": { + "type": "oauth2_client_credentials", + "token_url": "string", + "client_id": "string", + "client_secret": "string", + "scope": "string", + "audience": "string", + "resource": "string", + "body_params": {}, + "headers": {}, + "query_params": {}, + "api_key_header": "string", + "api_key": "string", + "token": "string" + }, + "types_versions": [ + { + "version": "string", + "package_name": "string", + "generated_at": "1970-01-01T00:00:00.000Z", + "generated_by": "string", + "status": "active" + } + ], + "latest_types_version": "string", + "latest_types_package_name": "string" + }, + "protected": true } ``` @@ -1307,6 +1472,9 @@ epilot erp-integration listIntegrationsV2 --jsonata 'integrations' "app_ids": ["string"], "environment_config": [], "settings": {}, + "integration_type": "erp", + "connector_config": {}, + "protected": true, "use_cases": [] } ] @@ -1356,6 +1524,31 @@ epilot erp-integration createIntegrationV2 \ "freshnessThresholdMinutes": 1 } }, + "integration_type": "erp", + "connector_config": { + "base_url": "string", + "auth": { + "type": "oauth2_client_credentials", + "token_url": "string", + "client_id": "string", + "client_secret": "string", + "scope": "string", + "audience": "string", + "resource": "string", + "body_params": {}, + "headers": {}, + "query_params": {}, + "api_key_header": "string", + "api_key": "string", + "token": "string" + }, + "types_versions": [ + {} + ], + "latest_types_version": "string", + "latest_types_package_name": "string" + }, + "protected": true, "use_cases": [ { "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6", @@ -1411,6 +1604,31 @@ epilot erp-integration createIntegrationV2 --jsonata '$' "freshnessThresholdMinutes": 1 } }, + "integration_type": "erp", + "connector_config": { + "base_url": "string", + "auth": { + "type": "oauth2_client_credentials", + "token_url": "string", + "client_id": "string", + "client_secret": "string", + "scope": "string", + "audience": "string", + "resource": "string", + "body_params": {}, + "headers": {}, + "query_params": {}, + "api_key_header": "string", + "api_key": "string", + "token": "string" + }, + "types_versions": [ + {} + ], + "latest_types_version": "string", + "latest_types_package_name": "string" + }, + "protected": true, "use_cases": [ { "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6", @@ -1492,6 +1710,31 @@ epilot erp-integration getIntegrationV2 -p integrationId=123e4567-e89b-12d3-a456 "freshnessThresholdMinutes": 1 } }, + "integration_type": "erp", + "connector_config": { + "base_url": "string", + "auth": { + "type": "oauth2_client_credentials", + "token_url": "string", + "client_id": "string", + "client_secret": "string", + "scope": "string", + "audience": "string", + "resource": "string", + "body_params": {}, + "headers": {}, + "query_params": {}, + "api_key_header": "string", + "api_key": "string", + "token": "string" + }, + "types_versions": [ + {} + ], + "latest_types_version": "string", + "latest_types_package_name": "string" + }, + "protected": true, "use_cases": [ { "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6", @@ -1560,6 +1803,31 @@ epilot erp-integration updateIntegrationV2 \ "freshnessThresholdMinutes": 1 } }, + "integration_type": "erp", + "connector_config": { + "base_url": "string", + "auth": { + "type": "oauth2_client_credentials", + "token_url": "string", + "client_id": "string", + "client_secret": "string", + "scope": "string", + "audience": "string", + "resource": "string", + "body_params": {}, + "headers": {}, + "query_params": {}, + "api_key_header": "string", + "api_key": "string", + "token": "string" + }, + "types_versions": [ + {} + ], + "latest_types_version": "string", + "latest_types_package_name": "string" + }, + "protected": true, "use_cases": [ { "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6", @@ -1621,6 +1889,31 @@ epilot erp-integration updateIntegrationV2 -p integrationId=123e4567-e89b-12d3-a "freshnessThresholdMinutes": 1 } }, + "integration_type": "erp", + "connector_config": { + "base_url": "string", + "auth": { + "type": "oauth2_client_credentials", + "token_url": "string", + "client_id": "string", + "client_secret": "string", + "scope": "string", + "audience": "string", + "resource": "string", + "body_params": {}, + "headers": {}, + "query_params": {}, + "api_key_header": "string", + "api_key": "string", + "token": "string" + }, + "types_versions": [ + {} + ], + "latest_types_version": "string", + "latest_types_package_name": "string" + }, + "protected": true, "use_cases": [ { "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6", @@ -2317,6 +2610,290 @@ epilot erp-integration queryOutboundMonitoringEvents -p integrationId=123e4567-e --- +### `queryMonitoringEventsV2` + +Query monitoring events from the unified erp_monitoring_v2 table. + +`POST /v2/integrations/{integrationId}/monitoring/events` + +**Parameters** + +| Name | In | Type | Required | Description | +| ---- | -- | ---- | -------- | ----------- | +| `integrationId` | path | string (uuid) | Yes | The integration ID | + +**Request Body** (required) + +**Sample Call** + +```bash +epilot erp-integration queryMonitoringEventsV2 \ + -p integrationId=123e4567-e89b-12d3-a456-426614174000 +``` + +With request body: + +```bash +epilot erp-integration queryMonitoringEventsV2 \ + -p integrationId=123e4567-e89b-12d3-a456-426614174000 \ + -d '{ + "use_case_id": "string", + "use_case_type": "inbound", + "level": "success", + "code": "string", + "event_id": "string", + "correlation_id": "string", + "from_date": "2025-01-01T00:00:00Z", + "to_date": "2025-01-31T23:59:59Z", + "limit": 50, + "cursor": { + "created_at": "1970-01-01T00:00:00.000Z", + "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6" + } +}' +``` + +Using positional args for path parameters: + +```bash +epilot erp-integration queryMonitoringEventsV2 123e4567-e89b-12d3-a456-426614174000 +``` + +Using stdin pipe: + +```bash +cat body.json | epilot erp-integration queryMonitoringEventsV2 -p integrationId=123e4567-e89b-12d3-a456-426614174000 +``` + +With JSONata filter: + +```bash +epilot erp-integration queryMonitoringEventsV2 -p integrationId=123e4567-e89b-12d3-a456-426614174000 --jsonata 'data' +``` + +
+Sample Response + +```json +{ + "data": [ + { + "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6", + "org_id": "string", + "integration_id": "string", + "event_id": "string", + "correlation_id": "string", + "use_case_id": "string", + "use_case_type": "inbound", + "level": "success", + "code": "string", + "message": "string", + "detail": {}, + "created_at": "1970-01-01T00:00:00.000Z" + } + ], + "next_cursor": { + "created_at": "1970-01-01T00:00:00.000Z", + "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6" + }, + "has_more": true +} +``` + +
+ +--- + +### `getMonitoringStatsV2` + +Get aggregated statistics from the unified erp_monitoring_v2 table. + +`POST /v2/integrations/{integrationId}/monitoring/stats` + +**Parameters** + +| Name | In | Type | Required | Description | +| ---- | -- | ---- | -------- | ----------- | +| `integrationId` | path | string (uuid) | Yes | The integration ID | + +**Request Body** (required) + +**Sample Call** + +```bash +epilot erp-integration getMonitoringStatsV2 \ + -p integrationId=123e4567-e89b-12d3-a456-426614174000 \ + -d '{"from_date":"2025-01-01T00:00:00Z","to_date":"2025-01-31T23:59:59Z","use_case_type":"inbound","group_by":"use_case_id"}' +``` + +Using positional args for path parameters: + +```bash +epilot erp-integration getMonitoringStatsV2 123e4567-e89b-12d3-a456-426614174000 +``` + +Using stdin pipe: + +```bash +cat body.json | epilot erp-integration getMonitoringStatsV2 -p integrationId=123e4567-e89b-12d3-a456-426614174000 +``` + +With JSONata filter: + +```bash +epilot erp-integration getMonitoringStatsV2 -p integrationId=123e4567-e89b-12d3-a456-426614174000 --jsonata 'total_events' +``` + +
+Sample Response + +```json +{ + "total_events": 0, + "success_count": 0, + "error_count": 0, + "warning_count": 0, + "skipped_count": 0, + "ack_timeout_count": 0, + "success_rate": 0, + "last_error_at": "1970-01-01T00:00:00.000Z", + "breakdown": [ + {} + ] +} +``` + +
+ +--- + +### `getMonitoringTimeSeriesV2` + +Get time-series aggregated event counts from the unified erp_monitoring_v2 table. + +`POST /v2/integrations/{integrationId}/monitoring/time-series` + +**Parameters** + +| Name | In | Type | Required | Description | +| ---- | -- | ---- | -------- | ----------- | +| `integrationId` | path | string (uuid) | Yes | The integration ID | + +**Request Body** (required) + +**Sample Call** + +```bash +epilot erp-integration getMonitoringTimeSeriesV2 \ + -p integrationId=123e4567-e89b-12d3-a456-426614174000 \ + -d '{"from_date":"2025-01-01T00:00:00Z","to_date":"2025-01-31T23:59:59Z","interval":"5m","use_case_type":"inbound"}' +``` + +Using positional args for path parameters: + +```bash +epilot erp-integration getMonitoringTimeSeriesV2 123e4567-e89b-12d3-a456-426614174000 +``` + +Using stdin pipe: + +```bash +cat body.json | epilot erp-integration getMonitoringTimeSeriesV2 -p integrationId=123e4567-e89b-12d3-a456-426614174000 +``` + +With JSONata filter: + +```bash +epilot erp-integration getMonitoringTimeSeriesV2 -p integrationId=123e4567-e89b-12d3-a456-426614174000 --jsonata 'interval' +``` + +
+Sample Response + +```json +{ + "interval": "5m", + "from_date": "1970-01-01T00:00:00.000Z", + "to_date": "1970-01-01T00:00:00.000Z", + "buckets": [ + { + "timestamp": "1970-01-01T00:00:00.000Z", + "success_count": 0, + "error_count": 0, + "warning_count": 0, + "skipped_count": 0, + "total_count": 0 + } + ] +} +``` + +
+ +--- + +### `getAssociatedMonitoringEvents` + +Returns all monitoring events sharing the same event_id, ordered chronologically. + +`GET /v2/integrations/{integrationId}/monitoring/events/{eventId}/associated` + +**Parameters** + +| Name | In | Type | Required | Description | +| ---- | -- | ---- | -------- | ----------- | +| `integrationId` | path | string (uuid) | Yes | The integration ID | +| `eventId` | path | string | Yes | The event ID to get associated events for | + +**Sample Call** + +```bash +epilot erp-integration getAssociatedMonitoringEvents \ + -p integrationId=123e4567-e89b-12d3-a456-426614174000 \ + -p eventId=123e4567-e89b-12d3-a456-426614174000 +``` + +Using positional args for path parameters: + +```bash +epilot erp-integration getAssociatedMonitoringEvents 123e4567-e89b-12d3-a456-426614174000 123e4567-e89b-12d3-a456-426614174000 +``` + +With JSONata filter: + +```bash +epilot erp-integration getAssociatedMonitoringEvents -p integrationId=123e4567-e89b-12d3-a456-426614174000 -p eventId=123e4567-e89b-12d3-a456-426614174000 --jsonata 'monitoring_events' +``` + +
+Sample Response + +```json +{ + "monitoring_events": [ + { + "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6", + "org_id": "string", + "integration_id": "string", + "event_id": "string", + "correlation_id": "string", + "use_case_id": "string", + "use_case_type": "inbound", + "level": "success", + "code": "string", + "message": "string", + "detail": {}, + "created_at": "1970-01-01T00:00:00.000Z" + } + ], + "inbound_event": {} +} +``` + +
+ +--- + ### `listSecureProxies` Lists all secure_proxy use cases across all integrations for the authenticated organization. @@ -2348,6 +2925,7 @@ epilot erp-integration listSecureProxies --jsonata 'secure_proxies' "enabled": true, "vpc_mode": "static_ip", "allowed_domains": ["string"], + "allowed_ips": ["string"], "integration_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6", "integration_name": "string" } @@ -2415,3 +2993,211 @@ epilot erp-integration secureProxy --jsonata 'status_code'
--- + +### `managedCallExecute` + +Execute a managed call operation synchronously. The slug in the path acts as the RPC method name. + +`POST /v1/managed-call/{slug}/execute` + +**Parameters** + +| Name | In | Type | Required | Description | +| ---- | -- | ---- | -------- | ----------- | +| `slug` | path | string | Yes | Use case slug (acts as the RPC method name) | + +**Request Body** (required) + +**Sample Call** + +```bash +epilot erp-integration managedCallExecute \ + -p slug=contact \ + -d '{"integration_id":"3fa85f64-5717-4562-b3fc-2c963f66afa6","payload":{},"correlation_id":"string"}' +``` + +Using positional args for path parameters: + +```bash +epilot erp-integration managedCallExecute contact +``` + +Using stdin pipe: + +```bash +cat body.json | epilot erp-integration managedCallExecute -p slug=contact +``` + +With JSONata filter: + +```bash +epilot erp-integration managedCallExecute -p slug=contact --jsonata '$' +``` + +
+Sample Response + +```json +{} +``` + +
+ +--- + +### `generateTypesPreview` + +Analyses the JSONata mappings of all managed-call use cases in the integration and returns scaffolded type descriptors. + +`POST /v1/integrations/{integrationId}/generate-types-preview` + +**Parameters** + +| Name | In | Type | Required | Description | +| ---- | -- | ---- | -------- | ----------- | +| `integrationId` | path | string (uuid) | Yes | | + +**Sample Call** + +```bash +epilot erp-integration generateTypesPreview \ + -p integrationId=123e4567-e89b-12d3-a456-426614174000 +``` + +Using positional args for path parameters: + +```bash +epilot erp-integration generateTypesPreview 123e4567-e89b-12d3-a456-426614174000 +``` + +With JSONata filter: + +```bash +epilot erp-integration generateTypesPreview -p integrationId=123e4567-e89b-12d3-a456-426614174000 --jsonata 'integration_name' +``` + +--- + +### `generateTypes` + +Generates a complete TypeScript npm package with typed interfaces for all managed-call use cases. This is a stateless op + +`POST /v1/integrations/{integrationId}/generate-types` + +**Parameters** + +| Name | In | Type | Required | Description | +| ---- | -- | ---- | -------- | ----------- | +| `integrationId` | path | string (uuid) | Yes | | + +**Request Body** (required) + +**Sample Call** + +```bash +epilot erp-integration generateTypes \ + -p integrationId=123e4567-e89b-12d3-a456-426614174000 +``` + +With request body: + +```bash +epilot erp-integration generateTypes \ + -p integrationId=123e4567-e89b-12d3-a456-426614174000 \ + -d '{ + "package_name": "@epilot/hems-cleverpv", + "version": "1.0.0", + "description": "string", + "domain_package": "@epilot/hems", + "domain_map_name": "HemsUseCaseMap", + "annotations": {} +}' +``` + +Using positional args for path parameters: + +```bash +epilot erp-integration generateTypes 123e4567-e89b-12d3-a456-426614174000 +``` + +Using stdin pipe: + +```bash +cat body.json | epilot erp-integration generateTypes -p integrationId=123e4567-e89b-12d3-a456-426614174000 +``` + +With JSONata filter: + +```bash +epilot erp-integration generateTypes -p integrationId=123e4567-e89b-12d3-a456-426614174000 --jsonata 'package_name' +``` + +
+Sample Response + +```json +{ + "package_name": "string", + "version": "string", + "files": {}, + "warnings": ["string"] +} +``` + +
+ +--- + +### `commitTypes` + +Commits the generated types by locking use case configurations and updating version tracking. Should be called after the + +`POST /v1/integrations/{integrationId}/commit-types` + +**Parameters** + +| Name | In | Type | Required | Description | +| ---- | -- | ---- | -------- | ----------- | +| `integrationId` | path | string (uuid) | Yes | | + +**Request Body** (required) + +**Sample Call** + +```bash +epilot erp-integration commitTypes \ + -p integrationId=123e4567-e89b-12d3-a456-426614174000 \ + -d '{"package_name":"@epilot/hems-cleverpv","version":"1.0.0","annotations":{}}' +``` + +Using positional args for path parameters: + +```bash +epilot erp-integration commitTypes 123e4567-e89b-12d3-a456-426614174000 +``` + +Using stdin pipe: + +```bash +cat body.json | epilot erp-integration commitTypes -p integrationId=123e4567-e89b-12d3-a456-426614174000 +``` + +With JSONata filter: + +```bash +epilot erp-integration commitTypes -p integrationId=123e4567-e89b-12d3-a456-426614174000 --jsonata 'committed' +``` + +
+Sample Response + +```json +{ + "committed": true, + "warnings": ["string"] +} +``` + +
+ +--- diff --git a/packages/cli/docs/index.md b/packages/cli/docs/index.md index a0c0aa6e..4f1577e7 100644 --- a/packages/cli/docs/index.md +++ b/packages/cli/docs/index.md @@ -30,10 +30,10 @@ npx epilot auth login | Document API | `epilot document` | 3 | [document.md](./document.md) | | Messaging Settings API | `epilot email-settings` | 34 | [email-settings.md](./email-settings.md) | | Email template API | `epilot email-template` | 7 | [email-template.md](./email-template.md) | -| Entity API | `epilot entity` | 82 | [entity.md](./entity.md) | +| Entity API | `epilot entity` | 84 | [entity.md](./entity.md) | | Entity Mapping API | `epilot entity-mapping` | 12 | [entity-mapping.md](./entity-mapping.md) | | Environments API | `epilot environments` | 5 | [environments.md](./environments.md) | -| ERP Integration API | `epilot erp-integration` | 35 | [erp-integration.md](./erp-integration.md) | +| ERP Integration API | `epilot erp-integration` | 43 | [erp-integration.md](./erp-integration.md) | | Event Catalog API | `epilot event-catalog` | 7 | [event-catalog.md](./event-catalog.md) | | File API | `epilot file` | 27 | [file.md](./file.md) | | Iban API | `epilot iban` | 1 | [iban.md](./iban.md) | @@ -57,7 +57,7 @@ npx epilot auth login | Validation Rules API | `epilot validation-rules` | 7 | [validation-rules.md](./validation-rules.md) | | Webhooks | `epilot webhooks` | 14 | [webhooks.md](./webhooks.md) | | Workflows Executions | `epilot workflow` | 23 | [workflow.md](./workflow.md) | -| Workflows Definitions | `epilot workflow-definition` | 24 | [workflow-definition.md](./workflow-definition.md) | +| Workflows Definitions | `epilot workflow-definition` | 22 | [workflow-definition.md](./workflow-definition.md) | ## Global Flags diff --git a/packages/cli/docs/journey.md b/packages/cli/docs/journey.md index d0e04f13..5a3c64eb 100644 --- a/packages/cli/docs/journey.md +++ b/packages/cli/docs/journey.md @@ -236,7 +236,6 @@ epilot journey getJourney -p id=509cdffe-424f-457a-95c2-9708c304ce77 --jsonata ' "field2": "rule789" } }, - "_manifest": ["123e4567-e89b-12d3-a456-426614174000"], "createdBy": "string", "updatedBy": "string", "__lastModifiedAt": "string", @@ -480,7 +479,6 @@ epilot journey createJourney \ "field2": "rule789" } }, - "_manifest": ["123e4567-e89b-12d3-a456-426614174000"], "createdBy": "string", "updatedBy": "string", "__lastModifiedAt": "string" @@ -604,7 +602,6 @@ epilot journey createJourney --jsonata '$' "field2": "rule789" } }, - "_manifest": ["123e4567-e89b-12d3-a456-426614174000"], "createdBy": "string", "updatedBy": "string", "__lastModifiedAt": "string", @@ -740,7 +737,6 @@ epilot journey updateJourney \ "field2": "rule789" } }, - "_manifest": ["123e4567-e89b-12d3-a456-426614174000"], "createdBy": "string", "updatedBy": "string", "__lastModifiedAt": "string" @@ -853,7 +849,6 @@ epilot journey patchUpdateJourney --jsonata 'createdJourney' "block1": "rule123", "block2": {} }, - "_manifest": ["123e4567-e89b-12d3-a456-426614174000"], "createdBy": "string", "updatedBy": "string", "__lastModifiedAt": "string", diff --git a/packages/cli/docs/workflow-definition.md b/packages/cli/docs/workflow-definition.md index 8d6c0921..9703e169 100644 --- a/packages/cli/docs/workflow-definition.md +++ b/packages/cli/docs/workflow-definition.md @@ -53,8 +53,6 @@ epilot workflow-definition getMaxAllowedLimit - [`updateFlowTemplate`](#updateflowtemplate) — Update Flow Template. - [`deleteFlowTemplate`](#deleteflowtemplate) — Delete Flow Template. - [`duplicateFlowTemplate`](#duplicateflowtemplate) — Duplicate a Flow Template from an existing workflow. -- [`exportFlowTemplate`](#exportflowtemplate) — Export a Flow Template with all referenced automations resolved and bundled alongside. -- [`importFlowTemplate`](#importflowtemplate) — Import a Flow Template from an export payload. Creates all automations and the flow in the caller's organization. **Closing Reason** - [`getAllClosingReasons`](#getallclosingreasons) — Get all Closing Reasons defined in the organization by default all Active. @@ -221,6 +219,7 @@ epilot workflow-definition createDefinition \ "type": "STEP", "ecp": {}, "installer": {}, + "partner": {}, "taxonomies": ["string"] } ], @@ -302,6 +301,7 @@ epilot workflow-definition createDefinition --jsonata 'id' "type": "STEP", "ecp": {}, "installer": {}, + "partner": {}, "taxonomies": ["string"] } ], @@ -467,6 +467,7 @@ epilot workflow-definition createFlowTemplate \ "assigned_to": ["string"], "ecp": {}, "installer": {}, + "partner": {}, "taxonomies": ["string"], "phase_id": "string", "task_type": "MANUAL" @@ -482,6 +483,7 @@ epilot workflow-definition createFlowTemplate \ "assigned_to": ["string"], "ecp": {}, "installer": {}, + "partner": {}, "taxonomies": ["string"], "phase_id": "string", "task_type": "MANUAL", @@ -595,6 +597,7 @@ epilot workflow-definition createFlowTemplate --jsonata '$' "assigned_to": ["string"], "ecp": {}, "installer": {}, + "partner": {}, "taxonomies": ["string"], "phase_id": "string", "task_type": "MANUAL" @@ -610,6 +613,7 @@ epilot workflow-definition createFlowTemplate --jsonata '$' "assigned_to": ["string"], "ecp": {}, "installer": {}, + "partner": {}, "taxonomies": ["string"], "phase_id": "string", "task_type": "MANUAL", @@ -826,6 +830,7 @@ epilot workflow-definition getFlowTemplate -p flowId=7hj28akg --jsonata '$' "assigned_to": ["string"], "ecp": {}, "installer": {}, + "partner": {}, "taxonomies": ["string"], "phase_id": "string", "task_type": "MANUAL" @@ -841,6 +846,7 @@ epilot workflow-definition getFlowTemplate -p flowId=7hj28akg --jsonata '$' "assigned_to": ["string"], "ecp": {}, "installer": {}, + "partner": {}, "taxonomies": ["string"], "phase_id": "string", "task_type": "MANUAL", @@ -968,6 +974,7 @@ epilot workflow-definition updateFlowTemplate \ "assigned_to": ["string"], "ecp": {}, "installer": {}, + "partner": {}, "taxonomies": ["string"], "phase_id": "string", "task_type": "MANUAL" @@ -983,6 +990,7 @@ epilot workflow-definition updateFlowTemplate \ "assigned_to": ["string"], "ecp": {}, "installer": {}, + "partner": {}, "taxonomies": ["string"], "phase_id": "string", "task_type": "MANUAL", @@ -1102,6 +1110,7 @@ epilot workflow-definition updateFlowTemplate -p flowId=7hj28akg --jsonata '$' "assigned_to": ["string"], "ecp": {}, "installer": {}, + "partner": {}, "taxonomies": ["string"], "phase_id": "string", "task_type": "MANUAL" @@ -1117,6 +1126,7 @@ epilot workflow-definition updateFlowTemplate -p flowId=7hj28akg --jsonata '$' "assigned_to": ["string"], "ecp": {}, "installer": {}, + "partner": {}, "taxonomies": ["string"], "phase_id": "string", "task_type": "MANUAL", @@ -1286,6 +1296,7 @@ epilot workflow-definition duplicateFlowTemplate -p flowId=7hj28akg --jsonata '$ "assigned_to": ["string"], "ecp": {}, "installer": {}, + "partner": {}, "taxonomies": ["string"], "phase_id": "string", "task_type": "MANUAL" @@ -1301,6 +1312,7 @@ epilot workflow-definition duplicateFlowTemplate -p flowId=7hj28akg --jsonata '$ "assigned_to": ["string"], "ecp": {}, "installer": {}, + "partner": {}, "taxonomies": ["string"], "phase_id": "string", "task_type": "MANUAL", @@ -1344,367 +1356,6 @@ epilot workflow-definition duplicateFlowTemplate -p flowId=7hj28akg --jsonata '$ --- -### `exportFlowTemplate` - -Export a Flow Template with all referenced automations resolved and bundled alongside. - -`GET /v2/flows/templates/{flowId}/export` - -**Parameters** - -| Name | In | Type | Required | Description | -| ---- | -- | ---- | -------- | ----------- | -| `flowId` | path | string | Yes | | - -**Sample Call** - -```bash -epilot workflow-definition exportFlowTemplate \ - -p flowId=7hj28akg -``` - -Using positional args for path parameters: - -```bash -epilot workflow-definition exportFlowTemplate 7hj28akg -``` - -With JSONata filter: - -```bash -epilot workflow-definition exportFlowTemplate -p flowId=7hj28akg --jsonata '$' -``` - -
-Sample Response - -```json -{ - "id": "string", - "org_id": "string", - "name": "string", - "description": "string", - "trigger": { - "type": "automation", - "automation_id": "g92j2-sg9ug92hjt1gh-9s9gajgs-a979gg" - }, - "enabled": true, - "version": 2, - "created_at": "2021-04-27T12:01:13.000Z", - "updated_at": "2021-04-27T12:01:13.000Z", - "due_date": "2021-04-27T12:00:00.000Z", - "due_date_config": { - "duration": 0, - "unit": "minutes", - "type": "WORKFLOW_STARTED", - "task_id": "string", - "phase_id": "string" - }, - "assigned_to": ["string"], - "available_in_ecp": true, - "additional_triggers": [ - { - "id": "string", - "type": "manual", - "entity_schema": "string" - }, - { - "id": "string", - "type": "automation", - "automation_id": "string", - "trigger_config": [] - } - ], - "phases": [ - { - "id": "string", - "name": "string", - "due_date": "2021-04-27T12:00:00.000Z", - "due_date_config": {}, - "assigned_to": ["string"], - "taxonomies": ["string"] - } - ], - "tasks": [ - { - "id": "string", - "name": "string", - "description": {}, - "journey": {}, - "due_date": "2021-04-27T12:00:00.000Z", - "due_date_config": {}, - "requirements": [], - "assigned_to": ["string"], - "ecp": {}, - "installer": {}, - "taxonomies": ["string"], - "phase_id": "string", - "task_type": "MANUAL" - }, - { - "id": "string", - "name": "string", - "description": {}, - "journey": {}, - "due_date": "2021-04-27T12:00:00.000Z", - "due_date_config": {}, - "requirements": [], - "assigned_to": ["string"], - "ecp": {}, - "installer": {}, - "taxonomies": ["string"], - "phase_id": "string", - "task_type": "MANUAL", - "automation_config": {}, - "trigger_mode": "manual", - "schedule": {}, - "created_automatically": false - } - ], - "edges": [ - { - "id": "string", - "from_id": "string", - "to_id": "string", - "condition_id": "string", - "none_met": true - } - ], - "closing_reasons": [ - { - "id": "string", - "title": "string", - "status": "ACTIVE", - "lastUpdateTime": "string", - "creationTime": "string" - } - ], - "entity_sync": [ - { - "trigger": {}, - "target": {}, - "value": {} - } - ], - "taxonomies": ["string"], - "singleClosingReasonSelection": true, - "_resolved_automations": {} -} -``` - -
- ---- - -### `importFlowTemplate` - -Import a Flow Template from an export payload. Creates all automations and the flow in the caller's organization. - -`POST /v2/flows/templates/import` - -**Request Body** (required) - -**Sample Call** - -```bash -epilot workflow-definition importFlowTemplate -``` - -With request body: - -```bash -epilot workflow-definition importFlowTemplate \ - -d '{ - "id": "string", - "org_id": "string", - "name": "string", - "description": "string", - "trigger": { - "type": "automation", - "automation_id": "g92j2-sg9ug92hjt1gh-9s9gajgs-a979gg" - }, - "enabled": true, - "version": 2, - "created_at": "2021-04-27T12:01:13.000Z", - "updated_at": "2021-04-27T12:01:13.000Z", - "due_date": "2021-04-27T12:00:00.000Z", - "due_date_config": { - "duration": 0, - "unit": "minutes", - "type": "WORKFLOW_STARTED", - "task_id": "string", - "phase_id": "string" - }, - "assigned_to": ["string"], - "available_in_ecp": true, - "additional_triggers": [ - { - "id": "string", - "type": "manual", - "entity_schema": "string" - }, - { - "id": "string", - "type": "automation", - "automation_id": "string", - "trigger_config": [] - } - ], - "phases": [ - { - "id": "string", - "name": "string", - "due_date": "2021-04-27T12:00:00.000Z", - "due_date_config": {}, - "assigned_to": ["string"], - "taxonomies": ["string"] - } - ], - "tasks": [ - { - "id": "string", - "name": "string", - "description": {}, - "journey": {}, - "due_date": "2021-04-27T12:00:00.000Z", - "due_date_config": {}, - "requirements": [], - "assigned_to": ["string"], - "ecp": {}, - "installer": {}, - "taxonomies": ["string"], - "phase_id": "string", - "task_type": "MANUAL" - }, - { - "id": "string", - "name": "string", - "description": {}, - "journey": {}, - "due_date": "2021-04-27T12:00:00.000Z", - "due_date_config": {}, - "requirements": [], - "assigned_to": ["string"], - "ecp": {}, - "installer": {}, - "taxonomies": ["string"], - "phase_id": "string", - "task_type": "MANUAL", - "automation_config": {}, - "trigger_mode": "manual", - "schedule": {}, - "created_automatically": false - } - ], - "edges": [ - { - "id": "string", - "from_id": "string", - "to_id": "string", - "condition_id": "string", - "none_met": true - } - ], - "closing_reasons": [ - { - "id": "string", - "title": "string", - "status": "ACTIVE", - "lastUpdateTime": "string", - "creationTime": "string" - } - ], - "entity_sync": [ - { - "trigger": {}, - "target": {}, - "value": {} - } - ], - "taxonomies": ["string"], - "singleClosingReasonSelection": true, - "_resolved_automations": {} -}' -``` - -Using stdin pipe: - -```bash -cat body.json | epilot workflow-definition importFlowTemplate -``` - -With JSONata filter: - -```bash -epilot workflow-definition importFlowTemplate --jsonata 'flow' -``` - -
-Sample Response - -```json -{ - "flow": { - "id": "string", - "org_id": "string", - "name": "string", - "description": "string", - "trigger": { - "type": "automation", - "automation_id": "g92j2-sg9ug92hjt1gh-9s9gajgs-a979gg" - }, - "enabled": true, - "version": 2, - "created_at": "2021-04-27T12:01:13.000Z", - "updated_at": "2021-04-27T12:01:13.000Z", - "due_date": "2021-04-27T12:00:00.000Z", - "due_date_config": { - "duration": 0, - "unit": "minutes", - "type": "WORKFLOW_STARTED", - "task_id": "string", - "phase_id": "string" - }, - "assigned_to": ["string"], - "available_in_ecp": true, - "additional_triggers": [ - {}, - {} - ], - "phases": [ - {} - ], - "tasks": [ - {}, - {} - ], - "edges": [ - {} - ], - "closing_reasons": [ - {} - ], - "entity_sync": [ - {} - ], - "taxonomies": ["string"], - "singleClosingReasonSelection": true - }, - "_id_mappings": { - "flow_id": { - "old": "string", - "new": "string" - }, - "task_ids": {}, - "automation_ids": {} - } -} -``` - -
- ---- - ### `getDefinition` Get specific Definition by id from the Organization. @@ -1786,6 +1437,7 @@ epilot workflow-definition getDefinition -p definitionId=7hj28a --jsonata 'id' "type": "STEP", "ecp": {}, "installer": {}, + "partner": {}, "taxonomies": ["string"] } ], @@ -1881,6 +1533,7 @@ epilot workflow-definition updateDefinition \ "type": "STEP", "ecp": {}, "installer": {}, + "partner": {}, "taxonomies": ["string"] } ], @@ -1968,6 +1621,7 @@ epilot workflow-definition updateDefinition -p definitionId=7hj28a --jsonata 'id "type": "STEP", "ecp": {}, "installer": {}, + "partner": {}, "taxonomies": ["string"] } ], diff --git a/packages/cli/src/generated/api-list.ts b/packages/cli/src/generated/api-list.ts index 8f18e64b..78ff87c8 100644 --- a/packages/cli/src/generated/api-list.ts +++ b/packages/cli/src/generated/api-list.ts @@ -372,7 +372,7 @@ export const API_LIST: ApiInfo[] = [ apiName: 'dataManagement', kebabName: 'data-management', title: 'Data Management API', - serverUrl: 'https://data-management.sls.epilot.io', + serverUrl: '', operationCount: 10, operationIds: [ 'queryEntities', @@ -489,7 +489,7 @@ export const API_LIST: ApiInfo[] = [ kebabName: 'entity', title: 'Entity API', serverUrl: 'https://entity.sls.epilot.io', - operationCount: 82, + operationCount: 84, operationIds: [ 'listSchemas', 'listSchemasV2', @@ -499,6 +499,8 @@ export const API_LIST: ApiInfo[] = [ 'getJsonSchema', 'getSchemaExample', 'getSchemaVersions', + 'freezeSchema', + 'unfreezeSchema', 'listAvailableCapabilities', 'listSchemaBlueprints', 'searchEntities', @@ -615,7 +617,7 @@ export const API_LIST: ApiInfo[] = [ kebabName: 'erp-integration', title: 'ERP Integration API', serverUrl: 'https://erp-integration-api.sls.epilot.io', - operationCount: 35, + operationCount: 43, operationIds: [ 'acknowledgeTracking', 'triggerErp', @@ -650,8 +652,16 @@ export const API_LIST: ApiInfo[] = [ 'getOutboundStatus', 'queryAccessLogs', 'queryOutboundMonitoringEvents', + 'queryMonitoringEventsV2', + 'getMonitoringStatsV2', + 'getMonitoringTimeSeriesV2', + 'getAssociatedMonitoringEvents', 'listSecureProxies', 'secureProxy', + 'managedCallExecute', + 'generateTypesPreview', + 'generateTypes', + 'commitTypes', ], }, { @@ -1185,7 +1195,7 @@ export const API_LIST: ApiInfo[] = [ kebabName: 'workflow-definition', title: 'Workflows Definitions', serverUrl: 'https://workflows-definition.sls.epilot.io', - operationCount: 24, + operationCount: 22, operationIds: [ 'getMaxAllowedLimit', 'getDefinitions', @@ -1197,8 +1207,6 @@ export const API_LIST: ApiInfo[] = [ 'updateFlowTemplate', 'deleteFlowTemplate', 'duplicateFlowTemplate', - 'exportFlowTemplate', - 'importFlowTemplate', 'getDefinition', 'updateDefinition', 'deleteDefinition', diff --git a/packages/cli/src/index.ts b/packages/cli/src/index.ts index 42e518e1..db8ea9f2 100644 --- a/packages/cli/src/index.ts +++ b/packages/cli/src/index.ts @@ -3,7 +3,7 @@ import { defineCommand } from 'citty'; export const main = defineCommand({ meta: { name: 'epilot', - version: '0.1.10', + version: '0.1.17', description: 'CLI for epilot APIs', }, args: { diff --git a/packages/epilot-sdk-v2/package.json b/packages/epilot-sdk-v2/package.json index 90327be2..026d4d29 100644 --- a/packages/epilot-sdk-v2/package.json +++ b/packages/epilot-sdk-v2/package.json @@ -1,6 +1,6 @@ { "name": "@epilot/sdk", - "version": "2.2.7", + "version": "2.3.0", "description": "JavaScript/TypeScript SDK for epilot APIs", "type": "module", "main": "./dist/index.cjs", @@ -323,6 +323,9 @@ "definitions", "docs" ], + "optionalDependencies": { + "@epilot/epilot-journey-sdk": ">=2.0.0-alpha.1" + }, "peerDependencies": { "axios": "^1.0.0", "openapi-client-axios": "^7.0.0" diff --git a/packages/epilot-sdk-v2/src/apis/_registry.ts b/packages/epilot-sdk-v2/src/apis/_registry.ts index 5d3e2e83..b912672c 100644 --- a/packages/epilot-sdk-v2/src/apis/_registry.ts +++ b/packages/epilot-sdk-v2/src/apis/_registry.ts @@ -3,7 +3,7 @@ import type { Document } from 'openapi-client-axios'; import { expand } from '../compact'; import type { CompactDefinition } from '../compact'; import { registerApi } from '../registry'; -import type { ApiEntry } from '../types'; +import type { ApiEntry, ExtensionEntry } from '../types'; /* eslint-disable @typescript-eslint/no-require-imports */ const expandDef = (mod: { default?: unknown }): Document => @@ -241,3 +241,25 @@ export const registerBuiltinApis = (registry: Map) => { loader: () => expandDef(require('../definitions/workflow-definition-runtime.json')), }); }; + +/** + * Register non-API extensions (plain objects, not OpenAPI clients). + * These are mounted on the SDK alongside API handles. + * Extensions are lazy-loaded — the module is only imported on first access. + */ +export const registerBuiltinExtensions = (extensions: Map) => { + let cached: unknown = null; + extensions.set('journeyToolkit', { + get value() { + if (cached) return cached; + try { + // lazy-load journey toolkit + cached = require('@epilot/epilot-journey-sdk'); + } catch { + // journey toolkit not installed + cached = undefined; + } + return cached; + }, + }); +}; diff --git a/packages/epilot-sdk-v2/src/sdk.ts b/packages/epilot-sdk-v2/src/sdk.ts index 26d76d07..d78478b9 100644 --- a/packages/epilot-sdk-v2/src/sdk.ts +++ b/packages/epilot-sdk-v2/src/sdk.ts @@ -1,6 +1,6 @@ import type { AxiosInstance, AxiosResponse, InternalAxiosRequestConfig } from 'axios'; -import { registerBuiltinApis } from './apis/_registry'; +import { registerBuiltinApis, registerBuiltinExtensions } from './apis/_registry'; import type { TokenArg } from './authorize'; import type { SDKClientMap } from './client-map'; import { createApiClient } from './client-factory'; @@ -11,7 +11,7 @@ import { createApiHandle } from './proxy'; import { createRegistry, resetAllClients, resolveClient } from './registry'; import type { LargeResponseConfig } from './large-response'; import type { RetryConfig } from './retry'; -import type { ApiHandle, HeadersConfig, SDKState } from './types'; +import type { ApiHandle, ExtensionEntry, HeadersConfig, SDKState } from './types'; export type InterceptorUse = { request: ( @@ -45,6 +45,7 @@ export type EpilotSDK = { export const createSDK = (): EpilotSDK => { const registry = createRegistry(); + const extensions = new Map(); const state: SDKState = { token: null, tokenFn: null, @@ -55,6 +56,7 @@ export const createSDK = (): EpilotSDK => { }; registerBuiltinApis(registry); + registerBuiltinExtensions(extensions); loadOverrides(registry); const getHandle = (name: string): ApiHandle => { @@ -137,6 +139,11 @@ export const createSDK = (): EpilotSDK => { return getHandle(prop); } + // Check non-API extensions (e.g. journeyToolkit) + if (extensions.has(prop)) { + return extensions.get(prop)!.value; + } + return undefined; } }, diff --git a/packages/epilot-sdk-v2/src/types.ts b/packages/epilot-sdk-v2/src/types.ts index e20e182d..88e37680 100644 --- a/packages/epilot-sdk-v2/src/types.ts +++ b/packages/epilot-sdk-v2/src/types.ts @@ -35,6 +35,15 @@ export type HeadersConfig = Record; export type OverridesConfig = Record; +/** + * A non-API extension mounted on the SDK. + * Unlike ApiEntry (OpenAPI-based), extensions are plain objects + * with arbitrary methods and properties (e.g. factory functions, utilities). + */ +export type ExtensionEntry = { + value: unknown; +}; + /** * An API handle that provides: * - `getClient()` — cached singleton diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 7e73e5d4..140768c7 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -2562,6 +2562,10 @@ importers: vitest: specifier: ^1.0.0 version: 1.6.1(@types/node@24.2.0)(jsdom@26.1.0)(terser@5.46.0) + optionalDependencies: + '@epilot/epilot-journey-sdk': + specifier: '>=2.0.0-alpha.1' + version: 2.0.0-alpha.1(@material-ui/core@4.12.4(@types/react@17.0.91)(react-dom@17.0.2(react@17.0.2))(react@17.0.2))(axios@1.13.6)(js-yaml@4.1.1) packages: @@ -2916,11 +2920,24 @@ packages: resolution: {integrity: sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==} engines: {node: '>=10.0.0'} + '@emotion/hash@0.8.0': + resolution: {integrity: sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==} + '@epilot/cli@0.1.10': resolution: {integrity: sha512-pt4+MwtTa46tncqcnEpIzTt8q4kW/vaH11GLR/GouOAOLN+D1DAprDhEvfiKVXCp4ReYUYQfLMzp8xPKEBBqYA==} engines: {node: '>=18'} hasBin: true + '@epilot/epilot-journey-sdk@2.0.0-alpha.1': + resolution: {integrity: sha512-1W9WxXflAJ7Z+ycR07D0BoFIOIL+wmPk6917MAk0XXx4VzYebzqa7RFOaYm2WrqLOppkQRhJVtlUHvPA0KDdRg==} + peerDependencies: + '@material-ui/core': 4.* + + '@epilot/journey-client@0.5.2': + resolution: {integrity: sha512-8sFIN9oNDEu/PaPM1tiql786hn3tOB6UFVoQSZZ0mCH/K8H5v3jX6tJu6QsQqVJrAq3u/RPS7iVLadt3yT6EGA==} + peerDependencies: + axios: ^1.0.0 || >=0.25.0 <1.0.0 + '@esbuild/aix-ppc64@0.21.5': resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==} engines: {node: '>=12'} @@ -3638,6 +3655,56 @@ packages: '@manypkg/get-packages@1.1.3': resolution: {integrity: sha512-fo+QhuU3qE/2TQMQmbVMqaQ6EWbMhi4ABWP+O4AM1NqPBuy0OrApV5LO6BrrgnhtAHS2NH6RrVk9OL181tTi8A==} + '@material-ui/core@4.12.4': + resolution: {integrity: sha512-tr7xekNlM9LjA6pagJmL8QCgZXaubWUwkJnoYcMKd4gw/t4XiyvnTkjdGrUVicyB2BsdaAv1tvow45bPM4sSwQ==} + engines: {node: '>=8.0.0'} + deprecated: Material UI v4 doesn't receive active development since September 2021. See the guide https://mui.com/material-ui/migration/migration-v4/ to upgrade to v5. + peerDependencies: + '@types/react': ^16.8.6 || ^17.0.0 + react: ^16.8.0 || ^17.0.0 + react-dom: ^16.8.0 || ^17.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + + '@material-ui/styles@4.11.5': + resolution: {integrity: sha512-o/41ot5JJiUsIETME9wVLAJrmIWL3j0R0Bj2kCOLbSfqEkKf0fmaPt+5vtblUh5eXr2S+J/8J3DaCb10+CzPGA==} + engines: {node: '>=8.0.0'} + deprecated: Material UI v4 doesn't receive active development since September 2021. See the guide https://mui.com/material-ui/migration/migration-v4/ to upgrade to v5. + peerDependencies: + '@types/react': ^16.8.6 || ^17.0.0 + react: ^16.8.0 || ^17.0.0 + react-dom: ^16.8.0 || ^17.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + + '@material-ui/system@4.12.2': + resolution: {integrity: sha512-6CSKu2MtmiJgcCGf6nBQpM8fLkuB9F55EKfbdTC80NND5wpTmKzwdhLYLH3zL4cLlK0gVaaltW7/wMuyTnN0Lw==} + engines: {node: '>=8.0.0'} + peerDependencies: + '@types/react': ^16.8.6 || ^17.0.0 + react: ^16.8.0 || ^17.0.0 + react-dom: ^16.8.0 || ^17.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + + '@material-ui/types@5.1.0': + resolution: {integrity: sha512-7cqRjrY50b8QzRSYyhSpx4WRw2YuO0KKIGQEVk5J8uoz2BanawykgZGoWEqKm7pVIbzFDN0SpPcVV4IhOFkl8A==} + peerDependencies: + '@types/react': '*' + peerDependenciesMeta: + '@types/react': + optional: true + + '@material-ui/utils@4.11.3': + resolution: {integrity: sha512-ZuQPV4rBK/V1j2dIkSSEcH5uT6AaHuKWFfotADHsC0wVL1NLd2WkFCm4ZZbX33iO4ydl6V0GPngKm8HZQ2oujg==} + engines: {node: '>=8.0.0'} + peerDependencies: + react: ^16.8.0 || ^17.0.0 + react-dom: ^16.8.0 || ^17.0.0 + '@mswjs/interceptors@0.41.3': resolution: {integrity: sha512-cXu86tF4VQVfwz8W1SPbhoRyHJkti6mjH/XJIxp40jhO4j2k1m4KYrEykxqWPkFF3vrK4rgQppBh//AwyGSXPA==} engines: {node: '>=18'} @@ -3926,6 +3993,20 @@ packages: '@types/node@25.4.0': resolution: {integrity: sha512-9wLpoeWuBlcbBpOY3XmzSTG3oscB6xjBEEtn+pYXTfhyXhIxC5FsBer2KTopBlvKEiW9l13po9fq+SJY/5lkhw==} + '@types/prop-types@15.7.15': + resolution: {integrity: sha512-F6bEyamV9jKGAFBEmlQnesRPGOQqS2+Uwi0Em15xenOxHaf2hv6L8YCVn3rPdPJOiJfPiCnLIRyvwVaqMY3MIw==} + + '@types/react-transition-group@4.4.12': + resolution: {integrity: sha512-8TV6R3h2j7a91c+1DXdJi3Syo69zzIZbz7Lg5tORM5LEJG7X/E6a1V3drRyBRZq7/utz7A+c4OgYLiLcYGHG6w==} + peerDependencies: + '@types/react': '*' + + '@types/react@17.0.91': + resolution: {integrity: sha512-xauZca6qMeCU3Moy0KxCM9jtf1vyk6qRYK39Ryf3afUqwgNUjRIGoDdS9BcGWgAMGSg1hvP4XcmlYrM66PtqeA==} + + '@types/scheduler@0.16.8': + resolution: {integrity: sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A==} + '@types/stack-utils@2.0.3': resolution: {integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==} @@ -4499,6 +4580,10 @@ packages: resolution: {integrity: sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==} engines: {node: '>=6'} + clsx@1.2.1: + resolution: {integrity: sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==} + engines: {node: '>=6'} + co-body@6.2.0: resolution: {integrity: sha512-Kbpv2Yd1NdL1V/V4cwLVxraHDV6K8ayohr2rmH0J87Er8+zJjcTa6dAn9QMPC9CRgU8+aNajKbSf1TzDB1yKPA==} engines: {node: '>=8.0.0'} @@ -4616,6 +4701,9 @@ packages: resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} engines: {node: '>= 8'} + css-vendor@2.0.8: + resolution: {integrity: sha512-x9Aq0XTInxrkuFeHKbYC7zWY8ai7qJ04Kxd9MnvbC1uO5DagxoHQjm4JvG+vCdXOoFtCjbL2XSZfxmoYa9uQVQ==} + css.escape@1.5.1: resolution: {integrity: sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==} @@ -4623,6 +4711,12 @@ packages: resolution: {integrity: sha512-2z+rWdzbbSZv6/rhtvzvqeZQHrBaqgogqt85sqFNbabZOuFbCVFb8kPeEtZjiKkbrm395irpNKiYeFeLiQnFPg==} engines: {node: '>=18'} + csstype@2.6.21: + resolution: {integrity: sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w==} + + csstype@3.2.3: + resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==} + data-uri-to-buffer@4.0.1: resolution: {integrity: sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==} engines: {node: '>= 12'} @@ -4739,6 +4833,9 @@ packages: dom-accessibility-api@0.6.3: resolution: {integrity: sha512-7ZgogeTnjuHbo+ct10G9Ffp0mif17idi0IyWNVA/wcwcm7NPOD/WEHVP3n7n3MhXqxoIYm8d6MuZohYWIZ4T3w==} + dom-helpers@5.2.1: + resolution: {integrity: sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==} + dunder-proto@1.0.1: resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} engines: {node: '>= 0.4'} @@ -5151,6 +5248,9 @@ packages: headers-polyfill@4.0.3: resolution: {integrity: sha512-IScLbePpkvO846sIwOtOTDjutRMWdXdJmXdMvk6gCBHxFO8d+QKOQedyZSxFTTFYRSmlgSTDtXqqq4pcenBXLQ==} + hoist-non-react-statics@3.3.2: + resolution: {integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==} + hosted-git-info@7.0.2: resolution: {integrity: sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==} engines: {node: ^16.14.0 || >=18.0.0} @@ -5211,6 +5311,9 @@ packages: resolution: {integrity: sha512-Ty8UblRWFEcfSuIaajM34LdPXIhbs1ajEX/BBPv24J+enSVaEVY63xQ6lTO9VRYS5LAoghIG0IDJ+p+IPzKUQQ==} engines: {node: '>=4'} + hyphenate-style-name@1.1.0: + resolution: {integrity: sha512-WDC/ui2VVRrz3jOVi+XtjqkDjiVjTtFaAGiW37k6b+ohyQ5wYDOGkvCZa8+H0nx3gyvv0+BST9xuOgIyGQ00gw==} + iconv-lite@0.4.24: resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} engines: {node: '>=0.10.0'} @@ -5317,6 +5420,9 @@ packages: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} + is-in-browser@1.1.3: + resolution: {integrity: sha512-FeXIBgG/CPGd/WUxuEyvgGTEfwiG9Z4EKGxjNMRqviiIIfsmgrpnHLffEDdwUHqNva1VEW91o3xBT/m8Elgl9g==} + is-inside-container@1.0.0: resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==} engines: {node: '>=14.16'} @@ -5638,6 +5744,30 @@ packages: jsonfile@6.1.0: resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} + jss-plugin-camel-case@10.10.0: + resolution: {integrity: sha512-z+HETfj5IYgFxh1wJnUAU8jByI48ED+v0fuTuhKrPR+pRBYS2EDwbusU8aFOpCdYhtRc9zhN+PJ7iNE8pAWyPw==} + + jss-plugin-default-unit@10.10.0: + resolution: {integrity: sha512-SvpajxIECi4JDUbGLefvNckmI+c2VWmP43qnEy/0eiwzRUsafg5DVSIWSzZe4d2vFX1u9nRDP46WCFV/PXVBGQ==} + + jss-plugin-global@10.10.0: + resolution: {integrity: sha512-icXEYbMufiNuWfuazLeN+BNJO16Ge88OcXU5ZDC2vLqElmMybA31Wi7lZ3lf+vgufRocvPj8443irhYRgWxP+A==} + + jss-plugin-nested@10.10.0: + resolution: {integrity: sha512-9R4JHxxGgiZhurDo3q7LdIiDEgtA1bTGzAbhSPyIOWb7ZubrjQe8acwhEQ6OEKydzpl8XHMtTnEwHXCARLYqYA==} + + jss-plugin-props-sort@10.10.0: + resolution: {integrity: sha512-5VNJvQJbnq/vRfje6uZLe/FyaOpzP/IH1LP+0fr88QamVrGJa0hpRRyAa0ea4U/3LcorJfBFVyC4yN2QC73lJg==} + + jss-plugin-rule-value-function@10.10.0: + resolution: {integrity: sha512-uEFJFgaCtkXeIPgki8ICw3Y7VMkL9GEan6SqmT9tqpwM+/t+hxfMUdU4wQ0MtOiMNWhwnckBV0IebrKcZM9C0g==} + + jss-plugin-vendor-prefixer@10.10.0: + resolution: {integrity: sha512-UY/41WumgjW8r1qMCO8l1ARg7NHnfRVWRhZ2E2m0DMYsr2DD91qIXLyNhiX83hHswR7Wm4D+oDYNC1zWCJWtqg==} + + jss@10.10.0: + resolution: {integrity: sha512-cqsOTS7jqPsPMjtKYDUpdFC0AbhYFLTcuGRqymgmdJIeQ8cH7+AgX7YSgQy79wXloZq2VvATYxUOUQEvS1V/Zw==} + keygrip@1.1.0: resolution: {integrity: sha512-iYSchDJ+liQ8iwbSI2QqsQOvqv58eJCEanyJPJi+Khyu8smkcKSFUCbPwzFcL7YVtZ6eONjqRX/38caJ7QjRAQ==} engines: {node: '>= 0.6'} @@ -5730,6 +5860,10 @@ packages: lodash@4.17.21: resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + loose-envify@1.4.0: + resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} + hasBin: true + loupe@2.3.7: resolution: {integrity: sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==} @@ -6226,6 +6360,9 @@ packages: pkg-types@1.3.1: resolution: {integrity: sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==} + popper.js@1.16.1-lts: + resolution: {integrity: sha512-Kjw8nKRl1m+VrSFCoVGPph93W/qrSO7ZkqPpTf7F4bk/sqcfWK019dWBUpE/fBOsOQY1dks/Bmcbfn1heM/IsA==} + possible-typed-array-names@1.1.0: resolution: {integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==} engines: {node: '>= 0.4'} @@ -6281,6 +6418,9 @@ packages: resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} engines: {node: '>= 6'} + prop-types@15.8.1: + resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} + proxy-from-env@1.1.0: resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} @@ -6314,12 +6454,30 @@ packages: resolution: {integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==} engines: {node: '>= 0.8'} + react-dom@17.0.2: + resolution: {integrity: sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==} + peerDependencies: + react: 17.0.2 + + react-is@16.13.1: + resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} + react-is@17.0.2: resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} react-is@18.3.1: resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} + react-transition-group@4.4.5: + resolution: {integrity: sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==} + peerDependencies: + react: '>=16.6.0' + react-dom: '>=16.6.0' + + react@17.0.2: + resolution: {integrity: sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==} + engines: {node: '>=0.10.0'} + read-yaml-file@1.1.0: resolution: {integrity: sha512-VIMnQi/Z4HT2Fxuwg5KrY174U1VdUIASQVWXXyqtNRtxSr9IYkn1rsI6Tb6HsrHCmB7gVpNwX6JxPTHcH6IoTA==} engines: {node: '>=6'} @@ -6441,6 +6599,9 @@ packages: resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==} engines: {node: '>=v12.22.7'} + scheduler@0.20.2: + resolution: {integrity: sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==} + schema-utils@3.3.0: resolution: {integrity: sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==} engines: {node: '>= 10.13.0'} @@ -6750,6 +6911,9 @@ packages: through@2.3.8: resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} + tiny-warning@1.0.3: + resolution: {integrity: sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==} + tinybench@2.9.0: resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} @@ -7874,6 +8038,9 @@ snapshots: '@discoveryjs/json-ext@0.5.7': {} + '@emotion/hash@0.8.0': + optional: true + '@epilot/cli@0.1.10(@types/node@24.2.0)(js-yaml@4.1.1)': dependencies: '@inquirer/prompts': 7.10.1(@types/node@24.2.0) @@ -7889,6 +8056,29 @@ snapshots: - debug - js-yaml + '@epilot/epilot-journey-sdk@2.0.0-alpha.1(@material-ui/core@4.12.4(@types/react@17.0.91)(react-dom@17.0.2(react@17.0.2))(react@17.0.2))(axios@1.13.6)(js-yaml@4.1.1)': + dependencies: + '@epilot/journey-client': 0.5.2(axios@1.13.6)(js-yaml@4.1.1) + '@material-ui/core': 4.12.4(@types/react@17.0.91)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) + transitivePeerDependencies: + - axios + - js-yaml + optional: true + + '@epilot/journey-client@0.5.2(axios@1.13.6)(js-yaml@4.1.1)': + dependencies: + axios: 1.13.6(debug@4.4.1) + buffer: 6.0.3 + https-browserify: 1.0.0 + openapi-backend: 5.11.1 + openapi-client-axios: 7.9.0(axios@1.13.6)(js-yaml@4.1.1) + stream-http: 3.2.0 + url: 0.11.4 + util: 0.12.5 + transitivePeerDependencies: + - js-yaml + optional: true + '@esbuild/aix-ppc64@0.21.5': optional: true @@ -8566,6 +8756,76 @@ snapshots: globby: 11.1.0 read-yaml-file: 1.1.0 + '@material-ui/core@4.12.4(@types/react@17.0.91)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)': + dependencies: + '@babel/runtime': 7.28.2 + '@material-ui/styles': 4.11.5(@types/react@17.0.91)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) + '@material-ui/system': 4.12.2(@types/react@17.0.91)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) + '@material-ui/types': 5.1.0(@types/react@17.0.91) + '@material-ui/utils': 4.11.3(react-dom@17.0.2(react@17.0.2))(react@17.0.2) + '@types/react-transition-group': 4.4.12(@types/react@17.0.91) + clsx: 1.2.1 + hoist-non-react-statics: 3.3.2 + popper.js: 1.16.1-lts + prop-types: 15.8.1 + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) + react-is: 17.0.2 + react-transition-group: 4.4.5(react-dom@17.0.2(react@17.0.2))(react@17.0.2) + optionalDependencies: + '@types/react': 17.0.91 + optional: true + + '@material-ui/styles@4.11.5(@types/react@17.0.91)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)': + dependencies: + '@babel/runtime': 7.28.2 + '@emotion/hash': 0.8.0 + '@material-ui/types': 5.1.0(@types/react@17.0.91) + '@material-ui/utils': 4.11.3(react-dom@17.0.2(react@17.0.2))(react@17.0.2) + clsx: 1.2.1 + csstype: 2.6.21 + hoist-non-react-statics: 3.3.2 + jss: 10.10.0 + jss-plugin-camel-case: 10.10.0 + jss-plugin-default-unit: 10.10.0 + jss-plugin-global: 10.10.0 + jss-plugin-nested: 10.10.0 + jss-plugin-props-sort: 10.10.0 + jss-plugin-rule-value-function: 10.10.0 + jss-plugin-vendor-prefixer: 10.10.0 + prop-types: 15.8.1 + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) + optionalDependencies: + '@types/react': 17.0.91 + optional: true + + '@material-ui/system@4.12.2(@types/react@17.0.91)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)': + dependencies: + '@babel/runtime': 7.28.2 + '@material-ui/utils': 4.11.3(react-dom@17.0.2(react@17.0.2))(react@17.0.2) + csstype: 2.6.21 + prop-types: 15.8.1 + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) + optionalDependencies: + '@types/react': 17.0.91 + optional: true + + '@material-ui/types@5.1.0(@types/react@17.0.91)': + optionalDependencies: + '@types/react': 17.0.91 + optional: true + + '@material-ui/utils@4.11.3(react-dom@17.0.2(react@17.0.2))(react@17.0.2)': + dependencies: + '@babel/runtime': 7.28.2 + prop-types: 15.8.1 + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) + react-is: 17.0.2 + optional: true + '@mswjs/interceptors@0.41.3': dependencies: '@open-draft/deferred-promise': 2.2.0 @@ -8943,6 +9203,24 @@ snapshots: dependencies: undici-types: 7.18.2 + '@types/prop-types@15.7.15': + optional: true + + '@types/react-transition-group@4.4.12(@types/react@17.0.91)': + dependencies: + '@types/react': 17.0.91 + optional: true + + '@types/react@17.0.91': + dependencies: + '@types/prop-types': 15.7.15 + '@types/scheduler': 0.16.8 + csstype: 3.2.3 + optional: true + + '@types/scheduler@0.16.8': + optional: true + '@types/stack-utils@2.0.3': {} '@types/statuses@2.0.6': {} @@ -9608,6 +9886,9 @@ snapshots: kind-of: 6.0.3 shallow-clone: 3.0.1 + clsx@1.2.1: + optional: true + co-body@6.2.0: dependencies: '@hapi/bourne': 3.0.0 @@ -9756,6 +10037,12 @@ snapshots: shebang-command: 2.0.0 which: 2.0.2 + css-vendor@2.0.8: + dependencies: + '@babel/runtime': 7.28.2 + is-in-browser: 1.1.3 + optional: true + css.escape@1.5.1: {} cssstyle@4.6.0: @@ -9763,6 +10050,12 @@ snapshots: '@asamuzakjp/css-color': 3.2.0 rrweb-cssom: 0.8.0 + csstype@2.6.21: + optional: true + + csstype@3.2.3: + optional: true + data-uri-to-buffer@4.0.1: {} data-urls@5.0.0: @@ -9837,6 +10130,12 @@ snapshots: dom-accessibility-api@0.6.3: {} + dom-helpers@5.2.1: + dependencies: + '@babel/runtime': 7.28.2 + csstype: 3.2.3 + optional: true + dunder-proto@1.0.1: dependencies: call-bind-apply-helpers: 1.0.2 @@ -10304,6 +10603,11 @@ snapshots: headers-polyfill@4.0.3: {} + hoist-non-react-statics@3.3.2: + dependencies: + react-is: 16.13.1 + optional: true + hosted-git-info@7.0.2: dependencies: lru-cache: 10.4.3 @@ -10370,6 +10674,9 @@ snapshots: hyperlinker@1.0.0: {} + hyphenate-style-name@1.1.0: + optional: true + iconv-lite@0.4.24: dependencies: safer-buffer: 2.1.2 @@ -10462,6 +10769,9 @@ snapshots: dependencies: is-extglob: 2.1.1 + is-in-browser@1.1.3: + optional: true + is-inside-container@1.0.0: dependencies: is-docker: 3.0.0 @@ -11158,6 +11468,60 @@ snapshots: optionalDependencies: graceful-fs: 4.2.11 + jss-plugin-camel-case@10.10.0: + dependencies: + '@babel/runtime': 7.28.2 + hyphenate-style-name: 1.1.0 + jss: 10.10.0 + optional: true + + jss-plugin-default-unit@10.10.0: + dependencies: + '@babel/runtime': 7.28.2 + jss: 10.10.0 + optional: true + + jss-plugin-global@10.10.0: + dependencies: + '@babel/runtime': 7.28.2 + jss: 10.10.0 + optional: true + + jss-plugin-nested@10.10.0: + dependencies: + '@babel/runtime': 7.28.2 + jss: 10.10.0 + tiny-warning: 1.0.3 + optional: true + + jss-plugin-props-sort@10.10.0: + dependencies: + '@babel/runtime': 7.28.2 + jss: 10.10.0 + optional: true + + jss-plugin-rule-value-function@10.10.0: + dependencies: + '@babel/runtime': 7.28.2 + jss: 10.10.0 + tiny-warning: 1.0.3 + optional: true + + jss-plugin-vendor-prefixer@10.10.0: + dependencies: + '@babel/runtime': 7.28.2 + css-vendor: 2.0.8 + jss: 10.10.0 + optional: true + + jss@10.10.0: + dependencies: + '@babel/runtime': 7.28.2 + csstype: 3.2.3 + is-in-browser: 1.1.3 + tiny-warning: 1.0.3 + optional: true + keygrip@1.1.0: dependencies: tsscmp: 1.0.6 @@ -11279,6 +11643,11 @@ snapshots: lodash@4.17.21: {} + loose-envify@1.4.0: + dependencies: + js-tokens: 4.0.0 + optional: true + loupe@2.3.7: dependencies: get-func-name: 2.0.2 @@ -11878,6 +12247,9 @@ snapshots: mlly: 1.7.4 pathe: 2.0.3 + popper.js@1.16.1-lts: + optional: true + possible-typed-array-names@1.1.0: {} postcss-load-config@6.0.1(postcss@8.5.6)(tsx@4.21.0): @@ -11918,6 +12290,13 @@ snapshots: kleur: 3.0.3 sisteransi: 1.0.5 + prop-types@15.8.1: + dependencies: + loose-envify: 1.4.0 + object-assign: 4.1.1 + react-is: 16.13.1 + optional: true + proxy-from-env@1.1.0: {} prr@1.0.1: {} @@ -11947,10 +12326,37 @@ snapshots: iconv-lite: 0.4.24 unpipe: 1.0.0 + react-dom@17.0.2(react@17.0.2): + dependencies: + loose-envify: 1.4.0 + object-assign: 4.1.1 + react: 17.0.2 + scheduler: 0.20.2 + optional: true + + react-is@16.13.1: + optional: true + react-is@17.0.2: {} react-is@18.3.1: {} + react-transition-group@4.4.5(react-dom@17.0.2(react@17.0.2))(react@17.0.2): + dependencies: + '@babel/runtime': 7.28.2 + dom-helpers: 5.2.1 + loose-envify: 1.4.0 + prop-types: 15.8.1 + react: 17.0.2 + react-dom: 17.0.2(react@17.0.2) + optional: true + + react@17.0.2: + dependencies: + loose-envify: 1.4.0 + object-assign: 4.1.1 + optional: true + read-yaml-file@1.1.0: dependencies: graceful-fs: 4.2.11 @@ -12090,6 +12496,12 @@ snapshots: dependencies: xmlchars: 2.2.0 + scheduler@0.20.2: + dependencies: + loose-envify: 1.4.0 + object-assign: 4.1.1 + optional: true + schema-utils@3.3.0: dependencies: '@types/json-schema': 7.0.15 @@ -12414,6 +12826,9 @@ snapshots: through@2.3.8: {} + tiny-warning@1.0.3: + optional: true + tinybench@2.9.0: {} tinyexec@0.3.2: {}