@epilot/cli 0.1.97 → 0.1.99
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/definitions/blueprint-manifest.json +219 -20
- package/definitions/integration-toolkit.json +89 -6
- package/dist/bin/epilot.js +6 -6
- package/dist/{chunk-6BGA56QC.js → chunk-5Y4OYCNI.js} +2 -1
- package/dist/{completion-6JGII43G.js → completion-W5V6EYUZ.js} +1 -1
- package/dist/{upgrade-3IF3ARUQ.js → upgrade-T2AWIWQL.js} +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"openapi": "3.0.2",
|
|
3
3
|
"info": {
|
|
4
4
|
"title": "Blueprint Manifest API",
|
|
5
|
-
"version": "4.
|
|
5
|
+
"version": "4.8.0",
|
|
6
6
|
"description": "Service to create and install Blueprint Manifest files"
|
|
7
7
|
},
|
|
8
8
|
"tags": [
|
|
@@ -823,7 +823,7 @@
|
|
|
823
823
|
"post": {
|
|
824
824
|
"operationId": "preInstallBlueprint",
|
|
825
825
|
"summary": "preInstallBlueprint",
|
|
826
|
-
"description": "Pre-install a Blueprint based on a blueprint file",
|
|
826
|
+
"description": "Pre-install a Blueprint based on a blueprint file. Format-agnostic: the engine is detected from the uploaded archive, so this endpoint accepts both Terraform exports and signed V3 packages. The returned preview's `sync_engine` says which install endpoint to call next. An archive that is neither a Terraform export nor a validly signed V3 package is rejected with 400.",
|
|
827
827
|
"tags": [
|
|
828
828
|
"Blueprints"
|
|
829
829
|
],
|
|
@@ -862,6 +862,9 @@
|
|
|
862
862
|
}
|
|
863
863
|
}
|
|
864
864
|
}
|
|
865
|
+
},
|
|
866
|
+
"400": {
|
|
867
|
+
"description": "Invalid request body, or an archive that no install engine accepts"
|
|
865
868
|
}
|
|
866
869
|
}
|
|
867
870
|
}
|
|
@@ -1173,6 +1176,94 @@
|
|
|
1173
1176
|
}
|
|
1174
1177
|
},
|
|
1175
1178
|
"/v2/blueprint-manifest/blueprints/{blueprint_id}/notes/{note_id}": {
|
|
1179
|
+
"patch": {
|
|
1180
|
+
"operationId": "updateBlueprintNote",
|
|
1181
|
+
"summary": "updateBlueprintNote",
|
|
1182
|
+
"description": "Rewrite the text of an existing internal note. The note keeps its position in\nthe list along with `created_at` and `created_by`, so an edit cannot reassign\nauthorship; `updated_at` is stamped server-side.\n",
|
|
1183
|
+
"tags": [
|
|
1184
|
+
"Blueprints"
|
|
1185
|
+
],
|
|
1186
|
+
"parameters": [
|
|
1187
|
+
{
|
|
1188
|
+
"in": "path",
|
|
1189
|
+
"required": true,
|
|
1190
|
+
"name": "blueprint_id",
|
|
1191
|
+
"schema": {
|
|
1192
|
+
"$ref": "#/components/schemas/BlueprintID"
|
|
1193
|
+
}
|
|
1194
|
+
},
|
|
1195
|
+
{
|
|
1196
|
+
"in": "path",
|
|
1197
|
+
"required": true,
|
|
1198
|
+
"name": "note_id",
|
|
1199
|
+
"schema": {
|
|
1200
|
+
"type": "string"
|
|
1201
|
+
}
|
|
1202
|
+
}
|
|
1203
|
+
],
|
|
1204
|
+
"requestBody": {
|
|
1205
|
+
"required": true,
|
|
1206
|
+
"content": {
|
|
1207
|
+
"application/json": {
|
|
1208
|
+
"schema": {
|
|
1209
|
+
"type": "object",
|
|
1210
|
+
"required": [
|
|
1211
|
+
"text"
|
|
1212
|
+
],
|
|
1213
|
+
"properties": {
|
|
1214
|
+
"text": {
|
|
1215
|
+
"type": "string",
|
|
1216
|
+
"description": "Plain-text note body. Must not be blank.",
|
|
1217
|
+
"minLength": 1
|
|
1218
|
+
}
|
|
1219
|
+
}
|
|
1220
|
+
}
|
|
1221
|
+
}
|
|
1222
|
+
}
|
|
1223
|
+
},
|
|
1224
|
+
"responses": {
|
|
1225
|
+
"200": {
|
|
1226
|
+
"description": "The updated note",
|
|
1227
|
+
"content": {
|
|
1228
|
+
"application/json": {
|
|
1229
|
+
"schema": {
|
|
1230
|
+
"$ref": "#/components/schemas/BlueprintNote"
|
|
1231
|
+
}
|
|
1232
|
+
}
|
|
1233
|
+
}
|
|
1234
|
+
},
|
|
1235
|
+
"400": {
|
|
1236
|
+
"description": "Blank note text",
|
|
1237
|
+
"content": {
|
|
1238
|
+
"application/json": {
|
|
1239
|
+
"schema": {
|
|
1240
|
+
"type": "object",
|
|
1241
|
+
"properties": {
|
|
1242
|
+
"message": {
|
|
1243
|
+
"type": "string"
|
|
1244
|
+
}
|
|
1245
|
+
}
|
|
1246
|
+
}
|
|
1247
|
+
}
|
|
1248
|
+
}
|
|
1249
|
+
},
|
|
1250
|
+
"404": {
|
|
1251
|
+
"description": "Blueprint or note not found",
|
|
1252
|
+
"content": {
|
|
1253
|
+
"application/json": {
|
|
1254
|
+
"schema": {
|
|
1255
|
+
"type": "object",
|
|
1256
|
+
"properties": {
|
|
1257
|
+
"message": {
|
|
1258
|
+
"type": "string"
|
|
1259
|
+
}
|
|
1260
|
+
}
|
|
1261
|
+
}
|
|
1262
|
+
}
|
|
1263
|
+
}
|
|
1264
|
+
}
|
|
1265
|
+
}
|
|
1266
|
+
},
|
|
1176
1267
|
"delete": {
|
|
1177
1268
|
"operationId": "deleteBlueprintNote",
|
|
1178
1269
|
"summary": "deleteBlueprintNote",
|
|
@@ -2079,6 +2170,28 @@
|
|
|
2079
2170
|
"items": {
|
|
2080
2171
|
"$ref": "#/components/schemas/BlueprintResource"
|
|
2081
2172
|
}
|
|
2173
|
+
},
|
|
2174
|
+
"skipped": {
|
|
2175
|
+
"type": "array",
|
|
2176
|
+
"description": "Resources that were dropped during enrichment instead of being added",
|
|
2177
|
+
"items": {
|
|
2178
|
+
"$ref": "#/components/schemas/SkippedBlueprintResource"
|
|
2179
|
+
}
|
|
2180
|
+
},
|
|
2181
|
+
"errors": {
|
|
2182
|
+
"type": "array",
|
|
2183
|
+
"description": "Non-fatal dependency extraction failures encountered while enriching, deduplicated and capped. The listed resources were still added; some of their dependencies may be missing.",
|
|
2184
|
+
"items": {
|
|
2185
|
+
"$ref": "#/components/schemas/FormattedError"
|
|
2186
|
+
}
|
|
2187
|
+
},
|
|
2188
|
+
"total_errors": {
|
|
2189
|
+
"type": "integer",
|
|
2190
|
+
"description": "Total distinct dependency errors, before the cap applied to `errors`"
|
|
2191
|
+
},
|
|
2192
|
+
"errors_truncated": {
|
|
2193
|
+
"type": "boolean",
|
|
2194
|
+
"description": "Whether `errors` omits some of the distinct errors counted by `total_errors`"
|
|
2082
2195
|
}
|
|
2083
2196
|
}
|
|
2084
2197
|
}
|
|
@@ -2200,6 +2313,28 @@
|
|
|
2200
2313
|
"items": {
|
|
2201
2314
|
"$ref": "#/components/schemas/BlueprintResource"
|
|
2202
2315
|
}
|
|
2316
|
+
},
|
|
2317
|
+
"skipped": {
|
|
2318
|
+
"type": "array",
|
|
2319
|
+
"description": "Resources that were dropped during enrichment instead of being added",
|
|
2320
|
+
"items": {
|
|
2321
|
+
"$ref": "#/components/schemas/SkippedBlueprintResource"
|
|
2322
|
+
}
|
|
2323
|
+
},
|
|
2324
|
+
"errors": {
|
|
2325
|
+
"type": "array",
|
|
2326
|
+
"description": "Non-fatal dependency extraction failures encountered while enriching, deduplicated and capped. The listed resources were still added; some of their dependencies may be missing.",
|
|
2327
|
+
"items": {
|
|
2328
|
+
"$ref": "#/components/schemas/FormattedError"
|
|
2329
|
+
}
|
|
2330
|
+
},
|
|
2331
|
+
"total_errors": {
|
|
2332
|
+
"type": "integer",
|
|
2333
|
+
"description": "Total distinct dependency errors, before the cap applied to `errors`"
|
|
2334
|
+
},
|
|
2335
|
+
"errors_truncated": {
|
|
2336
|
+
"type": "boolean",
|
|
2337
|
+
"description": "Whether `errors` omits some of the distinct errors counted by `total_errors`"
|
|
2203
2338
|
}
|
|
2204
2339
|
}
|
|
2205
2340
|
}
|
|
@@ -2415,7 +2550,7 @@
|
|
|
2415
2550
|
"/v2/blueprint-manifest/jobs": {
|
|
2416
2551
|
"get": {
|
|
2417
2552
|
"operationId": "listBlueprintJobs",
|
|
2418
|
-
"summary": "
|
|
2553
|
+
"summary": "listBlueprintJobs",
|
|
2419
2554
|
"description": "List all blueprint jobs",
|
|
2420
2555
|
"tags": [
|
|
2421
2556
|
"Jobs"
|
|
@@ -2449,7 +2584,7 @@
|
|
|
2449
2584
|
"/v2/blueprint-manifest/jobs/{job_id}": {
|
|
2450
2585
|
"get": {
|
|
2451
2586
|
"operationId": "getBlueprintJob",
|
|
2452
|
-
"summary": "
|
|
2587
|
+
"summary": "getBlueprintJob",
|
|
2453
2588
|
"description": "Poll the current state of a job. Serves both Terraform (v2) and V3-engine jobs —\ncheck `sync_engine` (`terraform` | `v3`) to tell them apart. V3 jobs additionally\nexpose live `resource_progress[]`. V3 single-install and bulk-install child jobs\nare polled here.\n",
|
|
2454
2589
|
"tags": [
|
|
2455
2590
|
"Jobs"
|
|
@@ -2481,7 +2616,7 @@
|
|
|
2481
2616
|
"/v2/blueprint-manifest/jobs/{job_id}:continue": {
|
|
2482
2617
|
"post": {
|
|
2483
2618
|
"operationId": "continueInstallationJob",
|
|
2484
|
-
"summary": "
|
|
2619
|
+
"summary": "continueInstallationJob",
|
|
2485
2620
|
"description": "Resume an installation job that is paused at `status: \"WAITING_USER_ACTION\"` after\nplanning. Works for both Terraform and V3 jobs. Not needed for V3 installs created\nwith `auto_apply: true` (including all bulk-install child jobs), which apply\nwithout pausing.\n",
|
|
2486
2621
|
"tags": [
|
|
2487
2622
|
"Jobs"
|
|
@@ -2523,7 +2658,7 @@
|
|
|
2523
2658
|
"/v2/blueprint-manifest/jobs/{job_id}:cancel": {
|
|
2524
2659
|
"post": {
|
|
2525
2660
|
"operationId": "cancelBlueprintJob",
|
|
2526
|
-
"summary": "
|
|
2661
|
+
"summary": "cancelBlueprintJob",
|
|
2527
2662
|
"description": "Cancel a blueprint job if it is still running.",
|
|
2528
2663
|
"tags": [
|
|
2529
2664
|
"Jobs"
|
|
@@ -3034,8 +3169,8 @@
|
|
|
3034
3169
|
"/v3/blueprint-manifest/blueprints/{blueprint_id}:publish": {
|
|
3035
3170
|
"post": {
|
|
3036
3171
|
"operationId": "publishBlueprintV3",
|
|
3037
|
-
"summary": "
|
|
3038
|
-
"description": "Starts an asynchronous V3 publication. The result is a signed, portable package; poll the existing blueprint job endpoint for completion.",
|
|
3172
|
+
"summary": "publishBlueprintV3",
|
|
3173
|
+
"description": "Starts an asynchronous V3 publication. The result is a signed, portable package; poll the existing blueprint job endpoint for completion.\n\nBy default this only builds the package and stores it privately for download. Creating or\noverwriting the public marketplace listing is opt-in via `publish_to_marketplace`.\n",
|
|
3039
3174
|
"tags": [
|
|
3040
3175
|
"Blueprints"
|
|
3041
3176
|
],
|
|
@@ -3049,6 +3184,23 @@
|
|
|
3049
3184
|
}
|
|
3050
3185
|
}
|
|
3051
3186
|
],
|
|
3187
|
+
"requestBody": {
|
|
3188
|
+
"required": false,
|
|
3189
|
+
"content": {
|
|
3190
|
+
"application/json": {
|
|
3191
|
+
"schema": {
|
|
3192
|
+
"type": "object",
|
|
3193
|
+
"properties": {
|
|
3194
|
+
"publish_to_marketplace": {
|
|
3195
|
+
"type": "boolean",
|
|
3196
|
+
"default": false,
|
|
3197
|
+
"description": "When true, upload the package with public access and create or overwrite the\nblueprint's Webflow CMS listing. Leave unset for a download-only package build.\n"
|
|
3198
|
+
}
|
|
3199
|
+
}
|
|
3200
|
+
}
|
|
3201
|
+
}
|
|
3202
|
+
}
|
|
3203
|
+
},
|
|
3052
3204
|
"responses": {
|
|
3053
3205
|
"202": {
|
|
3054
3206
|
"description": "Blueprint export job started",
|
|
@@ -3081,7 +3233,7 @@
|
|
|
3081
3233
|
"/v3/blueprint-manifest/blueprints:pre-install": {
|
|
3082
3234
|
"post": {
|
|
3083
3235
|
"operationId": "preInstallBlueprintV3",
|
|
3084
|
-
"summary": "
|
|
3236
|
+
"summary": "preInstallBlueprintV3",
|
|
3085
3237
|
"description": "Validates a signed V3 package and returns the destination-specific resource plan used by the install UI.",
|
|
3086
3238
|
"tags": [
|
|
3087
3239
|
"Blueprints"
|
|
@@ -3138,7 +3290,7 @@
|
|
|
3138
3290
|
"/v3/blueprint-manifest/blueprint:install": {
|
|
3139
3291
|
"post": {
|
|
3140
3292
|
"operationId": "installBlueprintV3",
|
|
3141
|
-
"summary": "
|
|
3293
|
+
"summary": "installBlueprintV3",
|
|
3142
3294
|
"description": "Install a blueprint into a single destination org using the V3 engine (direct API\ncalls, no Terraform). Creates resources in topological order with global ID\nreplacement and supports checkpoint-based resume on failure.\n\n**Lifecycle (how to drive an install to completion):**\n1. `POST /v3/blueprint-manifest/blueprint:install` returns `{ job_id }` (202).\n2. Poll the job with `GET /v2/blueprint-manifest/jobs/{job_id}` — V3 jobs are\n served by the same v2 jobs endpoints as Terraform jobs and are identified by\n `sync_engine: \"v3\"`. Watch `status` and `resource_progress[]`.\n3. If `auto_apply` is `false` (default), the job pauses at\n `status: \"WAITING_USER_ACTION\"` after planning. Resume it with\n `POST /v2/blueprint-manifest/jobs/{job_id}:continue`.\n4. If `auto_apply` is `true`, the engine applies automatically after plan +\n snapshot — no `:continue` call is needed. This is what the bulk-install worker\n uses; to install into many orgs at once prefer `POST .../bulk-installs`.\n\nFor cross-org installs, pass `destination_auth_token` (the destination org's\ntoken); reads use the caller's bearer token, writes use that token.\n",
|
|
3143
3295
|
"tags": [
|
|
3144
3296
|
"Blueprints"
|
|
@@ -3276,7 +3428,7 @@
|
|
|
3276
3428
|
"/v3/blueprint-manifest/blueprints/{blueprint_id}/deployments/{job_id}:restore": {
|
|
3277
3429
|
"post": {
|
|
3278
3430
|
"operationId": "restoreBlueprintDeploymentV3",
|
|
3279
|
-
"summary": "
|
|
3431
|
+
"summary": "restoreBlueprintDeploymentV3",
|
|
3280
3432
|
"description": "Roll a deployment back to its pre-install state. Two phases:\n\n 1. Upsert — re-applies the captured payloads via snapshot-api's\n `:restore` (server-side; runs config-engine.apply with captured\n target ids pre-seeded). Skipped for pure-create deployments\n whose snapshot was empty.\n 2. Delete sweep — for lineage rows of this blueprint instance not\n present in the snapshot's captured set, deletes the live\n resource via the type's adapter. Co-ownership / drift /\n no-delete-capability skip the entry with the corresponding\n reason.\n\nResolves `(blueprint_id, job_id)` to the entry in\n`Blueprint.deployments[]` and reads its `snapshot_id` and\n`destination_blueprint_id` — the caller never needs to handle\nsnapshot ids directly.\n\nAsync — returns 202 with a job id. Poll the job to track progress.\nThe per-instance lock (`installation_status === 'IN_PROGRESS'`)\nrejects concurrent installs or restores with 409.\n",
|
|
3281
3433
|
"tags": [
|
|
3282
3434
|
"Blueprints"
|
|
@@ -3344,7 +3496,7 @@
|
|
|
3344
3496
|
"/v3/blueprint-manifest/blueprints/{blueprint_id}/deployments/{job_id}/restore-preview": {
|
|
3345
3497
|
"get": {
|
|
3346
3498
|
"operationId": "getRestorePreview",
|
|
3347
|
-
"summary": "
|
|
3499
|
+
"summary": "getRestorePreview",
|
|
3348
3500
|
"description": "Computes what would happen if the user triggered a restore on this\ndeployment, without performing any writes. The forecast uses the\nsnapshot's captured resources (when present) plus the current lineage\nstate plus per-adapter gates (co-ownership, no-delete-capability,\nheuristic-match, drift when wired).\n\nIdempotent and side-effect free. Safe to call repeatedly. The result\nmay shift between calls if operators edit destination resources or\nanother blueprint adopts a shared resource in the meantime.\n",
|
|
3349
3501
|
"tags": [
|
|
3350
3502
|
"Blueprints"
|
|
@@ -3388,7 +3540,7 @@
|
|
|
3388
3540
|
"/v3/blueprint-manifest/blueprints/{blueprint_id}/deployments/{job_id}:health-check": {
|
|
3389
3541
|
"post": {
|
|
3390
3542
|
"operationId": "triggerDeploymentHealthCheckV3",
|
|
3391
|
-
"summary": "
|
|
3543
|
+
"summary": "triggerDeploymentHealthCheckV3",
|
|
3392
3544
|
"description": "Starts a read-only health scan of the resources this deployment's\nblueprint instance tracks in the destination org (see\ndocs/rfcs/RFC-org-health-check.md, Phase 0). Checks:\n\n - live readability — every lineage-tracked resource is read back\n via its adapter; tracked-but-unreadable resources are flagged.\n - referential integrity — destination payloads containing\n unreplaced source-org ids, or references to tracked resources\n that are not readable.\n - install completeness — install operations whose final attempt\n ended `failed` or `skipped`, with their rejection reasons.\n\nAsync — returns 202 immediately with a `running` report stub. Poll\nthe health-report endpoint until `status` is `completed` or\n`failed`. Never mutates any resource.\n",
|
|
3393
3545
|
"tags": [
|
|
3394
3546
|
"Blueprints"
|
|
@@ -3460,7 +3612,7 @@
|
|
|
3460
3612
|
"/v3/blueprint-manifest/blueprints/{blueprint_id}/deployments/{job_id}/health-report": {
|
|
3461
3613
|
"get": {
|
|
3462
3614
|
"operationId": "getDeploymentHealthReportV3",
|
|
3463
|
-
"summary": "
|
|
3615
|
+
"summary": "getDeploymentHealthReportV3",
|
|
3464
3616
|
"description": "Returns the most recent health report produced for this deployment\nby the `:health-check` endpoint. Idempotent and side-effect free.\n",
|
|
3465
3617
|
"tags": [
|
|
3466
3618
|
"Blueprints"
|
|
@@ -3503,7 +3655,7 @@
|
|
|
3503
3655
|
"/v3/blueprint-manifest/blueprints/{blueprint_id}/lineage": {
|
|
3504
3656
|
"get": {
|
|
3505
3657
|
"operationId": "getBlueprintLineageV3",
|
|
3506
|
-
"summary": "
|
|
3658
|
+
"summary": "getBlueprintLineageV3",
|
|
3507
3659
|
"description": "Returns the lineage registry entries for a blueprint's resources in the current org.\nShows the mapping between source lineage IDs and target resource IDs.\n",
|
|
3508
3660
|
"tags": [
|
|
3509
3661
|
"Blueprints"
|
|
@@ -3546,7 +3698,7 @@
|
|
|
3546
3698
|
"/v3/blueprint-manifest/bulk-installs": {
|
|
3547
3699
|
"post": {
|
|
3548
3700
|
"operationId": "createBulkInstallV3",
|
|
3549
|
-
"summary": "
|
|
3701
|
+
"summary": "createBulkInstallV3",
|
|
3550
3702
|
"description": "Install one source blueprint into many destination organizations in a single\nrequest. The server schedules child V3 installs with `auto_apply=true` and caps\nactive installs at `max_concurrency`. Per-target failures are isolated and\nretryable; they do not stop the remaining targets.\n\nEach target carries its own write-only `destination_auth_token` (org-scoped).\nTokens are passed to the worker via Step Functions input only — they are never\npersisted in DynamoDB nor returned by any endpoint.\n",
|
|
3551
3703
|
"tags": [
|
|
3552
3704
|
"Blueprints"
|
|
@@ -3627,7 +3779,7 @@
|
|
|
3627
3779
|
"/v3/blueprint-manifest/bulk-installs/{bulk_job_id}": {
|
|
3628
3780
|
"get": {
|
|
3629
3781
|
"operationId": "getBulkInstallV3",
|
|
3630
|
-
"summary": "
|
|
3782
|
+
"summary": "getBulkInstallV3",
|
|
3631
3783
|
"description": "Returns the bulk install parent with aggregate status and counts. Scoped by the\ncaller org as `source_org_id`. Target rows are not included — use the targets\nendpoint to page through them.\n",
|
|
3632
3784
|
"tags": [
|
|
3633
3785
|
"Blueprints"
|
|
@@ -3662,7 +3814,7 @@
|
|
|
3662
3814
|
"/v3/blueprint-manifest/bulk-installs/{bulk_job_id}/targets": {
|
|
3663
3815
|
"get": {
|
|
3664
3816
|
"operationId": "listBulkInstallTargetsV3",
|
|
3665
|
-
"summary": "
|
|
3817
|
+
"summary": "listBulkInstallTargetsV3",
|
|
3666
3818
|
"description": "Pages through the bulk install's target rows. Each row hydrates its latest child\ninstall job (`job_ids.at(-1)`) with the standard V3 job shape (`events[]`,\n`resource_progress[]`) so callers can inspect per-resource progress and errors.\n",
|
|
3667
3819
|
"tags": [
|
|
3668
3820
|
"Blueprints"
|
|
@@ -3716,7 +3868,7 @@
|
|
|
3716
3868
|
"/v3/blueprint-manifest/bulk-installs/{bulk_job_id}/targets/{destination_org_id}:retry": {
|
|
3717
3869
|
"post": {
|
|
3718
3870
|
"operationId": "retryBulkInstallTargetV3",
|
|
3719
|
-
"summary": "
|
|
3871
|
+
"summary": "retryBulkInstallTargetV3",
|
|
3720
3872
|
"description": "Retries a single failed target. Allowed only for `FAILED` and `PARTIAL_SUCCESS`\ntargets. Starts a new child install with `auto_apply=true`, appends its job id to\n`job_ids`, and reuses the same target row. Only the destination auth token may be\nsupplied for the new attempt; source/destination identifiers are immutable.\n",
|
|
3721
3873
|
"tags": [
|
|
3722
3874
|
"Blueprints"
|
|
@@ -4211,6 +4363,11 @@
|
|
|
4211
4363
|
"type": "string",
|
|
4212
4364
|
"format": "date-time"
|
|
4213
4365
|
},
|
|
4366
|
+
"updated_at": {
|
|
4367
|
+
"type": "string",
|
|
4368
|
+
"format": "date-time",
|
|
4369
|
+
"description": "Set the first time the note text is edited."
|
|
4370
|
+
},
|
|
4214
4371
|
"created_by": {
|
|
4215
4372
|
"$ref": "#/components/schemas/CallerIdentity"
|
|
4216
4373
|
}
|
|
@@ -4255,7 +4412,7 @@
|
|
|
4255
4412
|
},
|
|
4256
4413
|
"notes": {
|
|
4257
4414
|
"type": "array",
|
|
4258
|
-
"description": "Internal collaboration notes, oldest first.
|
|
4415
|
+
"description": "Internal collaboration notes, oldest first. Each entry is stamped with\nits author and creation time server-side; an edit rewrites only `text`\nand stamps `updated_at`, so the history of who noted what stays intact.\nWritten via `addBlueprintNote` / `updateBlueprintNote` /\n`deleteBlueprintNote`, not by `updateBlueprint`.\n\nAvailable on every blueprint including marketplace ones (whose\n`description` is read-only), and never included in the published\nmarketplace package — see `buildMetadata` in\n`services/blueprint-v3/published-blueprint.ts`. Carried to a\ndestination org only when an install/sync passes\n`options.sync_notes: true`.\n",
|
|
4259
4416
|
"items": {
|
|
4260
4417
|
"$ref": "#/components/schemas/BlueprintNote"
|
|
4261
4418
|
}
|
|
@@ -4288,6 +4445,14 @@
|
|
|
4288
4445
|
"type": "string",
|
|
4289
4446
|
"format": "date-time"
|
|
4290
4447
|
},
|
|
4448
|
+
"performed_by": {
|
|
4449
|
+
"allOf": [
|
|
4450
|
+
{
|
|
4451
|
+
"$ref": "#/components/schemas/CallerIdentity"
|
|
4452
|
+
}
|
|
4453
|
+
],
|
|
4454
|
+
"description": "Who actually ran this synchronization — the caller of the install job.\nAbsent on deployments recorded before this field existed; consumers\nshould fall back to the blueprint's `updated_by` for those.\n"
|
|
4455
|
+
},
|
|
4291
4456
|
"note": {
|
|
4292
4457
|
"type": "string",
|
|
4293
4458
|
"description": "User-provided note about this synchronization"
|
|
@@ -4549,6 +4714,31 @@
|
|
|
4549
4714
|
}
|
|
4550
4715
|
}
|
|
4551
4716
|
},
|
|
4717
|
+
"SkippedBlueprintResource": {
|
|
4718
|
+
"type": "object",
|
|
4719
|
+
"description": "A resource that was requested (or discovered as a dependency) but was not\nadded to the Blueprint. Reasons are stable machine-readable codes.\n",
|
|
4720
|
+
"required": [
|
|
4721
|
+
"id",
|
|
4722
|
+
"type",
|
|
4723
|
+
"reason"
|
|
4724
|
+
],
|
|
4725
|
+
"properties": {
|
|
4726
|
+
"id": {
|
|
4727
|
+
"$ref": "#/components/schemas/BlueprintResourceID"
|
|
4728
|
+
},
|
|
4729
|
+
"type": {
|
|
4730
|
+
"$ref": "#/components/schemas/ResourceNodeType"
|
|
4731
|
+
},
|
|
4732
|
+
"reason": {
|
|
4733
|
+
"type": "string",
|
|
4734
|
+
"enum": [
|
|
4735
|
+
"not_found",
|
|
4736
|
+
"source_validation_failed",
|
|
4737
|
+
"enrichment_failed"
|
|
4738
|
+
]
|
|
4739
|
+
}
|
|
4740
|
+
}
|
|
4741
|
+
},
|
|
4552
4742
|
"BlueprintResource": {
|
|
4553
4743
|
"type": "object",
|
|
4554
4744
|
"properties": {
|
|
@@ -4665,6 +4855,14 @@
|
|
|
4665
4855
|
"file"
|
|
4666
4856
|
]
|
|
4667
4857
|
},
|
|
4858
|
+
"sync_engine": {
|
|
4859
|
+
"type": "string",
|
|
4860
|
+
"description": "Engine that must install this preview, detected from the uploaded archive's own format (never from a feature flag or request parameter). `v3` is only reported for a correctly shaped and validly signed V3 package. Clients must install a `v3` preview through `POST /v3/blueprint-manifest/blueprint:install` and a `terraform` preview through `POST /v2/blueprint-manifest/blueprints:install`. Absent only on previews created before format detection shipped; treat an absent value as `terraform`.",
|
|
4861
|
+
"enum": [
|
|
4862
|
+
"terraform",
|
|
4863
|
+
"v3"
|
|
4864
|
+
]
|
|
4865
|
+
},
|
|
4668
4866
|
"blueprint_file_s3_key": {
|
|
4669
4867
|
"type": "string",
|
|
4670
4868
|
"description": "S3 key of the blueprint zip file"
|
|
@@ -6301,6 +6499,7 @@
|
|
|
6301
6499
|
"webhook",
|
|
6302
6500
|
"integration",
|
|
6303
6501
|
"dashboard",
|
|
6502
|
+
"insight",
|
|
6304
6503
|
"custom_variable",
|
|
6305
6504
|
"usergroup",
|
|
6306
6505
|
"saved_view",
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"openapi": "3.0.3",
|
|
3
3
|
"info": {
|
|
4
4
|
"title": "Integration Toolkit API",
|
|
5
|
-
"version": "1.
|
|
5
|
+
"version": "1.10.0",
|
|
6
6
|
"description": "API for integrating with external systems in a standardised way."
|
|
7
7
|
},
|
|
8
8
|
"tags": [
|
|
@@ -3891,6 +3891,16 @@
|
|
|
3891
3891
|
}
|
|
3892
3892
|
}
|
|
3893
3893
|
],
|
|
3894
|
+
"requestBody": {
|
|
3895
|
+
"required": false,
|
|
3896
|
+
"content": {
|
|
3897
|
+
"application/json": {
|
|
3898
|
+
"schema": {
|
|
3899
|
+
"$ref": "#/components/schemas/ExecuteErpImportRequest"
|
|
3900
|
+
}
|
|
3901
|
+
}
|
|
3902
|
+
}
|
|
3903
|
+
},
|
|
3894
3904
|
"responses": {
|
|
3895
3905
|
"200": {
|
|
3896
3906
|
"description": "Execution started",
|
|
@@ -3911,6 +3921,16 @@
|
|
|
3911
3921
|
"409": {
|
|
3912
3922
|
"$ref": "#/components/responses/Conflict"
|
|
3913
3923
|
},
|
|
3924
|
+
"422": {
|
|
3925
|
+
"description": "The verdict carries warnings and `ack_warnings` was not true",
|
|
3926
|
+
"content": {
|
|
3927
|
+
"application/json": {
|
|
3928
|
+
"schema": {
|
|
3929
|
+
"$ref": "#/components/schemas/ErrorResponseBase"
|
|
3930
|
+
}
|
|
3931
|
+
}
|
|
3932
|
+
}
|
|
3933
|
+
},
|
|
3914
3934
|
"500": {
|
|
3915
3935
|
"$ref": "#/components/responses/InternalServerError"
|
|
3916
3936
|
}
|
|
@@ -4005,6 +4025,57 @@
|
|
|
4005
4025
|
}
|
|
4006
4026
|
}
|
|
4007
4027
|
},
|
|
4028
|
+
"ExecuteErpImportRequest": {
|
|
4029
|
+
"type": "object",
|
|
4030
|
+
"description": "Confirmation options. Required only when the verdict carries warnings — a clean import needs no body at all.",
|
|
4031
|
+
"properties": {
|
|
4032
|
+
"ack_warnings": {
|
|
4033
|
+
"type": "boolean",
|
|
4034
|
+
"description": "The caller has seen `validation.issues` and accepts them. Required when `validation.warnings` is greater than 0; ignored otherwise."
|
|
4035
|
+
}
|
|
4036
|
+
}
|
|
4037
|
+
},
|
|
4038
|
+
"ErpImportIssue": {
|
|
4039
|
+
"type": "object",
|
|
4040
|
+
"description": "A problem found during validation, scoped to the file as a whole rather than to individual rows. See `code` for the kinds reported.",
|
|
4041
|
+
"required": [
|
|
4042
|
+
"code",
|
|
4043
|
+
"severity",
|
|
4044
|
+
"message"
|
|
4045
|
+
],
|
|
4046
|
+
"properties": {
|
|
4047
|
+
"code": {
|
|
4048
|
+
"type": "string",
|
|
4049
|
+
"description": "Enum of possible issue codes.\n",
|
|
4050
|
+
"enum": [
|
|
4051
|
+
"UNIQUE_ID_COLUMN_MISSING",
|
|
4052
|
+
"MAPPED_COLUMN_MISSING",
|
|
4053
|
+
"MALFORMED_ROW",
|
|
4054
|
+
"INVALID_ENCODING",
|
|
4055
|
+
"EMPTY_FILE",
|
|
4056
|
+
"TOO_MANY_ROWS"
|
|
4057
|
+
]
|
|
4058
|
+
},
|
|
4059
|
+
"severity": {
|
|
4060
|
+
"type": "string",
|
|
4061
|
+
"enum": [
|
|
4062
|
+
"warning",
|
|
4063
|
+
"blocking"
|
|
4064
|
+
]
|
|
4065
|
+
},
|
|
4066
|
+
"message": {
|
|
4067
|
+
"type": "string",
|
|
4068
|
+
"description": "User-facing explanation. Lists at most 10 column names; `columns` has all of them."
|
|
4069
|
+
},
|
|
4070
|
+
"columns": {
|
|
4071
|
+
"type": "array",
|
|
4072
|
+
"description": "The columns this issue is about, so clients render names rather than parsing the message.",
|
|
4073
|
+
"items": {
|
|
4074
|
+
"type": "string"
|
|
4075
|
+
}
|
|
4076
|
+
}
|
|
4077
|
+
}
|
|
4078
|
+
},
|
|
4008
4079
|
"ErpImportValidation": {
|
|
4009
4080
|
"type": "object",
|
|
4010
4081
|
"description": "Validate-phase summary: what the file will create, and whether it may be confirmed. Absent until the validate phase completes. No per-row detail is kept — a rejected file is corrected and imported again.",
|
|
@@ -4031,6 +4102,13 @@
|
|
|
4031
4102
|
"type": "integer"
|
|
4032
4103
|
},
|
|
4033
4104
|
"description": "Distinct entities the file expresses, keyed by entity slug."
|
|
4105
|
+
},
|
|
4106
|
+
"issues": {
|
|
4107
|
+
"type": "array",
|
|
4108
|
+
"description": "Whole-file issues. At most 20 are kept; the count of everything found is in blocking and warnings. Warnings here are what `ack_warnings` on `:execute` acknowledges.",
|
|
4109
|
+
"items": {
|
|
4110
|
+
"$ref": "#/components/schemas/ErpImportIssue"
|
|
4111
|
+
}
|
|
4034
4112
|
}
|
|
4035
4113
|
}
|
|
4036
4114
|
},
|
|
@@ -4055,16 +4133,21 @@
|
|
|
4055
4133
|
"type": "object",
|
|
4056
4134
|
"description": "Why the import failed — present if and only if status = FAILED.",
|
|
4057
4135
|
"required": [
|
|
4058
|
-
"
|
|
4136
|
+
"code",
|
|
4059
4137
|
"message"
|
|
4060
4138
|
],
|
|
4061
4139
|
"properties": {
|
|
4062
|
-
"
|
|
4140
|
+
"code": {
|
|
4063
4141
|
"type": "string",
|
|
4064
|
-
"description": "
|
|
4142
|
+
"description": "Enum of possible error codes.\n",
|
|
4065
4143
|
"enum": [
|
|
4066
4144
|
"VALIDATION_BLOCKED",
|
|
4067
|
-
"
|
|
4145
|
+
"FILE_FORMAT_UNSUPPORTED",
|
|
4146
|
+
"FILE_UNAVAILABLE",
|
|
4147
|
+
"VALIDATE_TIMEOUT",
|
|
4148
|
+
"IMPORT_TIMEOUT",
|
|
4149
|
+
"USE_CASE_NOT_USABLE",
|
|
4150
|
+
"IMPORT_NO_PROGRESS",
|
|
4068
4151
|
"INTERNAL_ERROR"
|
|
4069
4152
|
]
|
|
4070
4153
|
},
|
|
@@ -4125,7 +4208,7 @@
|
|
|
4125
4208
|
},
|
|
4126
4209
|
"status": {
|
|
4127
4210
|
"type": "string",
|
|
4128
|
-
"description": "PENDING → VALIDATING → READY → PROCESSING → IMPORTED, with FAILED reachable from any working status, and CANCELLING → CANCELLED reachable from VALIDATING or PROCESSING via :abort. IMPORTED, FAILED and CANCELLED are terminal and final.\nIMPORTED means every row was handed to the platform, not that the platform finished — per-row outcomes live in monitoring, filtered by correlation_id. A file that fails validation is FAILED with error.
|
|
4211
|
+
"description": "PENDING → VALIDATING → READY → PROCESSING → IMPORTED, with FAILED reachable from any working status, and CANCELLING → CANCELLED reachable from VALIDATING or PROCESSING via :abort. IMPORTED, FAILED and CANCELLED are terminal and final.\nIMPORTED means every row was handed to the platform, not that the platform finished — per-row outcomes live in monitoring, filtered by correlation_id. A file that fails validation is FAILED with error.code = VALIDATION_BLOCKED.\nREADY is legitimately idle for as long as the user takes to confirm, so it carries no running work and never goes stale.\nCANCELLING is transient and cooperative: the abort has been recorded but the worker only notices at its next batch boundary. Rows already published stay published — a stop is not a rollback.",
|
|
4129
4212
|
"enum": [
|
|
4130
4213
|
"PENDING",
|
|
4131
4214
|
"VALIDATING",
|
package/dist/bin/epilot.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
API_LIST
|
|
4
|
-
} from "../chunk-
|
|
4
|
+
} from "../chunk-5Y4OYCNI.js";
|
|
5
5
|
|
|
6
6
|
// bin/epilot.ts
|
|
7
7
|
import { runMain } from "citty";
|
|
@@ -11,7 +11,7 @@ import { defineCommand } from "citty";
|
|
|
11
11
|
var main = defineCommand({
|
|
12
12
|
meta: {
|
|
13
13
|
name: "epilot",
|
|
14
|
-
version: "0.1.
|
|
14
|
+
version: "0.1.99",
|
|
15
15
|
description: "CLI for epilot APIs"
|
|
16
16
|
},
|
|
17
17
|
args: {
|
|
@@ -30,8 +30,8 @@ var main = defineCommand({
|
|
|
30
30
|
auth: () => import("../auth-WMXFMPWE.js").then((m) => m.default),
|
|
31
31
|
profile: () => import("../profile-OZJL5ZPT.js").then((m) => m.default),
|
|
32
32
|
config: () => import("../config-DGZIMLZK.js").then((m) => m.default),
|
|
33
|
-
completion: () => import("../completion-
|
|
34
|
-
upgrade: () => import("../upgrade-
|
|
33
|
+
completion: () => import("../completion-W5V6EYUZ.js").then((m) => m.default),
|
|
34
|
+
upgrade: () => import("../upgrade-T2AWIWQL.js").then((m) => m.default),
|
|
35
35
|
"access-token": () => import("../access-token-WWE6BDJH.js").then((m) => m.default),
|
|
36
36
|
address: () => import("../address-EH3C4CVB.js").then((m) => m.default),
|
|
37
37
|
"address-suggestions": () => import("../address-suggestions-RRSLOBFW.js").then((m) => m.default),
|
|
@@ -134,13 +134,13 @@ process.stderr.on("error", (err) => {
|
|
|
134
134
|
if (err.code === "EPIPE") process.exit(0);
|
|
135
135
|
throw err;
|
|
136
136
|
});
|
|
137
|
-
var VERSION = true ? "0.1.
|
|
137
|
+
var VERSION = true ? "0.1.99" : (await null).default.version;
|
|
138
138
|
var reorderedArgv = hoistFlagsAfterSubcommand(process.argv.slice(2));
|
|
139
139
|
process.argv = [process.argv[0], process.argv[1], ...reorderedArgv];
|
|
140
140
|
var args = process.argv.slice(2);
|
|
141
141
|
var completionsIdx = args.indexOf("--_completions");
|
|
142
142
|
if (completionsIdx >= 0) {
|
|
143
|
-
const { handleCompletions } = await import("../completion-
|
|
143
|
+
const { handleCompletions } = await import("../completion-W5V6EYUZ.js");
|
|
144
144
|
handleCompletions(args[completionsIdx + 1], args[completionsIdx + 2]);
|
|
145
145
|
process.exit(0);
|
|
146
146
|
}
|
|
@@ -170,7 +170,7 @@ var API_LIST = [
|
|
|
170
170
|
kebabName: "blueprint-manifest",
|
|
171
171
|
title: "Blueprint Manifest API",
|
|
172
172
|
serverUrl: "https://blueprint-manifest.sls.epilot.io",
|
|
173
|
-
operationCount:
|
|
173
|
+
operationCount: 72,
|
|
174
174
|
operationIds: [
|
|
175
175
|
"getJob",
|
|
176
176
|
"createExport",
|
|
@@ -192,6 +192,7 @@ var API_LIST = [
|
|
|
192
192
|
"updateBlueprint",
|
|
193
193
|
"deleteBlueprint",
|
|
194
194
|
"addBlueprintNote",
|
|
195
|
+
"updateBlueprintNote",
|
|
195
196
|
"deleteBlueprintNote",
|
|
196
197
|
"validateBlueprint",
|
|
197
198
|
"verifyBlueprint",
|
|
@@ -72,7 +72,7 @@ ${GREEN}${BOLD}Upgraded to @epilot/cli@${latest}${RESET}
|
|
|
72
72
|
}
|
|
73
73
|
});
|
|
74
74
|
var getCurrentVersion = () => {
|
|
75
|
-
if (true) return "0.1.
|
|
75
|
+
if (true) return "0.1.99";
|
|
76
76
|
try {
|
|
77
77
|
const output = execSync("npm ls -g @epilot/cli --depth=0 --json 2>/dev/null", {
|
|
78
78
|
encoding: "utf-8",
|