@epilot/sdk 2.8.5 → 2.8.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/definitions/access-token-runtime.json +1 -1
- package/definitions/access-token.json +1 -155
- package/definitions/app.json +8 -101
- package/definitions/automation.json +0 -120
- package/definitions/blueprint-manifest-runtime.json +1 -1
- package/definitions/blueprint-manifest.json +349 -1643
- package/definitions/configuration-hub-runtime.json +1 -1
- package/definitions/configuration-hub.json +0 -623
- package/definitions/customer-portal-runtime.json +1 -1
- package/definitions/customer-portal.json +78 -383
- package/definitions/design-runtime.json +1 -1
- package/definitions/design.json +12 -52
- package/definitions/event-catalog-runtime.json +1 -1
- package/definitions/event-catalog.json +12 -168
- package/definitions/file-runtime.json +1 -1
- package/definitions/file.json +4 -152
- package/definitions/integration-toolkit-runtime.json +1 -1
- package/definitions/integration-toolkit.json +16 -785
- package/definitions/journey-runtime.json +1 -1
- package/definitions/journey.json +1 -21
- package/definitions/notes-runtime.json +1 -1
- package/definitions/notes.json +1 -123
- package/definitions/pricing.json +406 -224
- package/definitions/targeting-runtime.json +1 -1
- package/definitions/targeting.json +7 -257
- package/definitions/user-runtime.json +1 -1
- package/definitions/user.json +0 -441
- package/definitions/webhooks.json +0 -31
- package/dist/apis/access-token.cjs +6 -6
- package/dist/apis/access-token.js +1 -1
- package/dist/apis/address-suggestions.cjs +6 -6
- package/dist/apis/address-suggestions.js +1 -1
- package/dist/apis/address.cjs +6 -6
- package/dist/apis/address.js +1 -1
- package/dist/apis/ai-agents.cjs +6 -6
- package/dist/apis/ai-agents.js +1 -1
- package/dist/apis/app.cjs +6 -6
- package/dist/apis/app.js +1 -1
- package/dist/apis/audit-logs.cjs +6 -6
- package/dist/apis/audit-logs.js +1 -1
- package/dist/apis/automation.cjs +6 -6
- package/dist/apis/automation.js +1 -1
- package/dist/apis/billing.cjs +6 -6
- package/dist/apis/billing.js +1 -1
- package/dist/apis/blueprint-manifest.cjs +6 -6
- package/dist/apis/blueprint-manifest.js +1 -1
- package/dist/apis/calendar.cjs +6 -6
- package/dist/apis/calendar.js +1 -1
- package/dist/apis/configuration-hub.cjs +6 -6
- package/dist/apis/configuration-hub.js +1 -1
- package/dist/apis/consent.cjs +6 -6
- package/dist/apis/consent.js +1 -1
- package/dist/apis/customer-portal.cjs +6 -6
- package/dist/apis/customer-portal.js +1 -1
- package/dist/apis/dashboard.cjs +6 -6
- package/dist/apis/dashboard.js +1 -1
- package/dist/apis/data-governance.cjs +6 -6
- package/dist/apis/data-governance.js +1 -1
- package/dist/apis/deduplication.cjs +6 -6
- package/dist/apis/deduplication.js +1 -1
- package/dist/apis/design.cjs +6 -6
- package/dist/apis/design.js +1 -1
- package/dist/apis/document.cjs +6 -6
- package/dist/apis/document.js +1 -1
- package/dist/apis/email-settings.cjs +6 -6
- package/dist/apis/email-settings.js +1 -1
- package/dist/apis/email-template.cjs +6 -6
- package/dist/apis/email-template.js +1 -1
- package/dist/apis/entity-mapping.cjs +6 -6
- package/dist/apis/entity-mapping.js +1 -1
- package/dist/apis/entity.cjs +6 -6
- package/dist/apis/entity.js +1 -1
- package/dist/apis/environments.cjs +6 -6
- package/dist/apis/environments.js +1 -1
- package/dist/apis/event-catalog.cjs +6 -6
- package/dist/apis/event-catalog.js +1 -1
- package/dist/apis/file.cjs +6 -6
- package/dist/apis/file.js +1 -1
- package/dist/apis/iban.cjs +6 -6
- package/dist/apis/iban.js +1 -1
- package/dist/apis/integration-toolkit.cjs +6 -6
- package/dist/apis/integration-toolkit.js +1 -1
- package/dist/apis/journey.cjs +6 -6
- package/dist/apis/journey.js +1 -1
- package/dist/apis/kanban.cjs +6 -6
- package/dist/apis/kanban.js +1 -1
- package/dist/apis/message.cjs +6 -6
- package/dist/apis/message.js +1 -1
- package/dist/apis/metering.cjs +6 -6
- package/dist/apis/metering.js +1 -1
- package/dist/apis/notes.cjs +6 -6
- package/dist/apis/notes.js +1 -1
- package/dist/apis/notification.cjs +6 -6
- package/dist/apis/notification.js +1 -1
- package/dist/apis/organization.cjs +6 -6
- package/dist/apis/organization.js +1 -1
- package/dist/apis/partner-directory.cjs +6 -6
- package/dist/apis/partner-directory.js +1 -1
- package/dist/apis/permissions.cjs +6 -6
- package/dist/apis/permissions.js +1 -1
- package/dist/apis/pricing-tier.cjs +6 -6
- package/dist/apis/pricing-tier.js +1 -1
- package/dist/apis/pricing.cjs +6 -6
- package/dist/apis/pricing.js +1 -1
- package/dist/apis/purpose.cjs +6 -6
- package/dist/apis/purpose.js +1 -1
- package/dist/apis/query.cjs +6 -6
- package/dist/apis/query.js +1 -1
- package/dist/apis/sandbox.cjs +6 -6
- package/dist/apis/sandbox.js +1 -1
- package/dist/apis/sharing.cjs +6 -6
- package/dist/apis/sharing.js +1 -1
- package/dist/apis/snapshot.cjs +6 -6
- package/dist/apis/snapshot.js +1 -1
- package/dist/apis/submission.cjs +6 -6
- package/dist/apis/submission.js +1 -1
- package/dist/apis/target.cjs +6 -6
- package/dist/apis/target.js +1 -1
- package/dist/apis/targeting.cjs +6 -6
- package/dist/apis/targeting.d.cts +2 -2
- package/dist/apis/targeting.d.ts +2 -2
- package/dist/apis/targeting.js +1 -1
- package/dist/apis/template-variables.cjs +6 -6
- package/dist/apis/template-variables.js +1 -1
- package/dist/apis/user.cjs +6 -6
- package/dist/apis/user.js +1 -1
- package/dist/apis/validation-rules.cjs +6 -6
- package/dist/apis/validation-rules.js +1 -1
- package/dist/apis/webhooks.cjs +6 -6
- package/dist/apis/webhooks.js +1 -1
- package/dist/apis/workflow-definition.cjs +6 -6
- package/dist/apis/workflow-definition.js +1 -1
- package/dist/apis/workflow.cjs +6 -6
- package/dist/apis/workflow.js +1 -1
- package/dist/{chunk-XRIEGQXL.cjs → chunk-7LIGFCRI.cjs} +1 -1
- package/dist/{chunk-5FXMXMNX.js → chunk-CMANJ4LY.js} +1 -1
- package/dist/index.cjs +8 -8
- package/dist/index.d.cts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/{targeting-DAFJBPIZ.cjs → targeting-WC62BBZN.cjs} +1 -1
- package/dist/{targeting-TGPCRRI6.js → targeting-X4Y2ODBT.js} +1 -1
- package/dist/{targeting.d-DxHQbn7-.d.cts → targeting.d-0rNF7ErD.d.cts} +11 -4
- package/dist/{targeting.d-DxHQbn7-.d.ts → targeting.d-0rNF7ErD.d.ts} +11 -4
- package/docs/targeting.md +6 -3
- package/package.json +1 -1
- package/definitions/snapshot-runtime.json +0 -1
- package/definitions/snapshot.json +0 -950
|
@@ -1,950 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"openapi": "3.0.3",
|
|
3
|
-
"info": {
|
|
4
|
-
"title": "Snapshot API",
|
|
5
|
-
"description": "Point-in-time backups of epilot configuration with restore.\n\nProvides a safety net for configuration changes: every blueprint install,\nevery Configuration Hub sync, and every manual config change can be preceded\nby a snapshot — giving operators a rollback point if something breaks.\n\nSee `docs/rfcs/RFC-snapshot-api.md` in the `blueprint-manifest-api` repo\nfor the full design.\n",
|
|
6
|
-
"version": "0.1.0"
|
|
7
|
-
},
|
|
8
|
-
"servers": [
|
|
9
|
-
{
|
|
10
|
-
"url": "https://snapshot.sls.epilot.io"
|
|
11
|
-
},
|
|
12
|
-
{
|
|
13
|
-
"url": "https://snapshot.dev.sls.epilot.io",
|
|
14
|
-
"description": "Dev"
|
|
15
|
-
},
|
|
16
|
-
{
|
|
17
|
-
"url": "https://snapshot.staging.sls.epilot.io",
|
|
18
|
-
"description": "Staging"
|
|
19
|
-
}
|
|
20
|
-
],
|
|
21
|
-
"security": [
|
|
22
|
-
{
|
|
23
|
-
"EpilotAuth": []
|
|
24
|
-
}
|
|
25
|
-
],
|
|
26
|
-
"tags": [
|
|
27
|
-
{
|
|
28
|
-
"name": "Snapshots",
|
|
29
|
-
"description": "Snapshot CRUD and restore operations"
|
|
30
|
-
}
|
|
31
|
-
],
|
|
32
|
-
"paths": {
|
|
33
|
-
"/v1/snapshots": {
|
|
34
|
-
"post": {
|
|
35
|
-
"operationId": "createSnapshot",
|
|
36
|
-
"summary": "createSnapshot",
|
|
37
|
-
"description": "Create a new snapshot of the given resources. Async — returns immediately\nwith a snapshot ID; client polls `getSnapshot` until `create.status`\nmoves from `in_progress` to `completed` or `failed`.\n",
|
|
38
|
-
"tags": [
|
|
39
|
-
"Snapshots"
|
|
40
|
-
],
|
|
41
|
-
"requestBody": {
|
|
42
|
-
"required": true,
|
|
43
|
-
"content": {
|
|
44
|
-
"application/json": {
|
|
45
|
-
"schema": {
|
|
46
|
-
"$ref": "#/components/schemas/CreateSnapshotRequest"
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
},
|
|
51
|
-
"responses": {
|
|
52
|
-
"202": {
|
|
53
|
-
"description": "Snapshot creation started",
|
|
54
|
-
"content": {
|
|
55
|
-
"application/json": {
|
|
56
|
-
"schema": {
|
|
57
|
-
"$ref": "#/components/schemas/CreateSnapshotResponse"
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
},
|
|
62
|
-
"400": {
|
|
63
|
-
"$ref": "#/components/responses/BadRequest"
|
|
64
|
-
},
|
|
65
|
-
"401": {
|
|
66
|
-
"$ref": "#/components/responses/Unauthorized"
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
},
|
|
70
|
-
"get": {
|
|
71
|
-
"operationId": "listSnapshots",
|
|
72
|
-
"summary": "listSnapshots",
|
|
73
|
-
"description": "List snapshots for the caller's organization, newest first.\n\nPass `resource=<type>:<id>` one or more times to filter to snapshots\ncontaining **any** of the listed resources (OR semantics). Each returned\nsnapshot includes a `matched_count` indicating how many of the filter\npairs are present in it. Hard cap of 50 filter pairs per request. When\nfiltered, pagination is not applied — the result set is bounded.\n",
|
|
74
|
-
"tags": [
|
|
75
|
-
"Snapshots"
|
|
76
|
-
],
|
|
77
|
-
"parameters": [
|
|
78
|
-
{
|
|
79
|
-
"in": "query",
|
|
80
|
-
"name": "cursor",
|
|
81
|
-
"schema": {
|
|
82
|
-
"type": "string"
|
|
83
|
-
}
|
|
84
|
-
},
|
|
85
|
-
{
|
|
86
|
-
"in": "query",
|
|
87
|
-
"name": "size",
|
|
88
|
-
"schema": {
|
|
89
|
-
"type": "integer",
|
|
90
|
-
"minimum": 1,
|
|
91
|
-
"maximum": 100,
|
|
92
|
-
"default": 25
|
|
93
|
-
}
|
|
94
|
-
},
|
|
95
|
-
{
|
|
96
|
-
"in": "query",
|
|
97
|
-
"name": "resource",
|
|
98
|
-
"description": "Filter to snapshots containing one or more resources. Format\n`<type>:<id>`. Split on the first colon — the `<id>` half may\ncontain colons (e.g., role acl ids like `role:acl:internal:foo`).\nRepeat the param for multiple resources — results are OR-unioned.\nMaximum 50 pairs per request.\n",
|
|
99
|
-
"schema": {
|
|
100
|
-
"type": "array",
|
|
101
|
-
"items": {
|
|
102
|
-
"type": "string",
|
|
103
|
-
"pattern": "^[^:]+:.+$"
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
],
|
|
108
|
-
"responses": {
|
|
109
|
-
"200": {
|
|
110
|
-
"description": "Snapshot list",
|
|
111
|
-
"content": {
|
|
112
|
-
"application/json": {
|
|
113
|
-
"schema": {
|
|
114
|
-
"type": "object",
|
|
115
|
-
"required": [
|
|
116
|
-
"results",
|
|
117
|
-
"page_size"
|
|
118
|
-
],
|
|
119
|
-
"properties": {
|
|
120
|
-
"page_size": {
|
|
121
|
-
"type": "integer",
|
|
122
|
-
"description": "Number of items in this page (not the total across all pages)."
|
|
123
|
-
},
|
|
124
|
-
"cursor": {
|
|
125
|
-
"type": "string",
|
|
126
|
-
"description": "Pagination cursor; pass to the next request to get the next page."
|
|
127
|
-
},
|
|
128
|
-
"results": {
|
|
129
|
-
"type": "array",
|
|
130
|
-
"items": {
|
|
131
|
-
"$ref": "#/components/schemas/Snapshot"
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
},
|
|
139
|
-
"401": {
|
|
140
|
-
"$ref": "#/components/responses/Unauthorized"
|
|
141
|
-
}
|
|
142
|
-
}
|
|
143
|
-
}
|
|
144
|
-
},
|
|
145
|
-
"/v1/snapshots:capture-org": {
|
|
146
|
-
"post": {
|
|
147
|
-
"operationId": "captureOrgSnapshot",
|
|
148
|
-
"summary": "captureOrgSnapshot",
|
|
149
|
-
"description": "Snapshot the caller's whole organization now. Fetches a fresh inventory\nof the org's configuration resources from configuration-hub-api, persists\nit as an inventory artifact, and starts a `scope: \"org\"` chunked capture.\nAsync — returns immediately with a snapshot ID; client polls `getSnapshot`\nand watches `capture_summary` fill in until `create.status` moves from\n`in_progress` to `completed` or `failed`.\n\nSensitive types (`access_token`, `environment_variable`), types with no\nengine adapter, and any `excluded_types` are dropped from the capture and\nrecorded in the snapshot's coverage report.\n",
|
|
150
|
-
"tags": [
|
|
151
|
-
"Snapshots"
|
|
152
|
-
],
|
|
153
|
-
"requestBody": {
|
|
154
|
-
"required": false,
|
|
155
|
-
"content": {
|
|
156
|
-
"application/json": {
|
|
157
|
-
"schema": {
|
|
158
|
-
"$ref": "#/components/schemas/CreateOrgSnapshotRequest"
|
|
159
|
-
}
|
|
160
|
-
}
|
|
161
|
-
}
|
|
162
|
-
},
|
|
163
|
-
"responses": {
|
|
164
|
-
"202": {
|
|
165
|
-
"description": "Org snapshot creation started",
|
|
166
|
-
"content": {
|
|
167
|
-
"application/json": {
|
|
168
|
-
"schema": {
|
|
169
|
-
"$ref": "#/components/schemas/CreateSnapshotResponse"
|
|
170
|
-
}
|
|
171
|
-
}
|
|
172
|
-
}
|
|
173
|
-
},
|
|
174
|
-
"401": {
|
|
175
|
-
"$ref": "#/components/responses/Unauthorized"
|
|
176
|
-
},
|
|
177
|
-
"422": {
|
|
178
|
-
"$ref": "#/components/responses/UnprocessableEntity"
|
|
179
|
-
}
|
|
180
|
-
}
|
|
181
|
-
}
|
|
182
|
-
},
|
|
183
|
-
"/v1/snapshots/{id}": {
|
|
184
|
-
"parameters": [
|
|
185
|
-
{
|
|
186
|
-
"in": "path",
|
|
187
|
-
"name": "id",
|
|
188
|
-
"required": true,
|
|
189
|
-
"schema": {
|
|
190
|
-
"type": "string"
|
|
191
|
-
}
|
|
192
|
-
}
|
|
193
|
-
],
|
|
194
|
-
"get": {
|
|
195
|
-
"operationId": "getSnapshot",
|
|
196
|
-
"summary": "getSnapshot",
|
|
197
|
-
"description": "Fetch a snapshot's metadata. Poll this endpoint to track create/restore progress.",
|
|
198
|
-
"tags": [
|
|
199
|
-
"Snapshots"
|
|
200
|
-
],
|
|
201
|
-
"responses": {
|
|
202
|
-
"200": {
|
|
203
|
-
"description": "Snapshot metadata",
|
|
204
|
-
"content": {
|
|
205
|
-
"application/json": {
|
|
206
|
-
"schema": {
|
|
207
|
-
"$ref": "#/components/schemas/Snapshot"
|
|
208
|
-
}
|
|
209
|
-
}
|
|
210
|
-
}
|
|
211
|
-
},
|
|
212
|
-
"401": {
|
|
213
|
-
"$ref": "#/components/responses/Unauthorized"
|
|
214
|
-
},
|
|
215
|
-
"404": {
|
|
216
|
-
"$ref": "#/components/responses/NotFound"
|
|
217
|
-
}
|
|
218
|
-
}
|
|
219
|
-
},
|
|
220
|
-
"delete": {
|
|
221
|
-
"operationId": "deleteSnapshot",
|
|
222
|
-
"summary": "deleteSnapshot",
|
|
223
|
-
"description": "Delete a snapshot's metadata and S3 manifest.",
|
|
224
|
-
"tags": [
|
|
225
|
-
"Snapshots"
|
|
226
|
-
],
|
|
227
|
-
"responses": {
|
|
228
|
-
"204": {
|
|
229
|
-
"description": "Deleted"
|
|
230
|
-
},
|
|
231
|
-
"401": {
|
|
232
|
-
"$ref": "#/components/responses/Unauthorized"
|
|
233
|
-
},
|
|
234
|
-
"404": {
|
|
235
|
-
"$ref": "#/components/responses/NotFound"
|
|
236
|
-
}
|
|
237
|
-
}
|
|
238
|
-
}
|
|
239
|
-
},
|
|
240
|
-
"/v1/snapshots/{id}:restore": {
|
|
241
|
-
"parameters": [
|
|
242
|
-
{
|
|
243
|
-
"in": "path",
|
|
244
|
-
"name": "id",
|
|
245
|
-
"required": true,
|
|
246
|
-
"schema": {
|
|
247
|
-
"type": "string"
|
|
248
|
-
}
|
|
249
|
-
}
|
|
250
|
-
],
|
|
251
|
-
"post": {
|
|
252
|
-
"operationId": "restoreSnapshot",
|
|
253
|
-
"summary": "restoreSnapshot",
|
|
254
|
-
"description": "Restore a snapshot to the org. Async — returns immediately; client polls\n`getSnapshot` until the latest entry in `restores` moves from\n`in_progress` to one of `completed | partial | failed`.\n\nv1: full restore only. Cherry-pick (`resources?` body filter) is an open\nquestion — see RFC OQ #1.\n",
|
|
255
|
-
"tags": [
|
|
256
|
-
"Snapshots"
|
|
257
|
-
],
|
|
258
|
-
"requestBody": {
|
|
259
|
-
"required": false,
|
|
260
|
-
"content": {
|
|
261
|
-
"application/json": {
|
|
262
|
-
"schema": {
|
|
263
|
-
"$ref": "#/components/schemas/RestoreSnapshotRequest"
|
|
264
|
-
}
|
|
265
|
-
}
|
|
266
|
-
}
|
|
267
|
-
},
|
|
268
|
-
"responses": {
|
|
269
|
-
"202": {
|
|
270
|
-
"description": "Restore started",
|
|
271
|
-
"content": {
|
|
272
|
-
"application/json": {
|
|
273
|
-
"schema": {
|
|
274
|
-
"$ref": "#/components/schemas/RestoreSnapshotResponse"
|
|
275
|
-
}
|
|
276
|
-
}
|
|
277
|
-
}
|
|
278
|
-
},
|
|
279
|
-
"401": {
|
|
280
|
-
"$ref": "#/components/responses/Unauthorized"
|
|
281
|
-
},
|
|
282
|
-
"404": {
|
|
283
|
-
"$ref": "#/components/responses/NotFound"
|
|
284
|
-
}
|
|
285
|
-
}
|
|
286
|
-
}
|
|
287
|
-
},
|
|
288
|
-
"/v1/snapshots/{id}/resources": {
|
|
289
|
-
"parameters": [
|
|
290
|
-
{
|
|
291
|
-
"in": "path",
|
|
292
|
-
"name": "id",
|
|
293
|
-
"required": true,
|
|
294
|
-
"schema": {
|
|
295
|
-
"type": "string"
|
|
296
|
-
}
|
|
297
|
-
}
|
|
298
|
-
],
|
|
299
|
-
"get": {
|
|
300
|
-
"operationId": "listSnapshotResources",
|
|
301
|
-
"summary": "listSnapshotResources",
|
|
302
|
-
"description": "List the resources captured in this snapshot. Returns lightweight\nidentity fields per resource — payloads are fetched via the\nsingle-resource endpoint when needed.\n\nUsed by Config Hub UI to render snapshot contents, and by\nblueprint-manifest-api to partition lineage rows during a restore\nsweep (resources in this list are touched; others are net-new).\n",
|
|
303
|
-
"tags": [
|
|
304
|
-
"Snapshots"
|
|
305
|
-
],
|
|
306
|
-
"responses": {
|
|
307
|
-
"200": {
|
|
308
|
-
"description": "Captured resources",
|
|
309
|
-
"content": {
|
|
310
|
-
"application/json": {
|
|
311
|
-
"schema": {
|
|
312
|
-
"$ref": "#/components/schemas/SnapshotResourceList"
|
|
313
|
-
}
|
|
314
|
-
}
|
|
315
|
-
}
|
|
316
|
-
},
|
|
317
|
-
"401": {
|
|
318
|
-
"$ref": "#/components/responses/Unauthorized"
|
|
319
|
-
},
|
|
320
|
-
"404": {
|
|
321
|
-
"$ref": "#/components/responses/NotFound"
|
|
322
|
-
}
|
|
323
|
-
}
|
|
324
|
-
}
|
|
325
|
-
},
|
|
326
|
-
"/v1/snapshots/{id}/resources/{lineage_id}": {
|
|
327
|
-
"parameters": [
|
|
328
|
-
{
|
|
329
|
-
"in": "path",
|
|
330
|
-
"name": "id",
|
|
331
|
-
"required": true,
|
|
332
|
-
"schema": {
|
|
333
|
-
"type": "string"
|
|
334
|
-
}
|
|
335
|
-
},
|
|
336
|
-
{
|
|
337
|
-
"in": "path",
|
|
338
|
-
"name": "lineage_id",
|
|
339
|
-
"required": true,
|
|
340
|
-
"schema": {
|
|
341
|
-
"type": "string"
|
|
342
|
-
}
|
|
343
|
-
}
|
|
344
|
-
],
|
|
345
|
-
"get": {
|
|
346
|
-
"operationId": "getSnapshotResource",
|
|
347
|
-
"summary": "getSnapshotResource",
|
|
348
|
-
"description": "Fetch one captured resource with its full payload. For UI views\nthat diff the captured state against the current destination.\n",
|
|
349
|
-
"tags": [
|
|
350
|
-
"Snapshots"
|
|
351
|
-
],
|
|
352
|
-
"responses": {
|
|
353
|
-
"200": {
|
|
354
|
-
"description": "Captured resource with payload",
|
|
355
|
-
"content": {
|
|
356
|
-
"application/json": {
|
|
357
|
-
"schema": {
|
|
358
|
-
"$ref": "#/components/schemas/SnapshotResourceDetail"
|
|
359
|
-
}
|
|
360
|
-
}
|
|
361
|
-
}
|
|
362
|
-
},
|
|
363
|
-
"401": {
|
|
364
|
-
"$ref": "#/components/responses/Unauthorized"
|
|
365
|
-
},
|
|
366
|
-
"404": {
|
|
367
|
-
"$ref": "#/components/responses/NotFound"
|
|
368
|
-
}
|
|
369
|
-
}
|
|
370
|
-
}
|
|
371
|
-
},
|
|
372
|
-
"/v1/snapshots:list-dependencies": {
|
|
373
|
-
"post": {
|
|
374
|
-
"operationId": "listDependencies",
|
|
375
|
-
"summary": "listDependencies",
|
|
376
|
-
"description": "Walk the dependency tree for a set of resources and return the full\ntransitive closure, topologically sorted.\n\n**Not implemented in v1.** Returns 501. Callers should pass an explicit\nresource list to `createSnapshot`. See RFC Phase 5.\n",
|
|
377
|
-
"tags": [
|
|
378
|
-
"Snapshots"
|
|
379
|
-
],
|
|
380
|
-
"requestBody": {
|
|
381
|
-
"required": true,
|
|
382
|
-
"content": {
|
|
383
|
-
"application/json": {
|
|
384
|
-
"schema": {
|
|
385
|
-
"type": "object",
|
|
386
|
-
"required": [
|
|
387
|
-
"resources"
|
|
388
|
-
],
|
|
389
|
-
"properties": {
|
|
390
|
-
"resources": {
|
|
391
|
-
"type": "array",
|
|
392
|
-
"items": {
|
|
393
|
-
"$ref": "#/components/schemas/ResourceRef"
|
|
394
|
-
}
|
|
395
|
-
}
|
|
396
|
-
}
|
|
397
|
-
}
|
|
398
|
-
}
|
|
399
|
-
}
|
|
400
|
-
},
|
|
401
|
-
"responses": {
|
|
402
|
-
"200": {
|
|
403
|
-
"description": "Transitive dependency closure for the given resources, topologically sorted.",
|
|
404
|
-
"content": {
|
|
405
|
-
"application/json": {
|
|
406
|
-
"schema": {
|
|
407
|
-
"type": "object",
|
|
408
|
-
"required": [
|
|
409
|
-
"dependencies"
|
|
410
|
-
],
|
|
411
|
-
"properties": {
|
|
412
|
-
"dependencies": {
|
|
413
|
-
"type": "array",
|
|
414
|
-
"items": {
|
|
415
|
-
"$ref": "#/components/schemas/ResourceRef"
|
|
416
|
-
}
|
|
417
|
-
}
|
|
418
|
-
}
|
|
419
|
-
}
|
|
420
|
-
}
|
|
421
|
-
}
|
|
422
|
-
},
|
|
423
|
-
"401": {
|
|
424
|
-
"$ref": "#/components/responses/Unauthorized"
|
|
425
|
-
},
|
|
426
|
-
"501": {
|
|
427
|
-
"description": "Not implemented",
|
|
428
|
-
"content": {
|
|
429
|
-
"application/json": {
|
|
430
|
-
"schema": {
|
|
431
|
-
"$ref": "#/components/schemas/Error"
|
|
432
|
-
}
|
|
433
|
-
}
|
|
434
|
-
}
|
|
435
|
-
}
|
|
436
|
-
}
|
|
437
|
-
}
|
|
438
|
-
}
|
|
439
|
-
},
|
|
440
|
-
"components": {
|
|
441
|
-
"securitySchemes": {
|
|
442
|
-
"EpilotAuth": {
|
|
443
|
-
"type": "apiKey",
|
|
444
|
-
"in": "header",
|
|
445
|
-
"name": "Authorization"
|
|
446
|
-
}
|
|
447
|
-
},
|
|
448
|
-
"responses": {
|
|
449
|
-
"BadRequest": {
|
|
450
|
-
"description": "Bad request",
|
|
451
|
-
"content": {
|
|
452
|
-
"application/json": {
|
|
453
|
-
"schema": {
|
|
454
|
-
"$ref": "#/components/schemas/Error"
|
|
455
|
-
}
|
|
456
|
-
}
|
|
457
|
-
}
|
|
458
|
-
},
|
|
459
|
-
"Unauthorized": {
|
|
460
|
-
"description": "Unauthorized",
|
|
461
|
-
"content": {
|
|
462
|
-
"application/json": {
|
|
463
|
-
"schema": {
|
|
464
|
-
"$ref": "#/components/schemas/Error"
|
|
465
|
-
}
|
|
466
|
-
}
|
|
467
|
-
}
|
|
468
|
-
},
|
|
469
|
-
"NotFound": {
|
|
470
|
-
"description": "Not found",
|
|
471
|
-
"content": {
|
|
472
|
-
"application/json": {
|
|
473
|
-
"schema": {
|
|
474
|
-
"$ref": "#/components/schemas/Error"
|
|
475
|
-
}
|
|
476
|
-
}
|
|
477
|
-
}
|
|
478
|
-
},
|
|
479
|
-
"UnprocessableEntity": {
|
|
480
|
-
"description": "Unprocessable entity",
|
|
481
|
-
"content": {
|
|
482
|
-
"application/json": {
|
|
483
|
-
"schema": {
|
|
484
|
-
"$ref": "#/components/schemas/EmptyInventoryError"
|
|
485
|
-
}
|
|
486
|
-
}
|
|
487
|
-
}
|
|
488
|
-
}
|
|
489
|
-
},
|
|
490
|
-
"schemas": {
|
|
491
|
-
"Error": {
|
|
492
|
-
"type": "object",
|
|
493
|
-
"required": [
|
|
494
|
-
"status",
|
|
495
|
-
"error"
|
|
496
|
-
],
|
|
497
|
-
"properties": {
|
|
498
|
-
"status": {
|
|
499
|
-
"type": "integer"
|
|
500
|
-
},
|
|
501
|
-
"error": {
|
|
502
|
-
"type": "string"
|
|
503
|
-
}
|
|
504
|
-
}
|
|
505
|
-
},
|
|
506
|
-
"EmptyInventoryError": {
|
|
507
|
-
"type": "object",
|
|
508
|
-
"required": [
|
|
509
|
-
"message",
|
|
510
|
-
"skipped_types"
|
|
511
|
-
],
|
|
512
|
-
"description": "Returned (422) when the org inventory contains no capturable resources\nafter filtering out sensitive, unsupported, and excluded types. The\n`skipped_types` array explains why every type was dropped.\n",
|
|
513
|
-
"properties": {
|
|
514
|
-
"message": {
|
|
515
|
-
"type": "string",
|
|
516
|
-
"example": "No capturable resources in the org inventory"
|
|
517
|
-
},
|
|
518
|
-
"skipped_types": {
|
|
519
|
-
"type": "array",
|
|
520
|
-
"items": {
|
|
521
|
-
"type": "object",
|
|
522
|
-
"required": [
|
|
523
|
-
"type",
|
|
524
|
-
"reason"
|
|
525
|
-
],
|
|
526
|
-
"properties": {
|
|
527
|
-
"type": {
|
|
528
|
-
"type": "string"
|
|
529
|
-
},
|
|
530
|
-
"reason": {
|
|
531
|
-
"type": "string"
|
|
532
|
-
}
|
|
533
|
-
}
|
|
534
|
-
}
|
|
535
|
-
}
|
|
536
|
-
}
|
|
537
|
-
},
|
|
538
|
-
"ResourceRef": {
|
|
539
|
-
"type": "object",
|
|
540
|
-
"required": [
|
|
541
|
-
"type",
|
|
542
|
-
"id"
|
|
543
|
-
],
|
|
544
|
-
"properties": {
|
|
545
|
-
"type": {
|
|
546
|
-
"type": "string",
|
|
547
|
-
"description": "Resource type (e.g., custom_variable, journey, automation_flow)"
|
|
548
|
-
},
|
|
549
|
-
"id": {
|
|
550
|
-
"type": "string"
|
|
551
|
-
}
|
|
552
|
-
}
|
|
553
|
-
},
|
|
554
|
-
"SnapshotResourceSummary": {
|
|
555
|
-
"type": "object",
|
|
556
|
-
"description": "Lightweight identity for a captured resource. Returned by\n`listSnapshotResources`; the full payload is fetched separately via\n`getSnapshotResource` when needed.\n",
|
|
557
|
-
"required": [
|
|
558
|
-
"lineage_id",
|
|
559
|
-
"target_id",
|
|
560
|
-
"type"
|
|
561
|
-
],
|
|
562
|
-
"properties": {
|
|
563
|
-
"lineage_id": {
|
|
564
|
-
"type": "string",
|
|
565
|
-
"description": "Cross-service correlation key — matches the lineage row id in\nblueprint-manifest-api's lineage table for `blueprint_install`\nsnapshots. Same as `target_id` for snapshots whose capture\ndoesn't distinguish source vs destination identifiers.\n"
|
|
566
|
-
},
|
|
567
|
-
"target_id": {
|
|
568
|
-
"type": "string",
|
|
569
|
-
"description": "Identifier the resource was captured by (passed in via `ResourceRef.id` on createSnapshot)."
|
|
570
|
-
},
|
|
571
|
-
"type": {
|
|
572
|
-
"type": "string"
|
|
573
|
-
},
|
|
574
|
-
"name": {
|
|
575
|
-
"type": "string",
|
|
576
|
-
"nullable": true,
|
|
577
|
-
"description": "Best-effort display name extracted from the captured payload\n(`name` / `title` / `label` / `key` in that order). Null when\nnone of those fields are present.\n"
|
|
578
|
-
}
|
|
579
|
-
}
|
|
580
|
-
},
|
|
581
|
-
"SnapshotResourceList": {
|
|
582
|
-
"type": "object",
|
|
583
|
-
"required": [
|
|
584
|
-
"resources"
|
|
585
|
-
],
|
|
586
|
-
"properties": {
|
|
587
|
-
"resources": {
|
|
588
|
-
"type": "array",
|
|
589
|
-
"items": {
|
|
590
|
-
"$ref": "#/components/schemas/SnapshotResourceSummary"
|
|
591
|
-
}
|
|
592
|
-
}
|
|
593
|
-
}
|
|
594
|
-
},
|
|
595
|
-
"SnapshotResourceDetail": {
|
|
596
|
-
"type": "object",
|
|
597
|
-
"description": "A single captured resource with its full payload. The identity fields\nmatch `SnapshotResourceSummary`; the `captured` payload is the\npre-install state at snapshot time.\n",
|
|
598
|
-
"required": [
|
|
599
|
-
"lineage_id",
|
|
600
|
-
"target_id",
|
|
601
|
-
"type",
|
|
602
|
-
"captured"
|
|
603
|
-
],
|
|
604
|
-
"properties": {
|
|
605
|
-
"lineage_id": {
|
|
606
|
-
"type": "string"
|
|
607
|
-
},
|
|
608
|
-
"target_id": {
|
|
609
|
-
"type": "string"
|
|
610
|
-
},
|
|
611
|
-
"type": {
|
|
612
|
-
"type": "string"
|
|
613
|
-
},
|
|
614
|
-
"name": {
|
|
615
|
-
"type": "string",
|
|
616
|
-
"nullable": true
|
|
617
|
-
},
|
|
618
|
-
"captured": {
|
|
619
|
-
"type": "object",
|
|
620
|
-
"additionalProperties": true,
|
|
621
|
-
"description": "Full captured payload of the resource at snapshot time."
|
|
622
|
-
}
|
|
623
|
-
}
|
|
624
|
-
},
|
|
625
|
-
"CreateSnapshotRequest": {
|
|
626
|
-
"type": "object",
|
|
627
|
-
"required": [
|
|
628
|
-
"name",
|
|
629
|
-
"resources"
|
|
630
|
-
],
|
|
631
|
-
"properties": {
|
|
632
|
-
"name": {
|
|
633
|
-
"type": "string"
|
|
634
|
-
},
|
|
635
|
-
"description": {
|
|
636
|
-
"type": "string"
|
|
637
|
-
},
|
|
638
|
-
"trigger": {
|
|
639
|
-
"type": "string",
|
|
640
|
-
"enum": [
|
|
641
|
-
"manual",
|
|
642
|
-
"sync",
|
|
643
|
-
"blueprint_install",
|
|
644
|
-
"scheduled"
|
|
645
|
-
],
|
|
646
|
-
"default": "manual",
|
|
647
|
-
"description": "What initiated this snapshot. `scheduled` is used for automatic\nnightly backups triggered by an org's EventBridge schedule\n(RFC — Scheduled org snapshots).\n"
|
|
648
|
-
},
|
|
649
|
-
"blueprint_instance_id": {
|
|
650
|
-
"type": "string",
|
|
651
|
-
"description": "Required iff `trigger === 'blueprint_install'`; forbidden otherwise.\nIdentifies the destination blueprint instance whose install this\nsnapshot covers. Used at restore time as the join key for the\nlineage-driven delete sweep.\n"
|
|
652
|
-
},
|
|
653
|
-
"resources": {
|
|
654
|
-
"type": "array",
|
|
655
|
-
"items": {
|
|
656
|
-
"$ref": "#/components/schemas/ResourceRef"
|
|
657
|
-
},
|
|
658
|
-
"description": "List of resources to capture. Required non-empty for\n`trigger === 'manual'` or `'sync'`. May be empty when\n`trigger === 'blueprint_install'` — an install with no\nresources to overwrite still needs a snapshot row so the\nblueprint-manifest-api restore endpoint can find it.\n"
|
|
659
|
-
}
|
|
660
|
-
}
|
|
661
|
-
},
|
|
662
|
-
"CreateOrgSnapshotRequest": {
|
|
663
|
-
"type": "object",
|
|
664
|
-
"description": "Request body for `captureOrgSnapshot`. All fields optional — an empty body\nsnapshots the whole org with a default name and the 90-day default TTL.\n",
|
|
665
|
-
"properties": {
|
|
666
|
-
"name": {
|
|
667
|
-
"type": "string",
|
|
668
|
-
"description": "Snapshot name. Defaults to \"Org snapshot — <ISO timestamp>\"."
|
|
669
|
-
},
|
|
670
|
-
"retention": {
|
|
671
|
-
"type": "object",
|
|
672
|
-
"description": "Retention window. Converted to an absolute `expires_at` at creation\ntime. Omit for the default 90-day TTL.\n",
|
|
673
|
-
"required": [
|
|
674
|
-
"value",
|
|
675
|
-
"unit"
|
|
676
|
-
],
|
|
677
|
-
"properties": {
|
|
678
|
-
"value": {
|
|
679
|
-
"type": "integer",
|
|
680
|
-
"minimum": 1
|
|
681
|
-
},
|
|
682
|
-
"unit": {
|
|
683
|
-
"type": "string",
|
|
684
|
-
"enum": [
|
|
685
|
-
"days",
|
|
686
|
-
"weeks",
|
|
687
|
-
"months"
|
|
688
|
-
]
|
|
689
|
-
}
|
|
690
|
-
}
|
|
691
|
-
},
|
|
692
|
-
"excluded_types": {
|
|
693
|
-
"type": "array",
|
|
694
|
-
"description": "Resource types to exclude from the capture, in addition to the\nalways-excluded sensitive types (`access_token`,\n`environment_variable`).\n",
|
|
695
|
-
"items": {
|
|
696
|
-
"type": "string"
|
|
697
|
-
}
|
|
698
|
-
}
|
|
699
|
-
}
|
|
700
|
-
},
|
|
701
|
-
"CreateSnapshotResponse": {
|
|
702
|
-
"type": "object",
|
|
703
|
-
"required": [
|
|
704
|
-
"id",
|
|
705
|
-
"name",
|
|
706
|
-
"status",
|
|
707
|
-
"created_at"
|
|
708
|
-
],
|
|
709
|
-
"properties": {
|
|
710
|
-
"id": {
|
|
711
|
-
"type": "string"
|
|
712
|
-
},
|
|
713
|
-
"name": {
|
|
714
|
-
"type": "string"
|
|
715
|
-
},
|
|
716
|
-
"status": {
|
|
717
|
-
"type": "string",
|
|
718
|
-
"enum": [
|
|
719
|
-
"creating"
|
|
720
|
-
]
|
|
721
|
-
},
|
|
722
|
-
"created_at": {
|
|
723
|
-
"type": "string",
|
|
724
|
-
"format": "date-time"
|
|
725
|
-
}
|
|
726
|
-
}
|
|
727
|
-
},
|
|
728
|
-
"RestoreSnapshotRequest": {
|
|
729
|
-
"type": "object",
|
|
730
|
-
"description": "Both flags default to `false`, which restores every captured resource —\nConfig Hub's manual-restore semantics. blueprint-manifest-api sets\nboth `true` when reverting a blueprint install so user edits and\ncross-blueprint contributions survive. Each flag is independent so a\ncaller can preserve edits without preserving co-ownership (or vice\nversa). Skipped resources surface under `Operation.skipped`.\n",
|
|
731
|
-
"properties": {
|
|
732
|
-
"preserve_modified": {
|
|
733
|
-
"type": "boolean",
|
|
734
|
-
"default": false,
|
|
735
|
-
"description": "When `true`, skip captured resources whose live destination payload\nhas diverged from the install-time fingerprint stored on lineage.\nSurfaces under `Operation.skipped` with `reason: 'modified'`.\n"
|
|
736
|
-
},
|
|
737
|
-
"preserve_co_owned": {
|
|
738
|
-
"type": "boolean",
|
|
739
|
-
"default": false,
|
|
740
|
-
"description": "When `true`, skip captured resources whose lineage row carries\nanother blueprint instance's id (co-ownership ≥2). Surfaces under\n`Operation.skipped` with `reason: 'co_owned'`.\n"
|
|
741
|
-
}
|
|
742
|
-
}
|
|
743
|
-
},
|
|
744
|
-
"RestoreSnapshotResponse": {
|
|
745
|
-
"type": "object",
|
|
746
|
-
"required": [
|
|
747
|
-
"id",
|
|
748
|
-
"status"
|
|
749
|
-
],
|
|
750
|
-
"properties": {
|
|
751
|
-
"id": {
|
|
752
|
-
"type": "string"
|
|
753
|
-
},
|
|
754
|
-
"status": {
|
|
755
|
-
"type": "string",
|
|
756
|
-
"enum": [
|
|
757
|
-
"restoring"
|
|
758
|
-
]
|
|
759
|
-
}
|
|
760
|
-
}
|
|
761
|
-
},
|
|
762
|
-
"Snapshot": {
|
|
763
|
-
"type": "object",
|
|
764
|
-
"required": [
|
|
765
|
-
"id",
|
|
766
|
-
"org_id",
|
|
767
|
-
"name",
|
|
768
|
-
"trigger",
|
|
769
|
-
"resource_counts",
|
|
770
|
-
"create",
|
|
771
|
-
"restores"
|
|
772
|
-
],
|
|
773
|
-
"properties": {
|
|
774
|
-
"id": {
|
|
775
|
-
"type": "string"
|
|
776
|
-
},
|
|
777
|
-
"org_id": {
|
|
778
|
-
"type": "string"
|
|
779
|
-
},
|
|
780
|
-
"name": {
|
|
781
|
-
"type": "string"
|
|
782
|
-
},
|
|
783
|
-
"description": {
|
|
784
|
-
"type": "string"
|
|
785
|
-
},
|
|
786
|
-
"trigger": {
|
|
787
|
-
"type": "string",
|
|
788
|
-
"enum": [
|
|
789
|
-
"manual",
|
|
790
|
-
"sync",
|
|
791
|
-
"blueprint_install",
|
|
792
|
-
"scheduled"
|
|
793
|
-
]
|
|
794
|
-
},
|
|
795
|
-
"blueprint_instance_id": {
|
|
796
|
-
"type": "string",
|
|
797
|
-
"description": "Set iff `trigger === 'blueprint_install'`. The destination blueprint\ninstance this snapshot covers.\n"
|
|
798
|
-
},
|
|
799
|
-
"resource_counts": {
|
|
800
|
-
"type": "object",
|
|
801
|
-
"additionalProperties": {
|
|
802
|
-
"type": "integer"
|
|
803
|
-
},
|
|
804
|
-
"description": "Resource type → count of resources of that type in the snapshot."
|
|
805
|
-
},
|
|
806
|
-
"create": {
|
|
807
|
-
"$ref": "#/components/schemas/Operation"
|
|
808
|
-
},
|
|
809
|
-
"restores": {
|
|
810
|
-
"type": "array",
|
|
811
|
-
"items": {
|
|
812
|
-
"$ref": "#/components/schemas/Operation"
|
|
813
|
-
}
|
|
814
|
-
},
|
|
815
|
-
"matched_count": {
|
|
816
|
-
"type": "integer",
|
|
817
|
-
"description": "Number of `resource` filter pairs from the request that are\ncontained in this snapshot. Present only on `listSnapshots`\nresponses where the caller passed at least one `resource`\nfilter — absent on `getSnapshot` and on unfiltered list calls.\nDrives the coverage badge in Config Hub's snapshot picker.\n"
|
|
818
|
-
},
|
|
819
|
-
"scope": {
|
|
820
|
-
"type": "string",
|
|
821
|
-
"enum": [
|
|
822
|
-
"selection",
|
|
823
|
-
"org"
|
|
824
|
-
],
|
|
825
|
-
"description": "Capture scope. `selection` (default for manual/sync/blueprint_install)\nmeans only the explicitly listed resources were snapshotted.\n`org` means a full org inventory was discovered and captured\n(scheduled snapshots set this automatically).\n"
|
|
826
|
-
},
|
|
827
|
-
"expires_at": {
|
|
828
|
-
"type": "string",
|
|
829
|
-
"format": "date-time",
|
|
830
|
-
"description": "ISO-8601 timestamp after which this snapshot will be deleted.\nDerived from the org's retention setting at capture time for\nscheduled snapshots; not set for manual snapshots (which use\na hardcoded 90-day TTL written directly as a DynamoDB `ttl` epoch).\n"
|
|
831
|
-
},
|
|
832
|
-
"capture_summary": {
|
|
833
|
-
"type": "object",
|
|
834
|
-
"description": "Per-snapshot coverage report set by the capture worker on completion.\nRecords how many resources were attempted, captured, skipped\n(unsupported type or explicitly excluded), and failed.\n",
|
|
835
|
-
"required": [
|
|
836
|
-
"total",
|
|
837
|
-
"captured",
|
|
838
|
-
"skipped",
|
|
839
|
-
"failed"
|
|
840
|
-
],
|
|
841
|
-
"properties": {
|
|
842
|
-
"total": {
|
|
843
|
-
"type": "integer",
|
|
844
|
-
"description": "Total resources in the inventory that were attempted."
|
|
845
|
-
},
|
|
846
|
-
"captured": {
|
|
847
|
-
"type": "integer",
|
|
848
|
-
"description": "Resources successfully fetched and written to the manifest."
|
|
849
|
-
},
|
|
850
|
-
"skipped": {
|
|
851
|
-
"type": "integer",
|
|
852
|
-
"description": "Resources skipped — type not supported by config-engine or\nexcluded from capture (e.g. access_token, environment_variable).\n"
|
|
853
|
-
},
|
|
854
|
-
"failed": {
|
|
855
|
-
"type": "integer",
|
|
856
|
-
"description": "Resources where the fetch call returned an error."
|
|
857
|
-
}
|
|
858
|
-
}
|
|
859
|
-
}
|
|
860
|
-
}
|
|
861
|
-
},
|
|
862
|
-
"Operation": {
|
|
863
|
-
"type": "object",
|
|
864
|
-
"required": [
|
|
865
|
-
"type",
|
|
866
|
-
"started_at",
|
|
867
|
-
"status",
|
|
868
|
-
"triggered_by"
|
|
869
|
-
],
|
|
870
|
-
"properties": {
|
|
871
|
-
"type": {
|
|
872
|
-
"type": "string",
|
|
873
|
-
"enum": [
|
|
874
|
-
"create",
|
|
875
|
-
"restore"
|
|
876
|
-
]
|
|
877
|
-
},
|
|
878
|
-
"started_at": {
|
|
879
|
-
"type": "string",
|
|
880
|
-
"format": "date-time"
|
|
881
|
-
},
|
|
882
|
-
"completed_at": {
|
|
883
|
-
"type": "string",
|
|
884
|
-
"format": "date-time"
|
|
885
|
-
},
|
|
886
|
-
"status": {
|
|
887
|
-
"type": "string",
|
|
888
|
-
"enum": [
|
|
889
|
-
"in_progress",
|
|
890
|
-
"completed",
|
|
891
|
-
"partial",
|
|
892
|
-
"failed"
|
|
893
|
-
],
|
|
894
|
-
"description": "`partial` indicates the operation completed but skipped at least\none resource — see `skipped`. Only populated by restores triggered\nwith `mode: 'preserve_edits'`.\n"
|
|
895
|
-
},
|
|
896
|
-
"error": {
|
|
897
|
-
"type": "string"
|
|
898
|
-
},
|
|
899
|
-
"triggered_by": {
|
|
900
|
-
"$ref": "#/components/schemas/CallerIdentity"
|
|
901
|
-
},
|
|
902
|
-
"skipped": {
|
|
903
|
-
"type": "array",
|
|
904
|
-
"description": "Per-resource skips, populated only for restores triggered with\n`mode: 'preserve_edits'`. Empty / absent for Config Hub's\ndefault overwrite-mode restores.\n",
|
|
905
|
-
"items": {
|
|
906
|
-
"$ref": "#/components/schemas/SkippedResource"
|
|
907
|
-
}
|
|
908
|
-
}
|
|
909
|
-
}
|
|
910
|
-
},
|
|
911
|
-
"SkippedResource": {
|
|
912
|
-
"type": "object",
|
|
913
|
-
"required": [
|
|
914
|
-
"lineage_id",
|
|
915
|
-
"reason"
|
|
916
|
-
],
|
|
917
|
-
"properties": {
|
|
918
|
-
"lineage_id": {
|
|
919
|
-
"type": "string"
|
|
920
|
-
},
|
|
921
|
-
"reason": {
|
|
922
|
-
"type": "string",
|
|
923
|
-
"enum": [
|
|
924
|
-
"modified",
|
|
925
|
-
"co_owned"
|
|
926
|
-
],
|
|
927
|
-
"description": "- `modified` — current destination payload's fingerprint differs\n from the install-time fingerprint on the lineage row.\n- `co_owned` — lineage row has ≥2 distinct\n `blueprint_instance_ids`; restoring would unilaterally affect\n another blueprint instance's contribution.\n"
|
|
928
|
-
}
|
|
929
|
-
}
|
|
930
|
-
},
|
|
931
|
-
"CallerIdentity": {
|
|
932
|
-
"type": "object",
|
|
933
|
-
"required": [
|
|
934
|
-
"name"
|
|
935
|
-
],
|
|
936
|
-
"properties": {
|
|
937
|
-
"name": {
|
|
938
|
-
"type": "string"
|
|
939
|
-
},
|
|
940
|
-
"user_id": {
|
|
941
|
-
"type": "string"
|
|
942
|
-
},
|
|
943
|
-
"token_id": {
|
|
944
|
-
"type": "string"
|
|
945
|
-
}
|
|
946
|
-
}
|
|
947
|
-
}
|
|
948
|
-
}
|
|
949
|
-
}
|
|
950
|
-
}
|