{
  "name": "commercetools",
  "version": "1.21.1",
  "description": "A Pulumi provider dynamically bridged from commercetools.",
  "attribution": "This Pulumi package is based on the [`commercetools` Terraform Provider](https://github.com/labd/terraform-provider-commercetools).",
  "repository": "https://github.com/labd/terraform-provider-commercetools",
  "publisher": "labd",
  "meta": {
    "moduleFormat": "(.*)(?:/[^/]*)"
  },
  "language": {
    "csharp": {
      "compatibility": "tfbridge20",
      "liftSingleValueMethodReturns": true,
      "respectSchemaVersion": true
    },
    "go": {
      "generateExtraInputTypes": true,
      "importBasePath": "github.com/pulumi/pulumi-terraform-provider/sdks/go/commercetools/commercetools",
      "liftSingleValueMethodReturns": true,
      "respectSchemaVersion": true,
      "rootPackageName": "commercetools"
    },
    "java": {
      "basePackage": "",
      "buildFiles": "",
      "gradleNexusPublishPluginVersion": "",
      "gradleTest": ""
    },
    "nodejs": {
      "compatibility": "tfbridge20",
      "disableUnionOutputTypes": true,
      "liftSingleValueMethodReturns": true,
      "packageDescription": "A Pulumi provider dynamically bridged from commercetools.",
      "readme": "> This provider is a derived work of the [Terraform Provider](https://github.com/labd/terraform-provider-commercetools)\n> distributed under [MPL 2.0](https://www.mozilla.org/en-US/MPL/2.0/). If you encounter a bug or missing feature,\n> please consult the source [`terraform-provider-commercetools` repo](https://github.com/labd/terraform-provider-commercetools/issues).",
      "respectSchemaVersion": true
    },
    "python": {
      "compatibility": "tfbridge20",
      "pyproject": {
        "enabled": true
      },
      "readme": "> This provider is a derived work of the [Terraform Provider](https://github.com/labd/terraform-provider-commercetools)\n> distributed under [MPL 2.0](https://www.mozilla.org/en-US/MPL/2.0/). If you encounter a bug or missing feature,\n> please consult the source [`terraform-provider-commercetools` repo](https://github.com/labd/terraform-provider-commercetools/issues).",
      "respectSchemaVersion": true
    }
  },
  "config": {
    "variables": {
      "apiUrl": {
        "type": "string",
        "description": "The API URL of the commercetools platform. https://docs.commercetools.com/api/general-concepts#hosts\n"
      },
      "clientId": {
        "type": "string",
        "description": "The OAuth Client ID for a commercetools platform project. https://docs.commercetools.com/api/authorization\n",
        "secret": true
      },
      "clientSecret": {
        "type": "string",
        "description": "The OAuth Client Secret for a commercetools platform project. https://docs.commercetools.com/api/authorization\n",
        "secret": true
      },
      "projectKey": {
        "type": "string",
        "description": "The project key of commercetools platform project. https://docs.commercetools.com/getting-started\n",
        "secret": true
      },
      "scopes": {
        "type": "string",
        "description": "A list as string of OAuth scopes assigned to a project key, to access resources in a commercetools platform project.\nhttps://docs.commercetools.com/api/authorization\n"
      },
      "tokenUrl": {
        "type": "string",
        "description": "The authentication URL of the commercetools platform. https://docs.commercetools.com/api/authorization\n"
      }
    }
  },
  "types": {
    "commercetools:index/ApiExtensionDestination:ApiExtensionDestination": {
      "properties": {
        "accessKey": {
          "type": "string"
        },
        "accessSecret": {
          "type": "string",
          "secret": true
        },
        "arn": {
          "type": "string"
        },
        "authorizationHeader": {
          "type": "string"
        },
        "azureAuthentication": {
          "type": "string"
        },
        "type": {
          "type": "string"
        },
        "url": {
          "type": "string"
        }
      },
      "type": "object",
      "required": [
        "type"
      ]
    },
    "commercetools:index/ApiExtensionTrigger:ApiExtensionTrigger": {
      "properties": {
        "actions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Currently, Create and Update are supported\n"
        },
        "condition": {
          "type": "string",
          "description": "Valid predicate that controls the conditions under which the API Extension is called.\n"
        },
        "resourceTypeId": {
          "type": "string",
          "description": "Currently, cart, order, payment, and customer are supported\n"
        }
      },
      "type": "object",
      "required": [
        "actions",
        "resourceTypeId"
      ]
    },
    "commercetools:index/AssociateRoleCustom:AssociateRoleCustom": {
      "properties": {
        "fields": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "CustomValue fields for this resource. Note that the values need to be provided as JSON encoded strings: `my-value = jsonencode({\"key\": \"value\"})`\n"
        },
        "typeId": {
          "type": "string",
          "description": "The ID of the custom type to use for this resource.\n"
        }
      },
      "type": "object"
    },
    "commercetools:index/AttributeGroupAttribute:AttributeGroupAttribute": {
      "properties": {
        "key": {
          "type": "string",
          "description": "The Attribute's name as given in its AttributeDefinition.\n"
        }
      },
      "type": "object",
      "required": [
        "key"
      ]
    },
    "commercetools:index/BusinessUnitCompanyAddress:BusinessUnitCompanyAddress": {
      "properties": {
        "additionalAddressInfo": {
          "type": "string",
          "description": "Further information on the Address\n"
        },
        "additionalStreetInfo": {
          "type": "string",
          "description": "Further information on the street address\n"
        },
        "apartment": {
          "type": "string",
          "description": "Name or number of the apartment\n"
        },
        "building": {
          "type": "string",
          "description": "Name or number of the building\n"
        },
        "city": {
          "type": "string",
          "description": "Name of the city\n"
        },
        "company": {
          "type": "string",
          "description": "Name of the company\n"
        },
        "country": {
          "type": "string",
          "description": "Name of the country\n"
        },
        "department": {
          "type": "string",
          "description": "Name of the department\n"
        },
        "email": {
          "type": "string",
          "description": "Email address\n"
        },
        "externalId": {
          "type": "string",
          "description": "ID for the contact used in an external system\n"
        },
        "fax": {
          "type": "string",
          "description": "Fax number\n"
        },
        "firstName": {
          "type": "string",
          "description": "First name of the contact\n"
        },
        "id": {
          "type": "string",
          "description": "Unique identifier of the Address\n"
        },
        "key": {
          "type": "string",
          "description": "User-defined identifier of the Address that must be unique when multiple addresses are referenced in BusinessUnits, Customers, and itemShippingAddresses (LineItem-specific addresses) of a Cart, Order, QuoteRequest, or Quote.\n"
        },
        "lastName": {
          "type": "string",
          "description": "Last name of the contact\n"
        },
        "mobile": {
          "type": "string",
          "description": "Mobile phone number\n"
        },
        "phone": {
          "type": "string",
          "description": "Phone number\n"
        },
        "poBox": {
          "type": "string",
          "description": "Post office box number\n"
        },
        "postalCode": {
          "type": "string",
          "description": "Postal code\n"
        },
        "region": {
          "type": "string",
          "description": "Name of the region\n"
        },
        "salutation": {
          "type": "string",
          "description": "Salutation of the contact, for example Ms., Mr.\n"
        },
        "state": {
          "type": "string",
          "description": "Name of the state\n"
        },
        "streetName": {
          "type": "string",
          "description": "Name of the street\n"
        },
        "streetNumber": {
          "type": "string",
          "description": "Street number\n"
        },
        "title": {
          "type": "string",
          "description": "Title of the contact, for example Dr., Prof.\n"
        }
      },
      "type": "object",
      "required": [
        "country",
        "key"
      ],
      "language": {
        "nodejs": {
          "requiredOutputs": [
            "country",
            "id",
            "key"
          ]
        }
      }
    },
    "commercetools:index/BusinessUnitCompanyCustom:BusinessUnitCompanyCustom": {
      "properties": {
        "fields": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "CustomValue fields for this resource. Note that the values need to be provided as JSON encoded strings: `my-value = jsonencode({\"key\": \"value\"})`\n"
        },
        "typeId": {
          "type": "string",
          "description": "The ID of the custom type to use for this resource.\n"
        }
      },
      "type": "object"
    },
    "commercetools:index/BusinessUnitCompanyStore:BusinessUnitCompanyStore": {
      "properties": {
        "key": {
          "type": "string",
          "description": "User-defined unique identifier of the Store\n"
        }
      },
      "type": "object"
    },
    "commercetools:index/BusinessUnitDivisionAddress:BusinessUnitDivisionAddress": {
      "properties": {
        "additionalAddressInfo": {
          "type": "string",
          "description": "Further information on the Address\n"
        },
        "additionalStreetInfo": {
          "type": "string",
          "description": "Further information on the street address\n"
        },
        "apartment": {
          "type": "string",
          "description": "Name or number of the apartment\n"
        },
        "building": {
          "type": "string",
          "description": "Name or number of the building\n"
        },
        "city": {
          "type": "string",
          "description": "Name of the city\n"
        },
        "company": {
          "type": "string",
          "description": "Name of the company\n"
        },
        "country": {
          "type": "string",
          "description": "Name of the country\n"
        },
        "department": {
          "type": "string",
          "description": "Name of the department\n"
        },
        "email": {
          "type": "string",
          "description": "Email address\n"
        },
        "externalId": {
          "type": "string",
          "description": "ID for the contact used in an external system\n"
        },
        "fax": {
          "type": "string",
          "description": "Fax number\n"
        },
        "firstName": {
          "type": "string",
          "description": "First name of the contact\n"
        },
        "id": {
          "type": "string",
          "description": "Unique identifier of the Address\n"
        },
        "key": {
          "type": "string",
          "description": "User-defined identifier of the Address that must be unique when multiple addresses are referenced in BusinessUnits, Customers, and itemShippingAddresses (LineItem-specific addresses) of a Cart, Order, QuoteRequest, or Quote.\n"
        },
        "lastName": {
          "type": "string",
          "description": "Last name of the contact\n"
        },
        "mobile": {
          "type": "string",
          "description": "Mobile phone number\n"
        },
        "phone": {
          "type": "string",
          "description": "Phone number\n"
        },
        "poBox": {
          "type": "string",
          "description": "Post office box number\n"
        },
        "postalCode": {
          "type": "string",
          "description": "Postal code\n"
        },
        "region": {
          "type": "string",
          "description": "Name of the region\n"
        },
        "salutation": {
          "type": "string",
          "description": "Salutation of the contact, for example Ms., Mr.\n"
        },
        "state": {
          "type": "string",
          "description": "Name of the state\n"
        },
        "streetName": {
          "type": "string",
          "description": "Name of the street\n"
        },
        "streetNumber": {
          "type": "string",
          "description": "Street number\n"
        },
        "title": {
          "type": "string",
          "description": "Title of the contact, for example Dr., Prof.\n"
        }
      },
      "type": "object",
      "required": [
        "country",
        "key"
      ],
      "language": {
        "nodejs": {
          "requiredOutputs": [
            "country",
            "id",
            "key"
          ]
        }
      }
    },
    "commercetools:index/BusinessUnitDivisionCustom:BusinessUnitDivisionCustom": {
      "properties": {
        "fields": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "CustomValue fields for this resource. Note that the values need to be provided as JSON encoded strings: `my-value = jsonencode({\"key\": \"value\"})`\n"
        },
        "typeId": {
          "type": "string",
          "description": "The ID of the custom type to use for this resource.\n"
        }
      },
      "type": "object"
    },
    "commercetools:index/BusinessUnitDivisionParentUnit:BusinessUnitDivisionParentUnit": {
      "properties": {
        "id": {
          "type": "string",
          "description": "User-defined unique identifier of the business unit\n"
        },
        "key": {
          "type": "string",
          "description": "User-defined unique key of the business unit\n"
        }
      },
      "type": "object"
    },
    "commercetools:index/BusinessUnitDivisionStore:BusinessUnitDivisionStore": {
      "properties": {
        "key": {
          "type": "string",
          "description": "User-defined unique identifier of the Store\n"
        }
      },
      "type": "object"
    },
    "commercetools:index/CartDiscountCustom:CartDiscountCustom": {
      "properties": {
        "fields": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Custom fields for this resource. Note that the values need to be provided as JSON encoded strings: `my-value = jsonencode({\"key\": \"value\"})`\n"
        },
        "typeId": {
          "type": "string"
        }
      },
      "type": "object",
      "required": [
        "typeId"
      ]
    },
    "commercetools:index/CartDiscountTarget:CartDiscountTarget": {
      "properties": {
        "discountedQuantity": {
          "type": "number",
          "description": "MultiBuyLineItems or MultiBuyCustomLineItems target specific fields. If set for another target the value will be ignored\n"
        },
        "maxOccurrence": {
          "type": "number",
          "description": "MultiBuyLineItems or MultiBuyCustomLineItems target specific fields. If set for another target the value will be ignored\n"
        },
        "predicate": {
          "type": "string",
          "description": "LineItems, CustomLineItems, MultiBuyLineItems or MultiBuyCustomLineItems target specific fields. If set for another target the value will be ignored\n"
        },
        "selectionMode": {
          "type": "string",
          "description": "MultiBuyLineItems or MultiBuyCustomLineItems target specific fields. Can be either Cheapest or MostExpensive. If set for another target the value will be ignored\n"
        },
        "triggerQuantity": {
          "type": "number",
          "description": "MultiBuyLineItems or MultiBuyCustomLineItems target specific fields. If set for another target the value will be ignored\n"
        },
        "type": {
          "type": "string",
          "description": "Supports lineItems, customLineItems, multiBuyLineItems, multiBuyCustomLineItems, shipping or totalPrice\n"
        }
      },
      "type": "object",
      "required": [
        "type"
      ]
    },
    "commercetools:index/CartDiscountValue:CartDiscountValue": {
      "properties": {
        "distributionChannelId": {
          "type": "string",
          "description": "Channel must have the role ProductDistribution. Optional when value type is giftLineItem\n"
        },
        "monies": {
          "type": "array",
          "items": {
            "$ref": "#/types/commercetools:index%2FCartDiscountValueMoney:CartDiscountValueMoney"
          },
          "description": "Absolute discount specific fields\n"
        },
        "permyriad": {
          "type": "number",
          "description": "Relative discount specific fields\n"
        },
        "productId": {
          "type": "string",
          "description": "ResourceIdentifier of a Product. Required when value type is giftLineItem\n"
        },
        "supplyChannelId": {
          "type": "string",
          "description": "Channel must have the role InventorySupply. Optional when value type is giftLineItem\n"
        },
        "type": {
          "type": "string",
          "description": "Currently supports absolute/relative/giftLineItem\n"
        },
        "variantId": {
          "type": "number",
          "description": "ProductVariant of the Product. Required when value type is giftLineItem\n"
        }
      },
      "type": "object",
      "required": [
        "type"
      ]
    },
    "commercetools:index/CartDiscountValueMoney:CartDiscountValueMoney": {
      "properties": {
        "centAmount": {
          "type": "number",
          "description": "The amount in cents (the smallest indivisible unit of the currency)\n"
        },
        "currencyCode": {
          "type": "string",
          "description": "The currency code compliant to [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217)\n"
        }
      },
      "type": "object",
      "required": [
        "centAmount",
        "currencyCode"
      ]
    },
    "commercetools:index/CategoryAsset:CategoryAsset": {
      "properties": {
        "description": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "id": {
          "type": "string"
        },
        "key": {
          "type": "string",
          "description": "Optional User-defined identifier for the asset. Asset keys are unique inside their container (in this case the category)\n"
        },
        "name": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "sources": {
          "type": "array",
          "items": {
            "$ref": "#/types/commercetools:index%2FCategoryAssetSource:CategoryAssetSource"
          },
          "description": "Array of AssetSource, Has at least one entry\n"
        },
        "tags": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "type": "object",
      "required": [
        "name"
      ],
      "language": {
        "nodejs": {
          "requiredOutputs": [
            "id",
            "name"
          ]
        }
      }
    },
    "commercetools:index/CategoryAssetSource:CategoryAssetSource": {
      "properties": {
        "contentType": {
          "type": "string"
        },
        "dimensions": {
          "$ref": "#/types/commercetools:index%2FCategoryAssetSourceDimensions:CategoryAssetSourceDimensions"
        },
        "key": {
          "type": "string",
          "description": "Unique identifier, must be unique within the Asset\n"
        },
        "uri": {
          "type": "string"
        }
      },
      "type": "object",
      "required": [
        "uri"
      ]
    },
    "commercetools:index/CategoryAssetSourceDimensions:CategoryAssetSourceDimensions": {
      "properties": {
        "h": {
          "type": "number",
          "description": "The height of the asset source\n"
        },
        "w": {
          "type": "number",
          "description": "The width of the asset source\n"
        }
      },
      "type": "object",
      "required": [
        "h",
        "w"
      ]
    },
    "commercetools:index/CategoryCustom:CategoryCustom": {
      "properties": {
        "fields": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Custom fields for this resource. Note that the values need to be provided as JSON encoded strings: `my-value = jsonencode({\"key\": \"value\"})`\n"
        },
        "typeId": {
          "type": "string"
        }
      },
      "type": "object",
      "required": [
        "typeId"
      ]
    },
    "commercetools:index/ChannelAddress:ChannelAddress": {
      "properties": {
        "additionalAddressInfo": {
          "type": "string"
        },
        "additionalStreetInfo": {
          "type": "string"
        },
        "apartment": {
          "type": "string"
        },
        "building": {
          "type": "string"
        },
        "city": {
          "type": "string"
        },
        "company": {
          "type": "string"
        },
        "country": {
          "type": "string"
        },
        "department": {
          "type": "string"
        },
        "email": {
          "type": "string"
        },
        "externalId": {
          "type": "string"
        },
        "fax": {
          "type": "string"
        },
        "firstName": {
          "type": "string"
        },
        "id": {
          "type": "string"
        },
        "key": {
          "type": "string"
        },
        "lastName": {
          "type": "string"
        },
        "mobile": {
          "type": "string"
        },
        "phone": {
          "type": "string"
        },
        "poBox": {
          "type": "string"
        },
        "postalCode": {
          "type": "string"
        },
        "region": {
          "type": "string"
        },
        "salutation": {
          "type": "string"
        },
        "state": {
          "type": "string"
        },
        "streetName": {
          "type": "string"
        },
        "streetNumber": {
          "type": "string"
        },
        "title": {
          "type": "string"
        }
      },
      "type": "object",
      "required": [
        "country"
      ],
      "language": {
        "nodejs": {
          "requiredOutputs": [
            "country",
            "id"
          ]
        }
      }
    },
    "commercetools:index/ChannelCustom:ChannelCustom": {
      "properties": {
        "fields": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Custom fields for this resource. Note that the values need to be provided as JSON encoded strings: `my-value = jsonencode({\"key\": \"value\"})`\n"
        },
        "typeId": {
          "type": "string"
        }
      },
      "type": "object",
      "required": [
        "typeId"
      ]
    },
    "commercetools:index/ChannelGeolocation:ChannelGeolocation": {
      "properties": {
        "coordinates": {
          "type": "array",
          "items": {
            "type": "number"
          }
        }
      },
      "type": "object",
      "required": [
        "coordinates"
      ]
    },
    "commercetools:index/CustomerGroupCustom:CustomerGroupCustom": {
      "properties": {
        "fields": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Custom fields for this resource. Note that the values need to be provided as JSON encoded strings: `my-value = jsonencode({\"key\": \"value\"})`\n"
        },
        "typeId": {
          "type": "string"
        }
      },
      "type": "object",
      "required": [
        "typeId"
      ]
    },
    "commercetools:index/DiscountCodeCustom:DiscountCodeCustom": {
      "properties": {
        "fields": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Custom fields for this resource. Note that the values need to be provided as JSON encoded strings: `my-value = jsonencode({\"key\": \"value\"})`\n"
        },
        "typeId": {
          "type": "string"
        }
      },
      "type": "object",
      "required": [
        "typeId"
      ]
    },
    "commercetools:index/ProductDiscountValue:ProductDiscountValue": {
      "properties": {
        "monies": {
          "type": "array",
          "items": {
            "$ref": "#/types/commercetools:index%2FProductDiscountValueMoney:ProductDiscountValueMoney"
          },
          "description": "Absolute discount specific fields\n"
        },
        "permyriad": {
          "type": "number",
          "description": "Relative discount specific fields\n"
        },
        "type": {
          "type": "string",
          "description": "Currently supports absolute/relative/external\n"
        }
      },
      "type": "object",
      "required": [
        "type"
      ]
    },
    "commercetools:index/ProductDiscountValueMoney:ProductDiscountValueMoney": {
      "properties": {
        "centAmount": {
          "type": "number",
          "description": "The amount in cents (the smallest indivisible unit of the currency)\n"
        },
        "currencyCode": {
          "type": "string",
          "description": "The currency code compliant to [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217)\n"
        },
        "fractionDigits": {
          "type": "number",
          "description": "The number of default fraction digits for the given currency, like 2 for EUR or 0 for JPY\n"
        }
      },
      "type": "object",
      "required": [
        "centAmount",
        "currencyCode"
      ],
      "language": {
        "nodejs": {
          "requiredOutputs": [
            "centAmount",
            "currencyCode",
            "fractionDigits"
          ]
        }
      }
    },
    "commercetools:index/ProductSelectionCustom:ProductSelectionCustom": {
      "properties": {
        "fields": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "CustomValue fields for this resource. Note that the values need to be provided as JSON encoded strings: `my-value = jsonencode({\"key\": \"value\"})`\n"
        },
        "typeId": {
          "type": "string",
          "description": "The ID of the custom type to use for this resource.\n"
        }
      },
      "type": "object"
    },
    "commercetools:index/ProductTypeAttribute:ProductTypeAttribute": {
      "properties": {
        "constraint": {
          "type": "string",
          "description": "Describes how an attribute or a set of attributes should be validated across all variants of a product. See also [Attribute Constraint](https://docs.commercetools.com/api/projects/productTypes#attributeconstraint-enum)\n"
        },
        "inputHint": {
          "type": "string",
          "description": "Provides a visual representation type for this attribute. only relevant for text-based attribute types like TextType and LocalizableTextType\n"
        },
        "inputTip": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Additional information about the attribute that aids content managers when setting product details\n"
        },
        "label": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "A human-readable label for the attribute\n"
        },
        "level": {
          "type": "string",
          "description": "Specifies whether the Attribute is defined at the Product or Variant level.\n"
        },
        "name": {
          "type": "string",
          "description": "The unique name of the attribute used in the API. The name must be between two and 256 characters long and can contain the ASCII letters A to Z in lowercase or uppercase, digits, underscores (_) and the hyphen-minus (-).\nWhen using the same name for an attribute in two or more product types all fields of the AttributeDefinition of this attribute need to be the same across the product types, otherwise an AttributeDefinitionAlreadyExists error code will be returned. An exception to this are the values of an enum or lenum type and sets thereof\n"
        },
        "required": {
          "type": "boolean",
          "description": "Whether the attribute is required to have a value\n"
        },
        "searchable": {
          "type": "boolean",
          "description": "Whether the attribute's values should generally be activated in product search\n"
        },
        "type": {
          "$ref": "#/types/commercetools:index%2FProductTypeAttributeType:ProductTypeAttributeType",
          "description": "[AttributeType](https://docs.commercetools.com/api/projects/productTypes#attributetype)\n"
        }
      },
      "type": "object",
      "required": [
        "label",
        "name",
        "type"
      ]
    },
    "commercetools:index/ProductTypeAttributeType:ProductTypeAttributeType": {
      "properties": {
        "elementType": {
          "$ref": "#/types/commercetools:index%2FProductTypeAttributeTypeElementType:ProductTypeAttributeTypeElementType"
        },
        "localizedValues": {
          "type": "array",
          "items": {
            "$ref": "#/types/commercetools:index%2FProductTypeAttributeTypeLocalizedValue:ProductTypeAttributeTypeLocalizedValue"
          },
          "description": "Localized values for the `lenum` type.\n"
        },
        "name": {
          "type": "string",
          "description": "Name of the field type. Some types require extra fields to be set. Note that changing the type after creating is not supported. You need to delete the attribute and re-add it\n"
        },
        "referenceTypeId": {
          "type": "string",
          "description": "Resource type the Custom Field can reference. Required when type is `reference`\n"
        },
        "typeReference": {
          "type": "string",
          "description": "Reference to another product type. Required when type is `nested`.\n"
        },
        "values": {
          "type": "array",
          "items": {
            "$ref": "#/types/commercetools:index%2FProductTypeAttributeTypeValue:ProductTypeAttributeTypeValue"
          },
          "description": "Values for the `enum` type.\n"
        }
      },
      "type": "object",
      "required": [
        "name"
      ]
    },
    "commercetools:index/ProductTypeAttributeTypeElementType:ProductTypeAttributeTypeElementType": {
      "properties": {
        "localizedValues": {
          "type": "array",
          "items": {
            "$ref": "#/types/commercetools:index%2FProductTypeAttributeTypeElementTypeLocalizedValue:ProductTypeAttributeTypeElementTypeLocalizedValue"
          },
          "description": "Localized values for the `lenum` type.\n"
        },
        "name": {
          "type": "string",
          "description": "Name of the field type. Some types require extra fields to be set. Note that changing the type after creating is not supported. You need to delete the attribute and re-add it\n"
        },
        "referenceTypeId": {
          "type": "string",
          "description": "Resource type the Custom Field can reference. Required when type is `reference`\n"
        },
        "typeReference": {
          "type": "string",
          "description": "Reference to another product type. Required when type is `nested`.\n"
        },
        "values": {
          "type": "array",
          "items": {
            "$ref": "#/types/commercetools:index%2FProductTypeAttributeTypeElementTypeValue:ProductTypeAttributeTypeElementTypeValue"
          },
          "description": "Values for the `enum` type.\n"
        }
      },
      "type": "object",
      "required": [
        "name"
      ]
    },
    "commercetools:index/ProductTypeAttributeTypeElementTypeLocalizedValue:ProductTypeAttributeTypeElementTypeLocalizedValue": {
      "properties": {
        "key": {
          "type": "string"
        },
        "label": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        }
      },
      "type": "object",
      "required": [
        "key",
        "label"
      ]
    },
    "commercetools:index/ProductTypeAttributeTypeElementTypeValue:ProductTypeAttributeTypeElementTypeValue": {
      "properties": {
        "key": {
          "type": "string"
        },
        "label": {
          "type": "string"
        }
      },
      "type": "object",
      "required": [
        "key",
        "label"
      ]
    },
    "commercetools:index/ProductTypeAttributeTypeLocalizedValue:ProductTypeAttributeTypeLocalizedValue": {
      "properties": {
        "key": {
          "type": "string"
        },
        "label": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        }
      },
      "type": "object",
      "required": [
        "key",
        "label"
      ]
    },
    "commercetools:index/ProductTypeAttributeTypeValue:ProductTypeAttributeTypeValue": {
      "properties": {
        "key": {
          "type": "string"
        },
        "label": {
          "type": "string"
        }
      },
      "type": "object",
      "required": [
        "key",
        "label"
      ]
    },
    "commercetools:index/ProjectSettingsBusinessUnit:ProjectSettingsBusinessUnit": {
      "properties": {
        "myBusinessUnitAssociateRoleKeyOnCreation": {
          "type": "string",
          "description": "Default Associate Role assigned to the Associate creating a Business Unit using the My Business Unit endpoint. Note that this field cannot be unset once assigned!\n"
        },
        "myBusinessUnitStatusOnCreation": {
          "type": "string",
          "description": "Status of Business Units created using the My Business Unit endpoint.\n"
        }
      },
      "type": "object",
      "language": {
        "nodejs": {
          "requiredOutputs": [
            "myBusinessUnitStatusOnCreation"
          ]
        }
      }
    },
    "commercetools:index/ProjectSettingsCart:ProjectSettingsCart": {
      "properties": {
        "countryTaxRateFallbackEnabled": {
          "type": "boolean",
          "description": "Indicates if country - no state tax rate fallback should be used when a shipping address state is not explicitly covered in the rates lists of all tax categories of a cart line items\n"
        },
        "deleteDaysAfterLastModification": {
          "type": "number",
          "description": "Number - Optional The default value for the deleteDaysAfterLastModification parameter of the CartDraft. Initially set to 90 for projects created after December 2019.\n"
        },
        "priceRoundingMode": {
          "type": "string",
          "description": "Default value for the priceRoundingMode parameter of the CartDraft. Indicates how the total prices on LineItems and CustomLineItems are rounded when calculated.\n"
        },
        "taxRoundingMode": {
          "type": "string",
          "description": "Default value for the taxRoundingMode parameter of the CartDraft. Indicates how monetary values are rounded when calculating taxes for taxedPrice.\n"
        }
      },
      "type": "object",
      "language": {
        "nodejs": {
          "requiredOutputs": [
            "countryTaxRateFallbackEnabled",
            "deleteDaysAfterLastModification",
            "priceRoundingMode",
            "taxRoundingMode"
          ]
        }
      }
    },
    "commercetools:index/ProjectSettingsExternalOauth:ProjectSettingsExternalOauth": {
      "properties": {
        "authorizationHeader": {
          "type": "string",
          "description": "Partially hidden on retrieval\n"
        },
        "url": {
          "type": "string",
          "secret": true
        }
      },
      "type": "object"
    },
    "commercetools:index/ProjectSettingsMessage:ProjectSettingsMessage": {
      "properties": {
        "deleteDaysAfterCreation": {
          "type": "number",
          "description": "Specifies the number of days each Message should be available via the Messages Query API\n"
        },
        "enabled": {
          "type": "boolean",
          "description": "When true the creation of messages on the Messages Query HTTP API is enabled\n"
        }
      },
      "type": "object"
    },
    "commercetools:index/ProjectSettingsShippingRateCartClassificationValue:ProjectSettingsShippingRateCartClassificationValue": {
      "properties": {
        "key": {
          "type": "string"
        },
        "label": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        }
      },
      "type": "object",
      "required": [
        "key"
      ]
    },
    "commercetools:index/ProjectSettingsShoppingList:ProjectSettingsShoppingList": {
      "properties": {
        "deleteDaysAfterLastModification": {
          "type": "number",
          "description": "Number - Optional The default value for the deleteDaysAfterLastModification parameter of the CartDraft. Initially set to 90 for projects created after December 2019.\n"
        }
      },
      "type": "object",
      "language": {
        "nodejs": {
          "requiredOutputs": [
            "deleteDaysAfterLastModification"
          ]
        }
      }
    },
    "commercetools:index/ShippingMethodCustom:ShippingMethodCustom": {
      "properties": {
        "fields": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Custom fields for this resource. Note that the values need to be provided as JSON encoded strings: `my-value = jsonencode({\"key\": \"value\"})`\n"
        },
        "typeId": {
          "type": "string"
        }
      },
      "type": "object",
      "required": [
        "typeId"
      ]
    },
    "commercetools:index/ShippingZoneLocation:ShippingZoneLocation": {
      "properties": {
        "country": {
          "type": "string",
          "description": "A two-digit country code as per [ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)\n"
        },
        "state": {
          "type": "string"
        }
      },
      "type": "object",
      "required": [
        "country"
      ]
    },
    "commercetools:index/ShippingZoneRateFreeAbove:ShippingZoneRateFreeAbove": {
      "properties": {
        "centAmount": {
          "type": "number",
          "description": "The amount in cents (the smallest indivisible unit of the currency)\n"
        },
        "currencyCode": {
          "type": "string",
          "description": "The currency code compliant to [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217)\n"
        }
      },
      "type": "object",
      "required": [
        "centAmount",
        "currencyCode"
      ]
    },
    "commercetools:index/ShippingZoneRatePrice:ShippingZoneRatePrice": {
      "properties": {
        "centAmount": {
          "type": "number"
        },
        "currencyCode": {
          "type": "string"
        }
      },
      "type": "object",
      "required": [
        "centAmount",
        "currencyCode"
      ]
    },
    "commercetools:index/ShippingZoneRateShippingRatePriceTier:ShippingZoneRateShippingRatePriceTier": {
      "properties": {
        "minimumCentAmount": {
          "type": "number",
          "description": "If type is CartValue this represents the cent amount of the tier\n"
        },
        "price": {
          "$ref": "#/types/commercetools:index%2FShippingZoneRateShippingRatePriceTierPrice:ShippingZoneRateShippingRatePriceTierPrice",
          "description": "The price of the score, value or minimum*cent*amount tier\n"
        },
        "priceFunction": {
          "$ref": "#/types/commercetools:index%2FShippingZoneRateShippingRatePriceTierPriceFunction:ShippingZoneRateShippingRatePriceTierPriceFunction",
          "description": "If type is CartScore. Allows to calculate a price dynamically for the score.\n"
        },
        "score": {
          "type": "number",
          "description": "If type is CartScore. Sets a fixed price for this score value\n"
        },
        "type": {
          "type": "string",
          "description": "CartValue, CartScore or CartClassification\n"
        },
        "value": {
          "type": "string",
          "description": "If type is CartClassification, must be a valid key of the CartClassification\n"
        }
      },
      "type": "object",
      "required": [
        "type"
      ]
    },
    "commercetools:index/ShippingZoneRateShippingRatePriceTierPrice:ShippingZoneRateShippingRatePriceTierPrice": {
      "properties": {
        "centAmount": {
          "type": "number"
        },
        "currencyCode": {
          "type": "string"
        }
      },
      "type": "object",
      "required": [
        "centAmount",
        "currencyCode"
      ]
    },
    "commercetools:index/ShippingZoneRateShippingRatePriceTierPriceFunction:ShippingZoneRateShippingRatePriceTierPriceFunction": {
      "properties": {
        "currencyCode": {
          "type": "string"
        },
        "function": {
          "type": "string"
        }
      },
      "type": "object",
      "required": [
        "currencyCode",
        "function"
      ]
    },
    "commercetools:index/StoreCustom:StoreCustom": {
      "properties": {
        "fields": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Custom fields for this resource. Note that the values need to be provided as JSON encoded strings: `my-value = jsonencode({\"key\": \"value\"})`\n"
        },
        "typeId": {
          "type": "string"
        }
      },
      "type": "object",
      "required": [
        "typeId"
      ]
    },
    "commercetools:index/StoreProductSelection:StoreProductSelection": {
      "properties": {
        "active": {
          "type": "boolean",
          "description": "If true, all Products assigned to this Product Selection are part of the Store's assortment\n"
        },
        "productSelectionId": {
          "type": "string",
          "description": "Resource Identifier of a ProductSelection\n"
        }
      },
      "type": "object",
      "required": [
        "active",
        "productSelectionId"
      ]
    },
    "commercetools:index/SubscriptionChange:SubscriptionChange": {
      "properties": {
        "resourceTypeIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "[Resource Type ID](https://docs.commercetools.com/api/projects/subscriptions#changesubscription)\n"
        }
      },
      "type": "object",
      "required": [
        "resourceTypeIds"
      ]
    },
    "commercetools:index/SubscriptionDestination:SubscriptionDestination": {
      "properties": {
        "accessKey": {
          "type": "string",
          "description": "The access key of the SQS queue, SNS topic or EventBridge topic\n",
          "secret": true
        },
        "accessSecret": {
          "type": "string",
          "description": "The access secret of the SQS queue, SNS topic or EventBridge topic\n",
          "secret": true
        },
        "accountId": {
          "type": "string",
          "description": "The AWS account ID of the SNS topic or EventBridge topic\n"
        },
        "acks": {
          "type": "string",
          "description": "The acks value of the Confluent Cloud topic\n"
        },
        "apiKey": {
          "type": "string",
          "description": "The API key of the Confluent Cloud topic\n"
        },
        "apiSecret": {
          "type": "string",
          "description": "The API secret of the Confluent Cloud topic\n"
        },
        "bootstrapServer": {
          "type": "string",
          "description": "The bootstrap server of the Confluent Cloud topic\n"
        },
        "connectionString": {
          "type": "string",
          "description": "The connection string of the Azure Service Bus\n"
        },
        "key": {
          "type": "string",
          "description": "The key of the Confluent Cloud topic\n"
        },
        "projectId": {
          "type": "string",
          "description": "The project ID of the Google Cloud Pub/Sub\n"
        },
        "queueUrl": {
          "type": "string",
          "description": "The URL of the SQS queue\n"
        },
        "region": {
          "type": "string",
          "description": "The region of the SQS queue, SNS topic or EventBridge topic\n"
        },
        "topic": {
          "type": "string",
          "description": "The topic of the Google Cloud Pub/Sub or Confluent Cloud topic\n"
        },
        "topicArn": {
          "type": "string",
          "description": "The ARN of the SNS topic\n"
        },
        "type": {
          "type": "string",
          "description": "The type of the destination. See [Destination](https://docs.commercetools.com/api/projects/subscriptions#destination) for more information\n"
        },
        "uri": {
          "type": "string",
          "description": "The URI of the EventGrid topic\n"
        }
      },
      "type": "object",
      "required": [
        "type"
      ]
    },
    "commercetools:index/SubscriptionEvent:SubscriptionEvent": {
      "properties": {
        "resourceTypeId": {
          "type": "string",
          "description": "[Resource Type ID](https://docs.commercetools.com/api/projects/subscriptions#ctp:api:type:EventSubscriptionResourceTypeId)\n"
        },
        "types": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Must contain valid event types for the resource. For example, for resource type import-api the event type ImportContainerCreated is valid. If no types are given, the Subscription will receive all events for the defined resource type.\n"
        }
      },
      "type": "object",
      "required": [
        "resourceTypeId",
        "types"
      ]
    },
    "commercetools:index/SubscriptionFormat:SubscriptionFormat": {
      "properties": {
        "cloudEventsVersion": {
          "type": "string",
          "description": "For CloudEvents\n"
        },
        "type": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "commercetools:index/SubscriptionMessage:SubscriptionMessage": {
      "properties": {
        "resourceTypeId": {
          "type": "string",
          "description": "[Resource Type ID](https://docs.commercetools.com/api/projects/subscriptions#changesubscription)\n"
        },
        "types": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "types must contain valid message types for this resource, for example for resource type product the message type ProductPublished is valid. If no types of messages are given, the subscription is valid for all messages of this resource\n"
        }
      },
      "type": "object",
      "required": [
        "resourceTypeId",
        "types"
      ]
    },
    "commercetools:index/TaxCategoryRateSubRate:TaxCategoryRateSubRate": {
      "properties": {
        "amount": {
          "type": "number",
          "description": "Number Percentage in the range of [0..1]\n"
        },
        "name": {
          "type": "string"
        }
      },
      "type": "object",
      "required": [
        "amount",
        "name"
      ]
    },
    "commercetools:index/TypeField:TypeField": {
      "properties": {
        "inputHint": {
          "type": "string",
          "description": "[TextInputHint](https://docs.commercetools.com/api/projects/types#textinputhint) Provides a visual representation type for this field. It is only relevant for string-based field types like StringType and LocalizedStringType\n"
        },
        "label": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "A human-readable label for the field\n"
        },
        "name": {
          "type": "string",
          "description": "The name of the field.\nThe name must be between two and 36 characters long and can contain the ASCII letters A to Z in lowercase or uppercase, digits, underscores (_) and the hyphen-minus (-).\nThe name must be unique for a given resource type ID. In case there is a field with the same name in another type it has to have the same FieldType also\n"
        },
        "required": {
          "type": "boolean",
          "description": "Whether the field is required to have a value\n"
        },
        "type": {
          "$ref": "#/types/commercetools:index%2FTypeFieldType:TypeFieldType",
          "description": "Describes the [type](https://docs.commercetools.com/api/projects/types#fieldtype) of the field\n"
        }
      },
      "type": "object",
      "required": [
        "label",
        "name",
        "type"
      ]
    },
    "commercetools:index/TypeFieldType:TypeFieldType": {
      "properties": {
        "elementType": {
          "$ref": "#/types/commercetools:index%2FTypeFieldTypeElementType:TypeFieldTypeElementType"
        },
        "localizedValues": {
          "type": "array",
          "items": {
            "$ref": "#/types/commercetools:index%2FTypeFieldTypeLocalizedValue:TypeFieldTypeLocalizedValue"
          },
          "description": "Localized values for the `lenum` type.\n"
        },
        "name": {
          "type": "string",
          "description": "Name of the field type. Some types require extra fields to be set. Note that changing the type after creating is not supported. You need to delete the attribute and re-add it.\n"
        },
        "referenceTypeId": {
          "type": "string",
          "description": "Resource type the Custom Field can reference. Required when type is `Reference`\n"
        },
        "values": {
          "type": "array",
          "items": {
            "$ref": "#/types/commercetools:index%2FTypeFieldTypeValue:TypeFieldTypeValue"
          },
          "description": "Values for the `enum` type.\n"
        }
      },
      "type": "object",
      "required": [
        "name"
      ]
    },
    "commercetools:index/TypeFieldTypeElementType:TypeFieldTypeElementType": {
      "properties": {
        "localizedValues": {
          "type": "array",
          "items": {
            "$ref": "#/types/commercetools:index%2FTypeFieldTypeElementTypeLocalizedValue:TypeFieldTypeElementTypeLocalizedValue"
          },
          "description": "Localized values for the `lenum` type.\n"
        },
        "name": {
          "type": "string",
          "description": "Name of the field type. Some types require extra fields to be set. Note that changing the type after creating is not supported. You need to delete the attribute and re-add it.\n"
        },
        "referenceTypeId": {
          "type": "string",
          "description": "Resource type the Custom Field can reference. Required when type is `Reference`\n"
        },
        "values": {
          "type": "array",
          "items": {
            "$ref": "#/types/commercetools:index%2FTypeFieldTypeElementTypeValue:TypeFieldTypeElementTypeValue"
          },
          "description": "Values for the `enum` type.\n"
        }
      },
      "type": "object",
      "required": [
        "name"
      ]
    },
    "commercetools:index/TypeFieldTypeElementTypeLocalizedValue:TypeFieldTypeElementTypeLocalizedValue": {
      "properties": {
        "key": {
          "type": "string"
        },
        "label": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        }
      },
      "type": "object",
      "required": [
        "key",
        "label"
      ]
    },
    "commercetools:index/TypeFieldTypeElementTypeValue:TypeFieldTypeElementTypeValue": {
      "properties": {
        "key": {
          "type": "string"
        },
        "label": {
          "type": "string"
        }
      },
      "type": "object",
      "required": [
        "key",
        "label"
      ]
    },
    "commercetools:index/TypeFieldTypeLocalizedValue:TypeFieldTypeLocalizedValue": {
      "properties": {
        "key": {
          "type": "string"
        },
        "label": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        }
      },
      "type": "object",
      "required": [
        "key",
        "label"
      ]
    },
    "commercetools:index/TypeFieldTypeValue:TypeFieldTypeValue": {
      "properties": {
        "key": {
          "type": "string"
        },
        "label": {
          "type": "string"
        }
      },
      "type": "object",
      "required": [
        "key",
        "label"
      ]
    }
  },
  "provider": {
    "description": "The provider type for the commercetools package. By default, resources use package-wide configuration\nsettings, however an explicit `Provider` instance may be created and passed during resource\nconstruction to achieve fine-grained programmatic control over provider settings. See the\n[documentation](https://www.pulumi.com/docs/reference/programming-model/#providers) for more information.\n",
    "properties": {
      "apiUrl": {
        "type": "string",
        "description": "The API URL of the commercetools platform. https://docs.commercetools.com/api/general-concepts#hosts\n"
      },
      "clientId": {
        "type": "string",
        "description": "The OAuth Client ID for a commercetools platform project. https://docs.commercetools.com/api/authorization\n",
        "secret": true
      },
      "clientSecret": {
        "type": "string",
        "description": "The OAuth Client Secret for a commercetools platform project. https://docs.commercetools.com/api/authorization\n",
        "secret": true
      },
      "projectKey": {
        "type": "string",
        "description": "The project key of commercetools platform project. https://docs.commercetools.com/getting-started\n",
        "secret": true
      },
      "scopes": {
        "type": "string",
        "description": "A list as string of OAuth scopes assigned to a project key, to access resources in a commercetools platform project.\nhttps://docs.commercetools.com/api/authorization\n"
      },
      "tokenUrl": {
        "type": "string",
        "description": "The authentication URL of the commercetools platform. https://docs.commercetools.com/api/authorization\n"
      }
    },
    "type": "object",
    "inputProperties": {
      "apiUrl": {
        "type": "string",
        "description": "The API URL of the commercetools platform. https://docs.commercetools.com/api/general-concepts#hosts\n"
      },
      "clientId": {
        "type": "string",
        "description": "The OAuth Client ID for a commercetools platform project. https://docs.commercetools.com/api/authorization\n",
        "secret": true
      },
      "clientSecret": {
        "type": "string",
        "description": "The OAuth Client Secret for a commercetools platform project. https://docs.commercetools.com/api/authorization\n",
        "secret": true
      },
      "projectKey": {
        "type": "string",
        "description": "The project key of commercetools platform project. https://docs.commercetools.com/getting-started\n",
        "secret": true
      },
      "scopes": {
        "type": "string",
        "description": "A list as string of OAuth scopes assigned to a project key, to access resources in a commercetools platform project.\nhttps://docs.commercetools.com/api/authorization\n"
      },
      "tokenUrl": {
        "type": "string",
        "description": "The authentication URL of the commercetools platform. https://docs.commercetools.com/api/authorization\n"
      }
    }
  },
  "resources": {
    "commercetools:index/apiClient:ApiClient": {
      "description": "## Example Usage\n\n<!--Start PulumiCodeChooser -->\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as commercetools from \"@pulumi/commercetools\";\n\nconst my_api_client = new commercetools.ApiClient(\"my-api-client\", {scopes: [\n    \"manage_orders:my-ct-project-key\",\n    \"manage_payments:my-ct-project-key\",\n]});\n```\n```python\nimport pulumi\nimport pulumi_commercetools as commercetools\n\nmy_api_client = commercetools.ApiClient(\"my-api-client\", scopes=[\n    \"manage_orders:my-ct-project-key\",\n    \"manage_payments:my-ct-project-key\",\n])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Commercetools = Pulumi.Commercetools;\n\nreturn await Deployment.RunAsync(() => \n{\n    var my_api_client = new Commercetools.ApiClient(\"my-api-client\", new()\n    {\n        Scopes = new[]\n        {\n            \"manage_orders:my-ct-project-key\",\n            \"manage_payments:my-ct-project-key\",\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/commercetools/commercetools\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := commercetools.NewApiClient(ctx, \"my-api-client\", &commercetools.ApiClientArgs{\n\t\t\tScopes: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"manage_orders:my-ct-project-key\"),\n\t\t\t\tpulumi.String(\"manage_payments:my-ct-project-key\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.commercetools.ApiClient;\nimport com.pulumi.commercetools.ApiClientArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var my_api_client = new ApiClient(\"my-api-client\", ApiClientArgs.builder()\n            .scopes(            \n                \"manage_orders:my-ct-project-key\",\n                \"manage_payments:my-ct-project-key\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  my-api-client:\n    type: commercetools:ApiClient\n    properties:\n      scopes:\n        - manage_orders:my-ct-project-key\n        - manage_payments:my-ct-project-key\n```\n<!--End PulumiCodeChooser -->\n",
      "properties": {
        "accessTokenValiditySeconds": {
          "type": "number",
          "description": "Expiration time in seconds for each access token obtained by the APIClient. Only present when set with the APIClientDraft. If not present the default value applies.\n"
        },
        "apiClientId": {
          "type": "string",
          "description": "The ID of this resource.\n"
        },
        "name": {
          "type": "string",
          "description": "Name of the API client\n"
        },
        "refreshTokenValiditySeconds": {
          "type": "number",
          "description": "Inactivity expiration time in seconds for each refresh token obtained by the APIClient. Only present when set with the APIClientDraft. If not present the default value applies.\n"
        },
        "scopes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of the [OAuth scopes](https://docs.commercetools.com/api/scopes)\n"
        },
        "secret": {
          "type": "string",
          "secret": true
        }
      },
      "type": "object",
      "required": [
        "apiClientId",
        "name",
        "scopes",
        "secret"
      ],
      "inputProperties": {
        "accessTokenValiditySeconds": {
          "type": "number",
          "description": "Expiration time in seconds for each access token obtained by the APIClient. Only present when set with the APIClientDraft. If not present the default value applies.\n"
        },
        "apiClientId": {
          "type": "string",
          "description": "The ID of this resource.\n"
        },
        "name": {
          "type": "string",
          "description": "Name of the API client\n"
        },
        "refreshTokenValiditySeconds": {
          "type": "number",
          "description": "Inactivity expiration time in seconds for each refresh token obtained by the APIClient. Only present when set with the APIClientDraft. If not present the default value applies.\n"
        },
        "scopes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of the [OAuth scopes](https://docs.commercetools.com/api/scopes)\n"
        }
      },
      "requiredInputs": [
        "scopes"
      ],
      "stateInputs": {
        "description": "Input properties used for looking up and filtering ApiClient resources.\n",
        "properties": {
          "accessTokenValiditySeconds": {
            "type": "number",
            "description": "Expiration time in seconds for each access token obtained by the APIClient. Only present when set with the APIClientDraft. If not present the default value applies.\n"
          },
          "apiClientId": {
            "type": "string",
            "description": "The ID of this resource.\n"
          },
          "name": {
            "type": "string",
            "description": "Name of the API client\n"
          },
          "refreshTokenValiditySeconds": {
            "type": "number",
            "description": "Inactivity expiration time in seconds for each refresh token obtained by the APIClient. Only present when set with the APIClientDraft. If not present the default value applies.\n"
          },
          "scopes": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "A list of the [OAuth scopes](https://docs.commercetools.com/api/scopes)\n"
          },
          "secret": {
            "type": "string",
            "secret": true
          }
        },
        "type": "object"
      }
    },
    "commercetools:index/apiExtension:ApiExtension": {
      "description": "Create a new API extension to extend the behaviour of an API with business logic. Note that API extensions affect the performance of the API it is extending. If it fails, the whole API call fails \n\nAlso see the [API Extension API Documentation](https://docs.commercetools.com/api/projects/api-extensions)\n\n## Example Usage\n\n<!--Start PulumiCodeChooser -->\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as commercetools from \"@pulumi/commercetools\";\nimport * as google from \"@pulumi/google\";\n\n// HTTP api extension\nconst my_http_extension = new commercetools.ApiExtension(\"my-http-extension\", {\n    key: \"my-http-extension-key\",\n    destination: {\n        type: \"HTTP\",\n        url: \"https://example.com\",\n        authorizationHeader: \"Basic 12345\",\n    },\n    triggers: [{\n        resourceTypeId: \"customer\",\n        actions: [\n            \"Create\",\n            \"Update\",\n        ],\n    }],\n});\n// AWS Lambda api extension\nconst my_awslambda_extension = new commercetools.ApiExtension(\"my-awslambda-extension\", {\n    key: \"my-awslambda-extension-key\",\n    destination: {\n        type: \"awslambda\",\n        arn: \"us-east-1:123456789012:mylambda\",\n        accessKey: \"mykey\",\n        accessSecret: \"mysecret\",\n    },\n    triggers: [{\n        resourceTypeId: \"customer\",\n        actions: [\n            \"Create\",\n            \"Update\",\n        ],\n    }],\n});\n// Google Cloud Function api extension\nconst my_googlecloudfunction_extension = new commercetools.ApiExtension(\"my-googlecloudfunction-extension\", {\n    key: \"my-googlecloudfunction-extension-key\",\n    destination: {\n        type: \"googlecloudfunction\",\n        url: \"https://example.com\",\n    },\n    triggers: [{\n        resourceTypeId: \"customer\",\n        actions: [\n            \"Create\",\n            \"Update\",\n        ],\n    }],\n});\nconst myCloudFunction = new google.index.Google_cloudfunctions_function(\"myCloudFunction\", {\n    name: \"function-test\",\n    description: \"My function\",\n    runtime: \"nodejs16\",\n});\n// See https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/cloudfunctions_function for any\n// further settings\nconst invoker = new google.index.Google_cloudfunctions_function_iam_member(\"invoker\", {\n    project: \"my-project\",\n    region: \"europe-central2\",\n    cloudFunction: myCloudFunction.name,\n    role: \"roles/cloudfunctions.invoker\",\n    member: \"serviceAccount:extensions@commercetools-platform.iam.gserviceaccount.com\",\n});\n```\n```python\nimport pulumi\nimport pulumi_commercetools as commercetools\nimport pulumi_google as google\n\n# HTTP api extension\nmy_http_extension = commercetools.ApiExtension(\"my-http-extension\",\n    key=\"my-http-extension-key\",\n    destination={\n        \"type\": \"HTTP\",\n        \"url\": \"https://example.com\",\n        \"authorization_header\": \"Basic 12345\",\n    },\n    triggers=[{\n        \"resource_type_id\": \"customer\",\n        \"actions\": [\n            \"Create\",\n            \"Update\",\n        ],\n    }])\n# AWS Lambda api extension\nmy_awslambda_extension = commercetools.ApiExtension(\"my-awslambda-extension\",\n    key=\"my-awslambda-extension-key\",\n    destination={\n        \"type\": \"awslambda\",\n        \"arn\": \"us-east-1:123456789012:mylambda\",\n        \"access_key\": \"mykey\",\n        \"access_secret\": \"mysecret\",\n    },\n    triggers=[{\n        \"resource_type_id\": \"customer\",\n        \"actions\": [\n            \"Create\",\n            \"Update\",\n        ],\n    }])\n# Google Cloud Function api extension\nmy_googlecloudfunction_extension = commercetools.ApiExtension(\"my-googlecloudfunction-extension\",\n    key=\"my-googlecloudfunction-extension-key\",\n    destination={\n        \"type\": \"googlecloudfunction\",\n        \"url\": \"https://example.com\",\n    },\n    triggers=[{\n        \"resource_type_id\": \"customer\",\n        \"actions\": [\n            \"Create\",\n            \"Update\",\n        ],\n    }])\nmy_cloud_function = google.index.Google_cloudfunctions_function(\"myCloudFunction\",\n    name=function-test,\n    description=My function,\n    runtime=nodejs16)\n# See https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/cloudfunctions_function for any\n# further settings\ninvoker = google.index.Google_cloudfunctions_function_iam_member(\"invoker\",\n    project=my-project,\n    region=europe-central2,\n    cloud_function=my_cloud_function.name,\n    role=roles/cloudfunctions.invoker,\n    member=serviceAccount:extensions@commercetools-platform.iam.gserviceaccount.com)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Commercetools = Pulumi.Commercetools;\nusing Google = Pulumi.Google;\n\nreturn await Deployment.RunAsync(() => \n{\n    // HTTP api extension\n    var my_http_extension = new Commercetools.ApiExtension(\"my-http-extension\", new()\n    {\n        Key = \"my-http-extension-key\",\n        Destination = new Commercetools.Inputs.ApiExtensionDestinationArgs\n        {\n            Type = \"HTTP\",\n            Url = \"https://example.com\",\n            AuthorizationHeader = \"Basic 12345\",\n        },\n        Triggers = new[]\n        {\n            new Commercetools.Inputs.ApiExtensionTriggerArgs\n            {\n                ResourceTypeId = \"customer\",\n                Actions = new[]\n                {\n                    \"Create\",\n                    \"Update\",\n                },\n            },\n        },\n    });\n\n    // AWS Lambda api extension\n    var my_awslambda_extension = new Commercetools.ApiExtension(\"my-awslambda-extension\", new()\n    {\n        Key = \"my-awslambda-extension-key\",\n        Destination = new Commercetools.Inputs.ApiExtensionDestinationArgs\n        {\n            Type = \"awslambda\",\n            Arn = \"us-east-1:123456789012:mylambda\",\n            AccessKey = \"mykey\",\n            AccessSecret = \"mysecret\",\n        },\n        Triggers = new[]\n        {\n            new Commercetools.Inputs.ApiExtensionTriggerArgs\n            {\n                ResourceTypeId = \"customer\",\n                Actions = new[]\n                {\n                    \"Create\",\n                    \"Update\",\n                },\n            },\n        },\n    });\n\n    // Google Cloud Function api extension\n    var my_googlecloudfunction_extension = new Commercetools.ApiExtension(\"my-googlecloudfunction-extension\", new()\n    {\n        Key = \"my-googlecloudfunction-extension-key\",\n        Destination = new Commercetools.Inputs.ApiExtensionDestinationArgs\n        {\n            Type = \"googlecloudfunction\",\n            Url = \"https://example.com\",\n        },\n        Triggers = new[]\n        {\n            new Commercetools.Inputs.ApiExtensionTriggerArgs\n            {\n                ResourceTypeId = \"customer\",\n                Actions = new[]\n                {\n                    \"Create\",\n                    \"Update\",\n                },\n            },\n        },\n    });\n\n    var myCloudFunction = new Google.Index.Google_cloudfunctions_function(\"myCloudFunction\", new()\n    {\n        Name = \"function-test\",\n        Description = \"My function\",\n        Runtime = \"nodejs16\",\n    });\n\n    // See https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/cloudfunctions_function for any\n    // further settings\n    var invoker = new Google.Index.Google_cloudfunctions_function_iam_member(\"invoker\", new()\n    {\n        Project = \"my-project\",\n        Region = \"europe-central2\",\n        CloudFunction = myCloudFunction.Name,\n        Role = \"roles/cloudfunctions.invoker\",\n        Member = \"serviceAccount:extensions@commercetools-platform.iam.gserviceaccount.com\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-google/sdk/go/google\"\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/commercetools/commercetools\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// HTTP api extension\n\t\t_, err := commercetools.NewApiExtension(ctx, \"my-http-extension\", &commercetools.ApiExtensionArgs{\n\t\t\tKey: pulumi.String(\"my-http-extension-key\"),\n\t\t\tDestination: &commercetools.ApiExtensionDestinationArgs{\n\t\t\t\tType:                pulumi.String(\"HTTP\"),\n\t\t\t\tUrl:                 pulumi.String(\"https://example.com\"),\n\t\t\t\tAuthorizationHeader: pulumi.String(\"Basic 12345\"),\n\t\t\t},\n\t\t\tTriggers: commercetools.ApiExtensionTriggerArray{\n\t\t\t\t&commercetools.ApiExtensionTriggerArgs{\n\t\t\t\t\tResourceTypeId: pulumi.String(\"customer\"),\n\t\t\t\t\tActions: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"Create\"),\n\t\t\t\t\t\tpulumi.String(\"Update\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// AWS Lambda api extension\n\t\t_, err = commercetools.NewApiExtension(ctx, \"my-awslambda-extension\", &commercetools.ApiExtensionArgs{\n\t\t\tKey: pulumi.String(\"my-awslambda-extension-key\"),\n\t\t\tDestination: &commercetools.ApiExtensionDestinationArgs{\n\t\t\t\tType:         pulumi.String(\"awslambda\"),\n\t\t\t\tArn:          pulumi.String(\"us-east-1:123456789012:mylambda\"),\n\t\t\t\tAccessKey:    pulumi.String(\"mykey\"),\n\t\t\t\tAccessSecret: pulumi.String(\"mysecret\"),\n\t\t\t},\n\t\t\tTriggers: commercetools.ApiExtensionTriggerArray{\n\t\t\t\t&commercetools.ApiExtensionTriggerArgs{\n\t\t\t\t\tResourceTypeId: pulumi.String(\"customer\"),\n\t\t\t\t\tActions: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"Create\"),\n\t\t\t\t\t\tpulumi.String(\"Update\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Google Cloud Function api extension\n\t\t_, err = commercetools.NewApiExtension(ctx, \"my-googlecloudfunction-extension\", &commercetools.ApiExtensionArgs{\n\t\t\tKey: pulumi.String(\"my-googlecloudfunction-extension-key\"),\n\t\t\tDestination: &commercetools.ApiExtensionDestinationArgs{\n\t\t\t\tType: pulumi.String(\"googlecloudfunction\"),\n\t\t\t\tUrl:  pulumi.String(\"https://example.com\"),\n\t\t\t},\n\t\t\tTriggers: commercetools.ApiExtensionTriggerArray{\n\t\t\t\t&commercetools.ApiExtensionTriggerArgs{\n\t\t\t\t\tResourceTypeId: pulumi.String(\"customer\"),\n\t\t\t\t\tActions: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"Create\"),\n\t\t\t\t\t\tpulumi.String(\"Update\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmyCloudFunction, err := google.NewGoogle_cloudfunctions_function(ctx, \"myCloudFunction\", &google.Google_cloudfunctions_functionArgs{\n\t\t\tName:        \"function-test\",\n\t\t\tDescription: \"My function\",\n\t\t\tRuntime:     \"nodejs16\",\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = google.NewGoogle_cloudfunctions_function_iam_member(ctx, \"invoker\", &google.Google_cloudfunctions_function_iam_memberArgs{\n\t\t\tProject:       \"my-project\",\n\t\t\tRegion:        \"europe-central2\",\n\t\t\tCloudFunction: myCloudFunction.Name,\n\t\t\tRole:          \"roles/cloudfunctions.invoker\",\n\t\t\tMember:        \"serviceAccount:extensions@commercetools-platform.iam.gserviceaccount.com\",\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.commercetools.ApiExtension;\nimport com.pulumi.commercetools.ApiExtensionArgs;\nimport com.pulumi.commercetools.inputs.ApiExtensionDestinationArgs;\nimport com.pulumi.commercetools.inputs.ApiExtensionTriggerArgs;\nimport com.pulumi.google.google_cloudfunctions_function;\nimport com.pulumi.google.Google_cloudfunctions_functionArgs;\nimport com.pulumi.google.google_cloudfunctions_function_iam_member;\nimport com.pulumi.google.Google_cloudfunctions_function_iam_memberArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        // HTTP api extension\n        var my_http_extension = new ApiExtension(\"my-http-extension\", ApiExtensionArgs.builder()\n            .key(\"my-http-extension-key\")\n            .destination(ApiExtensionDestinationArgs.builder()\n                .type(\"HTTP\")\n                .url(\"https://example.com\")\n                .authorizationHeader(\"Basic 12345\")\n                .build())\n            .triggers(ApiExtensionTriggerArgs.builder()\n                .resourceTypeId(\"customer\")\n                .actions(                \n                    \"Create\",\n                    \"Update\")\n                .build())\n            .build());\n\n        // AWS Lambda api extension\n        var my_awslambda_extension = new ApiExtension(\"my-awslambda-extension\", ApiExtensionArgs.builder()\n            .key(\"my-awslambda-extension-key\")\n            .destination(ApiExtensionDestinationArgs.builder()\n                .type(\"awslambda\")\n                .arn(\"us-east-1:123456789012:mylambda\")\n                .accessKey(\"mykey\")\n                .accessSecret(\"mysecret\")\n                .build())\n            .triggers(ApiExtensionTriggerArgs.builder()\n                .resourceTypeId(\"customer\")\n                .actions(                \n                    \"Create\",\n                    \"Update\")\n                .build())\n            .build());\n\n        // Google Cloud Function api extension\n        var my_googlecloudfunction_extension = new ApiExtension(\"my-googlecloudfunction-extension\", ApiExtensionArgs.builder()\n            .key(\"my-googlecloudfunction-extension-key\")\n            .destination(ApiExtensionDestinationArgs.builder()\n                .type(\"googlecloudfunction\")\n                .url(\"https://example.com\")\n                .build())\n            .triggers(ApiExtensionTriggerArgs.builder()\n                .resourceTypeId(\"customer\")\n                .actions(                \n                    \"Create\",\n                    \"Update\")\n                .build())\n            .build());\n\n        var myCloudFunction = new Google_cloudfunctions_function(\"myCloudFunction\", Google_cloudfunctions_functionArgs.builder()\n            .name(\"function-test\")\n            .description(\"My function\")\n            .runtime(\"nodejs16\")\n            .build());\n\n        // See https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/cloudfunctions_function for any\n        // further settings\n        var invoker = new Google_cloudfunctions_function_iam_member(\"invoker\", Google_cloudfunctions_function_iam_memberArgs.builder()\n            .project(\"my-project\")\n            .region(\"europe-central2\")\n            .cloudFunction(myCloudFunction.name())\n            .role(\"roles/cloudfunctions.invoker\")\n            .member(\"serviceAccount:extensions@commercetools-platform.iam.gserviceaccount.com\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  # HTTP api extension\n  my-http-extension:\n    type: commercetools:ApiExtension\n    properties:\n      key: my-http-extension-key\n      destination:\n        type: HTTP\n        url: https://example.com\n        authorizationHeader: Basic 12345\n      triggers:\n        - resourceTypeId: customer\n          actions:\n            - Create\n            - Update\n  # AWS Lambda api extension\n  my-awslambda-extension:\n    type: commercetools:ApiExtension\n    properties:\n      key: my-awslambda-extension-key\n      destination:\n        type: awslambda\n        arn: us-east-1:123456789012:mylambda\n        accessKey: mykey\n        accessSecret: mysecret\n      triggers:\n        - resourceTypeId: customer\n          actions:\n            - Create\n            - Update\n  # Google Cloud Function api extension\n  my-googlecloudfunction-extension:\n    type: commercetools:ApiExtension\n    properties:\n      key: my-googlecloudfunction-extension-key\n      destination:\n        type: googlecloudfunction\n        url: https://example.com\n      triggers:\n        - resourceTypeId: customer\n          actions:\n            - Create\n            - Update\n  myCloudFunction:\n    type: google:google_cloudfunctions_function\n    properties:\n      name: function-test\n      description: My function\n      runtime: nodejs16\n  invoker:\n    type: google:google_cloudfunctions_function_iam_member\n    properties:\n      # For GoogleCloudFunction destinations, you need to grant permissions to the\n      #   # <extensions@commercetools-platform.iam.gserviceaccount.com> service account to invoke your function.\n      project: my-project\n      region: europe-central2\n      cloudFunction: ${myCloudFunction.name}\n      # If your function's version is 1st gen, grant the service account the IAM role Cloud Functions Invoker\n      role: roles/cloudfunctions.invoker\n      # For version 2nd gen, assign the IAM role Cloud Run Invoker\n      #   # role   = \"roles/run.invoker\"\n      member: serviceAccount:extensions@commercetools-platform.iam.gserviceaccount.com\n```\n<!--End PulumiCodeChooser -->\n",
      "properties": {
        "apiExtensionId": {
          "type": "string",
          "description": "The ID of this resource.\n"
        },
        "destination": {
          "$ref": "#/types/commercetools:index%2FApiExtensionDestination:ApiExtensionDestination",
          "description": "[Destination](https://docs.commercetools.com/api/projects/api-extensions#destination) Details where the extension can be reached\n"
        },
        "key": {
          "type": "string",
          "description": "User-specific unique identifier for the extension\n"
        },
        "timeoutInMs": {
          "type": "number",
          "description": "Maximum time (in milliseconds) that the Extension can respond within. If no timeout is provided, the default value is used for all types of Extensions, including payment Extensions. The maximum value is 10000 ms (10 seconds) for payment Extensions and 2000 ms (2 seconds) for all other Extensions.\n"
        },
        "triggers": {
          "type": "array",
          "items": {
            "$ref": "#/types/commercetools:index%2FApiExtensionTrigger:ApiExtensionTrigger"
          },
          "description": "Array of [Trigger](https://docs.commercetools.com/api/projects/api-extensions#trigger) Describes what triggers the extension\n"
        },
        "version": {
          "type": "number"
        }
      },
      "type": "object",
      "required": [
        "apiExtensionId",
        "destination",
        "triggers",
        "version"
      ],
      "inputProperties": {
        "apiExtensionId": {
          "type": "string",
          "description": "The ID of this resource.\n"
        },
        "destination": {
          "$ref": "#/types/commercetools:index%2FApiExtensionDestination:ApiExtensionDestination",
          "description": "[Destination](https://docs.commercetools.com/api/projects/api-extensions#destination) Details where the extension can be reached\n"
        },
        "key": {
          "type": "string",
          "description": "User-specific unique identifier for the extension\n"
        },
        "timeoutInMs": {
          "type": "number",
          "description": "Maximum time (in milliseconds) that the Extension can respond within. If no timeout is provided, the default value is used for all types of Extensions, including payment Extensions. The maximum value is 10000 ms (10 seconds) for payment Extensions and 2000 ms (2 seconds) for all other Extensions.\n"
        },
        "triggers": {
          "type": "array",
          "items": {
            "$ref": "#/types/commercetools:index%2FApiExtensionTrigger:ApiExtensionTrigger"
          },
          "description": "Array of [Trigger](https://docs.commercetools.com/api/projects/api-extensions#trigger) Describes what triggers the extension\n"
        }
      },
      "requiredInputs": [
        "destination",
        "triggers"
      ],
      "stateInputs": {
        "description": "Input properties used for looking up and filtering ApiExtension resources.\n",
        "properties": {
          "apiExtensionId": {
            "type": "string",
            "description": "The ID of this resource.\n"
          },
          "destination": {
            "$ref": "#/types/commercetools:index%2FApiExtensionDestination:ApiExtensionDestination",
            "description": "[Destination](https://docs.commercetools.com/api/projects/api-extensions#destination) Details where the extension can be reached\n"
          },
          "key": {
            "type": "string",
            "description": "User-specific unique identifier for the extension\n"
          },
          "timeoutInMs": {
            "type": "number",
            "description": "Maximum time (in milliseconds) that the Extension can respond within. If no timeout is provided, the default value is used for all types of Extensions, including payment Extensions. The maximum value is 10000 ms (10 seconds) for payment Extensions and 2000 ms (2 seconds) for all other Extensions.\n"
          },
          "triggers": {
            "type": "array",
            "items": {
              "$ref": "#/types/commercetools:index%2FApiExtensionTrigger:ApiExtensionTrigger"
            },
            "description": "Array of [Trigger](https://docs.commercetools.com/api/projects/api-extensions#trigger) Describes what triggers the extension\n"
          },
          "version": {
            "type": "number"
          }
        },
        "type": "object"
      }
    },
    "commercetools:index/associateRole:AssociateRole": {
      "description": "Associate Roles provide a way to group granular Permissions and assign them to Associates within a Business Unit.\n\nSee also the [Associate Role API Documentation](https://docs.commercetools.com/api/projects/associate-roles)\n\n## Example Usage\n\n<!--Start PulumiCodeChooser -->\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.commercetools.Type;\nimport com.pulumi.commercetools.TypeArgs;\nimport com.pulumi.commercetools.inputs.TypeFieldArgs;\nimport com.pulumi.commercetools.inputs.TypeFieldTypeArgs;\nimport com.pulumi.commercetools.AssociateRole;\nimport com.pulumi.commercetools.AssociateRoleArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var my_type = new Type(\"my-type\", TypeArgs.builder()\n            .key(\"my-type\")\n            .name(Map.ofEntries(\n                Map.entry(\"en\", \"My type\"),\n                Map.entry(\"nl\", \"Mijn type\")\n            ))\n            .resourceTypeIds(\"associate-role\")\n            .fields(TypeFieldArgs.builder()\n                .name(\"my-field\")\n                .label(Map.ofEntries(\n                    Map.entry(\"en\", \"My field\"),\n                    Map.entry(\"nl\", \"Mijn veld\")\n                ))\n                .type(TypeFieldTypeArgs.builder()\n                    .name(\"String\")\n                    .build())\n                .build())\n            .build());\n\n        var my_role = new AssociateRole(\"my-role\", AssociateRoleArgs.builder()\n            .key(\"my-role\")\n            .buyerAssignable(false)\n            .permissions(            \n                \"AddChildUnits\",\n                \"UpdateAssociates\",\n                \"UpdateBusinessUnitDetails\",\n                \"UpdateParentUnit\",\n                \"ViewMyCarts\",\n                \"ViewOthersCarts\",\n                \"UpdateMyCarts\",\n                \"UpdateOthersCarts\",\n                \"CreateMyCarts\",\n                \"CreateOthersCarts\",\n                \"DeleteMyCarts\",\n                \"DeleteOthersCarts\",\n                \"ViewMyOrders\",\n                \"ViewOthersOrders\",\n                \"UpdateMyOrders\",\n                \"UpdateOthersOrders\",\n                \"CreateMyOrdersFromMyCarts\",\n                \"CreateMyOrdersFromMyQuotes\",\n                \"CreateOrdersFromOthersCarts\",\n                \"CreateOrdersFromOthersQuotes\",\n                \"ViewMyQuotes\",\n                \"ViewOthersQuotes\",\n                \"AcceptMyQuotes\",\n                \"AcceptOthersQuotes\",\n                \"DeclineMyQuotes\",\n                \"DeclineOthersQuotes\",\n                \"RenegotiateMyQuotes\",\n                \"RenegotiateOthersQuotes\",\n                \"ReassignMyQuotes\",\n                \"ReassignOthersQuotes\",\n                \"ViewMyQuoteRequests\",\n                \"ViewOthersQuoteRequests\",\n                \"UpdateMyQuoteRequests\",\n                \"UpdateOthersQuoteRequests\",\n                \"CreateMyQuoteRequestsFromMyCarts\",\n                \"CreateQuoteRequestsFromOthersCarts\",\n                \"CreateApprovalRules\",\n                \"UpdateApprovalRules\",\n                \"UpdateApprovalFlows\")\n            .custom(AssociateRoleCustomArgs.builder()\n                .typeId(my_type.typeId())\n                .fields(Map.of(\"my-field\", \"My value\"))\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  my-type:\n    type: commercetools:Type\n    properties:\n      key: my-type\n      name:\n        en: My type\n        nl: Mijn type\n      resourceTypeIds:\n        - associate-role\n      fields:\n        - name: my-field\n          label:\n            en: My field\n            nl: Mijn veld\n          type:\n            name: String\n  my-role:\n    type: commercetools:AssociateRole\n    properties:\n      key: my-role\n      buyerAssignable: false\n      permissions:\n        - AddChildUnits\n        - UpdateAssociates\n        - UpdateBusinessUnitDetails\n        - UpdateParentUnit\n        - ViewMyCarts\n        - ViewOthersCarts\n        - UpdateMyCarts\n        - UpdateOthersCarts\n        - CreateMyCarts\n        - CreateOthersCarts\n        - DeleteMyCarts\n        - DeleteOthersCarts\n        - ViewMyOrders\n        - ViewOthersOrders\n        - UpdateMyOrders\n        - UpdateOthersOrders\n        - CreateMyOrdersFromMyCarts\n        - CreateMyOrdersFromMyQuotes\n        - CreateOrdersFromOthersCarts\n        - CreateOrdersFromOthersQuotes\n        - ViewMyQuotes\n        - ViewOthersQuotes\n        - AcceptMyQuotes\n        - AcceptOthersQuotes\n        - DeclineMyQuotes\n        - DeclineOthersQuotes\n        - RenegotiateMyQuotes\n        - RenegotiateOthersQuotes\n        - ReassignMyQuotes\n        - ReassignOthersQuotes\n        - ViewMyQuoteRequests\n        - ViewOthersQuoteRequests\n        - UpdateMyQuoteRequests\n        - UpdateOthersQuoteRequests\n        - CreateMyQuoteRequestsFromMyCarts\n        - CreateQuoteRequestsFromOthersCarts\n        - CreateApprovalRules\n        - UpdateApprovalRules\n        - UpdateApprovalFlows\n      custom:\n        - typeId: ${[\"my-type\"].typeId}\n          fields:\n            my-field: My value\n```\n<!--End PulumiCodeChooser -->\n",
      "properties": {
        "buyerAssignable": {
          "type": "boolean",
          "description": "Whether the associate role can be assigned to an associate by a buyer. If false, the associate role can only be assigned using the general endpoint. Defaults to true.\n"
        },
        "custom": {
          "$ref": "#/types/commercetools:index%2FAssociateRoleCustom:AssociateRoleCustom",
          "description": "Custom fields for this resource.\n"
        },
        "key": {
          "type": "string",
          "description": "User-defined unique identifier of the associate role.\n"
        },
        "name": {
          "type": "string",
          "description": "Name of the associate role.\n"
        },
        "permissions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of permissions for the associate role. See the [Associate Role API Documentation](https://docs.commercetools.com/api/projects/associate-roles#ctp:api:type:Permission) for more information.\n"
        },
        "version": {
          "type": "number",
          "description": "Current version of the associate role.\n"
        }
      },
      "type": "object",
      "required": [
        "buyerAssignable",
        "key",
        "name",
        "permissions",
        "version"
      ],
      "inputProperties": {
        "buyerAssignable": {
          "type": "boolean",
          "description": "Whether the associate role can be assigned to an associate by a buyer. If false, the associate role can only be assigned using the general endpoint. Defaults to true.\n"
        },
        "custom": {
          "$ref": "#/types/commercetools:index%2FAssociateRoleCustom:AssociateRoleCustom",
          "description": "Custom fields for this resource.\n"
        },
        "key": {
          "type": "string",
          "description": "User-defined unique identifier of the associate role.\n"
        },
        "name": {
          "type": "string",
          "description": "Name of the associate role.\n"
        },
        "permissions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of permissions for the associate role. See the [Associate Role API Documentation](https://docs.commercetools.com/api/projects/associate-roles#ctp:api:type:Permission) for more information.\n"
        }
      },
      "requiredInputs": [
        "key",
        "permissions"
      ],
      "stateInputs": {
        "description": "Input properties used for looking up and filtering AssociateRole resources.\n",
        "properties": {
          "buyerAssignable": {
            "type": "boolean",
            "description": "Whether the associate role can be assigned to an associate by a buyer. If false, the associate role can only be assigned using the general endpoint. Defaults to true.\n"
          },
          "custom": {
            "$ref": "#/types/commercetools:index%2FAssociateRoleCustom:AssociateRoleCustom",
            "description": "Custom fields for this resource.\n"
          },
          "key": {
            "type": "string",
            "description": "User-defined unique identifier of the associate role.\n"
          },
          "name": {
            "type": "string",
            "description": "Name of the associate role.\n"
          },
          "permissions": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "List of permissions for the associate role. See the [Associate Role API Documentation](https://docs.commercetools.com/api/projects/associate-roles#ctp:api:type:Permission) for more information.\n"
          },
          "version": {
            "type": "number",
            "description": "Current version of the associate role.\n"
          }
        },
        "type": "object"
      }
    },
    "commercetools:index/attributeGroup:AttributeGroup": {
      "description": "Attribute Groups allow you to define a set of referenced Attribute Definitions for the purpose of giving one or more dedicated teams access to edit Attribute values in Product Variants for those Attributes in the Merchant Center. Depending on the use case, editing permission can be granted to all Attributes, to Attributes that are ungrouped, or none.\n\n## Example Usage\n\n<!--Start PulumiCodeChooser -->\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as commercetools from \"@pulumi/commercetools\";\n\nconst my_attribute_group = new commercetools.AttributeGroup(\"my-attribute-group\", {\n    attributes: [\n        {\n            key: \"attribute-key-1\",\n        },\n        {\n            key: \"attribute-key-2\",\n        },\n    ],\n    description: {\n        en: \"my-attribute-group-description\",\n    },\n    key: \"my-attribute-group-key\",\n    name: {\n        en: \"my-attribute-group-name\",\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_commercetools as commercetools\n\nmy_attribute_group = commercetools.AttributeGroup(\"my-attribute-group\",\n    attributes=[\n        {\n            \"key\": \"attribute-key-1\",\n        },\n        {\n            \"key\": \"attribute-key-2\",\n        },\n    ],\n    description={\n        \"en\": \"my-attribute-group-description\",\n    },\n    key=\"my-attribute-group-key\",\n    name={\n        \"en\": \"my-attribute-group-name\",\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Commercetools = Pulumi.Commercetools;\n\nreturn await Deployment.RunAsync(() => \n{\n    var my_attribute_group = new Commercetools.AttributeGroup(\"my-attribute-group\", new()\n    {\n        Attributes = new[]\n        {\n            new Commercetools.Inputs.AttributeGroupAttributeArgs\n            {\n                Key = \"attribute-key-1\",\n            },\n            new Commercetools.Inputs.AttributeGroupAttributeArgs\n            {\n                Key = \"attribute-key-2\",\n            },\n        },\n        Description = \n        {\n            { \"en\", \"my-attribute-group-description\" },\n        },\n        Key = \"my-attribute-group-key\",\n        Name = \n        {\n            { \"en\", \"my-attribute-group-name\" },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/commercetools/commercetools\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := commercetools.NewAttributeGroup(ctx, \"my-attribute-group\", &commercetools.AttributeGroupArgs{\n\t\t\tAttributes: commercetools.AttributeGroupAttributeArray{\n\t\t\t\t&commercetools.AttributeGroupAttributeArgs{\n\t\t\t\t\tKey: pulumi.String(\"attribute-key-1\"),\n\t\t\t\t},\n\t\t\t\t&commercetools.AttributeGroupAttributeArgs{\n\t\t\t\t\tKey: pulumi.String(\"attribute-key-2\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tDescription: pulumi.StringMap{\n\t\t\t\t\"en\": pulumi.String(\"my-attribute-group-description\"),\n\t\t\t},\n\t\t\tKey: pulumi.String(\"my-attribute-group-key\"),\n\t\t\tName: pulumi.StringMap{\n\t\t\t\t\"en\": pulumi.String(\"my-attribute-group-name\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.commercetools.AttributeGroup;\nimport com.pulumi.commercetools.AttributeGroupArgs;\nimport com.pulumi.commercetools.inputs.AttributeGroupAttributeArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var my_attribute_group = new AttributeGroup(\"my-attribute-group\", AttributeGroupArgs.builder()\n            .attributes(            \n                AttributeGroupAttributeArgs.builder()\n                    .key(\"attribute-key-1\")\n                    .build(),\n                AttributeGroupAttributeArgs.builder()\n                    .key(\"attribute-key-2\")\n                    .build())\n            .description(Map.of(\"en\", \"my-attribute-group-description\"))\n            .key(\"my-attribute-group-key\")\n            .name(Map.of(\"en\", \"my-attribute-group-name\"))\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  my-attribute-group:\n    type: commercetools:AttributeGroup\n    properties:\n      attributes:\n        - key: attribute-key-1\n        - key: attribute-key-2\n      description:\n        en: my-attribute-group-description\n      key: my-attribute-group-key\n      name:\n        en: my-attribute-group-name\n```\n<!--End PulumiCodeChooser -->\n",
      "properties": {
        "attributes": {
          "type": "array",
          "items": {
            "$ref": "#/types/commercetools:index%2FAttributeGroupAttribute:AttributeGroupAttribute"
          },
          "description": "Attributes with unique values.\n"
        },
        "description": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Description of the State as localized string.\n"
        },
        "key": {
          "type": "string",
          "description": "User-defined unique identifier of the AttributeGroup.\n"
        },
        "name": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Name of the State as localized string.\n"
        },
        "version": {
          "type": "number",
          "description": "Current version of the AttributeGroup.\n"
        }
      },
      "type": "object",
      "required": [
        "name",
        "version"
      ],
      "inputProperties": {
        "attributes": {
          "type": "array",
          "items": {
            "$ref": "#/types/commercetools:index%2FAttributeGroupAttribute:AttributeGroupAttribute"
          },
          "description": "Attributes with unique values.\n"
        },
        "description": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Description of the State as localized string.\n"
        },
        "key": {
          "type": "string",
          "description": "User-defined unique identifier of the AttributeGroup.\n"
        },
        "name": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Name of the State as localized string.\n"
        }
      },
      "requiredInputs": [
        "name"
      ],
      "stateInputs": {
        "description": "Input properties used for looking up and filtering AttributeGroup resources.\n",
        "properties": {
          "attributes": {
            "type": "array",
            "items": {
              "$ref": "#/types/commercetools:index%2FAttributeGroupAttribute:AttributeGroupAttribute"
            },
            "description": "Attributes with unique values.\n"
          },
          "description": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "description": "Description of the State as localized string.\n"
          },
          "key": {
            "type": "string",
            "description": "User-defined unique identifier of the AttributeGroup.\n"
          },
          "name": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "description": "Name of the State as localized string.\n"
          },
          "version": {
            "type": "number",
            "description": "Current version of the AttributeGroup.\n"
          }
        },
        "type": "object"
      }
    },
    "commercetools:index/businessUnitCompany:BusinessUnitCompany": {
      "description": "Business Unit type to represent the top level of a business. Contains specific fields and values that differentiate a company from the generic business unit.\n\nSee also the Business Unit API Documentation User-defined unique key for the company. Must be unique within the project. Updating this value is not supported.\n- `name` (String) The name of the company.\n",
      "properties": {
        "addresses": {
          "type": "array",
          "items": {
            "$ref": "#/types/commercetools:index%2FBusinessUnitCompanyAddress:BusinessUnitCompanyAddress"
          },
          "description": "Addresses used by the Business Unit.\n"
        },
        "billingAddressKeys": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Indexes of entries in addresses to set as billing addresses. The billingAddressIds of the\n[Customer](https://docs.commercetools.com/api/projects/customers) will be replaced by these addresses.\n"
        },
        "contactEmail": {
          "type": "string",
          "description": "The email address of the company.\n"
        },
        "custom": {
          "$ref": "#/types/commercetools:index%2FBusinessUnitCompanyCustom:BusinessUnitCompanyCustom",
          "description": "Custom fields for this resource.\n"
        },
        "defaultBillingAddressKey": {
          "type": "string",
          "description": "Index of the entry in addresses to set as the default billing address.\n"
        },
        "defaultShippingAddressKey": {
          "type": "string",
          "description": "Index of the entry in addresses to set as the default shipping address.\n"
        },
        "key": {
          "type": "string",
          "description": "User-defined unique key for the company. Must be unique within the project. Updating this value is not supported.\n"
        },
        "name": {
          "type": "string",
          "description": "The name of the company.\n"
        },
        "shippingAddressKeys": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Indexes of entries in addresses to set as shipping addresses. The shippingAddressIds of the\n[Customer](https://docs.commercetools.com/api/projects/customers) will be replaced by these addresses.\n"
        },
        "status": {
          "type": "string",
          "description": "The status of the company.\n"
        },
        "stores": {
          "type": "array",
          "items": {
            "$ref": "#/types/commercetools:index%2FBusinessUnitCompanyStore:BusinessUnitCompanyStore"
          },
          "description": "Sets the Stores the Business Unit is associated with. If the Business Unit has Stores defined, then all of its Carts,\nOrders, Quotes, or Quote Requests must belong to one of the Business Unit's Stores. If the Business Unit has no Stores,\nthen all of its Carts, Orders, Quotes, or Quote Requests must not belong to any Store.\n"
        },
        "version": {
          "type": "number",
          "description": "The current version of the company.\n"
        }
      },
      "type": "object",
      "required": [
        "key",
        "name",
        "status",
        "version"
      ],
      "inputProperties": {
        "addresses": {
          "type": "array",
          "items": {
            "$ref": "#/types/commercetools:index%2FBusinessUnitCompanyAddress:BusinessUnitCompanyAddress"
          },
          "description": "Addresses used by the Business Unit.\n"
        },
        "billingAddressKeys": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Indexes of entries in addresses to set as billing addresses. The billingAddressIds of the\n[Customer](https://docs.commercetools.com/api/projects/customers) will be replaced by these addresses.\n"
        },
        "contactEmail": {
          "type": "string",
          "description": "The email address of the company.\n"
        },
        "custom": {
          "$ref": "#/types/commercetools:index%2FBusinessUnitCompanyCustom:BusinessUnitCompanyCustom",
          "description": "Custom fields for this resource.\n"
        },
        "defaultBillingAddressKey": {
          "type": "string",
          "description": "Index of the entry in addresses to set as the default billing address.\n"
        },
        "defaultShippingAddressKey": {
          "type": "string",
          "description": "Index of the entry in addresses to set as the default shipping address.\n"
        },
        "key": {
          "type": "string",
          "description": "User-defined unique key for the company. Must be unique within the project. Updating this value is not supported.\n"
        },
        "name": {
          "type": "string",
          "description": "The name of the company.\n"
        },
        "shippingAddressKeys": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Indexes of entries in addresses to set as shipping addresses. The shippingAddressIds of the\n[Customer](https://docs.commercetools.com/api/projects/customers) will be replaced by these addresses.\n"
        },
        "status": {
          "type": "string",
          "description": "The status of the company.\n"
        },
        "stores": {
          "type": "array",
          "items": {
            "$ref": "#/types/commercetools:index%2FBusinessUnitCompanyStore:BusinessUnitCompanyStore"
          },
          "description": "Sets the Stores the Business Unit is associated with. If the Business Unit has Stores defined, then all of its Carts,\nOrders, Quotes, or Quote Requests must belong to one of the Business Unit's Stores. If the Business Unit has no Stores,\nthen all of its Carts, Orders, Quotes, or Quote Requests must not belong to any Store.\n"
        }
      },
      "requiredInputs": [
        "key"
      ],
      "stateInputs": {
        "description": "Input properties used for looking up and filtering BusinessUnitCompany resources.\n",
        "properties": {
          "addresses": {
            "type": "array",
            "items": {
              "$ref": "#/types/commercetools:index%2FBusinessUnitCompanyAddress:BusinessUnitCompanyAddress"
            },
            "description": "Addresses used by the Business Unit.\n"
          },
          "billingAddressKeys": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Indexes of entries in addresses to set as billing addresses. The billingAddressIds of the\n[Customer](https://docs.commercetools.com/api/projects/customers) will be replaced by these addresses.\n"
          },
          "contactEmail": {
            "type": "string",
            "description": "The email address of the company.\n"
          },
          "custom": {
            "$ref": "#/types/commercetools:index%2FBusinessUnitCompanyCustom:BusinessUnitCompanyCustom",
            "description": "Custom fields for this resource.\n"
          },
          "defaultBillingAddressKey": {
            "type": "string",
            "description": "Index of the entry in addresses to set as the default billing address.\n"
          },
          "defaultShippingAddressKey": {
            "type": "string",
            "description": "Index of the entry in addresses to set as the default shipping address.\n"
          },
          "key": {
            "type": "string",
            "description": "User-defined unique key for the company. Must be unique within the project. Updating this value is not supported.\n"
          },
          "name": {
            "type": "string",
            "description": "The name of the company.\n"
          },
          "shippingAddressKeys": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Indexes of entries in addresses to set as shipping addresses. The shippingAddressIds of the\n[Customer](https://docs.commercetools.com/api/projects/customers) will be replaced by these addresses.\n"
          },
          "status": {
            "type": "string",
            "description": "The status of the company.\n"
          },
          "stores": {
            "type": "array",
            "items": {
              "$ref": "#/types/commercetools:index%2FBusinessUnitCompanyStore:BusinessUnitCompanyStore"
            },
            "description": "Sets the Stores the Business Unit is associated with. If the Business Unit has Stores defined, then all of its Carts,\nOrders, Quotes, or Quote Requests must belong to one of the Business Unit's Stores. If the Business Unit has no Stores,\nthen all of its Carts, Orders, Quotes, or Quote Requests must not belong to any Store.\n"
          },
          "version": {
            "type": "number",
            "description": "The current version of the company.\n"
          }
        },
        "type": "object"
      }
    },
    "commercetools:index/businessUnitDivision:BusinessUnitDivision": {
      "description": "business unit type to represent the top level of a business. Contains specific fields and values that differentiate a Division from the generic BusinessUnit.\n\nSee also the business unit API Documentation User-defined unique key for the division. Must be unique within the project. Updating this value is not supported.\n- `name` (String) The name of the division.\n",
      "properties": {
        "addresses": {
          "type": "array",
          "items": {
            "$ref": "#/types/commercetools:index%2FBusinessUnitDivisionAddress:BusinessUnitDivisionAddress"
          },
          "description": "Addresses used by the Business Unit.\n"
        },
        "approvalRuleMode": {
          "type": "string",
          "description": "Determines whether the business unit can inherit Approval Rules from a parent. Defaults to `ExplicitAndFromParent`.\n"
        },
        "associateMode": {
          "type": "string",
          "description": "Determines whether the business unit can inherit Associates from a parent. Defaults to `ExplicitAndFromParent`.\n"
        },
        "billingAddressKeys": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of the billing addresses used by the division.\n"
        },
        "contactEmail": {
          "type": "string",
          "description": "The email address of the division.\n"
        },
        "custom": {
          "$ref": "#/types/commercetools:index%2FBusinessUnitDivisionCustom:BusinessUnitDivisionCustom",
          "description": "Custom fields for this resource.\n"
        },
        "defaultBillingAddressKey": {
          "type": "string",
          "description": "Key of the default billing Address.\n"
        },
        "defaultShippingAddressKey": {
          "type": "string",
          "description": "Key of the default shipping Address.\n"
        },
        "key": {
          "type": "string",
          "description": "User-defined unique key for the division. Must be unique within the project. Updating this value is not supported.\n"
        },
        "name": {
          "type": "string",
          "description": "The name of the division.\n"
        },
        "parentUnit": {
          "$ref": "#/types/commercetools:index%2FBusinessUnitDivisionParentUnit:BusinessUnitDivisionParentUnit",
          "description": "Reference to a parent business unit by its key or id. One of either is required.\n"
        },
        "shippingAddressKeys": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of the shipping addresses used by the division.\n"
        },
        "status": {
          "type": "string",
          "description": "Indicates whether the business unit can be edited and used in\n[Orders](https://docs.commercetools.com/api/projects/orders). Defaults to `Active`.\n"
        },
        "storeMode": {
          "type": "string",
          "description": "Defines whether the Stores of the business unit are set directly on the business unit or are inherited from a parent.\nDefaults to `FromParent`\n"
        },
        "stores": {
          "type": "array",
          "items": {
            "$ref": "#/types/commercetools:index%2FBusinessUnitDivisionStore:BusinessUnitDivisionStore"
          },
          "description": "Sets the Stores the Business Unit is associated with. If the Business Unit has Stores defined, then all of its Carts,\nOrders, Quotes, or Quote Requests must belong to one of the Business Unit's Stores. If the Business Unit has no Stores,\nthen all of its Carts, Orders, Quotes, or Quote Requests must not belong to any Store.\n"
        },
        "version": {
          "type": "number",
          "description": "The current version of the division.\n"
        }
      },
      "type": "object",
      "required": [
        "approvalRuleMode",
        "associateMode",
        "key",
        "name",
        "status",
        "storeMode",
        "version"
      ],
      "inputProperties": {
        "addresses": {
          "type": "array",
          "items": {
            "$ref": "#/types/commercetools:index%2FBusinessUnitDivisionAddress:BusinessUnitDivisionAddress"
          },
          "description": "Addresses used by the Business Unit.\n"
        },
        "approvalRuleMode": {
          "type": "string",
          "description": "Determines whether the business unit can inherit Approval Rules from a parent. Defaults to `ExplicitAndFromParent`.\n"
        },
        "associateMode": {
          "type": "string",
          "description": "Determines whether the business unit can inherit Associates from a parent. Defaults to `ExplicitAndFromParent`.\n"
        },
        "billingAddressKeys": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of the billing addresses used by the division.\n"
        },
        "contactEmail": {
          "type": "string",
          "description": "The email address of the division.\n"
        },
        "custom": {
          "$ref": "#/types/commercetools:index%2FBusinessUnitDivisionCustom:BusinessUnitDivisionCustom",
          "description": "Custom fields for this resource.\n"
        },
        "defaultBillingAddressKey": {
          "type": "string",
          "description": "Key of the default billing Address.\n"
        },
        "defaultShippingAddressKey": {
          "type": "string",
          "description": "Key of the default shipping Address.\n"
        },
        "key": {
          "type": "string",
          "description": "User-defined unique key for the division. Must be unique within the project. Updating this value is not supported.\n"
        },
        "name": {
          "type": "string",
          "description": "The name of the division.\n"
        },
        "parentUnit": {
          "$ref": "#/types/commercetools:index%2FBusinessUnitDivisionParentUnit:BusinessUnitDivisionParentUnit",
          "description": "Reference to a parent business unit by its key or id. One of either is required.\n"
        },
        "shippingAddressKeys": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of the shipping addresses used by the division.\n"
        },
        "status": {
          "type": "string",
          "description": "Indicates whether the business unit can be edited and used in\n[Orders](https://docs.commercetools.com/api/projects/orders). Defaults to `Active`.\n"
        },
        "storeMode": {
          "type": "string",
          "description": "Defines whether the Stores of the business unit are set directly on the business unit or are inherited from a parent.\nDefaults to `FromParent`\n"
        },
        "stores": {
          "type": "array",
          "items": {
            "$ref": "#/types/commercetools:index%2FBusinessUnitDivisionStore:BusinessUnitDivisionStore"
          },
          "description": "Sets the Stores the Business Unit is associated with. If the Business Unit has Stores defined, then all of its Carts,\nOrders, Quotes, or Quote Requests must belong to one of the Business Unit's Stores. If the Business Unit has no Stores,\nthen all of its Carts, Orders, Quotes, or Quote Requests must not belong to any Store.\n"
        }
      },
      "requiredInputs": [
        "key"
      ],
      "stateInputs": {
        "description": "Input properties used for looking up and filtering BusinessUnitDivision resources.\n",
        "properties": {
          "addresses": {
            "type": "array",
            "items": {
              "$ref": "#/types/commercetools:index%2FBusinessUnitDivisionAddress:BusinessUnitDivisionAddress"
            },
            "description": "Addresses used by the Business Unit.\n"
          },
          "approvalRuleMode": {
            "type": "string",
            "description": "Determines whether the business unit can inherit Approval Rules from a parent. Defaults to `ExplicitAndFromParent`.\n"
          },
          "associateMode": {
            "type": "string",
            "description": "Determines whether the business unit can inherit Associates from a parent. Defaults to `ExplicitAndFromParent`.\n"
          },
          "billingAddressKeys": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "List of the billing addresses used by the division.\n"
          },
          "contactEmail": {
            "type": "string",
            "description": "The email address of the division.\n"
          },
          "custom": {
            "$ref": "#/types/commercetools:index%2FBusinessUnitDivisionCustom:BusinessUnitDivisionCustom",
            "description": "Custom fields for this resource.\n"
          },
          "defaultBillingAddressKey": {
            "type": "string",
            "description": "Key of the default billing Address.\n"
          },
          "defaultShippingAddressKey": {
            "type": "string",
            "description": "Key of the default shipping Address.\n"
          },
          "key": {
            "type": "string",
            "description": "User-defined unique key for the division. Must be unique within the project. Updating this value is not supported.\n"
          },
          "name": {
            "type": "string",
            "description": "The name of the division.\n"
          },
          "parentUnit": {
            "$ref": "#/types/commercetools:index%2FBusinessUnitDivisionParentUnit:BusinessUnitDivisionParentUnit",
            "description": "Reference to a parent business unit by its key or id. One of either is required.\n"
          },
          "shippingAddressKeys": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "List of the shipping addresses used by the division.\n"
          },
          "status": {
            "type": "string",
            "description": "Indicates whether the business unit can be edited and used in\n[Orders](https://docs.commercetools.com/api/projects/orders). Defaults to `Active`.\n"
          },
          "storeMode": {
            "type": "string",
            "description": "Defines whether the Stores of the business unit are set directly on the business unit or are inherited from a parent.\nDefaults to `FromParent`\n"
          },
          "stores": {
            "type": "array",
            "items": {
              "$ref": "#/types/commercetools:index%2FBusinessUnitDivisionStore:BusinessUnitDivisionStore"
            },
            "description": "Sets the Stores the Business Unit is associated with. If the Business Unit has Stores defined, then all of its Carts,\nOrders, Quotes, or Quote Requests must belong to one of the Business Unit's Stores. If the Business Unit has no Stores,\nthen all of its Carts, Orders, Quotes, or Quote Requests must not belong to any Store.\n"
          },
          "version": {
            "type": "number",
            "description": "The current version of the division.\n"
          }
        },
        "type": "object"
      }
    },
    "commercetools:index/cartDiscount:CartDiscount": {
      "description": "Cart discounts are used to change the prices of different elements within a cart.\n\nSee also the [Cart Discount API Documentation](https://docs.commercetools.com/api/projects/cartDiscounts)\n\n## Example Usage\n\n<!--Start PulumiCodeChooser -->\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as commercetools from \"@pulumi/commercetools\";\n\n// With target multiBuyCustomLineItems and discount value relative\nconst my_cart_discount = new commercetools.CartDiscount(\"my-cart-discount\", {\n    key: \"my-cart-discount-key\",\n    name: {\n        en: \"My Discount name\",\n    },\n    predicate: \"any-predicate\",\n    sortOrder: \"0.8\",\n    target: {\n        discountedQuantity: 1,\n        maxOccurrence: 1,\n        predicate: \"1=1\",\n        selectionMode: \"MostExpensive\",\n        triggerQuantity: 2,\n        type: \"multiBuyCustomLineItems\",\n    },\n    value: {\n        permyriad: 1000,\n        type: \"relative\",\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_commercetools as commercetools\n\n# With target multiBuyCustomLineItems and discount value relative\nmy_cart_discount = commercetools.CartDiscount(\"my-cart-discount\",\n    key=\"my-cart-discount-key\",\n    name={\n        \"en\": \"My Discount name\",\n    },\n    predicate=\"any-predicate\",\n    sort_order=\"0.8\",\n    target={\n        \"discounted_quantity\": 1,\n        \"max_occurrence\": 1,\n        \"predicate\": \"1=1\",\n        \"selection_mode\": \"MostExpensive\",\n        \"trigger_quantity\": 2,\n        \"type\": \"multiBuyCustomLineItems\",\n    },\n    value={\n        \"permyriad\": 1000,\n        \"type\": \"relative\",\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Commercetools = Pulumi.Commercetools;\n\nreturn await Deployment.RunAsync(() => \n{\n    // With target multiBuyCustomLineItems and discount value relative\n    var my_cart_discount = new Commercetools.CartDiscount(\"my-cart-discount\", new()\n    {\n        Key = \"my-cart-discount-key\",\n        Name = \n        {\n            { \"en\", \"My Discount name\" },\n        },\n        Predicate = \"any-predicate\",\n        SortOrder = \"0.8\",\n        Target = new Commercetools.Inputs.CartDiscountTargetArgs\n        {\n            DiscountedQuantity = 1,\n            MaxOccurrence = 1,\n            Predicate = \"1=1\",\n            SelectionMode = \"MostExpensive\",\n            TriggerQuantity = 2,\n            Type = \"multiBuyCustomLineItems\",\n        },\n        Value = new Commercetools.Inputs.CartDiscountValueArgs\n        {\n            Permyriad = 1000,\n            Type = \"relative\",\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/commercetools/commercetools\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// With target multiBuyCustomLineItems and discount value relative\n\t\t_, err := commercetools.NewCartDiscount(ctx, \"my-cart-discount\", &commercetools.CartDiscountArgs{\n\t\t\tKey: pulumi.String(\"my-cart-discount-key\"),\n\t\t\tName: pulumi.StringMap{\n\t\t\t\t\"en\": pulumi.String(\"My Discount name\"),\n\t\t\t},\n\t\t\tPredicate: pulumi.String(\"any-predicate\"),\n\t\t\tSortOrder: pulumi.String(\"0.8\"),\n\t\t\tTarget: &commercetools.CartDiscountTargetArgs{\n\t\t\t\tDiscountedQuantity: pulumi.Float64(1),\n\t\t\t\tMaxOccurrence:      pulumi.Float64(1),\n\t\t\t\tPredicate:          pulumi.String(\"1=1\"),\n\t\t\t\tSelectionMode:      pulumi.String(\"MostExpensive\"),\n\t\t\t\tTriggerQuantity:    pulumi.Float64(2),\n\t\t\t\tType:               pulumi.String(\"multiBuyCustomLineItems\"),\n\t\t\t},\n\t\t\tValue: &commercetools.CartDiscountValueArgs{\n\t\t\t\tPermyriad: pulumi.Float64(1000),\n\t\t\t\tType:      pulumi.String(\"relative\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.commercetools.CartDiscount;\nimport com.pulumi.commercetools.CartDiscountArgs;\nimport com.pulumi.commercetools.inputs.CartDiscountTargetArgs;\nimport com.pulumi.commercetools.inputs.CartDiscountValueArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        // With target multiBuyCustomLineItems and discount value relative\n        var my_cart_discount = new CartDiscount(\"my-cart-discount\", CartDiscountArgs.builder()\n            .key(\"my-cart-discount-key\")\n            .name(Map.of(\"en\", \"My Discount name\"))\n            .predicate(\"any-predicate\")\n            .sortOrder(\"0.8\")\n            .target(CartDiscountTargetArgs.builder()\n                .discountedQuantity(\"1\")\n                .maxOccurrence(\"1\")\n                .predicate(\"1=1\")\n                .selectionMode(\"MostExpensive\")\n                .triggerQuantity(\"2\")\n                .type(\"multiBuyCustomLineItems\")\n                .build())\n            .value(CartDiscountValueArgs.builder()\n                .permyriad(1000)\n                .type(\"relative\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  # With target multiBuyCustomLineItems and discount value relative\n  my-cart-discount:\n    type: commercetools:CartDiscount\n    properties:\n      key: my-cart-discount-key\n      name:\n        en: My Discount name\n      predicate: any-predicate\n      sortOrder: '0.8'\n      target:\n        discountedQuantity: '1'\n        maxOccurrence: '1'\n        predicate: 1=1\n        selectionMode: MostExpensive\n        triggerQuantity: '2'\n        type: multiBuyCustomLineItems\n      value:\n        permyriad: 1000\n        type: relative\n```\n<!--End PulumiCodeChooser -->\n",
      "properties": {
        "cartDiscountId": {
          "type": "string",
          "description": "The ID of this resource.\n"
        },
        "custom": {
          "$ref": "#/types/commercetools:index%2FCartDiscountCustom:CartDiscountCustom"
        },
        "description": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "[LocalizedString](https://docs.commercetools.com/api/types#localizedstring)\n"
        },
        "isActive": {
          "type": "boolean",
          "description": "Only active discount can be applied to the cart\n"
        },
        "key": {
          "type": "string",
          "description": "User-specific unique identifier for a cart discount. Must be unique across a project\n"
        },
        "name": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "[LocalizedString](https://docs.commercetools.com/api/types#localizedstring)\n"
        },
        "predicate": {
          "type": "string",
          "description": "A valid [Cart Predicate](https://docs.commercetools.com/api/projects/predicates#cart-predicates)\n"
        },
        "requiresDiscountCode": {
          "type": "boolean",
          "description": "States whether the discount can only be used in a connection with a [DiscountCode](https://docs.commercetools.com/api/projects/discountCodes#discountcode)\n"
        },
        "sortOrder": {
          "type": "string",
          "description": "The string must contain a number between 0 and 1. All matching cart discounts are applied to a cart in the order defined by this field. A discount with greater sort order is prioritized higher than a discount with lower sort order. The sort order is unambiguous among all cart discounts\n"
        },
        "stackingMode": {
          "type": "string",
          "description": "Specifies whether the application of this discount causes the following discounts to be ignored. Can be either Stacking or StopAfterThisDiscount\n"
        },
        "stores": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "If a value exists, the Cart Discount applies on Carts having a Store matching any Store defined for this field. If empty, the Cart Discount applies on all Carts, irrespective of a Store. Use store keys as references\n"
        },
        "target": {
          "$ref": "#/types/commercetools:index%2FCartDiscountTarget:CartDiscountTarget",
          "description": "Empty when the value has type giftLineItem, otherwise a [CartDiscountTarget](https://docs.commercetools.com/api/projects/cartDiscounts#cartdiscounttarget)\n"
        },
        "validFrom": {
          "type": "string"
        },
        "validUntil": {
          "type": "string"
        },
        "value": {
          "$ref": "#/types/commercetools:index%2FCartDiscountValue:CartDiscountValue",
          "description": "Defines the effect the discount will have. [CartDiscountValue](https://docs.commercetools.com/api/projects/cartDiscounts#cartdiscountvalue)\n"
        },
        "version": {
          "type": "number"
        }
      },
      "type": "object",
      "required": [
        "cartDiscountId",
        "name",
        "predicate",
        "sortOrder",
        "value",
        "version"
      ],
      "inputProperties": {
        "cartDiscountId": {
          "type": "string",
          "description": "The ID of this resource.\n"
        },
        "custom": {
          "$ref": "#/types/commercetools:index%2FCartDiscountCustom:CartDiscountCustom"
        },
        "description": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "[LocalizedString](https://docs.commercetools.com/api/types#localizedstring)\n"
        },
        "isActive": {
          "type": "boolean",
          "description": "Only active discount can be applied to the cart\n"
        },
        "key": {
          "type": "string",
          "description": "User-specific unique identifier for a cart discount. Must be unique across a project\n"
        },
        "name": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "[LocalizedString](https://docs.commercetools.com/api/types#localizedstring)\n"
        },
        "predicate": {
          "type": "string",
          "description": "A valid [Cart Predicate](https://docs.commercetools.com/api/projects/predicates#cart-predicates)\n"
        },
        "requiresDiscountCode": {
          "type": "boolean",
          "description": "States whether the discount can only be used in a connection with a [DiscountCode](https://docs.commercetools.com/api/projects/discountCodes#discountcode)\n"
        },
        "sortOrder": {
          "type": "string",
          "description": "The string must contain a number between 0 and 1. All matching cart discounts are applied to a cart in the order defined by this field. A discount with greater sort order is prioritized higher than a discount with lower sort order. The sort order is unambiguous among all cart discounts\n"
        },
        "stackingMode": {
          "type": "string",
          "description": "Specifies whether the application of this discount causes the following discounts to be ignored. Can be either Stacking or StopAfterThisDiscount\n"
        },
        "stores": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "If a value exists, the Cart Discount applies on Carts having a Store matching any Store defined for this field. If empty, the Cart Discount applies on all Carts, irrespective of a Store. Use store keys as references\n"
        },
        "target": {
          "$ref": "#/types/commercetools:index%2FCartDiscountTarget:CartDiscountTarget",
          "description": "Empty when the value has type giftLineItem, otherwise a [CartDiscountTarget](https://docs.commercetools.com/api/projects/cartDiscounts#cartdiscounttarget)\n"
        },
        "validFrom": {
          "type": "string"
        },
        "validUntil": {
          "type": "string"
        },
        "value": {
          "$ref": "#/types/commercetools:index%2FCartDiscountValue:CartDiscountValue",
          "description": "Defines the effect the discount will have. [CartDiscountValue](https://docs.commercetools.com/api/projects/cartDiscounts#cartdiscountvalue)\n"
        }
      },
      "requiredInputs": [
        "name",
        "predicate",
        "sortOrder",
        "value"
      ],
      "stateInputs": {
        "description": "Input properties used for looking up and filtering CartDiscount resources.\n",
        "properties": {
          "cartDiscountId": {
            "type": "string",
            "description": "The ID of this resource.\n"
          },
          "custom": {
            "$ref": "#/types/commercetools:index%2FCartDiscountCustom:CartDiscountCustom"
          },
          "description": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "description": "[LocalizedString](https://docs.commercetools.com/api/types#localizedstring)\n"
          },
          "isActive": {
            "type": "boolean",
            "description": "Only active discount can be applied to the cart\n"
          },
          "key": {
            "type": "string",
            "description": "User-specific unique identifier for a cart discount. Must be unique across a project\n"
          },
          "name": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "description": "[LocalizedString](https://docs.commercetools.com/api/types#localizedstring)\n"
          },
          "predicate": {
            "type": "string",
            "description": "A valid [Cart Predicate](https://docs.commercetools.com/api/projects/predicates#cart-predicates)\n"
          },
          "requiresDiscountCode": {
            "type": "boolean",
            "description": "States whether the discount can only be used in a connection with a [DiscountCode](https://docs.commercetools.com/api/projects/discountCodes#discountcode)\n"
          },
          "sortOrder": {
            "type": "string",
            "description": "The string must contain a number between 0 and 1. All matching cart discounts are applied to a cart in the order defined by this field. A discount with greater sort order is prioritized higher than a discount with lower sort order. The sort order is unambiguous among all cart discounts\n"
          },
          "stackingMode": {
            "type": "string",
            "description": "Specifies whether the application of this discount causes the following discounts to be ignored. Can be either Stacking or StopAfterThisDiscount\n"
          },
          "stores": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "If a value exists, the Cart Discount applies on Carts having a Store matching any Store defined for this field. If empty, the Cart Discount applies on all Carts, irrespective of a Store. Use store keys as references\n"
          },
          "target": {
            "$ref": "#/types/commercetools:index%2FCartDiscountTarget:CartDiscountTarget",
            "description": "Empty when the value has type giftLineItem, otherwise a [CartDiscountTarget](https://docs.commercetools.com/api/projects/cartDiscounts#cartdiscounttarget)\n"
          },
          "validFrom": {
            "type": "string"
          },
          "validUntil": {
            "type": "string"
          },
          "value": {
            "$ref": "#/types/commercetools:index%2FCartDiscountValue:CartDiscountValue",
            "description": "Defines the effect the discount will have. [CartDiscountValue](https://docs.commercetools.com/api/projects/cartDiscounts#cartdiscountvalue)\n"
          },
          "version": {
            "type": "number"
          }
        },
        "type": "object"
      }
    },
    "commercetools:index/category:Category": {
      "description": "Categories allow you to organize products into hierarchical structures.\n\nAlso see the [Categories HTTP API documentation](https://docs.commercetools.com/api/projects/categories).\n\n## Example Usage\n\n<!--Start PulumiCodeChooser -->\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as commercetools from \"@pulumi/commercetools\";\n\nconst my_category = new commercetools.Category(\"my-category\", {\n    key: \"my-category-key\",\n    name: {\n        en: \"My category\",\n    },\n    description: {\n        en: \"Standard description\",\n    },\n    slug: {\n        en: \"my_category\",\n    },\n    metaTitle: {\n        en: \"Meta title\",\n    },\n});\nconst my_second_category = new commercetools.Category(\"my-second-category\", {\n    key: \"my-category-key\",\n    name: {\n        en: \"Second category\",\n    },\n    description: {\n        en: \"Standard description\",\n    },\n    parent: my_category.categoryId,\n    slug: {\n        en: \"my_second_category\",\n    },\n    metaTitle: {\n        en: \"Meta title\",\n    },\n    assets: [{\n        key: \"some_key\",\n        name: {\n            en: \"Image name\",\n        },\n        description: {\n            en: \"Image description\",\n        },\n        sources: [{\n            uri: \"https://example.com/test.jpg\",\n            key: \"image\",\n        }],\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumi_commercetools as commercetools\n\nmy_category = commercetools.Category(\"my-category\",\n    key=\"my-category-key\",\n    name={\n        \"en\": \"My category\",\n    },\n    description={\n        \"en\": \"Standard description\",\n    },\n    slug={\n        \"en\": \"my_category\",\n    },\n    meta_title={\n        \"en\": \"Meta title\",\n    })\nmy_second_category = commercetools.Category(\"my-second-category\",\n    key=\"my-category-key\",\n    name={\n        \"en\": \"Second category\",\n    },\n    description={\n        \"en\": \"Standard description\",\n    },\n    parent=my_category.category_id,\n    slug={\n        \"en\": \"my_second_category\",\n    },\n    meta_title={\n        \"en\": \"Meta title\",\n    },\n    assets=[{\n        \"key\": \"some_key\",\n        \"name\": {\n            \"en\": \"Image name\",\n        },\n        \"description\": {\n            \"en\": \"Image description\",\n        },\n        \"sources\": [{\n            \"uri\": \"https://example.com/test.jpg\",\n            \"key\": \"image\",\n        }],\n    }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Commercetools = Pulumi.Commercetools;\n\nreturn await Deployment.RunAsync(() => \n{\n    var my_category = new Commercetools.Category(\"my-category\", new()\n    {\n        Key = \"my-category-key\",\n        Name = \n        {\n            { \"en\", \"My category\" },\n        },\n        Description = \n        {\n            { \"en\", \"Standard description\" },\n        },\n        Slug = \n        {\n            { \"en\", \"my_category\" },\n        },\n        MetaTitle = \n        {\n            { \"en\", \"Meta title\" },\n        },\n    });\n\n    var my_second_category = new Commercetools.Category(\"my-second-category\", new()\n    {\n        Key = \"my-category-key\",\n        Name = \n        {\n            { \"en\", \"Second category\" },\n        },\n        Description = \n        {\n            { \"en\", \"Standard description\" },\n        },\n        Parent = my_category.CategoryId,\n        Slug = \n        {\n            { \"en\", \"my_second_category\" },\n        },\n        MetaTitle = \n        {\n            { \"en\", \"Meta title\" },\n        },\n        Assets = new[]\n        {\n            new Commercetools.Inputs.CategoryAssetArgs\n            {\n                Key = \"some_key\",\n                Name = \n                {\n                    { \"en\", \"Image name\" },\n                },\n                Description = \n                {\n                    { \"en\", \"Image description\" },\n                },\n                Sources = new[]\n                {\n                    new Commercetools.Inputs.CategoryAssetSourceArgs\n                    {\n                        Uri = \"https://example.com/test.jpg\",\n                        Key = \"image\",\n                    },\n                },\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/commercetools/commercetools\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmy_category, err := commercetools.NewCategory(ctx, \"my-category\", &commercetools.CategoryArgs{\n\t\t\tKey: pulumi.String(\"my-category-key\"),\n\t\t\tName: pulumi.StringMap{\n\t\t\t\t\"en\": pulumi.String(\"My category\"),\n\t\t\t},\n\t\t\tDescription: pulumi.StringMap{\n\t\t\t\t\"en\": pulumi.String(\"Standard description\"),\n\t\t\t},\n\t\t\tSlug: pulumi.StringMap{\n\t\t\t\t\"en\": pulumi.String(\"my_category\"),\n\t\t\t},\n\t\t\tMetaTitle: pulumi.StringMap{\n\t\t\t\t\"en\": pulumi.String(\"Meta title\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = commercetools.NewCategory(ctx, \"my-second-category\", &commercetools.CategoryArgs{\n\t\t\tKey: pulumi.String(\"my-category-key\"),\n\t\t\tName: pulumi.StringMap{\n\t\t\t\t\"en\": pulumi.String(\"Second category\"),\n\t\t\t},\n\t\t\tDescription: pulumi.StringMap{\n\t\t\t\t\"en\": pulumi.String(\"Standard description\"),\n\t\t\t},\n\t\t\tParent: my_category.CategoryId,\n\t\t\tSlug: pulumi.StringMap{\n\t\t\t\t\"en\": pulumi.String(\"my_second_category\"),\n\t\t\t},\n\t\t\tMetaTitle: pulumi.StringMap{\n\t\t\t\t\"en\": pulumi.String(\"Meta title\"),\n\t\t\t},\n\t\t\tAssets: commercetools.CategoryAssetArray{\n\t\t\t\t&commercetools.CategoryAssetArgs{\n\t\t\t\t\tKey: pulumi.String(\"some_key\"),\n\t\t\t\t\tName: pulumi.StringMap{\n\t\t\t\t\t\t\"en\": pulumi.String(\"Image name\"),\n\t\t\t\t\t},\n\t\t\t\t\tDescription: pulumi.StringMap{\n\t\t\t\t\t\t\"en\": pulumi.String(\"Image description\"),\n\t\t\t\t\t},\n\t\t\t\t\tSources: commercetools.CategoryAssetSourceArray{\n\t\t\t\t\t\t&commercetools.CategoryAssetSourceArgs{\n\t\t\t\t\t\t\tUri: pulumi.String(\"https://example.com/test.jpg\"),\n\t\t\t\t\t\t\tKey: pulumi.String(\"image\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.commercetools.Category;\nimport com.pulumi.commercetools.CategoryArgs;\nimport com.pulumi.commercetools.inputs.CategoryAssetArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var my_category = new Category(\"my-category\", CategoryArgs.builder()\n            .key(\"my-category-key\")\n            .name(Map.of(\"en\", \"My category\"))\n            .description(Map.of(\"en\", \"Standard description\"))\n            .slug(Map.of(\"en\", \"my_category\"))\n            .metaTitle(Map.of(\"en\", \"Meta title\"))\n            .build());\n\n        var my_second_category = new Category(\"my-second-category\", CategoryArgs.builder()\n            .key(\"my-category-key\")\n            .name(Map.of(\"en\", \"Second category\"))\n            .description(Map.of(\"en\", \"Standard description\"))\n            .parent(my_category.categoryId())\n            .slug(Map.of(\"en\", \"my_second_category\"))\n            .metaTitle(Map.of(\"en\", \"Meta title\"))\n            .assets(CategoryAssetArgs.builder()\n                .key(\"some_key\")\n                .name(Map.of(\"en\", \"Image name\"))\n                .description(Map.of(\"en\", \"Image description\"))\n                .sources(CategoryAssetSourceArgs.builder()\n                    .uri(\"https://example.com/test.jpg\")\n                    .key(\"image\")\n                    .build())\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  my-category:\n    type: commercetools:Category\n    properties:\n      key: my-category-key\n      name:\n        en: My category\n      description:\n        en: Standard description\n      slug:\n        en: my_category\n      metaTitle:\n        en: Meta title\n  my-second-category:\n    type: commercetools:Category\n    properties:\n      key: my-category-key\n      name:\n        en: Second category\n      description:\n        en: Standard description\n      parent: ${[\"my-category\"].categoryId}\n      slug:\n        en: my_second_category\n      metaTitle:\n        en: Meta title\n      assets:\n        - key: some_key\n          name:\n            en: Image name\n          description:\n            en: Image description\n          sources:\n            - uri: https://example.com/test.jpg\n              key: image\n```\n<!--End PulumiCodeChooser -->\n",
      "properties": {
        "assets": {
          "type": "array",
          "items": {
            "$ref": "#/types/commercetools:index%2FCategoryAsset:CategoryAsset"
          },
          "description": "Can be used to store images, icons or movies related to this category\n"
        },
        "categoryId": {
          "type": "string",
          "description": "The ID of this resource.\n"
        },
        "custom": {
          "$ref": "#/types/commercetools:index%2FCategoryCustom:CategoryCustom"
        },
        "description": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "externalId": {
          "type": "string"
        },
        "key": {
          "type": "string",
          "description": "Category-specific unique identifier. Must be unique across a project\n"
        },
        "metaDescription": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "metaKeywords": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "metaTitle": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "name": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "orderHint": {
          "type": "string",
          "description": "An attribute as base for a custom category order in one level, filled with random value when left empty\n"
        },
        "parent": {
          "type": "string",
          "description": "A category that is the parent of this category in the category tree\n"
        },
        "slug": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Human readable identifiers, needs to be unique\n"
        },
        "version": {
          "type": "number"
        }
      },
      "type": "object",
      "required": [
        "categoryId",
        "name",
        "slug",
        "version"
      ],
      "inputProperties": {
        "assets": {
          "type": "array",
          "items": {
            "$ref": "#/types/commercetools:index%2FCategoryAsset:CategoryAsset"
          },
          "description": "Can be used to store images, icons or movies related to this category\n"
        },
        "categoryId": {
          "type": "string",
          "description": "The ID of this resource.\n"
        },
        "custom": {
          "$ref": "#/types/commercetools:index%2FCategoryCustom:CategoryCustom"
        },
        "description": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "externalId": {
          "type": "string"
        },
        "key": {
          "type": "string",
          "description": "Category-specific unique identifier. Must be unique across a project\n"
        },
        "metaDescription": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "metaKeywords": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "metaTitle": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "name": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "orderHint": {
          "type": "string",
          "description": "An attribute as base for a custom category order in one level, filled with random value when left empty\n"
        },
        "parent": {
          "type": "string",
          "description": "A category that is the parent of this category in the category tree\n"
        },
        "slug": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Human readable identifiers, needs to be unique\n"
        }
      },
      "requiredInputs": [
        "name",
        "slug"
      ],
      "stateInputs": {
        "description": "Input properties used for looking up and filtering Category resources.\n",
        "properties": {
          "assets": {
            "type": "array",
            "items": {
              "$ref": "#/types/commercetools:index%2FCategoryAsset:CategoryAsset"
            },
            "description": "Can be used to store images, icons or movies related to this category\n"
          },
          "categoryId": {
            "type": "string",
            "description": "The ID of this resource.\n"
          },
          "custom": {
            "$ref": "#/types/commercetools:index%2FCategoryCustom:CategoryCustom"
          },
          "description": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "externalId": {
            "type": "string"
          },
          "key": {
            "type": "string",
            "description": "Category-specific unique identifier. Must be unique across a project\n"
          },
          "metaDescription": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "metaKeywords": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "metaTitle": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "name": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "orderHint": {
            "type": "string",
            "description": "An attribute as base for a custom category order in one level, filled with random value when left empty\n"
          },
          "parent": {
            "type": "string",
            "description": "A category that is the parent of this category in the category tree\n"
          },
          "slug": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "description": "Human readable identifiers, needs to be unique\n"
          },
          "version": {
            "type": "number"
          }
        },
        "type": "object"
      }
    },
    "commercetools:index/channel:Channel": {
      "description": "Channels represent a source or destination of different entities. They can be used to model warehouses or stores.\n\nSee also the [Channels API Documentation](https://docs.commercetools.com/api/projects/channels)\n\n## Example Usage\n\n<!--Start PulumiCodeChooser -->\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as commercetools from \"@pulumi/commercetools\";\n\nconst my_channel = new commercetools.Channel(\"my-channel\", {\n    description: {\n        \"nl-NL\": \"Channel\",\n    },\n    key: \"my-channel-key\",\n    name: {\n        \"nl-NL\": \"Channel\",\n    },\n    roles: [\"ProductDistribution\"],\n});\n```\n```python\nimport pulumi\nimport pulumi_commercetools as commercetools\n\nmy_channel = commercetools.Channel(\"my-channel\",\n    description={\n        \"nl-NL\": \"Channel\",\n    },\n    key=\"my-channel-key\",\n    name={\n        \"nl-NL\": \"Channel\",\n    },\n    roles=[\"ProductDistribution\"])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Commercetools = Pulumi.Commercetools;\n\nreturn await Deployment.RunAsync(() => \n{\n    var my_channel = new Commercetools.Channel(\"my-channel\", new()\n    {\n        Description = \n        {\n            { \"nl-NL\", \"Channel\" },\n        },\n        Key = \"my-channel-key\",\n        Name = \n        {\n            { \"nl-NL\", \"Channel\" },\n        },\n        Roles = new[]\n        {\n            \"ProductDistribution\",\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/commercetools/commercetools\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := commercetools.NewChannel(ctx, \"my-channel\", &commercetools.ChannelArgs{\n\t\t\tDescription: pulumi.StringMap{\n\t\t\t\t\"nl-NL\": pulumi.String(\"Channel\"),\n\t\t\t},\n\t\t\tKey: pulumi.String(\"my-channel-key\"),\n\t\t\tName: pulumi.StringMap{\n\t\t\t\t\"nl-NL\": pulumi.String(\"Channel\"),\n\t\t\t},\n\t\t\tRoles: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"ProductDistribution\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.commercetools.Channel;\nimport com.pulumi.commercetools.ChannelArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var my_channel = new Channel(\"my-channel\", ChannelArgs.builder()\n            .description(Map.of(\"nl-NL\", \"Channel\"))\n            .key(\"my-channel-key\")\n            .name(Map.of(\"nl-NL\", \"Channel\"))\n            .roles(\"ProductDistribution\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  my-channel:\n    type: commercetools:Channel\n    properties:\n      description:\n        nl-NL: Channel\n      key: my-channel-key\n      name:\n        nl-NL: Channel\n      roles:\n        - ProductDistribution\n```\n<!--End PulumiCodeChooser -->\n",
      "properties": {
        "address": {
          "$ref": "#/types/commercetools:index%2FChannelAddress:ChannelAddress"
        },
        "channelId": {
          "type": "string",
          "description": "The ID of this resource.\n"
        },
        "custom": {
          "$ref": "#/types/commercetools:index%2FChannelCustom:ChannelCustom"
        },
        "description": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "[LocalizedString](https://docs.commercetools.com/api/types#localizedstring)\n"
        },
        "geolocation": {
          "$ref": "#/types/commercetools:index%2FChannelGeolocation:ChannelGeolocation"
        },
        "key": {
          "type": "string",
          "description": "Any arbitrary string key that uniquely identifies this channel within the project\n"
        },
        "name": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "[LocalizedString](https://docs.commercetools.com/api/types#localizedstring)\n"
        },
        "roles": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The [roles](https://docs.commercetools.com/api/projects/channels#channelroleenum) of this channel. Each channel must have at least one role\n"
        },
        "version": {
          "type": "number"
        }
      },
      "type": "object",
      "required": [
        "channelId",
        "key",
        "roles",
        "version"
      ],
      "inputProperties": {
        "address": {
          "$ref": "#/types/commercetools:index%2FChannelAddress:ChannelAddress"
        },
        "channelId": {
          "type": "string",
          "description": "The ID of this resource.\n"
        },
        "custom": {
          "$ref": "#/types/commercetools:index%2FChannelCustom:ChannelCustom"
        },
        "description": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "[LocalizedString](https://docs.commercetools.com/api/types#localizedstring)\n"
        },
        "geolocation": {
          "$ref": "#/types/commercetools:index%2FChannelGeolocation:ChannelGeolocation"
        },
        "key": {
          "type": "string",
          "description": "Any arbitrary string key that uniquely identifies this channel within the project\n"
        },
        "name": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "[LocalizedString](https://docs.commercetools.com/api/types#localizedstring)\n"
        },
        "roles": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The [roles](https://docs.commercetools.com/api/projects/channels#channelroleenum) of this channel. Each channel must have at least one role\n"
        }
      },
      "requiredInputs": [
        "key",
        "roles"
      ],
      "stateInputs": {
        "description": "Input properties used for looking up and filtering Channel resources.\n",
        "properties": {
          "address": {
            "$ref": "#/types/commercetools:index%2FChannelAddress:ChannelAddress"
          },
          "channelId": {
            "type": "string",
            "description": "The ID of this resource.\n"
          },
          "custom": {
            "$ref": "#/types/commercetools:index%2FChannelCustom:ChannelCustom"
          },
          "description": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "description": "[LocalizedString](https://docs.commercetools.com/api/types#localizedstring)\n"
          },
          "geolocation": {
            "$ref": "#/types/commercetools:index%2FChannelGeolocation:ChannelGeolocation"
          },
          "key": {
            "type": "string",
            "description": "Any arbitrary string key that uniquely identifies this channel within the project\n"
          },
          "name": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "description": "[LocalizedString](https://docs.commercetools.com/api/types#localizedstring)\n"
          },
          "roles": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "The [roles](https://docs.commercetools.com/api/projects/channels#channelroleenum) of this channel. Each channel must have at least one role\n"
          },
          "version": {
            "type": "number"
          }
        },
        "type": "object"
      }
    },
    "commercetools:index/customObject:CustomObject": {
      "description": "Custom objects are a way to store arbitrary JSON-formatted data on the commercetools platform. It allows you to persist data that does not fit the standard data model. This frees your application completely from any third-party persistence solution and means that all your data stays on the commercetools platform.\n\nSee also the [Custom Object API Documentation](https://docs.commercetools.com/api/projects/custom-objects)\n\n## Example Usage\n\n<!--Start PulumiCodeChooser -->\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as commercetools from \"@pulumi/commercetools\";\n\nconst my_custom_object = new commercetools.CustomObject(\"my-custom-object\", {\n    container: \"my-container\",\n    key: \"my-key\",\n    value: JSON.stringify(10),\n});\n```\n```python\nimport pulumi\nimport json\nimport pulumi_commercetools as commercetools\n\nmy_custom_object = commercetools.CustomObject(\"my-custom-object\",\n    container=\"my-container\",\n    key=\"my-key\",\n    value=json.dumps(10))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text.Json;\nusing Pulumi;\nusing Commercetools = Pulumi.Commercetools;\n\nreturn await Deployment.RunAsync(() => \n{\n    var my_custom_object = new Commercetools.CustomObject(\"my-custom-object\", new()\n    {\n        Container = \"my-container\",\n        Key = \"my-key\",\n        Value = JsonSerializer.Serialize(10),\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"encoding/json\"\n\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/commercetools/commercetools\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttmpJSON0, err := json.Marshal(10)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tjson0 := string(tmpJSON0)\n\t\t_, err = commercetools.NewCustomObject(ctx, \"my-custom-object\", &commercetools.CustomObjectArgs{\n\t\t\tContainer: pulumi.String(\"my-container\"),\n\t\t\tKey:       pulumi.String(\"my-key\"),\n\t\t\tValue:     pulumi.String(json0),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.commercetools.CustomObject;\nimport com.pulumi.commercetools.CustomObjectArgs;\nimport static com.pulumi.codegen.internal.Serialization.*;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var my_custom_object = new CustomObject(\"my-custom-object\", CustomObjectArgs.builder()\n            .container(\"my-container\")\n            .key(\"my-key\")\n            .value(serializeJson(\n                10))\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  my-custom-object:\n    type: commercetools:CustomObject\n    properties:\n      container: my-container\n      key: my-key\n      value:\n        fn::toJSON: 10\n```\n<!--End PulumiCodeChooser -->\n",
      "properties": {
        "container": {
          "type": "string",
          "description": "A namespace to group custom objects matching the pattern '[-_~.a-zA-Z0-9]+'\n"
        },
        "customObjectId": {
          "type": "string",
          "description": "The ID of this resource.\n"
        },
        "key": {
          "type": "string",
          "description": "String matching the pattern '[-_~.a-zA-Z0-9]+'\n"
        },
        "value": {
          "type": "string",
          "description": "JSON types Number, String, Boolean, Array, Object\n"
        },
        "version": {
          "type": "number"
        }
      },
      "type": "object",
      "required": [
        "container",
        "customObjectId",
        "key",
        "value",
        "version"
      ],
      "inputProperties": {
        "container": {
          "type": "string",
          "description": "A namespace to group custom objects matching the pattern '[-_~.a-zA-Z0-9]+'\n"
        },
        "customObjectId": {
          "type": "string",
          "description": "The ID of this resource.\n"
        },
        "key": {
          "type": "string",
          "description": "String matching the pattern '[-_~.a-zA-Z0-9]+'\n"
        },
        "value": {
          "type": "string",
          "description": "JSON types Number, String, Boolean, Array, Object\n"
        }
      },
      "requiredInputs": [
        "container",
        "key",
        "value"
      ],
      "stateInputs": {
        "description": "Input properties used for looking up and filtering CustomObject resources.\n",
        "properties": {
          "container": {
            "type": "string",
            "description": "A namespace to group custom objects matching the pattern '[-_~.a-zA-Z0-9]+'\n"
          },
          "customObjectId": {
            "type": "string",
            "description": "The ID of this resource.\n"
          },
          "key": {
            "type": "string",
            "description": "String matching the pattern '[-_~.a-zA-Z0-9]+'\n"
          },
          "value": {
            "type": "string",
            "description": "JSON types Number, String, Boolean, Array, Object\n"
          },
          "version": {
            "type": "number"
          }
        },
        "type": "object"
      }
    },
    "commercetools:index/customerGroup:CustomerGroup": {
      "description": "A Customer can be a member of a customer group (for example reseller, gold member). Special prices can be assigned to specific products based on a customer group.\n\nSee also the [Customer Group API Documentation](https://docs.commercetools.com/api/projects/customerGroups)\n\n## Example Usage\n\n<!--Start PulumiCodeChooser -->\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as commercetools from \"@pulumi/commercetools\";\n\nconst standard = new commercetools.CustomerGroup(\"standard\", {key: \"my-customer-group-key\"});\nconst golden = new commercetools.CustomerGroup(\"golden\", {key: \"my-customer-group-key\"});\n```\n```python\nimport pulumi\nimport pulumi_commercetools as commercetools\n\nstandard = commercetools.CustomerGroup(\"standard\", key=\"my-customer-group-key\")\ngolden = commercetools.CustomerGroup(\"golden\", key=\"my-customer-group-key\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Commercetools = Pulumi.Commercetools;\n\nreturn await Deployment.RunAsync(() => \n{\n    var standard = new Commercetools.CustomerGroup(\"standard\", new()\n    {\n        Key = \"my-customer-group-key\",\n    });\n\n    var golden = new Commercetools.CustomerGroup(\"golden\", new()\n    {\n        Key = \"my-customer-group-key\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/commercetools/commercetools\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := commercetools.NewCustomerGroup(ctx, \"standard\", &commercetools.CustomerGroupArgs{\n\t\t\tKey: pulumi.String(\"my-customer-group-key\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = commercetools.NewCustomerGroup(ctx, \"golden\", &commercetools.CustomerGroupArgs{\n\t\t\tKey: pulumi.String(\"my-customer-group-key\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.commercetools.CustomerGroup;\nimport com.pulumi.commercetools.CustomerGroupArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var standard = new CustomerGroup(\"standard\", CustomerGroupArgs.builder()\n            .key(\"my-customer-group-key\")\n            .build());\n\n        var golden = new CustomerGroup(\"golden\", CustomerGroupArgs.builder()\n            .key(\"my-customer-group-key\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  standard:\n    type: commercetools:CustomerGroup\n    properties:\n      key: my-customer-group-key\n  golden:\n    type: commercetools:CustomerGroup\n    properties:\n      key: my-customer-group-key\n```\n<!--End PulumiCodeChooser -->\n",
      "properties": {
        "custom": {
          "$ref": "#/types/commercetools:index%2FCustomerGroupCustom:CustomerGroupCustom"
        },
        "customerGroupId": {
          "type": "string",
          "description": "The ID of this resource.\n"
        },
        "key": {
          "type": "string",
          "description": "User-specific unique identifier for the customer group\n"
        },
        "name": {
          "type": "string",
          "description": "Unique within the project\n"
        },
        "version": {
          "type": "number"
        }
      },
      "type": "object",
      "required": [
        "customerGroupId",
        "name",
        "version"
      ],
      "inputProperties": {
        "custom": {
          "$ref": "#/types/commercetools:index%2FCustomerGroupCustom:CustomerGroupCustom"
        },
        "customerGroupId": {
          "type": "string",
          "description": "The ID of this resource.\n"
        },
        "key": {
          "type": "string",
          "description": "User-specific unique identifier for the customer group\n"
        },
        "name": {
          "type": "string",
          "description": "Unique within the project\n"
        }
      },
      "stateInputs": {
        "description": "Input properties used for looking up and filtering CustomerGroup resources.\n",
        "properties": {
          "custom": {
            "$ref": "#/types/commercetools:index%2FCustomerGroupCustom:CustomerGroupCustom"
          },
          "customerGroupId": {
            "type": "string",
            "description": "The ID of this resource.\n"
          },
          "key": {
            "type": "string",
            "description": "User-specific unique identifier for the customer group\n"
          },
          "name": {
            "type": "string",
            "description": "Unique within the project\n"
          },
          "version": {
            "type": "number"
          }
        },
        "type": "object"
      }
    },
    "commercetools:index/discountCode:DiscountCode": {
      "description": "With discount codes it is possible to give specific cart discounts to an eligible set of users. They are defined by a string value which can be added to a cart so that specific cart discounts can be applied to the cart.\n\nSee also the [Discount Code Api Documentation](https://docs.commercetools.com/api/projects/discountCodes)\n\n",
      "properties": {
        "cartDiscounts": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The referenced matching cart discounts can be applied to the cart once the DiscountCode is added\n"
        },
        "code": {
          "type": "string",
          "description": "Unique identifier of this discount code. This value is added to the cart to enable the related cart discounts in the cart\n"
        },
        "custom": {
          "$ref": "#/types/commercetools:index%2FDiscountCodeCustom:DiscountCodeCustom"
        },
        "description": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "[LocalizedString](https://docs.commercetools.com/api/types#localizedstring)\n"
        },
        "discountCodeId": {
          "type": "string",
          "description": "The ID of this resource.\n"
        },
        "groups": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The groups to which this discount code belong\n"
        },
        "isActive": {
          "type": "boolean"
        },
        "maxApplications": {
          "type": "number",
          "description": "The discount code can only be applied the specified times overall. Note that due to an engine constraint 0 cannot be set for this field, so possible values are either larger than 0 or not set\n"
        },
        "maxApplicationsPerCustomer": {
          "type": "number",
          "description": "The discount code can only be applied the specified times per customer. Note that due to an engine constraint 0 cannot be set for this field, so possible values are either larger than 0 or not set\n"
        },
        "name": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "[LocalizedString](https://docs.commercetools.com/api/types#localizedstring)\n"
        },
        "predicate": {
          "type": "string",
          "description": "[Cart Predicate](https://docs.commercetools.com/api/projects/predicates#cart-predicates)\n"
        },
        "validFrom": {
          "type": "string",
          "description": "The time from which the discount can be applied on a cart. Before that time the code is invalid\n"
        },
        "validUntil": {
          "type": "string",
          "description": "The time until the discount can be applied on a cart. After that time the code is invalid\n"
        },
        "version": {
          "type": "number"
        }
      },
      "type": "object",
      "required": [
        "cartDiscounts",
        "code",
        "discountCodeId",
        "version"
      ],
      "inputProperties": {
        "cartDiscounts": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The referenced matching cart discounts can be applied to the cart once the DiscountCode is added\n"
        },
        "code": {
          "type": "string",
          "description": "Unique identifier of this discount code. This value is added to the cart to enable the related cart discounts in the cart\n"
        },
        "custom": {
          "$ref": "#/types/commercetools:index%2FDiscountCodeCustom:DiscountCodeCustom"
        },
        "description": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "[LocalizedString](https://docs.commercetools.com/api/types#localizedstring)\n"
        },
        "discountCodeId": {
          "type": "string",
          "description": "The ID of this resource.\n"
        },
        "groups": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The groups to which this discount code belong\n"
        },
        "isActive": {
          "type": "boolean"
        },
        "maxApplications": {
          "type": "number",
          "description": "The discount code can only be applied the specified times overall. Note that due to an engine constraint 0 cannot be set for this field, so possible values are either larger than 0 or not set\n"
        },
        "maxApplicationsPerCustomer": {
          "type": "number",
          "description": "The discount code can only be applied the specified times per customer. Note that due to an engine constraint 0 cannot be set for this field, so possible values are either larger than 0 or not set\n"
        },
        "name": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "[LocalizedString](https://docs.commercetools.com/api/types#localizedstring)\n"
        },
        "predicate": {
          "type": "string",
          "description": "[Cart Predicate](https://docs.commercetools.com/api/projects/predicates#cart-predicates)\n"
        },
        "validFrom": {
          "type": "string",
          "description": "The time from which the discount can be applied on a cart. Before that time the code is invalid\n"
        },
        "validUntil": {
          "type": "string",
          "description": "The time until the discount can be applied on a cart. After that time the code is invalid\n"
        }
      },
      "requiredInputs": [
        "cartDiscounts",
        "code"
      ],
      "stateInputs": {
        "description": "Input properties used for looking up and filtering DiscountCode resources.\n",
        "properties": {
          "cartDiscounts": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "The referenced matching cart discounts can be applied to the cart once the DiscountCode is added\n"
          },
          "code": {
            "type": "string",
            "description": "Unique identifier of this discount code. This value is added to the cart to enable the related cart discounts in the cart\n"
          },
          "custom": {
            "$ref": "#/types/commercetools:index%2FDiscountCodeCustom:DiscountCodeCustom"
          },
          "description": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "description": "[LocalizedString](https://docs.commercetools.com/api/types#localizedstring)\n"
          },
          "discountCodeId": {
            "type": "string",
            "description": "The ID of this resource.\n"
          },
          "groups": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "The groups to which this discount code belong\n"
          },
          "isActive": {
            "type": "boolean"
          },
          "maxApplications": {
            "type": "number",
            "description": "The discount code can only be applied the specified times overall. Note that due to an engine constraint 0 cannot be set for this field, so possible values are either larger than 0 or not set\n"
          },
          "maxApplicationsPerCustomer": {
            "type": "number",
            "description": "The discount code can only be applied the specified times per customer. Note that due to an engine constraint 0 cannot be set for this field, so possible values are either larger than 0 or not set\n"
          },
          "name": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "description": "[LocalizedString](https://docs.commercetools.com/api/types#localizedstring)\n"
          },
          "predicate": {
            "type": "string",
            "description": "[Cart Predicate](https://docs.commercetools.com/api/projects/predicates#cart-predicates)\n"
          },
          "validFrom": {
            "type": "string",
            "description": "The time from which the discount can be applied on a cart. Before that time the code is invalid\n"
          },
          "validUntil": {
            "type": "string",
            "description": "The time until the discount can be applied on a cart. After that time the code is invalid\n"
          },
          "version": {
            "type": "number"
          }
        },
        "type": "object"
      }
    },
    "commercetools:index/productDiscount:ProductDiscount": {
      "description": "Product discounts are used to reduce certain product prices.\n\nAlso see the [Product Discount API Documentation](https://docs.commercetools.com/api/projects/productDiscounts).\n\n## Example Usage\n\n<!--Start PulumiCodeChooser -->\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as commercetools from \"@pulumi/commercetools\";\n\nconst my_product_discount = new commercetools.ProductDiscount(\"my-product-discount\", {\n    description: {\n        en: \"Product discount description\",\n    },\n    isActive: true,\n    key: \"my-product-discount-key\",\n    name: {\n        en: \"Product discount name\",\n    },\n    predicate: \"1=1\",\n    sortOrder: \"0.9\",\n    validFrom: \"2018-01-02T15:04:05Z\",\n    validUntil: \"2019-01-02T15:04:05Z\",\n    value: {\n        permyriad: 1000,\n        type: \"relative\",\n    },\n});\nconst my_product_discount_absolute = new commercetools.ProductDiscount(\"my-product-discount-absolute\", {\n    description: {\n        en: \"Product discount description\",\n    },\n    isActive: true,\n    key: \"my-product-discount-absolute-key\",\n    name: {\n        en: \"Product discount name\",\n    },\n    predicate: \"1=1\",\n    sortOrder: \"0.9\",\n    validFrom: \"2018-01-02T15:04:05Z\",\n    validUntil: \"2019-01-02T15:04:05Z\",\n    value: {\n        monies: [{\n            centAmount: 500,\n            currencyCode: \"EUR\",\n        }],\n        type: \"absolute\",\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_commercetools as commercetools\n\nmy_product_discount = commercetools.ProductDiscount(\"my-product-discount\",\n    description={\n        \"en\": \"Product discount description\",\n    },\n    is_active=True,\n    key=\"my-product-discount-key\",\n    name={\n        \"en\": \"Product discount name\",\n    },\n    predicate=\"1=1\",\n    sort_order=\"0.9\",\n    valid_from=\"2018-01-02T15:04:05Z\",\n    valid_until=\"2019-01-02T15:04:05Z\",\n    value={\n        \"permyriad\": 1000,\n        \"type\": \"relative\",\n    })\nmy_product_discount_absolute = commercetools.ProductDiscount(\"my-product-discount-absolute\",\n    description={\n        \"en\": \"Product discount description\",\n    },\n    is_active=True,\n    key=\"my-product-discount-absolute-key\",\n    name={\n        \"en\": \"Product discount name\",\n    },\n    predicate=\"1=1\",\n    sort_order=\"0.9\",\n    valid_from=\"2018-01-02T15:04:05Z\",\n    valid_until=\"2019-01-02T15:04:05Z\",\n    value={\n        \"monies\": [{\n            \"cent_amount\": 500,\n            \"currency_code\": \"EUR\",\n        }],\n        \"type\": \"absolute\",\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Commercetools = Pulumi.Commercetools;\n\nreturn await Deployment.RunAsync(() => \n{\n    var my_product_discount = new Commercetools.ProductDiscount(\"my-product-discount\", new()\n    {\n        Description = \n        {\n            { \"en\", \"Product discount description\" },\n        },\n        IsActive = true,\n        Key = \"my-product-discount-key\",\n        Name = \n        {\n            { \"en\", \"Product discount name\" },\n        },\n        Predicate = \"1=1\",\n        SortOrder = \"0.9\",\n        ValidFrom = \"2018-01-02T15:04:05Z\",\n        ValidUntil = \"2019-01-02T15:04:05Z\",\n        Value = new Commercetools.Inputs.ProductDiscountValueArgs\n        {\n            Permyriad = 1000,\n            Type = \"relative\",\n        },\n    });\n\n    var my_product_discount_absolute = new Commercetools.ProductDiscount(\"my-product-discount-absolute\", new()\n    {\n        Description = \n        {\n            { \"en\", \"Product discount description\" },\n        },\n        IsActive = true,\n        Key = \"my-product-discount-absolute-key\",\n        Name = \n        {\n            { \"en\", \"Product discount name\" },\n        },\n        Predicate = \"1=1\",\n        SortOrder = \"0.9\",\n        ValidFrom = \"2018-01-02T15:04:05Z\",\n        ValidUntil = \"2019-01-02T15:04:05Z\",\n        Value = new Commercetools.Inputs.ProductDiscountValueArgs\n        {\n            Monies = new[]\n            {\n                new Commercetools.Inputs.ProductDiscountValueMoneyArgs\n                {\n                    CentAmount = 500,\n                    CurrencyCode = \"EUR\",\n                },\n            },\n            Type = \"absolute\",\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/commercetools/commercetools\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := commercetools.NewProductDiscount(ctx, \"my-product-discount\", &commercetools.ProductDiscountArgs{\n\t\t\tDescription: pulumi.StringMap{\n\t\t\t\t\"en\": pulumi.String(\"Product discount description\"),\n\t\t\t},\n\t\t\tIsActive: pulumi.Bool(true),\n\t\t\tKey:      pulumi.String(\"my-product-discount-key\"),\n\t\t\tName: pulumi.StringMap{\n\t\t\t\t\"en\": pulumi.String(\"Product discount name\"),\n\t\t\t},\n\t\t\tPredicate:  pulumi.String(\"1=1\"),\n\t\t\tSortOrder:  pulumi.String(\"0.9\"),\n\t\t\tValidFrom:  pulumi.String(\"2018-01-02T15:04:05Z\"),\n\t\t\tValidUntil: pulumi.String(\"2019-01-02T15:04:05Z\"),\n\t\t\tValue: &commercetools.ProductDiscountValueArgs{\n\t\t\t\tPermyriad: pulumi.Float64(1000),\n\t\t\t\tType:      pulumi.String(\"relative\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = commercetools.NewProductDiscount(ctx, \"my-product-discount-absolute\", &commercetools.ProductDiscountArgs{\n\t\t\tDescription: pulumi.StringMap{\n\t\t\t\t\"en\": pulumi.String(\"Product discount description\"),\n\t\t\t},\n\t\t\tIsActive: pulumi.Bool(true),\n\t\t\tKey:      pulumi.String(\"my-product-discount-absolute-key\"),\n\t\t\tName: pulumi.StringMap{\n\t\t\t\t\"en\": pulumi.String(\"Product discount name\"),\n\t\t\t},\n\t\t\tPredicate:  pulumi.String(\"1=1\"),\n\t\t\tSortOrder:  pulumi.String(\"0.9\"),\n\t\t\tValidFrom:  pulumi.String(\"2018-01-02T15:04:05Z\"),\n\t\t\tValidUntil: pulumi.String(\"2019-01-02T15:04:05Z\"),\n\t\t\tValue: &commercetools.ProductDiscountValueArgs{\n\t\t\t\tMonies: commercetools.ProductDiscountValueMoneyArray{\n\t\t\t\t\t&commercetools.ProductDiscountValueMoneyArgs{\n\t\t\t\t\t\tCentAmount:   pulumi.Float64(500),\n\t\t\t\t\t\tCurrencyCode: pulumi.String(\"EUR\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tType: pulumi.String(\"absolute\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.commercetools.ProductDiscount;\nimport com.pulumi.commercetools.ProductDiscountArgs;\nimport com.pulumi.commercetools.inputs.ProductDiscountValueArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var my_product_discount = new ProductDiscount(\"my-product-discount\", ProductDiscountArgs.builder()\n            .description(Map.of(\"en\", \"Product discount description\"))\n            .isActive(true)\n            .key(\"my-product-discount-key\")\n            .name(Map.of(\"en\", \"Product discount name\"))\n            .predicate(\"1=1\")\n            .sortOrder(\"0.9\")\n            .validFrom(\"2018-01-02T15:04:05Z\")\n            .validUntil(\"2019-01-02T15:04:05Z\")\n            .value(ProductDiscountValueArgs.builder()\n                .permyriad(1000)\n                .type(\"relative\")\n                .build())\n            .build());\n\n        var my_product_discount_absolute = new ProductDiscount(\"my-product-discount-absolute\", ProductDiscountArgs.builder()\n            .description(Map.of(\"en\", \"Product discount description\"))\n            .isActive(true)\n            .key(\"my-product-discount-absolute-key\")\n            .name(Map.of(\"en\", \"Product discount name\"))\n            .predicate(\"1=1\")\n            .sortOrder(\"0.9\")\n            .validFrom(\"2018-01-02T15:04:05Z\")\n            .validUntil(\"2019-01-02T15:04:05Z\")\n            .value(ProductDiscountValueArgs.builder()\n                .monies(ProductDiscountValueMoneyArgs.builder()\n                    .centAmount(500)\n                    .currencyCode(\"EUR\")\n                    .build())\n                .type(\"absolute\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  my-product-discount:\n    type: commercetools:ProductDiscount\n    properties:\n      description:\n        en: Product discount description\n      isActive: true\n      key: my-product-discount-key\n      name:\n        en: Product discount name\n      predicate: 1=1\n      sortOrder: '0.9'\n      validFrom: 2018-01-02T15:04:05Z\n      validUntil: 2019-01-02T15:04:05Z\n      value:\n        permyriad: 1000\n        type: relative\n  my-product-discount-absolute:\n    type: commercetools:ProductDiscount\n    properties:\n      description:\n        en: Product discount description\n      isActive: true\n      key: my-product-discount-absolute-key\n      name:\n        en: Product discount name\n      predicate: 1=1\n      sortOrder: '0.9'\n      validFrom: 2018-01-02T15:04:05Z\n      validUntil: 2019-01-02T15:04:05Z\n      value:\n        monies:\n          - centAmount: 500\n            currencyCode: EUR\n        type: absolute\n```\n<!--End PulumiCodeChooser -->\n",
      "properties": {
        "description": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "[LocalizedString](https://docs.commercetools.com/api/types#localizedstring)\n"
        },
        "isActive": {
          "type": "boolean",
          "description": "When set the product discount is applied to products matching the predicate\n"
        },
        "key": {
          "type": "string",
          "description": "User-defined unique identifier for the ProductDiscount. Must be unique across a project\n"
        },
        "name": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "[LocalizedString](https://docs.commercetools.com/api/types#localizedstring)\n"
        },
        "predicate": {
          "type": "string",
          "description": "A valid [Product Predicate](https://docs.commercetools.com/api/projects/predicates#product-predicates)\n"
        },
        "productDiscountId": {
          "type": "string",
          "description": "The ID of this resource.\n"
        },
        "sortOrder": {
          "type": "string",
          "description": "The string must contain a number between 0 and 1. All matching product discounts are applied to a product in the order defined by this field. A discount with greater sort order is prioritized higher than a discount with lower sort order. The sort order is unambiguous among all product discounts\n"
        },
        "validFrom": {
          "type": "string"
        },
        "validUntil": {
          "type": "string"
        },
        "value": {
          "$ref": "#/types/commercetools:index%2FProductDiscountValue:ProductDiscountValue",
          "description": "Defines the effect the discount will have. [ProductDiscountValue](https://docs.commercetools.com/api/projects/productDiscounts#productdiscountvalue)\n"
        },
        "version": {
          "type": "number"
        }
      },
      "type": "object",
      "required": [
        "name",
        "predicate",
        "productDiscountId",
        "sortOrder",
        "value",
        "version"
      ],
      "inputProperties": {
        "description": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "[LocalizedString](https://docs.commercetools.com/api/types#localizedstring)\n"
        },
        "isActive": {
          "type": "boolean",
          "description": "When set the product discount is applied to products matching the predicate\n"
        },
        "key": {
          "type": "string",
          "description": "User-defined unique identifier for the ProductDiscount. Must be unique across a project\n"
        },
        "name": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "[LocalizedString](https://docs.commercetools.com/api/types#localizedstring)\n"
        },
        "predicate": {
          "type": "string",
          "description": "A valid [Product Predicate](https://docs.commercetools.com/api/projects/predicates#product-predicates)\n"
        },
        "productDiscountId": {
          "type": "string",
          "description": "The ID of this resource.\n"
        },
        "sortOrder": {
          "type": "string",
          "description": "The string must contain a number between 0 and 1. All matching product discounts are applied to a product in the order defined by this field. A discount with greater sort order is prioritized higher than a discount with lower sort order. The sort order is unambiguous among all product discounts\n"
        },
        "validFrom": {
          "type": "string"
        },
        "validUntil": {
          "type": "string"
        },
        "value": {
          "$ref": "#/types/commercetools:index%2FProductDiscountValue:ProductDiscountValue",
          "description": "Defines the effect the discount will have. [ProductDiscountValue](https://docs.commercetools.com/api/projects/productDiscounts#productdiscountvalue)\n"
        }
      },
      "requiredInputs": [
        "name",
        "predicate",
        "sortOrder",
        "value"
      ],
      "stateInputs": {
        "description": "Input properties used for looking up and filtering ProductDiscount resources.\n",
        "properties": {
          "description": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "description": "[LocalizedString](https://docs.commercetools.com/api/types#localizedstring)\n"
          },
          "isActive": {
            "type": "boolean",
            "description": "When set the product discount is applied to products matching the predicate\n"
          },
          "key": {
            "type": "string",
            "description": "User-defined unique identifier for the ProductDiscount. Must be unique across a project\n"
          },
          "name": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "description": "[LocalizedString](https://docs.commercetools.com/api/types#localizedstring)\n"
          },
          "predicate": {
            "type": "string",
            "description": "A valid [Product Predicate](https://docs.commercetools.com/api/projects/predicates#product-predicates)\n"
          },
          "productDiscountId": {
            "type": "string",
            "description": "The ID of this resource.\n"
          },
          "sortOrder": {
            "type": "string",
            "description": "The string must contain a number between 0 and 1. All matching product discounts are applied to a product in the order defined by this field. A discount with greater sort order is prioritized higher than a discount with lower sort order. The sort order is unambiguous among all product discounts\n"
          },
          "validFrom": {
            "type": "string"
          },
          "validUntil": {
            "type": "string"
          },
          "value": {
            "$ref": "#/types/commercetools:index%2FProductDiscountValue:ProductDiscountValue",
            "description": "Defines the effect the discount will have. [ProductDiscountValue](https://docs.commercetools.com/api/projects/productDiscounts#productdiscountvalue)\n"
          },
          "version": {
            "type": "number"
          }
        },
        "type": "object"
      }
    },
    "commercetools:index/productSelection:ProductSelection": {
      "description": "Product Selections can be used to manage individual assortments for different sales channels.See also the [Product Selections API Documentation](https://docs.commercetools.com/api/projects/product-selections)\n\n## Example Usage\n\n<!--Start PulumiCodeChooser -->\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.commercetools.Type;\nimport com.pulumi.commercetools.TypeArgs;\nimport com.pulumi.commercetools.inputs.TypeFieldArgs;\nimport com.pulumi.commercetools.inputs.TypeFieldTypeArgs;\nimport com.pulumi.commercetools.ProductSelection;\nimport com.pulumi.commercetools.ProductSelectionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var my_type = new Type(\"my-type\", TypeArgs.builder()\n            .key(\"my-type\")\n            .name(Map.ofEntries(\n                Map.entry(\"en\", \"My type\"),\n                Map.entry(\"nl\", \"Mijn type\")\n            ))\n            .resourceTypeIds(\"product-selection\")\n            .fields(TypeFieldArgs.builder()\n                .name(\"my-field\")\n                .label(Map.ofEntries(\n                    Map.entry(\"en\", \"My field\"),\n                    Map.entry(\"nl\", \"Mijn veld\")\n                ))\n                .type(TypeFieldTypeArgs.builder()\n                    .name(\"String\")\n                    .build())\n                .build())\n            .build());\n\n        var product_selection_us = new ProductSelection(\"product-selection-us\", ProductSelectionArgs.builder()\n            .key(\"product-selection-us\")\n            .name(Map.of(\"en\", \"US Product Selection\"))\n            .mode(\"Individual\")\n            .custom(ProductSelectionCustomArgs.builder()\n                .typeId(my_type.typeId())\n                .fields(Map.of(\"my-field\", \"my-value\"))\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  my-type:\n    type: commercetools:Type\n    properties:\n      key: my-type\n      name:\n        en: My type\n        nl: Mijn type\n      resourceTypeIds:\n        - product-selection\n      fields:\n        - name: my-field\n          label:\n            en: My field\n            nl: Mijn veld\n          type:\n            name: String\n  product-selection-us:\n    type: commercetools:ProductSelection\n    properties:\n      key: product-selection-us\n      name:\n        en: US Product Selection\n      mode: Individual\n      custom:\n        - typeId: ${[\"my-type\"].typeId}\n          fields:\n            my-field: my-value\n```\n<!--End PulumiCodeChooser -->\n",
      "properties": {
        "custom": {
          "$ref": "#/types/commercetools:index%2FProductSelectionCustom:ProductSelectionCustom",
          "description": "Custom fields for this resource.\n"
        },
        "key": {
          "type": "string",
          "description": "User-defined unique identifier of the ProductSelection.\n"
        },
        "mode": {
          "type": "string",
          "description": "Specifies in which way the Products are assigned to the ProductSelection.Currently, the only way of doing this is to specify each Product individually, either by including or excluding them explicitly.Default: Individual\n"
        },
        "name": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Name of the ProductSelection.\n"
        },
        "version": {
          "type": "number",
          "description": "Current version of the ProductSelection.\n"
        }
      },
      "type": "object",
      "required": [
        "mode",
        "name",
        "version"
      ],
      "inputProperties": {
        "custom": {
          "$ref": "#/types/commercetools:index%2FProductSelectionCustom:ProductSelectionCustom",
          "description": "Custom fields for this resource.\n"
        },
        "key": {
          "type": "string",
          "description": "User-defined unique identifier of the ProductSelection.\n"
        },
        "mode": {
          "type": "string",
          "description": "Specifies in which way the Products are assigned to the ProductSelection.Currently, the only way of doing this is to specify each Product individually, either by including or excluding them explicitly.Default: Individual\n"
        },
        "name": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Name of the ProductSelection.\n"
        }
      },
      "requiredInputs": [
        "name"
      ],
      "stateInputs": {
        "description": "Input properties used for looking up and filtering ProductSelection resources.\n",
        "properties": {
          "custom": {
            "$ref": "#/types/commercetools:index%2FProductSelectionCustom:ProductSelectionCustom",
            "description": "Custom fields for this resource.\n"
          },
          "key": {
            "type": "string",
            "description": "User-defined unique identifier of the ProductSelection.\n"
          },
          "mode": {
            "type": "string",
            "description": "Specifies in which way the Products are assigned to the ProductSelection.Currently, the only way of doing this is to specify each Product individually, either by including or excluding them explicitly.Default: Individual\n"
          },
          "name": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "description": "Name of the ProductSelection.\n"
          },
          "version": {
            "type": "number",
            "description": "Current version of the ProductSelection.\n"
          }
        },
        "type": "object"
      }
    },
    "commercetools:index/productType:ProductType": {
      "description": "Product types are used to describe common characteristics, most importantly common custom attributes, of many concrete products. Please note: to customize other resources than products, please refer to resource_type.\n\nSee also the [Product Type API Documentation](https://docs.commercetools.com/api/projects/productTypes)\n\n## Example Usage\n\n<!--Start PulumiCodeChooser -->\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as commercetools from \"@pulumi/commercetools\";\n\nconst some_generic_properties_product_type = new commercetools.ProductType(\"some-generic-properties-product-type\", {\n    key: \"some-key\",\n    description: \"All the generic product properties\",\n    attributes: [{\n        name: \"perishable\",\n        label: {\n            en: \"Is perishable\",\n            nl: \"Is perishable\",\n        },\n        required: true,\n        type: {\n            name: \"boolean\",\n        },\n    }],\n});\nconst my_product_type = new commercetools.ProductType(\"my-product-type\", {\n    key: \"my-product-type-key\",\n    description: \"All the specific info concerning the lens\",\n    attributes: [\n        {\n            name: \"autofocus\",\n            label: {\n                en: \"Has autofocus\",\n                nl: \"Heeft autofocus\",\n            },\n            required: true,\n            type: {\n                name: \"boolean\",\n            },\n        },\n        {\n            name: \"lens_product_no\",\n            label: {\n                en: \"Lens product number\",\n                nl: \"Objectief productnummer\",\n            },\n            required: true,\n            type: {\n                name: \"text\",\n            },\n            constraint: \"Unique\",\n            inputTip: {\n                en: \"Enter the product code\",\n                nl: \"Voer de product code in\",\n            },\n            searchable: true,\n        },\n        {\n            name: \"previous_model\",\n            label: {\n                en: \"Previous model\",\n                nl: \"Vorig model\",\n            },\n            type: {\n                name: \"reference\",\n                referenceTypeId: \"product\",\n            },\n        },\n        {\n            name: \"product_properties\",\n            label: {\n                en: \"Product properties\",\n                nl: \"Product eigenschappen\",\n            },\n            required: false,\n            type: {\n                name: \"nested\",\n                typeReference: some_generic_properties_product_type.productTypeId,\n            },\n        },\n        {\n            name: \"some-flag\",\n            label: {\n                en: \"Some flag\",\n                nl: \"Een vlag\",\n            },\n            required: false,\n            type: {\n                name: \"enum\",\n                values: [\n                    {\n                        key: \"FLAG-1\",\n                        label: \"Flag 1\",\n                    },\n                    {\n                        key: \"FLAG-2\",\n                        label: \"FLAG-2\",\n                    },\n                ],\n            },\n        },\n        {\n            name: \"origin\",\n            label: {\n                en: \"Origin country\",\n                nl: \"Land van herkomst\",\n            },\n            required: false,\n            type: {\n                name: \"set\",\n                elementType: {\n                    name: \"lenum\",\n                    localizedValues: [\n                        {\n                            key: \"NL\",\n                            label: {\n                                en: \"Netherlands\",\n                                nl: \"Nederland\",\n                            },\n                        },\n                        {\n                            key: \"DE\",\n                            label: {\n                                en: \"Germany\",\n                                nl: \"Duitsland\",\n                            },\n                        },\n                    ],\n                },\n            },\n        },\n    ],\n});\nconst product_type_with_product_level_attribute = new commercetools.ProductType(\"product-type-with-product-level-attribute\", {\n    key: \"some-key\",\n    description: \"All the generic product properties\",\n    attributes: [{\n        name: \"perishable\",\n        level: \"Product\",\n        label: {\n            en: \"Is perishable\",\n            nl: \"Is perishable\",\n        },\n        required: true,\n        type: {\n            name: \"boolean\",\n        },\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumi_commercetools as commercetools\n\nsome_generic_properties_product_type = commercetools.ProductType(\"some-generic-properties-product-type\",\n    key=\"some-key\",\n    description=\"All the generic product properties\",\n    attributes=[{\n        \"name\": \"perishable\",\n        \"label\": {\n            \"en\": \"Is perishable\",\n            \"nl\": \"Is perishable\",\n        },\n        \"required\": True,\n        \"type\": {\n            \"name\": \"boolean\",\n        },\n    }])\nmy_product_type = commercetools.ProductType(\"my-product-type\",\n    key=\"my-product-type-key\",\n    description=\"All the specific info concerning the lens\",\n    attributes=[\n        {\n            \"name\": \"autofocus\",\n            \"label\": {\n                \"en\": \"Has autofocus\",\n                \"nl\": \"Heeft autofocus\",\n            },\n            \"required\": True,\n            \"type\": {\n                \"name\": \"boolean\",\n            },\n        },\n        {\n            \"name\": \"lens_product_no\",\n            \"label\": {\n                \"en\": \"Lens product number\",\n                \"nl\": \"Objectief productnummer\",\n            },\n            \"required\": True,\n            \"type\": {\n                \"name\": \"text\",\n            },\n            \"constraint\": \"Unique\",\n            \"input_tip\": {\n                \"en\": \"Enter the product code\",\n                \"nl\": \"Voer de product code in\",\n            },\n            \"searchable\": True,\n        },\n        {\n            \"name\": \"previous_model\",\n            \"label\": {\n                \"en\": \"Previous model\",\n                \"nl\": \"Vorig model\",\n            },\n            \"type\": {\n                \"name\": \"reference\",\n                \"reference_type_id\": \"product\",\n            },\n        },\n        {\n            \"name\": \"product_properties\",\n            \"label\": {\n                \"en\": \"Product properties\",\n                \"nl\": \"Product eigenschappen\",\n            },\n            \"required\": False,\n            \"type\": {\n                \"name\": \"nested\",\n                \"type_reference\": some_generic_properties_product_type.product_type_id,\n            },\n        },\n        {\n            \"name\": \"some-flag\",\n            \"label\": {\n                \"en\": \"Some flag\",\n                \"nl\": \"Een vlag\",\n            },\n            \"required\": False,\n            \"type\": {\n                \"name\": \"enum\",\n                \"values\": [\n                    {\n                        \"key\": \"FLAG-1\",\n                        \"label\": \"Flag 1\",\n                    },\n                    {\n                        \"key\": \"FLAG-2\",\n                        \"label\": \"FLAG-2\",\n                    },\n                ],\n            },\n        },\n        {\n            \"name\": \"origin\",\n            \"label\": {\n                \"en\": \"Origin country\",\n                \"nl\": \"Land van herkomst\",\n            },\n            \"required\": False,\n            \"type\": {\n                \"name\": \"set\",\n                \"element_type\": {\n                    \"name\": \"lenum\",\n                    \"localized_values\": [\n                        {\n                            \"key\": \"NL\",\n                            \"label\": {\n                                \"en\": \"Netherlands\",\n                                \"nl\": \"Nederland\",\n                            },\n                        },\n                        {\n                            \"key\": \"DE\",\n                            \"label\": {\n                                \"en\": \"Germany\",\n                                \"nl\": \"Duitsland\",\n                            },\n                        },\n                    ],\n                },\n            },\n        },\n    ])\nproduct_type_with_product_level_attribute = commercetools.ProductType(\"product-type-with-product-level-attribute\",\n    key=\"some-key\",\n    description=\"All the generic product properties\",\n    attributes=[{\n        \"name\": \"perishable\",\n        \"level\": \"Product\",\n        \"label\": {\n            \"en\": \"Is perishable\",\n            \"nl\": \"Is perishable\",\n        },\n        \"required\": True,\n        \"type\": {\n            \"name\": \"boolean\",\n        },\n    }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Commercetools = Pulumi.Commercetools;\n\nreturn await Deployment.RunAsync(() => \n{\n    var some_generic_properties_product_type = new Commercetools.ProductType(\"some-generic-properties-product-type\", new()\n    {\n        Key = \"some-key\",\n        Description = \"All the generic product properties\",\n        Attributes = new[]\n        {\n            new Commercetools.Inputs.ProductTypeAttributeArgs\n            {\n                Name = \"perishable\",\n                Label = \n                {\n                    { \"en\", \"Is perishable\" },\n                    { \"nl\", \"Is perishable\" },\n                },\n                Required = true,\n                Type = new Commercetools.Inputs.ProductTypeAttributeTypeArgs\n                {\n                    Name = \"boolean\",\n                },\n            },\n        },\n    });\n\n    var my_product_type = new Commercetools.ProductType(\"my-product-type\", new()\n    {\n        Key = \"my-product-type-key\",\n        Description = \"All the specific info concerning the lens\",\n        Attributes = new[]\n        {\n            new Commercetools.Inputs.ProductTypeAttributeArgs\n            {\n                Name = \"autofocus\",\n                Label = \n                {\n                    { \"en\", \"Has autofocus\" },\n                    { \"nl\", \"Heeft autofocus\" },\n                },\n                Required = true,\n                Type = new Commercetools.Inputs.ProductTypeAttributeTypeArgs\n                {\n                    Name = \"boolean\",\n                },\n            },\n            new Commercetools.Inputs.ProductTypeAttributeArgs\n            {\n                Name = \"lens_product_no\",\n                Label = \n                {\n                    { \"en\", \"Lens product number\" },\n                    { \"nl\", \"Objectief productnummer\" },\n                },\n                Required = true,\n                Type = new Commercetools.Inputs.ProductTypeAttributeTypeArgs\n                {\n                    Name = \"text\",\n                },\n                Constraint = \"Unique\",\n                InputTip = \n                {\n                    { \"en\", \"Enter the product code\" },\n                    { \"nl\", \"Voer de product code in\" },\n                },\n                Searchable = true,\n            },\n            new Commercetools.Inputs.ProductTypeAttributeArgs\n            {\n                Name = \"previous_model\",\n                Label = \n                {\n                    { \"en\", \"Previous model\" },\n                    { \"nl\", \"Vorig model\" },\n                },\n                Type = new Commercetools.Inputs.ProductTypeAttributeTypeArgs\n                {\n                    Name = \"reference\",\n                    ReferenceTypeId = \"product\",\n                },\n            },\n            new Commercetools.Inputs.ProductTypeAttributeArgs\n            {\n                Name = \"product_properties\",\n                Label = \n                {\n                    { \"en\", \"Product properties\" },\n                    { \"nl\", \"Product eigenschappen\" },\n                },\n                Required = false,\n                Type = new Commercetools.Inputs.ProductTypeAttributeTypeArgs\n                {\n                    Name = \"nested\",\n                    TypeReference = some_generic_properties_product_type.ProductTypeId,\n                },\n            },\n            new Commercetools.Inputs.ProductTypeAttributeArgs\n            {\n                Name = \"some-flag\",\n                Label = \n                {\n                    { \"en\", \"Some flag\" },\n                    { \"nl\", \"Een vlag\" },\n                },\n                Required = false,\n                Type = new Commercetools.Inputs.ProductTypeAttributeTypeArgs\n                {\n                    Name = \"enum\",\n                    Values = new[]\n                    {\n                        new Commercetools.Inputs.ProductTypeAttributeTypeValueArgs\n                        {\n                            Key = \"FLAG-1\",\n                            Label = \"Flag 1\",\n                        },\n                        new Commercetools.Inputs.ProductTypeAttributeTypeValueArgs\n                        {\n                            Key = \"FLAG-2\",\n                            Label = \"FLAG-2\",\n                        },\n                    },\n                },\n            },\n            new Commercetools.Inputs.ProductTypeAttributeArgs\n            {\n                Name = \"origin\",\n                Label = \n                {\n                    { \"en\", \"Origin country\" },\n                    { \"nl\", \"Land van herkomst\" },\n                },\n                Required = false,\n                Type = new Commercetools.Inputs.ProductTypeAttributeTypeArgs\n                {\n                    Name = \"set\",\n                    ElementType = new Commercetools.Inputs.ProductTypeAttributeTypeElementTypeArgs\n                    {\n                        Name = \"lenum\",\n                        LocalizedValues = new[]\n                        {\n                            new Commercetools.Inputs.ProductTypeAttributeTypeElementTypeLocalizedValueArgs\n                            {\n                                Key = \"NL\",\n                                Label = \n                                {\n                                    { \"en\", \"Netherlands\" },\n                                    { \"nl\", \"Nederland\" },\n                                },\n                            },\n                            new Commercetools.Inputs.ProductTypeAttributeTypeElementTypeLocalizedValueArgs\n                            {\n                                Key = \"DE\",\n                                Label = \n                                {\n                                    { \"en\", \"Germany\" },\n                                    { \"nl\", \"Duitsland\" },\n                                },\n                            },\n                        },\n                    },\n                },\n            },\n        },\n    });\n\n    var product_type_with_product_level_attribute = new Commercetools.ProductType(\"product-type-with-product-level-attribute\", new()\n    {\n        Key = \"some-key\",\n        Description = \"All the generic product properties\",\n        Attributes = new[]\n        {\n            new Commercetools.Inputs.ProductTypeAttributeArgs\n            {\n                Name = \"perishable\",\n                Level = \"Product\",\n                Label = \n                {\n                    { \"en\", \"Is perishable\" },\n                    { \"nl\", \"Is perishable\" },\n                },\n                Required = true,\n                Type = new Commercetools.Inputs.ProductTypeAttributeTypeArgs\n                {\n                    Name = \"boolean\",\n                },\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/commercetools/commercetools\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tsome_generic_properties_product_type, err := commercetools.NewProductType(ctx, \"some-generic-properties-product-type\", &commercetools.ProductTypeArgs{\n\t\t\tKey:         pulumi.String(\"some-key\"),\n\t\t\tDescription: pulumi.String(\"All the generic product properties\"),\n\t\t\tAttributes: commercetools.ProductTypeAttributeArray{\n\t\t\t\t&commercetools.ProductTypeAttributeArgs{\n\t\t\t\t\tName: pulumi.String(\"perishable\"),\n\t\t\t\t\tLabel: pulumi.StringMap{\n\t\t\t\t\t\t\"en\": pulumi.String(\"Is perishable\"),\n\t\t\t\t\t\t\"nl\": pulumi.String(\"Is perishable\"),\n\t\t\t\t\t},\n\t\t\t\t\tRequired: pulumi.Bool(true),\n\t\t\t\t\tType: &commercetools.ProductTypeAttributeTypeArgs{\n\t\t\t\t\t\tName: pulumi.String(\"boolean\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = commercetools.NewProductType(ctx, \"my-product-type\", &commercetools.ProductTypeArgs{\n\t\t\tKey:         pulumi.String(\"my-product-type-key\"),\n\t\t\tDescription: pulumi.String(\"All the specific info concerning the lens\"),\n\t\t\tAttributes: commercetools.ProductTypeAttributeArray{\n\t\t\t\t&commercetools.ProductTypeAttributeArgs{\n\t\t\t\t\tName: pulumi.String(\"autofocus\"),\n\t\t\t\t\tLabel: pulumi.StringMap{\n\t\t\t\t\t\t\"en\": pulumi.String(\"Has autofocus\"),\n\t\t\t\t\t\t\"nl\": pulumi.String(\"Heeft autofocus\"),\n\t\t\t\t\t},\n\t\t\t\t\tRequired: pulumi.Bool(true),\n\t\t\t\t\tType: &commercetools.ProductTypeAttributeTypeArgs{\n\t\t\t\t\t\tName: pulumi.String(\"boolean\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t&commercetools.ProductTypeAttributeArgs{\n\t\t\t\t\tName: pulumi.String(\"lens_product_no\"),\n\t\t\t\t\tLabel: pulumi.StringMap{\n\t\t\t\t\t\t\"en\": pulumi.String(\"Lens product number\"),\n\t\t\t\t\t\t\"nl\": pulumi.String(\"Objectief productnummer\"),\n\t\t\t\t\t},\n\t\t\t\t\tRequired: pulumi.Bool(true),\n\t\t\t\t\tType: &commercetools.ProductTypeAttributeTypeArgs{\n\t\t\t\t\t\tName: pulumi.String(\"text\"),\n\t\t\t\t\t},\n\t\t\t\t\tConstraint: pulumi.String(\"Unique\"),\n\t\t\t\t\tInputTip: pulumi.StringMap{\n\t\t\t\t\t\t\"en\": pulumi.String(\"Enter the product code\"),\n\t\t\t\t\t\t\"nl\": pulumi.String(\"Voer de product code in\"),\n\t\t\t\t\t},\n\t\t\t\t\tSearchable: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t\t&commercetools.ProductTypeAttributeArgs{\n\t\t\t\t\tName: pulumi.String(\"previous_model\"),\n\t\t\t\t\tLabel: pulumi.StringMap{\n\t\t\t\t\t\t\"en\": pulumi.String(\"Previous model\"),\n\t\t\t\t\t\t\"nl\": pulumi.String(\"Vorig model\"),\n\t\t\t\t\t},\n\t\t\t\t\tType: &commercetools.ProductTypeAttributeTypeArgs{\n\t\t\t\t\t\tName:            pulumi.String(\"reference\"),\n\t\t\t\t\t\tReferenceTypeId: pulumi.String(\"product\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t&commercetools.ProductTypeAttributeArgs{\n\t\t\t\t\tName: pulumi.String(\"product_properties\"),\n\t\t\t\t\tLabel: pulumi.StringMap{\n\t\t\t\t\t\t\"en\": pulumi.String(\"Product properties\"),\n\t\t\t\t\t\t\"nl\": pulumi.String(\"Product eigenschappen\"),\n\t\t\t\t\t},\n\t\t\t\t\tRequired: pulumi.Bool(false),\n\t\t\t\t\tType: &commercetools.ProductTypeAttributeTypeArgs{\n\t\t\t\t\t\tName:          pulumi.String(\"nested\"),\n\t\t\t\t\t\tTypeReference: some_generic_properties_product_type.ProductTypeId,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t&commercetools.ProductTypeAttributeArgs{\n\t\t\t\t\tName: pulumi.String(\"some-flag\"),\n\t\t\t\t\tLabel: pulumi.StringMap{\n\t\t\t\t\t\t\"en\": pulumi.String(\"Some flag\"),\n\t\t\t\t\t\t\"nl\": pulumi.String(\"Een vlag\"),\n\t\t\t\t\t},\n\t\t\t\t\tRequired: pulumi.Bool(false),\n\t\t\t\t\tType: &commercetools.ProductTypeAttributeTypeArgs{\n\t\t\t\t\t\tName: pulumi.String(\"enum\"),\n\t\t\t\t\t\tValues: commercetools.ProductTypeAttributeTypeValueArray{\n\t\t\t\t\t\t\t&commercetools.ProductTypeAttributeTypeValueArgs{\n\t\t\t\t\t\t\t\tKey:   pulumi.String(\"FLAG-1\"),\n\t\t\t\t\t\t\t\tLabel: pulumi.String(\"Flag 1\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t&commercetools.ProductTypeAttributeTypeValueArgs{\n\t\t\t\t\t\t\t\tKey:   pulumi.String(\"FLAG-2\"),\n\t\t\t\t\t\t\t\tLabel: pulumi.String(\"FLAG-2\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t&commercetools.ProductTypeAttributeArgs{\n\t\t\t\t\tName: pulumi.String(\"origin\"),\n\t\t\t\t\tLabel: pulumi.StringMap{\n\t\t\t\t\t\t\"en\": pulumi.String(\"Origin country\"),\n\t\t\t\t\t\t\"nl\": pulumi.String(\"Land van herkomst\"),\n\t\t\t\t\t},\n\t\t\t\t\tRequired: pulumi.Bool(false),\n\t\t\t\t\tType: &commercetools.ProductTypeAttributeTypeArgs{\n\t\t\t\t\t\tName: pulumi.String(\"set\"),\n\t\t\t\t\t\tElementType: &commercetools.ProductTypeAttributeTypeElementTypeArgs{\n\t\t\t\t\t\t\tName: pulumi.String(\"lenum\"),\n\t\t\t\t\t\t\tLocalizedValues: commercetools.ProductTypeAttributeTypeElementTypeLocalizedValueArray{\n\t\t\t\t\t\t\t\t&commercetools.ProductTypeAttributeTypeElementTypeLocalizedValueArgs{\n\t\t\t\t\t\t\t\t\tKey: pulumi.String(\"NL\"),\n\t\t\t\t\t\t\t\t\tLabel: pulumi.StringMap{\n\t\t\t\t\t\t\t\t\t\t\"en\": pulumi.String(\"Netherlands\"),\n\t\t\t\t\t\t\t\t\t\t\"nl\": pulumi.String(\"Nederland\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t&commercetools.ProductTypeAttributeTypeElementTypeLocalizedValueArgs{\n\t\t\t\t\t\t\t\t\tKey: pulumi.String(\"DE\"),\n\t\t\t\t\t\t\t\t\tLabel: pulumi.StringMap{\n\t\t\t\t\t\t\t\t\t\t\"en\": pulumi.String(\"Germany\"),\n\t\t\t\t\t\t\t\t\t\t\"nl\": pulumi.String(\"Duitsland\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = commercetools.NewProductType(ctx, \"product-type-with-product-level-attribute\", &commercetools.ProductTypeArgs{\n\t\t\tKey:         pulumi.String(\"some-key\"),\n\t\t\tDescription: pulumi.String(\"All the generic product properties\"),\n\t\t\tAttributes: commercetools.ProductTypeAttributeArray{\n\t\t\t\t&commercetools.ProductTypeAttributeArgs{\n\t\t\t\t\tName:  pulumi.String(\"perishable\"),\n\t\t\t\t\tLevel: pulumi.String(\"Product\"),\n\t\t\t\t\tLabel: pulumi.StringMap{\n\t\t\t\t\t\t\"en\": pulumi.String(\"Is perishable\"),\n\t\t\t\t\t\t\"nl\": pulumi.String(\"Is perishable\"),\n\t\t\t\t\t},\n\t\t\t\t\tRequired: pulumi.Bool(true),\n\t\t\t\t\tType: &commercetools.ProductTypeAttributeTypeArgs{\n\t\t\t\t\t\tName: pulumi.String(\"boolean\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.commercetools.ProductType;\nimport com.pulumi.commercetools.ProductTypeArgs;\nimport com.pulumi.commercetools.inputs.ProductTypeAttributeArgs;\nimport com.pulumi.commercetools.inputs.ProductTypeAttributeTypeArgs;\nimport com.pulumi.commercetools.inputs.ProductTypeAttributeTypeElementTypeArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var some_generic_properties_product_type = new ProductType(\"some-generic-properties-product-type\", ProductTypeArgs.builder()\n            .key(\"some-key\")\n            .description(\"All the generic product properties\")\n            .attributes(ProductTypeAttributeArgs.builder()\n                .name(\"perishable\")\n                .label(Map.ofEntries(\n                    Map.entry(\"en\", \"Is perishable\"),\n                    Map.entry(\"nl\", \"Is perishable\")\n                ))\n                .required(true)\n                .type(ProductTypeAttributeTypeArgs.builder()\n                    .name(\"boolean\")\n                    .build())\n                .build())\n            .build());\n\n        var my_product_type = new ProductType(\"my-product-type\", ProductTypeArgs.builder()\n            .key(\"my-product-type-key\")\n            .description(\"All the specific info concerning the lens\")\n            .attributes(            \n                ProductTypeAttributeArgs.builder()\n                    .name(\"autofocus\")\n                    .label(Map.ofEntries(\n                        Map.entry(\"en\", \"Has autofocus\"),\n                        Map.entry(\"nl\", \"Heeft autofocus\")\n                    ))\n                    .required(true)\n                    .type(ProductTypeAttributeTypeArgs.builder()\n                        .name(\"boolean\")\n                        .build())\n                    .build(),\n                ProductTypeAttributeArgs.builder()\n                    .name(\"lens_product_no\")\n                    .label(Map.ofEntries(\n                        Map.entry(\"en\", \"Lens product number\"),\n                        Map.entry(\"nl\", \"Objectief productnummer\")\n                    ))\n                    .required(true)\n                    .type(ProductTypeAttributeTypeArgs.builder()\n                        .name(\"text\")\n                        .build())\n                    .constraint(\"Unique\")\n                    .inputTip(Map.ofEntries(\n                        Map.entry(\"en\", \"Enter the product code\"),\n                        Map.entry(\"nl\", \"Voer de product code in\")\n                    ))\n                    .searchable(true)\n                    .build(),\n                ProductTypeAttributeArgs.builder()\n                    .name(\"previous_model\")\n                    .label(Map.ofEntries(\n                        Map.entry(\"en\", \"Previous model\"),\n                        Map.entry(\"nl\", \"Vorig model\")\n                    ))\n                    .type(ProductTypeAttributeTypeArgs.builder()\n                        .name(\"reference\")\n                        .referenceTypeId(\"product\")\n                        .build())\n                    .build(),\n                ProductTypeAttributeArgs.builder()\n                    .name(\"product_properties\")\n                    .label(Map.ofEntries(\n                        Map.entry(\"en\", \"Product properties\"),\n                        Map.entry(\"nl\", \"Product eigenschappen\")\n                    ))\n                    .required(false)\n                    .type(ProductTypeAttributeTypeArgs.builder()\n                        .name(\"nested\")\n                        .typeReference(some_generic_properties_product_type.productTypeId())\n                        .build())\n                    .build(),\n                ProductTypeAttributeArgs.builder()\n                    .name(\"some-flag\")\n                    .label(Map.ofEntries(\n                        Map.entry(\"en\", \"Some flag\"),\n                        Map.entry(\"nl\", \"Een vlag\")\n                    ))\n                    .required(false)\n                    .type(ProductTypeAttributeTypeArgs.builder()\n                        .name(\"enum\")\n                        .values(                        \n                            ProductTypeAttributeTypeValueArgs.builder()\n                                .key(\"FLAG-1\")\n                                .label(\"Flag 1\")\n                                .build(),\n                            ProductTypeAttributeTypeValueArgs.builder()\n                                .key(\"FLAG-2\")\n                                .label(\"FLAG-2\")\n                                .build())\n                        .build())\n                    .build(),\n                ProductTypeAttributeArgs.builder()\n                    .name(\"origin\")\n                    .label(Map.ofEntries(\n                        Map.entry(\"en\", \"Origin country\"),\n                        Map.entry(\"nl\", \"Land van herkomst\")\n                    ))\n                    .required(false)\n                    .type(ProductTypeAttributeTypeArgs.builder()\n                        .name(\"set\")\n                        .elementType(ProductTypeAttributeTypeElementTypeArgs.builder()\n                            .name(\"lenum\")\n                            .localizedValues(                            \n                                ProductTypeAttributeTypeElementTypeLocalizedValueArgs.builder()\n                                    .key(\"NL\")\n                                    .label(Map.ofEntries(\n                                        Map.entry(\"en\", \"Netherlands\"),\n                                        Map.entry(\"nl\", \"Nederland\")\n                                    ))\n                                    .build(),\n                                ProductTypeAttributeTypeElementTypeLocalizedValueArgs.builder()\n                                    .key(\"DE\")\n                                    .label(Map.ofEntries(\n                                        Map.entry(\"en\", \"Germany\"),\n                                        Map.entry(\"nl\", \"Duitsland\")\n                                    ))\n                                    .build())\n                            .build())\n                        .build())\n                    .build())\n            .build());\n\n        var product_type_with_product_level_attribute = new ProductType(\"product-type-with-product-level-attribute\", ProductTypeArgs.builder()\n            .key(\"some-key\")\n            .description(\"All the generic product properties\")\n            .attributes(ProductTypeAttributeArgs.builder()\n                .name(\"perishable\")\n                .level(\"Product\")\n                .label(Map.ofEntries(\n                    Map.entry(\"en\", \"Is perishable\"),\n                    Map.entry(\"nl\", \"Is perishable\")\n                ))\n                .required(true)\n                .type(ProductTypeAttributeTypeArgs.builder()\n                    .name(\"boolean\")\n                    .build())\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  some-generic-properties-product-type:\n    type: commercetools:ProductType\n    properties:\n      key: some-key\n      description: All the generic product properties\n      attributes:\n        - name: perishable\n          label:\n            en: Is perishable\n            nl: Is perishable\n          required: true\n          type:\n            name: boolean\n  my-product-type:\n    type: commercetools:ProductType\n    properties:\n      key: my-product-type-key\n      description: All the specific info concerning the lens\n      attributes:\n        - name: autofocus\n          label:\n            en: Has autofocus\n            nl: Heeft autofocus\n          required: true\n          type:\n            name: boolean\n        - name: lens_product_no\n          label:\n            en: Lens product number\n            nl: Objectief productnummer\n          required: true\n          type:\n            name: text\n          constraint: Unique\n          inputTip:\n            en: Enter the product code\n            nl: Voer de product code in\n          searchable: true\n        - name: previous_model\n          label:\n            en: Previous model\n            nl: Vorig model\n          type:\n            name: reference\n            referenceTypeId: product\n        - name: product_properties\n          label:\n            en: Product properties\n            nl: Product eigenschappen\n          required: false\n          type:\n            name: nested\n            typeReference: ${[\"some-generic-properties-product-type\"].productTypeId}\n        - name: some-flag\n          label:\n            en: Some flag\n            nl: Een vlag\n          required: false\n          type:\n            name: enum\n            values:\n              - key: FLAG-1\n                label: Flag 1\n              - key: FLAG-2\n                label: FLAG-2\n        - name: origin\n          label:\n            en: Origin country\n            nl: Land van herkomst\n          required: false\n          type:\n            name: set\n            elementType:\n              name: lenum\n              localizedValues:\n                - key: NL\n                  label:\n                    en: Netherlands\n                    nl: Nederland\n                - key: DE\n                  label:\n                    en: Germany\n                    nl: Duitsland\n  product-type-with-product-level-attribute:\n    type: commercetools:ProductType\n    properties:\n      key: some-key\n      description: All the generic product properties\n      attributes:\n        - name: perishable\n          level: Product\n          label:\n            en: Is perishable\n            nl: Is perishable\n          required: true\n          type:\n            name: boolean\n```\n<!--End PulumiCodeChooser -->\n",
      "properties": {
        "attributes": {
          "type": "array",
          "items": {
            "$ref": "#/types/commercetools:index%2FProductTypeAttribute:ProductTypeAttribute"
          },
          "description": "[Product attribute definition](https://docs.commercetools.com/api/projects/productTypes#attributedefinition)\n"
        },
        "description": {
          "type": "string"
        },
        "key": {
          "type": "string",
          "description": "User-specific unique identifier for the product type (max. 256 characters)\n"
        },
        "name": {
          "type": "string"
        },
        "productTypeId": {
          "type": "string",
          "description": "The ID of this resource.\n"
        },
        "version": {
          "type": "number"
        }
      },
      "type": "object",
      "required": [
        "name",
        "productTypeId",
        "version"
      ],
      "inputProperties": {
        "attributes": {
          "type": "array",
          "items": {
            "$ref": "#/types/commercetools:index%2FProductTypeAttribute:ProductTypeAttribute"
          },
          "description": "[Product attribute definition](https://docs.commercetools.com/api/projects/productTypes#attributedefinition)\n"
        },
        "description": {
          "type": "string"
        },
        "key": {
          "type": "string",
          "description": "User-specific unique identifier for the product type (max. 256 characters)\n"
        },
        "name": {
          "type": "string"
        },
        "productTypeId": {
          "type": "string",
          "description": "The ID of this resource.\n"
        }
      },
      "stateInputs": {
        "description": "Input properties used for looking up and filtering ProductType resources.\n",
        "properties": {
          "attributes": {
            "type": "array",
            "items": {
              "$ref": "#/types/commercetools:index%2FProductTypeAttribute:ProductTypeAttribute"
            },
            "description": "[Product attribute definition](https://docs.commercetools.com/api/projects/productTypes#attributedefinition)\n"
          },
          "description": {
            "type": "string"
          },
          "key": {
            "type": "string",
            "description": "User-specific unique identifier for the product type (max. 256 characters)\n"
          },
          "name": {
            "type": "string"
          },
          "productTypeId": {
            "type": "string",
            "description": "The ID of this resource.\n"
          },
          "version": {
            "type": "number"
          }
        },
        "type": "object"
      }
    },
    "commercetools:index/projectSettings:ProjectSettings": {
      "description": "The project endpoint provides a limited set of information about settings and configuration of the project. Updating the settings is eventually consistent, it may take up to a minute before a change becomes fully active.\n\nSee also the [Project Settings API Documentation](https://docs.commercetools.com/api/projects/project)\n\n## Example Usage\n\n<!--Start PulumiCodeChooser -->\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as commercetools from \"@pulumi/commercetools\";\n\nconst my_project = new commercetools.ProjectSettings(\"my-project\", {\n    carts: [{\n        countryTaxRateFallbackEnabled: false,\n        deleteDaysAfterLastModification: 10,\n        priceRoundingMode: \"HalfUp\",\n        taxRoundingMode: \"HalfUp\",\n    }],\n    countries: [\n        \"NL\",\n        \"DE\",\n        \"US\",\n        \"CA\",\n    ],\n    currencies: [\n        \"EUR\",\n        \"USD\",\n        \"CAD\",\n    ],\n    enableSearchIndexBusinessUnits: true,\n    enableSearchIndexCustomers: true,\n    enableSearchIndexOrders: true,\n    enableSearchIndexProducts: true,\n    externalOauths: [{\n        authorizationHeader: \"Bearer secret\",\n        url: \"https://example.com/oauth/introspection\",\n    }],\n    languages: [\n        \"nl\",\n        \"de\",\n        \"en\",\n        \"fr-CA\",\n    ],\n    messages: [{\n        enabled: true,\n    }],\n    shippingRateCartClassificationValues: [{\n        key: \"Small\",\n        label: {\n            en: \"Small\",\n            nl: \"Klein\",\n        },\n    }],\n    shippingRateInputType: \"CartClassification\",\n    shoppingLists: [{\n        deleteDaysAfterLastModification: 100,\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumi_commercetools as commercetools\n\nmy_project = commercetools.ProjectSettings(\"my-project\",\n    carts=[{\n        \"country_tax_rate_fallback_enabled\": False,\n        \"delete_days_after_last_modification\": 10,\n        \"price_rounding_mode\": \"HalfUp\",\n        \"tax_rounding_mode\": \"HalfUp\",\n    }],\n    countries=[\n        \"NL\",\n        \"DE\",\n        \"US\",\n        \"CA\",\n    ],\n    currencies=[\n        \"EUR\",\n        \"USD\",\n        \"CAD\",\n    ],\n    enable_search_index_business_units=True,\n    enable_search_index_customers=True,\n    enable_search_index_orders=True,\n    enable_search_index_products=True,\n    external_oauths=[{\n        \"authorization_header\": \"Bearer secret\",\n        \"url\": \"https://example.com/oauth/introspection\",\n    }],\n    languages=[\n        \"nl\",\n        \"de\",\n        \"en\",\n        \"fr-CA\",\n    ],\n    messages=[{\n        \"enabled\": True,\n    }],\n    shipping_rate_cart_classification_values=[{\n        \"key\": \"Small\",\n        \"label\": {\n            \"en\": \"Small\",\n            \"nl\": \"Klein\",\n        },\n    }],\n    shipping_rate_input_type=\"CartClassification\",\n    shopping_lists=[{\n        \"delete_days_after_last_modification\": 100,\n    }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Commercetools = Pulumi.Commercetools;\n\nreturn await Deployment.RunAsync(() => \n{\n    var my_project = new Commercetools.ProjectSettings(\"my-project\", new()\n    {\n        Carts = new[]\n        {\n            new Commercetools.Inputs.ProjectSettingsCartArgs\n            {\n                CountryTaxRateFallbackEnabled = false,\n                DeleteDaysAfterLastModification = 10,\n                PriceRoundingMode = \"HalfUp\",\n                TaxRoundingMode = \"HalfUp\",\n            },\n        },\n        Countries = new[]\n        {\n            \"NL\",\n            \"DE\",\n            \"US\",\n            \"CA\",\n        },\n        Currencies = new[]\n        {\n            \"EUR\",\n            \"USD\",\n            \"CAD\",\n        },\n        EnableSearchIndexBusinessUnits = true,\n        EnableSearchIndexCustomers = true,\n        EnableSearchIndexOrders = true,\n        EnableSearchIndexProducts = true,\n        ExternalOauths = new[]\n        {\n            new Commercetools.Inputs.ProjectSettingsExternalOauthArgs\n            {\n                AuthorizationHeader = \"Bearer secret\",\n                Url = \"https://example.com/oauth/introspection\",\n            },\n        },\n        Languages = new[]\n        {\n            \"nl\",\n            \"de\",\n            \"en\",\n            \"fr-CA\",\n        },\n        Messages = new[]\n        {\n            new Commercetools.Inputs.ProjectSettingsMessageArgs\n            {\n                Enabled = true,\n            },\n        },\n        ShippingRateCartClassificationValues = new[]\n        {\n            new Commercetools.Inputs.ProjectSettingsShippingRateCartClassificationValueArgs\n            {\n                Key = \"Small\",\n                Label = \n                {\n                    { \"en\", \"Small\" },\n                    { \"nl\", \"Klein\" },\n                },\n            },\n        },\n        ShippingRateInputType = \"CartClassification\",\n        ShoppingLists = new[]\n        {\n            new Commercetools.Inputs.ProjectSettingsShoppingListArgs\n            {\n                DeleteDaysAfterLastModification = 100,\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/commercetools/commercetools\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := commercetools.NewProjectSettings(ctx, \"my-project\", &commercetools.ProjectSettingsArgs{\n\t\t\tCarts: commercetools.ProjectSettingsCartArray{\n\t\t\t\t&commercetools.ProjectSettingsCartArgs{\n\t\t\t\t\tCountryTaxRateFallbackEnabled:   pulumi.Bool(false),\n\t\t\t\t\tDeleteDaysAfterLastModification: pulumi.Float64(10),\n\t\t\t\t\tPriceRoundingMode:               pulumi.String(\"HalfUp\"),\n\t\t\t\t\tTaxRoundingMode:                 pulumi.String(\"HalfUp\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tCountries: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"NL\"),\n\t\t\t\tpulumi.String(\"DE\"),\n\t\t\t\tpulumi.String(\"US\"),\n\t\t\t\tpulumi.String(\"CA\"),\n\t\t\t},\n\t\t\tCurrencies: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"EUR\"),\n\t\t\t\tpulumi.String(\"USD\"),\n\t\t\t\tpulumi.String(\"CAD\"),\n\t\t\t},\n\t\t\tEnableSearchIndexBusinessUnits: pulumi.Bool(true),\n\t\t\tEnableSearchIndexCustomers:     pulumi.Bool(true),\n\t\t\tEnableSearchIndexOrders:        pulumi.Bool(true),\n\t\t\tEnableSearchIndexProducts:      pulumi.Bool(true),\n\t\t\tExternalOauths: commercetools.ProjectSettingsExternalOauthArray{\n\t\t\t\t&commercetools.ProjectSettingsExternalOauthArgs{\n\t\t\t\t\tAuthorizationHeader: pulumi.String(\"Bearer secret\"),\n\t\t\t\t\tUrl:                 pulumi.String(\"https://example.com/oauth/introspection\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tLanguages: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"nl\"),\n\t\t\t\tpulumi.String(\"de\"),\n\t\t\t\tpulumi.String(\"en\"),\n\t\t\t\tpulumi.String(\"fr-CA\"),\n\t\t\t},\n\t\t\tMessages: commercetools.ProjectSettingsMessageArray{\n\t\t\t\t&commercetools.ProjectSettingsMessageArgs{\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t\tShippingRateCartClassificationValues: commercetools.ProjectSettingsShippingRateCartClassificationValueArray{\n\t\t\t\t&commercetools.ProjectSettingsShippingRateCartClassificationValueArgs{\n\t\t\t\t\tKey: pulumi.String(\"Small\"),\n\t\t\t\t\tLabel: pulumi.StringMap{\n\t\t\t\t\t\t\"en\": pulumi.String(\"Small\"),\n\t\t\t\t\t\t\"nl\": pulumi.String(\"Klein\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tShippingRateInputType: pulumi.String(\"CartClassification\"),\n\t\t\tShoppingLists: commercetools.ProjectSettingsShoppingListArray{\n\t\t\t\t&commercetools.ProjectSettingsShoppingListArgs{\n\t\t\t\t\tDeleteDaysAfterLastModification: pulumi.Float64(100),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.commercetools.ProjectSettings;\nimport com.pulumi.commercetools.ProjectSettingsArgs;\nimport com.pulumi.commercetools.inputs.ProjectSettingsCartArgs;\nimport com.pulumi.commercetools.inputs.ProjectSettingsExternalOauthArgs;\nimport com.pulumi.commercetools.inputs.ProjectSettingsMessageArgs;\nimport com.pulumi.commercetools.inputs.ProjectSettingsShippingRateCartClassificationValueArgs;\nimport com.pulumi.commercetools.inputs.ProjectSettingsShoppingListArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var my_project = new ProjectSettings(\"my-project\", ProjectSettingsArgs.builder()\n            .carts(ProjectSettingsCartArgs.builder()\n                .countryTaxRateFallbackEnabled(false)\n                .deleteDaysAfterLastModification(10)\n                .priceRoundingMode(\"HalfUp\")\n                .taxRoundingMode(\"HalfUp\")\n                .build())\n            .countries(            \n                \"NL\",\n                \"DE\",\n                \"US\",\n                \"CA\")\n            .currencies(            \n                \"EUR\",\n                \"USD\",\n                \"CAD\")\n            .enableSearchIndexBusinessUnits(true)\n            .enableSearchIndexCustomers(true)\n            .enableSearchIndexOrders(true)\n            .enableSearchIndexProducts(true)\n            .externalOauths(ProjectSettingsExternalOauthArgs.builder()\n                .authorizationHeader(\"Bearer secret\")\n                .url(\"https://example.com/oauth/introspection\")\n                .build())\n            .languages(            \n                \"nl\",\n                \"de\",\n                \"en\",\n                \"fr-CA\")\n            .messages(ProjectSettingsMessageArgs.builder()\n                .enabled(true)\n                .build())\n            .shippingRateCartClassificationValues(ProjectSettingsShippingRateCartClassificationValueArgs.builder()\n                .key(\"Small\")\n                .label(Map.ofEntries(\n                    Map.entry(\"en\", \"Small\"),\n                    Map.entry(\"nl\", \"Klein\")\n                ))\n                .build())\n            .shippingRateInputType(\"CartClassification\")\n            .shoppingLists(ProjectSettingsShoppingListArgs.builder()\n                .deleteDaysAfterLastModification(100)\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  my-project:\n    type: commercetools:ProjectSettings\n    properties:\n      carts:\n        - countryTaxRateFallbackEnabled: false\n          deleteDaysAfterLastModification: 10\n          priceRoundingMode: HalfUp\n          taxRoundingMode: HalfUp\n      countries:\n        - NL\n        - DE\n        - US\n        - CA\n      currencies:\n        - EUR\n        - USD\n        - CAD\n      enableSearchIndexBusinessUnits: true\n      enableSearchIndexCustomers: true\n      enableSearchIndexOrders: true\n      enableSearchIndexProducts: true\n      externalOauths:\n        - authorizationHeader: Bearer secret\n          url: https://example.com/oauth/introspection\n      languages:\n        - nl\n        - de\n        - en\n        - fr-CA\n      messages:\n        - enabled: true\n      shippingRateCartClassificationValues:\n        - key: Small\n          label:\n            en: Small\n            nl: Klein\n      shippingRateInputType: CartClassification\n      shoppingLists:\n        - deleteDaysAfterLastModification: 100\n```\n<!--End PulumiCodeChooser -->\n",
      "properties": {
        "businessUnits": {
          "type": "array",
          "items": {
            "$ref": "#/types/commercetools:index%2FProjectSettingsBusinessUnit:ProjectSettingsBusinessUnit"
          },
          "description": "Holds configuration specific to [Business Units](https://docs.commercetools.com/api/projects/business-units#ctp:api:type:BusinessUnit).\n"
        },
        "carts": {
          "type": "array",
          "items": {
            "$ref": "#/types/commercetools:index%2FProjectSettingsCart:ProjectSettingsCart"
          },
          "description": "[Carts Configuration](https://docs.commercetools.com/api/projects/project#cartsconfiguration)\n"
        },
        "countries": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A two-digit country code as per [ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)\n"
        },
        "currencies": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A three-digit currency code as per [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217)\n"
        },
        "enableSearchIndexBusinessUnits": {
          "type": "boolean",
          "description": "Enable the Search Indexing of business  units\n"
        },
        "enableSearchIndexCustomers": {
          "type": "boolean",
          "description": "Enable the Search Indexing of customers\n"
        },
        "enableSearchIndexOrders": {
          "type": "boolean",
          "description": "Enable the Search Indexing of orders\n"
        },
        "enableSearchIndexProductSearch": {
          "type": "boolean",
          "description": "Enable the Search Indexing of products\n"
        },
        "enableSearchIndexProducts": {
          "type": "boolean",
          "description": "Enable the Search Indexing of product projections\n"
        },
        "externalOauths": {
          "type": "array",
          "items": {
            "$ref": "#/types/commercetools:index%2FProjectSettingsExternalOauth:ProjectSettingsExternalOauth"
          },
          "description": "[External OAUTH](https://docs.commercetools.com/api/projects/project#externaloauth)\n"
        },
        "key": {
          "type": "string",
          "description": "The unique key of the project\n"
        },
        "languages": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "[IETF Language Tag](https://en.wikipedia.org/wiki/IETF_language_tag)\n"
        },
        "messages": {
          "type": "array",
          "items": {
            "$ref": "#/types/commercetools:index%2FProjectSettingsMessage:ProjectSettingsMessage"
          },
          "description": "The change notifications subscribed to\n"
        },
        "name": {
          "type": "string",
          "description": "The name of the project\n"
        },
        "shippingRateCartClassificationValues": {
          "type": "array",
          "items": {
            "$ref": "#/types/commercetools:index%2FProjectSettingsShippingRateCartClassificationValue:ProjectSettingsShippingRateCartClassificationValue"
          },
          "description": "If shipping*rate*input*type is set to CartClassification these values are used to create tiers\n. Only a key defined inside the values array can be used to create a tier, or to set a value for the shippingRateInput on the cart. The keys are checked for uniqueness and the request is rejected if keys are not unique\n"
        },
        "shippingRateInputType": {
          "type": "string",
          "description": "Three ways to dynamically select a ShippingRatePriceTier exist. The CartValue type uses the sum of all line item prices, whereas CartClassification and CartScore use the shippingRateInput field on the cart to select a tier\n"
        },
        "shoppingLists": {
          "type": "array",
          "items": {
            "$ref": "#/types/commercetools:index%2FProjectSettingsShoppingList:ProjectSettingsShoppingList"
          },
          "description": "[Shopping List Configuration](https://docs.commercetools.com/api/projects/project#ctp:api:type:ShoppingListsConfiguration)\n"
        },
        "version": {
          "type": "number"
        }
      },
      "type": "object",
      "required": [
        "countries",
        "currencies",
        "enableSearchIndexBusinessUnits",
        "enableSearchIndexCustomers",
        "enableSearchIndexOrders",
        "enableSearchIndexProductSearch",
        "enableSearchIndexProducts",
        "key",
        "languages",
        "name",
        "version"
      ],
      "inputProperties": {
        "businessUnits": {
          "type": "array",
          "items": {
            "$ref": "#/types/commercetools:index%2FProjectSettingsBusinessUnit:ProjectSettingsBusinessUnit"
          },
          "description": "Holds configuration specific to [Business Units](https://docs.commercetools.com/api/projects/business-units#ctp:api:type:BusinessUnit).\n"
        },
        "carts": {
          "type": "array",
          "items": {
            "$ref": "#/types/commercetools:index%2FProjectSettingsCart:ProjectSettingsCart"
          },
          "description": "[Carts Configuration](https://docs.commercetools.com/api/projects/project#cartsconfiguration)\n"
        },
        "countries": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A two-digit country code as per [ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)\n"
        },
        "currencies": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A three-digit currency code as per [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217)\n"
        },
        "enableSearchIndexBusinessUnits": {
          "type": "boolean",
          "description": "Enable the Search Indexing of business  units\n"
        },
        "enableSearchIndexCustomers": {
          "type": "boolean",
          "description": "Enable the Search Indexing of customers\n"
        },
        "enableSearchIndexOrders": {
          "type": "boolean",
          "description": "Enable the Search Indexing of orders\n"
        },
        "enableSearchIndexProductSearch": {
          "type": "boolean",
          "description": "Enable the Search Indexing of products\n"
        },
        "enableSearchIndexProducts": {
          "type": "boolean",
          "description": "Enable the Search Indexing of product projections\n"
        },
        "externalOauths": {
          "type": "array",
          "items": {
            "$ref": "#/types/commercetools:index%2FProjectSettingsExternalOauth:ProjectSettingsExternalOauth"
          },
          "description": "[External OAUTH](https://docs.commercetools.com/api/projects/project#externaloauth)\n"
        },
        "languages": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "[IETF Language Tag](https://en.wikipedia.org/wiki/IETF_language_tag)\n"
        },
        "messages": {
          "type": "array",
          "items": {
            "$ref": "#/types/commercetools:index%2FProjectSettingsMessage:ProjectSettingsMessage"
          },
          "description": "The change notifications subscribed to\n"
        },
        "name": {
          "type": "string",
          "description": "The name of the project\n"
        },
        "shippingRateCartClassificationValues": {
          "type": "array",
          "items": {
            "$ref": "#/types/commercetools:index%2FProjectSettingsShippingRateCartClassificationValue:ProjectSettingsShippingRateCartClassificationValue"
          },
          "description": "If shipping*rate*input*type is set to CartClassification these values are used to create tiers\n. Only a key defined inside the values array can be used to create a tier, or to set a value for the shippingRateInput on the cart. The keys are checked for uniqueness and the request is rejected if keys are not unique\n"
        },
        "shippingRateInputType": {
          "type": "string",
          "description": "Three ways to dynamically select a ShippingRatePriceTier exist. The CartValue type uses the sum of all line item prices, whereas CartClassification and CartScore use the shippingRateInput field on the cart to select a tier\n"
        },
        "shoppingLists": {
          "type": "array",
          "items": {
            "$ref": "#/types/commercetools:index%2FProjectSettingsShoppingList:ProjectSettingsShoppingList"
          },
          "description": "[Shopping List Configuration](https://docs.commercetools.com/api/projects/project#ctp:api:type:ShoppingListsConfiguration)\n"
        }
      },
      "stateInputs": {
        "description": "Input properties used for looking up and filtering ProjectSettings resources.\n",
        "properties": {
          "businessUnits": {
            "type": "array",
            "items": {
              "$ref": "#/types/commercetools:index%2FProjectSettingsBusinessUnit:ProjectSettingsBusinessUnit"
            },
            "description": "Holds configuration specific to [Business Units](https://docs.commercetools.com/api/projects/business-units#ctp:api:type:BusinessUnit).\n"
          },
          "carts": {
            "type": "array",
            "items": {
              "$ref": "#/types/commercetools:index%2FProjectSettingsCart:ProjectSettingsCart"
            },
            "description": "[Carts Configuration](https://docs.commercetools.com/api/projects/project#cartsconfiguration)\n"
          },
          "countries": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "A two-digit country code as per [ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)\n"
          },
          "currencies": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "A three-digit currency code as per [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217)\n"
          },
          "enableSearchIndexBusinessUnits": {
            "type": "boolean",
            "description": "Enable the Search Indexing of business  units\n"
          },
          "enableSearchIndexCustomers": {
            "type": "boolean",
            "description": "Enable the Search Indexing of customers\n"
          },
          "enableSearchIndexOrders": {
            "type": "boolean",
            "description": "Enable the Search Indexing of orders\n"
          },
          "enableSearchIndexProductSearch": {
            "type": "boolean",
            "description": "Enable the Search Indexing of products\n"
          },
          "enableSearchIndexProducts": {
            "type": "boolean",
            "description": "Enable the Search Indexing of product projections\n"
          },
          "externalOauths": {
            "type": "array",
            "items": {
              "$ref": "#/types/commercetools:index%2FProjectSettingsExternalOauth:ProjectSettingsExternalOauth"
            },
            "description": "[External OAUTH](https://docs.commercetools.com/api/projects/project#externaloauth)\n"
          },
          "key": {
            "type": "string",
            "description": "The unique key of the project\n"
          },
          "languages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "[IETF Language Tag](https://en.wikipedia.org/wiki/IETF_language_tag)\n"
          },
          "messages": {
            "type": "array",
            "items": {
              "$ref": "#/types/commercetools:index%2FProjectSettingsMessage:ProjectSettingsMessage"
            },
            "description": "The change notifications subscribed to\n"
          },
          "name": {
            "type": "string",
            "description": "The name of the project\n"
          },
          "shippingRateCartClassificationValues": {
            "type": "array",
            "items": {
              "$ref": "#/types/commercetools:index%2FProjectSettingsShippingRateCartClassificationValue:ProjectSettingsShippingRateCartClassificationValue"
            },
            "description": "If shipping*rate*input*type is set to CartClassification these values are used to create tiers\n. Only a key defined inside the values array can be used to create a tier, or to set a value for the shippingRateInput on the cart. The keys are checked for uniqueness and the request is rejected if keys are not unique\n"
          },
          "shippingRateInputType": {
            "type": "string",
            "description": "Three ways to dynamically select a ShippingRatePriceTier exist. The CartValue type uses the sum of all line item prices, whereas CartClassification and CartScore use the shippingRateInput field on the cart to select a tier\n"
          },
          "shoppingLists": {
            "type": "array",
            "items": {
              "$ref": "#/types/commercetools:index%2FProjectSettingsShoppingList:ProjectSettingsShoppingList"
            },
            "description": "[Shopping List Configuration](https://docs.commercetools.com/api/projects/project#ctp:api:type:ShoppingListsConfiguration)\n"
          },
          "version": {
            "type": "number"
          }
        },
        "type": "object"
      }
    },
    "commercetools:index/shippingMethod:ShippingMethod": {
      "description": "With Shipping Methods you can specify which shipping services you want to provide to your customers for deliveries to different areas of the world at rates you can define.\n\nSee also the [Shipping Methods API Documentation](https://docs.commercetools.com/api/projects/shippingMethods)\n\n## Example Usage\n\n<!--Start PulumiCodeChooser -->\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as commercetools from \"@pulumi/commercetools\";\n\nconst some_tax_category = new commercetools.TaxCategory(\"some-tax-category\", {\n    key: \"some-tax-category-key\",\n    description: \"test category\",\n});\nconst standard = new commercetools.ShippingMethod(\"standard\", {\n    key: \"standard-key\",\n    description: \"Standard tax category\",\n    isDefault: true,\n    taxCategoryId: some_tax_category.taxCategoryId,\n    predicate: \"1 = 1\",\n});\n```\n```python\nimport pulumi\nimport pulumi_commercetools as commercetools\n\nsome_tax_category = commercetools.TaxCategory(\"some-tax-category\",\n    key=\"some-tax-category-key\",\n    description=\"test category\")\nstandard = commercetools.ShippingMethod(\"standard\",\n    key=\"standard-key\",\n    description=\"Standard tax category\",\n    is_default=True,\n    tax_category_id=some_tax_category.tax_category_id,\n    predicate=\"1 = 1\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Commercetools = Pulumi.Commercetools;\n\nreturn await Deployment.RunAsync(() => \n{\n    var some_tax_category = new Commercetools.TaxCategory(\"some-tax-category\", new()\n    {\n        Key = \"some-tax-category-key\",\n        Description = \"test category\",\n    });\n\n    var standard = new Commercetools.ShippingMethod(\"standard\", new()\n    {\n        Key = \"standard-key\",\n        Description = \"Standard tax category\",\n        IsDefault = true,\n        TaxCategoryId = some_tax_category.TaxCategoryId,\n        Predicate = \"1 = 1\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/commercetools/commercetools\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tsome_tax_category, err := commercetools.NewTaxCategory(ctx, \"some-tax-category\", &commercetools.TaxCategoryArgs{\n\t\t\tKey:         pulumi.String(\"some-tax-category-key\"),\n\t\t\tDescription: pulumi.String(\"test category\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = commercetools.NewShippingMethod(ctx, \"standard\", &commercetools.ShippingMethodArgs{\n\t\t\tKey:           pulumi.String(\"standard-key\"),\n\t\t\tDescription:   pulumi.String(\"Standard tax category\"),\n\t\t\tIsDefault:     pulumi.Bool(true),\n\t\t\tTaxCategoryId: some_tax_category.TaxCategoryId,\n\t\t\tPredicate:     pulumi.String(\"1 = 1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.commercetools.TaxCategory;\nimport com.pulumi.commercetools.TaxCategoryArgs;\nimport com.pulumi.commercetools.ShippingMethod;\nimport com.pulumi.commercetools.ShippingMethodArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var some_tax_category = new TaxCategory(\"some-tax-category\", TaxCategoryArgs.builder()\n            .key(\"some-tax-category-key\")\n            .description(\"test category\")\n            .build());\n\n        var standard = new ShippingMethod(\"standard\", ShippingMethodArgs.builder()\n            .key(\"standard-key\")\n            .description(\"Standard tax category\")\n            .isDefault(true)\n            .taxCategoryId(some_tax_category.taxCategoryId())\n            .predicate(\"1 = 1\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  some-tax-category:\n    type: commercetools:TaxCategory\n    properties:\n      key: some-tax-category-key\n      description: test category\n  standard:\n    type: commercetools:ShippingMethod\n    properties:\n      key: standard-key\n      description: Standard tax category\n      isDefault: true\n      taxCategoryId: ${[\"some-tax-category\"].taxCategoryId}\n      predicate: 1 = 1\n```\n<!--End PulumiCodeChooser -->\n",
      "properties": {
        "active": {
          "type": "boolean",
          "description": "Activate or deactivate a shipping method. Default is active.\n"
        },
        "custom": {
          "$ref": "#/types/commercetools:index%2FShippingMethodCustom:ShippingMethodCustom"
        },
        "description": {
          "type": "string"
        },
        "isDefault": {
          "type": "boolean",
          "description": "One shipping method in a project can be default\n"
        },
        "key": {
          "type": "string",
          "description": "User-specific unique identifier for the shipping method\n"
        },
        "localizedDescription": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "[LocalizedString](https://docs.commercetools.com/api/types#localizedstring)\n"
        },
        "localizedName": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "[LocalizedString](https://docs.commercetools.com/api/types#localizedstring)\n"
        },
        "name": {
          "type": "string"
        },
        "predicate": {
          "type": "string",
          "description": "A Cart predicate which can be used to more precisely select a shipping method for a cart\n"
        },
        "shippingMethodId": {
          "type": "string",
          "description": "The ID of this resource.\n"
        },
        "taxCategoryId": {
          "type": "string",
          "description": "ID of a [Tax Category](https://docs.commercetools.com/api/projects/taxCategories#taxcategory)\n"
        },
        "version": {
          "type": "number"
        }
      },
      "type": "object",
      "required": [
        "name",
        "shippingMethodId",
        "taxCategoryId",
        "version"
      ],
      "inputProperties": {
        "active": {
          "type": "boolean",
          "description": "Activate or deactivate a shipping method. Default is active.\n"
        },
        "custom": {
          "$ref": "#/types/commercetools:index%2FShippingMethodCustom:ShippingMethodCustom"
        },
        "description": {
          "type": "string"
        },
        "isDefault": {
          "type": "boolean",
          "description": "One shipping method in a project can be default\n"
        },
        "key": {
          "type": "string",
          "description": "User-specific unique identifier for the shipping method\n"
        },
        "localizedDescription": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "[LocalizedString](https://docs.commercetools.com/api/types#localizedstring)\n"
        },
        "localizedName": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "[LocalizedString](https://docs.commercetools.com/api/types#localizedstring)\n"
        },
        "name": {
          "type": "string"
        },
        "predicate": {
          "type": "string",
          "description": "A Cart predicate which can be used to more precisely select a shipping method for a cart\n"
        },
        "shippingMethodId": {
          "type": "string",
          "description": "The ID of this resource.\n"
        },
        "taxCategoryId": {
          "type": "string",
          "description": "ID of a [Tax Category](https://docs.commercetools.com/api/projects/taxCategories#taxcategory)\n"
        }
      },
      "requiredInputs": [
        "taxCategoryId"
      ],
      "stateInputs": {
        "description": "Input properties used for looking up and filtering ShippingMethod resources.\n",
        "properties": {
          "active": {
            "type": "boolean",
            "description": "Activate or deactivate a shipping method. Default is active.\n"
          },
          "custom": {
            "$ref": "#/types/commercetools:index%2FShippingMethodCustom:ShippingMethodCustom"
          },
          "description": {
            "type": "string"
          },
          "isDefault": {
            "type": "boolean",
            "description": "One shipping method in a project can be default\n"
          },
          "key": {
            "type": "string",
            "description": "User-specific unique identifier for the shipping method\n"
          },
          "localizedDescription": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "description": "[LocalizedString](https://docs.commercetools.com/api/types#localizedstring)\n"
          },
          "localizedName": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "description": "[LocalizedString](https://docs.commercetools.com/api/types#localizedstring)\n"
          },
          "name": {
            "type": "string"
          },
          "predicate": {
            "type": "string",
            "description": "A Cart predicate which can be used to more precisely select a shipping method for a cart\n"
          },
          "shippingMethodId": {
            "type": "string",
            "description": "The ID of this resource.\n"
          },
          "taxCategoryId": {
            "type": "string",
            "description": "ID of a [Tax Category](https://docs.commercetools.com/api/projects/taxCategories#taxcategory)\n"
          },
          "version": {
            "type": "number"
          }
        },
        "type": "object"
      }
    },
    "commercetools:index/shippingZone:ShippingZone": {
      "description": "## Example Usage\n\n<!--Start PulumiCodeChooser -->\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as commercetools from \"@pulumi/commercetools\";\n\nconst de_us = new commercetools.ShippingZone(\"de-us\", {\n    description: \"Germany and US\",\n    key: \"some-key\",\n    locations: [\n        {\n            country: \"DE\",\n        },\n        {\n            country: \"US\",\n            state: \"Nevada\",\n        },\n    ],\n});\n```\n```python\nimport pulumi\nimport pulumi_commercetools as commercetools\n\nde_us = commercetools.ShippingZone(\"de-us\",\n    description=\"Germany and US\",\n    key=\"some-key\",\n    locations=[\n        {\n            \"country\": \"DE\",\n        },\n        {\n            \"country\": \"US\",\n            \"state\": \"Nevada\",\n        },\n    ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Commercetools = Pulumi.Commercetools;\n\nreturn await Deployment.RunAsync(() => \n{\n    var de_us = new Commercetools.ShippingZone(\"de-us\", new()\n    {\n        Description = \"Germany and US\",\n        Key = \"some-key\",\n        Locations = new[]\n        {\n            new Commercetools.Inputs.ShippingZoneLocationArgs\n            {\n                Country = \"DE\",\n            },\n            new Commercetools.Inputs.ShippingZoneLocationArgs\n            {\n                Country = \"US\",\n                State = \"Nevada\",\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/commercetools/commercetools\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := commercetools.NewShippingZone(ctx, \"de-us\", &commercetools.ShippingZoneArgs{\n\t\t\tDescription: pulumi.String(\"Germany and US\"),\n\t\t\tKey:         pulumi.String(\"some-key\"),\n\t\t\tLocations: commercetools.ShippingZoneLocationArray{\n\t\t\t\t&commercetools.ShippingZoneLocationArgs{\n\t\t\t\t\tCountry: pulumi.String(\"DE\"),\n\t\t\t\t},\n\t\t\t\t&commercetools.ShippingZoneLocationArgs{\n\t\t\t\t\tCountry: pulumi.String(\"US\"),\n\t\t\t\t\tState:   pulumi.String(\"Nevada\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.commercetools.ShippingZone;\nimport com.pulumi.commercetools.ShippingZoneArgs;\nimport com.pulumi.commercetools.inputs.ShippingZoneLocationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var de_us = new ShippingZone(\"de-us\", ShippingZoneArgs.builder()\n            .description(\"Germany and US\")\n            .key(\"some-key\")\n            .locations(            \n                ShippingZoneLocationArgs.builder()\n                    .country(\"DE\")\n                    .build(),\n                ShippingZoneLocationArgs.builder()\n                    .country(\"US\")\n                    .state(\"Nevada\")\n                    .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  de-us:\n    type: commercetools:ShippingZone\n    properties:\n      description: Germany and US\n      key: some-key\n      locations:\n        - country: DE\n        - country: US\n          state: Nevada\n```\n<!--End PulumiCodeChooser -->\n",
      "properties": {
        "description": {
          "type": "string"
        },
        "key": {
          "type": "string",
          "description": "User-specific unique identifier for a zone. Must be unique across a project\n"
        },
        "locations": {
          "type": "array",
          "items": {
            "$ref": "#/types/commercetools:index%2FShippingZoneLocation:ShippingZoneLocation"
          },
          "description": "[Location](https://docs.commercetoolstools.pi/projects/zones#location)\n"
        },
        "name": {
          "type": "string"
        },
        "shippingZoneId": {
          "type": "string",
          "description": "The ID of this resource.\n"
        },
        "version": {
          "type": "number"
        }
      },
      "type": "object",
      "required": [
        "name",
        "shippingZoneId",
        "version"
      ],
      "inputProperties": {
        "description": {
          "type": "string"
        },
        "key": {
          "type": "string",
          "description": "User-specific unique identifier for a zone. Must be unique across a project\n"
        },
        "locations": {
          "type": "array",
          "items": {
            "$ref": "#/types/commercetools:index%2FShippingZoneLocation:ShippingZoneLocation"
          },
          "description": "[Location](https://docs.commercetoolstools.pi/projects/zones#location)\n"
        },
        "name": {
          "type": "string"
        },
        "shippingZoneId": {
          "type": "string",
          "description": "The ID of this resource.\n"
        }
      },
      "stateInputs": {
        "description": "Input properties used for looking up and filtering ShippingZone resources.\n",
        "properties": {
          "description": {
            "type": "string"
          },
          "key": {
            "type": "string",
            "description": "User-specific unique identifier for a zone. Must be unique across a project\n"
          },
          "locations": {
            "type": "array",
            "items": {
              "$ref": "#/types/commercetools:index%2FShippingZoneLocation:ShippingZoneLocation"
            },
            "description": "[Location](https://docs.commercetoolstools.pi/projects/zones#location)\n"
          },
          "name": {
            "type": "string"
          },
          "shippingZoneId": {
            "type": "string",
            "description": "The ID of this resource.\n"
          },
          "version": {
            "type": "number"
          }
        },
        "type": "object"
      }
    },
    "commercetools:index/shippingZoneRate:ShippingZoneRate": {
      "description": "Defines shipping rates (prices) for a specific zone.\n\nSee also [ZoneRate API Documentation](https://docs.commercetools.com/api/projects/shippingMethods#zonerate)\n\n## Example Usage\n\n<!--Start PulumiCodeChooser -->\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as commercetools from \"@pulumi/commercetools\";\n\nconst my_tax_category = new commercetools.TaxCategory(\"my-tax-category\", {\n    key: \"some-tax-category-key\",\n    description: \"Example\",\n});\nconst my_shipping_method = new commercetools.ShippingMethod(\"my-shipping-method\", {\n    key: \"some-shipping-method-key\",\n    description: \"Standard method\",\n    isDefault: true,\n    taxCategoryId: my_tax_category.taxCategoryId,\n    predicate: \"1 = 1\",\n});\nconst my_shipping_zone = new commercetools.ShippingZone(\"my-shipping-zone\", {\n    key: \"some-shipping-zone-key\",\n    description: \"My shipping zone\",\n    locations: [{\n        country: \"DE\",\n    }],\n});\nconst my_shipping_zone_rate = new commercetools.ShippingZoneRate(\"my-shipping-zone-rate\", {\n    shippingMethodId: my_shipping_method.shippingMethodId,\n    shippingZoneId: my_shipping_zone.shippingZoneId,\n    price: {\n        centAmount: 5000,\n        currencyCode: \"EUR\",\n    },\n    freeAbove: {\n        centAmount: 50000,\n        currencyCode: \"EUR\",\n    },\n    shippingRatePriceTiers: [\n        {\n            type: \"CartScore\",\n            score: 10,\n            price: {\n                centAmount: 5000,\n                currencyCode: \"EUR\",\n            },\n        },\n        {\n            type: \"CartScore\",\n            score: 20,\n            price: {\n                centAmount: 2000,\n                currencyCode: \"EUR\",\n            },\n        },\n        {\n            type: \"CartScore\",\n            score: 30,\n            priceFunction: {\n                \"function\": \"x + 1\",\n                currencyCode: \"EUR\",\n            },\n        },\n    ],\n});\n```\n```python\nimport pulumi\nimport pulumi_commercetools as commercetools\n\nmy_tax_category = commercetools.TaxCategory(\"my-tax-category\",\n    key=\"some-tax-category-key\",\n    description=\"Example\")\nmy_shipping_method = commercetools.ShippingMethod(\"my-shipping-method\",\n    key=\"some-shipping-method-key\",\n    description=\"Standard method\",\n    is_default=True,\n    tax_category_id=my_tax_category.tax_category_id,\n    predicate=\"1 = 1\")\nmy_shipping_zone = commercetools.ShippingZone(\"my-shipping-zone\",\n    key=\"some-shipping-zone-key\",\n    description=\"My shipping zone\",\n    locations=[{\n        \"country\": \"DE\",\n    }])\nmy_shipping_zone_rate = commercetools.ShippingZoneRate(\"my-shipping-zone-rate\",\n    shipping_method_id=my_shipping_method.shipping_method_id,\n    shipping_zone_id=my_shipping_zone.shipping_zone_id,\n    price={\n        \"cent_amount\": 5000,\n        \"currency_code\": \"EUR\",\n    },\n    free_above={\n        \"cent_amount\": 50000,\n        \"currency_code\": \"EUR\",\n    },\n    shipping_rate_price_tiers=[\n        {\n            \"type\": \"CartScore\",\n            \"score\": 10,\n            \"price\": {\n                \"cent_amount\": 5000,\n                \"currency_code\": \"EUR\",\n            },\n        },\n        {\n            \"type\": \"CartScore\",\n            \"score\": 20,\n            \"price\": {\n                \"cent_amount\": 2000,\n                \"currency_code\": \"EUR\",\n            },\n        },\n        {\n            \"type\": \"CartScore\",\n            \"score\": 30,\n            \"price_function\": {\n                \"function\": \"x + 1\",\n                \"currency_code\": \"EUR\",\n            },\n        },\n    ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Commercetools = Pulumi.Commercetools;\n\nreturn await Deployment.RunAsync(() => \n{\n    var my_tax_category = new Commercetools.TaxCategory(\"my-tax-category\", new()\n    {\n        Key = \"some-tax-category-key\",\n        Description = \"Example\",\n    });\n\n    var my_shipping_method = new Commercetools.ShippingMethod(\"my-shipping-method\", new()\n    {\n        Key = \"some-shipping-method-key\",\n        Description = \"Standard method\",\n        IsDefault = true,\n        TaxCategoryId = my_tax_category.TaxCategoryId,\n        Predicate = \"1 = 1\",\n    });\n\n    var my_shipping_zone = new Commercetools.ShippingZone(\"my-shipping-zone\", new()\n    {\n        Key = \"some-shipping-zone-key\",\n        Description = \"My shipping zone\",\n        Locations = new[]\n        {\n            new Commercetools.Inputs.ShippingZoneLocationArgs\n            {\n                Country = \"DE\",\n            },\n        },\n    });\n\n    var my_shipping_zone_rate = new Commercetools.ShippingZoneRate(\"my-shipping-zone-rate\", new()\n    {\n        ShippingMethodId = my_shipping_method.ShippingMethodId,\n        ShippingZoneId = my_shipping_zone.ShippingZoneId,\n        Price = new Commercetools.Inputs.ShippingZoneRatePriceArgs\n        {\n            CentAmount = 5000,\n            CurrencyCode = \"EUR\",\n        },\n        FreeAbove = new Commercetools.Inputs.ShippingZoneRateFreeAboveArgs\n        {\n            CentAmount = 50000,\n            CurrencyCode = \"EUR\",\n        },\n        ShippingRatePriceTiers = new[]\n        {\n            new Commercetools.Inputs.ShippingZoneRateShippingRatePriceTierArgs\n            {\n                Type = \"CartScore\",\n                Score = 10,\n                Price = new Commercetools.Inputs.ShippingZoneRateShippingRatePriceTierPriceArgs\n                {\n                    CentAmount = 5000,\n                    CurrencyCode = \"EUR\",\n                },\n            },\n            new Commercetools.Inputs.ShippingZoneRateShippingRatePriceTierArgs\n            {\n                Type = \"CartScore\",\n                Score = 20,\n                Price = new Commercetools.Inputs.ShippingZoneRateShippingRatePriceTierPriceArgs\n                {\n                    CentAmount = 2000,\n                    CurrencyCode = \"EUR\",\n                },\n            },\n            new Commercetools.Inputs.ShippingZoneRateShippingRatePriceTierArgs\n            {\n                Type = \"CartScore\",\n                Score = 30,\n                PriceFunction = new Commercetools.Inputs.ShippingZoneRateShippingRatePriceTierPriceFunctionArgs\n                {\n                    Function = \"x + 1\",\n                    CurrencyCode = \"EUR\",\n                },\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/commercetools/commercetools\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmy_tax_category, err := commercetools.NewTaxCategory(ctx, \"my-tax-category\", &commercetools.TaxCategoryArgs{\n\t\t\tKey:         pulumi.String(\"some-tax-category-key\"),\n\t\t\tDescription: pulumi.String(\"Example\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmy_shipping_method, err := commercetools.NewShippingMethod(ctx, \"my-shipping-method\", &commercetools.ShippingMethodArgs{\n\t\t\tKey:           pulumi.String(\"some-shipping-method-key\"),\n\t\t\tDescription:   pulumi.String(\"Standard method\"),\n\t\t\tIsDefault:     pulumi.Bool(true),\n\t\t\tTaxCategoryId: my_tax_category.TaxCategoryId,\n\t\t\tPredicate:     pulumi.String(\"1 = 1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmy_shipping_zone, err := commercetools.NewShippingZone(ctx, \"my-shipping-zone\", &commercetools.ShippingZoneArgs{\n\t\t\tKey:         pulumi.String(\"some-shipping-zone-key\"),\n\t\t\tDescription: pulumi.String(\"My shipping zone\"),\n\t\t\tLocations: commercetools.ShippingZoneLocationArray{\n\t\t\t\t&commercetools.ShippingZoneLocationArgs{\n\t\t\t\t\tCountry: pulumi.String(\"DE\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = commercetools.NewShippingZoneRate(ctx, \"my-shipping-zone-rate\", &commercetools.ShippingZoneRateArgs{\n\t\t\tShippingMethodId: my_shipping_method.ShippingMethodId,\n\t\t\tShippingZoneId:   my_shipping_zone.ShippingZoneId,\n\t\t\tPrice: &commercetools.ShippingZoneRatePriceArgs{\n\t\t\t\tCentAmount:   pulumi.Float64(5000),\n\t\t\t\tCurrencyCode: pulumi.String(\"EUR\"),\n\t\t\t},\n\t\t\tFreeAbove: &commercetools.ShippingZoneRateFreeAboveArgs{\n\t\t\t\tCentAmount:   pulumi.Float64(50000),\n\t\t\t\tCurrencyCode: pulumi.String(\"EUR\"),\n\t\t\t},\n\t\t\tShippingRatePriceTiers: commercetools.ShippingZoneRateShippingRatePriceTierArray{\n\t\t\t\t&commercetools.ShippingZoneRateShippingRatePriceTierArgs{\n\t\t\t\t\tType:  pulumi.String(\"CartScore\"),\n\t\t\t\t\tScore: pulumi.Float64(10),\n\t\t\t\t\tPrice: &commercetools.ShippingZoneRateShippingRatePriceTierPriceArgs{\n\t\t\t\t\t\tCentAmount:   pulumi.Float64(5000),\n\t\t\t\t\t\tCurrencyCode: pulumi.String(\"EUR\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t&commercetools.ShippingZoneRateShippingRatePriceTierArgs{\n\t\t\t\t\tType:  pulumi.String(\"CartScore\"),\n\t\t\t\t\tScore: pulumi.Float64(20),\n\t\t\t\t\tPrice: &commercetools.ShippingZoneRateShippingRatePriceTierPriceArgs{\n\t\t\t\t\t\tCentAmount:   pulumi.Float64(2000),\n\t\t\t\t\t\tCurrencyCode: pulumi.String(\"EUR\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t&commercetools.ShippingZoneRateShippingRatePriceTierArgs{\n\t\t\t\t\tType:  pulumi.String(\"CartScore\"),\n\t\t\t\t\tScore: pulumi.Float64(30),\n\t\t\t\t\tPriceFunction: &commercetools.ShippingZoneRateShippingRatePriceTierPriceFunctionArgs{\n\t\t\t\t\t\tFunction:     pulumi.String(\"x + 1\"),\n\t\t\t\t\t\tCurrencyCode: pulumi.String(\"EUR\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.commercetools.TaxCategory;\nimport com.pulumi.commercetools.TaxCategoryArgs;\nimport com.pulumi.commercetools.ShippingMethod;\nimport com.pulumi.commercetools.ShippingMethodArgs;\nimport com.pulumi.commercetools.ShippingZone;\nimport com.pulumi.commercetools.ShippingZoneArgs;\nimport com.pulumi.commercetools.inputs.ShippingZoneLocationArgs;\nimport com.pulumi.commercetools.ShippingZoneRate;\nimport com.pulumi.commercetools.ShippingZoneRateArgs;\nimport com.pulumi.commercetools.inputs.ShippingZoneRatePriceArgs;\nimport com.pulumi.commercetools.inputs.ShippingZoneRateFreeAboveArgs;\nimport com.pulumi.commercetools.inputs.ShippingZoneRateShippingRatePriceTierArgs;\nimport com.pulumi.commercetools.inputs.ShippingZoneRateShippingRatePriceTierPriceArgs;\nimport com.pulumi.commercetools.inputs.ShippingZoneRateShippingRatePriceTierPriceFunctionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var my_tax_category = new TaxCategory(\"my-tax-category\", TaxCategoryArgs.builder()\n            .key(\"some-tax-category-key\")\n            .description(\"Example\")\n            .build());\n\n        var my_shipping_method = new ShippingMethod(\"my-shipping-method\", ShippingMethodArgs.builder()\n            .key(\"some-shipping-method-key\")\n            .description(\"Standard method\")\n            .isDefault(true)\n            .taxCategoryId(my_tax_category.taxCategoryId())\n            .predicate(\"1 = 1\")\n            .build());\n\n        var my_shipping_zone = new ShippingZone(\"my-shipping-zone\", ShippingZoneArgs.builder()\n            .key(\"some-shipping-zone-key\")\n            .description(\"My shipping zone\")\n            .locations(ShippingZoneLocationArgs.builder()\n                .country(\"DE\")\n                .build())\n            .build());\n\n        var my_shipping_zone_rate = new ShippingZoneRate(\"my-shipping-zone-rate\", ShippingZoneRateArgs.builder()\n            .shippingMethodId(my_shipping_method.shippingMethodId())\n            .shippingZoneId(my_shipping_zone.shippingZoneId())\n            .price(ShippingZoneRatePriceArgs.builder()\n                .centAmount(5000)\n                .currencyCode(\"EUR\")\n                .build())\n            .freeAbove(ShippingZoneRateFreeAboveArgs.builder()\n                .centAmount(50000)\n                .currencyCode(\"EUR\")\n                .build())\n            .shippingRatePriceTiers(            \n                ShippingZoneRateShippingRatePriceTierArgs.builder()\n                    .type(\"CartScore\")\n                    .score(10)\n                    .price(ShippingZoneRateShippingRatePriceTierPriceArgs.builder()\n                        .centAmount(5000)\n                        .currencyCode(\"EUR\")\n                        .build())\n                    .build(),\n                ShippingZoneRateShippingRatePriceTierArgs.builder()\n                    .type(\"CartScore\")\n                    .score(20)\n                    .price(ShippingZoneRateShippingRatePriceTierPriceArgs.builder()\n                        .centAmount(2000)\n                        .currencyCode(\"EUR\")\n                        .build())\n                    .build(),\n                ShippingZoneRateShippingRatePriceTierArgs.builder()\n                    .type(\"CartScore\")\n                    .score(30)\n                    .priceFunction(ShippingZoneRateShippingRatePriceTierPriceFunctionArgs.builder()\n                        .function(\"x + 1\")\n                        .currencyCode(\"EUR\")\n                        .build())\n                    .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  my-tax-category:\n    type: commercetools:TaxCategory\n    properties:\n      key: some-tax-category-key\n      description: Example\n  my-shipping-method:\n    type: commercetools:ShippingMethod\n    properties:\n      key: some-shipping-method-key\n      description: Standard method\n      isDefault: true\n      taxCategoryId: ${[\"my-tax-category\"].taxCategoryId}\n      predicate: 1 = 1\n  my-shipping-zone:\n    type: commercetools:ShippingZone\n    properties:\n      key: some-shipping-zone-key\n      description: My shipping zone\n      locations:\n        - country: DE\n  my-shipping-zone-rate:\n    type: commercetools:ShippingZoneRate\n    properties:\n      shippingMethodId: ${[\"my-shipping-method\"].shippingMethodId}\n      shippingZoneId: ${[\"my-shipping-zone\"].shippingZoneId}\n      price:\n        centAmount: 5000\n        currencyCode: EUR\n      freeAbove:\n        centAmount: 50000\n        currencyCode: EUR\n      shippingRatePriceTiers:\n        - type: CartScore\n          score: 10\n          price:\n            centAmount: 5000\n            currencyCode: EUR\n        - type: CartScore\n          score: 20\n          price:\n            centAmount: 2000\n            currencyCode: EUR\n        - type: CartScore\n          score: 30\n          priceFunction:\n            function: x + 1\n            currencyCode: EUR\n```\n<!--End PulumiCodeChooser -->\n\n## Import\n\n```sh\n$ pulumi import commercetools:index/shippingZoneRate:ShippingZoneRate my-shipping-zone-rate {my-shipping-method-id}@{my-shipping-zone-id}@{currency}\n```\n\n",
      "properties": {
        "freeAbove": {
          "$ref": "#/types/commercetools:index%2FShippingZoneRateFreeAbove:ShippingZoneRateFreeAbove",
          "description": "The shipping is free if the sum of the (custom) line item prices reaches the freeAbove value\n"
        },
        "price": {
          "$ref": "#/types/commercetools:index%2FShippingZoneRatePrice:ShippingZoneRatePrice"
        },
        "shippingMethodId": {
          "type": "string"
        },
        "shippingRatePriceTiers": {
          "type": "array",
          "items": {
            "$ref": "#/types/commercetools:index%2FShippingZoneRateShippingRatePriceTier:ShippingZoneRateShippingRatePriceTier"
          },
          "description": "A price tier is selected instead of the default price when a certain threshold or specific cart value is reached. If no tiered price is suitable for the cart, the base price of the shipping rate is used\n. See also [Shipping Rate Price Tier API Docs](https://docs.commercetools.com/api/projects/shippingMethods#shippingratepricetier)\n"
        },
        "shippingZoneId": {
          "type": "string"
        },
        "shippingZoneRateId": {
          "type": "string",
          "description": "The ID of this resource.\n"
        }
      },
      "type": "object",
      "required": [
        "price",
        "shippingMethodId",
        "shippingZoneId",
        "shippingZoneRateId"
      ],
      "inputProperties": {
        "freeAbove": {
          "$ref": "#/types/commercetools:index%2FShippingZoneRateFreeAbove:ShippingZoneRateFreeAbove",
          "description": "The shipping is free if the sum of the (custom) line item prices reaches the freeAbove value\n"
        },
        "price": {
          "$ref": "#/types/commercetools:index%2FShippingZoneRatePrice:ShippingZoneRatePrice"
        },
        "shippingMethodId": {
          "type": "string"
        },
        "shippingRatePriceTiers": {
          "type": "array",
          "items": {
            "$ref": "#/types/commercetools:index%2FShippingZoneRateShippingRatePriceTier:ShippingZoneRateShippingRatePriceTier"
          },
          "description": "A price tier is selected instead of the default price when a certain threshold or specific cart value is reached. If no tiered price is suitable for the cart, the base price of the shipping rate is used\n. See also [Shipping Rate Price Tier API Docs](https://docs.commercetools.com/api/projects/shippingMethods#shippingratepricetier)\n"
        },
        "shippingZoneId": {
          "type": "string"
        },
        "shippingZoneRateId": {
          "type": "string",
          "description": "The ID of this resource.\n"
        }
      },
      "requiredInputs": [
        "price",
        "shippingMethodId",
        "shippingZoneId"
      ],
      "stateInputs": {
        "description": "Input properties used for looking up and filtering ShippingZoneRate resources.\n",
        "properties": {
          "freeAbove": {
            "$ref": "#/types/commercetools:index%2FShippingZoneRateFreeAbove:ShippingZoneRateFreeAbove",
            "description": "The shipping is free if the sum of the (custom) line item prices reaches the freeAbove value\n"
          },
          "price": {
            "$ref": "#/types/commercetools:index%2FShippingZoneRatePrice:ShippingZoneRatePrice"
          },
          "shippingMethodId": {
            "type": "string"
          },
          "shippingRatePriceTiers": {
            "type": "array",
            "items": {
              "$ref": "#/types/commercetools:index%2FShippingZoneRateShippingRatePriceTier:ShippingZoneRateShippingRatePriceTier"
            },
            "description": "A price tier is selected instead of the default price when a certain threshold or specific cart value is reached. If no tiered price is suitable for the cart, the base price of the shipping rate is used\n. See also [Shipping Rate Price Tier API Docs](https://docs.commercetools.com/api/projects/shippingMethods#shippingratepricetier)\n"
          },
          "shippingZoneId": {
            "type": "string"
          },
          "shippingZoneRateId": {
            "type": "string",
            "description": "The ID of this resource.\n"
          }
        },
        "type": "object"
      }
    },
    "commercetools:index/state:State": {
      "description": "The commercetools platform allows you to model states of certain objects, such as orders, line items, products, reviews, and payments to define finite state machines reflecting the business logic you'd like to implement.\n\nSee also the [State API Documentation](https://docs.commercetools.com/api/projects/states)\n\n## Example Usage\n\n<!--Start PulumiCodeChooser -->\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as commercetools from \"@pulumi/commercetools\";\n\nconst reviewUnreviewed = new commercetools.State(\"reviewUnreviewed\", {\n    description: {\n        en: \"Not reviewed yet\",\n    },\n    initial: true,\n    key: \"review-unreviewed\",\n    name: {\n        en: \"Unreviewed\",\n    },\n    roles: [\"ReviewIncludedInStatistics\"],\n    type: \"ReviewState\",\n});\nconst productForSale = new commercetools.State(\"productForSale\", {\n    description: {\n        en: \"Regularly stocked product.\",\n    },\n    initial: true,\n    key: \"product-for-sale\",\n    name: {\n        en: \"For Sale\",\n    },\n    type: \"ProductState\",\n});\nconst productClearance = new commercetools.State(\"productClearance\", {\n    description: {\n        en: \"The product line will not be ordered again.\",\n    },\n    key: \"product-clearance\",\n    name: {\n        en: \"On Clearance\",\n    },\n    type: \"ProductState\",\n});\n```\n```python\nimport pulumi\nimport pulumi_commercetools as commercetools\n\nreview_unreviewed = commercetools.State(\"reviewUnreviewed\",\n    description={\n        \"en\": \"Not reviewed yet\",\n    },\n    initial=True,\n    key=\"review-unreviewed\",\n    name={\n        \"en\": \"Unreviewed\",\n    },\n    roles=[\"ReviewIncludedInStatistics\"],\n    type=\"ReviewState\")\nproduct_for_sale = commercetools.State(\"productForSale\",\n    description={\n        \"en\": \"Regularly stocked product.\",\n    },\n    initial=True,\n    key=\"product-for-sale\",\n    name={\n        \"en\": \"For Sale\",\n    },\n    type=\"ProductState\")\nproduct_clearance = commercetools.State(\"productClearance\",\n    description={\n        \"en\": \"The product line will not be ordered again.\",\n    },\n    key=\"product-clearance\",\n    name={\n        \"en\": \"On Clearance\",\n    },\n    type=\"ProductState\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Commercetools = Pulumi.Commercetools;\n\nreturn await Deployment.RunAsync(() => \n{\n    var reviewUnreviewed = new Commercetools.State(\"reviewUnreviewed\", new()\n    {\n        Description = \n        {\n            { \"en\", \"Not reviewed yet\" },\n        },\n        Initial = true,\n        Key = \"review-unreviewed\",\n        Name = \n        {\n            { \"en\", \"Unreviewed\" },\n        },\n        Roles = new[]\n        {\n            \"ReviewIncludedInStatistics\",\n        },\n        Type = \"ReviewState\",\n    });\n\n    var productForSale = new Commercetools.State(\"productForSale\", new()\n    {\n        Description = \n        {\n            { \"en\", \"Regularly stocked product.\" },\n        },\n        Initial = true,\n        Key = \"product-for-sale\",\n        Name = \n        {\n            { \"en\", \"For Sale\" },\n        },\n        Type = \"ProductState\",\n    });\n\n    var productClearance = new Commercetools.State(\"productClearance\", new()\n    {\n        Description = \n        {\n            { \"en\", \"The product line will not be ordered again.\" },\n        },\n        Key = \"product-clearance\",\n        Name = \n        {\n            { \"en\", \"On Clearance\" },\n        },\n        Type = \"ProductState\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/commercetools/commercetools\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := commercetools.NewState(ctx, \"reviewUnreviewed\", &commercetools.StateArgs{\n\t\t\tDescription: pulumi.StringMap{\n\t\t\t\t\"en\": pulumi.String(\"Not reviewed yet\"),\n\t\t\t},\n\t\t\tInitial: pulumi.Bool(true),\n\t\t\tKey:     pulumi.String(\"review-unreviewed\"),\n\t\t\tName: pulumi.StringMap{\n\t\t\t\t\"en\": pulumi.String(\"Unreviewed\"),\n\t\t\t},\n\t\t\tRoles: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"ReviewIncludedInStatistics\"),\n\t\t\t},\n\t\t\tType: pulumi.String(\"ReviewState\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = commercetools.NewState(ctx, \"productForSale\", &commercetools.StateArgs{\n\t\t\tDescription: pulumi.StringMap{\n\t\t\t\t\"en\": pulumi.String(\"Regularly stocked product.\"),\n\t\t\t},\n\t\t\tInitial: pulumi.Bool(true),\n\t\t\tKey:     pulumi.String(\"product-for-sale\"),\n\t\t\tName: pulumi.StringMap{\n\t\t\t\t\"en\": pulumi.String(\"For Sale\"),\n\t\t\t},\n\t\t\tType: pulumi.String(\"ProductState\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = commercetools.NewState(ctx, \"productClearance\", &commercetools.StateArgs{\n\t\t\tDescription: pulumi.StringMap{\n\t\t\t\t\"en\": pulumi.String(\"The product line will not be ordered again.\"),\n\t\t\t},\n\t\t\tKey: pulumi.String(\"product-clearance\"),\n\t\t\tName: pulumi.StringMap{\n\t\t\t\t\"en\": pulumi.String(\"On Clearance\"),\n\t\t\t},\n\t\t\tType: pulumi.String(\"ProductState\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.commercetools.State;\nimport com.pulumi.commercetools.StateArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var reviewUnreviewed = new State(\"reviewUnreviewed\", StateArgs.builder()\n            .description(Map.of(\"en\", \"Not reviewed yet\"))\n            .initial(true)\n            .key(\"review-unreviewed\")\n            .name(Map.of(\"en\", \"Unreviewed\"))\n            .roles(\"ReviewIncludedInStatistics\")\n            .type(\"ReviewState\")\n            .build());\n\n        var productForSale = new State(\"productForSale\", StateArgs.builder()\n            .description(Map.of(\"en\", \"Regularly stocked product.\"))\n            .initial(true)\n            .key(\"product-for-sale\")\n            .name(Map.of(\"en\", \"For Sale\"))\n            .type(\"ProductState\")\n            .build());\n\n        var productClearance = new State(\"productClearance\", StateArgs.builder()\n            .description(Map.of(\"en\", \"The product line will not be ordered again.\"))\n            .key(\"product-clearance\")\n            .name(Map.of(\"en\", \"On Clearance\"))\n            .type(\"ProductState\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  reviewUnreviewed:\n    type: commercetools:State\n    properties:\n      description:\n        en: Not reviewed yet\n      initial: true\n      key: review-unreviewed\n      name:\n        en: Unreviewed\n      roles:\n        - ReviewIncludedInStatistics\n      type: ReviewState\n  productForSale:\n    type: commercetools:State\n    properties:\n      description:\n        en: Regularly stocked product.\n      initial: true\n      key: product-for-sale\n      name:\n        en: For Sale\n      type: ProductState\n  productClearance:\n    type: commercetools:State\n    properties:\n      description:\n        en: The product line will not be ordered again.\n      key: product-clearance\n      name:\n        en: On Clearance\n      type: ProductState\n```\n<!--End PulumiCodeChooser -->\n",
      "properties": {
        "description": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Description of the State as localized string.\n"
        },
        "initial": {
          "type": "boolean",
          "description": "A state can be declared as an initial state for any state machine. When a workflow starts, this first state must be an initial state\n"
        },
        "key": {
          "type": "string"
        },
        "name": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Name of the State as localized string.\n"
        },
        "roles": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "[State Role](https://docs.commercetools.com/api/projects/states#staterole)\n"
        },
        "type": {
          "type": "string",
          "description": "[StateType](https://docs.commercetools.com/api/projects/states#statetype)\n"
        },
        "version": {
          "type": "number"
        }
      },
      "type": "object",
      "required": [
        "initial",
        "type",
        "version"
      ],
      "inputProperties": {
        "description": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Description of the State as localized string.\n"
        },
        "initial": {
          "type": "boolean",
          "description": "A state can be declared as an initial state for any state machine. When a workflow starts, this first state must be an initial state\n"
        },
        "key": {
          "type": "string"
        },
        "name": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Name of the State as localized string.\n"
        },
        "roles": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "[State Role](https://docs.commercetools.com/api/projects/states#staterole)\n"
        },
        "type": {
          "type": "string",
          "description": "[StateType](https://docs.commercetools.com/api/projects/states#statetype)\n"
        }
      },
      "requiredInputs": [
        "type"
      ],
      "stateInputs": {
        "description": "Input properties used for looking up and filtering State resources.\n",
        "properties": {
          "description": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "description": "Description of the State as localized string.\n"
          },
          "initial": {
            "type": "boolean",
            "description": "A state can be declared as an initial state for any state machine. When a workflow starts, this first state must be an initial state\n"
          },
          "key": {
            "type": "string"
          },
          "name": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "description": "Name of the State as localized string.\n"
          },
          "roles": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "[State Role](https://docs.commercetools.com/api/projects/states#staterole)\n"
          },
          "type": {
            "type": "string",
            "description": "[StateType](https://docs.commercetools.com/api/projects/states#statetype)\n"
          },
          "version": {
            "type": "number"
          }
        },
        "type": "object"
      }
    },
    "commercetools:index/stateTransitions:StateTransitions": {
      "description": "Transitions are a way to describe possible transformations of the current state to other states of the same type (for example: Initial > Shipped). When performing a transitionState update action and transitions is set, the currently referenced state must have a transition to the new state.\nIf transitions is an empty list, it means the current state is a final state and no further transitions are allowed.\nIf transitions is not set, the validation is turned off. When performing a transitionState update action, any other state of the same type can be transitioned to.\n\nNote: Only one resource can be created for each state\n\n## Example Usage\n\n<!--Start PulumiCodeChooser -->\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as commercetools from \"@pulumi/commercetools\";\n\nconst productForSale = new commercetools.State(\"productForSale\", {\n    key: \"product-for-sale\",\n    type: \"ProductState\",\n    name: {\n        en: \"For Sale\",\n    },\n    description: {\n        en: \"Regularly stocked product.\",\n    },\n    initial: true,\n});\nconst productClearance = new commercetools.State(\"productClearance\", {\n    key: \"product-clearance\",\n    type: \"ProductState\",\n    name: {\n        en: \"On Clearance\",\n    },\n    description: {\n        en: \"The product line will not be ordered again.\",\n    },\n});\n// Only allow transition from sale to clearance\nconst transition1 = new commercetools.StateTransitions(\"transition1\", {\n    from: productForSale.id,\n    tos: [productClearance.id],\n});\n// Disable transitions from product clearance to other\nconst transition2 = new commercetools.StateTransitions(\"transition2\", {\n    from: productClearance.id,\n    tos: [],\n});\n```\n```python\nimport pulumi\nimport pulumi_commercetools as commercetools\n\nproduct_for_sale = commercetools.State(\"productForSale\",\n    key=\"product-for-sale\",\n    type=\"ProductState\",\n    name={\n        \"en\": \"For Sale\",\n    },\n    description={\n        \"en\": \"Regularly stocked product.\",\n    },\n    initial=True)\nproduct_clearance = commercetools.State(\"productClearance\",\n    key=\"product-clearance\",\n    type=\"ProductState\",\n    name={\n        \"en\": \"On Clearance\",\n    },\n    description={\n        \"en\": \"The product line will not be ordered again.\",\n    })\n# Only allow transition from sale to clearance\ntransition1 = commercetools.StateTransitions(\"transition1\",\n    from_=product_for_sale.id,\n    tos=[product_clearance.id])\n# Disable transitions from product clearance to other\ntransition2 = commercetools.StateTransitions(\"transition2\",\n    from_=product_clearance.id,\n    tos=[])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Commercetools = Pulumi.Commercetools;\n\nreturn await Deployment.RunAsync(() => \n{\n    var productForSale = new Commercetools.State(\"productForSale\", new()\n    {\n        Key = \"product-for-sale\",\n        Type = \"ProductState\",\n        Name = \n        {\n            { \"en\", \"For Sale\" },\n        },\n        Description = \n        {\n            { \"en\", \"Regularly stocked product.\" },\n        },\n        Initial = true,\n    });\n\n    var productClearance = new Commercetools.State(\"productClearance\", new()\n    {\n        Key = \"product-clearance\",\n        Type = \"ProductState\",\n        Name = \n        {\n            { \"en\", \"On Clearance\" },\n        },\n        Description = \n        {\n            { \"en\", \"The product line will not be ordered again.\" },\n        },\n    });\n\n    // Only allow transition from sale to clearance\n    var transition1 = new Commercetools.StateTransitions(\"transition1\", new()\n    {\n        From = productForSale.Id,\n        Tos = new[]\n        {\n            productClearance.Id,\n        },\n    });\n\n    // Disable transitions from product clearance to other\n    var transition2 = new Commercetools.StateTransitions(\"transition2\", new()\n    {\n        From = productClearance.Id,\n        Tos = new[] {},\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/commercetools/commercetools\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproductForSale, err := commercetools.NewState(ctx, \"productForSale\", &commercetools.StateArgs{\n\t\t\tKey:  pulumi.String(\"product-for-sale\"),\n\t\t\tType: pulumi.String(\"ProductState\"),\n\t\t\tName: pulumi.StringMap{\n\t\t\t\t\"en\": pulumi.String(\"For Sale\"),\n\t\t\t},\n\t\t\tDescription: pulumi.StringMap{\n\t\t\t\t\"en\": pulumi.String(\"Regularly stocked product.\"),\n\t\t\t},\n\t\t\tInitial: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproductClearance, err := commercetools.NewState(ctx, \"productClearance\", &commercetools.StateArgs{\n\t\t\tKey:  pulumi.String(\"product-clearance\"),\n\t\t\tType: pulumi.String(\"ProductState\"),\n\t\t\tName: pulumi.StringMap{\n\t\t\t\t\"en\": pulumi.String(\"On Clearance\"),\n\t\t\t},\n\t\t\tDescription: pulumi.StringMap{\n\t\t\t\t\"en\": pulumi.String(\"The product line will not be ordered again.\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Only allow transition from sale to clearance\n\t\t_, err = commercetools.NewStateTransitions(ctx, \"transition1\", &commercetools.StateTransitionsArgs{\n\t\t\tFrom: productForSale.ID(),\n\t\t\tTos: pulumi.StringArray{\n\t\t\t\tproductClearance.ID(),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Disable transitions from product clearance to other\n\t\t_, err = commercetools.NewStateTransitions(ctx, \"transition2\", &commercetools.StateTransitionsArgs{\n\t\t\tFrom: productClearance.ID(),\n\t\t\tTos:  pulumi.StringArray{},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.commercetools.State;\nimport com.pulumi.commercetools.StateArgs;\nimport com.pulumi.commercetools.StateTransitions;\nimport com.pulumi.commercetools.StateTransitionsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var productForSale = new State(\"productForSale\", StateArgs.builder()\n            .key(\"product-for-sale\")\n            .type(\"ProductState\")\n            .name(Map.of(\"en\", \"For Sale\"))\n            .description(Map.of(\"en\", \"Regularly stocked product.\"))\n            .initial(true)\n            .build());\n\n        var productClearance = new State(\"productClearance\", StateArgs.builder()\n            .key(\"product-clearance\")\n            .type(\"ProductState\")\n            .name(Map.of(\"en\", \"On Clearance\"))\n            .description(Map.of(\"en\", \"The product line will not be ordered again.\"))\n            .build());\n\n        // Only allow transition from sale to clearance\n        var transition1 = new StateTransitions(\"transition1\", StateTransitionsArgs.builder()\n            .from(productForSale.id())\n            .tos(productClearance.id())\n            .build());\n\n        // Disable transitions from product clearance to other\n        var transition2 = new StateTransitions(\"transition2\", StateTransitionsArgs.builder()\n            .from(productClearance.id())\n            .tos()\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  productForSale:\n    type: commercetools:State\n    properties:\n      key: product-for-sale\n      type: ProductState\n      name:\n        en: For Sale\n      description:\n        en: Regularly stocked product.\n      initial: true\n  productClearance:\n    type: commercetools:State\n    properties:\n      key: product-clearance\n      type: ProductState\n      name:\n        en: On Clearance\n      description:\n        en: The product line will not be ordered again.\n  # Only allow transition from sale to clearance\n  transition1:\n    type: commercetools:StateTransitions\n    properties:\n      from: ${productForSale.id}\n      tos:\n        - ${productClearance.id}\n  # Disable transitions from product clearance to other\n  transition2:\n    type: commercetools:StateTransitions\n    properties:\n      from: ${productClearance.id}\n      tos: []\n```\n<!--End PulumiCodeChooser -->\n",
      "properties": {
        "from": {
          "type": "string",
          "description": "ID of the state to transition from\n"
        },
        "tos": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Transitions are a way to describe possible transformations of the current state to other states of the same type (for example: Initial > Shipped). When performing a transitionState update action and transitions is set, the currently referenced state must have a transition to the new state.\nIf transitions is an empty list, it means the current state is a final state and no further transitions are allowed.\nIf transitions is not set, the validation is turned off. When performing a transitionState update action, any other state of the same type can be transitioned to\n"
        }
      },
      "type": "object",
      "required": [
        "from",
        "tos"
      ],
      "inputProperties": {
        "from": {
          "type": "string",
          "description": "ID of the state to transition from\n"
        },
        "tos": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Transitions are a way to describe possible transformations of the current state to other states of the same type (for example: Initial > Shipped). When performing a transitionState update action and transitions is set, the currently referenced state must have a transition to the new state.\nIf transitions is an empty list, it means the current state is a final state and no further transitions are allowed.\nIf transitions is not set, the validation is turned off. When performing a transitionState update action, any other state of the same type can be transitioned to\n"
        }
      },
      "requiredInputs": [
        "from",
        "tos"
      ],
      "stateInputs": {
        "description": "Input properties used for looking up and filtering StateTransitions resources.\n",
        "properties": {
          "from": {
            "type": "string",
            "description": "ID of the state to transition from\n"
          },
          "tos": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Transitions are a way to describe possible transformations of the current state to other states of the same type (for example: Initial > Shipped). When performing a transitionState update action and transitions is set, the currently referenced state must have a transition to the new state.\nIf transitions is an empty list, it means the current state is a final state and no further transitions are allowed.\nIf transitions is not set, the validation is turned off. When performing a transitionState update action, any other state of the same type can be transitioned to\n"
          }
        },
        "type": "object"
      }
    },
    "commercetools:index/store:Store": {
      "description": "Stores can be used to model, for example, physical retail locations, brand stores, or country-specific stores.\n\nSee also the [Stores API Documentation](https://docs.commercetools.com/api/projects/stores)\n\n## Example Usage\n\n<!--Start PulumiCodeChooser -->\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as commercetools from \"@pulumi/commercetools\";\n\nconst us_supply_channel = new commercetools.Channel(\"us-supply-channel\", {\n    key: \"US-SUP\",\n    roles: [\"InventorySupply\"],\n    name: {\n        \"en-US\": \"Supply channel\",\n    },\n    description: {\n        \"en-US\": \"Supply channel desc\",\n    },\n});\nconst us_dist_channel = new commercetools.Channel(\"us-dist-channel\", {\n    key: \"US-DIST\",\n    roles: [\"ProductDistribution\"],\n    name: {\n        \"en-US\": \"Dist channel\",\n    },\n    description: {\n        \"en-US\": \"Dist channel desc\",\n    },\n});\nconst my_store_type = new commercetools.Type(\"my-store-type\", {\n    key: \"my-custom-store-type\",\n    name: {\n        en: \"My Store Type\",\n    },\n    description: {\n        en: \"A custom store type\",\n    },\n    resourceTypeIds: [\"store\"],\n    fields: [{\n        name: \"some-field\",\n        label: {\n            en: \"Some Field\",\n        },\n        type: {\n            name: \"String\",\n        },\n    }],\n});\nconst my_store = new commercetools.Store(\"my-store\", {\n    key: \"my-store\",\n    name: {\n        \"en-US\": \"My store\",\n    },\n    countries: [\n        \"NL\",\n        \"BE\",\n    ],\n    languages: [\"en-US\"],\n    distributionChannels: [\"US-DIST\"],\n    supplyChannels: [\"US-SUP\"],\n    custom: {\n        typeId: my_store_type.typeId,\n        fields: {\n            \"my-field\": \"ja\",\n        },\n    },\n}, {\n    dependsOn: [\n        us_supply_channel,\n        us_dist_channel,\n    ],\n});\n```\n```python\nimport pulumi\nimport pulumi_commercetools as commercetools\n\nus_supply_channel = commercetools.Channel(\"us-supply-channel\",\n    key=\"US-SUP\",\n    roles=[\"InventorySupply\"],\n    name={\n        \"en-US\": \"Supply channel\",\n    },\n    description={\n        \"en-US\": \"Supply channel desc\",\n    })\nus_dist_channel = commercetools.Channel(\"us-dist-channel\",\n    key=\"US-DIST\",\n    roles=[\"ProductDistribution\"],\n    name={\n        \"en-US\": \"Dist channel\",\n    },\n    description={\n        \"en-US\": \"Dist channel desc\",\n    })\nmy_store_type = commercetools.Type(\"my-store-type\",\n    key=\"my-custom-store-type\",\n    name={\n        \"en\": \"My Store Type\",\n    },\n    description={\n        \"en\": \"A custom store type\",\n    },\n    resource_type_ids=[\"store\"],\n    fields=[{\n        \"name\": \"some-field\",\n        \"label\": {\n            \"en\": \"Some Field\",\n        },\n        \"type\": {\n            \"name\": \"String\",\n        },\n    }])\nmy_store = commercetools.Store(\"my-store\",\n    key=\"my-store\",\n    name={\n        \"en-US\": \"My store\",\n    },\n    countries=[\n        \"NL\",\n        \"BE\",\n    ],\n    languages=[\"en-US\"],\n    distribution_channels=[\"US-DIST\"],\n    supply_channels=[\"US-SUP\"],\n    custom={\n        \"type_id\": my_store_type.type_id,\n        \"fields\": {\n            \"my-field\": \"ja\",\n        },\n    },\n    opts = pulumi.ResourceOptions(depends_on=[\n            us_supply_channel,\n            us_dist_channel,\n        ]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Commercetools = Pulumi.Commercetools;\n\nreturn await Deployment.RunAsync(() => \n{\n    var us_supply_channel = new Commercetools.Channel(\"us-supply-channel\", new()\n    {\n        Key = \"US-SUP\",\n        Roles = new[]\n        {\n            \"InventorySupply\",\n        },\n        Name = \n        {\n            { \"en-US\", \"Supply channel\" },\n        },\n        Description = \n        {\n            { \"en-US\", \"Supply channel desc\" },\n        },\n    });\n\n    var us_dist_channel = new Commercetools.Channel(\"us-dist-channel\", new()\n    {\n        Key = \"US-DIST\",\n        Roles = new[]\n        {\n            \"ProductDistribution\",\n        },\n        Name = \n        {\n            { \"en-US\", \"Dist channel\" },\n        },\n        Description = \n        {\n            { \"en-US\", \"Dist channel desc\" },\n        },\n    });\n\n    var my_store_type = new Commercetools.Type(\"my-store-type\", new()\n    {\n        Key = \"my-custom-store-type\",\n        Name = \n        {\n            { \"en\", \"My Store Type\" },\n        },\n        Description = \n        {\n            { \"en\", \"A custom store type\" },\n        },\n        ResourceTypeIds = new[]\n        {\n            \"store\",\n        },\n        Fields = new[]\n        {\n            new Commercetools.Inputs.TypeFieldArgs\n            {\n                Name = \"some-field\",\n                Label = \n                {\n                    { \"en\", \"Some Field\" },\n                },\n                Type = new Commercetools.Inputs.TypeFieldTypeArgs\n                {\n                    Name = \"String\",\n                },\n            },\n        },\n    });\n\n    var my_store = new Commercetools.Store(\"my-store\", new()\n    {\n        Key = \"my-store\",\n        Name = \n        {\n            { \"en-US\", \"My store\" },\n        },\n        Countries = new[]\n        {\n            \"NL\",\n            \"BE\",\n        },\n        Languages = new[]\n        {\n            \"en-US\",\n        },\n        DistributionChannels = new[]\n        {\n            \"US-DIST\",\n        },\n        SupplyChannels = new[]\n        {\n            \"US-SUP\",\n        },\n        Custom = new Commercetools.Inputs.StoreCustomArgs\n        {\n            TypeId = my_store_type.TypeId,\n            Fields = \n            {\n                { \"my-field\", \"ja\" },\n            },\n        },\n    }, new CustomResourceOptions\n    {\n        DependsOn =\n        {\n            us_supply_channel,\n            us_dist_channel,\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/commercetools/commercetools\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tus_supply_channel, err := commercetools.NewChannel(ctx, \"us-supply-channel\", &commercetools.ChannelArgs{\n\t\t\tKey: pulumi.String(\"US-SUP\"),\n\t\t\tRoles: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"InventorySupply\"),\n\t\t\t},\n\t\t\tName: pulumi.StringMap{\n\t\t\t\t\"en-US\": pulumi.String(\"Supply channel\"),\n\t\t\t},\n\t\t\tDescription: pulumi.StringMap{\n\t\t\t\t\"en-US\": pulumi.String(\"Supply channel desc\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tus_dist_channel, err := commercetools.NewChannel(ctx, \"us-dist-channel\", &commercetools.ChannelArgs{\n\t\t\tKey: pulumi.String(\"US-DIST\"),\n\t\t\tRoles: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"ProductDistribution\"),\n\t\t\t},\n\t\t\tName: pulumi.StringMap{\n\t\t\t\t\"en-US\": pulumi.String(\"Dist channel\"),\n\t\t\t},\n\t\t\tDescription: pulumi.StringMap{\n\t\t\t\t\"en-US\": pulumi.String(\"Dist channel desc\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmy_store_type, err := commercetools.NewType(ctx, \"my-store-type\", &commercetools.TypeArgs{\n\t\t\tKey: pulumi.String(\"my-custom-store-type\"),\n\t\t\tName: pulumi.StringMap{\n\t\t\t\t\"en\": pulumi.String(\"My Store Type\"),\n\t\t\t},\n\t\t\tDescription: pulumi.StringMap{\n\t\t\t\t\"en\": pulumi.String(\"A custom store type\"),\n\t\t\t},\n\t\t\tResourceTypeIds: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"store\"),\n\t\t\t},\n\t\t\tFields: commercetools.TypeFieldArray{\n\t\t\t\t&commercetools.TypeFieldArgs{\n\t\t\t\t\tName: pulumi.String(\"some-field\"),\n\t\t\t\t\tLabel: pulumi.StringMap{\n\t\t\t\t\t\t\"en\": pulumi.String(\"Some Field\"),\n\t\t\t\t\t},\n\t\t\t\t\tType: &commercetools.TypeFieldTypeArgs{\n\t\t\t\t\t\tName: pulumi.String(\"String\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = commercetools.NewStore(ctx, \"my-store\", &commercetools.StoreArgs{\n\t\t\tKey: pulumi.String(\"my-store\"),\n\t\t\tName: pulumi.StringMap{\n\t\t\t\t\"en-US\": pulumi.String(\"My store\"),\n\t\t\t},\n\t\t\tCountries: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"NL\"),\n\t\t\t\tpulumi.String(\"BE\"),\n\t\t\t},\n\t\t\tLanguages: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"en-US\"),\n\t\t\t},\n\t\t\tDistributionChannels: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"US-DIST\"),\n\t\t\t},\n\t\t\tSupplyChannels: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"US-SUP\"),\n\t\t\t},\n\t\t\tCustom: &commercetools.StoreCustomArgs{\n\t\t\t\tTypeId: my_store_type.TypeId,\n\t\t\t\tFields: pulumi.StringMap{\n\t\t\t\t\t\"my-field\": pulumi.String(\"ja\"),\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tus_supply_channel,\n\t\t\tus_dist_channel,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.commercetools.Channel;\nimport com.pulumi.commercetools.ChannelArgs;\nimport com.pulumi.commercetools.Type;\nimport com.pulumi.commercetools.TypeArgs;\nimport com.pulumi.commercetools.inputs.TypeFieldArgs;\nimport com.pulumi.commercetools.inputs.TypeFieldTypeArgs;\nimport com.pulumi.commercetools.Store;\nimport com.pulumi.commercetools.StoreArgs;\nimport com.pulumi.commercetools.inputs.StoreCustomArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var us_supply_channel = new Channel(\"us-supply-channel\", ChannelArgs.builder()\n            .key(\"US-SUP\")\n            .roles(\"InventorySupply\")\n            .name(Map.of(\"en-US\", \"Supply channel\"))\n            .description(Map.of(\"en-US\", \"Supply channel desc\"))\n            .build());\n\n        var us_dist_channel = new Channel(\"us-dist-channel\", ChannelArgs.builder()\n            .key(\"US-DIST\")\n            .roles(\"ProductDistribution\")\n            .name(Map.of(\"en-US\", \"Dist channel\"))\n            .description(Map.of(\"en-US\", \"Dist channel desc\"))\n            .build());\n\n        var my_store_type = new Type(\"my-store-type\", TypeArgs.builder()\n            .key(\"my-custom-store-type\")\n            .name(Map.of(\"en\", \"My Store Type\"))\n            .description(Map.of(\"en\", \"A custom store type\"))\n            .resourceTypeIds(\"store\")\n            .fields(TypeFieldArgs.builder()\n                .name(\"some-field\")\n                .label(Map.of(\"en\", \"Some Field\"))\n                .type(TypeFieldTypeArgs.builder()\n                    .name(\"String\")\n                    .build())\n                .build())\n            .build());\n\n        var my_store = new Store(\"my-store\", StoreArgs.builder()\n            .key(\"my-store\")\n            .name(Map.of(\"en-US\", \"My store\"))\n            .countries(            \n                \"NL\",\n                \"BE\")\n            .languages(\"en-US\")\n            .distributionChannels(\"US-DIST\")\n            .supplyChannels(\"US-SUP\")\n            .custom(StoreCustomArgs.builder()\n                .typeId(my_store_type.typeId())\n                .fields(Map.of(\"my-field\", \"ja\"))\n                .build())\n            .build(), CustomResourceOptions.builder()\n                .dependsOn(                \n                    us_supply_channel,\n                    us_dist_channel)\n                .build());\n\n    }\n}\n```\n```yaml\nresources:\n  us-supply-channel:\n    type: commercetools:Channel\n    properties:\n      key: US-SUP\n      roles:\n        - InventorySupply\n      name:\n        en-US: Supply channel\n      description:\n        en-US: Supply channel desc\n  us-dist-channel:\n    type: commercetools:Channel\n    properties:\n      key: US-DIST\n      roles:\n        - ProductDistribution\n      name:\n        en-US: Dist channel\n      description:\n        en-US: Dist channel desc\n  my-store-type:\n    type: commercetools:Type\n    properties:\n      key: my-custom-store-type\n      name:\n        en: My Store Type\n      description:\n        en: A custom store type\n      resourceTypeIds:\n        - store\n      fields:\n        - name: some-field\n          label:\n            en: Some Field\n          type:\n            name: String\n  my-store:\n    type: commercetools:Store\n    properties:\n      key: my-store\n      name:\n        en-US: My store\n      countries:\n        - NL\n        - BE\n      languages:\n        - en-US\n      distributionChannels:\n        - US-DIST\n      supplyChannels:\n        - US-SUP\n      custom:\n        typeId: ${[\"my-store-type\"].typeId}\n        fields:\n          my-field: ja\n    options:\n      dependsOn:\n        - ${[\"us-supply-channel\"]}\n        - ${[\"us-dist-channel\"]}\n```\n<!--End PulumiCodeChooser -->\n",
      "properties": {
        "countries": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A two-digit country code as per [ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)\n"
        },
        "custom": {
          "$ref": "#/types/commercetools:index%2FStoreCustom:StoreCustom"
        },
        "distributionChannels": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Set of ResourceIdentifier to a Channel with ProductDistribution\n"
        },
        "key": {
          "type": "string",
          "description": "User-specific unique identifier for the store. The key is mandatory and immutable. It is used to reference the store\n"
        },
        "languages": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "[IETF Language Tag](https://en.wikipedia.org/wiki/IETF_language_tag)\n"
        },
        "name": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "[LocalizedString](https://docs.commercetools.com/api/types#localizedstring)\n"
        },
        "productSelections": {
          "type": "array",
          "items": {
            "$ref": "#/types/commercetools:index%2FStoreProductSelection:StoreProductSelection"
          },
          "description": "Controls availability of Products for this Store via Product Selections\n"
        },
        "storeId": {
          "type": "string",
          "description": "The ID of this resource.\n"
        },
        "supplyChannels": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Set of ResourceIdentifier of Channels with InventorySupply\n"
        },
        "version": {
          "type": "number"
        }
      },
      "type": "object",
      "required": [
        "key",
        "storeId",
        "version"
      ],
      "inputProperties": {
        "countries": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A two-digit country code as per [ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)\n"
        },
        "custom": {
          "$ref": "#/types/commercetools:index%2FStoreCustom:StoreCustom"
        },
        "distributionChannels": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Set of ResourceIdentifier to a Channel with ProductDistribution\n"
        },
        "key": {
          "type": "string",
          "description": "User-specific unique identifier for the store. The key is mandatory and immutable. It is used to reference the store\n"
        },
        "languages": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "[IETF Language Tag](https://en.wikipedia.org/wiki/IETF_language_tag)\n"
        },
        "name": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "[LocalizedString](https://docs.commercetools.com/api/types#localizedstring)\n"
        },
        "productSelections": {
          "type": "array",
          "items": {
            "$ref": "#/types/commercetools:index%2FStoreProductSelection:StoreProductSelection"
          },
          "description": "Controls availability of Products for this Store via Product Selections\n"
        },
        "storeId": {
          "type": "string",
          "description": "The ID of this resource.\n"
        },
        "supplyChannels": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Set of ResourceIdentifier of Channels with InventorySupply\n"
        }
      },
      "requiredInputs": [
        "key"
      ],
      "stateInputs": {
        "description": "Input properties used for looking up and filtering Store resources.\n",
        "properties": {
          "countries": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "A two-digit country code as per [ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)\n"
          },
          "custom": {
            "$ref": "#/types/commercetools:index%2FStoreCustom:StoreCustom"
          },
          "distributionChannels": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Set of ResourceIdentifier to a Channel with ProductDistribution\n"
          },
          "key": {
            "type": "string",
            "description": "User-specific unique identifier for the store. The key is mandatory and immutable. It is used to reference the store\n"
          },
          "languages": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "[IETF Language Tag](https://en.wikipedia.org/wiki/IETF_language_tag)\n"
          },
          "name": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "description": "[LocalizedString](https://docs.commercetools.com/api/types#localizedstring)\n"
          },
          "productSelections": {
            "type": "array",
            "items": {
              "$ref": "#/types/commercetools:index%2FStoreProductSelection:StoreProductSelection"
            },
            "description": "Controls availability of Products for this Store via Product Selections\n"
          },
          "storeId": {
            "type": "string",
            "description": "The ID of this resource.\n"
          },
          "supplyChannels": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Set of ResourceIdentifier of Channels with InventorySupply\n"
          },
          "version": {
            "type": "number"
          }
        },
        "type": "object"
      }
    },
    "commercetools:index/subscription:Subscription": {
      "description": "Subscriptions allow you to be notified of new messages or changes via a Message Queue of your choice. Subscriptions are used to trigger an asynchronous background process in response to an event on the commercetools platform. Common use cases include sending an Order Confirmation Email, charging a Credit Card after the delivery has been made, or synchronizing customer accounts to a Customer Relationship Management (CRM) system.\n\nSee also the [Subscriptions API Documentation](https://docs.commercetools.com/api/projects/subscriptions)\n\n## Example Usage\n\n<!--Start PulumiCodeChooser -->\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as commercetools from \"@pulumi/commercetools\";\n\nconst my_sqs_subscription = new commercetools.Subscription(\"my-sqs-subscription\", {\n    key: \"my-sqs-subscription-key\",\n    destinations: [{\n        type: \"SQS\",\n        queueUrl: aws_sqs_queue[\"your-queue\"].id,\n        accessKey: aws_iam_access_key.ct.id,\n        accessSecret: aws_iam_access_key.ct.secret,\n        region: \"eu-west-1\",\n    }],\n    changes: [{\n        resourceTypeIds: [\"product\"],\n    }],\n    messages: [{\n        resourceTypeId: \"product\",\n        types: [\n            \"ProductPublished\",\n            \"ProductCreated\",\n        ],\n    }],\n    events: [{\n        resourceTypeId: \"import-api\",\n        types: [\"ImportContainerCreated\"],\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumi_commercetools as commercetools\n\nmy_sqs_subscription = commercetools.Subscription(\"my-sqs-subscription\",\n    key=\"my-sqs-subscription-key\",\n    destinations=[{\n        \"type\": \"SQS\",\n        \"queue_url\": aws_sqs_queue[\"your-queue\"][\"id\"],\n        \"access_key\": aws_iam_access_key[\"ct\"][\"id\"],\n        \"access_secret\": aws_iam_access_key[\"ct\"][\"secret\"],\n        \"region\": \"eu-west-1\",\n    }],\n    changes=[{\n        \"resource_type_ids\": [\"product\"],\n    }],\n    messages=[{\n        \"resource_type_id\": \"product\",\n        \"types\": [\n            \"ProductPublished\",\n            \"ProductCreated\",\n        ],\n    }],\n    events=[{\n        \"resource_type_id\": \"import-api\",\n        \"types\": [\"ImportContainerCreated\"],\n    }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Commercetools = Pulumi.Commercetools;\n\nreturn await Deployment.RunAsync(() => \n{\n    var my_sqs_subscription = new Commercetools.Subscription(\"my-sqs-subscription\", new()\n    {\n        Key = \"my-sqs-subscription-key\",\n        Destinations = new[]\n        {\n            new Commercetools.Inputs.SubscriptionDestinationArgs\n            {\n                Type = \"SQS\",\n                QueueUrl = aws_sqs_queue.Your_queue.Id,\n                AccessKey = aws_iam_access_key.Ct.Id,\n                AccessSecret = aws_iam_access_key.Ct.Secret,\n                Region = \"eu-west-1\",\n            },\n        },\n        Changes = new[]\n        {\n            new Commercetools.Inputs.SubscriptionChangeArgs\n            {\n                ResourceTypeIds = new[]\n                {\n                    \"product\",\n                },\n            },\n        },\n        Messages = new[]\n        {\n            new Commercetools.Inputs.SubscriptionMessageArgs\n            {\n                ResourceTypeId = \"product\",\n                Types = new[]\n                {\n                    \"ProductPublished\",\n                    \"ProductCreated\",\n                },\n            },\n        },\n        Events = new[]\n        {\n            new Commercetools.Inputs.SubscriptionEventArgs\n            {\n                ResourceTypeId = \"import-api\",\n                Types = new[]\n                {\n                    \"ImportContainerCreated\",\n                },\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/commercetools/commercetools\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := commercetools.NewSubscription(ctx, \"my-sqs-subscription\", &commercetools.SubscriptionArgs{\n\t\t\tKey: pulumi.String(\"my-sqs-subscription-key\"),\n\t\t\tDestinations: commercetools.SubscriptionDestinationArray{\n\t\t\t\t&commercetools.SubscriptionDestinationArgs{\n\t\t\t\t\tType:         pulumi.String(\"SQS\"),\n\t\t\t\t\tQueueUrl:     pulumi.Any(aws_sqs_queue.YourQueue.Id),\n\t\t\t\t\tAccessKey:    pulumi.Any(aws_iam_access_key.Ct.Id),\n\t\t\t\t\tAccessSecret: pulumi.Any(aws_iam_access_key.Ct.Secret),\n\t\t\t\t\tRegion:       pulumi.String(\"eu-west-1\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tChanges: commercetools.SubscriptionChangeArray{\n\t\t\t\t&commercetools.SubscriptionChangeArgs{\n\t\t\t\t\tResourceTypeIds: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"product\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tMessages: commercetools.SubscriptionMessageArray{\n\t\t\t\t&commercetools.SubscriptionMessageArgs{\n\t\t\t\t\tResourceTypeId: pulumi.String(\"product\"),\n\t\t\t\t\tTypes: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"ProductPublished\"),\n\t\t\t\t\t\tpulumi.String(\"ProductCreated\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tEvents: commercetools.SubscriptionEventArray{\n\t\t\t\t&commercetools.SubscriptionEventArgs{\n\t\t\t\t\tResourceTypeId: pulumi.String(\"import-api\"),\n\t\t\t\t\tTypes: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"ImportContainerCreated\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.commercetools.Subscription;\nimport com.pulumi.commercetools.SubscriptionArgs;\nimport com.pulumi.commercetools.inputs.SubscriptionDestinationArgs;\nimport com.pulumi.commercetools.inputs.SubscriptionChangeArgs;\nimport com.pulumi.commercetools.inputs.SubscriptionMessageArgs;\nimport com.pulumi.commercetools.inputs.SubscriptionEventArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var my_sqs_subscription = new Subscription(\"my-sqs-subscription\", SubscriptionArgs.builder()\n            .key(\"my-sqs-subscription-key\")\n            .destinations(SubscriptionDestinationArgs.builder()\n                .type(\"SQS\")\n                .queueUrl(aws_sqs_queue.your-queue().id())\n                .accessKey(aws_iam_access_key.ct().id())\n                .accessSecret(aws_iam_access_key.ct().secret())\n                .region(\"eu-west-1\")\n                .build())\n            .changes(SubscriptionChangeArgs.builder()\n                .resourceTypeIds(\"product\")\n                .build())\n            .messages(SubscriptionMessageArgs.builder()\n                .resourceTypeId(\"product\")\n                .types(                \n                    \"ProductPublished\",\n                    \"ProductCreated\")\n                .build())\n            .events(SubscriptionEventArgs.builder()\n                .resourceTypeId(\"import-api\")\n                .types(\"ImportContainerCreated\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  my-sqs-subscription:\n    type: commercetools:Subscription\n    properties:\n      key: my-sqs-subscription-key\n      destinations:\n        - type: SQS\n          queueUrl: ${aws_sqs_queue\"your-queue\"[%!s(MISSING)].id}\n          accessKey: ${aws_iam_access_key.ct.id}\n          accessSecret: ${aws_iam_access_key.ct.secret}\n          region: eu-west-1\n      changes:\n        - resourceTypeIds:\n            - product\n      messages:\n        - resourceTypeId: product\n          types:\n            - ProductPublished\n            - ProductCreated\n      events:\n        - resourceTypeId: import-api\n          types:\n            - ImportContainerCreated\n```\n<!--End PulumiCodeChooser -->\n",
      "properties": {
        "changes": {
          "type": "array",
          "items": {
            "$ref": "#/types/commercetools:index%2FSubscriptionChange:SubscriptionChange"
          },
          "description": "The change notifications subscribed to\n"
        },
        "destinations": {
          "type": "array",
          "items": {
            "$ref": "#/types/commercetools:index%2FSubscriptionDestination:SubscriptionDestination"
          }
        },
        "events": {
          "type": "array",
          "items": {
            "$ref": "#/types/commercetools:index%2FSubscriptionEvent:SubscriptionEvent"
          },
          "description": "Events to be subscribed to\n"
        },
        "formats": {
          "type": "array",
          "items": {
            "$ref": "#/types/commercetools:index%2FSubscriptionFormat:SubscriptionFormat"
          },
          "description": "The [format](https://docs.commercetools.com/api/projects/subscriptions#format) in which the payload is delivered\n"
        },
        "key": {
          "type": "string"
        },
        "messages": {
          "type": "array",
          "items": {
            "$ref": "#/types/commercetools:index%2FSubscriptionMessage:SubscriptionMessage"
          },
          "description": "The messages subscribed to\n"
        },
        "version": {
          "type": "number"
        }
      },
      "type": "object",
      "required": [
        "version"
      ],
      "inputProperties": {
        "changes": {
          "type": "array",
          "items": {
            "$ref": "#/types/commercetools:index%2FSubscriptionChange:SubscriptionChange"
          },
          "description": "The change notifications subscribed to\n"
        },
        "destinations": {
          "type": "array",
          "items": {
            "$ref": "#/types/commercetools:index%2FSubscriptionDestination:SubscriptionDestination"
          }
        },
        "events": {
          "type": "array",
          "items": {
            "$ref": "#/types/commercetools:index%2FSubscriptionEvent:SubscriptionEvent"
          },
          "description": "Events to be subscribed to\n"
        },
        "formats": {
          "type": "array",
          "items": {
            "$ref": "#/types/commercetools:index%2FSubscriptionFormat:SubscriptionFormat"
          },
          "description": "The [format](https://docs.commercetools.com/api/projects/subscriptions#format) in which the payload is delivered\n"
        },
        "key": {
          "type": "string"
        },
        "messages": {
          "type": "array",
          "items": {
            "$ref": "#/types/commercetools:index%2FSubscriptionMessage:SubscriptionMessage"
          },
          "description": "The messages subscribed to\n"
        }
      },
      "stateInputs": {
        "description": "Input properties used for looking up and filtering Subscription resources.\n",
        "properties": {
          "changes": {
            "type": "array",
            "items": {
              "$ref": "#/types/commercetools:index%2FSubscriptionChange:SubscriptionChange"
            },
            "description": "The change notifications subscribed to\n"
          },
          "destinations": {
            "type": "array",
            "items": {
              "$ref": "#/types/commercetools:index%2FSubscriptionDestination:SubscriptionDestination"
            }
          },
          "events": {
            "type": "array",
            "items": {
              "$ref": "#/types/commercetools:index%2FSubscriptionEvent:SubscriptionEvent"
            },
            "description": "Events to be subscribed to\n"
          },
          "formats": {
            "type": "array",
            "items": {
              "$ref": "#/types/commercetools:index%2FSubscriptionFormat:SubscriptionFormat"
            },
            "description": "The [format](https://docs.commercetools.com/api/projects/subscriptions#format) in which the payload is delivered\n"
          },
          "key": {
            "type": "string"
          },
          "messages": {
            "type": "array",
            "items": {
              "$ref": "#/types/commercetools:index%2FSubscriptionMessage:SubscriptionMessage"
            },
            "description": "The messages subscribed to\n"
          },
          "version": {
            "type": "number"
          }
        },
        "type": "object"
      }
    },
    "commercetools:index/taxCategory:TaxCategory": {
      "description": "Tax Categories define how products are to be taxed in different countries.\n\nSee also the [Tax Category API Documentation](https://docs.commercetools.com/api/projects/taxCategories)\n\n## Example Usage\n\n<!--Start PulumiCodeChooser -->\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as commercetools from \"@pulumi/commercetools\";\n\nconst my_tax_category = new commercetools.TaxCategory(\"my-tax-category\", {\n    description: \"Example category\",\n    key: \"my-tax-category-key\",\n});\n```\n```python\nimport pulumi\nimport pulumi_commercetools as commercetools\n\nmy_tax_category = commercetools.TaxCategory(\"my-tax-category\",\n    description=\"Example category\",\n    key=\"my-tax-category-key\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Commercetools = Pulumi.Commercetools;\n\nreturn await Deployment.RunAsync(() => \n{\n    var my_tax_category = new Commercetools.TaxCategory(\"my-tax-category\", new()\n    {\n        Description = \"Example category\",\n        Key = \"my-tax-category-key\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/commercetools/commercetools\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := commercetools.NewTaxCategory(ctx, \"my-tax-category\", &commercetools.TaxCategoryArgs{\n\t\t\tDescription: pulumi.String(\"Example category\"),\n\t\t\tKey:         pulumi.String(\"my-tax-category-key\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.commercetools.TaxCategory;\nimport com.pulumi.commercetools.TaxCategoryArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var my_tax_category = new TaxCategory(\"my-tax-category\", TaxCategoryArgs.builder()\n            .description(\"Example category\")\n            .key(\"my-tax-category-key\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  my-tax-category:\n    type: commercetools:TaxCategory\n    properties:\n      description: Example category\n      key: my-tax-category-key\n```\n<!--End PulumiCodeChooser -->\n",
      "properties": {
        "description": {
          "type": "string"
        },
        "key": {
          "type": "string",
          "description": "User-specific unique identifier for the tax category\n"
        },
        "name": {
          "type": "string"
        },
        "taxCategoryId": {
          "type": "string",
          "description": "The ID of this resource.\n"
        },
        "version": {
          "type": "number"
        }
      },
      "type": "object",
      "required": [
        "name",
        "taxCategoryId",
        "version"
      ],
      "inputProperties": {
        "description": {
          "type": "string"
        },
        "key": {
          "type": "string",
          "description": "User-specific unique identifier for the tax category\n"
        },
        "name": {
          "type": "string"
        },
        "taxCategoryId": {
          "type": "string",
          "description": "The ID of this resource.\n"
        }
      },
      "stateInputs": {
        "description": "Input properties used for looking up and filtering TaxCategory resources.\n",
        "properties": {
          "description": {
            "type": "string"
          },
          "key": {
            "type": "string",
            "description": "User-specific unique identifier for the tax category\n"
          },
          "name": {
            "type": "string"
          },
          "taxCategoryId": {
            "type": "string",
            "description": "The ID of this resource.\n"
          },
          "version": {
            "type": "number"
          }
        },
        "type": "object"
      }
    },
    "commercetools:index/taxCategoryRate:TaxCategoryRate": {
      "description": "Tax rate for Tax Category. \n\nSee also [Tax Rate API Documentation](https://docs.commercetools.com/api/projects/taxCategories#taxrate)\n\n## Example Usage\n\n<!--Start PulumiCodeChooser -->\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as commercetools from \"@pulumi/commercetools\";\n\nconst my_tax_category = new commercetools.TaxCategory(\"my-tax-category\", {\n    key: \"my-tax-category\",\n    description: \"Example category\",\n});\nconst standard_tax_category_DE = new commercetools.TaxCategoryRate(\"standard-tax-category-DE\", {\n    key: \"standard-tax-category-DE\",\n    taxCategoryId: my_tax_category.taxCategoryId,\n    amount: 0.19,\n    includedInPrice: false,\n    country: \"DE\",\n    subRates: [{\n        name: \"example\",\n        amount: 0.19,\n    }],\n});\nconst standard_tax_category_NL = new commercetools.TaxCategoryRate(\"standard-tax-category-NL\", {\n    key: \"standard-tax-category-NL\",\n    taxCategoryId: my_tax_category.taxCategoryId,\n    amount: 0.21,\n    includedInPrice: true,\n    country: \"NL\",\n});\n```\n```python\nimport pulumi\nimport pulumi_commercetools as commercetools\n\nmy_tax_category = commercetools.TaxCategory(\"my-tax-category\",\n    key=\"my-tax-category\",\n    description=\"Example category\")\nstandard_tax_category__de = commercetools.TaxCategoryRate(\"standard-tax-category-DE\",\n    key=\"standard-tax-category-DE\",\n    tax_category_id=my_tax_category.tax_category_id,\n    amount=0.19,\n    included_in_price=False,\n    country=\"DE\",\n    sub_rates=[{\n        \"name\": \"example\",\n        \"amount\": 0.19,\n    }])\nstandard_tax_category__nl = commercetools.TaxCategoryRate(\"standard-tax-category-NL\",\n    key=\"standard-tax-category-NL\",\n    tax_category_id=my_tax_category.tax_category_id,\n    amount=0.21,\n    included_in_price=True,\n    country=\"NL\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Commercetools = Pulumi.Commercetools;\n\nreturn await Deployment.RunAsync(() => \n{\n    var my_tax_category = new Commercetools.TaxCategory(\"my-tax-category\", new()\n    {\n        Key = \"my-tax-category\",\n        Description = \"Example category\",\n    });\n\n    var standard_tax_category_DE = new Commercetools.TaxCategoryRate(\"standard-tax-category-DE\", new()\n    {\n        Key = \"standard-tax-category-DE\",\n        TaxCategoryId = my_tax_category.TaxCategoryId,\n        Amount = 0.19,\n        IncludedInPrice = false,\n        Country = \"DE\",\n        SubRates = new[]\n        {\n            new Commercetools.Inputs.TaxCategoryRateSubRateArgs\n            {\n                Name = \"example\",\n                Amount = 0.19,\n            },\n        },\n    });\n\n    var standard_tax_category_NL = new Commercetools.TaxCategoryRate(\"standard-tax-category-NL\", new()\n    {\n        Key = \"standard-tax-category-NL\",\n        TaxCategoryId = my_tax_category.TaxCategoryId,\n        Amount = 0.21,\n        IncludedInPrice = true,\n        Country = \"NL\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/commercetools/commercetools\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmy_tax_category, err := commercetools.NewTaxCategory(ctx, \"my-tax-category\", &commercetools.TaxCategoryArgs{\n\t\t\tKey:         pulumi.String(\"my-tax-category\"),\n\t\t\tDescription: pulumi.String(\"Example category\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = commercetools.NewTaxCategoryRate(ctx, \"standard-tax-category-DE\", &commercetools.TaxCategoryRateArgs{\n\t\t\tKey:             pulumi.String(\"standard-tax-category-DE\"),\n\t\t\tTaxCategoryId:   my_tax_category.TaxCategoryId,\n\t\t\tAmount:          pulumi.Float64(0.19),\n\t\t\tIncludedInPrice: pulumi.Bool(false),\n\t\t\tCountry:         pulumi.String(\"DE\"),\n\t\t\tSubRates: commercetools.TaxCategoryRateSubRateArray{\n\t\t\t\t&commercetools.TaxCategoryRateSubRateArgs{\n\t\t\t\t\tName:   pulumi.String(\"example\"),\n\t\t\t\t\tAmount: pulumi.Float64(0.19),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = commercetools.NewTaxCategoryRate(ctx, \"standard-tax-category-NL\", &commercetools.TaxCategoryRateArgs{\n\t\t\tKey:             pulumi.String(\"standard-tax-category-NL\"),\n\t\t\tTaxCategoryId:   my_tax_category.TaxCategoryId,\n\t\t\tAmount:          pulumi.Float64(0.21),\n\t\t\tIncludedInPrice: pulumi.Bool(true),\n\t\t\tCountry:         pulumi.String(\"NL\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.commercetools.TaxCategory;\nimport com.pulumi.commercetools.TaxCategoryArgs;\nimport com.pulumi.commercetools.TaxCategoryRate;\nimport com.pulumi.commercetools.TaxCategoryRateArgs;\nimport com.pulumi.commercetools.inputs.TaxCategoryRateSubRateArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var my_tax_category = new TaxCategory(\"my-tax-category\", TaxCategoryArgs.builder()\n            .key(\"my-tax-category\")\n            .description(\"Example category\")\n            .build());\n\n        var standard_tax_category_DE = new TaxCategoryRate(\"standard-tax-category-DE\", TaxCategoryRateArgs.builder()\n            .key(\"standard-tax-category-DE\")\n            .taxCategoryId(my_tax_category.taxCategoryId())\n            .amount(0.19)\n            .includedInPrice(false)\n            .country(\"DE\")\n            .subRates(TaxCategoryRateSubRateArgs.builder()\n                .name(\"example\")\n                .amount(0.19)\n                .build())\n            .build());\n\n        var standard_tax_category_NL = new TaxCategoryRate(\"standard-tax-category-NL\", TaxCategoryRateArgs.builder()\n            .key(\"standard-tax-category-NL\")\n            .taxCategoryId(my_tax_category.taxCategoryId())\n            .amount(0.21)\n            .includedInPrice(true)\n            .country(\"NL\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  my-tax-category:\n    type: commercetools:TaxCategory\n    properties:\n      key: my-tax-category\n      description: Example category\n  standard-tax-category-DE:\n    type: commercetools:TaxCategoryRate\n    properties:\n      key: standard-tax-category-DE\n      taxCategoryId: ${[\"my-tax-category\"].taxCategoryId}\n      amount: 0.19\n      includedInPrice: false\n      country: DE\n      subRates:\n        - name: example\n          amount: 0.19\n  standard-tax-category-NL:\n    type: commercetools:TaxCategoryRate\n    properties:\n      key: standard-tax-category-NL\n      taxCategoryId: ${[\"my-tax-category\"].taxCategoryId}\n      amount: 0.21\n      includedInPrice: true\n      country: NL\n```\n<!--End PulumiCodeChooser -->\n",
      "properties": {
        "amount": {
          "type": "number",
          "description": "Number Percentage in the range of [0..1]. The sum of the amounts of all subRates, if there are any\n"
        },
        "country": {
          "type": "string",
          "description": "A two-digit country code as per [ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)\n"
        },
        "includedInPrice": {
          "type": "boolean"
        },
        "key": {
          "type": "string",
          "description": "User-specific unique identifier for the tax category rate\n"
        },
        "name": {
          "type": "string"
        },
        "state": {
          "type": "string",
          "description": "The state in the country\n"
        },
        "subRates": {
          "type": "array",
          "items": {
            "$ref": "#/types/commercetools:index%2FTaxCategoryRateSubRate:TaxCategoryRateSubRate"
          },
          "description": "For countries (for example the US) where the total tax is a combination of multiple taxes (for example state and local taxes)\n"
        },
        "taxCategoryId": {
          "type": "string"
        },
        "taxCategoryRateId": {
          "type": "string",
          "description": "The ID of this resource.\n"
        }
      },
      "type": "object",
      "required": [
        "country",
        "includedInPrice",
        "name",
        "taxCategoryId",
        "taxCategoryRateId"
      ],
      "inputProperties": {
        "amount": {
          "type": "number",
          "description": "Number Percentage in the range of [0..1]. The sum of the amounts of all subRates, if there are any\n"
        },
        "country": {
          "type": "string",
          "description": "A two-digit country code as per [ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)\n"
        },
        "includedInPrice": {
          "type": "boolean"
        },
        "key": {
          "type": "string",
          "description": "User-specific unique identifier for the tax category rate\n"
        },
        "name": {
          "type": "string"
        },
        "state": {
          "type": "string",
          "description": "The state in the country\n"
        },
        "subRates": {
          "type": "array",
          "items": {
            "$ref": "#/types/commercetools:index%2FTaxCategoryRateSubRate:TaxCategoryRateSubRate"
          },
          "description": "For countries (for example the US) where the total tax is a combination of multiple taxes (for example state and local taxes)\n"
        },
        "taxCategoryId": {
          "type": "string"
        },
        "taxCategoryRateId": {
          "type": "string",
          "description": "The ID of this resource.\n"
        }
      },
      "requiredInputs": [
        "country",
        "includedInPrice",
        "taxCategoryId"
      ],
      "stateInputs": {
        "description": "Input properties used for looking up and filtering TaxCategoryRate resources.\n",
        "properties": {
          "amount": {
            "type": "number",
            "description": "Number Percentage in the range of [0..1]. The sum of the amounts of all subRates, if there are any\n"
          },
          "country": {
            "type": "string",
            "description": "A two-digit country code as per [ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)\n"
          },
          "includedInPrice": {
            "type": "boolean"
          },
          "key": {
            "type": "string",
            "description": "User-specific unique identifier for the tax category rate\n"
          },
          "name": {
            "type": "string"
          },
          "state": {
            "type": "string",
            "description": "The state in the country\n"
          },
          "subRates": {
            "type": "array",
            "items": {
              "$ref": "#/types/commercetools:index%2FTaxCategoryRateSubRate:TaxCategoryRateSubRate"
            },
            "description": "For countries (for example the US) where the total tax is a combination of multiple taxes (for example state and local taxes)\n"
          },
          "taxCategoryId": {
            "type": "string"
          },
          "taxCategoryRateId": {
            "type": "string",
            "description": "The ID of this resource.\n"
          }
        },
        "type": "object"
      }
    },
    "commercetools:index/type:Type": {
      "description": "Types define custom fields that are used to enhance resources as you need. Use Types to model your own CustomFields on resources, like Category and Customer.\n\nIn case you want to customize products, please use product types instead that serve a similar purpose, but tailored to products.\n\nSee also the [Types Api Documentation](https://docs.commercetools.com/api/projects/types)\n\n## Example Usage\n\n<!--Start PulumiCodeChooser -->\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.commercetools.Type;\nimport com.pulumi.commercetools.TypeArgs;\nimport com.pulumi.commercetools.inputs.TypeFieldArgs;\nimport com.pulumi.commercetools.inputs.TypeFieldTypeArgs;\nimport com.pulumi.commercetools.inputs.TypeFieldTypeElementTypeArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        var my_custom_type = new Type(\"my-custom-type\", TypeArgs.builder()\n            .description(Map.ofEntries(\n                Map.entry(\"en\", \"All things related communication\"),\n                Map.entry(\"nl\", \"Alle communicatie-gerelateerde zaken\")\n            ))\n            .fields(            \n                TypeFieldArgs.builder()\n                    .label(Map.ofEntries(\n                        Map.entry(\"en\", \"Skype name\"),\n                        Map.entry(\"nl\", \"Skype naam\")\n                    ))\n                    .name(\"skype_name\")\n                    .type(TypeFieldTypeArgs.builder()\n                        .name(\"String\")\n                        .build())\n                    .build(),\n                TypeFieldArgs.builder()\n                    .label(Map.ofEntries(\n                        Map.entry(\"en\", \"Contact time\"),\n                        Map.entry(\"nl\", \"Contact tijd\")\n                    ))\n                    .name(\"contact_time\")\n                    .type(TypeFieldTypeArgs.builder()\n                        .name(\"Enum\")\n                        .value(                        \n                            %!v(PANIC=Format method: runtime error: invalid memory address or nil pointer dereference),\n                            %!v(PANIC=Format method: runtime error: invalid memory address or nil pointer dereference))\n                        .build())\n                    .build(),\n                TypeFieldArgs.builder()\n                    .label(Map.ofEntries(\n                        Map.entry(\"en\", \"Emails\"),\n                        Map.entry(\"nl\", \"Emails\")\n                    ))\n                    .name(\"emails\")\n                    .type(TypeFieldTypeArgs.builder()\n                        .elementType(TypeFieldTypeElementTypeArgs.builder()\n                            .name(\"String\")\n                            .build())\n                        .name(\"Set\")\n                        .build())\n                    .build(),\n                TypeFieldArgs.builder()\n                    .label(Map.ofEntries(\n                        Map.entry(\"en\", \"Contact preference\"),\n                        Map.entry(\"nl\", \"Contact voorkeur\")\n                    ))\n                    .name(\"contact_preference\")\n                    .type(TypeFieldTypeArgs.builder()\n                        .localizedValue(                        \n                            %!v(PANIC=Format method: runtime error: invalid memory address or nil pointer dereference),\n                            %!v(PANIC=Format method: runtime error: invalid memory address or nil pointer dereference))\n                        .name(\"LocalizedEnum\")\n                        .build())\n                    .build())\n            .key(\"my-custom-type\")\n            .name(Map.ofEntries(\n                Map.entry(\"en\", \"Contact info\"),\n                Map.entry(\"nl\", \"Contact informatie\")\n            ))\n            .resourceTypeIds(\"customer\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  my-custom-type:\n    type: commercetools:Type\n    properties:\n      description:\n        en: All things related communication\n        nl: Alle communicatie-gerelateerde zaken\n      fields:\n        - label:\n            en: Skype name\n            nl: Skype naam\n          name: skype_name\n          type:\n            name: String\n        - label:\n            en: Contact time\n            nl: Contact tijd\n          name: contact_time\n          type:\n            name: Enum\n            value:\n              - key: day\n                label: Daytime\n              - key: evening\n                label: Evening\n        - label:\n            en: Emails\n            nl: Emails\n          name: emails\n          type:\n            elementType:\n              name: String\n            name: Set\n        - label:\n            en: Contact preference\n            nl: Contact voorkeur\n          name: contact_preference\n          type:\n            localizedValue:\n              - key: phone\n                label:\n                  en: Phone\n                  nl: Telefoon\n              - key: skype\n                label:\n                  en: Skype\n                  nl: Skype\n            name: LocalizedEnum\n      key: my-custom-type\n      name:\n        en: Contact info\n        nl: Contact informatie\n      resourceTypeIds:\n        - customer\n```\n<!--End PulumiCodeChooser -->\n",
      "properties": {
        "description": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "[LocalizedString](https://docs.commercetools.com/api/types#localizedstring)\n"
        },
        "fields": {
          "type": "array",
          "items": {
            "$ref": "#/types/commercetools:index%2FTypeField:TypeField"
          },
          "description": "[Field definition](https://docs.commercetools.com/api/projects/types#fielddefinition)\n"
        },
        "key": {
          "type": "string",
          "description": "Identifier for the type (max. 256 characters)\n"
        },
        "name": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "[LocalizedString](https://docs.commercetools.com/api/types#localizedstring)\n"
        },
        "resourceTypeIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Defines for which [resources](https://docs.commercetools.com/api/projects/custom-fields#customizable-resources) the type is valid\n"
        },
        "typeId": {
          "type": "string",
          "description": "The ID of this resource.\n"
        },
        "version": {
          "type": "number"
        }
      },
      "type": "object",
      "required": [
        "key",
        "name",
        "resourceTypeIds",
        "typeId",
        "version"
      ],
      "inputProperties": {
        "description": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "[LocalizedString](https://docs.commercetools.com/api/types#localizedstring)\n"
        },
        "fields": {
          "type": "array",
          "items": {
            "$ref": "#/types/commercetools:index%2FTypeField:TypeField"
          },
          "description": "[Field definition](https://docs.commercetools.com/api/projects/types#fielddefinition)\n"
        },
        "key": {
          "type": "string",
          "description": "Identifier for the type (max. 256 characters)\n"
        },
        "name": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "[LocalizedString](https://docs.commercetools.com/api/types#localizedstring)\n"
        },
        "resourceTypeIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Defines for which [resources](https://docs.commercetools.com/api/projects/custom-fields#customizable-resources) the type is valid\n"
        },
        "typeId": {
          "type": "string",
          "description": "The ID of this resource.\n"
        }
      },
      "requiredInputs": [
        "key",
        "name",
        "resourceTypeIds"
      ],
      "stateInputs": {
        "description": "Input properties used for looking up and filtering Type resources.\n",
        "properties": {
          "description": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "description": "[LocalizedString](https://docs.commercetools.com/api/types#localizedstring)\n"
          },
          "fields": {
            "type": "array",
            "items": {
              "$ref": "#/types/commercetools:index%2FTypeField:TypeField"
            },
            "description": "[Field definition](https://docs.commercetools.com/api/projects/types#fielddefinition)\n"
          },
          "key": {
            "type": "string",
            "description": "Identifier for the type (max. 256 characters)\n"
          },
          "name": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "description": "[LocalizedString](https://docs.commercetools.com/api/types#localizedstring)\n"
          },
          "resourceTypeIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Defines for which [resources](https://docs.commercetools.com/api/projects/custom-fields#customizable-resources) the type is valid\n"
          },
          "typeId": {
            "type": "string",
            "description": "The ID of this resource.\n"
          },
          "version": {
            "type": "number"
          }
        },
        "type": "object"
      }
    }
  },
  "functions": {
    "commercetools:index/getState:getState": {
      "description": "Fetches state information for the given key. This is an easy way to import the id of an existing state for a given key.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as commercetools from \"@pulumi/commercetools\";\n\nconst initialState = commercetools.getState({\n    key: \"Initial\",\n});\nconst backorder = new commercetools.State(\"backorder\", {\n    key: \"backorder\",\n    type: \"LineItemState\",\n    name: {\n        en: \"Back Order\",\n    },\n    description: {\n        en: \"Not available - on back order\",\n    },\n    initial: false,\n});\nconst fromCreatedToAllocated = new commercetools.StateTransitions(\"fromCreatedToAllocated\", {\n    from: initialState.then(initialState =\u003e initialState.id),\n    tos: [backorder.id],\n});\n```\n```python\nimport pulumi\nimport pulumi_commercetools as commercetools\n\ninitial_state = commercetools.get_state(key=\"Initial\")\nbackorder = commercetools.State(\"backorder\",\n    key=\"backorder\",\n    type=\"LineItemState\",\n    name={\n        \"en\": \"Back Order\",\n    },\n    description={\n        \"en\": \"Not available - on back order\",\n    },\n    initial=False)\nfrom_created_to_allocated = commercetools.StateTransitions(\"fromCreatedToAllocated\",\n    from_=initial_state.id,\n    tos=[backorder.id])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Commercetools = Pulumi.Commercetools;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var initialState = Commercetools.GetState.Invoke(new()\n    {\n        Key = \"Initial\",\n    });\n\n    var backorder = new Commercetools.State(\"backorder\", new()\n    {\n        Key = \"backorder\",\n        Type = \"LineItemState\",\n        Name = \n        {\n            { \"en\", \"Back Order\" },\n        },\n        Description = \n        {\n            { \"en\", \"Not available - on back order\" },\n        },\n        Initial = false,\n    });\n\n    var fromCreatedToAllocated = new Commercetools.StateTransitions(\"fromCreatedToAllocated\", new()\n    {\n        From = initialState.Apply(getStateResult =\u003e getStateResult.Id),\n        Tos = new[]\n        {\n            backorder.Id,\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/commercetools/commercetools\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tinitialState, err := commercetools.LookupState(ctx, \u0026commercetools.LookupStateArgs{\n\t\t\tKey: \"Initial\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbackorder, err := commercetools.NewState(ctx, \"backorder\", \u0026commercetools.StateArgs{\n\t\t\tKey:  pulumi.String(\"backorder\"),\n\t\t\tType: pulumi.String(\"LineItemState\"),\n\t\t\tName: pulumi.StringMap{\n\t\t\t\t\"en\": pulumi.String(\"Back Order\"),\n\t\t\t},\n\t\t\tDescription: pulumi.StringMap{\n\t\t\t\t\"en\": pulumi.String(\"Not available - on back order\"),\n\t\t\t},\n\t\t\tInitial: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = commercetools.NewStateTransitions(ctx, \"fromCreatedToAllocated\", \u0026commercetools.StateTransitionsArgs{\n\t\t\tFrom: pulumi.String(initialState.Id),\n\t\t\tTos: pulumi.StringArray{\n\t\t\t\tbackorder.ID(),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.commercetools.CommercetoolsFunctions;\nimport com.pulumi.commercetools.inputs.GetStateArgs;\nimport com.pulumi.commercetools.State;\nimport com.pulumi.commercetools.StateArgs;\nimport com.pulumi.commercetools.StateTransitions;\nimport com.pulumi.commercetools.StateTransitionsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var initialState = CommercetoolsFunctions.getState(GetStateArgs.builder()\n            .key(\"Initial\")\n            .build());\n\n        var backorder = new State(\"backorder\", StateArgs.builder()\n            .key(\"backorder\")\n            .type(\"LineItemState\")\n            .name(Map.of(\"en\", \"Back Order\"))\n            .description(Map.of(\"en\", \"Not available - on back order\"))\n            .initial(false)\n            .build());\n\n        var fromCreatedToAllocated = new StateTransitions(\"fromCreatedToAllocated\", StateTransitionsArgs.builder()\n            .from(initialState.applyValue(getStateResult -\u003e getStateResult.id()))\n            .tos(backorder.id())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  fromCreatedToAllocated:\n    type: commercetools:StateTransitions\n    properties:\n      from: ${initialState.id}\n      tos:\n        - ${backorder.id}\n  backorder:\n    type: commercetools:State\n    properties:\n      key: backorder\n      type: LineItemState\n      name:\n        en: Back Order\n      description:\n        en: Not available - on back order\n      initial: false\nvariables:\n  initialState:\n    fn::invoke:\n      function: commercetools:getState\n      arguments:\n        key: Initial\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
      "inputs": {
        "description": "A collection of arguments for invoking getState.\n",
        "properties": {
          "key": {
            "type": "string",
            "description": "Key of the state\n"
          }
        },
        "type": "object",
        "required": [
          "key"
        ]
      },
      "outputs": {
        "description": "A collection of values returned by getState.\n",
        "properties": {
          "id": {
            "description": "ID of the state\n",
            "type": "string"
          },
          "key": {
            "description": "Key of the state\n",
            "type": "string"
          }
        },
        "required": [
          "id",
          "key"
        ],
        "type": "object"
      }
    },
    "commercetools:index/getType:getType": {
      "description": "Fetches type information\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as commercetools from \"@pulumi/commercetools\";\n\nconst existingType = commercetools.getType({\n    key: \"test\",\n});\nconst test = new commercetools.Channel(\"test\", {\n    key: \"test\",\n    roles: [\"ProductDistribution\"],\n    custom: {\n        typeId: existingType.then(existingType =\u003e existingType.id),\n        fields: {\n            \"my-field\": \"foobar\",\n        },\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_commercetools as commercetools\n\nexisting_type = commercetools.get_type(key=\"test\")\ntest = commercetools.Channel(\"test\",\n    key=\"test\",\n    roles=[\"ProductDistribution\"],\n    custom={\n        \"type_id\": existing_type.id,\n        \"fields\": {\n            \"my-field\": \"foobar\",\n        },\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Commercetools = Pulumi.Commercetools;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var existingType = Commercetools.GetType.Invoke(new()\n    {\n        Key = \"test\",\n    });\n\n    var test = new Commercetools.Channel(\"test\", new()\n    {\n        Key = \"test\",\n        Roles = new[]\n        {\n            \"ProductDistribution\",\n        },\n        Custom = new Commercetools.Inputs.ChannelCustomArgs\n        {\n            TypeId = existingType.Apply(getTypeResult =\u003e getTypeResult.Id),\n            Fields = \n            {\n                { \"my-field\", \"foobar\" },\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-terraform-provider/sdks/go/commercetools/commercetools\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texistingType, err := commercetools.LookupType(ctx, \u0026commercetools.LookupTypeArgs{\n\t\t\tKey: \"test\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = commercetools.NewChannel(ctx, \"test\", \u0026commercetools.ChannelArgs{\n\t\t\tKey: pulumi.String(\"test\"),\n\t\t\tRoles: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"ProductDistribution\"),\n\t\t\t},\n\t\t\tCustom: \u0026commercetools.ChannelCustomArgs{\n\t\t\t\tTypeId: pulumi.String(existingType.Id),\n\t\t\t\tFields: pulumi.StringMap{\n\t\t\t\t\t\"my-field\": pulumi.String(\"foobar\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.commercetools.CommercetoolsFunctions;\nimport com.pulumi.commercetools.inputs.GetTypeArgs;\nimport com.pulumi.commercetools.Channel;\nimport com.pulumi.commercetools.ChannelArgs;\nimport com.pulumi.commercetools.inputs.ChannelCustomArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n    public static void main(String[] args) {\n        Pulumi.run(App::stack);\n    }\n\n    public static void stack(Context ctx) {\n        final var existingType = CommercetoolsFunctions.getType(GetTypeArgs.builder()\n            .key(\"test\")\n            .build());\n\n        var test = new Channel(\"test\", ChannelArgs.builder()\n            .key(\"test\")\n            .roles(\"ProductDistribution\")\n            .custom(ChannelCustomArgs.builder()\n                .typeId(existingType.applyValue(getTypeResult -\u003e getTypeResult.id()))\n                .fields(Map.of(\"my-field\", \"foobar\"))\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  test:\n    type: commercetools:Channel\n    properties:\n      key: test\n      roles:\n        - ProductDistribution\n      custom:\n        typeId: ${existingType.id}\n        fields:\n          my-field: foobar\nvariables:\n  existingType:\n    fn::invoke:\n      function: commercetools:getType\n      arguments:\n        key: test\n```\n\u003c!--End PulumiCodeChooser --\u003e\n",
      "inputs": {
        "description": "A collection of arguments for invoking getType.\n",
        "properties": {
          "key": {
            "type": "string",
            "description": "Key of the custom type\n"
          }
        },
        "type": "object",
        "required": [
          "key"
        ]
      },
      "outputs": {
        "description": "A collection of values returned by getType.\n",
        "properties": {
          "id": {
            "description": "ID of the custom type\n",
            "type": "string"
          },
          "key": {
            "description": "Key of the custom type\n",
            "type": "string"
          }
        },
        "required": [
          "id",
          "key"
        ],
        "type": "object"
      }
    }
  },
  "parameterization": {
    "baseProvider": {
      "name": "terraform-provider",
      "version": "0.10.0"
    },
    "parameter": "eyJyZW1vdGUiOnsidXJsIjoicmVnaXN0cnkub3BlbnRvZnUub3JnL2xhYmQvY29tbWVyY2V0b29scyIsInZlcnNpb24iOiIxLjIxLjEifX0="
  }
}
