@epilot/sdk 2.8.3 → 2.8.4

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 (145) hide show
  1. package/definitions/blueprint-manifest-runtime.json +1 -1
  2. package/definitions/blueprint-manifest.json +571 -1
  3. package/definitions/snapshot-runtime.json +1 -1
  4. package/definitions/snapshot.json +55 -3
  5. package/dist/README-NBWAQWQS.js +7 -0
  6. package/dist/README-XCIDDEAE.cjs +7 -0
  7. package/dist/apis/access-token.cjs +6 -6
  8. package/dist/apis/access-token.js +1 -1
  9. package/dist/apis/address-suggestions.cjs +6 -6
  10. package/dist/apis/address-suggestions.js +1 -1
  11. package/dist/apis/address.cjs +6 -6
  12. package/dist/apis/address.js +1 -1
  13. package/dist/apis/ai-agents.cjs +6 -6
  14. package/dist/apis/ai-agents.js +1 -1
  15. package/dist/apis/app.cjs +6 -6
  16. package/dist/apis/app.js +1 -1
  17. package/dist/apis/audit-logs.cjs +6 -6
  18. package/dist/apis/audit-logs.js +1 -1
  19. package/dist/apis/automation.cjs +6 -6
  20. package/dist/apis/automation.js +1 -1
  21. package/dist/apis/billing.cjs +6 -6
  22. package/dist/apis/billing.js +1 -1
  23. package/dist/apis/blueprint-manifest.cjs +8 -8
  24. package/dist/apis/blueprint-manifest.d.cts +2 -2
  25. package/dist/apis/blueprint-manifest.d.ts +2 -2
  26. package/dist/apis/blueprint-manifest.js +2 -2
  27. package/dist/apis/calendar.cjs +6 -6
  28. package/dist/apis/calendar.js +1 -1
  29. package/dist/apis/configuration-hub.cjs +6 -6
  30. package/dist/apis/configuration-hub.js +1 -1
  31. package/dist/apis/consent.cjs +6 -6
  32. package/dist/apis/consent.js +1 -1
  33. package/dist/apis/customer-portal.cjs +6 -6
  34. package/dist/apis/customer-portal.js +1 -1
  35. package/dist/apis/dashboard.cjs +6 -6
  36. package/dist/apis/dashboard.js +1 -1
  37. package/dist/apis/data-governance.cjs +6 -6
  38. package/dist/apis/data-governance.js +1 -1
  39. package/dist/apis/deduplication.cjs +6 -6
  40. package/dist/apis/deduplication.js +1 -1
  41. package/dist/apis/design.cjs +6 -6
  42. package/dist/apis/design.js +1 -1
  43. package/dist/apis/document.cjs +6 -6
  44. package/dist/apis/document.js +1 -1
  45. package/dist/apis/email-settings.cjs +6 -6
  46. package/dist/apis/email-settings.js +1 -1
  47. package/dist/apis/email-template.cjs +6 -6
  48. package/dist/apis/email-template.js +1 -1
  49. package/dist/apis/entity-mapping.cjs +6 -6
  50. package/dist/apis/entity-mapping.js +1 -1
  51. package/dist/apis/entity.cjs +6 -6
  52. package/dist/apis/entity.js +1 -1
  53. package/dist/apis/environments.cjs +6 -6
  54. package/dist/apis/environments.js +1 -1
  55. package/dist/apis/event-catalog.cjs +6 -6
  56. package/dist/apis/event-catalog.js +1 -1
  57. package/dist/apis/file.cjs +6 -6
  58. package/dist/apis/file.js +1 -1
  59. package/dist/apis/iban.cjs +6 -6
  60. package/dist/apis/iban.js +1 -1
  61. package/dist/apis/integration-toolkit.cjs +6 -6
  62. package/dist/apis/integration-toolkit.js +1 -1
  63. package/dist/apis/journey.cjs +6 -6
  64. package/dist/apis/journey.js +1 -1
  65. package/dist/apis/kanban.cjs +6 -6
  66. package/dist/apis/kanban.js +1 -1
  67. package/dist/apis/message.cjs +6 -6
  68. package/dist/apis/message.js +1 -1
  69. package/dist/apis/metering.cjs +6 -6
  70. package/dist/apis/metering.js +1 -1
  71. package/dist/apis/notes.cjs +6 -6
  72. package/dist/apis/notes.js +1 -1
  73. package/dist/apis/notification.cjs +6 -6
  74. package/dist/apis/notification.js +1 -1
  75. package/dist/apis/organization.cjs +6 -6
  76. package/dist/apis/organization.js +1 -1
  77. package/dist/apis/partner-directory.cjs +6 -6
  78. package/dist/apis/partner-directory.js +1 -1
  79. package/dist/apis/permissions.cjs +6 -6
  80. package/dist/apis/permissions.js +1 -1
  81. package/dist/apis/pricing-tier.cjs +6 -6
  82. package/dist/apis/pricing-tier.js +1 -1
  83. package/dist/apis/pricing.cjs +6 -6
  84. package/dist/apis/pricing.js +1 -1
  85. package/dist/apis/purpose.cjs +6 -6
  86. package/dist/apis/purpose.js +1 -1
  87. package/dist/apis/query.cjs +6 -6
  88. package/dist/apis/query.js +1 -1
  89. package/dist/apis/sandbox.cjs +6 -6
  90. package/dist/apis/sandbox.js +1 -1
  91. package/dist/apis/sharing.cjs +6 -6
  92. package/dist/apis/sharing.js +1 -1
  93. package/dist/apis/snapshot.cjs +8 -8
  94. package/dist/apis/snapshot.d.cts +2 -2
  95. package/dist/apis/snapshot.d.ts +2 -2
  96. package/dist/apis/snapshot.js +2 -2
  97. package/dist/apis/submission.cjs +6 -6
  98. package/dist/apis/submission.js +1 -1
  99. package/dist/apis/target.cjs +6 -6
  100. package/dist/apis/target.js +1 -1
  101. package/dist/apis/targeting.cjs +6 -6
  102. package/dist/apis/targeting.js +1 -1
  103. package/dist/apis/template-variables.cjs +6 -6
  104. package/dist/apis/template-variables.js +1 -1
  105. package/dist/apis/user.cjs +6 -6
  106. package/dist/apis/user.js +1 -1
  107. package/dist/apis/validation-rules.cjs +6 -6
  108. package/dist/apis/validation-rules.js +1 -1
  109. package/dist/apis/webhooks.cjs +6 -6
  110. package/dist/apis/webhooks.js +1 -1
  111. package/dist/apis/workflow-definition.cjs +6 -6
  112. package/dist/apis/workflow-definition.js +1 -1
  113. package/dist/apis/workflow.cjs +6 -6
  114. package/dist/apis/workflow.js +1 -1
  115. package/dist/blueprint-manifest-WHYSBU66.cjs +7 -0
  116. package/dist/blueprint-manifest-WZVBTKUL.js +7 -0
  117. package/dist/{blueprint-manifest-runtime-FRLU3ZSF.js → blueprint-manifest-runtime-2344IUIE.js} +1 -1
  118. package/dist/{blueprint-manifest-runtime-EIDOROIQ.cjs → blueprint-manifest-runtime-WU5MWPVT.cjs} +2 -2
  119. package/dist/{blueprint-manifest.d-B8yDxagC.d.cts → blueprint-manifest.d-2-TORV8o.d.cts} +926 -4
  120. package/dist/{blueprint-manifest.d-B8yDxagC.d.ts → blueprint-manifest.d-2-TORV8o.d.ts} +926 -4
  121. package/dist/{chunk-K2QVMO5M.cjs → chunk-DFYZ3LS2.cjs} +1 -1
  122. package/dist/{chunk-BJGLY4Z2.js → chunk-GUYARNLI.js} +1 -1
  123. package/dist/{chunk-FBQ4WDTG.cjs → chunk-M432U2EN.cjs} +5 -5
  124. package/dist/{chunk-NGHCQ2FA.cjs → chunk-T57MT6J5.cjs} +1 -1
  125. package/dist/{chunk-76M3RIDP.js → chunk-TP3MI5V5.js} +5 -5
  126. package/dist/{chunk-4YBWMDFP.js → chunk-UWGWRGGB.js} +1 -1
  127. package/dist/index.cjs +12 -12
  128. package/dist/index.d.cts +2 -2
  129. package/dist/index.d.ts +2 -2
  130. package/dist/index.js +3 -3
  131. package/dist/snapshot-CTKT2ILE.cjs +7 -0
  132. package/dist/snapshot-XYFMWDVA.js +7 -0
  133. package/dist/{snapshot-runtime-ALPJLXVW.js → snapshot-runtime-EXWPPYJI.js} +1 -1
  134. package/dist/{snapshot-runtime-NWQYU5UK.cjs → snapshot-runtime-XUQIDON7.cjs} +2 -2
  135. package/dist/{snapshot.d-DvoJ2n-v.d.cts → snapshot.d-BX0xhQlH.d.cts} +55 -58
  136. package/dist/{snapshot.d-DvoJ2n-v.d.ts → snapshot.d-BX0xhQlH.d.ts} +55 -58
  137. package/docs/blueprint-manifest.md +421 -95
  138. package/docs/snapshot.md +71 -11
  139. package/package.json +1 -1
  140. package/dist/README-46VYEGGW.js +0 -7
  141. package/dist/README-IVBISSWB.cjs +0 -7
  142. package/dist/blueprint-manifest-6DEYW5MW.js +0 -7
  143. package/dist/blueprint-manifest-GCV7H74X.cjs +0 -7
  144. package/dist/snapshot-427N6KCO.js +0 -7
  145. package/dist/snapshot-NEMUND3M.cjs +0 -7
@@ -41,6 +41,10 @@
41
41
  {
42
42
  "name": "Patches",
43
43
  "description": "Manage blueprint patches for mass rollouts"
44
+ },
45
+ {
46
+ "name": "Uniqueness Criteria",
47
+ "description": "Configure per-org field sets used to match existing resources during install"
44
48
  }
45
49
  ],
46
50
  "security": [
@@ -2964,6 +2968,118 @@
2964
2968
  }
2965
2969
  }
2966
2970
  },
2971
+ "/v3/blueprint-manifest/blueprints/{blueprint_id}/deployments/{job_id}:restore": {
2972
+ "post": {
2973
+ "operationId": "restoreBlueprintDeploymentV3",
2974
+ "summary": "Restore a specific deployment by job_id",
2975
+ "description": "Roll a deployment back to its pre-install state. Two phases:\n\n 1. Upsert — re-applies the captured payloads via snapshot-api's\n `:restore` (server-side; runs config-engine.apply with captured\n target ids pre-seeded). Skipped for pure-create deployments\n whose snapshot was empty.\n 2. Delete sweep — for lineage rows of this blueprint instance not\n present in the snapshot's captured set, deletes the live\n resource via the type's adapter. Co-ownership / drift /\n no-delete-capability skip the entry with the corresponding\n reason.\n\nResolves `(blueprint_id, job_id)` to the entry in\n`Blueprint.deployments[]` and reads its `snapshot_id` and\n`destination_blueprint_id` — the caller never needs to handle\nsnapshot ids directly.\n\nAsync — returns 202 with a job id. Poll the job to track progress.\nThe per-instance lock (`installation_status === 'IN_PROGRESS'`)\nrejects concurrent installs or restores with 409.\n",
2976
+ "tags": [
2977
+ "Blueprints"
2978
+ ],
2979
+ "parameters": [
2980
+ {
2981
+ "in": "path",
2982
+ "name": "blueprint_id",
2983
+ "required": true,
2984
+ "schema": {
2985
+ "$ref": "#/components/schemas/BlueprintID"
2986
+ }
2987
+ },
2988
+ {
2989
+ "in": "path",
2990
+ "name": "job_id",
2991
+ "required": true,
2992
+ "schema": {
2993
+ "$ref": "#/components/schemas/BlueprintJobID"
2994
+ }
2995
+ }
2996
+ ],
2997
+ "responses": {
2998
+ "202": {
2999
+ "description": "Restore job started",
3000
+ "headers": {
3001
+ "Location": {
3002
+ "description": "URL to poll the job",
3003
+ "schema": {
3004
+ "type": "string"
3005
+ }
3006
+ }
3007
+ },
3008
+ "content": {
3009
+ "application/json": {
3010
+ "schema": {
3011
+ "type": "object",
3012
+ "properties": {
3013
+ "job_id": {
3014
+ "$ref": "#/components/schemas/BlueprintJobID"
3015
+ },
3016
+ "blueprint_instance_id": {
3017
+ "$ref": "#/components/schemas/BlueprintID"
3018
+ },
3019
+ "snapshot_id": {
3020
+ "type": "string"
3021
+ }
3022
+ }
3023
+ }
3024
+ }
3025
+ }
3026
+ },
3027
+ "400": {
3028
+ "description": "Deployment has no snapshot, or the snapshot is not in a `completed` state."
3029
+ },
3030
+ "404": {
3031
+ "description": "Blueprint not found, or no deployment with the given job_id on this blueprint."
3032
+ },
3033
+ "409": {
3034
+ "description": "Another install or restore is in flight for this blueprint instance."
3035
+ }
3036
+ }
3037
+ }
3038
+ },
3039
+ "/v3/blueprint-manifest/blueprints/{blueprint_id}/deployments/{job_id}/restore-preview": {
3040
+ "get": {
3041
+ "operationId": "getRestorePreview",
3042
+ "summary": "Predicted outcome of reverting a deployment",
3043
+ "description": "Computes what would happen if the user triggered a restore on this\ndeployment, without performing any writes. The forecast uses the\nsnapshot's captured resources (when present) plus the current lineage\nstate plus per-adapter gates (co-ownership, no-delete-capability,\nheuristic-match, drift when wired).\n\nIdempotent and side-effect free. Safe to call repeatedly. The result\nmay shift between calls if operators edit destination resources or\nanother blueprint adopts a shared resource in the meantime.\n",
3044
+ "tags": [
3045
+ "Blueprints"
3046
+ ],
3047
+ "parameters": [
3048
+ {
3049
+ "in": "path",
3050
+ "name": "blueprint_id",
3051
+ "required": true,
3052
+ "schema": {
3053
+ "$ref": "#/components/schemas/BlueprintID"
3054
+ }
3055
+ },
3056
+ {
3057
+ "in": "path",
3058
+ "name": "job_id",
3059
+ "required": true,
3060
+ "description": "The install job whose deployment is being previewed.",
3061
+ "schema": {
3062
+ "$ref": "#/components/schemas/BlueprintJobID"
3063
+ }
3064
+ }
3065
+ ],
3066
+ "responses": {
3067
+ "200": {
3068
+ "description": "Predicted outcome. `failed`-action items are absent here — the\npreview can't forecast errors.\n",
3069
+ "content": {
3070
+ "application/json": {
3071
+ "schema": {
3072
+ "$ref": "#/components/schemas/RestoreOutcome"
3073
+ }
3074
+ }
3075
+ }
3076
+ },
3077
+ "404": {
3078
+ "description": "Blueprint or deployment not found."
3079
+ }
3080
+ }
3081
+ }
3082
+ },
2967
3083
  "/v3/blueprint-manifest/blueprints/{blueprint_id}/lineage": {
2968
3084
  "get": {
2969
3085
  "operationId": "getBlueprintLineageV3",
@@ -3006,10 +3122,184 @@
3006
3122
  }
3007
3123
  }
3008
3124
  }
3125
+ },
3126
+ "/v1/blueprint-manifest/uniqueness-criteria": {
3127
+ "get": {
3128
+ "operationId": "listUniquenessCriteria",
3129
+ "summary": "listUniquenessCriteria",
3130
+ "description": "List all custom uniqueness criteria configured for the caller's organization.\nThese overrides are applied during install (V2 and V3) when matching incoming\nresources against existing ones in the destination org, replacing the default\nper-resource-type field set with the caller's chosen fields (AND-combined).\n",
3131
+ "tags": [
3132
+ "Uniqueness Criteria"
3133
+ ],
3134
+ "responses": {
3135
+ "200": {
3136
+ "description": "All configured criteria for the org",
3137
+ "content": {
3138
+ "application/json": {
3139
+ "schema": {
3140
+ "type": "object",
3141
+ "properties": {
3142
+ "results": {
3143
+ "type": "array",
3144
+ "items": {
3145
+ "$ref": "#/components/schemas/UniquenessCriteria"
3146
+ }
3147
+ }
3148
+ }
3149
+ }
3150
+ }
3151
+ }
3152
+ }
3153
+ }
3154
+ }
3155
+ },
3156
+ "/v1/blueprint-manifest/uniqueness-criteria/{resource_type}": {
3157
+ "parameters": [
3158
+ {
3159
+ "in": "path",
3160
+ "required": true,
3161
+ "name": "resource_type",
3162
+ "schema": {
3163
+ "$ref": "#/components/schemas/UniquenessCriteriaResourceType"
3164
+ }
3165
+ }
3166
+ ],
3167
+ "get": {
3168
+ "operationId": "getUniquenessCriteria",
3169
+ "summary": "getUniquenessCriteria",
3170
+ "description": "Get the configured uniqueness criteria for a specific resource type, if any.",
3171
+ "tags": [
3172
+ "Uniqueness Criteria"
3173
+ ],
3174
+ "responses": {
3175
+ "200": {
3176
+ "description": "Configured criteria for the resource type",
3177
+ "content": {
3178
+ "application/json": {
3179
+ "schema": {
3180
+ "$ref": "#/components/schemas/UniquenessCriteria"
3181
+ }
3182
+ }
3183
+ }
3184
+ },
3185
+ "404": {
3186
+ "description": "No custom criteria configured (defaults will be used)"
3187
+ }
3188
+ }
3189
+ },
3190
+ "put": {
3191
+ "operationId": "putUniquenessCriteria",
3192
+ "summary": "putUniquenessCriteria",
3193
+ "description": "Set or replace the uniqueness criteria for a resource type. The provided fields\nmust be valid attributes on the resource's schema (the UI typically loads the\nschema to populate options). All listed fields are AND-combined during matching.\n",
3194
+ "tags": [
3195
+ "Uniqueness Criteria"
3196
+ ],
3197
+ "requestBody": {
3198
+ "required": true,
3199
+ "content": {
3200
+ "application/json": {
3201
+ "schema": {
3202
+ "type": "object",
3203
+ "required": [
3204
+ "fields"
3205
+ ],
3206
+ "properties": {
3207
+ "fields": {
3208
+ "type": "array",
3209
+ "minItems": 1,
3210
+ "items": {
3211
+ "type": "string"
3212
+ }
3213
+ }
3214
+ }
3215
+ }
3216
+ }
3217
+ }
3218
+ },
3219
+ "responses": {
3220
+ "200": {
3221
+ "description": "Stored criteria",
3222
+ "content": {
3223
+ "application/json": {
3224
+ "schema": {
3225
+ "$ref": "#/components/schemas/UniquenessCriteria"
3226
+ }
3227
+ }
3228
+ }
3229
+ },
3230
+ "400": {
3231
+ "description": "Invalid resource type or field list"
3232
+ }
3233
+ }
3234
+ },
3235
+ "delete": {
3236
+ "operationId": "deleteUniquenessCriteria",
3237
+ "summary": "deleteUniquenessCriteria",
3238
+ "description": "Remove the custom criteria for a resource type, reverting to the default fields.",
3239
+ "tags": [
3240
+ "Uniqueness Criteria"
3241
+ ],
3242
+ "responses": {
3243
+ "204": {
3244
+ "description": "Criteria deleted (defaults will be used)"
3245
+ }
3246
+ }
3247
+ }
3009
3248
  }
3010
3249
  },
3011
3250
  "components": {
3012
3251
  "schemas": {
3252
+ "UniquenessCriteriaResourceType": {
3253
+ "type": "string",
3254
+ "description": "Resource type for which custom uniqueness criteria can be configured.",
3255
+ "enum": [
3256
+ "emailtemplate",
3257
+ "product",
3258
+ "price",
3259
+ "tax",
3260
+ "coupon",
3261
+ "product_recommendation",
3262
+ "file",
3263
+ "document_template",
3264
+ "schema",
3265
+ "taxonomy",
3266
+ "notification_template",
3267
+ "family",
3268
+ "permission",
3269
+ "journey"
3270
+ ]
3271
+ },
3272
+ "UniquenessCriteria": {
3273
+ "type": "object",
3274
+ "required": [
3275
+ "org_id",
3276
+ "resource_type",
3277
+ "fields",
3278
+ "updated_at"
3279
+ ],
3280
+ "properties": {
3281
+ "org_id": {
3282
+ "type": "string"
3283
+ },
3284
+ "resource_type": {
3285
+ "$ref": "#/components/schemas/UniquenessCriteriaResourceType"
3286
+ },
3287
+ "fields": {
3288
+ "type": "array",
3289
+ "minItems": 1,
3290
+ "items": {
3291
+ "type": "string"
3292
+ }
3293
+ },
3294
+ "updated_at": {
3295
+ "type": "string",
3296
+ "format": "date-time"
3297
+ },
3298
+ "updated_by": {
3299
+ "type": "string"
3300
+ }
3301
+ }
3302
+ },
3013
3303
  "LineageEntry": {
3014
3304
  "type": "object",
3015
3305
  "properties": {
@@ -3292,6 +3582,104 @@
3292
3582
  "PARTIAL_SUCCESS",
3293
3583
  "FAILED"
3294
3584
  ]
3585
+ },
3586
+ "restore_details": {
3587
+ "type": "object",
3588
+ "description": "Restore lifecycle metadata for this deployment.",
3589
+ "properties": {
3590
+ "has_revertible_changes": {
3591
+ "type": "boolean",
3592
+ "description": "Whether this sync changed destination resources in a way that can\nbe reverted. `false` means the sync completed without create,\nupdate, internal-update, or delete impacts, so there is no revert\naction to offer.\n"
3593
+ },
3594
+ "resource_impact_summary": {
3595
+ "type": "object",
3596
+ "description": "Counts of resource impact values from the V3 apply result.",
3597
+ "properties": {
3598
+ "create": {
3599
+ "type": "integer",
3600
+ "minimum": 0
3601
+ },
3602
+ "update": {
3603
+ "type": "integer",
3604
+ "minimum": 0
3605
+ },
3606
+ "internal_update": {
3607
+ "type": "integer",
3608
+ "minimum": 0
3609
+ },
3610
+ "delete": {
3611
+ "type": "integer",
3612
+ "minimum": 0
3613
+ },
3614
+ "no_op": {
3615
+ "type": "integer",
3616
+ "minimum": 0
3617
+ },
3618
+ "ignored": {
3619
+ "type": "integer",
3620
+ "minimum": 0
3621
+ }
3622
+ }
3623
+ },
3624
+ "last_restore_job_id": {
3625
+ "type": "string",
3626
+ "description": "BlueprintInstallationJob id of the most recent restore that ran\nagainst this deployment. Used by the FE to keep the restore-status\nbadge visible across page reloads. Frontends poll this job to\nrender the latest restore outcome.\n"
3627
+ },
3628
+ "last_restore_at": {
3629
+ "type": "string",
3630
+ "format": "date-time",
3631
+ "description": "Timestamp of the most recent restore that ran against this\ndeployment. Stamped when the restore sweep finishes. Used by the\nFE to show when a sync was reverted.\n"
3632
+ },
3633
+ "last_restored_by": {
3634
+ "type": "object",
3635
+ "description": "Identity of the caller who triggered the most recent restore.\nStamped when the restore sweep finishes. Used by the FE to show\nwho reverted a sync.\n",
3636
+ "properties": {
3637
+ "name": {
3638
+ "type": "string",
3639
+ "description": "Display name (email or token name) of the restorer."
3640
+ },
3641
+ "user_id": {
3642
+ "type": "string",
3643
+ "description": "User id of the restorer, when triggered by a user."
3644
+ }
3645
+ }
3646
+ },
3647
+ "status": {
3648
+ "type": "string",
3649
+ "description": "Computed server-side from `(job_id, restore_details.last_restore_job_id, installation_status)`.\n`available` when the deployment is restorable but has no prior\nrestore (including pure-create deployments without `snapshot_id`,\nreverted via sweep-only);\n`in_progress` while an install or restore is running on this\nblueprint instance;\n`restored` / `partially_restored` / `restore_failed` reflect the\nterminal status of the job referenced by `last_restore_job_id`;\n`unavailable` means there is no revert action, for example\nmalformed deployment rows missing `job_id` or no-change syncs.\n",
3650
+ "enum": [
3651
+ "available",
3652
+ "in_progress",
3653
+ "restored",
3654
+ "partially_restored",
3655
+ "restore_failed",
3656
+ "unavailable"
3657
+ ]
3658
+ }
3659
+ }
3660
+ },
3661
+ "has_revertible_changes": {
3662
+ "type": "boolean",
3663
+ "deprecated": true,
3664
+ "description": "Deprecated. Use `restore_details.has_revertible_changes`.\n"
3665
+ },
3666
+ "last_restore_job_id": {
3667
+ "type": "string",
3668
+ "deprecated": true,
3669
+ "description": "Deprecated. Use `restore_details.last_restore_job_id`.\n"
3670
+ },
3671
+ "restore_status": {
3672
+ "type": "string",
3673
+ "deprecated": true,
3674
+ "description": "Deprecated. Use `restore_details.status`.\n",
3675
+ "enum": [
3676
+ "available",
3677
+ "in_progress",
3678
+ "restored",
3679
+ "partially_restored",
3680
+ "restore_failed",
3681
+ "unavailable"
3682
+ ]
3295
3683
  }
3296
3684
  }
3297
3685
  }
@@ -3884,6 +4272,12 @@
3884
4272
  {
3885
4273
  "type": "object",
3886
4274
  "properties": {
4275
+ "job_type": {
4276
+ "type": "string",
4277
+ "enum": [
4278
+ "export"
4279
+ ]
4280
+ },
3887
4281
  "blueprint_id": {
3888
4282
  "$ref": "#/components/schemas/BlueprintID"
3889
4283
  },
@@ -3911,6 +4305,12 @@
3911
4305
  {
3912
4306
  "type": "object",
3913
4307
  "properties": {
4308
+ "job_type": {
4309
+ "type": "string",
4310
+ "enum": [
4311
+ "install"
4312
+ ]
4313
+ },
3914
4314
  "source_blueprint_id": {
3915
4315
  "$ref": "#/components/schemas/BlueprintID"
3916
4316
  },
@@ -3970,6 +4370,64 @@
3970
4370
  }
3971
4371
  ]
3972
4372
  },
4373
+ "BlueprintRestoreJob": {
4374
+ "allOf": [
4375
+ {
4376
+ "$ref": "#/components/schemas/CommonBlueprintJobFields"
4377
+ },
4378
+ {
4379
+ "type": "object",
4380
+ "properties": {
4381
+ "job_type": {
4382
+ "type": "string",
4383
+ "enum": [
4384
+ "restore"
4385
+ ]
4386
+ },
4387
+ "destination_blueprint_id": {
4388
+ "$ref": "#/components/schemas/BlueprintID"
4389
+ },
4390
+ "destination_org_id": {
4391
+ "type": "string"
4392
+ },
4393
+ "install_job_id": {
4394
+ "type": "string",
4395
+ "nullable": true,
4396
+ "description": "The install job whose deployment is being reverted. Maps back\nto the entry in `Blueprint.deployments[]`.\n"
4397
+ },
4398
+ "snapshot_id": {
4399
+ "type": "string",
4400
+ "nullable": true,
4401
+ "description": "The snapshot driving Phase 1 of the restore. Null for sweep-only\nrestores (pure-create deployments with no captured manifest).\n"
4402
+ },
4403
+ "sync_engine": {
4404
+ "type": "string",
4405
+ "enum": [
4406
+ "v3"
4407
+ ]
4408
+ },
4409
+ "status": {
4410
+ "type": "string",
4411
+ "enum": [
4412
+ "IN_PROGRESS",
4413
+ "SUCCESS",
4414
+ "PARTIAL_SUCCESS",
4415
+ "FAILED"
4416
+ ]
4417
+ },
4418
+ "restore_result": {
4419
+ "nullable": true,
4420
+ "description": "Absent while the job is still IN_PROGRESS.",
4421
+ "allOf": [
4422
+ {
4423
+ "$ref": "#/components/schemas/RestoreOutcome"
4424
+ }
4425
+ ]
4426
+ }
4427
+ }
4428
+ }
4429
+ ]
4430
+ },
3973
4431
  "V3ResourceProgressEntry": {
3974
4432
  "type": "object",
3975
4433
  "required": [
@@ -4009,6 +4467,84 @@
4009
4467
  }
4010
4468
  }
4011
4469
  },
4470
+ "RestoreOutcomeItem": {
4471
+ "type": "object",
4472
+ "required": [
4473
+ "lineage_id",
4474
+ "type",
4475
+ "action"
4476
+ ],
4477
+ "properties": {
4478
+ "lineage_id": {
4479
+ "type": "string"
4480
+ },
4481
+ "type": {
4482
+ "type": "string"
4483
+ },
4484
+ "name": {
4485
+ "type": "string",
4486
+ "nullable": true
4487
+ },
4488
+ "target_id": {
4489
+ "type": "string",
4490
+ "nullable": true
4491
+ },
4492
+ "action": {
4493
+ "type": "string",
4494
+ "description": "On `restore-preview`: the action the restore would take.\nOn `restore_result`: the action that was applied.\n`failed` only appears on `restore_result`.\n",
4495
+ "enum": [
4496
+ "restore",
4497
+ "delete",
4498
+ "skip",
4499
+ "failed"
4500
+ ]
4501
+ },
4502
+ "reason": {
4503
+ "type": "string",
4504
+ "nullable": true,
4505
+ "description": "Only set when `action == skip`.",
4506
+ "enum": [
4507
+ "modified",
4508
+ "co_owned",
4509
+ "delete_unsupported",
4510
+ "heuristic_match"
4511
+ ]
4512
+ },
4513
+ "last_synced_at": {
4514
+ "type": "string",
4515
+ "format": "date-time",
4516
+ "nullable": true,
4517
+ "description": "Only set when `reason == modified`. From the lineage row's last install write."
4518
+ },
4519
+ "current_updated_at": {
4520
+ "type": "string",
4521
+ "format": "date-time",
4522
+ "nullable": true,
4523
+ "description": "Only set when `reason == modified`. From the destination resource's current state."
4524
+ },
4525
+ "error_message": {
4526
+ "type": "string",
4527
+ "nullable": true,
4528
+ "description": "Only set when `action == failed`."
4529
+ }
4530
+ }
4531
+ },
4532
+ "RestoreOutcome": {
4533
+ "type": "object",
4534
+ "properties": {
4535
+ "snapshot_id": {
4536
+ "type": "string",
4537
+ "nullable": true,
4538
+ "description": "The snapshot driving Phase 1 of the restore. Null/absent for\nsweep-only restores (pure-create deployments with no captured\nmanifest).\n"
4539
+ },
4540
+ "resources": {
4541
+ "type": "array",
4542
+ "items": {
4543
+ "$ref": "#/components/schemas/RestoreOutcomeItem"
4544
+ }
4545
+ }
4546
+ }
4547
+ },
4012
4548
  "BlueprintJob": {
4013
4549
  "oneOf": [
4014
4550
  {
@@ -4017,6 +4553,9 @@
4017
4553
  {
4018
4554
  "$ref": "#/components/schemas/BlueprintInstallationJob"
4019
4555
  },
4556
+ {
4557
+ "$ref": "#/components/schemas/BlueprintRestoreJob"
4558
+ },
4020
4559
  {
4021
4560
  "$ref": "#/components/schemas/BlueprintDependenciesSyncJob"
4022
4561
  },
@@ -4026,7 +4565,18 @@
4026
4565
  {
4027
4566
  "$ref": "#/components/schemas/BlueprintVerificationJob"
4028
4567
  }
4029
- ]
4568
+ ],
4569
+ "discriminator": {
4570
+ "propertyName": "job_type",
4571
+ "mapping": {
4572
+ "export": "#/components/schemas/BlueprintExportJob",
4573
+ "install": "#/components/schemas/BlueprintInstallationJob",
4574
+ "restore": "#/components/schemas/BlueprintRestoreJob",
4575
+ "dependencies_sync": "#/components/schemas/BlueprintDependenciesSyncJob",
4576
+ "validate": "#/components/schemas/BlueprintValidateJob",
4577
+ "verification": "#/components/schemas/BlueprintVerificationJob"
4578
+ }
4579
+ }
4030
4580
  },
4031
4581
  "BlueprintDependenciesSyncJob": {
4032
4582
  "allOf": [
@@ -4036,6 +4586,12 @@
4036
4586
  {
4037
4587
  "type": "object",
4038
4588
  "properties": {
4589
+ "job_type": {
4590
+ "type": "string",
4591
+ "enum": [
4592
+ "dependencies_sync"
4593
+ ]
4594
+ },
4039
4595
  "blueprint_id": {
4040
4596
  "$ref": "#/components/schemas/BlueprintID"
4041
4597
  },
@@ -4060,6 +4616,12 @@
4060
4616
  {
4061
4617
  "type": "object",
4062
4618
  "properties": {
4619
+ "job_type": {
4620
+ "type": "string",
4621
+ "enum": [
4622
+ "validate"
4623
+ ]
4624
+ },
4063
4625
  "blueprint_id": {
4064
4626
  "$ref": "#/components/schemas/BlueprintID"
4065
4627
  },
@@ -4094,6 +4656,12 @@
4094
4656
  {
4095
4657
  "type": "object",
4096
4658
  "properties": {
4659
+ "job_type": {
4660
+ "type": "string",
4661
+ "enum": [
4662
+ "verification"
4663
+ ]
4664
+ },
4097
4665
  "source_org_id": {
4098
4666
  "type": "string"
4099
4667
  },
@@ -4111,6 +4679,7 @@
4111
4679
  "enum": [
4112
4680
  "IN_PROGRESS",
4113
4681
  "SUCCESS",
4682
+ "PARTIAL_SUCCESS",
4114
4683
  "FAILED"
4115
4684
  ]
4116
4685
  },
@@ -4142,6 +4711,7 @@
4142
4711
  "enum": [
4143
4712
  "IN_PROGRESS",
4144
4713
  "SUCCESS",
4714
+ "PARTIAL_SUCCESS",
4145
4715
  "FAILED"
4146
4716
  ]
4147
4717
  },
@@ -1 +1 @@
1
- {"s":"https://snapshot.sls.epilot.io","o":[["createSnapshot","post","/v1/snapshots",null,1],["listSnapshots","get","/v1/snapshots",[["cursor","q"],["size","q"],["resource","q"]]],["getSnapshot","get","/v1/snapshots/{id}"],["deleteSnapshot","delete","/v1/snapshots/{id}"],["restoreSnapshot","post","/v1/snapshots/{id}:restore"],["listSnapshotResources","get","/v1/snapshots/{id}/resources"],["getSnapshotResource","get","/v1/snapshots/{id}/resources/{lineage_id}"],["listDependencies","post","/v1/snapshots:list-dependencies",null,1]],"v":"3.0.3","pp":{"/v1/snapshots/{id}":[["id","p",true]],"/v1/snapshots/{id}:restore":[["id","p",true]],"/v1/snapshots/{id}/resources":[["id","p",true]],"/v1/snapshots/{id}/resources/{lineage_id}":[["id","p",true],["lineage_id","p",true]]}}
1
+ {"s":"https://snapshot.sls.epilot.io","o":[["createSnapshot","post","/v1/snapshots",null,1],["listSnapshots","get","/v1/snapshots",[["cursor","q"],["size","q"],["resource","q"]]],["getSnapshot","get","/v1/snapshots/{id}"],["deleteSnapshot","delete","/v1/snapshots/{id}"],["restoreSnapshot","post","/v1/snapshots/{id}:restore",null,1],["listSnapshotResources","get","/v1/snapshots/{id}/resources"],["getSnapshotResource","get","/v1/snapshots/{id}/resources/{lineage_id}"],["listDependencies","post","/v1/snapshots:list-dependencies",null,1]],"v":"3.0.3","pp":{"/v1/snapshots/{id}":[["id","p",true]],"/v1/snapshots/{id}:restore":[["id","p",true]],"/v1/snapshots/{id}/resources":[["id","p",true]],"/v1/snapshots/{id}/resources/{lineage_id}":[["id","p",true],["lineage_id","p",true]]}}