pulumi/sdk/go/common/workspace/project.json

343 lines
11 KiB
JSON

{
"$schema":"https://json-schema.org/draft/2020-12/schema",
"$id":"https://github.com/pulumi/pulumi/blob/master/sdk/go/common/workspace/project.json",
"title":"Pulumi Project",
"description":"A schema for Pulumi project files.",
"type":"object",
"properties":{
"name":{
"description":"Name of the project containing alphanumeric characters, hyphens, underscores, and periods.",
"type":"string",
"minLength":1
},
"description":{
"description":"Description of the project.",
"type":[
"string",
"null"
]
},
"author":{
"description":"Author is an optional author that created this project.",
"type":[
"string",
"null"
]
},
"website":{
"description":"Website is an optional website for additional info about this project.",
"type":[
"string",
"null"
]
},
"license":{
"description":"License is the optional license governing this project's usage.",
"type":[
"string",
"null"
]
},
"runtime":{
"title":"ProjectRuntimeInfo",
"oneOf":[
{
"title":"Name",
"type":"string",
"minLength":1
},
{
"type":"object",
"properties":{
"name":{
"title":"Name",
"type":"string",
"minLength":1
},
"options":{
"title":"Options",
"type":"object",
"additionalProperties":true
}
},
"additionalProperties":false
}
]
},
"main":{
"description":"Path to the Pulumi program. The default is the working directory.",
"type":[
"string",
"null"
]
},
"config":{
"description":"A map of configuration keys to their types. Using config directory location relative to the location of Pulumi.yaml is a deprecated use of this key. Use stackConfigDir instead.",
"type":[
"object",
"string",
"null"
],
"properties":{
"secret":{
"description":"If true this configuration value should be encrypted.",
"type":"boolean",
"default":false
}
},
"additionalProperties":{
"oneOf":[
{
"type":"string"
},
{
"type":"integer"
},
{
"type":"boolean"
},
{
"type": "array"
},
{
"$ref":"#/$defs/configTypeDeclaration"
}
]
}
},
"stackConfigDir":{
"description":"Config directory location relative to the location of Pulumi.yaml.",
"type":[
"string",
"null"
]
},
"backend":{
"description":"Backend of the project.",
"type":[
"object",
"null"
],
"properties":{
"url":{
"description":"URL is optional field to explicitly set backend url",
"type":"string"
}
},
"additionalProperties":false
},
"options":{
"description":"Additional project options.",
"type":[
"object",
"null"
],
"properties":{
"refresh":{
"description":"Set to \"always\" to refresh the state before performing a Pulumi operation.",
"type":"string",
"const":"always"
}
},
"additionalProperties":false
},
"template":{
"title":"ProjectTemplate",
"description":"ProjectTemplate is a Pulumi project template manifest.",
"type":[
"object",
"null"
],
"properties":{
"displayName":{
"description":"Optional user-friendly name of the template.",
"type":[
"string",
"null"
]
},
"description":{
"description":"Description of the template.",
"type":[
"string",
"null"
]
},
"quickstart":{
"description":"Quickstart contains optional text to be displayed after template creation.",
"type":[
"string",
"null"
]
},
"important":{
"description":"Important indicates the template is important and should be listed by default.",
"type":[
"boolean",
"null"
]
},
"metadata":{
"description":"Metadata is a map of key/value pairs to associate with the template",
"type":[
"object",
"null"
],
"additionalProperties":{
"type": "string"
}
},
"config":{
"description":"Config to apply to each stack in the project.",
"type":[
"object",
"null"
],
"additionalProperties":{
"properties":{
"description":{
"description":"Description of the config.",
"type":[
"string",
"null"
]
},
"default":{
"description":"Default value of the config."
},
"secret":{
"description":"Boolean indicating if the configuration is labeled as a secret.",
"type":[
"boolean",
"null"
]
}
}
}
}
},
"additionalProperties":false
},
"plugins":{
"description":"Override for the plugin selection. Intended for use in developing pulumi plugins.",
"type":"object",
"properties":{
"providers":{
"description":"Plugins for resource providers.",
"type":"array",
"items":{
"$ref":"#/$defs/pluginOptions"
}
},
"analyzers":{
"description":"Plugins for policy analyzers.",
"type":"array",
"items":{
"$ref":"#/$defs/pluginOptions"
}
},
"languages":{
"description":"Plugins for languages.",
"type":"array",
"items":{
"$ref":"#/$defs/pluginOptions"
}
}
}
}
},
"required":[
"name",
"runtime"
],
"additionalProperties":true,
"$defs":{
"pluginOptions":{
"title":"PluginOptions",
"type":"object",
"additionalProperties":false,
"required":[
"name",
"path"
],
"properties":{
"name":{
"type":"string",
"description":"Name of the plugin"
},
"path":{
"type":"string",
"description":"Path to the plugin folder"
},
"version":{
"type":"string",
"description":"Version of the plugin, if not set, will match any version the engine requests."
}
}
},
"simpleConfigType":{
"title":"SimpleConfigType",
"enum":[
"string",
"integer",
"boolean",
"array"
]
},
"configItemsType":{
"type":"object",
"required":[
"type"
],
"properties":{
"type":{
"oneOf":[
{
"$ref":"#/$defs/simpleConfigType"
},
{
"$ref":"#/$defs/configItemsType"
}
]
},
"items":{
"$ref":"#/$defs/configItemsType"
}
},
"if":{
"properties":{
"type":{
"const":"array"
}
}
},
"then":{
"required":[
"items"
]
}
},
"configTypeDeclaration":{
"title":"ConfigTypeDeclaration",
"type":"object",
"additionalProperties":false,
"properties":{
"type":{
"$ref":"#/$defs/simpleConfigType"
},
"items":{
"$ref":"#/$defs/configItemsType"
},
"description":{
"type":"string"
},
"secret":{
"type":"boolean"
},
"default":{ },
"value": { }
}
}
}
}