@epilot/blueprint-manifest-client 4.7.0 → 5.0.0

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/dist/openapi.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "openapi": "3.0.2",
3
3
  "info": {
4
4
  "title": "Blueprint Manifest API",
5
- "version": "4.6.4",
5
+ "version": "4.7.0",
6
6
  "description": "Service to create and install Blueprint Manifest files"
7
7
  },
8
8
  "tags": [
@@ -37,6 +37,10 @@
37
37
  {
38
38
  "name": "Marketplace Listing Versions",
39
39
  "description": "Manage versions for marketplace listings"
40
+ },
41
+ {
42
+ "name": "Patches",
43
+ "description": "Manage blueprint patches for mass rollouts"
40
44
  }
41
45
  ],
42
46
  "security": [
@@ -924,6 +928,14 @@
924
928
  "destination_blueprint_id": {
925
929
  "$ref": "#/components/schemas/BlueprintID"
926
930
  },
931
+ "source_auth_token": {
932
+ "type": "string",
933
+ "description": "Auth token with access to the source org. Required for cross-org auto-verification when the caller's bearer token belongs to the destination org."
934
+ },
935
+ "destination_auth_token": {
936
+ "type": "string",
937
+ "description": "Auth token with access to the destination org. Defaults to the caller's bearer token."
938
+ },
927
939
  "options": {
928
940
  "$ref": "#/components/schemas/BlueprintInstallationJobOptions"
929
941
  },
@@ -1184,6 +1196,10 @@
1184
1196
  "source_auth_token": {
1185
1197
  "type": "string",
1186
1198
  "description": "Auth token with access to the source org (e.g. pipeline token). If not provided, the caller's bearer token is used for both orgs."
1199
+ },
1200
+ "destination_auth_token": {
1201
+ "type": "string",
1202
+ "description": "Auth token with access to the destination org. Required for cross-org verification when the caller token only has access to the source org. If not provided, the caller's bearer token is used for both orgs."
1187
1203
  }
1188
1204
  }
1189
1205
  }
@@ -1220,6 +1236,365 @@
1220
1236
  }
1221
1237
  }
1222
1238
  },
1239
+ "/v2/blueprint-manifest/blueprints/{blueprint_id}/patches:detect": {
1240
+ "post": {
1241
+ "operationId": "detectPatchChanges",
1242
+ "summary": "detectPatchChanges",
1243
+ "description": "Detect changes between the current state of a blueprint's resources and its tfstate baseline.\nReturns field-level diffs for resources that have been modified since the blueprint was last installed/exported.\n",
1244
+ "tags": [
1245
+ "Patches"
1246
+ ],
1247
+ "parameters": [
1248
+ {
1249
+ "in": "path",
1250
+ "required": true,
1251
+ "name": "blueprint_id",
1252
+ "schema": {
1253
+ "$ref": "#/components/schemas/BlueprintID"
1254
+ }
1255
+ }
1256
+ ],
1257
+ "requestBody": {
1258
+ "content": {
1259
+ "application/json": {
1260
+ "schema": {
1261
+ "type": "object",
1262
+ "properties": {
1263
+ "source_org_id": {
1264
+ "type": "string",
1265
+ "description": "Organization ID of the source org where changes were made"
1266
+ },
1267
+ "dest_org_id": {
1268
+ "type": "string",
1269
+ "description": "Organization ID of a destination org (used to load tfstate baseline)"
1270
+ },
1271
+ "dest_blueprint_id": {
1272
+ "type": "string",
1273
+ "description": "Blueprint ID in the destination org (used to locate tfstate in S3)"
1274
+ },
1275
+ "rollout_id": {
1276
+ "type": "string",
1277
+ "description": "ID of the mass rollout"
1278
+ }
1279
+ }
1280
+ }
1281
+ }
1282
+ }
1283
+ },
1284
+ "responses": {
1285
+ "200": {
1286
+ "description": "Detected changes",
1287
+ "content": {
1288
+ "application/json": {
1289
+ "schema": {
1290
+ "$ref": "#/components/schemas/DetectChangesResult"
1291
+ }
1292
+ }
1293
+ }
1294
+ }
1295
+ }
1296
+ }
1297
+ },
1298
+ "/v2/blueprint-manifest/blueprints/{blueprint_id}/patches": {
1299
+ "post": {
1300
+ "operationId": "createPatch",
1301
+ "summary": "createPatch",
1302
+ "description": "Create a new patch for a blueprint.",
1303
+ "tags": [
1304
+ "Patches"
1305
+ ],
1306
+ "parameters": [
1307
+ {
1308
+ "in": "path",
1309
+ "required": true,
1310
+ "name": "blueprint_id",
1311
+ "schema": {
1312
+ "$ref": "#/components/schemas/BlueprintID"
1313
+ }
1314
+ }
1315
+ ],
1316
+ "requestBody": {
1317
+ "required": true,
1318
+ "content": {
1319
+ "application/json": {
1320
+ "schema": {
1321
+ "type": "object",
1322
+ "required": [
1323
+ "blueprint_id",
1324
+ "rollout_id",
1325
+ "source_org_id",
1326
+ "name",
1327
+ "resources"
1328
+ ],
1329
+ "properties": {
1330
+ "blueprint_id": {
1331
+ "$ref": "#/components/schemas/BlueprintID"
1332
+ },
1333
+ "rollout_id": {
1334
+ "type": "string"
1335
+ },
1336
+ "source_org_id": {
1337
+ "type": "string"
1338
+ },
1339
+ "name": {
1340
+ "type": "string"
1341
+ },
1342
+ "description": {
1343
+ "type": "string"
1344
+ },
1345
+ "resources": {
1346
+ "type": "array",
1347
+ "items": {
1348
+ "$ref": "#/components/schemas/PatchResourceDiff"
1349
+ }
1350
+ },
1351
+ "changelog": {
1352
+ "type": "string"
1353
+ }
1354
+ }
1355
+ }
1356
+ }
1357
+ }
1358
+ },
1359
+ "responses": {
1360
+ "201": {
1361
+ "description": "Patch created",
1362
+ "content": {
1363
+ "application/json": {
1364
+ "schema": {
1365
+ "$ref": "#/components/schemas/BlueprintPatch"
1366
+ }
1367
+ }
1368
+ }
1369
+ }
1370
+ }
1371
+ },
1372
+ "get": {
1373
+ "operationId": "listPatches",
1374
+ "summary": "listPatches",
1375
+ "description": "List all patches for a blueprint.",
1376
+ "tags": [
1377
+ "Patches"
1378
+ ],
1379
+ "parameters": [
1380
+ {
1381
+ "in": "path",
1382
+ "required": true,
1383
+ "name": "blueprint_id",
1384
+ "schema": {
1385
+ "$ref": "#/components/schemas/BlueprintID"
1386
+ }
1387
+ }
1388
+ ],
1389
+ "responses": {
1390
+ "200": {
1391
+ "description": "List of patches",
1392
+ "content": {
1393
+ "application/json": {
1394
+ "schema": {
1395
+ "type": "object",
1396
+ "properties": {
1397
+ "total": {
1398
+ "type": "integer"
1399
+ },
1400
+ "results": {
1401
+ "type": "array",
1402
+ "items": {
1403
+ "$ref": "#/components/schemas/BlueprintPatch"
1404
+ }
1405
+ }
1406
+ }
1407
+ }
1408
+ }
1409
+ }
1410
+ }
1411
+ }
1412
+ }
1413
+ },
1414
+ "/v2/blueprint-manifest/blueprints/{blueprint_id}/patches/{patch_id}": {
1415
+ "get": {
1416
+ "operationId": "getPatch",
1417
+ "summary": "getPatch",
1418
+ "description": "Get a patch by ID, including per-org execution results.",
1419
+ "tags": [
1420
+ "Patches"
1421
+ ],
1422
+ "parameters": [
1423
+ {
1424
+ "in": "path",
1425
+ "required": true,
1426
+ "name": "blueprint_id",
1427
+ "schema": {
1428
+ "$ref": "#/components/schemas/BlueprintID"
1429
+ }
1430
+ },
1431
+ {
1432
+ "in": "path",
1433
+ "required": true,
1434
+ "name": "patch_id",
1435
+ "schema": {
1436
+ "type": "string"
1437
+ }
1438
+ }
1439
+ ],
1440
+ "responses": {
1441
+ "200": {
1442
+ "description": "Patch details",
1443
+ "content": {
1444
+ "application/json": {
1445
+ "schema": {
1446
+ "$ref": "#/components/schemas/BlueprintPatchWithResults"
1447
+ }
1448
+ }
1449
+ }
1450
+ },
1451
+ "404": {
1452
+ "description": "Patch not found"
1453
+ }
1454
+ }
1455
+ }
1456
+ },
1457
+ "/v2/blueprint-manifest/blueprints/{blueprint_id}/patches/{patch_id}:apply": {
1458
+ "post": {
1459
+ "operationId": "applyPatch",
1460
+ "summary": "applyPatch",
1461
+ "description": "Apply a patch to a single destination org.",
1462
+ "tags": [
1463
+ "Patches"
1464
+ ],
1465
+ "parameters": [
1466
+ {
1467
+ "in": "path",
1468
+ "required": true,
1469
+ "name": "blueprint_id",
1470
+ "schema": {
1471
+ "$ref": "#/components/schemas/BlueprintID"
1472
+ }
1473
+ },
1474
+ {
1475
+ "in": "path",
1476
+ "required": true,
1477
+ "name": "patch_id",
1478
+ "schema": {
1479
+ "type": "string"
1480
+ }
1481
+ }
1482
+ ],
1483
+ "requestBody": {
1484
+ "required": true,
1485
+ "content": {
1486
+ "application/json": {
1487
+ "schema": {
1488
+ "type": "object",
1489
+ "required": [
1490
+ "org_id",
1491
+ "org_name",
1492
+ "dest_blueprint_id"
1493
+ ],
1494
+ "properties": {
1495
+ "org_id": {
1496
+ "type": "string"
1497
+ },
1498
+ "org_name": {
1499
+ "type": "string"
1500
+ },
1501
+ "dest_blueprint_id": {
1502
+ "type": "string"
1503
+ },
1504
+ "dest_org_id": {
1505
+ "type": "string"
1506
+ },
1507
+ "destination_auth_token": {
1508
+ "type": "string",
1509
+ "description": "Auth token with access to the destination org (e.g. pipeline token)"
1510
+ }
1511
+ }
1512
+ }
1513
+ }
1514
+ }
1515
+ },
1516
+ "responses": {
1517
+ "200": {
1518
+ "description": "Patch execution result",
1519
+ "content": {
1520
+ "application/json": {
1521
+ "schema": {
1522
+ "$ref": "#/components/schemas/OrgPatchExecution"
1523
+ }
1524
+ }
1525
+ }
1526
+ }
1527
+ }
1528
+ }
1529
+ },
1530
+ "/v2/blueprint-manifest/blueprints/{blueprint_id}/patches/{patch_id}/orgs/{org_id}:retry": {
1531
+ "post": {
1532
+ "operationId": "retryPatchOrg",
1533
+ "summary": "retryPatchOrg",
1534
+ "description": "Retry a failed patch execution for a specific org.",
1535
+ "tags": [
1536
+ "Patches"
1537
+ ],
1538
+ "parameters": [
1539
+ {
1540
+ "in": "path",
1541
+ "required": true,
1542
+ "name": "blueprint_id",
1543
+ "schema": {
1544
+ "$ref": "#/components/schemas/BlueprintID"
1545
+ }
1546
+ },
1547
+ {
1548
+ "in": "path",
1549
+ "required": true,
1550
+ "name": "patch_id",
1551
+ "schema": {
1552
+ "type": "string"
1553
+ }
1554
+ },
1555
+ {
1556
+ "in": "path",
1557
+ "required": true,
1558
+ "name": "org_id",
1559
+ "schema": {
1560
+ "type": "string"
1561
+ }
1562
+ }
1563
+ ],
1564
+ "requestBody": {
1565
+ "content": {
1566
+ "application/json": {
1567
+ "schema": {
1568
+ "type": "object",
1569
+ "properties": {
1570
+ "org_name": {
1571
+ "type": "string"
1572
+ },
1573
+ "dest_blueprint_id": {
1574
+ "type": "string"
1575
+ },
1576
+ "destination_auth_token": {
1577
+ "type": "string"
1578
+ }
1579
+ }
1580
+ }
1581
+ }
1582
+ }
1583
+ },
1584
+ "responses": {
1585
+ "200": {
1586
+ "description": "Retry execution result",
1587
+ "content": {
1588
+ "application/json": {
1589
+ "schema": {
1590
+ "$ref": "#/components/schemas/OrgPatchExecution"
1591
+ }
1592
+ }
1593
+ }
1594
+ }
1595
+ }
1596
+ }
1597
+ },
1223
1598
  "/v2/blueprint-manifest/blueprints/{blueprint_id}:export": {
1224
1599
  "post": {
1225
1600
  "operationId": "exportBlueprint",
@@ -1430,33 +1805,65 @@
1430
1805
  "content": {
1431
1806
  "application/json": {
1432
1807
  "schema": {
1433
- "type": "object",
1434
- "required": [
1435
- "text"
1436
- ],
1437
- "properties": {
1438
- "text": {
1439
- "type": "string",
1440
- "description": "Plain text to format as markdown"
1441
- }
1442
- }
1808
+ "type": "object",
1809
+ "required": [
1810
+ "text"
1811
+ ],
1812
+ "properties": {
1813
+ "text": {
1814
+ "type": "string",
1815
+ "description": "Plain text to format as markdown"
1816
+ }
1817
+ }
1818
+ }
1819
+ }
1820
+ }
1821
+ },
1822
+ "responses": {
1823
+ "200": {
1824
+ "description": "Successfully formatted description",
1825
+ "content": {
1826
+ "application/json": {
1827
+ "schema": {
1828
+ "type": "object",
1829
+ "properties": {
1830
+ "markdown": {
1831
+ "type": "string",
1832
+ "description": "AI-formatted markdown content"
1833
+ }
1834
+ }
1835
+ }
1836
+ }
1837
+ }
1838
+ }
1839
+ }
1840
+ }
1841
+ },
1842
+ "/v2/blueprint-manifest/blueprints:suggest-resources": {
1843
+ "post": {
1844
+ "operationId": "suggestBlueprintResources",
1845
+ "summary": "suggestBlueprintResources",
1846
+ "description": "Suggest resources to add to a blueprint based on a natural-language prompt.\n\nWalks anchor resource types in priority order (journey > workflow_definition >\nautomation_flow > schema > entity-backed types) and returns matches per\nanchor using each upstream API's text search. Suggestions are marked\n`is_root: true` so callers can pass `add_dependencies=true` to\nbulkAddBlueprintResources and have transitive dependencies resolved\nserver-side — which means a single matched journey can stand in for its\nfull product/schema/template bundle.\n\nNo side effects on the blueprint — the caller persists the chosen resources\nvia the existing create/bulk-add endpoints.\n",
1847
+ "tags": [
1848
+ "Blueprints"
1849
+ ],
1850
+ "requestBody": {
1851
+ "required": true,
1852
+ "content": {
1853
+ "application/json": {
1854
+ "schema": {
1855
+ "$ref": "#/components/schemas/SuggestBlueprintResourcesRequest"
1443
1856
  }
1444
1857
  }
1445
1858
  }
1446
1859
  },
1447
1860
  "responses": {
1448
1861
  "200": {
1449
- "description": "Successfully formatted description",
1862
+ "description": "Suggested resources",
1450
1863
  "content": {
1451
1864
  "application/json": {
1452
1865
  "schema": {
1453
- "type": "object",
1454
- "properties": {
1455
- "markdown": {
1456
- "type": "string",
1457
- "description": "AI-formatted markdown content"
1458
- }
1459
- }
1866
+ "$ref": "#/components/schemas/SuggestBlueprintResourcesResponse"
1460
1867
  }
1461
1868
  }
1462
1869
  }
@@ -2464,6 +2871,21 @@
2464
2871
  "application/json": {
2465
2872
  "schema": {
2466
2873
  "type": "object",
2874
+ "oneOf": [
2875
+ {
2876
+ "required": [
2877
+ "source_org_id",
2878
+ "source_blueprint_id",
2879
+ "destination_org_id"
2880
+ ]
2881
+ },
2882
+ {
2883
+ "required": [
2884
+ "source_blueprint_file",
2885
+ "destination_org_id"
2886
+ ]
2887
+ }
2888
+ ],
2467
2889
  "properties": {
2468
2890
  "source_org_id": {
2469
2891
  "type": "string"
@@ -2523,6 +2945,21 @@
2523
2945
  }
2524
2946
  }
2525
2947
  }
2948
+ },
2949
+ "400": {
2950
+ "description": "Missing required source or destination fields",
2951
+ "content": {
2952
+ "application/json": {
2953
+ "schema": {
2954
+ "type": "object",
2955
+ "properties": {
2956
+ "message": {
2957
+ "type": "string"
2958
+ }
2959
+ }
2960
+ }
2961
+ }
2962
+ }
2526
2963
  }
2527
2964
  }
2528
2965
  }
@@ -2606,6 +3043,177 @@
2606
3043
  }
2607
3044
  }
2608
3045
  },
3046
+ "PatchFieldDiff": {
3047
+ "type": "object",
3048
+ "properties": {
3049
+ "path": {
3050
+ "type": "string"
3051
+ },
3052
+ "op": {
3053
+ "type": "string",
3054
+ "enum": [
3055
+ "changed",
3056
+ "added",
3057
+ "removed"
3058
+ ]
3059
+ },
3060
+ "baseline_value": {},
3061
+ "current_value": {}
3062
+ }
3063
+ },
3064
+ "PatchResourceDiff": {
3065
+ "type": "object",
3066
+ "properties": {
3067
+ "type": {
3068
+ "type": "string"
3069
+ },
3070
+ "source_id": {
3071
+ "type": "string"
3072
+ },
3073
+ "address": {
3074
+ "type": "string"
3075
+ },
3076
+ "name": {
3077
+ "type": "string"
3078
+ },
3079
+ "changes": {
3080
+ "type": "array",
3081
+ "items": {
3082
+ "$ref": "#/components/schemas/PatchFieldDiff"
3083
+ }
3084
+ }
3085
+ }
3086
+ },
3087
+ "DetectChangesResult": {
3088
+ "type": "object",
3089
+ "properties": {
3090
+ "resources": {
3091
+ "type": "array",
3092
+ "items": {
3093
+ "$ref": "#/components/schemas/PatchResourceDiff"
3094
+ }
3095
+ }
3096
+ }
3097
+ },
3098
+ "BlueprintPatch": {
3099
+ "type": "object",
3100
+ "properties": {
3101
+ "patch_id": {
3102
+ "type": "string"
3103
+ },
3104
+ "version": {
3105
+ "type": "integer"
3106
+ },
3107
+ "blueprint_id": {
3108
+ "$ref": "#/components/schemas/BlueprintID"
3109
+ },
3110
+ "rollout_id": {
3111
+ "type": "string"
3112
+ },
3113
+ "source_org_id": {
3114
+ "type": "string"
3115
+ },
3116
+ "name": {
3117
+ "type": "string"
3118
+ },
3119
+ "description": {
3120
+ "type": "string"
3121
+ },
3122
+ "status": {
3123
+ "type": "string",
3124
+ "enum": [
3125
+ "draft",
3126
+ "ready",
3127
+ "applying",
3128
+ "applied",
3129
+ "partial"
3130
+ ]
3131
+ },
3132
+ "resources": {
3133
+ "type": "array",
3134
+ "items": {
3135
+ "$ref": "#/components/schemas/PatchResourceDiff"
3136
+ }
3137
+ },
3138
+ "changelog": {
3139
+ "type": "string"
3140
+ },
3141
+ "created_by": {
3142
+ "type": "string"
3143
+ },
3144
+ "created_at": {
3145
+ "type": "string",
3146
+ "format": "date-time"
3147
+ },
3148
+ "applied_at": {
3149
+ "type": "string",
3150
+ "format": "date-time"
3151
+ }
3152
+ }
3153
+ },
3154
+ "OrgPatchExecution": {
3155
+ "type": "object",
3156
+ "properties": {
3157
+ "patch_id": {
3158
+ "type": "string"
3159
+ },
3160
+ "version": {
3161
+ "type": "integer"
3162
+ },
3163
+ "org_id": {
3164
+ "type": "string"
3165
+ },
3166
+ "org_name": {
3167
+ "type": "string"
3168
+ },
3169
+ "dest_blueprint_id": {
3170
+ "type": "string"
3171
+ },
3172
+ "status": {
3173
+ "type": "string",
3174
+ "enum": [
3175
+ "pending",
3176
+ "in_progress",
3177
+ "success",
3178
+ "failed"
3179
+ ]
3180
+ },
3181
+ "error": {
3182
+ "type": "string"
3183
+ },
3184
+ "applied_at": {
3185
+ "type": "string",
3186
+ "format": "date-time"
3187
+ },
3188
+ "retries": {
3189
+ "type": "integer"
3190
+ },
3191
+ "changes_applied": {
3192
+ "type": "array",
3193
+ "items": {
3194
+ "$ref": "#/components/schemas/PatchFieldDiff"
3195
+ }
3196
+ }
3197
+ }
3198
+ },
3199
+ "BlueprintPatchWithResults": {
3200
+ "allOf": [
3201
+ {
3202
+ "$ref": "#/components/schemas/BlueprintPatch"
3203
+ },
3204
+ {
3205
+ "type": "object",
3206
+ "properties": {
3207
+ "org_results": {
3208
+ "type": "array",
3209
+ "items": {
3210
+ "$ref": "#/components/schemas/OrgPatchExecution"
3211
+ }
3212
+ }
3213
+ }
3214
+ }
3215
+ ]
3216
+ },
2609
3217
  "BlueprintID": {
2610
3218
  "type": "string",
2611
3219
  "description": "ID of a blueprint",
@@ -2663,6 +3271,10 @@
2663
3271
  "destination_blueprint_id": {
2664
3272
  "type": "string"
2665
3273
  },
3274
+ "job_id": {
3275
+ "type": "string",
3276
+ "description": "Blueprint installation job that created or updated this deployment record"
3277
+ },
2666
3278
  "triggered_at": {
2667
3279
  "type": "string",
2668
3280
  "format": "date-time"
@@ -2670,6 +3282,16 @@
2670
3282
  "note": {
2671
3283
  "type": "string",
2672
3284
  "description": "User-provided note about this synchronization"
3285
+ },
3286
+ "status": {
3287
+ "type": "string",
3288
+ "description": "Outcome of this deployment",
3289
+ "enum": [
3290
+ "IN_PROGRESS",
3291
+ "SUCCESS",
3292
+ "PARTIAL_SUCCESS",
3293
+ "FAILED"
3294
+ ]
2673
3295
  }
2674
3296
  }
2675
3297
  }
@@ -2771,6 +3393,55 @@
2771
3393
  "title"
2772
3394
  ]
2773
3395
  },
3396
+ "SuggestBlueprintResourcesRequest": {
3397
+ "type": "object",
3398
+ "required": [
3399
+ "prompt"
3400
+ ],
3401
+ "properties": {
3402
+ "prompt": {
3403
+ "type": "string",
3404
+ "description": "Natural-language description of what to include.",
3405
+ "example": "everything for the hausanschluss use case"
3406
+ },
3407
+ "blueprint_id": {
3408
+ "allOf": [
3409
+ {
3410
+ "$ref": "#/components/schemas/BlueprintID"
3411
+ }
3412
+ ],
3413
+ "description": "When provided, suggestions are scoped as additions to this existing\nblueprint — resources already in it are excluded from the response.\n"
3414
+ }
3415
+ }
3416
+ },
3417
+ "SuggestBlueprintResourcesResponse": {
3418
+ "type": "object",
3419
+ "required": [
3420
+ "resources"
3421
+ ],
3422
+ "properties": {
3423
+ "resources": {
3424
+ "type": "array",
3425
+ "description": "Suggested resources to add. All marked is_root so the caller can request transitive dependency resolution.",
3426
+ "items": {
3427
+ "$ref": "#/components/schemas/BlueprintResource"
3428
+ }
3429
+ },
3430
+ "suggested_blueprint_name": {
3431
+ "type": "string",
3432
+ "description": "Short title derived from the prompt. Useful when the caller is\ncreating a new blueprint as a result of the suggestion — saves the\nuser from naming it themselves.\n",
3433
+ "example": "Hausanschluss"
3434
+ },
3435
+ "explanation": {
3436
+ "type": "string",
3437
+ "description": "Short human-readable summary of what was matched and why."
3438
+ },
3439
+ "add_dependencies_recommended": {
3440
+ "type": "boolean",
3441
+ "description": "Hint to the caller: persist via bulkAddBlueprintResources with\n?add_dependencies=true so anchor resources (journeys, workflows)\npull their transitive dependencies.\n"
3442
+ }
3443
+ }
3444
+ },
2774
3445
  "BlueprintResource": {
2775
3446
  "type": "object",
2776
3447
  "properties": {
@@ -3269,6 +3940,21 @@
3269
3940
  "type": "string",
3270
3941
  "description": "Blueprint slug for marketplace blueprints"
3271
3942
  },
3943
+ "sync_engine": {
3944
+ "type": "string",
3945
+ "enum": [
3946
+ "terraform",
3947
+ "v3"
3948
+ ],
3949
+ "description": "Engine used for this install job"
3950
+ },
3951
+ "resource_progress": {
3952
+ "type": "array",
3953
+ "description": "Per-resource live status. Populated only for V3 installs.",
3954
+ "items": {
3955
+ "$ref": "#/components/schemas/V3ResourceProgressEntry"
3956
+ }
3957
+ },
3272
3958
  "status": {
3273
3959
  "type": "string",
3274
3960
  "enum": [
@@ -3284,6 +3970,45 @@
3284
3970
  }
3285
3971
  ]
3286
3972
  },
3973
+ "V3ResourceProgressEntry": {
3974
+ "type": "object",
3975
+ "required": [
3976
+ "lineage_id",
3977
+ "type",
3978
+ "address",
3979
+ "status"
3980
+ ],
3981
+ "properties": {
3982
+ "lineage_id": {
3983
+ "type": "string"
3984
+ },
3985
+ "type": {
3986
+ "type": "string"
3987
+ },
3988
+ "address": {
3989
+ "type": "string"
3990
+ },
3991
+ "name": {
3992
+ "type": "string"
3993
+ },
3994
+ "status": {
3995
+ "type": "string",
3996
+ "enum": [
3997
+ "pending",
3998
+ "in_progress",
3999
+ "done",
4000
+ "failed",
4001
+ "skipped"
4002
+ ]
4003
+ },
4004
+ "target_id": {
4005
+ "type": "string"
4006
+ },
4007
+ "error_message": {
4008
+ "type": "string"
4009
+ }
4010
+ }
4011
+ },
3287
4012
  "BlueprintJob": {
3288
4013
  "oneOf": [
3289
4014
  {
@@ -3685,7 +4410,10 @@
3685
4410
  "flow_template",
3686
4411
  "taxonomy",
3687
4412
  "notification_template",
3688
- "environment_variable"
4413
+ "environment_variable",
4414
+ "datasource",
4415
+ "family",
4416
+ "permission"
3689
4417
  ]
3690
4418
  },
3691
4419
  "PlanChanges": {