
# Pulumi Package Metaschema

A description of the schema for a Pulumi Package

`object`

## Properties

---

### `allowedPackageNames`

A list of allowed package names in addition to the name property.

`array`

Items: `string`

---

### `attribution`

Freeform text attribution of derived work, if required.

`string`

---

### `config`

The package's configuration variables.

`object`

#### Properties

---

##### `defaults`

A list of the names of the package's non-required configuration variables.

`array`

Items: `string`

---

##### `variables`

A map from variable name to propertySpec that describes a package's configuration variables.

`object`

Additional properties: [Property Definition](#property-definition)

---

---

### `dependencies`

A list of package descriptors that describes the set of dependencies for this package.

`array`

Items: [`https://github.com/pulumi/pulumi/blob/master/pkg/codegen/schema/pulumi.json#/properties/dependencies/items`](#httpsgithubcompulumipulumiblobmasterpkgcodegenschemapulumijsonpropertiesdependenciesitems)

---

### `description`

The description of the package. Descriptions are interpreted as Markdown.

`string`

---

### `displayName`

The human-friendly name of the package.

`string`

---

### `functions`

A map from token to functionSpec that describes the set of functions defined by this package.

`object`

Property names: [Function Token](#function-token)

Additional properties: [Function Definition](#function-definition)

---

### `homepage`

The package's homepage.

`string`

---

### `keywords`

The list of keywords that are associated with the package, if any.

`array`

Items: `string`

---

### `language`

Additional language-specific data about the package.

`object`

---

### `license`

The name of the license used for the package's contents.

`string`

---

### `logoUrl`

The URL of the package's logo, if any.

`string`

---

### `meta`

Format metadata about this package.

`object`

#### Properties

---

##### `moduleFormat`

A regex that is used by the importer to extract a module name from the module portion of a type token. Packages that use the module format "namespace1/namespace2/.../namespaceN" do not need to specify a format. The regex must define one capturing group that contains the module name, which must be formatted as "namespace1/namespace2/...namespaceN".

`string`

Format: `regex`

---

##### `supportPack`

Write the package to support the pack command.

`boolean`

---

---

### `name` (_required_)

The unqualified name of the package (e.g. "aws", "azure", "gcp", "kubernetes", "random")

`string`

Pattern: `^[a-zA-Z][-a-zA-Z0-9_]*$`

---

### `namespace`

The namespace of the package. Used to disambiguate the package name. Defaults to 'pulumi' when not specified

`string`

Pattern: `^([a-z][a-z0-9]*)(-[a-z0-9]+)*$`

---

### `parameterization`

An optional object to define parameterization for the package.

`object`

All of:
- [`https://github.com/pulumi/pulumi/blob/master/pkg/codegen/schema/pulumi.json#/$defs/parameterization`](#httpsgithubcompulumipulumiblobmasterpkgcodegenschemapulumijsondefsparameterization)

---

### `pluginDownloadURL`

The URL to use when downloading the provider plugin binary.

`string`

---

### `provider`

The provider type for this package.

[Resource Definition](#resource-definition)

---

### `publisher`

The name of the person or organization that authored and published the package.

`string`

---

### `repository`

The URL at which the package's sources can be found.

`string`

---

### `resources`

A map from type token to resourceSpec that describes the set of resources and components defined by this package.

`object`

Property names: [Token](#token)

Additional properties: [Resource Definition](#resource-definition)

---

### `types`

A map from type token to complexTypeSpec that describes the set of complex types (i.e. object, enum) defined by this package.

`object`

Property names: [Token](#token)

Additional properties: [Type Definition](#type-definition)

---

### `version`

The version of the package. The version must be valid semver.

`string`

Pattern: `^v?(?<major>0|[1-9]\d*)\.(?<minor>0|[1-9]\d*)\.(?<patch>0|[1-9]\d*)(?:-(?<prerelease>(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+(?<buildmetadata>[0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$`

---

## Alias Definition

`object` | `string`

### Properties

---

#### `type`

The type portion of the alias, if any

`string`

---

## Array Type

A reference to an array type. The "type" property must be set to "array" and the "items" property must be present. No other properties may be present.

`object`

### Properties

---

#### `items` (_required_)

The element type of the array

[Type Reference](#type-reference)

---

#### `type` (_required_)

Constant: `"array"`

---

## Enum Type Definition

Describes an enum type

`object`

### Properties

---

#### `enum` (_required_)

The list of possible values for the enum

`array`

Items: [Enum Value Definition](#enum-value-definition)

---

#### `type` (_required_)

The underlying primitive type of the enum

`string`

Enum: `"boolean"` | `"integer"` | `"number"` | `"string"`

---

## Enum Value Definition

`object`

### Properties

---

#### `deprecationMessage`

Indicates whether the value is deprecated.

`string`

---

#### `description`

The description of the enum value, if any. Interpreted as Markdown.

`string`

---

#### `name`

If present, overrides the name of the enum value that would usually be derived from the value.

`string`

---

#### `value` (_required_)

The enum value itself

`boolean` | `integer` | `number` | `string`

---

## Function Definition

Describes a function.

`object`

### Properties

---

#### `deprecationMessage`

Indicates whether the function is deprecated

`string`

---

#### `description`

The description of the function, if any. Interpreted as Markdown.

`string`

---

#### `inputs`

The bag of input values for the function, if any.

[Object Type Details](#object-type-details)

---

#### `isOverlay`

Indicates that the implementation of the function should not be generated from the schema, and is instead provided out-of-band by the package author

`boolean`

---

#### `language`

Additional language-specific data about the function.

`object`

---

#### `multiArgumentInputs`

A list of parameter names that determines whether the input bag should be treated as a single argument or as multiple arguments. The list corresponds to the order in which the parameters should be passed to the function.

`array`

Items: `string`

---

#### `outputs`

Specifies the return type of the function definition.

Any of:

---

#### `overlaySupportedLanguages`

A list of languages that the overlay supports. This only has an effect if the Resource is an Overlay (isOverlay == true).  Supported values are 'nodejs', 'python', 'go', 'csharp', 'java', 'yaml'.

`array`

Items: `"nodejs"` | `"python"` | `"go"` | `"csharp"` | `"java"` | `"yaml"`

---

#### `plain`

Plain is a marker field to indicate that this function should only generate plain and output style methods. It defaults to true, that is to emit both plain and output style methods. Setting this to false will emit only output style methods.

`boolean`

---

#### `returnType`

Specifies the return type of the function definition.

Any of:

---

## Function Token

`string`

Pattern: `^[a-zA-Z][-a-zA-Z0-9_]*:([^0-9][a-zA-Z0-9._/-]*)?:[^0-9][a-zA-Z0-9._/-]*$`

## Map Type

A reference to a map type. The "type" property must be set to "object" and the "additionalProperties" property may be present. No other properties may be present.

`object`

### Properties

---

#### `additionalProperties`

The element type of the map. Defaults to "string" when omitted.

[Type Reference](#type-reference)

---

#### `type` (_required_)

Constant: `"object"`

---

## Named Type

A reference to a type in this or another document. The "$ref" property must be present. The "type" property is ignored if it is present. No other properties may be present.

`object`

### Properties

---

#### `$ref` (_required_)

The URI of the referenced type. For example, the built-in Archive, Asset, and Any
types are referenced as "pulumi.json#/Archive", "pulumi.json#/Asset", and "pulumi.json#/Any", respectively.
A type from this document is referenced as "#/types/pulumi:type:token".
A type from another document is referenced as "path#/types/pulumi:type:token", where path is of the form:
  "/provider/vX.Y.Z/schema.json" or "pulumi.json" or "http[s]://example.com/provider/vX.Y.Z/schema.json"
A resource from this document is referenced as "#/resources/pulumi:type:token".
A resource from another document is referenced as "path#/resources/pulumi:type:token", where path is of the form:
  "/provider/vX.Y.Z/schema.json" or "pulumi.json" or "http[s]://example.com/provider/vX.Y.Z/schema.json"

`string`

Format: `uri-reference`

---

#### `type`

ignored; present for compatibility with existing schemas

`string`

---

## Object Type Definition

`object`

All of:
- [Object Type Details](#object-type-details)

### Properties

---

#### `type`

Constant: `"object"`

---

## Object Type Details

Describes an object type

`object`

### Properties

---

#### `description`

The description of the type, if any

`string`

---

#### `isOverlay`

indicates whether the type is an overlay provided by the package. Overlay code is generated by the package rather than using the core Pulumi codegen libraries.

`boolean`

---

#### `language`

Additional language-specific data about the object type.

`object`

---

#### `overlaySupportedLanguages`

A list of languages that the overlay supports. This only has an effect if the Resource is an Overlay (isOverlay == true).  Supported values are 'nodejs', 'python', 'go', 'csharp', 'java', 'yaml'.

`array`

Items: `"nodejs"` | `"python"` | `"go"` | `"csharp"` | `"java"` | `"yaml"`

---

#### `properties`

A map from property name to propertySpec that describes the object's properties.

`object`

Additional properties: [Property Definition](#property-definition)

---

#### `required`

A list of the names of an object type's required properties. These properties must be set for inputs and will always be set for outputs.

`array`

Items: `string`

---

#### `type`

The type of the object.  Must be 'object' if this is an object type, or the underlying type for an enum.

`string`

---

## Primitive Type

A reference to a primitive type. A primitive type must have only the "type" property set.

`object`

### Properties

---

#### `type` (_required_)

The primitive type, if any

`string`

Enum: `"boolean"` | `"integer"` | `"number"` | `"string"`

---

## Property Definition

Describes an object or resource property

`object`

All of:
- [Type Reference](#type-reference)

### Properties

---

#### `const`

The constant value for the property, if any. The type of the value must be assignable to the type of the property.

`boolean` | `number` | `string`

---

#### `default`

The default value for the property, if any. The type of the value must be assignable to the type of the property.

`boolean` | `number` | `string`

---

#### `defaultInfo`

Additional information about the property's default value, if any.

`object`

##### Properties

---

###### `environment` (_required_)

A set of environment variables to probe for a default value.

`array`

Items: `string`

---

###### `language`

Additional language-specific data about the default value.

`object`

---

---

#### `deprecationMessage`

Indicates whether the property is deprecated

`string`

---

#### `description`

The description of the property, if any. Interpreted as Markdown.

`string`

---

#### `language`

Additional language-specific data about the property.

`object`

---

#### `replaceOnChanges`

Specifies whether a change to the property causes its containing resource to be replaced instead of updated (default false).

`boolean`

---

#### `secret`

Specifies whether the property is secret (default false).

`boolean`

---

#### `willReplaceOnChanges`

Indicates that the provider will replace the resource when this property is changed.

`boolean`

---

## Resource Definition

Describes a resource or component.

`object`

All of:
- [Object Type Details](#object-type-details)

### Properties

---

#### `aliases`

The list of aliases for the resource.

`array`

Items: [Alias Definition](#alias-definition)

---

#### `deprecationMessage`

Indicates whether the resource is deprecated

`string`

---

#### `description`

The description of the resource, if any. Interpreted as Markdown.

`string`

---

#### `inputProperties`

A map from property name to propertySpec that describes the resource's input properties.

`object`

Additional properties: [Property Definition](#property-definition)

---

#### `isComponent`

Indicates whether the resource is a component.

`boolean`

---

#### `isOverlay`

Indicates that the implementation of the resource should not be generated from the schema, and is instead provided out-of-band by the package author

`boolean`

---

#### `methods`

A map from method name to function token that describes the resource's method set.

`object`

Additional properties: `string`

---

#### `requiredInputs`

A list of the names of the resource's required input properties.

`array`

Items: `string`

---

#### `stateInputs`

An optional objectTypeSpec that describes additional inputs that may be necessary to get an existing resource. If this is unset, only an ID is necessary.

[Object Type Details](#object-type-details)

---

## Token

`string`

Pattern: `^[a-zA-Z][-a-zA-Z0-9_]*:([^0-9][a-zA-Z0-9._/-]*)?:[^0-9][a-zA-Z0-9._/]*$`

## Type Definition

Describes an object or enum type.

`object`

One of:

### Properties

---

#### `description`

The description of the type, if any. Interpreted as Markdown.

`string`

---

#### `isOverlay`

Indicates that the implementation of the type should not be generated from the schema, and is instead provided out-of-band by the package author

`boolean`

---

#### `language`

Additional language-specific data about the type.

`object`

---

## Type Reference

A reference to a type. The particular kind of type referenced is determined based on the contents of the "type" property and the presence or absence of the "additionalProperties", "items", "oneOf", and "$ref" properties.

`object`

One of:

### Properties

---

#### `plain`

Indicates that when used as an input, this type does not accept eventual values.

`boolean`

---

## Union Type

A reference to a union type. The "oneOf" property must be present. The union may additional specify an underlying primitive type via the "type" property and a discriminator via the "discriminator" property. No other properties may be present.

`object`

### Properties

---

#### `discriminator`

Informs the consumer of an alternative schema based on the value associated with it

`object`

##### Properties

---

###### `mapping`

An optional object to hold mappings between payload values and schema names or references

`object`

Additional properties: `string`

---

###### `propertyName` (_required_)

PropertyName is the name of the property in the payload that will hold the discriminator value

`string`

---

---

#### `oneOf` (_required_)

If present, indicates that values of the type may be one of any of the listed types

`array`

Items: [Type Reference](#type-reference)

---

#### `type`

The underlying primitive type of the union, if any

`string`

Enum: `"boolean"` | `"integer"` | `"number"` | `"string"`

---

## `https://github.com/pulumi/pulumi/blob/master/pkg/codegen/schema/pulumi.json#/$defs/parameterization`

`object`

### Properties

---

#### `baseProvider`

`object`

##### Properties

---

###### `name` (_required_)

The unqualified name of the package (e.g. "aws", "azure", "gcp", "kubernetes", "random")

`string`

Pattern: `^[a-zA-Z][-a-zA-Z0-9_]*$`

---

###### `version` (_required_)

The version of the package. The version must be valid semver.

`string`

Pattern: `^v?(?<major>0|[1-9]\d*)\.(?<minor>0|[1-9]\d*)\.(?<patch>0|[1-9]\d*)(?:-(?<prerelease>(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+(?<buildmetadata>[0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$`

---

---

#### `parameter`

The parameter for the provider.

`string`

---

## `https://github.com/pulumi/pulumi/blob/master/pkg/codegen/schema/pulumi.json#/properties/dependencies/items`

`object`

### Properties

---

#### `name` (_required_)

The unqualified name of the package (e.g. "aws", "azure", "gcp", "kubernetes", "random")

`string`

Pattern: `^[a-zA-Z][-a-zA-Z0-9_]*$`

---

#### `parameterization`

An optional object to define parameterization for the package.

`object`

##### Properties

---

###### `name` (_required_)

The unqualified name of the package (e.g. "aws", "azure", "gcp", "kubernetes", "random")

`string`

Pattern: `^[a-zA-Z][-a-zA-Z0-9_]*$`

---

###### `value` (_required_)

The parameter value for the provider.

`string`

---

###### `version` (_required_)

The version of the package. The version must be valid semver.

`string`

Pattern: `^v?(?<major>0|[1-9]\d*)\.(?<minor>0|[1-9]\d*)\.(?<patch>0|[1-9]\d*)(?:-(?<prerelease>(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+(?<buildmetadata>[0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$`

---

---

#### `pluginDownloadURL`

The optional URL to use when downloading the provider plugin binary.

`string`

---

#### `version`

The version of the package. The version must be valid semver if present.

`string`

Pattern: `^v?(?<major>0|[1-9]\d*)\.(?<minor>0|[1-9]\d*)\.(?<patch>0|[1-9]\d*)(?:-(?<prerelease>(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+(?<buildmetadata>[0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$`

---
