pulumi/sdk/go/common/apitype/deployments.json
Pat Gavlin 134d7cb818
[apitype] Add a JSON schema for deployments. (#8002)
This schema can be used to validate the contents of a Pulumi deployment.
If a deployment validates against this schema, it should be considered
syntactically valid, though it may contain certain classes of semantic
errors (e.g. references to unknown resources in dependency lists,
dependency cycles, etc.).

This schema is not yet used for validation in practice and may not be
entirely accurate.

These changes also add this schema (and the schemas on which it depends)
to the developer documentation. jsonschema2md.go has been updated to
support multi-file schemas.
2021-09-21 21:37:06 -07:00

174 lines
6.9 KiB
JSON

{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://github.com/pulumi/pulumi/blob/master/sdk/go/common/apitype/deployments.json",
"title": "Pulumi Deployment States",
"description": "A schema for Pulumi deployment states.",
"type": "object",
"properties": {
"version": {
"description": "The deployment version.",
"type": "integer"
},
"deployment": {
"description": "The deployment object.",
"type": "object"
}
},
"required": ["version", "deployment"],
"additionalProperties": false,
"oneOf": [
{ "$ref": "#/$defs/deploymentV3" },
{
"title": "Unknown Version",
"description": "Catchall for unknown deployment versions.",
"type": "object",
"properties": {
"version": {
"description": "The deployment version.",
"not": {
"enum": [ 3 ]
}
},
"deployment": {
"description": "The deployment object.",
"type": "object"
}
}
}
],
"$defs": {
"deploymentV3": {
"$anchor": "v3",
"title": "Version 3",
"description": "The third version of the deployment state.",
"type": "object",
"properties": {
"version": {
"description": "The deployment version. Must be `3`.",
"const": 3
},
"deployment": {
"description": "The deployment state.",
"type": "object",
"properties": {
"manifest": {
"description": "Metadata about the deployment.",
"$ref": "#/$defs/manifestV1"
},
"secrets_providers": {
"description": "Configuration for this stack's secrets provider.",
"$ref": "#/$defs/secretsProviderV1"
},
"resources": {
"description": "All resources that are part of the stack.",
"type": "array",
"items": {
"$ref": "https://github.com/pulumi/pulumi/blob/master/sdk/go/common/apitype/resources.json#v3"
}
},
"pending_operations": {
"description": "Any operations that were pending at the time the deployment finished.",
"type": "array",
"items": {
"$ref": "#/$defs/operationV2"
}
}
},
"required": ["manifest"],
"additionalProperties": false
}
},
"required": ["version", "deployment"],
"additionalProperties": false
},
"manifestV1": {
"title": "Deployment Manifest",
"description": "Captures meta-information about a deployment, such as versions of binaries, etc.",
"type": "object",
"properties": {
"time": {
"description": "The deployment's start time.",
"type": "string",
"format": "date-time"
},
"magic": {
"description": "A magic number used to validate the manifest's integrity.",
"type": "string"
},
"version": {
"description": "The version of the Pulumi engine that produced the deployment.",
"type": "string"
},
"plugins": {
"description": "Information about the plugins used by the deployment.",
"type": "array",
"items": {
"title": "Plugin Info",
"description": "Information about a plugin.",
"type": "object",
"properties": {
"name": {
"description": "The plugin's name.",
"type": "string"
},
"path": {
"description": "The path of the plugin's binary.",
"type": "string"
},
"type": {
"description": "The plugin's type.",
"enum": [
"analyzer",
"language",
"resource"
]
},
"version": {
"description": "The plugin's version.",
"type": "string"
}
},
"required": ["name", "path", "type", "version"],
"additionalProperties": false
}
}
},
"required": ["time", "magic", "version"],
"additionalProperties": false
},
"secretsProviderV1": {
"title": "Secrets Provider",
"description": "Configuration information for a secrets provider.",
"type": "object",
"properties": {
"type": {
"description": "The secrets provider's type.",
"type": "string"
},
"state": {
"description": "The secrets provider's state, if any."
}
},
"required": ["type"],
"additionalProperties": false
},
"operationV2": {
"title": "Resource Operation V2",
"description": "Version 2 of a resource operation state",
"type": "object",
"properties": {
"resource": {
"description": "The state of the affected resource as of the start of this operation.",
"$ref": "https://github.com/pulumi/pulumi/blob/master/sdk/go/common/apitype/resources.json#v3"
},
"type": {
"description": "A string representation of the operation.",
"enum": ["creating", "updating", "deleting", "reading"]
}
},
"required": ["resource", "type"],
"additionalProperties": false
}
}
}