@epilot/sdk 2.4.0 → 2.4.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (221) hide show
  1. package/definitions/access-token-runtime.json +1 -0
  2. package/definitions/access-token.json +663 -0
  3. package/definitions/address-runtime.json +1 -0
  4. package/definitions/address-suggestions-runtime.json +1 -0
  5. package/definitions/address-suggestions.json +582 -0
  6. package/definitions/address.json +578 -0
  7. package/definitions/ai-agents-runtime.json +1 -0
  8. package/definitions/ai-agents.json +1711 -0
  9. package/definitions/app-runtime.json +1 -0
  10. package/definitions/app.json +4493 -0
  11. package/definitions/audit-logs-runtime.json +1 -0
  12. package/definitions/audit-logs.json +305 -0
  13. package/definitions/automation-runtime.json +1 -0
  14. package/definitions/automation.json +5028 -0
  15. package/definitions/billing-runtime.json +1 -0
  16. package/definitions/billing.json +837 -0
  17. package/definitions/blueprint-manifest-runtime.json +1 -0
  18. package/definitions/blueprint-manifest.json +4846 -0
  19. package/definitions/configuration-hub-runtime.json +1 -0
  20. package/definitions/configuration-hub.json +611 -0
  21. package/definitions/consent-runtime.json +1 -0
  22. package/definitions/consent.json +344 -0
  23. package/definitions/customer-portal-runtime.json +1 -0
  24. package/definitions/customer-portal.json +16045 -0
  25. package/definitions/dashboard-runtime.json +1 -0
  26. package/definitions/dashboard.json +484 -0
  27. package/definitions/data-governance-runtime.json +1 -0
  28. package/definitions/data-governance.json +1126 -0
  29. package/definitions/deduplication-runtime.json +1 -0
  30. package/definitions/deduplication.json +314 -0
  31. package/definitions/design-runtime.json +1 -0
  32. package/definitions/design.json +1722 -0
  33. package/definitions/document-runtime.json +1 -0
  34. package/definitions/document.json +758 -0
  35. package/definitions/email-settings-runtime.json +1 -0
  36. package/definitions/email-settings.json +2777 -0
  37. package/definitions/email-template-runtime.json +1 -0
  38. package/definitions/email-template.json +1441 -0
  39. package/definitions/entity-mapping-runtime.json +1 -0
  40. package/definitions/entity-mapping.json +1642 -0
  41. package/definitions/entity-runtime.json +1 -0
  42. package/definitions/entity.json +10861 -0
  43. package/definitions/environments-runtime.json +1 -0
  44. package/definitions/environments.json +539 -0
  45. package/definitions/event-catalog-runtime.json +1 -0
  46. package/definitions/event-catalog.json +1051 -0
  47. package/definitions/file-runtime.json +1 -0
  48. package/definitions/file.json +2842 -0
  49. package/definitions/iban-runtime.json +1 -0
  50. package/definitions/iban.json +132 -0
  51. package/definitions/integration-toolkit-runtime.json +1 -0
  52. package/definitions/integration-toolkit.json +7998 -0
  53. package/definitions/journey-runtime.json +1 -0
  54. package/definitions/journey.json +2603 -0
  55. package/definitions/kanban-runtime.json +1 -0
  56. package/definitions/kanban.json +1506 -0
  57. package/definitions/message-runtime.json +1 -0
  58. package/definitions/message.json +2872 -0
  59. package/definitions/metering-runtime.json +1 -0
  60. package/definitions/metering.json +2321 -0
  61. package/definitions/notes-runtime.json +1 -0
  62. package/definitions/notes.json +1531 -0
  63. package/definitions/notification-runtime.json +1 -0
  64. package/definitions/notification.json +1425 -0
  65. package/definitions/organization-runtime.json +1 -0
  66. package/definitions/organization.json +1192 -0
  67. package/definitions/partner-directory-runtime.json +1 -0
  68. package/definitions/partner-directory.json +2284 -0
  69. package/definitions/permissions-runtime.json +1 -0
  70. package/definitions/permissions.json +1515 -0
  71. package/definitions/pricing-runtime.json +1 -0
  72. package/definitions/pricing-tier-runtime.json +1 -0
  73. package/definitions/pricing-tier.json +105 -0
  74. package/definitions/pricing.json +9884 -0
  75. package/definitions/purpose-runtime.json +1 -0
  76. package/definitions/purpose.json +524 -0
  77. package/definitions/query-runtime.json +1 -0
  78. package/definitions/query.json +3178 -0
  79. package/definitions/sandbox-runtime.json +1 -0
  80. package/definitions/sandbox.json +453 -0
  81. package/definitions/sharing-runtime.json +1 -0
  82. package/definitions/sharing.json +956 -0
  83. package/definitions/submission-runtime.json +1 -0
  84. package/definitions/submission.json +313 -0
  85. package/definitions/targeting-runtime.json +1 -0
  86. package/definitions/targeting.json +1474 -0
  87. package/definitions/template-variables-runtime.json +1 -0
  88. package/definitions/template-variables.json +1416 -0
  89. package/definitions/user-runtime.json +1 -0
  90. package/definitions/user.json +2460 -0
  91. package/definitions/validation-rules-runtime.json +1 -0
  92. package/definitions/validation-rules.json +1491 -0
  93. package/definitions/webhooks-runtime.json +1 -0
  94. package/definitions/webhooks.json +1634 -0
  95. package/definitions/workflow-definition-runtime.json +1 -0
  96. package/definitions/workflow-definition.json +3354 -0
  97. package/definitions/workflow-runtime.json +1 -0
  98. package/definitions/workflow.json +4272 -0
  99. package/dist/apis/access-token.cjs +6 -6
  100. package/dist/apis/access-token.js +1 -1
  101. package/dist/apis/address-suggestions.cjs +6 -6
  102. package/dist/apis/address-suggestions.js +1 -1
  103. package/dist/apis/address.cjs +6 -6
  104. package/dist/apis/address.js +1 -1
  105. package/dist/apis/ai-agents.cjs +6 -6
  106. package/dist/apis/ai-agents.js +1 -1
  107. package/dist/apis/app.cjs +6 -6
  108. package/dist/apis/app.js +1 -1
  109. package/dist/apis/audit-logs.cjs +6 -6
  110. package/dist/apis/audit-logs.js +1 -1
  111. package/dist/apis/automation.cjs +6 -6
  112. package/dist/apis/automation.js +1 -1
  113. package/dist/apis/billing.cjs +6 -6
  114. package/dist/apis/billing.js +1 -1
  115. package/dist/apis/blueprint-manifest.cjs +6 -6
  116. package/dist/apis/blueprint-manifest.js +1 -1
  117. package/dist/apis/configuration-hub.cjs +6 -6
  118. package/dist/apis/configuration-hub.js +1 -1
  119. package/dist/apis/consent.cjs +6 -6
  120. package/dist/apis/consent.js +1 -1
  121. package/dist/apis/customer-portal.cjs +6 -6
  122. package/dist/apis/customer-portal.js +1 -1
  123. package/dist/apis/dashboard.cjs +6 -6
  124. package/dist/apis/dashboard.js +1 -1
  125. package/dist/apis/data-governance.cjs +6 -6
  126. package/dist/apis/data-governance.js +1 -1
  127. package/dist/apis/deduplication.cjs +6 -6
  128. package/dist/apis/deduplication.js +1 -1
  129. package/dist/apis/design.cjs +6 -6
  130. package/dist/apis/design.js +1 -1
  131. package/dist/apis/document.cjs +6 -6
  132. package/dist/apis/document.js +1 -1
  133. package/dist/apis/email-settings.cjs +6 -6
  134. package/dist/apis/email-settings.js +1 -1
  135. package/dist/apis/email-template.cjs +6 -6
  136. package/dist/apis/email-template.js +1 -1
  137. package/dist/apis/entity-mapping.cjs +6 -6
  138. package/dist/apis/entity-mapping.js +1 -1
  139. package/dist/apis/entity.cjs +6 -6
  140. package/dist/apis/entity.d.cts +2 -2
  141. package/dist/apis/entity.d.ts +2 -2
  142. package/dist/apis/entity.js +1 -1
  143. package/dist/apis/environments.cjs +6 -6
  144. package/dist/apis/environments.js +1 -1
  145. package/dist/apis/event-catalog.cjs +6 -6
  146. package/dist/apis/event-catalog.js +1 -1
  147. package/dist/apis/file.cjs +6 -6
  148. package/dist/apis/file.js +1 -1
  149. package/dist/apis/iban.cjs +6 -6
  150. package/dist/apis/iban.js +1 -1
  151. package/dist/apis/integration-toolkit.cjs +6 -6
  152. package/dist/apis/integration-toolkit.js +1 -1
  153. package/dist/apis/journey.cjs +6 -6
  154. package/dist/apis/journey.js +1 -1
  155. package/dist/apis/kanban.cjs +6 -6
  156. package/dist/apis/kanban.d.cts +2 -2
  157. package/dist/apis/kanban.d.ts +2 -2
  158. package/dist/apis/kanban.js +1 -1
  159. package/dist/apis/message.cjs +6 -6
  160. package/dist/apis/message.js +1 -1
  161. package/dist/apis/metering.cjs +6 -6
  162. package/dist/apis/metering.js +1 -1
  163. package/dist/apis/notes.cjs +6 -6
  164. package/dist/apis/notes.js +1 -1
  165. package/dist/apis/notification.cjs +6 -6
  166. package/dist/apis/notification.js +1 -1
  167. package/dist/apis/organization.cjs +6 -6
  168. package/dist/apis/organization.js +1 -1
  169. package/dist/apis/partner-directory.cjs +6 -6
  170. package/dist/apis/partner-directory.js +1 -1
  171. package/dist/apis/permissions.cjs +6 -6
  172. package/dist/apis/permissions.js +1 -1
  173. package/dist/apis/pricing-tier.cjs +6 -6
  174. package/dist/apis/pricing-tier.js +1 -1
  175. package/dist/apis/pricing.cjs +6 -6
  176. package/dist/apis/pricing.js +1 -1
  177. package/dist/apis/purpose.cjs +6 -6
  178. package/dist/apis/purpose.js +1 -1
  179. package/dist/apis/query.cjs +6 -6
  180. package/dist/apis/query.js +1 -1
  181. package/dist/apis/sandbox.cjs +6 -6
  182. package/dist/apis/sandbox.js +1 -1
  183. package/dist/apis/sharing.cjs +6 -6
  184. package/dist/apis/sharing.js +1 -1
  185. package/dist/apis/submission.cjs +6 -6
  186. package/dist/apis/submission.js +1 -1
  187. package/dist/apis/target.cjs +6 -6
  188. package/dist/apis/target.js +1 -1
  189. package/dist/apis/targeting.cjs +6 -6
  190. package/dist/apis/targeting.js +1 -1
  191. package/dist/apis/template-variables.cjs +6 -6
  192. package/dist/apis/template-variables.js +1 -1
  193. package/dist/apis/user.cjs +6 -6
  194. package/dist/apis/user.js +1 -1
  195. package/dist/apis/validation-rules.cjs +6 -6
  196. package/dist/apis/validation-rules.js +1 -1
  197. package/dist/apis/webhooks.cjs +6 -6
  198. package/dist/apis/webhooks.js +1 -1
  199. package/dist/apis/workflow-definition.cjs +6 -6
  200. package/dist/apis/workflow-definition.js +1 -1
  201. package/dist/apis/workflow.cjs +6 -6
  202. package/dist/apis/workflow.js +1 -1
  203. package/dist/{chunk-DAFBUTK6.js → chunk-CQ3AKMIJ.js} +2 -2
  204. package/dist/{chunk-Z33PZNHV.cjs → chunk-YLJD7G7H.cjs} +2 -2
  205. package/dist/entity-H6ESUH3Y.js +7 -0
  206. package/dist/entity-ZVDKWQSF.cjs +7 -0
  207. package/dist/{entity.d-B43ezu-V.d.cts → entity.d-BHR9dEon.d.cts} +843 -165
  208. package/dist/{entity.d-B43ezu-V.d.ts → entity.d-BHR9dEon.d.ts} +843 -165
  209. package/dist/index.cjs +8 -8
  210. package/dist/index.d.cts +2 -2
  211. package/dist/index.d.ts +2 -2
  212. package/dist/index.js +1 -1
  213. package/dist/{kanban-PMG5TXE5.js → kanban-F22JXYCG.js} +1 -1
  214. package/dist/{kanban-E2UOBVBK.cjs → kanban-FSATKIGH.cjs} +1 -1
  215. package/dist/{kanban.d-B99GucT_.d.cts → kanban.d-BHnSRCYW.d.cts} +1 -1
  216. package/dist/{kanban.d-B99GucT_.d.ts → kanban.d-BHnSRCYW.d.ts} +1 -1
  217. package/docs/entity.md +202 -12
  218. package/docs/kanban.md +2 -2
  219. package/package.json +1 -1
  220. package/dist/entity-VDUN7SYC.cjs +0 -7
  221. package/dist/entity-WWM2Z7BU.js +0 -7
@@ -0,0 +1,4846 @@
1
+ {
2
+ "openapi": "3.0.2",
3
+ "info": {
4
+ "title": "Blueprint Manifest API",
5
+ "version": "4.6.4",
6
+ "description": "Service to create and install Blueprint Manifest files"
7
+ },
8
+ "tags": [
9
+ {
10
+ "name": "Jobs",
11
+ "description": "Manage Export and Import Jobs"
12
+ },
13
+ {
14
+ "name": "Export",
15
+ "description": "Export a Blueprint Manifest"
16
+ },
17
+ {
18
+ "name": "Import",
19
+ "description": "Install or update a Blueprint Manifest"
20
+ },
21
+ {
22
+ "name": "Manifests",
23
+ "description": "Manage installed Manifests"
24
+ },
25
+ {
26
+ "name": "Blueprints",
27
+ "description": "Manage Custom and Installed Blueprints"
28
+ },
29
+ {
30
+ "name": "Installations",
31
+ "description": "Manage installation jobs"
32
+ },
33
+ {
34
+ "name": "Marketplace Listings",
35
+ "description": "Manage marketplace listings for blueprints"
36
+ },
37
+ {
38
+ "name": "Marketplace Listing Versions",
39
+ "description": "Manage versions for marketplace listings"
40
+ }
41
+ ],
42
+ "security": [
43
+ {
44
+ "EpilotAuth": []
45
+ }
46
+ ],
47
+ "servers": [
48
+ {
49
+ "url": "https://blueprint-manifest.sls.epilot.io"
50
+ }
51
+ ],
52
+ "paths": {
53
+ "/v1/blueprint-manifest/jobs/{job_id}": {
54
+ "get": {
55
+ "operationId": "getJob",
56
+ "summary": "getJob",
57
+ "description": "Get the current status of a blueprint (export or import)",
58
+ "deprecated": true,
59
+ "tags": [
60
+ "Jobs"
61
+ ],
62
+ "parameters": [
63
+ {
64
+ "$ref": "#/components/parameters/JobID"
65
+ }
66
+ ],
67
+ "responses": {
68
+ "200": {
69
+ "description": "Current status of the blueprint",
70
+ "content": {
71
+ "application/json": {
72
+ "schema": {
73
+ "$ref": "#/components/schemas/Job"
74
+ }
75
+ }
76
+ }
77
+ }
78
+ }
79
+ }
80
+ },
81
+ "/v1/blueprint-manifest/jobs:createExport": {
82
+ "post": {
83
+ "operationId": "createExport",
84
+ "summary": "createExport",
85
+ "description": "Creates a new Export Job with a list of available resources to export from the passed root resource.\n\nMultiple root resources can be added by calling this multiple times with the same jobId\n",
86
+ "deprecated": true,
87
+ "tags": [
88
+ "Export"
89
+ ],
90
+ "requestBody": {
91
+ "content": {
92
+ "application/json": {
93
+ "schema": {
94
+ "type": "object",
95
+ "properties": {
96
+ "resources": {
97
+ "type": "array",
98
+ "items": {
99
+ "type": "object",
100
+ "properties": {
101
+ "type": {
102
+ "$ref": "#/components/schemas/ResourceNodeType"
103
+ },
104
+ "id": {
105
+ "type": "string"
106
+ }
107
+ },
108
+ "required": [
109
+ "type",
110
+ "id"
111
+ ]
112
+ },
113
+ "minItems": 1
114
+ },
115
+ "jobId": {
116
+ "$ref": "#/components/schemas/JobID"
117
+ },
118
+ "isExportingMultipleResources": {
119
+ "type": "boolean",
120
+ "description": "Temporary flag to indicate if multiple resources are being exported"
121
+ },
122
+ "pipelineId": {
123
+ "type": "string",
124
+ "description": "Pipeline ID selected when doing the sandbox sync"
125
+ },
126
+ "manifestId": {
127
+ "type": "string",
128
+ "description": "ID of the installed manifest to load the resource addresses from"
129
+ }
130
+ },
131
+ "required": [
132
+ "resources"
133
+ ]
134
+ }
135
+ }
136
+ }
137
+ },
138
+ "responses": {
139
+ "200": {
140
+ "description": "Created Export Job ID",
141
+ "content": {
142
+ "application/json": {
143
+ "schema": {
144
+ "type": "object",
145
+ "properties": {
146
+ "jobId": {
147
+ "$ref": "#/components/schemas/JobID"
148
+ }
149
+ }
150
+ }
151
+ }
152
+ }
153
+ }
154
+ }
155
+ }
156
+ },
157
+ "/v1/blueprint-manifest/jobs/{job_id}:exportManifest": {
158
+ "post": {
159
+ "operationId": "exportManifest",
160
+ "summary": "exportManifest",
161
+ "description": "Triggers exporting a manifest file using selected resoruce ids for a job created with `createExportJob`",
162
+ "deprecated": true,
163
+ "tags": [
164
+ "Export"
165
+ ],
166
+ "parameters": [
167
+ {
168
+ "$ref": "#/components/parameters/JobID"
169
+ }
170
+ ],
171
+ "requestBody": {
172
+ "content": {
173
+ "application/json": {
174
+ "schema": {
175
+ "type": "object",
176
+ "properties": {
177
+ "selectedResourceIds": {
178
+ "description": "An array of resource IDs to export",
179
+ "type": "array",
180
+ "items": {
181
+ "type": "string"
182
+ }
183
+ },
184
+ "resourceName": {
185
+ "type": "string",
186
+ "example": "journey_HouseConnectionJourney"
187
+ },
188
+ "metadata": {
189
+ "type": "object",
190
+ "properties": {
191
+ "markdown": {
192
+ "type": "object",
193
+ "properties": {
194
+ "manifest": {
195
+ "type": "string"
196
+ },
197
+ "preinstall": {
198
+ "type": "string"
199
+ },
200
+ "postinstall": {
201
+ "type": "string"
202
+ }
203
+ }
204
+ },
205
+ "docs_link": {
206
+ "type": "string"
207
+ },
208
+ "source_blueprint_name": {
209
+ "type": "string"
210
+ },
211
+ "source_blueprint_slug": {
212
+ "type": "string"
213
+ },
214
+ "source_blueprint_version": {
215
+ "type": "string"
216
+ }
217
+ }
218
+ },
219
+ "isExportingMultipleResources": {
220
+ "type": "boolean",
221
+ "description": "Temporary flag to indicate if multiple resources are being exported"
222
+ },
223
+ "generateAISummary": {
224
+ "type": "boolean",
225
+ "default": false
226
+ },
227
+ "language": {
228
+ "type": "string",
229
+ "enum": [
230
+ "en",
231
+ "de"
232
+ ]
233
+ }
234
+ },
235
+ "required": [
236
+ "resourceName",
237
+ "selectedResourceIds"
238
+ ]
239
+ }
240
+ }
241
+ }
242
+ },
243
+ "responses": {
244
+ "200": {
245
+ "description": "Export Job ID",
246
+ "content": {
247
+ "application/json": {
248
+ "schema": {
249
+ "type": "object",
250
+ "properties": {
251
+ "jobId": {
252
+ "$ref": "#/components/schemas/JobID"
253
+ }
254
+ }
255
+ }
256
+ }
257
+ }
258
+ }
259
+ }
260
+ }
261
+ },
262
+ "/v1/blueprint-manifest:uploadManifest": {
263
+ "post": {
264
+ "operationId": "uploadManifest",
265
+ "summary": "uploadManifest",
266
+ "description": "Create pre-signed S3 URL to upload a manifest file.\n",
267
+ "tags": [
268
+ "Import"
269
+ ],
270
+ "requestBody": {
271
+ "content": {
272
+ "application/json": {
273
+ "schema": {
274
+ "$ref": "#/components/schemas/UploadFilePayload"
275
+ }
276
+ }
277
+ }
278
+ },
279
+ "responses": {
280
+ "201": {
281
+ "description": "Pre-signed URL for POST / PUT upload",
282
+ "content": {
283
+ "application/json": {
284
+ "schema": {
285
+ "type": "object",
286
+ "properties": {
287
+ "s3ref": {
288
+ "$ref": "#/components/schemas/S3Reference"
289
+ },
290
+ "upload_url": {
291
+ "type": "string",
292
+ "format": "url",
293
+ "example": "https://epilot-dev-blueprints.s3.eu-central-1.amazonaws.com/templates/document.pdf"
294
+ }
295
+ }
296
+ }
297
+ }
298
+ }
299
+ }
300
+ }
301
+ }
302
+ },
303
+ "/v1/blueprint-manifest/jobs:createPlan": {
304
+ "post": {
305
+ "operationId": "createPlan",
306
+ "summary": "createPlan",
307
+ "description": "Creates a new import job from an uploaded manifest file and returns the plan.\n\nCreates an updated plan for an installed manifest when `manifest_id` is passed\n",
308
+ "deprecated": true,
309
+ "tags": [
310
+ "Import"
311
+ ],
312
+ "requestBody": {
313
+ "content": {
314
+ "application/json": {
315
+ "schema": {
316
+ "oneOf": [
317
+ {
318
+ "type": "object",
319
+ "properties": {
320
+ "s3ref": {
321
+ "allOf": [
322
+ {
323
+ "description": "s3ref of manifest file uploaded via `uploadManifest`"
324
+ },
325
+ {
326
+ "$ref": "#/components/schemas/S3Reference"
327
+ }
328
+ ]
329
+ },
330
+ "manifest_id": {
331
+ "allOf": [
332
+ {
333
+ "description": "Update an existing manifest (optional)"
334
+ },
335
+ {
336
+ "$ref": "#/components/schemas/ManifestID"
337
+ }
338
+ ]
339
+ },
340
+ "job_id": {
341
+ "allOf": [
342
+ {
343
+ "description": "Continue a previous job"
344
+ },
345
+ {
346
+ "$ref": "#/components/schemas/JobID"
347
+ }
348
+ ]
349
+ },
350
+ "source": {
351
+ "allOf": [
352
+ {
353
+ "description": "Source of the manifest"
354
+ },
355
+ {
356
+ "$ref": "#/components/schemas/ManifestSource"
357
+ }
358
+ ]
359
+ },
360
+ "resourcesToIgnore": {
361
+ "type": "array",
362
+ "items": {
363
+ "type": "string"
364
+ },
365
+ "description": "List of resources to ignore changes for"
366
+ },
367
+ "resourceReplacements": {
368
+ "type": "array",
369
+ "items": {
370
+ "$ref": "#/components/schemas/ResourceReplacement"
371
+ },
372
+ "description": "List of resource replacements to apply during import"
373
+ },
374
+ "deployedFrom": {
375
+ "type": "object",
376
+ "properties": {
377
+ "sourceOrganizationId": {
378
+ "type": "string"
379
+ },
380
+ "sourceManifestId": {
381
+ "type": "string"
382
+ },
383
+ "sourceOrganizationType": {
384
+ "type": "string",
385
+ "enum": [
386
+ "sandbox",
387
+ "production"
388
+ ]
389
+ }
390
+ },
391
+ "required": [
392
+ "sourceOrganizationId",
393
+ "sourceManifestId",
394
+ "sourceOrganizationType"
395
+ ]
396
+ }
397
+ },
398
+ "required": [
399
+ "s3ref"
400
+ ]
401
+ },
402
+ {
403
+ "type": "object",
404
+ "deprecated": true,
405
+ "properties": {
406
+ "manifestFilePath": {
407
+ "deprecated": true,
408
+ "description": "Manifest s3 key uploaded via `uploadManifest`",
409
+ "type": "string"
410
+ },
411
+ "manifest_id": {
412
+ "allOf": [
413
+ {
414
+ "description": "Update an existing manifest (optional)"
415
+ },
416
+ {
417
+ "$ref": "#/components/schemas/ManifestID"
418
+ }
419
+ ]
420
+ },
421
+ "job_id": {
422
+ "allOf": [
423
+ {
424
+ "description": "Continue a previous job"
425
+ },
426
+ {
427
+ "$ref": "#/components/schemas/JobID"
428
+ }
429
+ ]
430
+ },
431
+ "source": {
432
+ "allOf": [
433
+ {
434
+ "description": "Source of the manifest"
435
+ },
436
+ {
437
+ "$ref": "#/components/schemas/ManifestSource"
438
+ }
439
+ ]
440
+ },
441
+ "resourcesToIgnore": {
442
+ "type": "array",
443
+ "items": {
444
+ "type": "string"
445
+ },
446
+ "description": "List of resources to ignore changes for"
447
+ },
448
+ "resourceReplacements": {
449
+ "type": "array",
450
+ "items": {
451
+ "$ref": "#/components/schemas/ResourceReplacement"
452
+ },
453
+ "description": "List of resource replacements to apply during import"
454
+ },
455
+ "deployedFrom": {
456
+ "type": "object",
457
+ "properties": {
458
+ "sourceOrganizationId": {
459
+ "type": "string"
460
+ },
461
+ "sourceManifestId": {
462
+ "type": "string"
463
+ },
464
+ "sourceOrganizationType": {
465
+ "type": "string",
466
+ "enum": [
467
+ "sandbox",
468
+ "production"
469
+ ]
470
+ }
471
+ },
472
+ "required": [
473
+ "sourceOrganizationId",
474
+ "sourceManifestId",
475
+ "sourceOrganizationType"
476
+ ]
477
+ }
478
+ },
479
+ "required": [
480
+ "manifestFilePath"
481
+ ]
482
+ }
483
+ ]
484
+ }
485
+ }
486
+ }
487
+ },
488
+ "responses": {
489
+ "200": {
490
+ "description": "Created Import Job ID",
491
+ "content": {
492
+ "application/json": {
493
+ "schema": {
494
+ "type": "object",
495
+ "properties": {
496
+ "jobId": {
497
+ "type": "string",
498
+ "example": "4854bb2a-94f9-424d-a968-3fb17fb0bf89"
499
+ }
500
+ }
501
+ }
502
+ }
503
+ }
504
+ }
505
+ }
506
+ }
507
+ },
508
+ "/v1/blueprint-manifest/jobs/{job_id}:applyPlan": {
509
+ "post": {
510
+ "operationId": "applyPlan",
511
+ "summary": "applyPlan",
512
+ "description": "Apply a plan returned by `createPlan`.",
513
+ "deprecated": true,
514
+ "tags": [
515
+ "Import"
516
+ ],
517
+ "parameters": [
518
+ {
519
+ "$ref": "#/components/parameters/JobID"
520
+ }
521
+ ],
522
+ "requestBody": {
523
+ "content": {
524
+ "application/json": {
525
+ "schema": {
526
+ "type": "object",
527
+ "properties": {
528
+ "resourcesToIgnore": {
529
+ "type": "array",
530
+ "items": {
531
+ "type": "string"
532
+ },
533
+ "description": "List of resources to ignore changes for"
534
+ },
535
+ "resourceReplacements": {
536
+ "type": "array",
537
+ "items": {
538
+ "$ref": "#/components/schemas/ResourceReplacement"
539
+ },
540
+ "description": "List of resource replacements to apply during import"
541
+ }
542
+ }
543
+ }
544
+ }
545
+ }
546
+ },
547
+ "responses": {
548
+ "200": {
549
+ "description": "Applied Import Job ID",
550
+ "content": {
551
+ "application/json": {
552
+ "schema": {
553
+ "type": "object",
554
+ "properties": {
555
+ "jobId": {
556
+ "$ref": "#/components/schemas/JobID"
557
+ }
558
+ }
559
+ }
560
+ }
561
+ }
562
+ }
563
+ }
564
+ }
565
+ },
566
+ "/v1/blueprint-manifest/manifests": {
567
+ "get": {
568
+ "operationId": "listInstalledManifests",
569
+ "summary": "listInstalledManifests",
570
+ "description": "List Blueprint Manifests installed to the organization",
571
+ "deprecated": true,
572
+ "tags": [
573
+ "Manifests"
574
+ ],
575
+ "responses": {
576
+ "200": {
577
+ "description": "Installed Blueprint Manifests in the organization",
578
+ "content": {
579
+ "application/json": {
580
+ "schema": {
581
+ "type": "object",
582
+ "properties": {
583
+ "total": {
584
+ "type": "integer",
585
+ "example": 1
586
+ },
587
+ "results": {
588
+ "type": "array",
589
+ "items": {
590
+ "$ref": "#/components/schemas/ManifestItem"
591
+ }
592
+ }
593
+ }
594
+ }
595
+ }
596
+ }
597
+ }
598
+ }
599
+ }
600
+ },
601
+ "/v1/blueprint-manifest/manifests/{manifest_id}": {
602
+ "get": {
603
+ "operationId": "getManifest",
604
+ "summary": "getManifest",
605
+ "description": "Get installed Manifest by ID",
606
+ "deprecated": true,
607
+ "tags": [
608
+ "Manifests"
609
+ ],
610
+ "parameters": [
611
+ {
612
+ "in": "path",
613
+ "required": true,
614
+ "name": "manifest_id",
615
+ "schema": {
616
+ "$ref": "#/components/schemas/ManifestID"
617
+ }
618
+ }
619
+ ],
620
+ "responses": {
621
+ "200": {
622
+ "description": "Installed Blueprint Manifest in the Organization",
623
+ "content": {
624
+ "application/json": {
625
+ "schema": {
626
+ "$ref": "#/components/schemas/Manifest"
627
+ }
628
+ }
629
+ }
630
+ }
631
+ }
632
+ },
633
+ "put": {
634
+ "operationId": "updateManifest",
635
+ "summary": "updateManifest",
636
+ "description": "Update an installed manifest\n",
637
+ "deprecated": true,
638
+ "tags": [
639
+ "Manifests"
640
+ ],
641
+ "parameters": [
642
+ {
643
+ "in": "path",
644
+ "required": true,
645
+ "name": "manifest_id",
646
+ "schema": {
647
+ "$ref": "#/components/schemas/ManifestID"
648
+ }
649
+ }
650
+ ],
651
+ "requestBody": {
652
+ "content": {
653
+ "application/json": {
654
+ "schema": {
655
+ "$ref": "#/components/schemas/PutManifestPayload"
656
+ }
657
+ }
658
+ }
659
+ },
660
+ "responses": {
661
+ "200": {
662
+ "description": "The updated Manifest",
663
+ "content": {
664
+ "application/json": {
665
+ "schema": {
666
+ "$ref": "#/components/schemas/Manifest"
667
+ }
668
+ }
669
+ }
670
+ }
671
+ }
672
+ },
673
+ "delete": {
674
+ "operationId": "deleteManifest",
675
+ "summary": "deleteManifest",
676
+ "description": "Remove installed manifest from the org\n\nNote that this does not delete the installed resources of the Manifest!\n",
677
+ "deprecated": true,
678
+ "tags": [
679
+ "Manifests"
680
+ ],
681
+ "parameters": [
682
+ {
683
+ "in": "path",
684
+ "required": true,
685
+ "name": "manifest_id",
686
+ "schema": {
687
+ "$ref": "#/components/schemas/ManifestID"
688
+ }
689
+ }
690
+ ],
691
+ "responses": {
692
+ "200": {
693
+ "description": "The deleted Manifest",
694
+ "content": {
695
+ "application/json": {
696
+ "schema": {
697
+ "$ref": "#/components/schemas/Manifest"
698
+ }
699
+ }
700
+ }
701
+ }
702
+ }
703
+ }
704
+ },
705
+ "/v2/blueprint-manifest/blueprints": {
706
+ "get": {
707
+ "operationId": "listBlueprints",
708
+ "summary": "listBlueprints",
709
+ "description": "List Custom and Installed Blueprints",
710
+ "tags": [
711
+ "Blueprints"
712
+ ],
713
+ "parameters": [
714
+ {
715
+ "name": "archived",
716
+ "in": "query",
717
+ "description": "Filter blueprints by archived status. If true, returns only archived blueprints. If false or not provided, returns only non-archived blueprints.",
718
+ "required": false,
719
+ "schema": {
720
+ "type": "boolean",
721
+ "default": false
722
+ }
723
+ }
724
+ ],
725
+ "responses": {
726
+ "200": {
727
+ "description": "Blueprints",
728
+ "content": {
729
+ "application/json": {
730
+ "schema": {
731
+ "type": "object",
732
+ "properties": {
733
+ "total": {
734
+ "type": "integer",
735
+ "example": 1
736
+ },
737
+ "results": {
738
+ "type": "array",
739
+ "items": {
740
+ "$ref": "#/components/schemas/Blueprint"
741
+ }
742
+ }
743
+ }
744
+ }
745
+ }
746
+ }
747
+ }
748
+ }
749
+ },
750
+ "post": {
751
+ "operationId": "createBlueprint",
752
+ "summary": "createBlueprint",
753
+ "description": "Create a Blueprint",
754
+ "tags": [
755
+ "Blueprints"
756
+ ],
757
+ "requestBody": {
758
+ "content": {
759
+ "application/json": {
760
+ "schema": {
761
+ "$ref": "#/components/schemas/Blueprint"
762
+ }
763
+ }
764
+ }
765
+ },
766
+ "responses": {
767
+ "200": {
768
+ "description": "Created Blueprint",
769
+ "content": {
770
+ "application/json": {
771
+ "schema": {
772
+ "$ref": "#/components/schemas/Blueprint"
773
+ }
774
+ }
775
+ }
776
+ }
777
+ }
778
+ }
779
+ },
780
+ "/v2/blueprint-manifest/blueprints:marketplace": {
781
+ "get": {
782
+ "operationId": "listInstalledMarketplaceBlueprints",
783
+ "summary": "listInstalledMarketplaceBlueprints",
784
+ "description": "List installed Marketplace Blueprints for the organization.\nWhen multiple blueprints have the same slug, returns only the most recently created one.\n",
785
+ "tags": [
786
+ "Blueprints"
787
+ ],
788
+ "responses": {
789
+ "200": {
790
+ "description": "Installed Marketplace Blueprints",
791
+ "content": {
792
+ "application/json": {
793
+ "schema": {
794
+ "type": "object",
795
+ "properties": {
796
+ "total": {
797
+ "type": "integer",
798
+ "example": 1
799
+ },
800
+ "results": {
801
+ "type": "array",
802
+ "items": {
803
+ "$ref": "#/components/schemas/InstalledMarketplaceBlueprintItem"
804
+ }
805
+ }
806
+ }
807
+ }
808
+ }
809
+ }
810
+ }
811
+ }
812
+ }
813
+ },
814
+ "/v2/blueprint-manifest/blueprints:pre-install": {
815
+ "post": {
816
+ "operationId": "preInstallBlueprint",
817
+ "summary": "preInstallBlueprint",
818
+ "description": "Pre-install a Blueprint based on a blueprint file",
819
+ "tags": [
820
+ "Blueprints"
821
+ ],
822
+ "requestBody": {
823
+ "content": {
824
+ "application/json": {
825
+ "schema": {
826
+ "type": "object",
827
+ "properties": {
828
+ "blueprint_file": {
829
+ "type": "string",
830
+ "description": "URL to the blueprint zip file"
831
+ },
832
+ "source_blueprint_type": {
833
+ "type": "string",
834
+ "enum": [
835
+ "marketplace"
836
+ ]
837
+ },
838
+ "slug": {
839
+ "type": "string",
840
+ "description": "Slug to enforce in this blueprint. Used in marketplace blueprints to keep it consistent with webflow."
841
+ }
842
+ }
843
+ }
844
+ }
845
+ }
846
+ },
847
+ "responses": {
848
+ "200": {
849
+ "description": "Blueprint preview data for UI display",
850
+ "content": {
851
+ "application/json": {
852
+ "schema": {
853
+ "$ref": "#/components/schemas/BlueprintPreview"
854
+ }
855
+ }
856
+ }
857
+ }
858
+ }
859
+ }
860
+ },
861
+ "/v2/blueprint-manifest/blueprints:preview/{preview_id}": {
862
+ "get": {
863
+ "operationId": "getBlueprintPreview",
864
+ "summary": "getBlueprintPreview",
865
+ "description": "Get Blueprint Preview by ID",
866
+ "tags": [
867
+ "Blueprints"
868
+ ],
869
+ "parameters": [
870
+ {
871
+ "in": "path",
872
+ "required": true,
873
+ "name": "preview_id",
874
+ "schema": {
875
+ "type": "string"
876
+ }
877
+ }
878
+ ],
879
+ "responses": {
880
+ "200": {
881
+ "description": "Blueprint Preview",
882
+ "content": {
883
+ "application/json": {
884
+ "schema": {
885
+ "$ref": "#/components/schemas/BlueprintPreview"
886
+ }
887
+ }
888
+ }
889
+ },
890
+ "404": {
891
+ "description": "Blueprint Preview not found"
892
+ }
893
+ }
894
+ }
895
+ },
896
+ "/v2/blueprint-manifest/blueprint:install": {
897
+ "post": {
898
+ "operationId": "installBlueprint",
899
+ "summary": "installBlueprint",
900
+ "description": "Kick off a new blueprint installation job. Returns 202 Accepted with Location header pointing to the job resource\n",
901
+ "tags": [
902
+ "Blueprints"
903
+ ],
904
+ "requestBody": {
905
+ "required": true,
906
+ "content": {
907
+ "application/json": {
908
+ "schema": {
909
+ "type": "object",
910
+ "properties": {
911
+ "source_org_id": {
912
+ "type": "string"
913
+ },
914
+ "source_blueprint_id": {
915
+ "$ref": "#/components/schemas/BlueprintID"
916
+ },
917
+ "source_blueprint_file": {
918
+ "type": "string",
919
+ "description": "URL to the blueprint zip file"
920
+ },
921
+ "destination_org_id": {
922
+ "type": "string"
923
+ },
924
+ "destination_blueprint_id": {
925
+ "$ref": "#/components/schemas/BlueprintID"
926
+ },
927
+ "options": {
928
+ "$ref": "#/components/schemas/BlueprintInstallationJobOptions"
929
+ },
930
+ "mode": {
931
+ "type": "string",
932
+ "enum": [
933
+ "simple",
934
+ "advanced"
935
+ ],
936
+ "description": "Installation mode"
937
+ },
938
+ "source_blueprint_type": {
939
+ "type": "string",
940
+ "enum": [
941
+ "marketplace"
942
+ ]
943
+ },
944
+ "slug": {
945
+ "type": "string",
946
+ "description": "Slug to enforce in this blueprint. Used in marketplace blueprints to keep it consistent with webflow."
947
+ },
948
+ "auto_enable_features": {
949
+ "type": "boolean",
950
+ "description": "If true, automatically enable required features in the destination org before installing"
951
+ }
952
+ },
953
+ "required": [
954
+ "mode"
955
+ ]
956
+ }
957
+ }
958
+ }
959
+ },
960
+ "responses": {
961
+ "202": {
962
+ "description": "Blueprint installation job started",
963
+ "headers": {
964
+ "Location": {
965
+ "description": "URL to poll the job",
966
+ "schema": {
967
+ "type": "string"
968
+ }
969
+ }
970
+ },
971
+ "content": {
972
+ "application/json": {
973
+ "schema": {
974
+ "type": "object",
975
+ "properties": {
976
+ "job_id": {
977
+ "$ref": "#/components/schemas/BlueprintJobID"
978
+ },
979
+ "destination_blueprint_id": {
980
+ "$ref": "#/components/schemas/BlueprintID"
981
+ }
982
+ }
983
+ }
984
+ }
985
+ }
986
+ }
987
+ }
988
+ }
989
+ },
990
+ "/v2/blueprint-manifest/blueprints/{blueprint_id}": {
991
+ "get": {
992
+ "operationId": "getBlueprint",
993
+ "summary": "getBlueprint",
994
+ "description": "Get Blueprint by ID",
995
+ "tags": [
996
+ "Blueprints"
997
+ ],
998
+ "parameters": [
999
+ {
1000
+ "in": "path",
1001
+ "required": true,
1002
+ "name": "blueprint_id",
1003
+ "schema": {
1004
+ "$ref": "#/components/schemas/BlueprintID"
1005
+ }
1006
+ }
1007
+ ],
1008
+ "responses": {
1009
+ "200": {
1010
+ "description": "Blueprint",
1011
+ "content": {
1012
+ "application/json": {
1013
+ "schema": {
1014
+ "$ref": "#/components/schemas/Blueprint"
1015
+ }
1016
+ }
1017
+ }
1018
+ }
1019
+ }
1020
+ },
1021
+ "put": {
1022
+ "operationId": "updateBlueprint",
1023
+ "summary": "updateBlueprint",
1024
+ "description": "Update a Blueprint",
1025
+ "tags": [
1026
+ "Blueprints"
1027
+ ],
1028
+ "parameters": [
1029
+ {
1030
+ "in": "path",
1031
+ "required": true,
1032
+ "name": "blueprint_id",
1033
+ "schema": {
1034
+ "$ref": "#/components/schemas/BlueprintID"
1035
+ }
1036
+ }
1037
+ ],
1038
+ "requestBody": {
1039
+ "content": {
1040
+ "application/json": {
1041
+ "schema": {
1042
+ "$ref": "#/components/schemas/Blueprint"
1043
+ }
1044
+ }
1045
+ }
1046
+ },
1047
+ "responses": {
1048
+ "200": {
1049
+ "description": "Updated Blueprint",
1050
+ "content": {
1051
+ "application/json": {
1052
+ "schema": {
1053
+ "$ref": "#/components/schemas/Blueprint"
1054
+ }
1055
+ }
1056
+ }
1057
+ }
1058
+ }
1059
+ },
1060
+ "delete": {
1061
+ "operationId": "deleteBlueprint",
1062
+ "summary": "deleteBlueprint",
1063
+ "description": "Delete a Blueprint",
1064
+ "tags": [
1065
+ "Blueprints"
1066
+ ],
1067
+ "parameters": [
1068
+ {
1069
+ "in": "path",
1070
+ "required": true,
1071
+ "name": "blueprint_id",
1072
+ "schema": {
1073
+ "$ref": "#/components/schemas/BlueprintID"
1074
+ }
1075
+ }
1076
+ ],
1077
+ "responses": {
1078
+ "200": {
1079
+ "description": "Deleted Blueprint",
1080
+ "content": {
1081
+ "application/json": {
1082
+ "schema": {
1083
+ "$ref": "#/components/schemas/Blueprint"
1084
+ }
1085
+ }
1086
+ }
1087
+ }
1088
+ }
1089
+ }
1090
+ },
1091
+ "/v2/blueprint-manifest/blueprints/{blueprint_id}/validate": {
1092
+ "post": {
1093
+ "operationId": "validateBlueprint",
1094
+ "summary": "validateBlueprint",
1095
+ "description": "Start a blueprint validation job. Validates Terraform for the blueprint (all types).\nReturns 202 Accepted with job_id. Poll GET /jobs/{job_id} for status, valid, and errors.\n",
1096
+ "tags": [
1097
+ "Blueprints"
1098
+ ],
1099
+ "parameters": [
1100
+ {
1101
+ "in": "path",
1102
+ "required": true,
1103
+ "name": "blueprint_id",
1104
+ "schema": {
1105
+ "$ref": "#/components/schemas/BlueprintID"
1106
+ }
1107
+ }
1108
+ ],
1109
+ "responses": {
1110
+ "202": {
1111
+ "description": "Validation job started",
1112
+ "headers": {
1113
+ "Location": {
1114
+ "description": "URL to poll the job",
1115
+ "schema": {
1116
+ "type": "string"
1117
+ }
1118
+ }
1119
+ },
1120
+ "content": {
1121
+ "application/json": {
1122
+ "schema": {
1123
+ "type": "object",
1124
+ "properties": {
1125
+ "job_id": {
1126
+ "$ref": "#/components/schemas/BlueprintJobID"
1127
+ }
1128
+ }
1129
+ }
1130
+ }
1131
+ }
1132
+ },
1133
+ "404": {
1134
+ "description": "Blueprint not found"
1135
+ }
1136
+ }
1137
+ }
1138
+ },
1139
+ "/v2/blueprint-manifest/blueprints/{blueprint_id}:verify": {
1140
+ "post": {
1141
+ "operationId": "verifyBlueprint",
1142
+ "summary": "verifyBlueprint",
1143
+ "description": "Start a blueprint verification job. Compares resource configurations between a source org\nand a destination org to verify that a sync/install was successful.\nReturns 202 Accepted with job_id. Poll GET /jobs/{job_id} for status, summary, and resource_results.\n",
1144
+ "tags": [
1145
+ "Blueprints"
1146
+ ],
1147
+ "parameters": [
1148
+ {
1149
+ "in": "path",
1150
+ "required": true,
1151
+ "name": "blueprint_id",
1152
+ "schema": {
1153
+ "$ref": "#/components/schemas/BlueprintID"
1154
+ }
1155
+ }
1156
+ ],
1157
+ "requestBody": {
1158
+ "required": true,
1159
+ "content": {
1160
+ "application/json": {
1161
+ "schema": {
1162
+ "type": "object",
1163
+ "required": [
1164
+ "source_org_id",
1165
+ "source_blueprint_id",
1166
+ "destination_org_id",
1167
+ "destination_blueprint_id"
1168
+ ],
1169
+ "properties": {
1170
+ "source_org_id": {
1171
+ "type": "string",
1172
+ "description": "Organization ID of the source org"
1173
+ },
1174
+ "source_blueprint_id": {
1175
+ "$ref": "#/components/schemas/BlueprintID"
1176
+ },
1177
+ "destination_org_id": {
1178
+ "type": "string",
1179
+ "description": "Organization ID of the destination org"
1180
+ },
1181
+ "destination_blueprint_id": {
1182
+ "$ref": "#/components/schemas/BlueprintID"
1183
+ },
1184
+ "source_auth_token": {
1185
+ "type": "string",
1186
+ "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."
1187
+ },
1188
+ "destination_auth_token": {
1189
+ "type": "string",
1190
+ "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."
1191
+ }
1192
+ }
1193
+ }
1194
+ }
1195
+ }
1196
+ },
1197
+ "responses": {
1198
+ "202": {
1199
+ "description": "Verification job started",
1200
+ "headers": {
1201
+ "Location": {
1202
+ "description": "URL to poll the job",
1203
+ "schema": {
1204
+ "type": "string"
1205
+ }
1206
+ }
1207
+ },
1208
+ "content": {
1209
+ "application/json": {
1210
+ "schema": {
1211
+ "type": "object",
1212
+ "properties": {
1213
+ "job_id": {
1214
+ "$ref": "#/components/schemas/BlueprintJobID"
1215
+ }
1216
+ }
1217
+ }
1218
+ }
1219
+ }
1220
+ },
1221
+ "404": {
1222
+ "description": "Blueprint not found"
1223
+ }
1224
+ }
1225
+ }
1226
+ },
1227
+ "/v2/blueprint-manifest/blueprints/{blueprint_id}:export": {
1228
+ "post": {
1229
+ "operationId": "exportBlueprint",
1230
+ "summary": "exportBlueprint",
1231
+ "description": "Kick off a new blueprint export job. Returns 202 Accepted with Location header pointing to the job resource.\n",
1232
+ "tags": [
1233
+ "Blueprints"
1234
+ ],
1235
+ "parameters": [
1236
+ {
1237
+ "in": "path",
1238
+ "required": true,
1239
+ "name": "blueprint_id",
1240
+ "schema": {
1241
+ "$ref": "#/components/schemas/BlueprintID"
1242
+ }
1243
+ }
1244
+ ],
1245
+ "requestBody": {
1246
+ "required": false,
1247
+ "content": {
1248
+ "application/json": {
1249
+ "schema": {
1250
+ "type": "object",
1251
+ "properties": {
1252
+ "destination_org_id": {
1253
+ "type": "string"
1254
+ },
1255
+ "destination_blueprint_id": {
1256
+ "type": "string"
1257
+ },
1258
+ "validate": {
1259
+ "type": "boolean",
1260
+ "description": "When true, run terraform validate before creating the export zip. If validation fails, the job will be marked as FAILED with errors."
1261
+ }
1262
+ }
1263
+ }
1264
+ }
1265
+ }
1266
+ },
1267
+ "responses": {
1268
+ "202": {
1269
+ "description": "Blueprint export job started",
1270
+ "headers": {
1271
+ "Location": {
1272
+ "description": "URL to poll the job",
1273
+ "schema": {
1274
+ "type": "string"
1275
+ }
1276
+ }
1277
+ },
1278
+ "content": {
1279
+ "application/json": {
1280
+ "schema": {
1281
+ "type": "object",
1282
+ "properties": {
1283
+ "job_id": {
1284
+ "$ref": "#/components/schemas/BlueprintJobID"
1285
+ }
1286
+ }
1287
+ }
1288
+ }
1289
+ }
1290
+ }
1291
+ }
1292
+ }
1293
+ },
1294
+ "/v2/blueprint-manifest/marketplace/slugs": {
1295
+ "get": {
1296
+ "operationId": "listMarketplaceSlugs",
1297
+ "summary": "listMarketplaceSlugs",
1298
+ "description": "List all available marketplace blueprint slugs from Webflow CMS.\nReturns cached results when available.\n",
1299
+ "tags": [
1300
+ "Blueprints"
1301
+ ],
1302
+ "responses": {
1303
+ "200": {
1304
+ "description": "List of marketplace slugs",
1305
+ "content": {
1306
+ "application/json": {
1307
+ "schema": {
1308
+ "type": "object",
1309
+ "properties": {
1310
+ "results": {
1311
+ "type": "array",
1312
+ "items": {
1313
+ "type": "object",
1314
+ "properties": {
1315
+ "slug": {
1316
+ "type": "string",
1317
+ "description": "The installation slug identifier for the blueprint (used for publishing).",
1318
+ "example": "wallbox_b2c"
1319
+ },
1320
+ "marketplace_slug": {
1321
+ "type": "string",
1322
+ "description": "The marketplace page slug for the Webflow CMS item (used for display).",
1323
+ "example": "wallbox-b2c"
1324
+ },
1325
+ "version": {
1326
+ "type": "string",
1327
+ "example": "v1.0.0"
1328
+ },
1329
+ "name": {
1330
+ "type": "string",
1331
+ "example": "Wallbox B2C"
1332
+ },
1333
+ "installation_link": {
1334
+ "type": "string",
1335
+ "example": "https://portal.epilot.cloud/app/blueprints/install/marketplace/wallbox_b2c?s3Ref=https://example.com/blueprint.zip"
1336
+ }
1337
+ }
1338
+ }
1339
+ }
1340
+ }
1341
+ }
1342
+ }
1343
+ }
1344
+ }
1345
+ }
1346
+ }
1347
+ },
1348
+ "/v2/blueprint-manifest/blueprints:publish": {
1349
+ "post": {
1350
+ "operationId": "publishBlueprint",
1351
+ "summary": "publishBlueprint",
1352
+ "description": "Publish a blueprint to the marketplace. Exports the blueprint, uploads it to file-api with public access, and updates the Webflow CMS listing.\n",
1353
+ "tags": [
1354
+ "Blueprints"
1355
+ ],
1356
+ "requestBody": {
1357
+ "required": true,
1358
+ "content": {
1359
+ "application/json": {
1360
+ "schema": {
1361
+ "type": "object",
1362
+ "required": [
1363
+ "blueprint_id",
1364
+ "slug"
1365
+ ],
1366
+ "properties": {
1367
+ "blueprint_id": {
1368
+ "$ref": "#/components/schemas/BlueprintID"
1369
+ },
1370
+ "slug": {
1371
+ "type": "string",
1372
+ "description": "The marketplace installation slug for the Webflow CMS item"
1373
+ },
1374
+ "version": {
1375
+ "type": "string",
1376
+ "description": "The version string to set on the marketplace CMS item (e.g. \"1.0.0\")"
1377
+ },
1378
+ "name": {
1379
+ "type": "string",
1380
+ "description": "The display name for the blueprint on the marketplace CMS item"
1381
+ }
1382
+ }
1383
+ }
1384
+ }
1385
+ }
1386
+ },
1387
+ "responses": {
1388
+ "202": {
1389
+ "description": "Blueprint publish job started",
1390
+ "headers": {
1391
+ "Location": {
1392
+ "description": "URL to poll the job",
1393
+ "schema": {
1394
+ "type": "string"
1395
+ }
1396
+ }
1397
+ },
1398
+ "content": {
1399
+ "application/json": {
1400
+ "schema": {
1401
+ "type": "object",
1402
+ "properties": {
1403
+ "job_id": {
1404
+ "$ref": "#/components/schemas/BlueprintJobID"
1405
+ }
1406
+ }
1407
+ }
1408
+ }
1409
+ }
1410
+ }
1411
+ }
1412
+ }
1413
+ },
1414
+ "/v2/blueprint-manifest/blueprints/{blueprint_id}:format-description": {
1415
+ "post": {
1416
+ "operationId": "formatBlueprintDescription",
1417
+ "summary": "formatBlueprintDescription",
1418
+ "description": "Format a blueprint description as markdown using AI.\n",
1419
+ "tags": [
1420
+ "Blueprints"
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
+ "requestBody": {
1433
+ "required": true,
1434
+ "content": {
1435
+ "application/json": {
1436
+ "schema": {
1437
+ "type": "object",
1438
+ "required": [
1439
+ "text"
1440
+ ],
1441
+ "properties": {
1442
+ "text": {
1443
+ "type": "string",
1444
+ "description": "Plain text to format as markdown"
1445
+ }
1446
+ }
1447
+ }
1448
+ }
1449
+ }
1450
+ },
1451
+ "responses": {
1452
+ "200": {
1453
+ "description": "Successfully formatted description",
1454
+ "content": {
1455
+ "application/json": {
1456
+ "schema": {
1457
+ "type": "object",
1458
+ "properties": {
1459
+ "markdown": {
1460
+ "type": "string",
1461
+ "description": "AI-formatted markdown content"
1462
+ }
1463
+ }
1464
+ }
1465
+ }
1466
+ }
1467
+ }
1468
+ }
1469
+ }
1470
+ },
1471
+ "/v2/blueprint-manifest/blueprints/{blueprint_id}/resources": {
1472
+ "post": {
1473
+ "operationId": "addBlueprintResource",
1474
+ "summary": "addBlueprintResource",
1475
+ "description": "Add a resource to a Blueprint",
1476
+ "tags": [
1477
+ "Blueprints"
1478
+ ],
1479
+ "parameters": [
1480
+ {
1481
+ "in": "path",
1482
+ "required": true,
1483
+ "name": "blueprint_id",
1484
+ "schema": {
1485
+ "$ref": "#/components/schemas/BlueprintID"
1486
+ }
1487
+ },
1488
+ {
1489
+ "in": "query",
1490
+ "name": "add_dependencies",
1491
+ "schema": {
1492
+ "type": "boolean",
1493
+ "default": false,
1494
+ "description": "Whether to add this resource dependencies to the blueprint automatically"
1495
+ }
1496
+ }
1497
+ ],
1498
+ "requestBody": {
1499
+ "content": {
1500
+ "application/json": {
1501
+ "schema": {
1502
+ "$ref": "#/components/schemas/BlueprintResource"
1503
+ }
1504
+ }
1505
+ }
1506
+ },
1507
+ "responses": {
1508
+ "200": {
1509
+ "description": "Added Blueprint Resource",
1510
+ "content": {
1511
+ "application/json": {
1512
+ "schema": {
1513
+ "type": "object",
1514
+ "properties": {
1515
+ "resources": {
1516
+ "type": "array",
1517
+ "items": {
1518
+ "$ref": "#/components/schemas/BlueprintResource"
1519
+ }
1520
+ }
1521
+ }
1522
+ }
1523
+ }
1524
+ }
1525
+ }
1526
+ }
1527
+ }
1528
+ },
1529
+ "/v2/blueprint-manifest/blueprints/{blueprint_id}/resources:syncDependencies": {
1530
+ "post": {
1531
+ "operationId": "syncDependencies",
1532
+ "summary": "syncDependencies",
1533
+ "description": "Sync dependencies of all root resources in a Blueprint",
1534
+ "tags": [
1535
+ "Blueprints"
1536
+ ],
1537
+ "parameters": [
1538
+ {
1539
+ "in": "path",
1540
+ "required": true,
1541
+ "name": "blueprint_id",
1542
+ "schema": {
1543
+ "$ref": "#/components/schemas/BlueprintID"
1544
+ }
1545
+ }
1546
+ ],
1547
+ "responses": {
1548
+ "202": {
1549
+ "description": "Dependencies sync job started",
1550
+ "headers": {
1551
+ "Location": {
1552
+ "description": "URL to poll the job",
1553
+ "schema": {
1554
+ "type": "string"
1555
+ }
1556
+ }
1557
+ },
1558
+ "content": {
1559
+ "application/json": {
1560
+ "schema": {
1561
+ "type": "object",
1562
+ "properties": {
1563
+ "job_id": {
1564
+ "$ref": "#/components/schemas/BlueprintJobID"
1565
+ }
1566
+ }
1567
+ }
1568
+ }
1569
+ }
1570
+ }
1571
+ }
1572
+ }
1573
+ },
1574
+ "/v2/blueprint-manifest/blueprints/{blueprint_id}/resources/bulk": {
1575
+ "post": {
1576
+ "operationId": "bulkAddBlueprintResources",
1577
+ "summary": "bulkAddBlueprintResources",
1578
+ "description": "Bulk Add resources in a Blueprint",
1579
+ "tags": [
1580
+ "Blueprints"
1581
+ ],
1582
+ "parameters": [
1583
+ {
1584
+ "in": "path",
1585
+ "required": true,
1586
+ "name": "blueprint_id",
1587
+ "schema": {
1588
+ "$ref": "#/components/schemas/BlueprintID"
1589
+ }
1590
+ },
1591
+ {
1592
+ "in": "query",
1593
+ "name": "add_dependencies",
1594
+ "schema": {
1595
+ "type": "boolean",
1596
+ "default": false,
1597
+ "description": "Whether to add this resource dependencies to the blueprint automatically"
1598
+ }
1599
+ }
1600
+ ],
1601
+ "requestBody": {
1602
+ "content": {
1603
+ "application/json": {
1604
+ "schema": {
1605
+ "type": "array",
1606
+ "items": {
1607
+ "$ref": "#/components/schemas/BlueprintResource"
1608
+ }
1609
+ }
1610
+ }
1611
+ }
1612
+ },
1613
+ "responses": {
1614
+ "200": {
1615
+ "description": "Bulk updated Blueprint Resources",
1616
+ "content": {
1617
+ "application/json": {
1618
+ "schema": {
1619
+ "type": "object",
1620
+ "properties": {
1621
+ "resources": {
1622
+ "type": "array",
1623
+ "items": {
1624
+ "$ref": "#/components/schemas/BlueprintResource"
1625
+ }
1626
+ }
1627
+ }
1628
+ }
1629
+ }
1630
+ }
1631
+ }
1632
+ }
1633
+ },
1634
+ "put": {
1635
+ "operationId": "bulkUpdateBlueprintResources",
1636
+ "summary": "bulkUpdateBlueprintResources",
1637
+ "description": "Bulk update resources in a Blueprint",
1638
+ "tags": [
1639
+ "Blueprints"
1640
+ ],
1641
+ "parameters": [
1642
+ {
1643
+ "in": "path",
1644
+ "required": true,
1645
+ "name": "blueprint_id",
1646
+ "schema": {
1647
+ "$ref": "#/components/schemas/BlueprintID"
1648
+ }
1649
+ }
1650
+ ],
1651
+ "requestBody": {
1652
+ "content": {
1653
+ "application/json": {
1654
+ "schema": {
1655
+ "type": "array",
1656
+ "items": {
1657
+ "$ref": "#/components/schemas/BlueprintResource"
1658
+ }
1659
+ }
1660
+ }
1661
+ }
1662
+ },
1663
+ "responses": {
1664
+ "200": {
1665
+ "description": "Bulk updated Blueprint Resources",
1666
+ "content": {
1667
+ "application/json": {
1668
+ "schema": {
1669
+ "type": "object",
1670
+ "properties": {
1671
+ "resources": {
1672
+ "type": "array",
1673
+ "items": {
1674
+ "$ref": "#/components/schemas/BlueprintResource"
1675
+ }
1676
+ }
1677
+ }
1678
+ }
1679
+ }
1680
+ }
1681
+ }
1682
+ }
1683
+ },
1684
+ "delete": {
1685
+ "operationId": "bulkDeleteBlueprintResources",
1686
+ "summary": "bulkDeleteBlueprintResources",
1687
+ "description": "Bulk delete resources in a Blueprint",
1688
+ "tags": [
1689
+ "Blueprints"
1690
+ ],
1691
+ "parameters": [
1692
+ {
1693
+ "in": "path",
1694
+ "required": true,
1695
+ "name": "blueprint_id",
1696
+ "schema": {
1697
+ "$ref": "#/components/schemas/BlueprintID"
1698
+ }
1699
+ }
1700
+ ],
1701
+ "requestBody": {
1702
+ "content": {
1703
+ "application/json": {
1704
+ "schema": {
1705
+ "type": "array",
1706
+ "items": {
1707
+ "$ref": "#/components/schemas/BlueprintResourceID"
1708
+ }
1709
+ }
1710
+ }
1711
+ }
1712
+ },
1713
+ "responses": {
1714
+ "200": {
1715
+ "description": "Bulk deleted Blueprint Resources",
1716
+ "content": {
1717
+ "application/json": {
1718
+ "schema": {
1719
+ "type": "object",
1720
+ "properties": {
1721
+ "resources": {
1722
+ "type": "array",
1723
+ "items": {
1724
+ "$ref": "#/components/schemas/BlueprintResource"
1725
+ }
1726
+ }
1727
+ }
1728
+ }
1729
+ }
1730
+ }
1731
+ }
1732
+ }
1733
+ }
1734
+ },
1735
+ "/v2/blueprint-manifest/blueprints/{blueprint_id}/resources/{resource_id}": {
1736
+ "put": {
1737
+ "operationId": "updateBlueprintResource",
1738
+ "summary": "updateBlueprintResource",
1739
+ "description": "Update a resource in a Blueprint",
1740
+ "tags": [
1741
+ "Blueprints"
1742
+ ],
1743
+ "parameters": [
1744
+ {
1745
+ "in": "path",
1746
+ "required": true,
1747
+ "name": "blueprint_id",
1748
+ "schema": {
1749
+ "$ref": "#/components/schemas/BlueprintID"
1750
+ }
1751
+ },
1752
+ {
1753
+ "in": "path",
1754
+ "required": true,
1755
+ "name": "resource_id",
1756
+ "schema": {
1757
+ "$ref": "#/components/schemas/BlueprintResourceID"
1758
+ }
1759
+ }
1760
+ ],
1761
+ "requestBody": {
1762
+ "content": {
1763
+ "application/json": {
1764
+ "schema": {
1765
+ "$ref": "#/components/schemas/BlueprintResource"
1766
+ }
1767
+ }
1768
+ }
1769
+ },
1770
+ "responses": {
1771
+ "200": {
1772
+ "description": "Updated Blueprint Resource",
1773
+ "content": {
1774
+ "application/json": {
1775
+ "schema": {
1776
+ "type": "object",
1777
+ "properties": {
1778
+ "resources": {
1779
+ "type": "array",
1780
+ "items": {
1781
+ "$ref": "#/components/schemas/BlueprintResource"
1782
+ }
1783
+ }
1784
+ }
1785
+ }
1786
+ }
1787
+ }
1788
+ }
1789
+ }
1790
+ },
1791
+ "delete": {
1792
+ "operationId": "deleteBlueprintResource",
1793
+ "summary": "deleteBlueprintResource",
1794
+ "description": "Delete a resource from a Blueprint",
1795
+ "tags": [
1796
+ "Blueprints"
1797
+ ],
1798
+ "parameters": [
1799
+ {
1800
+ "in": "path",
1801
+ "required": true,
1802
+ "name": "blueprint_id",
1803
+ "schema": {
1804
+ "$ref": "#/components/schemas/BlueprintID"
1805
+ }
1806
+ },
1807
+ {
1808
+ "in": "path",
1809
+ "required": true,
1810
+ "name": "resource_id",
1811
+ "schema": {
1812
+ "$ref": "#/components/schemas/BlueprintResourceID"
1813
+ }
1814
+ }
1815
+ ],
1816
+ "responses": {
1817
+ "200": {
1818
+ "description": "Deleted Blueprint Resource",
1819
+ "content": {
1820
+ "application/json": {
1821
+ "schema": {
1822
+ "type": "object",
1823
+ "properties": {
1824
+ "resources": {
1825
+ "type": "array",
1826
+ "items": {
1827
+ "$ref": "#/components/schemas/BlueprintResource"
1828
+ }
1829
+ }
1830
+ }
1831
+ }
1832
+ }
1833
+ }
1834
+ }
1835
+ }
1836
+ }
1837
+ },
1838
+ "/v2/blueprint-manifest/jobs": {
1839
+ "get": {
1840
+ "operationId": "listBlueprintJobs",
1841
+ "summary": "List Blueprint Jobs",
1842
+ "description": "List all blueprint jobs",
1843
+ "tags": [
1844
+ "Jobs"
1845
+ ],
1846
+ "responses": {
1847
+ "200": {
1848
+ "description": "Blueprint jobs",
1849
+ "content": {
1850
+ "application/json": {
1851
+ "schema": {
1852
+ "type": "object",
1853
+ "properties": {
1854
+ "total": {
1855
+ "type": "integer",
1856
+ "example": 1
1857
+ },
1858
+ "results": {
1859
+ "type": "array",
1860
+ "items": {
1861
+ "$ref": "#/components/schemas/BlueprintJob"
1862
+ }
1863
+ }
1864
+ }
1865
+ }
1866
+ }
1867
+ }
1868
+ }
1869
+ }
1870
+ }
1871
+ },
1872
+ "/v2/blueprint-manifest/jobs/{job_id}": {
1873
+ "get": {
1874
+ "operationId": "getBlueprintJob",
1875
+ "summary": "Get Job",
1876
+ "description": "Poll current state of a job.",
1877
+ "tags": [
1878
+ "Jobs"
1879
+ ],
1880
+ "parameters": [
1881
+ {
1882
+ "in": "path",
1883
+ "required": true,
1884
+ "name": "job_id",
1885
+ "schema": {
1886
+ "$ref": "#/components/schemas/BlueprintJobID"
1887
+ }
1888
+ }
1889
+ ],
1890
+ "responses": {
1891
+ "200": {
1892
+ "description": "Job status",
1893
+ "content": {
1894
+ "application/json": {
1895
+ "schema": {
1896
+ "$ref": "#/components/schemas/BlueprintJob"
1897
+ }
1898
+ }
1899
+ }
1900
+ }
1901
+ }
1902
+ }
1903
+ },
1904
+ "/v2/blueprint-manifest/jobs/{job_id}:continue": {
1905
+ "post": {
1906
+ "operationId": "continueInstallationJob",
1907
+ "summary": "Continue Installation Job",
1908
+ "description": "Continue an installation job if it is waiting for user action.",
1909
+ "tags": [
1910
+ "Jobs"
1911
+ ],
1912
+ "parameters": [
1913
+ {
1914
+ "in": "path",
1915
+ "required": true,
1916
+ "name": "job_id",
1917
+ "schema": {
1918
+ "$ref": "#/components/schemas/BlueprintJobID"
1919
+ }
1920
+ }
1921
+ ],
1922
+ "requestBody": {
1923
+ "required": false,
1924
+ "content": {
1925
+ "application/json": {
1926
+ "schema": {
1927
+ "$ref": "#/components/schemas/BlueprintInstallationJobOptions"
1928
+ }
1929
+ }
1930
+ }
1931
+ },
1932
+ "responses": {
1933
+ "200": {
1934
+ "description": "Blueprint installation job continued",
1935
+ "content": {
1936
+ "application/json": {
1937
+ "schema": {
1938
+ "$ref": "#/components/schemas/BlueprintInstallationJob"
1939
+ }
1940
+ }
1941
+ }
1942
+ }
1943
+ }
1944
+ }
1945
+ },
1946
+ "/v2/blueprint-manifest/jobs/{job_id}:cancel": {
1947
+ "post": {
1948
+ "operationId": "cancelBlueprintJob",
1949
+ "summary": "Cancel Blueprint Job",
1950
+ "description": "Cancel a blueprint job if it is still running.",
1951
+ "tags": [
1952
+ "Jobs"
1953
+ ],
1954
+ "parameters": [
1955
+ {
1956
+ "in": "path",
1957
+ "required": true,
1958
+ "name": "job_id",
1959
+ "schema": {
1960
+ "$ref": "#/components/schemas/BlueprintJobID"
1961
+ }
1962
+ }
1963
+ ],
1964
+ "responses": {
1965
+ "200": {
1966
+ "description": "Blueprint job cancelled",
1967
+ "content": {
1968
+ "application/json": {
1969
+ "schema": {
1970
+ "$ref": "#/components/schemas/BlueprintJob"
1971
+ }
1972
+ }
1973
+ }
1974
+ }
1975
+ }
1976
+ }
1977
+ },
1978
+ "/v1/blueprints/{blueprint_id}/marketplace-listing": {
1979
+ "post": {
1980
+ "operationId": "createMarketplaceListing",
1981
+ "summary": "createMarketplaceListing",
1982
+ "description": "Create a marketplace listing for a blueprint. Returns 409 if one already exists.",
1983
+ "tags": [
1984
+ "Marketplace Listings"
1985
+ ],
1986
+ "parameters": [
1987
+ {
1988
+ "name": "blueprint_id",
1989
+ "in": "path",
1990
+ "required": true,
1991
+ "schema": {
1992
+ "type": "string"
1993
+ }
1994
+ }
1995
+ ],
1996
+ "requestBody": {
1997
+ "required": true,
1998
+ "content": {
1999
+ "application/json": {
2000
+ "schema": {
2001
+ "type": "object",
2002
+ "required": [
2003
+ "name"
2004
+ ],
2005
+ "properties": {
2006
+ "name": {
2007
+ "type": "string"
2008
+ },
2009
+ "slug": {
2010
+ "type": "string"
2011
+ }
2012
+ }
2013
+ }
2014
+ }
2015
+ }
2016
+ },
2017
+ "responses": {
2018
+ "201": {
2019
+ "description": "Marketplace listing created",
2020
+ "content": {
2021
+ "application/json": {
2022
+ "schema": {
2023
+ "$ref": "#/components/schemas/MarketplaceListing"
2024
+ }
2025
+ }
2026
+ }
2027
+ },
2028
+ "409": {
2029
+ "description": "Listing already exists for this blueprint"
2030
+ }
2031
+ }
2032
+ },
2033
+ "get": {
2034
+ "operationId": "getMarketplaceListing",
2035
+ "summary": "getMarketplaceListing",
2036
+ "description": "Get marketplace listing for a blueprint including all versions",
2037
+ "tags": [
2038
+ "Marketplace Listings"
2039
+ ],
2040
+ "parameters": [
2041
+ {
2042
+ "name": "blueprint_id",
2043
+ "in": "path",
2044
+ "required": true,
2045
+ "schema": {
2046
+ "type": "string"
2047
+ }
2048
+ }
2049
+ ],
2050
+ "responses": {
2051
+ "200": {
2052
+ "description": "Marketplace listing with versions",
2053
+ "content": {
2054
+ "application/json": {
2055
+ "schema": {
2056
+ "allOf": [
2057
+ {
2058
+ "$ref": "#/components/schemas/MarketplaceListing"
2059
+ },
2060
+ {
2061
+ "type": "object",
2062
+ "properties": {
2063
+ "versions": {
2064
+ "type": "array",
2065
+ "items": {
2066
+ "$ref": "#/components/schemas/MarketplaceListingVersion"
2067
+ }
2068
+ },
2069
+ "has_publishable_draft": {
2070
+ "type": "boolean"
2071
+ }
2072
+ }
2073
+ }
2074
+ ]
2075
+ }
2076
+ }
2077
+ }
2078
+ },
2079
+ "404": {
2080
+ "description": "Listing not found"
2081
+ }
2082
+ }
2083
+ }
2084
+ },
2085
+ "/v1/marketplace-listings": {
2086
+ "get": {
2087
+ "operationId": "listMarketplaceListings",
2088
+ "summary": "listMarketplaceListings",
2089
+ "description": "List all marketplace listings for the authenticated organization",
2090
+ "tags": [
2091
+ "Marketplace Listings"
2092
+ ],
2093
+ "security": [
2094
+ {
2095
+ "EpilotAuth": []
2096
+ }
2097
+ ],
2098
+ "responses": {
2099
+ "200": {
2100
+ "description": "List of marketplace listings",
2101
+ "content": {
2102
+ "application/json": {
2103
+ "schema": {
2104
+ "type": "object",
2105
+ "properties": {
2106
+ "listings": {
2107
+ "type": "array",
2108
+ "items": {
2109
+ "$ref": "#/components/schemas/MarketplaceListing"
2110
+ }
2111
+ }
2112
+ }
2113
+ }
2114
+ }
2115
+ }
2116
+ }
2117
+ }
2118
+ }
2119
+ },
2120
+ "/v1/marketplace-listings/{listing_id}": {
2121
+ "get": {
2122
+ "operationId": "getMarketplaceListingById",
2123
+ "summary": "getMarketplaceListingById",
2124
+ "description": "Get marketplace listing by listing ID including all versions",
2125
+ "tags": [
2126
+ "Marketplace Listings"
2127
+ ],
2128
+ "parameters": [
2129
+ {
2130
+ "name": "listing_id",
2131
+ "in": "path",
2132
+ "required": true,
2133
+ "schema": {
2134
+ "type": "string"
2135
+ }
2136
+ }
2137
+ ],
2138
+ "responses": {
2139
+ "200": {
2140
+ "description": "Marketplace listing with versions",
2141
+ "content": {
2142
+ "application/json": {
2143
+ "schema": {
2144
+ "allOf": [
2145
+ {
2146
+ "$ref": "#/components/schemas/MarketplaceListing"
2147
+ },
2148
+ {
2149
+ "type": "object",
2150
+ "properties": {
2151
+ "versions": {
2152
+ "type": "array",
2153
+ "items": {
2154
+ "$ref": "#/components/schemas/MarketplaceListingVersion"
2155
+ }
2156
+ },
2157
+ "has_publishable_draft": {
2158
+ "type": "boolean"
2159
+ }
2160
+ }
2161
+ }
2162
+ ]
2163
+ }
2164
+ }
2165
+ }
2166
+ },
2167
+ "404": {
2168
+ "description": "Listing not found"
2169
+ }
2170
+ }
2171
+ },
2172
+ "patch": {
2173
+ "operationId": "updateMarketplaceListing",
2174
+ "summary": "updateMarketplaceListing",
2175
+ "description": "Update listing-level fields",
2176
+ "tags": [
2177
+ "Marketplace Listings"
2178
+ ],
2179
+ "parameters": [
2180
+ {
2181
+ "name": "listing_id",
2182
+ "in": "path",
2183
+ "required": true,
2184
+ "schema": {
2185
+ "type": "string"
2186
+ }
2187
+ }
2188
+ ],
2189
+ "requestBody": {
2190
+ "required": true,
2191
+ "content": {
2192
+ "application/json": {
2193
+ "schema": {
2194
+ "$ref": "#/components/schemas/MarketplaceListingUpdate"
2195
+ }
2196
+ }
2197
+ }
2198
+ },
2199
+ "responses": {
2200
+ "200": {
2201
+ "description": "Updated marketplace listing",
2202
+ "content": {
2203
+ "application/json": {
2204
+ "schema": {
2205
+ "$ref": "#/components/schemas/MarketplaceListing"
2206
+ }
2207
+ }
2208
+ }
2209
+ },
2210
+ "404": {
2211
+ "description": "Listing not found"
2212
+ }
2213
+ }
2214
+ },
2215
+ "delete": {
2216
+ "operationId": "deleteMarketplaceListing",
2217
+ "summary": "deleteMarketplaceListing",
2218
+ "description": "Delete listing and all versions",
2219
+ "tags": [
2220
+ "Marketplace Listings"
2221
+ ],
2222
+ "parameters": [
2223
+ {
2224
+ "name": "listing_id",
2225
+ "in": "path",
2226
+ "required": true,
2227
+ "schema": {
2228
+ "type": "string"
2229
+ }
2230
+ }
2231
+ ],
2232
+ "responses": {
2233
+ "204": {
2234
+ "description": "Listing deleted"
2235
+ },
2236
+ "404": {
2237
+ "description": "Listing not found"
2238
+ }
2239
+ }
2240
+ }
2241
+ },
2242
+ "/v1/marketplace-listings/{listing_id}/versions": {
2243
+ "post": {
2244
+ "operationId": "createMarketplaceListingVersion",
2245
+ "summary": "createMarketplaceListingVersion",
2246
+ "description": "Create a draft version; auto-snapshots resources, requiredFeatures, recommendedApps from current blueprint",
2247
+ "tags": [
2248
+ "Marketplace Listing Versions"
2249
+ ],
2250
+ "parameters": [
2251
+ {
2252
+ "name": "listing_id",
2253
+ "in": "path",
2254
+ "required": true,
2255
+ "schema": {
2256
+ "type": "string"
2257
+ }
2258
+ }
2259
+ ],
2260
+ "responses": {
2261
+ "201": {
2262
+ "description": "Draft version created",
2263
+ "content": {
2264
+ "application/json": {
2265
+ "schema": {
2266
+ "$ref": "#/components/schemas/MarketplaceListingVersion"
2267
+ }
2268
+ }
2269
+ }
2270
+ },
2271
+ "404": {
2272
+ "description": "Listing not found"
2273
+ }
2274
+ }
2275
+ },
2276
+ "get": {
2277
+ "operationId": "listMarketplaceListingVersions",
2278
+ "summary": "listMarketplaceListingVersions",
2279
+ "description": "List all versions for a listing, newest first",
2280
+ "tags": [
2281
+ "Marketplace Listing Versions"
2282
+ ],
2283
+ "parameters": [
2284
+ {
2285
+ "name": "listing_id",
2286
+ "in": "path",
2287
+ "required": true,
2288
+ "schema": {
2289
+ "type": "string"
2290
+ }
2291
+ }
2292
+ ],
2293
+ "responses": {
2294
+ "200": {
2295
+ "description": "List of versions",
2296
+ "content": {
2297
+ "application/json": {
2298
+ "schema": {
2299
+ "type": "object",
2300
+ "properties": {
2301
+ "versions": {
2302
+ "type": "array",
2303
+ "items": {
2304
+ "$ref": "#/components/schemas/MarketplaceListingVersion"
2305
+ }
2306
+ }
2307
+ }
2308
+ }
2309
+ }
2310
+ }
2311
+ }
2312
+ }
2313
+ }
2314
+ },
2315
+ "/v1/marketplace-listings/{listing_id}/versions/{version_id}": {
2316
+ "patch": {
2317
+ "operationId": "updateMarketplaceListingVersion",
2318
+ "summary": "updateMarketplaceListingVersion",
2319
+ "description": "Update updateNote, requiredFeatures, or recommendedApps on a draft version",
2320
+ "tags": [
2321
+ "Marketplace Listing Versions"
2322
+ ],
2323
+ "parameters": [
2324
+ {
2325
+ "name": "listing_id",
2326
+ "in": "path",
2327
+ "required": true,
2328
+ "schema": {
2329
+ "type": "string"
2330
+ }
2331
+ },
2332
+ {
2333
+ "name": "version_id",
2334
+ "in": "path",
2335
+ "required": true,
2336
+ "schema": {
2337
+ "type": "string"
2338
+ }
2339
+ }
2340
+ ],
2341
+ "requestBody": {
2342
+ "required": true,
2343
+ "content": {
2344
+ "application/json": {
2345
+ "schema": {
2346
+ "type": "object",
2347
+ "properties": {
2348
+ "update_note": {
2349
+ "type": "string",
2350
+ "nullable": true
2351
+ },
2352
+ "required_features": {
2353
+ "type": "array",
2354
+ "items": {
2355
+ "type": "string"
2356
+ }
2357
+ },
2358
+ "recommended_apps": {
2359
+ "type": "array",
2360
+ "items": {
2361
+ "type": "string"
2362
+ }
2363
+ }
2364
+ }
2365
+ }
2366
+ }
2367
+ }
2368
+ },
2369
+ "responses": {
2370
+ "200": {
2371
+ "description": "Updated version",
2372
+ "content": {
2373
+ "application/json": {
2374
+ "schema": {
2375
+ "$ref": "#/components/schemas/MarketplaceListingVersion"
2376
+ }
2377
+ }
2378
+ }
2379
+ },
2380
+ "400": {
2381
+ "description": "Cannot update non-draft version"
2382
+ },
2383
+ "404": {
2384
+ "description": "Version not found"
2385
+ }
2386
+ }
2387
+ }
2388
+ },
2389
+ "/v1/marketplace-listings/{listing_id}/versions/{version_id}/publish": {
2390
+ "post": {
2391
+ "operationId": "publishMarketplaceListingVersion",
2392
+ "summary": "publishMarketplaceListingVersion",
2393
+ "description": "Publish a draft version; archives the previous live version",
2394
+ "tags": [
2395
+ "Marketplace Listing Versions"
2396
+ ],
2397
+ "parameters": [
2398
+ {
2399
+ "name": "listing_id",
2400
+ "in": "path",
2401
+ "required": true,
2402
+ "schema": {
2403
+ "type": "string"
2404
+ }
2405
+ },
2406
+ {
2407
+ "name": "version_id",
2408
+ "in": "path",
2409
+ "required": true,
2410
+ "schema": {
2411
+ "type": "string"
2412
+ }
2413
+ }
2414
+ ],
2415
+ "requestBody": {
2416
+ "required": true,
2417
+ "content": {
2418
+ "application/json": {
2419
+ "schema": {
2420
+ "type": "object",
2421
+ "required": [
2422
+ "version_name"
2423
+ ],
2424
+ "properties": {
2425
+ "version_name": {
2426
+ "type": "string"
2427
+ },
2428
+ "update_note": {
2429
+ "type": "string",
2430
+ "nullable": true
2431
+ }
2432
+ }
2433
+ }
2434
+ }
2435
+ }
2436
+ },
2437
+ "responses": {
2438
+ "200": {
2439
+ "description": "Published version",
2440
+ "content": {
2441
+ "application/json": {
2442
+ "schema": {
2443
+ "$ref": "#/components/schemas/MarketplaceListingVersion"
2444
+ }
2445
+ }
2446
+ }
2447
+ },
2448
+ "400": {
2449
+ "description": "Version not publishable or version_name already taken"
2450
+ },
2451
+ "404": {
2452
+ "description": "Version not found"
2453
+ }
2454
+ }
2455
+ }
2456
+ },
2457
+ "/v3/blueprint-manifest/blueprint:install": {
2458
+ "post": {
2459
+ "operationId": "installBlueprintV3",
2460
+ "summary": "Install Blueprint V3",
2461
+ "description": "Install a blueprint using the V3 engine (direct API calls, no Terraform).\nCreates resources in topological order with global ID replacement.\nSupports checkpoint-based resume on failure.\n",
2462
+ "tags": [
2463
+ "Blueprints"
2464
+ ],
2465
+ "requestBody": {
2466
+ "required": true,
2467
+ "content": {
2468
+ "application/json": {
2469
+ "schema": {
2470
+ "type": "object",
2471
+ "properties": {
2472
+ "source_org_id": {
2473
+ "type": "string"
2474
+ },
2475
+ "source_blueprint_id": {
2476
+ "$ref": "#/components/schemas/BlueprintID"
2477
+ },
2478
+ "source_blueprint_file": {
2479
+ "type": "string",
2480
+ "description": "S3 key to the blueprint zip file"
2481
+ },
2482
+ "destination_org_id": {
2483
+ "type": "string"
2484
+ },
2485
+ "destination_blueprint_id": {
2486
+ "$ref": "#/components/schemas/BlueprintID"
2487
+ },
2488
+ "destination_auth_token": {
2489
+ "type": "string",
2490
+ "description": "Auth token for the destination org. Required for cross-org installs where the caller's token belongs to the source org. Defaults to the caller's bearer token."
2491
+ },
2492
+ "options": {
2493
+ "$ref": "#/components/schemas/BlueprintInstallationJobOptions"
2494
+ },
2495
+ "slug": {
2496
+ "type": "string",
2497
+ "description": "Slug for marketplace blueprint consistency"
2498
+ }
2499
+ }
2500
+ }
2501
+ }
2502
+ }
2503
+ },
2504
+ "responses": {
2505
+ "202": {
2506
+ "description": "V3 install job started",
2507
+ "headers": {
2508
+ "Location": {
2509
+ "description": "URL to poll the job",
2510
+ "schema": {
2511
+ "type": "string"
2512
+ }
2513
+ }
2514
+ },
2515
+ "content": {
2516
+ "application/json": {
2517
+ "schema": {
2518
+ "type": "object",
2519
+ "properties": {
2520
+ "job_id": {
2521
+ "$ref": "#/components/schemas/BlueprintJobID"
2522
+ },
2523
+ "destination_blueprint_id": {
2524
+ "$ref": "#/components/schemas/BlueprintID"
2525
+ }
2526
+ }
2527
+ }
2528
+ }
2529
+ }
2530
+ }
2531
+ }
2532
+ }
2533
+ },
2534
+ "/v3/blueprint-manifest/blueprints/{blueprint_id}/lineage": {
2535
+ "get": {
2536
+ "operationId": "getBlueprintLineageV3",
2537
+ "summary": "Get Blueprint Lineage V3",
2538
+ "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",
2539
+ "tags": [
2540
+ "Blueprints"
2541
+ ],
2542
+ "parameters": [
2543
+ {
2544
+ "in": "path",
2545
+ "required": true,
2546
+ "name": "blueprint_id",
2547
+ "schema": {
2548
+ "$ref": "#/components/schemas/BlueprintID"
2549
+ }
2550
+ }
2551
+ ],
2552
+ "responses": {
2553
+ "200": {
2554
+ "description": "Lineage entries for the blueprint",
2555
+ "content": {
2556
+ "application/json": {
2557
+ "schema": {
2558
+ "type": "object",
2559
+ "properties": {
2560
+ "total": {
2561
+ "type": "integer"
2562
+ },
2563
+ "entries": {
2564
+ "type": "array",
2565
+ "items": {
2566
+ "$ref": "#/components/schemas/LineageEntry"
2567
+ }
2568
+ }
2569
+ }
2570
+ }
2571
+ }
2572
+ }
2573
+ }
2574
+ }
2575
+ }
2576
+ }
2577
+ },
2578
+ "components": {
2579
+ "schemas": {
2580
+ "LineageEntry": {
2581
+ "type": "object",
2582
+ "properties": {
2583
+ "lineage_id": {
2584
+ "type": "string",
2585
+ "description": "Immutable resource identity across orgs"
2586
+ },
2587
+ "target_id": {
2588
+ "type": "string",
2589
+ "description": "Resource ID in the destination org"
2590
+ },
2591
+ "resource_type": {
2592
+ "$ref": "#/components/schemas/ResourceNodeType"
2593
+ },
2594
+ "blueprint_instance_ids": {
2595
+ "type": "array",
2596
+ "items": {
2597
+ "type": "string"
2598
+ }
2599
+ },
2600
+ "fidelity": {
2601
+ "type": "string",
2602
+ "enum": [
2603
+ "full",
2604
+ "partial"
2605
+ ]
2606
+ },
2607
+ "last_synced_at": {
2608
+ "type": "string",
2609
+ "format": "date-time"
2610
+ }
2611
+ }
2612
+ },
2613
+ "BlueprintID": {
2614
+ "type": "string",
2615
+ "description": "ID of a blueprint",
2616
+ "example": "c2d6cac8-bdd5-4ea2-8a6c-1cbdbe77b341"
2617
+ },
2618
+ "BlueprintResourceID": {
2619
+ "type": "string",
2620
+ "description": "ID of a blueprint resource",
2621
+ "example": "c2d6cac8-bdd5-4ea2-8a6c-1cbdbe77b341"
2622
+ },
2623
+ "CommonBlueprintFields": {
2624
+ "type": "object",
2625
+ "properties": {
2626
+ "id": {
2627
+ "$ref": "#/components/schemas/BlueprintID"
2628
+ },
2629
+ "title": {
2630
+ "type": "string"
2631
+ },
2632
+ "slug": {
2633
+ "type": "string"
2634
+ },
2635
+ "description": {
2636
+ "type": "object",
2637
+ "properties": {
2638
+ "preinstall": {
2639
+ "type": "string",
2640
+ "description": "Markdown content shown before starting to install the blueprint",
2641
+ "example": "This is the content of the preinstall.md file which contains the blueprint description.\n"
2642
+ },
2643
+ "postinstall": {
2644
+ "type": "string",
2645
+ "description": "Markdown content to be displayed when showing the plan to install blueprint",
2646
+ "example": "This is the content of the postinstall.md file\n"
2647
+ }
2648
+ }
2649
+ },
2650
+ "version": {
2651
+ "type": "string"
2652
+ },
2653
+ "deployments": {
2654
+ "type": "array",
2655
+ "items": {
2656
+ "type": "object",
2657
+ "properties": {
2658
+ "source_org_id": {
2659
+ "type": "string"
2660
+ },
2661
+ "source_blueprint_id": {
2662
+ "type": "string"
2663
+ },
2664
+ "destination_org_id": {
2665
+ "type": "string"
2666
+ },
2667
+ "destination_blueprint_id": {
2668
+ "type": "string"
2669
+ },
2670
+ "triggered_at": {
2671
+ "type": "string",
2672
+ "format": "date-time"
2673
+ },
2674
+ "note": {
2675
+ "type": "string",
2676
+ "description": "User-provided note about this synchronization"
2677
+ }
2678
+ }
2679
+ }
2680
+ },
2681
+ "is_verified": {
2682
+ "type": "boolean",
2683
+ "description": "Whether the blueprint is verified by epilot"
2684
+ },
2685
+ "latest_verification": {
2686
+ "$ref": "#/components/schemas/LatestBlueprintVerification"
2687
+ },
2688
+ "ignored_resource_addresses": {
2689
+ "type": "array",
2690
+ "description": "Resource addresses excluded during the latest install/update and ignored by verification.",
2691
+ "items": {
2692
+ "type": "string"
2693
+ }
2694
+ },
2695
+ "installation_status": {
2696
+ "type": "string",
2697
+ "enum": [
2698
+ "IN_PROGRESS",
2699
+ "CANCELED",
2700
+ "PARTIAL",
2701
+ "SUCCESS",
2702
+ "FAILED"
2703
+ ]
2704
+ },
2705
+ "created_at": {
2706
+ "type": "string",
2707
+ "format": "date-time"
2708
+ },
2709
+ "updated_at": {
2710
+ "type": "string",
2711
+ "format": "date-time"
2712
+ },
2713
+ "created_by": {
2714
+ "$ref": "#/components/schemas/CallerIdentity"
2715
+ },
2716
+ "updated_by": {
2717
+ "$ref": "#/components/schemas/CallerIdentity"
2718
+ },
2719
+ "installation_job_ids": {
2720
+ "type": "array",
2721
+ "items": {
2722
+ "$ref": "#/components/schemas/BlueprintJobID"
2723
+ }
2724
+ },
2725
+ "source_blueprint_id": {
2726
+ "description": "ID of the blueprint that brought this blueprint to the destination org (deployed or installed)",
2727
+ "allOf": [
2728
+ {
2729
+ "$ref": "#/components/schemas/BlueprintID"
2730
+ }
2731
+ ]
2732
+ },
2733
+ "archived": {
2734
+ "type": "boolean",
2735
+ "description": "Whether the blueprint is archived (soft-deleted). Archived blueprints are hidden from the main list.",
2736
+ "default": false
2737
+ },
2738
+ "docs_url": {
2739
+ "type": "string",
2740
+ "description": "URL to the blueprint documentation"
2741
+ },
2742
+ "recommended_apps": {
2743
+ "type": "array",
2744
+ "items": {
2745
+ "type": "string"
2746
+ },
2747
+ "description": "List of recommended app IDs for the blueprint"
2748
+ },
2749
+ "required_features": {
2750
+ "type": "object",
2751
+ "description": "Feature constraints for blueprint installation",
2752
+ "properties": {
2753
+ "enabled": {
2754
+ "type": "array",
2755
+ "items": {
2756
+ "type": "string"
2757
+ },
2758
+ "description": "Features that must be enabled in the target org"
2759
+ },
2760
+ "disabled": {
2761
+ "type": "array",
2762
+ "items": {
2763
+ "type": "string"
2764
+ },
2765
+ "description": "Features that must be disabled in the target org"
2766
+ }
2767
+ }
2768
+ },
2769
+ "zip_file_name": {
2770
+ "type": "string",
2771
+ "description": "Custom name for the exported zip file"
2772
+ }
2773
+ },
2774
+ "required": [
2775
+ "title"
2776
+ ]
2777
+ },
2778
+ "BlueprintResource": {
2779
+ "type": "object",
2780
+ "properties": {
2781
+ "id": {
2782
+ "$ref": "#/components/schemas/BlueprintResourceID"
2783
+ },
2784
+ "name": {
2785
+ "type": "string"
2786
+ },
2787
+ "type": {
2788
+ "$ref": "#/components/schemas/ResourceNodeType"
2789
+ },
2790
+ "address": {
2791
+ "type": "string"
2792
+ },
2793
+ "is_root": {
2794
+ "type": "boolean",
2795
+ "description": "When a resource is marked as root, we'll be able to keep track of it's dependencies"
2796
+ },
2797
+ "is_ready": {
2798
+ "type": "boolean",
2799
+ "description": "when editing a blueprint, this indicates if the resource is ready to be exported and when installing a blueprint, this indicates if the resource is ready to be used"
2800
+ },
2801
+ "is_hidden": {
2802
+ "type": "boolean",
2803
+ "description": "When a resource is marked as hidden, it's used to hide it from the UI"
2804
+ },
2805
+ "is_disabled": {
2806
+ "type": "boolean",
2807
+ "default": false,
2808
+ "description": "When a resource is marked as disabled, it will be skipped during export"
2809
+ },
2810
+ "hard_dependencies": {
2811
+ "type": "array",
2812
+ "items": {
2813
+ "$ref": "#/components/schemas/ResourceNodeType"
2814
+ }
2815
+ },
2816
+ "parent_resource_ids": {
2817
+ "type": "array",
2818
+ "description": "Used to automatically remove resources with hard dependencies and to block deletion of resources with hard dependencies",
2819
+ "items": {
2820
+ "$ref": "#/components/schemas/BlueprintResourceID"
2821
+ }
2822
+ },
2823
+ "depends_on_addresses": {
2824
+ "type": "array",
2825
+ "description": "Terraform addresses this resource references (for dependency-aware ignore)",
2826
+ "items": {
2827
+ "type": "string"
2828
+ }
2829
+ },
2830
+ "impact_on_install": {
2831
+ "type": "array",
2832
+ "items": {
2833
+ "type": "string",
2834
+ "enum": [
2835
+ "create",
2836
+ "update",
2837
+ "internal-update",
2838
+ "no-op",
2839
+ "delete",
2840
+ "ignored"
2841
+ ]
2842
+ }
2843
+ },
2844
+ "impact_on_install_reason": {
2845
+ "type": "array",
2846
+ "description": "Fields causing the updates / internal updates on a resource install",
2847
+ "items": {
2848
+ "type": "string"
2849
+ }
2850
+ }
2851
+ },
2852
+ "required": [
2853
+ "id",
2854
+ "type"
2855
+ ]
2856
+ },
2857
+ "BlueprintPreview": {
2858
+ "type": "object",
2859
+ "description": "Preview data for a blueprint before installation. Stored temporarily with TTL.",
2860
+ "properties": {
2861
+ "id": {
2862
+ "type": "string",
2863
+ "description": "Unique preview ID"
2864
+ },
2865
+ "org_id": {
2866
+ "type": "string",
2867
+ "description": "Organization ID"
2868
+ },
2869
+ "title": {
2870
+ "type": "string"
2871
+ },
2872
+ "description": {
2873
+ "type": "object",
2874
+ "properties": {
2875
+ "preinstall": {
2876
+ "type": "string"
2877
+ }
2878
+ }
2879
+ },
2880
+ "version": {
2881
+ "type": "string"
2882
+ },
2883
+ "slug": {
2884
+ "type": "string"
2885
+ },
2886
+ "source_type": {
2887
+ "type": "string",
2888
+ "enum": [
2889
+ "marketplace",
2890
+ "file"
2891
+ ]
2892
+ },
2893
+ "blueprint_file_s3_key": {
2894
+ "type": "string",
2895
+ "description": "S3 key of the blueprint zip file"
2896
+ },
2897
+ "is_verified": {
2898
+ "type": "boolean"
2899
+ },
2900
+ "docs_url": {
2901
+ "type": "string"
2902
+ },
2903
+ "recommended_apps": {
2904
+ "type": "array",
2905
+ "items": {
2906
+ "type": "string"
2907
+ }
2908
+ },
2909
+ "required_features": {
2910
+ "type": "object",
2911
+ "properties": {
2912
+ "enabled": {
2913
+ "type": "array",
2914
+ "items": {
2915
+ "type": "string"
2916
+ }
2917
+ },
2918
+ "disabled": {
2919
+ "type": "array",
2920
+ "items": {
2921
+ "type": "string"
2922
+ }
2923
+ }
2924
+ }
2925
+ },
2926
+ "created_at": {
2927
+ "type": "string",
2928
+ "format": "date-time"
2929
+ },
2930
+ "created_by": {
2931
+ "$ref": "#/components/schemas/CallerIdentity"
2932
+ },
2933
+ "is_updating": {
2934
+ "type": "boolean",
2935
+ "description": "Whether the blueprint is updating to the latest version in the marketplace"
2936
+ },
2937
+ "resources": {
2938
+ "type": "array",
2939
+ "items": {
2940
+ "$ref": "#/components/schemas/BlueprintResource"
2941
+ }
2942
+ }
2943
+ },
2944
+ "required": [
2945
+ "id",
2946
+ "org_id",
2947
+ "title",
2948
+ "source_type",
2949
+ "blueprint_file_s3_key",
2950
+ "is_verified",
2951
+ "created_at",
2952
+ "created_by",
2953
+ "resources",
2954
+ "is_updating"
2955
+ ]
2956
+ },
2957
+ "CustomBlueprint": {
2958
+ "allOf": [
2959
+ {
2960
+ "$ref": "#/components/schemas/CommonBlueprintFields"
2961
+ },
2962
+ {
2963
+ "type": "object",
2964
+ "properties": {
2965
+ "resources": {
2966
+ "type": "array",
2967
+ "items": {
2968
+ "$ref": "#/components/schemas/BlueprintResource"
2969
+ }
2970
+ },
2971
+ "source_type": {
2972
+ "type": "string",
2973
+ "enum": [
2974
+ "custom"
2975
+ ]
2976
+ }
2977
+ }
2978
+ }
2979
+ ],
2980
+ "required": [
2981
+ "source_type"
2982
+ ]
2983
+ },
2984
+ "FileBlueprint": {
2985
+ "allOf": [
2986
+ {
2987
+ "$ref": "#/components/schemas/CommonBlueprintFields"
2988
+ },
2989
+ {
2990
+ "type": "object",
2991
+ "properties": {
2992
+ "source_type": {
2993
+ "type": "string",
2994
+ "enum": [
2995
+ "file"
2996
+ ]
2997
+ },
2998
+ "resources": {
2999
+ "type": "array",
3000
+ "items": {
3001
+ "$ref": "#/components/schemas/BlueprintResource"
3002
+ }
3003
+ }
3004
+ }
3005
+ }
3006
+ ],
3007
+ "required": [
3008
+ "source_type"
3009
+ ]
3010
+ },
3011
+ "MarketplaceBlueprint": {
3012
+ "allOf": [
3013
+ {
3014
+ "$ref": "#/components/schemas/CommonBlueprintFields"
3015
+ },
3016
+ {
3017
+ "type": "object",
3018
+ "properties": {
3019
+ "docs_url": {
3020
+ "type": "string",
3021
+ "description": "URL to the blueprint documentation"
3022
+ },
3023
+ "source_type": {
3024
+ "type": "string",
3025
+ "enum": [
3026
+ "marketplace"
3027
+ ]
3028
+ },
3029
+ "resources": {
3030
+ "type": "array",
3031
+ "items": {
3032
+ "$ref": "#/components/schemas/BlueprintResource"
3033
+ }
3034
+ },
3035
+ "recommended_apps": {
3036
+ "type": "array",
3037
+ "items": {
3038
+ "type": "string"
3039
+ },
3040
+ "description": "List of recommended app IDs for the blueprint"
3041
+ },
3042
+ "has_update_available": {
3043
+ "type": "boolean",
3044
+ "description": "Whether a newer version is available in the marketplace."
3045
+ },
3046
+ "latest_marketplace_version": {
3047
+ "type": "string",
3048
+ "description": "The latest version available in the marketplace.",
3049
+ "example": "v2.0.0"
3050
+ },
3051
+ "installation_link": {
3052
+ "type": "string",
3053
+ "description": "URL to install/update the blueprint from the marketplace."
3054
+ }
3055
+ }
3056
+ }
3057
+ ],
3058
+ "required": [
3059
+ "source_type"
3060
+ ]
3061
+ },
3062
+ "InstalledMarketplaceBlueprintItem": {
3063
+ "type": "object",
3064
+ "description": "Summary of an installed marketplace blueprint for version tracking",
3065
+ "properties": {
3066
+ "id": {
3067
+ "$ref": "#/components/schemas/BlueprintID"
3068
+ },
3069
+ "slug": {
3070
+ "type": "string",
3071
+ "description": "URL slug of the blueprint from the epilot marketplace",
3072
+ "example": "solar-b2b"
3073
+ },
3074
+ "version": {
3075
+ "type": "string",
3076
+ "description": "Version of the installed blueprint",
3077
+ "example": "v1.0.0"
3078
+ },
3079
+ "created_at": {
3080
+ "type": "string",
3081
+ "format": "date-time"
3082
+ },
3083
+ "created_by": {
3084
+ "$ref": "#/components/schemas/CallerIdentity"
3085
+ },
3086
+ "updated_at": {
3087
+ "type": "string",
3088
+ "format": "date-time"
3089
+ },
3090
+ "updated_by": {
3091
+ "$ref": "#/components/schemas/CallerIdentity"
3092
+ },
3093
+ "has_update_available": {
3094
+ "type": "boolean",
3095
+ "description": "Whether a newer version is available in the marketplace",
3096
+ "example": true
3097
+ },
3098
+ "latest_marketplace_version": {
3099
+ "type": "string",
3100
+ "description": "The latest version available in the marketplace",
3101
+ "example": "v2.0.0"
3102
+ },
3103
+ "installation_link": {
3104
+ "type": "string",
3105
+ "description": "URL to install/update the blueprint from the marketplace"
3106
+ }
3107
+ },
3108
+ "required": [
3109
+ "id",
3110
+ "slug"
3111
+ ]
3112
+ },
3113
+ "DeployedBlueprint": {
3114
+ "allOf": [
3115
+ {
3116
+ "$ref": "#/components/schemas/CommonBlueprintFields"
3117
+ },
3118
+ {
3119
+ "type": "object",
3120
+ "properties": {
3121
+ "source_type": {
3122
+ "type": "string",
3123
+ "enum": [
3124
+ "deploy"
3125
+ ]
3126
+ },
3127
+ "resources": {
3128
+ "type": "array",
3129
+ "items": {
3130
+ "$ref": "#/components/schemas/BlueprintResource"
3131
+ }
3132
+ }
3133
+ }
3134
+ }
3135
+ ],
3136
+ "required": [
3137
+ "source_type"
3138
+ ]
3139
+ },
3140
+ "AppBlueprint": {
3141
+ "allOf": [
3142
+ {
3143
+ "$ref": "#/components/schemas/CommonBlueprintFields"
3144
+ },
3145
+ {
3146
+ "type": "object",
3147
+ "properties": {
3148
+ "source_type": {
3149
+ "type": "string",
3150
+ "enum": [
3151
+ "app"
3152
+ ]
3153
+ },
3154
+ "resources": {
3155
+ "type": "array",
3156
+ "items": {
3157
+ "$ref": "#/components/schemas/BlueprintResource"
3158
+ }
3159
+ }
3160
+ }
3161
+ }
3162
+ ],
3163
+ "required": [
3164
+ "source_type"
3165
+ ]
3166
+ },
3167
+ "Blueprint": {
3168
+ "oneOf": [
3169
+ {
3170
+ "$ref": "#/components/schemas/CustomBlueprint"
3171
+ },
3172
+ {
3173
+ "$ref": "#/components/schemas/FileBlueprint"
3174
+ },
3175
+ {
3176
+ "$ref": "#/components/schemas/MarketplaceBlueprint"
3177
+ },
3178
+ {
3179
+ "$ref": "#/components/schemas/DeployedBlueprint"
3180
+ },
3181
+ {
3182
+ "$ref": "#/components/schemas/AppBlueprint"
3183
+ }
3184
+ ]
3185
+ },
3186
+ "BlueprintJobID": {
3187
+ "type": "string",
3188
+ "description": "ID of a job",
3189
+ "example": "c2d6cac8-bdd5-4ea2-8a6c-1cbdbe77b341"
3190
+ },
3191
+ "CommonBlueprintJobFields": {
3192
+ "type": "object",
3193
+ "properties": {
3194
+ "id": {
3195
+ "$ref": "#/components/schemas/BlueprintJobID"
3196
+ },
3197
+ "events": {
3198
+ "type": "array",
3199
+ "items": {
3200
+ "$ref": "#/components/schemas/BlueprintJobEvent"
3201
+ }
3202
+ },
3203
+ "triggered_at": {
3204
+ "type": "string",
3205
+ "format": "date-time"
3206
+ },
3207
+ "created_by": {
3208
+ "$ref": "#/components/schemas/CallerIdentity"
3209
+ }
3210
+ }
3211
+ },
3212
+ "BlueprintExportJob": {
3213
+ "allOf": [
3214
+ {
3215
+ "$ref": "#/components/schemas/CommonBlueprintJobFields"
3216
+ },
3217
+ {
3218
+ "type": "object",
3219
+ "properties": {
3220
+ "blueprint_id": {
3221
+ "$ref": "#/components/schemas/BlueprintID"
3222
+ },
3223
+ "status": {
3224
+ "type": "string",
3225
+ "enum": [
3226
+ "IN_PROGRESS",
3227
+ "SUCCESS",
3228
+ "FAILED",
3229
+ "CANCELED"
3230
+ ]
3231
+ },
3232
+ "download_file": {
3233
+ "$ref": "#/components/schemas/S3Reference"
3234
+ }
3235
+ }
3236
+ }
3237
+ ]
3238
+ },
3239
+ "BlueprintInstallationJob": {
3240
+ "allOf": [
3241
+ {
3242
+ "$ref": "#/components/schemas/CommonBlueprintJobFields"
3243
+ },
3244
+ {
3245
+ "type": "object",
3246
+ "properties": {
3247
+ "source_blueprint_id": {
3248
+ "$ref": "#/components/schemas/BlueprintID"
3249
+ },
3250
+ "source_blueprint_type": {
3251
+ "type": "string",
3252
+ "enum": [
3253
+ "custom",
3254
+ "file",
3255
+ "marketplace",
3256
+ "deploy",
3257
+ "app"
3258
+ ]
3259
+ },
3260
+ "source_org_id": {
3261
+ "type": "string"
3262
+ },
3263
+ "source_blueprint_file": {
3264
+ "type": "string"
3265
+ },
3266
+ "destination_blueprint_id": {
3267
+ "$ref": "#/components/schemas/BlueprintID"
3268
+ },
3269
+ "destination_org_id": {
3270
+ "type": "string"
3271
+ },
3272
+ "slug": {
3273
+ "type": "string",
3274
+ "description": "Blueprint slug for marketplace blueprints"
3275
+ },
3276
+ "status": {
3277
+ "type": "string",
3278
+ "enum": [
3279
+ "IN_PROGRESS",
3280
+ "WAITING_USER_ACTION",
3281
+ "CANCELED",
3282
+ "SUCCESS",
3283
+ "PARTIAL_SUCCESS",
3284
+ "FAILED"
3285
+ ]
3286
+ }
3287
+ }
3288
+ }
3289
+ ]
3290
+ },
3291
+ "BlueprintJob": {
3292
+ "oneOf": [
3293
+ {
3294
+ "$ref": "#/components/schemas/BlueprintExportJob"
3295
+ },
3296
+ {
3297
+ "$ref": "#/components/schemas/BlueprintInstallationJob"
3298
+ },
3299
+ {
3300
+ "$ref": "#/components/schemas/BlueprintDependenciesSyncJob"
3301
+ },
3302
+ {
3303
+ "$ref": "#/components/schemas/BlueprintValidateJob"
3304
+ },
3305
+ {
3306
+ "$ref": "#/components/schemas/BlueprintVerificationJob"
3307
+ }
3308
+ ]
3309
+ },
3310
+ "BlueprintDependenciesSyncJob": {
3311
+ "allOf": [
3312
+ {
3313
+ "$ref": "#/components/schemas/CommonBlueprintJobFields"
3314
+ },
3315
+ {
3316
+ "type": "object",
3317
+ "properties": {
3318
+ "blueprint_id": {
3319
+ "$ref": "#/components/schemas/BlueprintID"
3320
+ },
3321
+ "status": {
3322
+ "type": "string",
3323
+ "enum": [
3324
+ "IN_PROGRESS",
3325
+ "SUCCESS",
3326
+ "FAILED",
3327
+ "CANCELED"
3328
+ ]
3329
+ }
3330
+ }
3331
+ }
3332
+ ]
3333
+ },
3334
+ "BlueprintValidateJob": {
3335
+ "allOf": [
3336
+ {
3337
+ "$ref": "#/components/schemas/CommonBlueprintJobFields"
3338
+ },
3339
+ {
3340
+ "type": "object",
3341
+ "properties": {
3342
+ "blueprint_id": {
3343
+ "$ref": "#/components/schemas/BlueprintID"
3344
+ },
3345
+ "status": {
3346
+ "type": "string",
3347
+ "enum": [
3348
+ "IN_PROGRESS",
3349
+ "SUCCESS",
3350
+ "FAILED"
3351
+ ]
3352
+ },
3353
+ "valid": {
3354
+ "type": "boolean",
3355
+ "description": "Present when status is SUCCESS or FAILED."
3356
+ },
3357
+ "errors": {
3358
+ "type": "array",
3359
+ "items": {
3360
+ "$ref": "#/components/schemas/FormattedError"
3361
+ },
3362
+ "description": "Present when valid is false."
3363
+ }
3364
+ }
3365
+ }
3366
+ ]
3367
+ },
3368
+ "BlueprintVerificationJob": {
3369
+ "allOf": [
3370
+ {
3371
+ "$ref": "#/components/schemas/CommonBlueprintJobFields"
3372
+ },
3373
+ {
3374
+ "type": "object",
3375
+ "properties": {
3376
+ "source_org_id": {
3377
+ "type": "string"
3378
+ },
3379
+ "source_blueprint_id": {
3380
+ "$ref": "#/components/schemas/BlueprintID"
3381
+ },
3382
+ "destination_org_id": {
3383
+ "type": "string"
3384
+ },
3385
+ "destination_blueprint_id": {
3386
+ "$ref": "#/components/schemas/BlueprintID"
3387
+ },
3388
+ "status": {
3389
+ "type": "string",
3390
+ "enum": [
3391
+ "IN_PROGRESS",
3392
+ "SUCCESS",
3393
+ "FAILED"
3394
+ ]
3395
+ },
3396
+ "summary": {
3397
+ "$ref": "#/components/schemas/VerificationSummary"
3398
+ },
3399
+ "resource_results": {
3400
+ "type": "array",
3401
+ "items": {
3402
+ "$ref": "#/components/schemas/ResourceVerificationResult"
3403
+ }
3404
+ },
3405
+ "resource_results_s3_key": {
3406
+ "type": "string",
3407
+ "description": "S3 key for detailed results when too large for inline storage."
3408
+ }
3409
+ }
3410
+ }
3411
+ ]
3412
+ },
3413
+ "LatestBlueprintVerification": {
3414
+ "type": "object",
3415
+ "properties": {
3416
+ "job_id": {
3417
+ "$ref": "#/components/schemas/BlueprintJobID"
3418
+ },
3419
+ "status": {
3420
+ "type": "string",
3421
+ "enum": [
3422
+ "IN_PROGRESS",
3423
+ "SUCCESS",
3424
+ "FAILED"
3425
+ ]
3426
+ },
3427
+ "triggered_at": {
3428
+ "type": "string",
3429
+ "format": "date-time"
3430
+ },
3431
+ "source_org_id": {
3432
+ "type": "string"
3433
+ },
3434
+ "source_blueprint_id": {
3435
+ "$ref": "#/components/schemas/BlueprintID"
3436
+ },
3437
+ "destination_org_id": {
3438
+ "type": "string"
3439
+ },
3440
+ "destination_blueprint_id": {
3441
+ "$ref": "#/components/schemas/BlueprintID"
3442
+ },
3443
+ "summary": {
3444
+ "$ref": "#/components/schemas/VerificationSummary"
3445
+ }
3446
+ }
3447
+ },
3448
+ "VerificationSummary": {
3449
+ "type": "object",
3450
+ "properties": {
3451
+ "total_resources": {
3452
+ "type": "integer"
3453
+ },
3454
+ "matched": {
3455
+ "type": "integer"
3456
+ },
3457
+ "mismatched": {
3458
+ "type": "integer"
3459
+ },
3460
+ "missing_in_destination": {
3461
+ "type": "integer"
3462
+ },
3463
+ "fetch_errors": {
3464
+ "type": "integer"
3465
+ }
3466
+ }
3467
+ },
3468
+ "ResourceVerificationResult": {
3469
+ "type": "object",
3470
+ "properties": {
3471
+ "resource_type": {
3472
+ "$ref": "#/components/schemas/ResourceNodeType"
3473
+ },
3474
+ "resource_name": {
3475
+ "type": "string"
3476
+ },
3477
+ "source_resource_id": {
3478
+ "type": "string"
3479
+ },
3480
+ "destination_resource_id": {
3481
+ "type": "string"
3482
+ },
3483
+ "status": {
3484
+ "type": "string",
3485
+ "enum": [
3486
+ "matched",
3487
+ "mismatched",
3488
+ "missing_in_destination",
3489
+ "fetch_error"
3490
+ ]
3491
+ },
3492
+ "field_diffs": {
3493
+ "type": "array",
3494
+ "items": {
3495
+ "$ref": "#/components/schemas/FieldDiff"
3496
+ }
3497
+ },
3498
+ "error": {
3499
+ "type": "string"
3500
+ }
3501
+ }
3502
+ },
3503
+ "FieldDiff": {
3504
+ "type": "object",
3505
+ "properties": {
3506
+ "path": {
3507
+ "type": "string",
3508
+ "description": "JSON path to the differing field (e.g. \"steps[2].name\")"
3509
+ },
3510
+ "source_value": {},
3511
+ "destination_value": {},
3512
+ "diff_type": {
3513
+ "type": "string",
3514
+ "enum": [
3515
+ "value_changed",
3516
+ "field_missing_in_destination",
3517
+ "field_missing_in_source",
3518
+ "type_mismatch"
3519
+ ]
3520
+ }
3521
+ }
3522
+ },
3523
+ "BlueprintJobEvent": {
3524
+ "type": "object",
3525
+ "properties": {
3526
+ "timestamp": {
3527
+ "type": "string",
3528
+ "format": "date-time"
3529
+ },
3530
+ "message": {
3531
+ "type": "string"
3532
+ },
3533
+ "errors": {
3534
+ "type": "array",
3535
+ "items": {
3536
+ "$ref": "#/components/schemas/FormattedError"
3537
+ }
3538
+ },
3539
+ "level": {
3540
+ "type": "string",
3541
+ "enum": [
3542
+ "info",
3543
+ "warning",
3544
+ "error"
3545
+ ]
3546
+ },
3547
+ "data": {
3548
+ "type": "object",
3549
+ "properties": {
3550
+ "installed_blueprint_id": {
3551
+ "$ref": "#/components/schemas/BlueprintID"
3552
+ },
3553
+ "export_job_id": {
3554
+ "$ref": "#/components/schemas/BlueprintJobID"
3555
+ },
3556
+ "resources": {
3557
+ "type": "number"
3558
+ }
3559
+ }
3560
+ }
3561
+ }
3562
+ },
3563
+ "BlueprintInstallationJobOptions": {
3564
+ "type": "object",
3565
+ "properties": {
3566
+ "resources_to_ignore": {
3567
+ "description": "List of resource addresses to ignore changes for. When a resource is marked as create, it will be ignored and not created.",
3568
+ "type": "array",
3569
+ "items": {
3570
+ "type": "string"
3571
+ }
3572
+ }
3573
+ }
3574
+ },
3575
+ "ManifestID": {
3576
+ "type": "string",
3577
+ "description": "ID of an imported / installed manifest",
3578
+ "example": "c2d6cac8-bdd5-4ea2-8a6c-1cbdbe77b341"
3579
+ },
3580
+ "JobID": {
3581
+ "type": "string",
3582
+ "description": "ID of an import or export job (state machine)",
3583
+ "example": "4854bb2a-94f9-424d-a968-3fb17fb0bf89"
3584
+ },
3585
+ "ManifestSource": {
3586
+ "type": "string",
3587
+ "enum": [
3588
+ "file",
3589
+ "marketplace",
3590
+ "sandbox"
3591
+ ]
3592
+ },
3593
+ "Manifest": {
3594
+ "allOf": [
3595
+ {
3596
+ "type": "object",
3597
+ "properties": {
3598
+ "import_job_id": {
3599
+ "$ref": "#/components/schemas/JobID"
3600
+ },
3601
+ "previous_jobs_ids": {
3602
+ "type": "array",
3603
+ "items": {
3604
+ "type": "string"
3605
+ },
3606
+ "description": "List of job IDs that were used to install the manifest"
3607
+ },
3608
+ "previous_jobs": {
3609
+ "type": "array",
3610
+ "items": {
3611
+ "$ref": "#/components/schemas/Job"
3612
+ },
3613
+ "description": "List of jobs that were used to install the manifest"
3614
+ }
3615
+ }
3616
+ },
3617
+ {
3618
+ "$ref": "#/components/schemas/CommonManifestFields"
3619
+ },
3620
+ {
3621
+ "$ref": "#/components/schemas/CommonMarkdownFields"
3622
+ },
3623
+ {
3624
+ "$ref": "#/components/schemas/CommonImportFields"
3625
+ },
3626
+ {
3627
+ "$ref": "#/components/schemas/ManifestTimestampFields"
3628
+ }
3629
+ ]
3630
+ },
3631
+ "ManifestItem": {
3632
+ "allOf": [
3633
+ {
3634
+ "$ref": "#/components/schemas/CommonManifestFields"
3635
+ },
3636
+ {
3637
+ "$ref": "#/components/schemas/ManifestTimestampFields"
3638
+ }
3639
+ ]
3640
+ },
3641
+ "JobStatus": {
3642
+ "type": "string",
3643
+ "enum": [
3644
+ "PENDING",
3645
+ "STARTED",
3646
+ "WAITING_USER_ACTION",
3647
+ "CANCELED",
3648
+ "IN_PROGRESS",
3649
+ "SUCCESS",
3650
+ "PARTIAL_SUCCESS",
3651
+ "FAILED"
3652
+ ]
3653
+ },
3654
+ "ResourceNodeType": {
3655
+ "type": "string",
3656
+ "description": "Type of the resource",
3657
+ "enum": [
3658
+ "designbuilder",
3659
+ "journey",
3660
+ "product",
3661
+ "price",
3662
+ "product_recommendation",
3663
+ "coupon",
3664
+ "tax",
3665
+ "automation_flow",
3666
+ "entity_mapping",
3667
+ "file",
3668
+ "emailtemplate",
3669
+ "schema",
3670
+ "schema_attribute",
3671
+ "schema_capability",
3672
+ "schema_group",
3673
+ "schema_group_headline",
3674
+ "workflow_definition",
3675
+ "closing_reason",
3676
+ "taxonomy_classification",
3677
+ "webhook",
3678
+ "integration",
3679
+ "dashboard",
3680
+ "custom_variable",
3681
+ "usergroup",
3682
+ "saved_view",
3683
+ "app",
3684
+ "role",
3685
+ "portal_config",
3686
+ "target",
3687
+ "kanban",
3688
+ "validation_rule",
3689
+ "flow_template",
3690
+ "taxonomy",
3691
+ "notification_template",
3692
+ "environment_variable"
3693
+ ]
3694
+ },
3695
+ "PlanChanges": {
3696
+ "type": "array",
3697
+ "items": {
3698
+ "type": "string",
3699
+ "enum": [
3700
+ "create",
3701
+ "update",
3702
+ "internal-update",
3703
+ "no-op",
3704
+ "delete",
3705
+ "ignored"
3706
+ ]
3707
+ }
3708
+ },
3709
+ "CommonResourceNode": {
3710
+ "type": "object",
3711
+ "properties": {
3712
+ "id": {
3713
+ "type": "string",
3714
+ "description": "ID of the resource"
3715
+ },
3716
+ "type": {
3717
+ "$ref": "#/components/schemas/ResourceNodeType"
3718
+ },
3719
+ "name": {
3720
+ "type": "string",
3721
+ "description": "Name of the resource"
3722
+ },
3723
+ "source_id": {
3724
+ "type": "string",
3725
+ "description": "Source ID of the resource"
3726
+ },
3727
+ "is_virtual": {
3728
+ "type": "boolean",
3729
+ "description": "Whether the resource is virtual"
3730
+ }
3731
+ },
3732
+ "required": [
3733
+ "id",
3734
+ "type"
3735
+ ]
3736
+ },
3737
+ "RootResourceNode": {
3738
+ "allOf": [
3739
+ {
3740
+ "$ref": "#/components/schemas/CommonResourceNode"
3741
+ },
3742
+ {
3743
+ "type": "object",
3744
+ "properties": {
3745
+ "address": {
3746
+ "type": "string",
3747
+ "description": "Terraform address of the resource"
3748
+ },
3749
+ "dependencies": {
3750
+ "type": "array",
3751
+ "items": {
3752
+ "$ref": "#/components/schemas/VirtualResourceNodeGroup"
3753
+ },
3754
+ "description": "Dependencies of the resource",
3755
+ "nullable": true
3756
+ },
3757
+ "changes": {
3758
+ "$ref": "#/components/schemas/PlanChanges"
3759
+ },
3760
+ "changes_reason": {
3761
+ "type": "array",
3762
+ "description": "Fields causing the updates / internal updates on a resource install",
3763
+ "items": {
3764
+ "type": "string"
3765
+ }
3766
+ }
3767
+ }
3768
+ }
3769
+ ]
3770
+ },
3771
+ "VirtualResourceNodeGroup": {
3772
+ "allOf": [
3773
+ {
3774
+ "$ref": "#/components/schemas/CommonResourceNode"
3775
+ },
3776
+ {
3777
+ "type": "object",
3778
+ "properties": {
3779
+ "dependencies": {
3780
+ "type": "array",
3781
+ "items": {
3782
+ "$ref": "#/components/schemas/ResourceNode"
3783
+ }
3784
+ },
3785
+ "is_virtual": {
3786
+ "type": "boolean",
3787
+ "enum": [
3788
+ true
3789
+ ]
3790
+ }
3791
+ }
3792
+ }
3793
+ ]
3794
+ },
3795
+ "ResourceNode": {
3796
+ "allOf": [
3797
+ {
3798
+ "$ref": "#/components/schemas/CommonResourceNode"
3799
+ },
3800
+ {
3801
+ "type": "object",
3802
+ "properties": {
3803
+ "address": {
3804
+ "type": "string",
3805
+ "description": "Terraform address of the resource"
3806
+ },
3807
+ "dependencies": {
3808
+ "type": "array",
3809
+ "items": {
3810
+ "$ref": "#/components/schemas/ResourceNode"
3811
+ },
3812
+ "description": "Dependencies of the resource",
3813
+ "nullable": true
3814
+ },
3815
+ "parents": {
3816
+ "type": "array",
3817
+ "items": {
3818
+ "type": "object",
3819
+ "properties": {
3820
+ "id": {
3821
+ "type": "string"
3822
+ },
3823
+ "type": {
3824
+ "$ref": "#/components/schemas/ResourceNodeType"
3825
+ }
3826
+ }
3827
+ }
3828
+ },
3829
+ "source_id": {
3830
+ "description": "Original ID of the exported resource",
3831
+ "type": "string"
3832
+ },
3833
+ "changes": {
3834
+ "$ref": "#/components/schemas/PlanChanges"
3835
+ },
3836
+ "changes_reason": {
3837
+ "type": "array",
3838
+ "description": "Fields causing the updates / internal updates on a resource install",
3839
+ "items": {
3840
+ "type": "string"
3841
+ }
3842
+ }
3843
+ }
3844
+ }
3845
+ ]
3846
+ },
3847
+ "Job": {
3848
+ "allOf": [
3849
+ {
3850
+ "type": "object",
3851
+ "properties": {
3852
+ "job_id": {
3853
+ "$ref": "#/components/schemas/JobID"
3854
+ },
3855
+ "job_status": {
3856
+ "$ref": "#/components/schemas/JobStatus"
3857
+ },
3858
+ "manifest_file_path": {
3859
+ "type": "string",
3860
+ "description": "The S3 key of the manifest file"
3861
+ },
3862
+ "message": {
3863
+ "type": "string"
3864
+ },
3865
+ "timestamp": {
3866
+ "type": "string",
3867
+ "format": "date-time"
3868
+ },
3869
+ "plan_file_content": {
3870
+ "type": "string",
3871
+ "description": "An URL to download the plan file"
3872
+ },
3873
+ "resources_to_export": {
3874
+ "description": "An array of tree-like JSON objects or a singular tree-like JSON object representing the resources to import",
3875
+ "oneOf": [
3876
+ {
3877
+ "type": "array",
3878
+ "items": {
3879
+ "$ref": "#/components/schemas/RootResourceNode"
3880
+ }
3881
+ },
3882
+ {
3883
+ "$ref": "#/components/schemas/RootResourceNode"
3884
+ }
3885
+ ]
3886
+ },
3887
+ "large_resources_to_export_url": {
3888
+ "type": "string",
3889
+ "description": "An URL to download the resources to export when the resources are too large to be included in the response"
3890
+ },
3891
+ "resources_to_import": {
3892
+ "description": "An array of tree-like JSON objects or a singular tree-like JSON object representing the resources to import",
3893
+ "oneOf": [
3894
+ {
3895
+ "type": "array",
3896
+ "items": {
3897
+ "$ref": "#/components/schemas/RootResourceNode"
3898
+ }
3899
+ },
3900
+ {
3901
+ "$ref": "#/components/schemas/RootResourceNode"
3902
+ }
3903
+ ]
3904
+ },
3905
+ "large_resources_to_import_url": {
3906
+ "type": "string",
3907
+ "description": "An URL to download the resources to import when the resources are too large to be included in the response"
3908
+ },
3909
+ "resource_replacements": {
3910
+ "type": "array",
3911
+ "items": {
3912
+ "$ref": "#/components/schemas/ResourceReplacement"
3913
+ }
3914
+ },
3915
+ "is_verified": {
3916
+ "type": "boolean",
3917
+ "description": "Whether the manifest comes from a trusted source and is signed by epilot"
3918
+ },
3919
+ "errors": {
3920
+ "type": "array",
3921
+ "items": {
3922
+ "$ref": "#/components/schemas/FormattedError"
3923
+ }
3924
+ }
3925
+ }
3926
+ },
3927
+ {
3928
+ "$ref": "#/components/schemas/CommonImportFields"
3929
+ },
3930
+ {
3931
+ "$ref": "#/components/schemas/CommonMarkdownFields"
3932
+ },
3933
+ {
3934
+ "$ref": "#/components/schemas/CommonManifestFields"
3935
+ }
3936
+ ]
3937
+ },
3938
+ "UploadFilePayload": {
3939
+ "type": "object",
3940
+ "properties": {
3941
+ "filename": {
3942
+ "type": "string",
3943
+ "example": "example.manifest.zip"
3944
+ }
3945
+ },
3946
+ "required": [
3947
+ "filename"
3948
+ ]
3949
+ },
3950
+ "S3Reference": {
3951
+ "type": "object",
3952
+ "properties": {
3953
+ "bucket": {
3954
+ "type": "string",
3955
+ "example": "blueprint-manifest-prod-blueprintsv2bucket-sybpsryropzw"
3956
+ },
3957
+ "key": {
3958
+ "type": "string",
3959
+ "example": "templates/main.tf"
3960
+ }
3961
+ },
3962
+ "required": [
3963
+ "bucket",
3964
+ "key"
3965
+ ]
3966
+ },
3967
+ "CommonManifestFields": {
3968
+ "type": "object",
3969
+ "properties": {
3970
+ "manifest_id": {
3971
+ "$ref": "#/components/schemas/ManifestID"
3972
+ },
3973
+ "source_type": {
3974
+ "$ref": "#/components/schemas/ManifestSource"
3975
+ },
3976
+ "source_blueprint_name": {
3977
+ "type": "string",
3978
+ "example": "Solar B2B"
3979
+ },
3980
+ "source_blueprint_slug": {
3981
+ "type": "string",
3982
+ "description": "URL slug of a blueprint from the epilot marketplace",
3983
+ "example": "solar-b2b"
3984
+ },
3985
+ "source_blueprint_version": {
3986
+ "type": "string",
3987
+ "description": "Version of the blueprint (semver)",
3988
+ "example": "1.0.0"
3989
+ },
3990
+ "pre_install_requirements": {
3991
+ "$ref": "#/components/schemas/PreInstallRequirements"
3992
+ },
3993
+ "source_blueprint_file": {
3994
+ "type": "string",
3995
+ "deprecated": true,
3996
+ "description": "A URL to download the source blueprint file used to import the blueprint",
3997
+ "example": "https://blueprint-manifest-prod.s3.eu-central-1.amazonaws.com/manifest.zip"
3998
+ },
3999
+ "docs_link": {
4000
+ "type": "string",
4001
+ "description": "Link to the blueprint documentation",
4002
+ "example": "https://help.epilot.cloud"
4003
+ },
4004
+ "source_blueprint_file_ref": {
4005
+ "$ref": "#/components/schemas/S3Reference"
4006
+ },
4007
+ "install_status": {
4008
+ "$ref": "#/components/schemas/BlueprintInstallStatus"
4009
+ },
4010
+ "install_status_description": {
4011
+ "type": "string",
4012
+ "example": "This blueprint installation resulted in a partial deployment; some resources were created successfully, but failed to complete the full resource setup."
4013
+ },
4014
+ "is_verified": {
4015
+ "type": "boolean",
4016
+ "description": "Whether the manifest comes from a trusted source and is signed by epilot"
4017
+ },
4018
+ "created_by": {
4019
+ "$ref": "#/components/schemas/CallerIdentity"
4020
+ },
4021
+ "updated_by": {
4022
+ "$ref": "#/components/schemas/CallerIdentity"
4023
+ },
4024
+ "manifest_version": {
4025
+ "type": "string",
4026
+ "description": "Version of the manifest (semver)",
4027
+ "example": "1.0.0"
4028
+ },
4029
+ "selected_resources_url": {
4030
+ "type": "string",
4031
+ "description": "All the resources that were selected to be exported, used to pre-select the resources when updating a sandbox manifest",
4032
+ "example": "https://blueprint-manifest-prod.s3.eu-central-1.amazonaws.com/selected_resources.json"
4033
+ },
4034
+ "ready_imported_resources_url": {
4035
+ "type": "string",
4036
+ "description": "All the resources that were marked as ready by the user",
4037
+ "example": "https://blueprint-manifest-prod.s3.eu-central-1.amazonaws.com/ready_imported_resources.json"
4038
+ },
4039
+ "deployed_from": {
4040
+ "type": "object",
4041
+ "properties": {
4042
+ "source_organization_id": {
4043
+ "type": "string",
4044
+ "description": "ID of the organization that deployed the manifest"
4045
+ },
4046
+ "source_manifest_id": {
4047
+ "type": "string",
4048
+ "description": "ID of the manifest that was deployed"
4049
+ },
4050
+ "source_organization_type": {
4051
+ "type": "string",
4052
+ "enum": [
4053
+ "sandbox",
4054
+ "production"
4055
+ ]
4056
+ },
4057
+ "last_triggered_at": {
4058
+ "type": "string",
4059
+ "format": "date-time",
4060
+ "description": "When the deployment was last triggered"
4061
+ }
4062
+ },
4063
+ "description": "Information about the manifest that was deployed from, used to update existing deployments instead of always creating new ones"
4064
+ },
4065
+ "deployed_to": {
4066
+ "type": "array",
4067
+ "items": {
4068
+ "type": "object",
4069
+ "properties": {
4070
+ "destination_organization_id": {
4071
+ "type": "string",
4072
+ "description": "ID of the organization that the manifest was deployed to"
4073
+ },
4074
+ "destination_manifest_id": {
4075
+ "type": "string",
4076
+ "description": "ID of the manifest that was deployed to"
4077
+ },
4078
+ "destination_organization_type": {
4079
+ "type": "string",
4080
+ "enum": [
4081
+ "sandbox",
4082
+ "production"
4083
+ ]
4084
+ },
4085
+ "last_triggered_at": {
4086
+ "type": "string",
4087
+ "format": "date-time",
4088
+ "description": "When the deployment was last triggered"
4089
+ }
4090
+ }
4091
+ },
4092
+ "description": "Information about the manifest that was deployed to, used to update existing deployments instead of always creating new ones"
4093
+ }
4094
+ }
4095
+ },
4096
+ "ManifestTimestampFields": {
4097
+ "type": "object",
4098
+ "properties": {
4099
+ "created_at": {
4100
+ "description": "When the manifest was first installed (applied)",
4101
+ "type": "string",
4102
+ "format": "date-time"
4103
+ },
4104
+ "updated_at": {
4105
+ "description": "When the manifest was last updated (applied)",
4106
+ "type": "string",
4107
+ "format": "date-time"
4108
+ }
4109
+ }
4110
+ },
4111
+ "CommonImportFields": {
4112
+ "type": "object",
4113
+ "properties": {
4114
+ "source_type": {
4115
+ "$ref": "#/components/schemas/ManifestSource"
4116
+ },
4117
+ "imported_resources": {
4118
+ "description": "An array of tree-like JSON objects or a singular tree-like JSON object representing the resources to import",
4119
+ "oneOf": [
4120
+ {
4121
+ "type": "array",
4122
+ "items": {
4123
+ "$ref": "#/components/schemas/RootResourceNode"
4124
+ }
4125
+ },
4126
+ {
4127
+ "$ref": "#/components/schemas/RootResourceNode"
4128
+ }
4129
+ ]
4130
+ },
4131
+ "large_imported_resources_url": {
4132
+ "type": "string",
4133
+ "format": "uri",
4134
+ "description": "An URL to download the imported resources when the resources are too large to be included in the response",
4135
+ "example": "https://blueprint-manifest-prod.s3.eu-central-1.amazonaws.com/large.json"
4136
+ }
4137
+ }
4138
+ },
4139
+ "CommonMarkdownFields": {
4140
+ "type": "object",
4141
+ "properties": {
4142
+ "markdown": {
4143
+ "type": "object",
4144
+ "description": "Markdown content part of a manifest file",
4145
+ "properties": {
4146
+ "manifest": {
4147
+ "type": "string",
4148
+ "description": "Markdown content shown before installing the manifest",
4149
+ "example": "This is the content of the manifest.md file which contains the manifest descripton.\n"
4150
+ },
4151
+ "preinstall": {
4152
+ "type": "string",
4153
+ "deprecated": true,
4154
+ "description": "Markdown content to be displayed when showing the plan to install blueprint",
4155
+ "example": "This is the content of the preinstall.md file\n"
4156
+ },
4157
+ "postinstall": {
4158
+ "type": "string",
4159
+ "description": "Markdown content to be displayed when showing the plan to install blueprint",
4160
+ "example": "This is the content of the postinstall.md file\n"
4161
+ }
4162
+ }
4163
+ }
4164
+ }
4165
+ },
4166
+ "PreInstallRequirements": {
4167
+ "type": "array",
4168
+ "items": {
4169
+ "type": "string"
4170
+ },
4171
+ "description": "List of feature settings that must be enabled before installing the blueprint",
4172
+ "example": [
4173
+ "journey_automation",
4174
+ "ticket-entities",
4175
+ "advanced_permissions"
4176
+ ]
4177
+ },
4178
+ "BlueprintInstallStatus": {
4179
+ "type": "string",
4180
+ "enum": [
4181
+ "SUCCESS",
4182
+ "PARTIAL",
4183
+ "FAILED"
4184
+ ]
4185
+ },
4186
+ "FormattedErrorCodes": {
4187
+ "type": "string",
4188
+ "enum": [
4189
+ "dependency_extraction",
4190
+ "resource_not_found",
4191
+ "resource_fetch_api_error",
4192
+ "resource_fetch_unknown_error",
4193
+ "terraform_cli_process_error",
4194
+ "terraform_import_block_process_error",
4195
+ "terraform_init_error",
4196
+ "terraform_validate_error",
4197
+ "terraform_plan_error",
4198
+ "terraform_apply_error",
4199
+ "terraform_show_error",
4200
+ "generic_error",
4201
+ "bad_request",
4202
+ "forbidden",
4203
+ "conflict",
4204
+ "not_found",
4205
+ "undeclared_resource",
4206
+ "invalid_readonly_attribute",
4207
+ "invalid_attribute_value",
4208
+ "unsupported_attribute",
4209
+ "self_referential_block",
4210
+ "circular_dependency",
4211
+ "state_mismatch",
4212
+ "import_nonexistent_object",
4213
+ "provider_install_error",
4214
+ "stale_blueprint"
4215
+ ]
4216
+ },
4217
+ "FormattedErrorData": {
4218
+ "type": "object",
4219
+ "properties": {
4220
+ "id": {
4221
+ "type": "string"
4222
+ },
4223
+ "name": {
4224
+ "type": "string"
4225
+ },
4226
+ "type": {
4227
+ "type": "string"
4228
+ }
4229
+ }
4230
+ },
4231
+ "FormattedError": {
4232
+ "type": "object",
4233
+ "properties": {
4234
+ "error": {
4235
+ "anyOf": [
4236
+ {
4237
+ "type": "string"
4238
+ },
4239
+ {
4240
+ "type": "object"
4241
+ }
4242
+ ]
4243
+ },
4244
+ "code": {
4245
+ "$ref": "#/components/schemas/FormattedErrorCodes"
4246
+ },
4247
+ "data": {
4248
+ "type": "object",
4249
+ "properties": {
4250
+ "formattedResource": {
4251
+ "$ref": "#/components/schemas/FormattedErrorData"
4252
+ },
4253
+ "resource": {
4254
+ "type": "string"
4255
+ },
4256
+ "resourceDependency": {
4257
+ "type": "string"
4258
+ },
4259
+ "resources": {
4260
+ "type": "array",
4261
+ "items": {
4262
+ "type": "string"
4263
+ }
4264
+ },
4265
+ "addresses": {
4266
+ "type": "array",
4267
+ "items": {
4268
+ "type": "string"
4269
+ }
4270
+ },
4271
+ "originalError": {
4272
+ "type": "string"
4273
+ }
4274
+ }
4275
+ }
4276
+ }
4277
+ },
4278
+ "CallerIdentity": {
4279
+ "type": "object",
4280
+ "properties": {
4281
+ "name": {
4282
+ "description": "a human readable name of the caller (e.g. user name, token name or email address)",
4283
+ "example": "manifest@epilot.cloud"
4284
+ },
4285
+ "org_id": {
4286
+ "description": "epilot organization id",
4287
+ "type": "string",
4288
+ "example": "911690"
4289
+ },
4290
+ "user_id": {
4291
+ "description": "epilot user id, when called by a user",
4292
+ "type": "string",
4293
+ "example": "11001045"
4294
+ },
4295
+ "token_id": {
4296
+ "description": "token id, when called by API token",
4297
+ "type": "string",
4298
+ "example": "api_5ZugdRXasLfWBypHi93Fk"
4299
+ }
4300
+ },
4301
+ "required": [
4302
+ "org_id"
4303
+ ]
4304
+ },
4305
+ "SelectedResources": {
4306
+ "type": "object",
4307
+ "properties": {
4308
+ "exported_root_resources": {
4309
+ "type": "array",
4310
+ "items": {
4311
+ "type": "object",
4312
+ "properties": {
4313
+ "id": {
4314
+ "type": "string"
4315
+ },
4316
+ "type": {
4317
+ "$ref": "#/components/schemas/ResourceNodeType"
4318
+ },
4319
+ "address": {
4320
+ "type": "string",
4321
+ "description": "Terraform address of the resource"
4322
+ }
4323
+ },
4324
+ "required": [
4325
+ "id",
4326
+ "type"
4327
+ ]
4328
+ }
4329
+ },
4330
+ "selected_resources": {
4331
+ "type": "array",
4332
+ "items": {
4333
+ "type": "string"
4334
+ }
4335
+ },
4336
+ "pipeline_id": {
4337
+ "type": "string",
4338
+ "description": "Pipeline ID selected when doing the sandbox sync"
4339
+ }
4340
+ },
4341
+ "required": [
4342
+ "exported_root_resources",
4343
+ "selected_resources"
4344
+ ]
4345
+ },
4346
+ "ResourceReplacement": {
4347
+ "type": "object",
4348
+ "properties": {
4349
+ "originalAddress": {
4350
+ "type": "string",
4351
+ "description": "Original resource ID to be replaced"
4352
+ },
4353
+ "replacementId": {
4354
+ "type": "string",
4355
+ "description": "ID of the resource that will replace the original"
4356
+ },
4357
+ "replacementName": {
4358
+ "type": "string",
4359
+ "description": "Name of the resource that will replace the original"
4360
+ }
4361
+ },
4362
+ "required": [
4363
+ "originalAddress",
4364
+ "replacementId"
4365
+ ]
4366
+ },
4367
+ "PutManifestPayload": {
4368
+ "type": "object",
4369
+ "properties": {
4370
+ "source_blueprint_name": {
4371
+ "type": "string",
4372
+ "description": "Name of the source blueprint"
4373
+ },
4374
+ "markdown": {
4375
+ "type": "string",
4376
+ "description": "Markdown content of the manifest"
4377
+ },
4378
+ "ready_resources": {
4379
+ "type": "array",
4380
+ "items": {
4381
+ "type": "string"
4382
+ },
4383
+ "description": "Array of ids of resources selected to be ready by the user"
4384
+ },
4385
+ "deployed_to": {
4386
+ "type": "array",
4387
+ "items": {
4388
+ "type": "object",
4389
+ "properties": {
4390
+ "destination_organization_id": {
4391
+ "type": "string",
4392
+ "description": "ID of the organization that the manifest was deployed to"
4393
+ },
4394
+ "destination_manifest_id": {
4395
+ "type": "string",
4396
+ "description": "ID of the manifest that was deployed to"
4397
+ },
4398
+ "destination_organization_type": {
4399
+ "type": "string",
4400
+ "enum": [
4401
+ "sandbox",
4402
+ "production"
4403
+ ]
4404
+ },
4405
+ "last_triggered_at": {
4406
+ "type": "string"
4407
+ }
4408
+ }
4409
+ }
4410
+ }
4411
+ }
4412
+ },
4413
+ "MarketplaceListing": {
4414
+ "type": "object",
4415
+ "required": [
4416
+ "id",
4417
+ "blueprint_id",
4418
+ "name",
4419
+ "slug",
4420
+ "status"
4421
+ ],
4422
+ "properties": {
4423
+ "id": {
4424
+ "type": "string",
4425
+ "format": "uuid"
4426
+ },
4427
+ "blueprint_id": {
4428
+ "type": "string"
4429
+ },
4430
+ "name": {
4431
+ "type": "string"
4432
+ },
4433
+ "slug": {
4434
+ "type": "string"
4435
+ },
4436
+ "logo": {
4437
+ "type": "string",
4438
+ "nullable": true
4439
+ },
4440
+ "documentation_url": {
4441
+ "type": "string",
4442
+ "nullable": true
4443
+ },
4444
+ "pricing_type": {
4445
+ "type": "string",
4446
+ "enum": [
4447
+ "free",
4448
+ "paid",
4449
+ "freemium",
4450
+ "contact_us"
4451
+ ],
4452
+ "nullable": true
4453
+ },
4454
+ "support_email": {
4455
+ "type": "string",
4456
+ "nullable": true
4457
+ },
4458
+ "portal_description": {
4459
+ "type": "string",
4460
+ "nullable": true
4461
+ },
4462
+ "teaser_name": {
4463
+ "type": "string",
4464
+ "nullable": true
4465
+ },
4466
+ "teaser_short_description": {
4467
+ "type": "string",
4468
+ "nullable": true
4469
+ },
4470
+ "teaser_thumbnail": {
4471
+ "type": "string",
4472
+ "nullable": true
4473
+ },
4474
+ "details_page_title": {
4475
+ "type": "string",
4476
+ "nullable": true
4477
+ },
4478
+ "details_page_description": {
4479
+ "type": "string",
4480
+ "nullable": true
4481
+ },
4482
+ "details_page_hero_image": {
4483
+ "type": "string",
4484
+ "nullable": true
4485
+ },
4486
+ "details_page_carousel": {
4487
+ "type": "array",
4488
+ "items": {
4489
+ "type": "string"
4490
+ },
4491
+ "nullable": true
4492
+ },
4493
+ "resources_section_description": {
4494
+ "type": "string",
4495
+ "nullable": true
4496
+ },
4497
+ "resources_section_benefits_title": {
4498
+ "type": "string",
4499
+ "nullable": true
4500
+ },
4501
+ "resources_section_benefits_list": {
4502
+ "type": "string",
4503
+ "nullable": true
4504
+ },
4505
+ "resources_section_process_details": {
4506
+ "type": "string",
4507
+ "nullable": true
4508
+ },
4509
+ "partner": {
4510
+ "type": "string",
4511
+ "nullable": true
4512
+ },
4513
+ "partner_subtext": {
4514
+ "type": "string",
4515
+ "nullable": true
4516
+ },
4517
+ "partner_logo": {
4518
+ "type": "string",
4519
+ "nullable": true
4520
+ },
4521
+ "partner_website_link": {
4522
+ "type": "string",
4523
+ "nullable": true
4524
+ },
4525
+ "last_updated_on": {
4526
+ "type": "string",
4527
+ "nullable": true
4528
+ },
4529
+ "requires_customer_portal": {
4530
+ "type": "boolean",
4531
+ "nullable": true
4532
+ },
4533
+ "process_details_section_title": {
4534
+ "type": "string",
4535
+ "nullable": true
4536
+ },
4537
+ "is_new_blueprint": {
4538
+ "type": "boolean",
4539
+ "nullable": true
4540
+ },
4541
+ "available_in": {
4542
+ "type": "string",
4543
+ "nullable": true
4544
+ },
4545
+ "testimonials": {
4546
+ "type": "array",
4547
+ "items": {
4548
+ "type": "string"
4549
+ },
4550
+ "nullable": true
4551
+ },
4552
+ "installation_link": {
4553
+ "type": "string",
4554
+ "nullable": true
4555
+ },
4556
+ "installation_slug": {
4557
+ "type": "string",
4558
+ "nullable": true
4559
+ },
4560
+ "demo_form_link": {
4561
+ "type": "string",
4562
+ "nullable": true
4563
+ },
4564
+ "order": {
4565
+ "type": "number",
4566
+ "nullable": true
4567
+ },
4568
+ "categories": {
4569
+ "type": "array",
4570
+ "items": {
4571
+ "type": "string"
4572
+ },
4573
+ "nullable": true
4574
+ },
4575
+ "main_category": {
4576
+ "type": "array",
4577
+ "items": {
4578
+ "type": "string"
4579
+ },
4580
+ "nullable": true
4581
+ },
4582
+ "status": {
4583
+ "type": "string",
4584
+ "enum": [
4585
+ "draft",
4586
+ "live",
4587
+ "archived"
4588
+ ]
4589
+ },
4590
+ "created_at": {
4591
+ "type": "string",
4592
+ "format": "date-time"
4593
+ },
4594
+ "updated_at": {
4595
+ "type": "string",
4596
+ "format": "date-time"
4597
+ }
4598
+ }
4599
+ },
4600
+ "MarketplaceListingUpdate": {
4601
+ "type": "object",
4602
+ "properties": {
4603
+ "name": {
4604
+ "type": "string"
4605
+ },
4606
+ "slug": {
4607
+ "type": "string"
4608
+ },
4609
+ "logo": {
4610
+ "type": "string",
4611
+ "nullable": true
4612
+ },
4613
+ "documentation_url": {
4614
+ "type": "string",
4615
+ "nullable": true
4616
+ },
4617
+ "pricing_type": {
4618
+ "type": "string",
4619
+ "enum": [
4620
+ "free",
4621
+ "paid",
4622
+ "freemium",
4623
+ "contact_us"
4624
+ ],
4625
+ "nullable": true
4626
+ },
4627
+ "support_email": {
4628
+ "type": "string",
4629
+ "nullable": true
4630
+ },
4631
+ "portal_description": {
4632
+ "type": "string",
4633
+ "nullable": true
4634
+ },
4635
+ "teaser_name": {
4636
+ "type": "string",
4637
+ "nullable": true
4638
+ },
4639
+ "teaser_short_description": {
4640
+ "type": "string",
4641
+ "nullable": true
4642
+ },
4643
+ "teaser_thumbnail": {
4644
+ "type": "string",
4645
+ "nullable": true
4646
+ },
4647
+ "details_page_title": {
4648
+ "type": "string",
4649
+ "nullable": true
4650
+ },
4651
+ "details_page_description": {
4652
+ "type": "string",
4653
+ "nullable": true
4654
+ },
4655
+ "details_page_hero_image": {
4656
+ "type": "string",
4657
+ "nullable": true
4658
+ },
4659
+ "details_page_carousel": {
4660
+ "type": "array",
4661
+ "items": {
4662
+ "type": "string"
4663
+ },
4664
+ "nullable": true
4665
+ },
4666
+ "resources_section_description": {
4667
+ "type": "string",
4668
+ "nullable": true
4669
+ },
4670
+ "resources_section_benefits_title": {
4671
+ "type": "string",
4672
+ "nullable": true
4673
+ },
4674
+ "resources_section_benefits_list": {
4675
+ "type": "string",
4676
+ "nullable": true
4677
+ },
4678
+ "resources_section_process_details": {
4679
+ "type": "string",
4680
+ "nullable": true
4681
+ },
4682
+ "partner": {
4683
+ "type": "string",
4684
+ "nullable": true
4685
+ },
4686
+ "partner_subtext": {
4687
+ "type": "string",
4688
+ "nullable": true
4689
+ },
4690
+ "partner_logo": {
4691
+ "type": "string",
4692
+ "nullable": true
4693
+ },
4694
+ "partner_website_link": {
4695
+ "type": "string",
4696
+ "nullable": true
4697
+ },
4698
+ "last_updated_on": {
4699
+ "type": "string",
4700
+ "nullable": true
4701
+ },
4702
+ "requires_customer_portal": {
4703
+ "type": "boolean",
4704
+ "nullable": true
4705
+ },
4706
+ "process_details_section_title": {
4707
+ "type": "string",
4708
+ "nullable": true
4709
+ },
4710
+ "is_new_blueprint": {
4711
+ "type": "boolean",
4712
+ "nullable": true
4713
+ },
4714
+ "available_in": {
4715
+ "type": "string",
4716
+ "nullable": true
4717
+ },
4718
+ "testimonials": {
4719
+ "type": "array",
4720
+ "items": {
4721
+ "type": "string"
4722
+ },
4723
+ "nullable": true
4724
+ },
4725
+ "installation_link": {
4726
+ "type": "string",
4727
+ "nullable": true
4728
+ },
4729
+ "installation_slug": {
4730
+ "type": "string",
4731
+ "nullable": true
4732
+ },
4733
+ "demo_form_link": {
4734
+ "type": "string",
4735
+ "nullable": true
4736
+ },
4737
+ "order": {
4738
+ "type": "number",
4739
+ "nullable": true
4740
+ },
4741
+ "categories": {
4742
+ "type": "array",
4743
+ "items": {
4744
+ "type": "string"
4745
+ },
4746
+ "nullable": true
4747
+ },
4748
+ "main_category": {
4749
+ "type": "array",
4750
+ "items": {
4751
+ "type": "string"
4752
+ },
4753
+ "nullable": true
4754
+ }
4755
+ }
4756
+ },
4757
+ "MarketplaceListingVersion": {
4758
+ "type": "object",
4759
+ "required": [
4760
+ "id",
4761
+ "listing_id",
4762
+ "status",
4763
+ "draft_label",
4764
+ "created_at"
4765
+ ],
4766
+ "properties": {
4767
+ "id": {
4768
+ "type": "string",
4769
+ "format": "uuid"
4770
+ },
4771
+ "listing_id": {
4772
+ "type": "string"
4773
+ },
4774
+ "status": {
4775
+ "type": "string",
4776
+ "enum": [
4777
+ "draft",
4778
+ "published",
4779
+ "archived"
4780
+ ]
4781
+ },
4782
+ "version_name": {
4783
+ "type": "string",
4784
+ "nullable": true
4785
+ },
4786
+ "draft_label": {
4787
+ "type": "string"
4788
+ },
4789
+ "update_note": {
4790
+ "type": "string",
4791
+ "nullable": true
4792
+ },
4793
+ "resources": {
4794
+ "type": "array",
4795
+ "items": {
4796
+ "type": "object"
4797
+ },
4798
+ "nullable": true
4799
+ },
4800
+ "required_features": {
4801
+ "type": "array",
4802
+ "items": {
4803
+ "type": "string"
4804
+ },
4805
+ "nullable": true
4806
+ },
4807
+ "recommended_apps": {
4808
+ "type": "array",
4809
+ "items": {
4810
+ "type": "string"
4811
+ },
4812
+ "nullable": true
4813
+ },
4814
+ "created_at": {
4815
+ "type": "string",
4816
+ "format": "date-time"
4817
+ },
4818
+ "published_at": {
4819
+ "type": "string",
4820
+ "format": "date-time",
4821
+ "nullable": true
4822
+ }
4823
+ }
4824
+ }
4825
+ },
4826
+ "parameters": {
4827
+ "JobID": {
4828
+ "name": "job_id",
4829
+ "in": "path",
4830
+ "required": true,
4831
+ "description": "ID of an import or export job",
4832
+ "schema": {
4833
+ "$ref": "#/components/schemas/JobID"
4834
+ }
4835
+ }
4836
+ },
4837
+ "securitySchemes": {
4838
+ "EpilotAuth": {
4839
+ "type": "http",
4840
+ "scheme": "bearer",
4841
+ "description": "Authorization header with epilot OAuth2 bearer token",
4842
+ "bearerFormat": "JWT"
4843
+ }
4844
+ }
4845
+ }
4846
+ }