{
  "name": "rabbitmq",
  "version": "3.4.0",
  "description": "A Pulumi package for creating and managing RabbitMQ resources.",
  "keywords": [
    "pulumi",
    "rabbitmq"
  ],
  "homepage": "https://pulumi.io",
  "license": "Apache-2.0",
  "attribution": "This Pulumi package is based on the [`rabbitmq` Terraform Provider](https://github.com/terraform-providers/terraform-provider-rabbitmq).",
  "repository": "https://github.com/pulumi/pulumi-rabbitmq",
  "meta": {
    "moduleFormat": "(.*)(?:/[^/]*)"
  },
  "language": {
    "csharp": {
      "packageReferences": {
        "Pulumi": "3.*"
      },
      "namespaces": {
        "rabbitmq": "RabbitMQ"
      },
      "compatibility": "tfbridge20",
      "respectSchemaVersion": true
    },
    "go": {
      "importBasePath": "github.com/pulumi/pulumi-rabbitmq/sdk/v3/go/rabbitmq",
      "generateResourceContainerTypes": true,
      "generateExtraInputTypes": true,
      "respectSchemaVersion": true
    },
    "nodejs": {
      "packageDescription": "A Pulumi package for creating and managing RabbitMQ resources.",
      "readme": "> This provider is a derived work of the [Terraform Provider](https://github.com/terraform-providers/terraform-provider-rabbitmq)\n> distributed under [MPL 2.0](https://www.mozilla.org/en-US/MPL/2.0/). If you encounter a bug or missing feature,\n> first check the [`pulumi-rabbitmq` repo](https://github.com/pulumi/pulumi-rabbitmq/issues); however, if that doesn't turn up anything,\n> please consult the source [`terraform-provider-rabbitmq` repo](https://github.com/terraform-providers/terraform-provider-rabbitmq/issues).",
      "devDependencies": {
        "@types/mime": "^2.0.0",
        "@types/node": "^10.0.0"
      },
      "compatibility": "tfbridge20",
      "disableUnionOutputTypes": true,
      "respectSchemaVersion": true
    },
    "python": {
      "readme": "> This provider is a derived work of the [Terraform Provider](https://github.com/terraform-providers/terraform-provider-rabbitmq)\n> distributed under [MPL 2.0](https://www.mozilla.org/en-US/MPL/2.0/). If you encounter a bug or missing feature,\n> first check the [`pulumi-rabbitmq` repo](https://github.com/pulumi/pulumi-rabbitmq/issues); however, if that doesn't turn up anything,\n> please consult the source [`terraform-provider-rabbitmq` repo](https://github.com/terraform-providers/terraform-provider-rabbitmq/issues).",
      "compatibility": "tfbridge20",
      "respectSchemaVersion": true,
      "pyproject": {
        "enabled": true
      }
    }
  },
  "config": {
    "variables": {
      "cacertFile": {
        "type": "string",
        "defaultInfo": {
          "environment": [
            "RABBITMQ_CACERT"
          ]
        }
      },
      "clientcertFile": {
        "type": "string"
      },
      "clientkeyFile": {
        "type": "string"
      },
      "endpoint": {
        "type": "string"
      },
      "insecure": {
        "type": "boolean",
        "defaultInfo": {
          "environment": [
            "RABBITMQ_INSECURE"
          ]
        }
      },
      "password": {
        "type": "string"
      },
      "proxy": {
        "type": "string"
      },
      "username": {
        "type": "string"
      }
    },
    "defaults": [
      "endpoint",
      "password",
      "username"
    ]
  },
  "types": {
    "rabbitmq:index/ExchangeSettings:ExchangeSettings": {
      "properties": {
        "arguments": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Additional key/value settings for the exchange.\n",
          "willReplaceOnChanges": true
        },
        "autoDelete": {
          "type": "boolean",
          "description": "Whether the exchange will self-delete when all\nqueues have finished using it.\n",
          "willReplaceOnChanges": true
        },
        "durable": {
          "type": "boolean",
          "description": "Whether the exchange survives server restarts.\nDefaults to `false`.\n",
          "willReplaceOnChanges": true
        },
        "type": {
          "type": "string",
          "description": "The type of exchange.\n",
          "willReplaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "type"
      ]
    },
    "rabbitmq:index/FederationUpstreamDefinition:FederationUpstreamDefinition": {
      "properties": {
        "ackMode": {
          "type": "string",
          "description": "Determines how the link should acknowledge messages. Valid values are `on-confirm`, `on-publish`, and `no-ack`. Default is `on-confirm`.\n"
        },
        "exchange": {
          "type": "string",
          "description": "The name of the upstream exchange.\n"
        },
        "expires": {
          "type": "integer",
          "description": "The expiry time (in milliseconds) after which an upstream queue for a federated exchange may be deleted if a connection to the upstream is lost.\n"
        },
        "maxHops": {
          "type": "integer",
          "description": "Maximum number of federation links that messages can traverse before being dropped. Default is `1`.\n"
        },
        "messageTtl": {
          "type": "integer",
          "description": "The expiry time (in milliseconds) for messages in the upstream queue for a federated exchange (see expires).\n\nApplicable to Federated Queues Only\n"
        },
        "prefetchCount": {
          "type": "integer",
          "description": "Maximum number of unacknowledged messages that may be in flight over a federation link at one time. Default is `1000`.\n"
        },
        "queue": {
          "type": "string",
          "description": "The name of the upstream queue.\n\nConsult the RabbitMQ [Federation Reference](https://www.rabbitmq.com/federation-reference.html) documentation for detailed information and guidance on setting these values.\n"
        },
        "reconnectDelay": {
          "type": "integer",
          "description": "Time in seconds to wait after a network link goes down before attempting reconnection. Default is `5`.\n"
        },
        "trustUserId": {
          "type": "boolean",
          "description": "Determines how federation should interact with the validated user-id feature. Default is `false`.\n\nApplicable to Federated Exchanges Only\n"
        },
        "uri": {
          "type": "string",
          "description": "The AMQP URI(s) for the upstream. Note that the URI may contain sensitive information, such as a password.\n",
          "secret": true
        }
      },
      "type": "object",
      "required": [
        "uri"
      ]
    },
    "rabbitmq:index/OperatorPolicyPolicy:OperatorPolicyPolicy": {
      "properties": {
        "applyTo": {
          "type": "string",
          "description": "Can be \"queues\".\n"
        },
        "definition": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Key/value pairs of the operator policy definition. See the\nRabbitMQ documentation for definition references and examples.\n"
        },
        "pattern": {
          "type": "string",
          "description": "A pattern to match an exchange or queue name.\n"
        },
        "priority": {
          "type": "integer",
          "description": "The policy with the greater priority is applied first.\n"
        }
      },
      "type": "object",
      "required": [
        "applyTo",
        "definition",
        "pattern",
        "priority"
      ]
    },
    "rabbitmq:index/PermissionsPermissions:PermissionsPermissions": {
      "properties": {
        "configure": {
          "type": "string",
          "description": "The \"configure\" ACL.\n"
        },
        "read": {
          "type": "string",
          "description": "The \"read\" ACL.\n"
        },
        "write": {
          "type": "string",
          "description": "The \"write\" ACL.\n"
        }
      },
      "type": "object",
      "required": [
        "configure",
        "read",
        "write"
      ]
    },
    "rabbitmq:index/PolicyPolicy:PolicyPolicy": {
      "properties": {
        "applyTo": {
          "type": "string",
          "description": "Can either be \"exchanges\", \"queues\", or \"all\".\n"
        },
        "definition": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Key/value pairs of the policy definition. See the\nRabbitMQ documentation for definition references and examples.\n"
        },
        "pattern": {
          "type": "string",
          "description": "A pattern to match an exchange or queue name.\n"
        },
        "priority": {
          "type": "integer",
          "description": "The policy with the greater priority is applied first.\n"
        }
      },
      "type": "object",
      "required": [
        "applyTo",
        "definition",
        "pattern",
        "priority"
      ]
    },
    "rabbitmq:index/QueueSettings:QueueSettings": {
      "properties": {
        "arguments": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Additional key/value settings for the queue.\nAll values will be sent to RabbitMQ as a string. If you require non-string\nvalues, use `arguments_json`.\n",
          "willReplaceOnChanges": true
        },
        "argumentsJson": {
          "type": "string",
          "description": "A nested JSON string which contains additional\nsettings for the queue. This is useful for when the arguments contain\nnon-string values.\n",
          "willReplaceOnChanges": true
        },
        "autoDelete": {
          "type": "boolean",
          "description": "Whether the queue will self-delete when all\nconsumers have unsubscribed.\n",
          "willReplaceOnChanges": true
        },
        "durable": {
          "type": "boolean",
          "description": "Whether the queue survives server restarts.\nDefaults to `false`.\n",
          "willReplaceOnChanges": true
        }
      },
      "type": "object"
    },
    "rabbitmq:index/ShovelInfo:ShovelInfo": {
      "properties": {
        "ackMode": {
          "type": "string",
          "description": "Determines how the shovel should acknowledge messages. Possible values are: `on-confirm`, `on-publish` and `no-ack`.\nDefaults to `on-confirm`.\n",
          "willReplaceOnChanges": true
        },
        "addForwardHeaders": {
          "type": "boolean",
          "description": "Whether to add `x-shovelled` headers to shovelled messages.\n",
          "deprecationMessage": "use destination_add_forward_headers instead",
          "willReplaceOnChanges": true
        },
        "deleteAfter": {
          "type": "string",
          "description": "Determines when (if ever) the shovel should delete itself. Possible values are: `never`, `queue-length` or an integer.\n",
          "deprecationMessage": "use source_delete_after instead",
          "willReplaceOnChanges": true
        },
        "destinationAddForwardHeaders": {
          "type": "boolean",
          "description": "Whether to add `x-shovelled` headers to shovelled messages.\n",
          "willReplaceOnChanges": true
        },
        "destinationAddTimestampHeader": {
          "type": "boolean",
          "willReplaceOnChanges": true
        },
        "destinationAddress": {
          "type": "string",
          "description": "The AMQP 1.0 destination link address.\n",
          "willReplaceOnChanges": true
        },
        "destinationApplicationProperties": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Application properties to set when shovelling messages.\n",
          "willReplaceOnChanges": true
        },
        "destinationExchange": {
          "type": "string",
          "description": "The exchange to which messages should be published.\nEither this or `destination_queue` must be specified but not both.\n",
          "willReplaceOnChanges": true
        },
        "destinationExchangeKey": {
          "type": "string",
          "description": "The routing key when using `destination_exchange`.\n",
          "willReplaceOnChanges": true
        },
        "destinationProperties": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Properties to overwrite when shovelling messages.\n\nFor more details regarding dynamic shovel parameters please have a look at the official reference documentaion at [RabbitMQ: Configuring Dynamic Shovels](https://www.rabbitmq.com/shovel-dynamic.html).\n",
          "willReplaceOnChanges": true
        },
        "destinationProtocol": {
          "type": "string",
          "description": "The protocol (`amqp091` or `amqp10`) to use when connecting to the destination.\nDefaults to `amqp091`.\n",
          "willReplaceOnChanges": true
        },
        "destinationPublishProperties": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "A map of properties to overwrite when shovelling messages.\n",
          "willReplaceOnChanges": true
        },
        "destinationQueue": {
          "type": "string",
          "description": "The queue to which messages should be published.\nEither this or `destination_exchange` must be specified but not both.\n",
          "willReplaceOnChanges": true
        },
        "destinationQueueArguments": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "willReplaceOnChanges": true
        },
        "destinationUri": {
          "type": "string",
          "description": "The amqp uri for the destination .\n",
          "willReplaceOnChanges": true
        },
        "prefetchCount": {
          "type": "integer",
          "description": "The maximum number of unacknowledged messages copied over a shovel at any one time.\n",
          "deprecationMessage": "use source_prefetch_count instead",
          "willReplaceOnChanges": true
        },
        "reconnectDelay": {
          "type": "integer",
          "description": "The duration in seconds to reconnect to a broker after disconnected.\nDefaults to `1`.\n",
          "willReplaceOnChanges": true
        },
        "sourceAddress": {
          "type": "string",
          "description": "The AMQP 1.0 source link address.\n",
          "willReplaceOnChanges": true
        },
        "sourceDeleteAfter": {
          "type": "string",
          "description": "Determines when (if ever) the shovel should delete itself. Possible values are: `never`, `queue-length` or an integer.\n",
          "willReplaceOnChanges": true
        },
        "sourceExchange": {
          "type": "string",
          "description": "The exchange from which to consume.\nEither this or `source_queue` must be specified but not both.\n",
          "willReplaceOnChanges": true
        },
        "sourceExchangeKey": {
          "type": "string",
          "description": "The routing key when using `source_exchange`.\n",
          "willReplaceOnChanges": true
        },
        "sourcePrefetchCount": {
          "type": "integer",
          "description": "The maximum number of unacknowledged messages copied over a shovel at any one time.\n",
          "willReplaceOnChanges": true
        },
        "sourceProtocol": {
          "type": "string",
          "description": "The protocol (`amqp091` or `amqp10`) to use when connecting to the source.\nDefaults to `amqp091`.\n",
          "willReplaceOnChanges": true
        },
        "sourceQueue": {
          "type": "string",
          "description": "The queue from which to consume.\nEither this or `source_exchange` must be specified but not both.\n",
          "willReplaceOnChanges": true
        },
        "sourceUri": {
          "type": "string",
          "description": "The amqp uri for the source.\n",
          "willReplaceOnChanges": true
        }
      },
      "type": "object",
      "required": [
        "destinationUri",
        "sourceUri"
      ]
    },
    "rabbitmq:index/TopicPermissionsPermission:TopicPermissionsPermission": {
      "properties": {
        "exchange": {
          "type": "string",
          "description": "The exchange to set the permissions for.\n"
        },
        "read": {
          "type": "string",
          "description": "The \"read\" ACL.\n"
        },
        "write": {
          "type": "string",
          "description": "The \"write\" ACL.\n"
        }
      },
      "type": "object",
      "required": [
        "exchange",
        "read",
        "write"
      ]
    },
    "rabbitmq:index/getExchangeSetting:getExchangeSetting": {
      "properties": {
        "arguments": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "autoDelete": {
          "type": "boolean"
        },
        "durable": {
          "type": "boolean"
        },
        "type": {
          "type": "string"
        }
      },
      "type": "object",
      "required": [
        "type"
      ],
      "language": {
        "nodejs": {
          "requiredInputs": []
        }
      }
    }
  },
  "provider": {
    "description": "The provider type for the rabbitmq 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": {
      "cacertFile": {
        "type": "string"
      },
      "clientcertFile": {
        "type": "string"
      },
      "clientkeyFile": {
        "type": "string"
      },
      "endpoint": {
        "type": "string"
      },
      "password": {
        "type": "string"
      },
      "proxy": {
        "type": "string"
      },
      "username": {
        "type": "string"
      }
    },
    "type": "object",
    "inputProperties": {
      "cacertFile": {
        "type": "string",
        "defaultInfo": {
          "environment": [
            "RABBITMQ_CACERT"
          ]
        }
      },
      "clientcertFile": {
        "type": "string"
      },
      "clientkeyFile": {
        "type": "string"
      },
      "endpoint": {
        "type": "string"
      },
      "insecure": {
        "type": "boolean",
        "defaultInfo": {
          "environment": [
            "RABBITMQ_INSECURE"
          ]
        }
      },
      "password": {
        "type": "string"
      },
      "proxy": {
        "type": "string"
      },
      "username": {
        "type": "string"
      }
    },
    "methods": {
      "terraformConfig": "pulumi:providers:rabbitmq/terraformConfig"
    }
  },
  "resources": {
    "rabbitmq:index/binding:Binding": {
      "description": "The ``rabbitmq.Binding`` resource creates and manages a binding relationship\nbetween a queue an exchange.\n\n## Example Usage\n\n<!--Start PulumiCodeChooser -->\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as rabbitmq from \"@pulumi/rabbitmq\";\n\nconst test = new rabbitmq.VHost(\"test\", {name: \"test\"});\nconst guest = new rabbitmq.Permissions(\"guest\", {\n    user: \"guest\",\n    vhost: test.name,\n    permissions: {\n        configure: \".*\",\n        write: \".*\",\n        read: \".*\",\n    },\n});\nconst testExchange = new rabbitmq.Exchange(\"test\", {\n    name: \"test\",\n    vhost: guest.vhost,\n    settings: {\n        type: \"fanout\",\n        durable: false,\n        autoDelete: true,\n    },\n});\nconst testQueue = new rabbitmq.Queue(\"test\", {\n    name: \"test\",\n    vhost: guest.vhost,\n    settings: {\n        durable: true,\n        autoDelete: false,\n    },\n});\nconst testBinding = new rabbitmq.Binding(\"test\", {\n    source: testExchange.name,\n    vhost: test.name,\n    destination: testQueue.name,\n    destinationType: \"queue\",\n    routingKey: \"#\",\n});\n```\n```python\nimport pulumi\nimport pulumi_rabbitmq as rabbitmq\n\ntest = rabbitmq.VHost(\"test\", name=\"test\")\nguest = rabbitmq.Permissions(\"guest\",\n    user=\"guest\",\n    vhost=test.name,\n    permissions={\n        \"configure\": \".*\",\n        \"write\": \".*\",\n        \"read\": \".*\",\n    })\ntest_exchange = rabbitmq.Exchange(\"test\",\n    name=\"test\",\n    vhost=guest.vhost,\n    settings={\n        \"type\": \"fanout\",\n        \"durable\": False,\n        \"auto_delete\": True,\n    })\ntest_queue = rabbitmq.Queue(\"test\",\n    name=\"test\",\n    vhost=guest.vhost,\n    settings={\n        \"durable\": True,\n        \"auto_delete\": False,\n    })\ntest_binding = rabbitmq.Binding(\"test\",\n    source=test_exchange.name,\n    vhost=test.name,\n    destination=test_queue.name,\n    destination_type=\"queue\",\n    routing_key=\"#\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing RabbitMQ = Pulumi.RabbitMQ;\n\nreturn await Deployment.RunAsync(() => \n{\n    var test = new RabbitMQ.VHost(\"test\", new()\n    {\n        Name = \"test\",\n    });\n\n    var guest = new RabbitMQ.Permissions(\"guest\", new()\n    {\n        User = \"guest\",\n        Vhost = test.Name,\n        PermissionDetails = new RabbitMQ.Inputs.PermissionsPermissionsArgs\n        {\n            Configure = \".*\",\n            Write = \".*\",\n            Read = \".*\",\n        },\n    });\n\n    var testExchange = new RabbitMQ.Exchange(\"test\", new()\n    {\n        Name = \"test\",\n        Vhost = guest.Vhost,\n        Settings = new RabbitMQ.Inputs.ExchangeSettingsArgs\n        {\n            Type = \"fanout\",\n            Durable = false,\n            AutoDelete = true,\n        },\n    });\n\n    var testQueue = new RabbitMQ.Queue(\"test\", new()\n    {\n        Name = \"test\",\n        Vhost = guest.Vhost,\n        Settings = new RabbitMQ.Inputs.QueueSettingsArgs\n        {\n            Durable = true,\n            AutoDelete = false,\n        },\n    });\n\n    var testBinding = new RabbitMQ.Binding(\"test\", new()\n    {\n        Source = testExchange.Name,\n        Vhost = test.Name,\n        Destination = testQueue.Name,\n        DestinationType = \"queue\",\n        RoutingKey = \"#\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-rabbitmq/sdk/v3/go/rabbitmq\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttest, err := rabbitmq.NewVHost(ctx, \"test\", &rabbitmq.VHostArgs{\n\t\t\tName: pulumi.String(\"test\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tguest, err := rabbitmq.NewPermissions(ctx, \"guest\", &rabbitmq.PermissionsArgs{\n\t\t\tUser:  pulumi.String(\"guest\"),\n\t\t\tVhost: test.Name,\n\t\t\tPermissions: &rabbitmq.PermissionsPermissionsArgs{\n\t\t\t\tConfigure: pulumi.String(\".*\"),\n\t\t\t\tWrite:     pulumi.String(\".*\"),\n\t\t\t\tRead:      pulumi.String(\".*\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttestExchange, err := rabbitmq.NewExchange(ctx, \"test\", &rabbitmq.ExchangeArgs{\n\t\t\tName:  pulumi.String(\"test\"),\n\t\t\tVhost: guest.Vhost,\n\t\t\tSettings: &rabbitmq.ExchangeSettingsArgs{\n\t\t\t\tType:       pulumi.String(\"fanout\"),\n\t\t\t\tDurable:    pulumi.Bool(false),\n\t\t\t\tAutoDelete: pulumi.Bool(true),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttestQueue, err := rabbitmq.NewQueue(ctx, \"test\", &rabbitmq.QueueArgs{\n\t\t\tName:  pulumi.String(\"test\"),\n\t\t\tVhost: guest.Vhost,\n\t\t\tSettings: &rabbitmq.QueueSettingsArgs{\n\t\t\t\tDurable:    pulumi.Bool(true),\n\t\t\t\tAutoDelete: pulumi.Bool(false),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = rabbitmq.NewBinding(ctx, \"test\", &rabbitmq.BindingArgs{\n\t\t\tSource:          testExchange.Name,\n\t\t\tVhost:           test.Name,\n\t\t\tDestination:     testQueue.Name,\n\t\t\tDestinationType: pulumi.String(\"queue\"),\n\t\t\tRoutingKey:      pulumi.String(\"#\"),\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.rabbitmq.VHost;\nimport com.pulumi.rabbitmq.VHostArgs;\nimport com.pulumi.rabbitmq.Permissions;\nimport com.pulumi.rabbitmq.PermissionsArgs;\nimport com.pulumi.rabbitmq.inputs.PermissionsPermissionsArgs;\nimport com.pulumi.rabbitmq.Exchange;\nimport com.pulumi.rabbitmq.ExchangeArgs;\nimport com.pulumi.rabbitmq.inputs.ExchangeSettingsArgs;\nimport com.pulumi.rabbitmq.Queue;\nimport com.pulumi.rabbitmq.QueueArgs;\nimport com.pulumi.rabbitmq.inputs.QueueSettingsArgs;\nimport com.pulumi.rabbitmq.Binding;\nimport com.pulumi.rabbitmq.BindingArgs;\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 test = new VHost(\"test\", VHostArgs.builder()\n            .name(\"test\")\n            .build());\n\n        var guest = new Permissions(\"guest\", PermissionsArgs.builder()\n            .user(\"guest\")\n            .vhost(test.name())\n            .permissions(PermissionsPermissionsArgs.builder()\n                .configure(\".*\")\n                .write(\".*\")\n                .read(\".*\")\n                .build())\n            .build());\n\n        var testExchange = new Exchange(\"testExchange\", ExchangeArgs.builder()\n            .name(\"test\")\n            .vhost(guest.vhost())\n            .settings(ExchangeSettingsArgs.builder()\n                .type(\"fanout\")\n                .durable(false)\n                .autoDelete(true)\n                .build())\n            .build());\n\n        var testQueue = new Queue(\"testQueue\", QueueArgs.builder()\n            .name(\"test\")\n            .vhost(guest.vhost())\n            .settings(QueueSettingsArgs.builder()\n                .durable(true)\n                .autoDelete(false)\n                .build())\n            .build());\n\n        var testBinding = new Binding(\"testBinding\", BindingArgs.builder()\n            .source(testExchange.name())\n            .vhost(test.name())\n            .destination(testQueue.name())\n            .destinationType(\"queue\")\n            .routingKey(\"#\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  test:\n    type: rabbitmq:VHost\n    properties:\n      name: test\n  guest:\n    type: rabbitmq:Permissions\n    properties:\n      user: guest\n      vhost: ${test.name}\n      permissions:\n        configure: .*\n        write: .*\n        read: .*\n  testExchange:\n    type: rabbitmq:Exchange\n    name: test\n    properties:\n      name: test\n      vhost: ${guest.vhost}\n      settings:\n        type: fanout\n        durable: false\n        autoDelete: true\n  testQueue:\n    type: rabbitmq:Queue\n    name: test\n    properties:\n      name: test\n      vhost: ${guest.vhost}\n      settings:\n        durable: true\n        autoDelete: false\n  testBinding:\n    type: rabbitmq:Binding\n    name: test\n    properties:\n      source: ${testExchange.name}\n      vhost: ${test.name}\n      destination: ${testQueue.name}\n      destinationType: queue\n      routingKey: '#'\n```\n<!--End PulumiCodeChooser -->\n\n## Import\n\nBindings can be imported using the `id` which is composed of\n  `vhost/source/destination/destination_type/properties_key`. E.g.\n\n```sh\n$ pulumi import rabbitmq:index/binding:Binding test test/test/test/queue/%23\n```\n",
      "properties": {
        "arguments": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Additional key/value arguments for the binding.\n"
        },
        "argumentsJson": {
          "type": "string"
        },
        "destination": {
          "type": "string",
          "description": "The destination queue or exchange.\n"
        },
        "destinationType": {
          "type": "string",
          "description": "The type of destination (queue or exchange).\n"
        },
        "propertiesKey": {
          "type": "string",
          "description": "A unique key to refer to the binding.\n"
        },
        "routingKey": {
          "type": "string",
          "description": "A routing key for the binding.\n"
        },
        "source": {
          "type": "string",
          "description": "The source exchange.\n"
        },
        "vhost": {
          "type": "string",
          "description": "The vhost to create the resource in.\n"
        }
      },
      "type": "object",
      "required": [
        "destination",
        "destinationType",
        "propertiesKey",
        "source",
        "vhost"
      ],
      "inputProperties": {
        "arguments": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Additional key/value arguments for the binding.\n",
          "willReplaceOnChanges": true
        },
        "argumentsJson": {
          "type": "string",
          "willReplaceOnChanges": true
        },
        "destination": {
          "type": "string",
          "description": "The destination queue or exchange.\n",
          "willReplaceOnChanges": true
        },
        "destinationType": {
          "type": "string",
          "description": "The type of destination (queue or exchange).\n",
          "willReplaceOnChanges": true
        },
        "routingKey": {
          "type": "string",
          "description": "A routing key for the binding.\n",
          "willReplaceOnChanges": true
        },
        "source": {
          "type": "string",
          "description": "The source exchange.\n",
          "willReplaceOnChanges": true
        },
        "vhost": {
          "type": "string",
          "description": "The vhost to create the resource in.\n",
          "willReplaceOnChanges": true
        }
      },
      "requiredInputs": [
        "destination",
        "destinationType",
        "source",
        "vhost"
      ],
      "stateInputs": {
        "description": "Input properties used for looking up and filtering Binding resources.\n",
        "properties": {
          "arguments": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "description": "Additional key/value arguments for the binding.\n",
            "willReplaceOnChanges": true
          },
          "argumentsJson": {
            "type": "string",
            "willReplaceOnChanges": true
          },
          "destination": {
            "type": "string",
            "description": "The destination queue or exchange.\n",
            "willReplaceOnChanges": true
          },
          "destinationType": {
            "type": "string",
            "description": "The type of destination (queue or exchange).\n",
            "willReplaceOnChanges": true
          },
          "propertiesKey": {
            "type": "string",
            "description": "A unique key to refer to the binding.\n"
          },
          "routingKey": {
            "type": "string",
            "description": "A routing key for the binding.\n",
            "willReplaceOnChanges": true
          },
          "source": {
            "type": "string",
            "description": "The source exchange.\n",
            "willReplaceOnChanges": true
          },
          "vhost": {
            "type": "string",
            "description": "The vhost to create the resource in.\n",
            "willReplaceOnChanges": true
          }
        },
        "type": "object"
      }
    },
    "rabbitmq:index/exchange:Exchange": {
      "description": "The ``rabbitmq.Exchange`` resource creates and manages an exchange.\n\n## Example Usage\n\n<!--Start PulumiCodeChooser -->\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as rabbitmq from \"@pulumi/rabbitmq\";\n\nconst test = new rabbitmq.VHost(\"test\", {name: \"test\"});\nconst guest = new rabbitmq.Permissions(\"guest\", {\n    user: \"guest\",\n    vhost: test.name,\n    permissions: {\n        configure: \".*\",\n        write: \".*\",\n        read: \".*\",\n    },\n});\nconst testExchange = new rabbitmq.Exchange(\"test\", {\n    name: \"test\",\n    vhost: guest.vhost,\n    settings: {\n        type: \"fanout\",\n        durable: false,\n        autoDelete: true,\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_rabbitmq as rabbitmq\n\ntest = rabbitmq.VHost(\"test\", name=\"test\")\nguest = rabbitmq.Permissions(\"guest\",\n    user=\"guest\",\n    vhost=test.name,\n    permissions={\n        \"configure\": \".*\",\n        \"write\": \".*\",\n        \"read\": \".*\",\n    })\ntest_exchange = rabbitmq.Exchange(\"test\",\n    name=\"test\",\n    vhost=guest.vhost,\n    settings={\n        \"type\": \"fanout\",\n        \"durable\": False,\n        \"auto_delete\": True,\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing RabbitMQ = Pulumi.RabbitMQ;\n\nreturn await Deployment.RunAsync(() => \n{\n    var test = new RabbitMQ.VHost(\"test\", new()\n    {\n        Name = \"test\",\n    });\n\n    var guest = new RabbitMQ.Permissions(\"guest\", new()\n    {\n        User = \"guest\",\n        Vhost = test.Name,\n        PermissionDetails = new RabbitMQ.Inputs.PermissionsPermissionsArgs\n        {\n            Configure = \".*\",\n            Write = \".*\",\n            Read = \".*\",\n        },\n    });\n\n    var testExchange = new RabbitMQ.Exchange(\"test\", new()\n    {\n        Name = \"test\",\n        Vhost = guest.Vhost,\n        Settings = new RabbitMQ.Inputs.ExchangeSettingsArgs\n        {\n            Type = \"fanout\",\n            Durable = false,\n            AutoDelete = true,\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-rabbitmq/sdk/v3/go/rabbitmq\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttest, err := rabbitmq.NewVHost(ctx, \"test\", &rabbitmq.VHostArgs{\n\t\t\tName: pulumi.String(\"test\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tguest, err := rabbitmq.NewPermissions(ctx, \"guest\", &rabbitmq.PermissionsArgs{\n\t\t\tUser:  pulumi.String(\"guest\"),\n\t\t\tVhost: test.Name,\n\t\t\tPermissions: &rabbitmq.PermissionsPermissionsArgs{\n\t\t\t\tConfigure: pulumi.String(\".*\"),\n\t\t\t\tWrite:     pulumi.String(\".*\"),\n\t\t\t\tRead:      pulumi.String(\".*\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = rabbitmq.NewExchange(ctx, \"test\", &rabbitmq.ExchangeArgs{\n\t\t\tName:  pulumi.String(\"test\"),\n\t\t\tVhost: guest.Vhost,\n\t\t\tSettings: &rabbitmq.ExchangeSettingsArgs{\n\t\t\t\tType:       pulumi.String(\"fanout\"),\n\t\t\t\tDurable:    pulumi.Bool(false),\n\t\t\t\tAutoDelete: pulumi.Bool(true),\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.rabbitmq.VHost;\nimport com.pulumi.rabbitmq.VHostArgs;\nimport com.pulumi.rabbitmq.Permissions;\nimport com.pulumi.rabbitmq.PermissionsArgs;\nimport com.pulumi.rabbitmq.inputs.PermissionsPermissionsArgs;\nimport com.pulumi.rabbitmq.Exchange;\nimport com.pulumi.rabbitmq.ExchangeArgs;\nimport com.pulumi.rabbitmq.inputs.ExchangeSettingsArgs;\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 test = new VHost(\"test\", VHostArgs.builder()\n            .name(\"test\")\n            .build());\n\n        var guest = new Permissions(\"guest\", PermissionsArgs.builder()\n            .user(\"guest\")\n            .vhost(test.name())\n            .permissions(PermissionsPermissionsArgs.builder()\n                .configure(\".*\")\n                .write(\".*\")\n                .read(\".*\")\n                .build())\n            .build());\n\n        var testExchange = new Exchange(\"testExchange\", ExchangeArgs.builder()\n            .name(\"test\")\n            .vhost(guest.vhost())\n            .settings(ExchangeSettingsArgs.builder()\n                .type(\"fanout\")\n                .durable(false)\n                .autoDelete(true)\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  test:\n    type: rabbitmq:VHost\n    properties:\n      name: test\n  guest:\n    type: rabbitmq:Permissions\n    properties:\n      user: guest\n      vhost: ${test.name}\n      permissions:\n        configure: .*\n        write: .*\n        read: .*\n  testExchange:\n    type: rabbitmq:Exchange\n    name: test\n    properties:\n      name: test\n      vhost: ${guest.vhost}\n      settings:\n        type: fanout\n        durable: false\n        autoDelete: true\n```\n<!--End PulumiCodeChooser -->\n\n## Import\n\nExchanges can be imported using the `id` which is composed of  `name@vhost`.\n\nE.g.\n\n```sh\n$ pulumi import rabbitmq:index/exchange:Exchange test test@vhost\n```\n\n",
      "properties": {
        "name": {
          "type": "string",
          "description": "The name of the exchange.\n"
        },
        "settings": {
          "$ref": "#/types/rabbitmq:index%2FExchangeSettings:ExchangeSettings",
          "description": "The settings of the exchange. The structure is\ndescribed below.\n"
        },
        "vhost": {
          "type": "string",
          "description": "The vhost to create the resource in.\n"
        }
      },
      "type": "object",
      "required": [
        "name",
        "settings"
      ],
      "inputProperties": {
        "name": {
          "type": "string",
          "description": "The name of the exchange.\n",
          "willReplaceOnChanges": true
        },
        "settings": {
          "$ref": "#/types/rabbitmq:index%2FExchangeSettings:ExchangeSettings",
          "description": "The settings of the exchange. The structure is\ndescribed below.\n",
          "willReplaceOnChanges": true
        },
        "vhost": {
          "type": "string",
          "description": "The vhost to create the resource in.\n",
          "willReplaceOnChanges": true
        }
      },
      "requiredInputs": [
        "settings"
      ],
      "stateInputs": {
        "description": "Input properties used for looking up and filtering Exchange resources.\n",
        "properties": {
          "name": {
            "type": "string",
            "description": "The name of the exchange.\n",
            "willReplaceOnChanges": true
          },
          "settings": {
            "$ref": "#/types/rabbitmq:index%2FExchangeSettings:ExchangeSettings",
            "description": "The settings of the exchange. The structure is\ndescribed below.\n",
            "willReplaceOnChanges": true
          },
          "vhost": {
            "type": "string",
            "description": "The vhost to create the resource in.\n",
            "willReplaceOnChanges": true
          }
        },
        "type": "object"
      }
    },
    "rabbitmq:index/federationUpstream:FederationUpstream": {
      "description": "The ``rabbitmq.FederationUpstream`` resource creates and manages a federation upstream parameter.\n\n## Example Usage\n\n<!--Start PulumiCodeChooser -->\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as rabbitmq from \"@pulumi/rabbitmq\";\n\nconst test = new rabbitmq.VHost(\"test\", {name: \"test\"});\nconst guest = new rabbitmq.Permissions(\"guest\", {\n    user: \"guest\",\n    vhost: test.name,\n    permissions: {\n        configure: \".*\",\n        write: \".*\",\n        read: \".*\",\n    },\n});\n// downstream exchange\nconst foo = new rabbitmq.Exchange(\"foo\", {\n    name: \"foo\",\n    vhost: guest.vhost,\n    settings: {\n        type: \"topic\",\n        durable: true,\n    },\n});\n// upstream broker\nconst fooFederationUpstream = new rabbitmq.FederationUpstream(\"foo\", {\n    name: \"foo\",\n    vhost: guest.vhost,\n    definition: {\n        uri: \"amqp://guest:guest@upstream-server-name:5672/%2f\",\n        prefetchCount: 1000,\n        reconnectDelay: 5,\n        ackMode: \"on-confirm\",\n        trustUserId: false,\n        maxHops: 1,\n    },\n});\nconst fooPolicy = new rabbitmq.Policy(\"foo\", {\n    name: \"foo\",\n    vhost: guest.vhost,\n    policy: {\n        pattern: pulumi.interpolate`(^${foo.name}$)`,\n        priority: 1,\n        applyTo: \"exchanges\",\n        definition: {\n            \"federation-upstream\": fooFederationUpstream.name,\n        },\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_rabbitmq as rabbitmq\n\ntest = rabbitmq.VHost(\"test\", name=\"test\")\nguest = rabbitmq.Permissions(\"guest\",\n    user=\"guest\",\n    vhost=test.name,\n    permissions={\n        \"configure\": \".*\",\n        \"write\": \".*\",\n        \"read\": \".*\",\n    })\n# downstream exchange\nfoo = rabbitmq.Exchange(\"foo\",\n    name=\"foo\",\n    vhost=guest.vhost,\n    settings={\n        \"type\": \"topic\",\n        \"durable\": True,\n    })\n# upstream broker\nfoo_federation_upstream = rabbitmq.FederationUpstream(\"foo\",\n    name=\"foo\",\n    vhost=guest.vhost,\n    definition={\n        \"uri\": \"amqp://guest:guest@upstream-server-name:5672/%2f\",\n        \"prefetch_count\": 1000,\n        \"reconnect_delay\": 5,\n        \"ack_mode\": \"on-confirm\",\n        \"trust_user_id\": False,\n        \"max_hops\": 1,\n    })\nfoo_policy = rabbitmq.Policy(\"foo\",\n    name=\"foo\",\n    vhost=guest.vhost,\n    policy={\n        \"pattern\": foo.name.apply(lambda name: f\"(^{name}$)\"),\n        \"priority\": 1,\n        \"apply_to\": \"exchanges\",\n        \"definition\": {\n            \"federation-upstream\": foo_federation_upstream.name,\n        },\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing RabbitMQ = Pulumi.RabbitMQ;\n\nreturn await Deployment.RunAsync(() => \n{\n    var test = new RabbitMQ.VHost(\"test\", new()\n    {\n        Name = \"test\",\n    });\n\n    var guest = new RabbitMQ.Permissions(\"guest\", new()\n    {\n        User = \"guest\",\n        Vhost = test.Name,\n        PermissionDetails = new RabbitMQ.Inputs.PermissionsPermissionsArgs\n        {\n            Configure = \".*\",\n            Write = \".*\",\n            Read = \".*\",\n        },\n    });\n\n    // downstream exchange\n    var foo = new RabbitMQ.Exchange(\"foo\", new()\n    {\n        Name = \"foo\",\n        Vhost = guest.Vhost,\n        Settings = new RabbitMQ.Inputs.ExchangeSettingsArgs\n        {\n            Type = \"topic\",\n            Durable = true,\n        },\n    });\n\n    // upstream broker\n    var fooFederationUpstream = new RabbitMQ.FederationUpstream(\"foo\", new()\n    {\n        Name = \"foo\",\n        Vhost = guest.Vhost,\n        Definition = new RabbitMQ.Inputs.FederationUpstreamDefinitionArgs\n        {\n            Uri = \"amqp://guest:guest@upstream-server-name:5672/%2f\",\n            PrefetchCount = 1000,\n            ReconnectDelay = 5,\n            AckMode = \"on-confirm\",\n            TrustUserId = false,\n            MaxHops = 1,\n        },\n    });\n\n    var fooPolicy = new RabbitMQ.Policy(\"foo\", new()\n    {\n        Name = \"foo\",\n        Vhost = guest.Vhost,\n        PolicyBlock = new RabbitMQ.Inputs.PolicyPolicyArgs\n        {\n            Pattern = foo.Name.Apply(name => $\"(^{name}$)\"),\n            Priority = 1,\n            ApplyTo = \"exchanges\",\n            Definition = \n            {\n                { \"federation-upstream\", fooFederationUpstream.Name },\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-rabbitmq/sdk/v3/go/rabbitmq\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttest, err := rabbitmq.NewVHost(ctx, \"test\", &rabbitmq.VHostArgs{\n\t\t\tName: pulumi.String(\"test\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tguest, err := rabbitmq.NewPermissions(ctx, \"guest\", &rabbitmq.PermissionsArgs{\n\t\t\tUser:  pulumi.String(\"guest\"),\n\t\t\tVhost: test.Name,\n\t\t\tPermissions: &rabbitmq.PermissionsPermissionsArgs{\n\t\t\t\tConfigure: pulumi.String(\".*\"),\n\t\t\t\tWrite:     pulumi.String(\".*\"),\n\t\t\t\tRead:      pulumi.String(\".*\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// downstream exchange\n\t\tfoo, err := rabbitmq.NewExchange(ctx, \"foo\", &rabbitmq.ExchangeArgs{\n\t\t\tName:  pulumi.String(\"foo\"),\n\t\t\tVhost: guest.Vhost,\n\t\t\tSettings: &rabbitmq.ExchangeSettingsArgs{\n\t\t\t\tType:    pulumi.String(\"topic\"),\n\t\t\t\tDurable: pulumi.Bool(true),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// upstream broker\n\t\tfooFederationUpstream, err := rabbitmq.NewFederationUpstream(ctx, \"foo\", &rabbitmq.FederationUpstreamArgs{\n\t\t\tName:  pulumi.String(\"foo\"),\n\t\t\tVhost: guest.Vhost,\n\t\t\tDefinition: &rabbitmq.FederationUpstreamDefinitionArgs{\n\t\t\t\tUri:            pulumi.String(\"amqp://guest:guest@upstream-server-name:5672/%2f\"),\n\t\t\t\tPrefetchCount:  pulumi.Int(1000),\n\t\t\t\tReconnectDelay: pulumi.Int(5),\n\t\t\t\tAckMode:        pulumi.String(\"on-confirm\"),\n\t\t\t\tTrustUserId:    pulumi.Bool(false),\n\t\t\t\tMaxHops:        pulumi.Int(1),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = rabbitmq.NewPolicy(ctx, \"foo\", &rabbitmq.PolicyArgs{\n\t\t\tName:  pulumi.String(\"foo\"),\n\t\t\tVhost: guest.Vhost,\n\t\t\tPolicy: &rabbitmq.PolicyPolicyArgs{\n\t\t\t\tPattern: foo.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\t\treturn fmt.Sprintf(\"(^%v$)\", name), nil\n\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\tPriority: pulumi.Int(1),\n\t\t\t\tApplyTo:  pulumi.String(\"exchanges\"),\n\t\t\t\tDefinition: pulumi.StringMap{\n\t\t\t\t\t\"federation-upstream\": fooFederationUpstream.Name,\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.rabbitmq.VHost;\nimport com.pulumi.rabbitmq.VHostArgs;\nimport com.pulumi.rabbitmq.Permissions;\nimport com.pulumi.rabbitmq.PermissionsArgs;\nimport com.pulumi.rabbitmq.inputs.PermissionsPermissionsArgs;\nimport com.pulumi.rabbitmq.Exchange;\nimport com.pulumi.rabbitmq.ExchangeArgs;\nimport com.pulumi.rabbitmq.inputs.ExchangeSettingsArgs;\nimport com.pulumi.rabbitmq.FederationUpstream;\nimport com.pulumi.rabbitmq.FederationUpstreamArgs;\nimport com.pulumi.rabbitmq.inputs.FederationUpstreamDefinitionArgs;\nimport com.pulumi.rabbitmq.Policy;\nimport com.pulumi.rabbitmq.PolicyArgs;\nimport com.pulumi.rabbitmq.inputs.PolicyPolicyArgs;\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 test = new VHost(\"test\", VHostArgs.builder()\n            .name(\"test\")\n            .build());\n\n        var guest = new Permissions(\"guest\", PermissionsArgs.builder()\n            .user(\"guest\")\n            .vhost(test.name())\n            .permissions(PermissionsPermissionsArgs.builder()\n                .configure(\".*\")\n                .write(\".*\")\n                .read(\".*\")\n                .build())\n            .build());\n\n        // downstream exchange\n        var foo = new Exchange(\"foo\", ExchangeArgs.builder()\n            .name(\"foo\")\n            .vhost(guest.vhost())\n            .settings(ExchangeSettingsArgs.builder()\n                .type(\"topic\")\n                .durable(true)\n                .build())\n            .build());\n\n        // upstream broker\n        var fooFederationUpstream = new FederationUpstream(\"fooFederationUpstream\", FederationUpstreamArgs.builder()\n            .name(\"foo\")\n            .vhost(guest.vhost())\n            .definition(FederationUpstreamDefinitionArgs.builder()\n                .uri(\"amqp://guest:guest@upstream-server-name:5672/%2f\")\n                .prefetchCount(1000)\n                .reconnectDelay(5)\n                .ackMode(\"on-confirm\")\n                .trustUserId(false)\n                .maxHops(1)\n                .build())\n            .build());\n\n        var fooPolicy = new Policy(\"fooPolicy\", PolicyArgs.builder()\n            .name(\"foo\")\n            .vhost(guest.vhost())\n            .policy(PolicyPolicyArgs.builder()\n                .pattern(foo.name().applyValue(_name -> String.format(\"(^%s$)\", _name)))\n                .priority(1)\n                .applyTo(\"exchanges\")\n                .definition(Map.of(\"federation-upstream\", fooFederationUpstream.name()))\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  test:\n    type: rabbitmq:VHost\n    properties:\n      name: test\n  guest:\n    type: rabbitmq:Permissions\n    properties:\n      user: guest\n      vhost: ${test.name}\n      permissions:\n        configure: .*\n        write: .*\n        read: .*\n  # downstream exchange\n  foo:\n    type: rabbitmq:Exchange\n    properties:\n      name: foo\n      vhost: ${guest.vhost}\n      settings:\n        type: topic\n        durable: 'true'\n  # upstream broker\n  fooFederationUpstream:\n    type: rabbitmq:FederationUpstream\n    name: foo\n    properties:\n      name: foo\n      vhost: ${guest.vhost}\n      definition:\n        uri: amqp://guest:guest@upstream-server-name:5672/%2f\n        prefetchCount: 1000\n        reconnectDelay: 5\n        ackMode: on-confirm\n        trustUserId: false\n        maxHops: 1\n  fooPolicy:\n    type: rabbitmq:Policy\n    name: foo\n    properties:\n      name: foo\n      vhost: ${guest.vhost}\n      policy:\n        pattern: (^${foo.name}$)\n        priority: 1\n        applyTo: exchanges\n        definition:\n          federation-upstream: ${fooFederationUpstream.name}\n```\n<!--End PulumiCodeChooser -->\n\n## Import\n\nA Federation upstream can be imported using the resource `id` which is composed of `name@vhost`, e.g.\n\n```sh\n$ pulumi import rabbitmq:index/federationUpstream:FederationUpstream foo foo@test\n```\n\n",
      "properties": {
        "component": {
          "type": "string",
          "description": "Set to `federation-upstream` by the underlying RabbitMQ provider. You do not set this attribute but will see it in state and plan output.\n"
        },
        "definition": {
          "$ref": "#/types/rabbitmq:index%2FFederationUpstreamDefinition:FederationUpstreamDefinition",
          "description": "The configuration of the federation upstream. The structure is described below.\n"
        },
        "name": {
          "type": "string",
          "description": "The name of the federation upstream.\n"
        },
        "vhost": {
          "type": "string",
          "description": "The vhost to create the resource in.\n"
        }
      },
      "type": "object",
      "required": [
        "component",
        "definition",
        "name",
        "vhost"
      ],
      "inputProperties": {
        "definition": {
          "$ref": "#/types/rabbitmq:index%2FFederationUpstreamDefinition:FederationUpstreamDefinition",
          "description": "The configuration of the federation upstream. The structure is described below.\n"
        },
        "name": {
          "type": "string",
          "description": "The name of the federation upstream.\n",
          "willReplaceOnChanges": true
        },
        "vhost": {
          "type": "string",
          "description": "The vhost to create the resource in.\n",
          "willReplaceOnChanges": true
        }
      },
      "requiredInputs": [
        "definition",
        "vhost"
      ],
      "stateInputs": {
        "description": "Input properties used for looking up and filtering FederationUpstream resources.\n",
        "properties": {
          "component": {
            "type": "string",
            "description": "Set to `federation-upstream` by the underlying RabbitMQ provider. You do not set this attribute but will see it in state and plan output.\n"
          },
          "definition": {
            "$ref": "#/types/rabbitmq:index%2FFederationUpstreamDefinition:FederationUpstreamDefinition",
            "description": "The configuration of the federation upstream. The structure is described below.\n"
          },
          "name": {
            "type": "string",
            "description": "The name of the federation upstream.\n",
            "willReplaceOnChanges": true
          },
          "vhost": {
            "type": "string",
            "description": "The vhost to create the resource in.\n",
            "willReplaceOnChanges": true
          }
        },
        "type": "object"
      }
    },
    "rabbitmq:index/operatorPolicy:OperatorPolicy": {
      "description": "The ``rabbitmq.OperatorPolicy`` resource creates and manages operator policies for queues.\n\n## Example Usage\n\n<!--Start PulumiCodeChooser -->\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as rabbitmq from \"@pulumi/rabbitmq\";\n\nconst test = new rabbitmq.VHost(\"test\", {name: \"test\"});\nconst guest = new rabbitmq.Permissions(\"guest\", {\n    user: \"guest\",\n    vhost: test.name,\n    permissions: {\n        configure: \".*\",\n        write: \".*\",\n        read: \".*\",\n    },\n});\nconst testOperatorPolicy = new rabbitmq.OperatorPolicy(\"test\", {\n    name: \"test\",\n    vhost: guest.vhost,\n    policy: {\n        pattern: \".*\",\n        priority: 0,\n        applyTo: \"queues\",\n        definition: {\n            \"message-ttl\": \"3600000\",\n            expires: \"1800000\",\n        },\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_rabbitmq as rabbitmq\n\ntest = rabbitmq.VHost(\"test\", name=\"test\")\nguest = rabbitmq.Permissions(\"guest\",\n    user=\"guest\",\n    vhost=test.name,\n    permissions={\n        \"configure\": \".*\",\n        \"write\": \".*\",\n        \"read\": \".*\",\n    })\ntest_operator_policy = rabbitmq.OperatorPolicy(\"test\",\n    name=\"test\",\n    vhost=guest.vhost,\n    policy={\n        \"pattern\": \".*\",\n        \"priority\": 0,\n        \"apply_to\": \"queues\",\n        \"definition\": {\n            \"message-ttl\": \"3600000\",\n            \"expires\": \"1800000\",\n        },\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing RabbitMQ = Pulumi.RabbitMQ;\n\nreturn await Deployment.RunAsync(() => \n{\n    var test = new RabbitMQ.VHost(\"test\", new()\n    {\n        Name = \"test\",\n    });\n\n    var guest = new RabbitMQ.Permissions(\"guest\", new()\n    {\n        User = \"guest\",\n        Vhost = test.Name,\n        PermissionDetails = new RabbitMQ.Inputs.PermissionsPermissionsArgs\n        {\n            Configure = \".*\",\n            Write = \".*\",\n            Read = \".*\",\n        },\n    });\n\n    var testOperatorPolicy = new RabbitMQ.OperatorPolicy(\"test\", new()\n    {\n        Name = \"test\",\n        Vhost = guest.Vhost,\n        Policy = new RabbitMQ.Inputs.OperatorPolicyPolicyArgs\n        {\n            Pattern = \".*\",\n            Priority = 0,\n            ApplyTo = \"queues\",\n            Definition = \n            {\n                { \"message-ttl\", \"3600000\" },\n                { \"expires\", \"1800000\" },\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-rabbitmq/sdk/v3/go/rabbitmq\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttest, err := rabbitmq.NewVHost(ctx, \"test\", &rabbitmq.VHostArgs{\n\t\t\tName: pulumi.String(\"test\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tguest, err := rabbitmq.NewPermissions(ctx, \"guest\", &rabbitmq.PermissionsArgs{\n\t\t\tUser:  pulumi.String(\"guest\"),\n\t\t\tVhost: test.Name,\n\t\t\tPermissions: &rabbitmq.PermissionsPermissionsArgs{\n\t\t\t\tConfigure: pulumi.String(\".*\"),\n\t\t\t\tWrite:     pulumi.String(\".*\"),\n\t\t\t\tRead:      pulumi.String(\".*\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = rabbitmq.NewOperatorPolicy(ctx, \"test\", &rabbitmq.OperatorPolicyArgs{\n\t\t\tName:  pulumi.String(\"test\"),\n\t\t\tVhost: guest.Vhost,\n\t\t\tPolicy: &rabbitmq.OperatorPolicyPolicyArgs{\n\t\t\t\tPattern:  pulumi.String(\".*\"),\n\t\t\t\tPriority: pulumi.Int(0),\n\t\t\t\tApplyTo:  pulumi.String(\"queues\"),\n\t\t\t\tDefinition: pulumi.StringMap{\n\t\t\t\t\t\"message-ttl\": pulumi.String(\"3600000\"),\n\t\t\t\t\t\"expires\":     pulumi.String(\"1800000\"),\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.rabbitmq.VHost;\nimport com.pulumi.rabbitmq.VHostArgs;\nimport com.pulumi.rabbitmq.Permissions;\nimport com.pulumi.rabbitmq.PermissionsArgs;\nimport com.pulumi.rabbitmq.inputs.PermissionsPermissionsArgs;\nimport com.pulumi.rabbitmq.OperatorPolicy;\nimport com.pulumi.rabbitmq.OperatorPolicyArgs;\nimport com.pulumi.rabbitmq.inputs.OperatorPolicyPolicyArgs;\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 test = new VHost(\"test\", VHostArgs.builder()\n            .name(\"test\")\n            .build());\n\n        var guest = new Permissions(\"guest\", PermissionsArgs.builder()\n            .user(\"guest\")\n            .vhost(test.name())\n            .permissions(PermissionsPermissionsArgs.builder()\n                .configure(\".*\")\n                .write(\".*\")\n                .read(\".*\")\n                .build())\n            .build());\n\n        var testOperatorPolicy = new OperatorPolicy(\"testOperatorPolicy\", OperatorPolicyArgs.builder()\n            .name(\"test\")\n            .vhost(guest.vhost())\n            .policy(OperatorPolicyPolicyArgs.builder()\n                .pattern(\".*\")\n                .priority(0)\n                .applyTo(\"queues\")\n                .definition(Map.ofEntries(\n                    Map.entry(\"message-ttl\", \"3600000\"),\n                    Map.entry(\"expires\", \"1800000\")\n                ))\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  test:\n    type: rabbitmq:VHost\n    properties:\n      name: test\n  guest:\n    type: rabbitmq:Permissions\n    properties:\n      user: guest\n      vhost: ${test.name}\n      permissions:\n        configure: .*\n        write: .*\n        read: .*\n  testOperatorPolicy:\n    type: rabbitmq:OperatorPolicy\n    name: test\n    properties:\n      name: test\n      vhost: ${guest.vhost}\n      policy:\n        pattern: .*\n        priority: 0\n        applyTo: queues\n        definition:\n          message-ttl: 3.6e+06\n          expires: 1.8e+06\n```\n<!--End PulumiCodeChooser -->\n\n## Import\n\nOperator policies can be imported using the `id` which is composed of `name@vhost`.\n\nE.g.\n\n```sh\n$ pulumi import rabbitmq:index/operatorPolicy:OperatorPolicy test name@vhost\n```\n\n",
      "properties": {
        "name": {
          "type": "string",
          "description": "The name of the operator policy.\n"
        },
        "policy": {
          "$ref": "#/types/rabbitmq:index%2FOperatorPolicyPolicy:OperatorPolicyPolicy",
          "description": "The settings of the operator policy. The structure is\ndescribed below.\n"
        },
        "vhost": {
          "type": "string",
          "description": "The vhost to create the resource in.\n"
        }
      },
      "type": "object",
      "required": [
        "name",
        "policy",
        "vhost"
      ],
      "inputProperties": {
        "name": {
          "type": "string",
          "description": "The name of the operator policy.\n",
          "willReplaceOnChanges": true
        },
        "policy": {
          "$ref": "#/types/rabbitmq:index%2FOperatorPolicyPolicy:OperatorPolicyPolicy",
          "description": "The settings of the operator policy. The structure is\ndescribed below.\n"
        },
        "vhost": {
          "type": "string",
          "description": "The vhost to create the resource in.\n",
          "willReplaceOnChanges": true
        }
      },
      "requiredInputs": [
        "policy",
        "vhost"
      ],
      "stateInputs": {
        "description": "Input properties used for looking up and filtering OperatorPolicy resources.\n",
        "properties": {
          "name": {
            "type": "string",
            "description": "The name of the operator policy.\n",
            "willReplaceOnChanges": true
          },
          "policy": {
            "$ref": "#/types/rabbitmq:index%2FOperatorPolicyPolicy:OperatorPolicyPolicy",
            "description": "The settings of the operator policy. The structure is\ndescribed below.\n"
          },
          "vhost": {
            "type": "string",
            "description": "The vhost to create the resource in.\n",
            "willReplaceOnChanges": true
          }
        },
        "type": "object"
      }
    },
    "rabbitmq:index/permissions:Permissions": {
      "description": "The ``rabbitmq.Permissions`` resource creates and manages a user's set of\npermissions.\n\n## Example Usage\n\n<!--Start PulumiCodeChooser -->\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as rabbitmq from \"@pulumi/rabbitmq\";\n\nconst test = new rabbitmq.VHost(\"test\", {name: \"test\"});\nconst testUser = new rabbitmq.User(\"test\", {\n    name: \"mctest\",\n    password: \"foobar\",\n    tags: [\"administrator\"],\n});\nconst testPermissions = new rabbitmq.Permissions(\"test\", {\n    user: testUser.name,\n    vhost: test.name,\n    permissions: {\n        configure: \".*\",\n        write: \".*\",\n        read: \".*\",\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_rabbitmq as rabbitmq\n\ntest = rabbitmq.VHost(\"test\", name=\"test\")\ntest_user = rabbitmq.User(\"test\",\n    name=\"mctest\",\n    password=\"foobar\",\n    tags=[\"administrator\"])\ntest_permissions = rabbitmq.Permissions(\"test\",\n    user=test_user.name,\n    vhost=test.name,\n    permissions={\n        \"configure\": \".*\",\n        \"write\": \".*\",\n        \"read\": \".*\",\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing RabbitMQ = Pulumi.RabbitMQ;\n\nreturn await Deployment.RunAsync(() => \n{\n    var test = new RabbitMQ.VHost(\"test\", new()\n    {\n        Name = \"test\",\n    });\n\n    var testUser = new RabbitMQ.User(\"test\", new()\n    {\n        Name = \"mctest\",\n        Password = \"foobar\",\n        Tags = new[]\n        {\n            \"administrator\",\n        },\n    });\n\n    var testPermissions = new RabbitMQ.Permissions(\"test\", new()\n    {\n        User = testUser.Name,\n        Vhost = test.Name,\n        PermissionDetails = new RabbitMQ.Inputs.PermissionsPermissionsArgs\n        {\n            Configure = \".*\",\n            Write = \".*\",\n            Read = \".*\",\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-rabbitmq/sdk/v3/go/rabbitmq\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttest, err := rabbitmq.NewVHost(ctx, \"test\", &rabbitmq.VHostArgs{\n\t\t\tName: pulumi.String(\"test\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttestUser, err := rabbitmq.NewUser(ctx, \"test\", &rabbitmq.UserArgs{\n\t\t\tName:     pulumi.String(\"mctest\"),\n\t\t\tPassword: pulumi.String(\"foobar\"),\n\t\t\tTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"administrator\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = rabbitmq.NewPermissions(ctx, \"test\", &rabbitmq.PermissionsArgs{\n\t\t\tUser:  testUser.Name,\n\t\t\tVhost: test.Name,\n\t\t\tPermissions: &rabbitmq.PermissionsPermissionsArgs{\n\t\t\t\tConfigure: pulumi.String(\".*\"),\n\t\t\t\tWrite:     pulumi.String(\".*\"),\n\t\t\t\tRead:      pulumi.String(\".*\"),\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.rabbitmq.VHost;\nimport com.pulumi.rabbitmq.VHostArgs;\nimport com.pulumi.rabbitmq.User;\nimport com.pulumi.rabbitmq.UserArgs;\nimport com.pulumi.rabbitmq.Permissions;\nimport com.pulumi.rabbitmq.PermissionsArgs;\nimport com.pulumi.rabbitmq.inputs.PermissionsPermissionsArgs;\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 test = new VHost(\"test\", VHostArgs.builder()\n            .name(\"test\")\n            .build());\n\n        var testUser = new User(\"testUser\", UserArgs.builder()\n            .name(\"mctest\")\n            .password(\"foobar\")\n            .tags(\"administrator\")\n            .build());\n\n        var testPermissions = new Permissions(\"testPermissions\", PermissionsArgs.builder()\n            .user(testUser.name())\n            .vhost(test.name())\n            .permissions(PermissionsPermissionsArgs.builder()\n                .configure(\".*\")\n                .write(\".*\")\n                .read(\".*\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  test:\n    type: rabbitmq:VHost\n    properties:\n      name: test\n  testUser:\n    type: rabbitmq:User\n    name: test\n    properties:\n      name: mctest\n      password: foobar\n      tags:\n        - administrator\n  testPermissions:\n    type: rabbitmq:Permissions\n    name: test\n    properties:\n      user: ${testUser.name}\n      vhost: ${test.name}\n      permissions:\n        configure: .*\n        write: .*\n        read: .*\n```\n<!--End PulumiCodeChooser -->\n\n## Import\n\nPermissions can be imported using the `id` which is composed of  `user@vhost`.\n\nE.g.\n\n```sh\n$ pulumi import rabbitmq:index/permissions:Permissions test user@vhost\n```\n\n",
      "properties": {
        "permissions": {
          "$ref": "#/types/rabbitmq:index%2FPermissionsPermissions:PermissionsPermissions",
          "description": "The settings of the permissions. The structure is\ndescribed below.\n",
          "language": {
            "csharp": {
              "name": "PermissionDetails"
            }
          }
        },
        "user": {
          "type": "string",
          "description": "The user to apply the permissions to.\n"
        },
        "vhost": {
          "type": "string",
          "description": "The vhost to create the resource in.\n"
        }
      },
      "type": "object",
      "required": [
        "permissions",
        "user"
      ],
      "inputProperties": {
        "permissions": {
          "$ref": "#/types/rabbitmq:index%2FPermissionsPermissions:PermissionsPermissions",
          "description": "The settings of the permissions. The structure is\ndescribed below.\n",
          "language": {
            "csharp": {
              "name": "PermissionDetails"
            }
          }
        },
        "user": {
          "type": "string",
          "description": "The user to apply the permissions to.\n",
          "willReplaceOnChanges": true
        },
        "vhost": {
          "type": "string",
          "description": "The vhost to create the resource in.\n",
          "willReplaceOnChanges": true
        }
      },
      "requiredInputs": [
        "permissions",
        "user"
      ],
      "stateInputs": {
        "description": "Input properties used for looking up and filtering Permissions resources.\n",
        "properties": {
          "permissions": {
            "$ref": "#/types/rabbitmq:index%2FPermissionsPermissions:PermissionsPermissions",
            "description": "The settings of the permissions. The structure is\ndescribed below.\n",
            "language": {
              "csharp": {
                "name": "PermissionDetails"
              }
            }
          },
          "user": {
            "type": "string",
            "description": "The user to apply the permissions to.\n",
            "willReplaceOnChanges": true
          },
          "vhost": {
            "type": "string",
            "description": "The vhost to create the resource in.\n",
            "willReplaceOnChanges": true
          }
        },
        "type": "object"
      }
    },
    "rabbitmq:index/policy:Policy": {
      "description": "The ``rabbitmq.Policy`` resource creates and manages policies for exchanges\nand queues.\n\n## Example Usage\n\n<!--Start PulumiCodeChooser -->\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as rabbitmq from \"@pulumi/rabbitmq\";\n\nconst test = new rabbitmq.VHost(\"test\", {name: \"test\"});\nconst guest = new rabbitmq.Permissions(\"guest\", {\n    user: \"guest\",\n    vhost: test.name,\n    permissions: {\n        configure: \".*\",\n        write: \".*\",\n        read: \".*\",\n    },\n});\nconst testPolicy = new rabbitmq.Policy(\"test\", {\n    name: \"test\",\n    vhost: guest.vhost,\n    policy: {\n        pattern: \".*\",\n        priority: 0,\n        applyTo: \"all\",\n        definition: {\n            \"ha-mode\": \"all\",\n        },\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_rabbitmq as rabbitmq\n\ntest = rabbitmq.VHost(\"test\", name=\"test\")\nguest = rabbitmq.Permissions(\"guest\",\n    user=\"guest\",\n    vhost=test.name,\n    permissions={\n        \"configure\": \".*\",\n        \"write\": \".*\",\n        \"read\": \".*\",\n    })\ntest_policy = rabbitmq.Policy(\"test\",\n    name=\"test\",\n    vhost=guest.vhost,\n    policy={\n        \"pattern\": \".*\",\n        \"priority\": 0,\n        \"apply_to\": \"all\",\n        \"definition\": {\n            \"ha-mode\": \"all\",\n        },\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing RabbitMQ = Pulumi.RabbitMQ;\n\nreturn await Deployment.RunAsync(() => \n{\n    var test = new RabbitMQ.VHost(\"test\", new()\n    {\n        Name = \"test\",\n    });\n\n    var guest = new RabbitMQ.Permissions(\"guest\", new()\n    {\n        User = \"guest\",\n        Vhost = test.Name,\n        PermissionDetails = new RabbitMQ.Inputs.PermissionsPermissionsArgs\n        {\n            Configure = \".*\",\n            Write = \".*\",\n            Read = \".*\",\n        },\n    });\n\n    var testPolicy = new RabbitMQ.Policy(\"test\", new()\n    {\n        Name = \"test\",\n        Vhost = guest.Vhost,\n        PolicyBlock = new RabbitMQ.Inputs.PolicyPolicyArgs\n        {\n            Pattern = \".*\",\n            Priority = 0,\n            ApplyTo = \"all\",\n            Definition = \n            {\n                { \"ha-mode\", \"all\" },\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-rabbitmq/sdk/v3/go/rabbitmq\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttest, err := rabbitmq.NewVHost(ctx, \"test\", &rabbitmq.VHostArgs{\n\t\t\tName: pulumi.String(\"test\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tguest, err := rabbitmq.NewPermissions(ctx, \"guest\", &rabbitmq.PermissionsArgs{\n\t\t\tUser:  pulumi.String(\"guest\"),\n\t\t\tVhost: test.Name,\n\t\t\tPermissions: &rabbitmq.PermissionsPermissionsArgs{\n\t\t\t\tConfigure: pulumi.String(\".*\"),\n\t\t\t\tWrite:     pulumi.String(\".*\"),\n\t\t\t\tRead:      pulumi.String(\".*\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = rabbitmq.NewPolicy(ctx, \"test\", &rabbitmq.PolicyArgs{\n\t\t\tName:  pulumi.String(\"test\"),\n\t\t\tVhost: guest.Vhost,\n\t\t\tPolicy: &rabbitmq.PolicyPolicyArgs{\n\t\t\t\tPattern:  pulumi.String(\".*\"),\n\t\t\t\tPriority: pulumi.Int(0),\n\t\t\t\tApplyTo:  pulumi.String(\"all\"),\n\t\t\t\tDefinition: pulumi.StringMap{\n\t\t\t\t\t\"ha-mode\": pulumi.String(\"all\"),\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.rabbitmq.VHost;\nimport com.pulumi.rabbitmq.VHostArgs;\nimport com.pulumi.rabbitmq.Permissions;\nimport com.pulumi.rabbitmq.PermissionsArgs;\nimport com.pulumi.rabbitmq.inputs.PermissionsPermissionsArgs;\nimport com.pulumi.rabbitmq.Policy;\nimport com.pulumi.rabbitmq.PolicyArgs;\nimport com.pulumi.rabbitmq.inputs.PolicyPolicyArgs;\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 test = new VHost(\"test\", VHostArgs.builder()\n            .name(\"test\")\n            .build());\n\n        var guest = new Permissions(\"guest\", PermissionsArgs.builder()\n            .user(\"guest\")\n            .vhost(test.name())\n            .permissions(PermissionsPermissionsArgs.builder()\n                .configure(\".*\")\n                .write(\".*\")\n                .read(\".*\")\n                .build())\n            .build());\n\n        var testPolicy = new Policy(\"testPolicy\", PolicyArgs.builder()\n            .name(\"test\")\n            .vhost(guest.vhost())\n            .policy(PolicyPolicyArgs.builder()\n                .pattern(\".*\")\n                .priority(0)\n                .applyTo(\"all\")\n                .definition(Map.of(\"ha-mode\", \"all\"))\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  test:\n    type: rabbitmq:VHost\n    properties:\n      name: test\n  guest:\n    type: rabbitmq:Permissions\n    properties:\n      user: guest\n      vhost: ${test.name}\n      permissions:\n        configure: .*\n        write: .*\n        read: .*\n  testPolicy:\n    type: rabbitmq:Policy\n    name: test\n    properties:\n      name: test\n      vhost: ${guest.vhost}\n      policy:\n        pattern: .*\n        priority: 0\n        applyTo: all\n        definition:\n          ha-mode: all\n```\n<!--End PulumiCodeChooser -->\n\n## Import\n\nPolicies can be imported using the `id` which is composed of `name@vhost`.\n\nE.g.\n\n```sh\n$ pulumi import rabbitmq:index/policy:Policy test name@vhost\n```\n\n",
      "properties": {
        "name": {
          "type": "string",
          "description": "The name of the policy.\n"
        },
        "policy": {
          "$ref": "#/types/rabbitmq:index%2FPolicyPolicy:PolicyPolicy",
          "description": "The settings of the policy. The structure is\ndescribed below.\n",
          "language": {
            "csharp": {
              "name": "PolicyBlock"
            }
          }
        },
        "vhost": {
          "type": "string",
          "description": "The vhost to create the resource in.\n"
        }
      },
      "type": "object",
      "required": [
        "name",
        "policy",
        "vhost"
      ],
      "inputProperties": {
        "name": {
          "type": "string",
          "description": "The name of the policy.\n",
          "willReplaceOnChanges": true
        },
        "policy": {
          "$ref": "#/types/rabbitmq:index%2FPolicyPolicy:PolicyPolicy",
          "description": "The settings of the policy. The structure is\ndescribed below.\n",
          "language": {
            "csharp": {
              "name": "PolicyBlock"
            }
          }
        },
        "vhost": {
          "type": "string",
          "description": "The vhost to create the resource in.\n",
          "willReplaceOnChanges": true
        }
      },
      "requiredInputs": [
        "policy",
        "vhost"
      ],
      "stateInputs": {
        "description": "Input properties used for looking up and filtering Policy resources.\n",
        "properties": {
          "name": {
            "type": "string",
            "description": "The name of the policy.\n",
            "willReplaceOnChanges": true
          },
          "policy": {
            "$ref": "#/types/rabbitmq:index%2FPolicyPolicy:PolicyPolicy",
            "description": "The settings of the policy. The structure is\ndescribed below.\n",
            "language": {
              "csharp": {
                "name": "PolicyBlock"
              }
            }
          },
          "vhost": {
            "type": "string",
            "description": "The vhost to create the resource in.\n",
            "willReplaceOnChanges": true
          }
        },
        "type": "object"
      }
    },
    "rabbitmq:index/queue:Queue": {
      "description": "The ``rabbitmq.Queue`` resource creates and manages a queue.\n\n## Example Usage\n\n### Basic Example\n\n<!--Start PulumiCodeChooser -->\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as rabbitmq from \"@pulumi/rabbitmq\";\n\nconst test = new rabbitmq.VHost(\"test\", {name: \"test\"});\nconst guest = new rabbitmq.Permissions(\"guest\", {\n    user: \"guest\",\n    vhost: test.name,\n    permissions: {\n        configure: \".*\",\n        write: \".*\",\n        read: \".*\",\n    },\n});\nconst testQueue = new rabbitmq.Queue(\"test\", {\n    name: \"test\",\n    vhost: guest.vhost,\n    settings: {\n        durable: false,\n        autoDelete: true,\n        arguments: {\n            \"x-queue-type\": \"quorum\",\n        },\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_rabbitmq as rabbitmq\n\ntest = rabbitmq.VHost(\"test\", name=\"test\")\nguest = rabbitmq.Permissions(\"guest\",\n    user=\"guest\",\n    vhost=test.name,\n    permissions={\n        \"configure\": \".*\",\n        \"write\": \".*\",\n        \"read\": \".*\",\n    })\ntest_queue = rabbitmq.Queue(\"test\",\n    name=\"test\",\n    vhost=guest.vhost,\n    settings={\n        \"durable\": False,\n        \"auto_delete\": True,\n        \"arguments\": {\n            \"x-queue-type\": \"quorum\",\n        },\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing RabbitMQ = Pulumi.RabbitMQ;\n\nreturn await Deployment.RunAsync(() => \n{\n    var test = new RabbitMQ.VHost(\"test\", new()\n    {\n        Name = \"test\",\n    });\n\n    var guest = new RabbitMQ.Permissions(\"guest\", new()\n    {\n        User = \"guest\",\n        Vhost = test.Name,\n        PermissionDetails = new RabbitMQ.Inputs.PermissionsPermissionsArgs\n        {\n            Configure = \".*\",\n            Write = \".*\",\n            Read = \".*\",\n        },\n    });\n\n    var testQueue = new RabbitMQ.Queue(\"test\", new()\n    {\n        Name = \"test\",\n        Vhost = guest.Vhost,\n        Settings = new RabbitMQ.Inputs.QueueSettingsArgs\n        {\n            Durable = false,\n            AutoDelete = true,\n            Arguments = \n            {\n                { \"x-queue-type\", \"quorum\" },\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-rabbitmq/sdk/v3/go/rabbitmq\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttest, err := rabbitmq.NewVHost(ctx, \"test\", &rabbitmq.VHostArgs{\n\t\t\tName: pulumi.String(\"test\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tguest, err := rabbitmq.NewPermissions(ctx, \"guest\", &rabbitmq.PermissionsArgs{\n\t\t\tUser:  pulumi.String(\"guest\"),\n\t\t\tVhost: test.Name,\n\t\t\tPermissions: &rabbitmq.PermissionsPermissionsArgs{\n\t\t\t\tConfigure: pulumi.String(\".*\"),\n\t\t\t\tWrite:     pulumi.String(\".*\"),\n\t\t\t\tRead:      pulumi.String(\".*\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = rabbitmq.NewQueue(ctx, \"test\", &rabbitmq.QueueArgs{\n\t\t\tName:  pulumi.String(\"test\"),\n\t\t\tVhost: guest.Vhost,\n\t\t\tSettings: &rabbitmq.QueueSettingsArgs{\n\t\t\t\tDurable:    pulumi.Bool(false),\n\t\t\t\tAutoDelete: pulumi.Bool(true),\n\t\t\t\tArguments: pulumi.StringMap{\n\t\t\t\t\t\"x-queue-type\": pulumi.String(\"quorum\"),\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.rabbitmq.VHost;\nimport com.pulumi.rabbitmq.VHostArgs;\nimport com.pulumi.rabbitmq.Permissions;\nimport com.pulumi.rabbitmq.PermissionsArgs;\nimport com.pulumi.rabbitmq.inputs.PermissionsPermissionsArgs;\nimport com.pulumi.rabbitmq.Queue;\nimport com.pulumi.rabbitmq.QueueArgs;\nimport com.pulumi.rabbitmq.inputs.QueueSettingsArgs;\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 test = new VHost(\"test\", VHostArgs.builder()\n            .name(\"test\")\n            .build());\n\n        var guest = new Permissions(\"guest\", PermissionsArgs.builder()\n            .user(\"guest\")\n            .vhost(test.name())\n            .permissions(PermissionsPermissionsArgs.builder()\n                .configure(\".*\")\n                .write(\".*\")\n                .read(\".*\")\n                .build())\n            .build());\n\n        var testQueue = new Queue(\"testQueue\", QueueArgs.builder()\n            .name(\"test\")\n            .vhost(guest.vhost())\n            .settings(QueueSettingsArgs.builder()\n                .durable(false)\n                .autoDelete(true)\n                .arguments(Map.of(\"x-queue-type\", \"quorum\"))\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  test:\n    type: rabbitmq:VHost\n    properties:\n      name: test\n  guest:\n    type: rabbitmq:Permissions\n    properties:\n      user: guest\n      vhost: ${test.name}\n      permissions:\n        configure: .*\n        write: .*\n        read: .*\n  testQueue:\n    type: rabbitmq:Queue\n    name: test\n    properties:\n      name: test\n      vhost: ${guest.vhost}\n      settings:\n        durable: false\n        autoDelete: true\n        arguments:\n          x-queue-type: quorum\n```\n<!--End PulumiCodeChooser -->\n\n### Example With JSON Arguments\n\n<!--Start PulumiCodeChooser -->\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as rabbitmq from \"@pulumi/rabbitmq\";\n\nconst config = new pulumi.Config();\nconst arguments = config.get(\"arguments\") || `{\n  \"x-message-ttl\": 5000\n}\n`;\nconst test = new rabbitmq.VHost(\"test\", {name: \"test\"});\nconst guest = new rabbitmq.Permissions(\"guest\", {\n    user: \"guest\",\n    vhost: test.name,\n    permissions: {\n        configure: \".*\",\n        write: \".*\",\n        read: \".*\",\n    },\n});\nconst testQueue = new rabbitmq.Queue(\"test\", {\n    name: \"test\",\n    vhost: guest.vhost,\n    settings: {\n        durable: false,\n        autoDelete: true,\n        argumentsJson: arguments,\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_rabbitmq as rabbitmq\n\nconfig = pulumi.Config()\narguments = config.get(\"arguments\")\nif arguments is None:\n    arguments = \"\"\"{\n  \"x-message-ttl\": 5000\n}\n\"\"\"\ntest = rabbitmq.VHost(\"test\", name=\"test\")\nguest = rabbitmq.Permissions(\"guest\",\n    user=\"guest\",\n    vhost=test.name,\n    permissions={\n        \"configure\": \".*\",\n        \"write\": \".*\",\n        \"read\": \".*\",\n    })\ntest_queue = rabbitmq.Queue(\"test\",\n    name=\"test\",\n    vhost=guest.vhost,\n    settings={\n        \"durable\": False,\n        \"auto_delete\": True,\n        \"arguments_json\": arguments,\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing RabbitMQ = Pulumi.RabbitMQ;\n\nreturn await Deployment.RunAsync(() => \n{\n    var config = new Config();\n    var arguments = config.Get(\"arguments\") ?? @\"{\n  \"\"x-message-ttl\"\": 5000\n}\n\";\n    var test = new RabbitMQ.VHost(\"test\", new()\n    {\n        Name = \"test\",\n    });\n\n    var guest = new RabbitMQ.Permissions(\"guest\", new()\n    {\n        User = \"guest\",\n        Vhost = test.Name,\n        PermissionDetails = new RabbitMQ.Inputs.PermissionsPermissionsArgs\n        {\n            Configure = \".*\",\n            Write = \".*\",\n            Read = \".*\",\n        },\n    });\n\n    var testQueue = new RabbitMQ.Queue(\"test\", new()\n    {\n        Name = \"test\",\n        Vhost = guest.Vhost,\n        Settings = new RabbitMQ.Inputs.QueueSettingsArgs\n        {\n            Durable = false,\n            AutoDelete = true,\n            ArgumentsJson = arguments,\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-rabbitmq/sdk/v3/go/rabbitmq\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi/config\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcfg := config.New(ctx, \"\")\n\t\targuments := \"{\\n  \\\"x-message-ttl\\\": 5000\\n}\\n\"\n\t\tif param := cfg.Get(\"arguments\"); param != \"\" {\n\t\t\targuments = param\n\t\t}\n\t\ttest, err := rabbitmq.NewVHost(ctx, \"test\", &rabbitmq.VHostArgs{\n\t\t\tName: pulumi.String(\"test\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tguest, err := rabbitmq.NewPermissions(ctx, \"guest\", &rabbitmq.PermissionsArgs{\n\t\t\tUser:  pulumi.String(\"guest\"),\n\t\t\tVhost: test.Name,\n\t\t\tPermissions: &rabbitmq.PermissionsPermissionsArgs{\n\t\t\t\tConfigure: pulumi.String(\".*\"),\n\t\t\t\tWrite:     pulumi.String(\".*\"),\n\t\t\t\tRead:      pulumi.String(\".*\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = rabbitmq.NewQueue(ctx, \"test\", &rabbitmq.QueueArgs{\n\t\t\tName:  pulumi.String(\"test\"),\n\t\t\tVhost: guest.Vhost,\n\t\t\tSettings: &rabbitmq.QueueSettingsArgs{\n\t\t\t\tDurable:       pulumi.Bool(false),\n\t\t\t\tAutoDelete:    pulumi.Bool(true),\n\t\t\t\tArgumentsJson: pulumi.String(arguments),\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.rabbitmq.VHost;\nimport com.pulumi.rabbitmq.VHostArgs;\nimport com.pulumi.rabbitmq.Permissions;\nimport com.pulumi.rabbitmq.PermissionsArgs;\nimport com.pulumi.rabbitmq.inputs.PermissionsPermissionsArgs;\nimport com.pulumi.rabbitmq.Queue;\nimport com.pulumi.rabbitmq.QueueArgs;\nimport com.pulumi.rabbitmq.inputs.QueueSettingsArgs;\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 config = ctx.config();\n        final var arguments = config.get(\"arguments\").orElse(\"\"\"\n{\n  \"x-message-ttl\": 5000\n}\n        \"\"\");\n        var test = new VHost(\"test\", VHostArgs.builder()\n            .name(\"test\")\n            .build());\n\n        var guest = new Permissions(\"guest\", PermissionsArgs.builder()\n            .user(\"guest\")\n            .vhost(test.name())\n            .permissions(PermissionsPermissionsArgs.builder()\n                .configure(\".*\")\n                .write(\".*\")\n                .read(\".*\")\n                .build())\n            .build());\n\n        var testQueue = new Queue(\"testQueue\", QueueArgs.builder()\n            .name(\"test\")\n            .vhost(guest.vhost())\n            .settings(QueueSettingsArgs.builder()\n                .durable(false)\n                .autoDelete(true)\n                .argumentsJson(arguments)\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nconfiguration:\n  arguments:\n    type: string\n    default: |\n      {\n        \"x-message-ttl\": 5000\n      }\nresources:\n  test:\n    type: rabbitmq:VHost\n    properties:\n      name: test\n  guest:\n    type: rabbitmq:Permissions\n    properties:\n      user: guest\n      vhost: ${test.name}\n      permissions:\n        configure: .*\n        write: .*\n        read: .*\n  testQueue:\n    type: rabbitmq:Queue\n    name: test\n    properties:\n      name: test\n      vhost: ${guest.vhost}\n      settings:\n        durable: false\n        autoDelete: true\n        argumentsJson: ${arguments}\n```\n<!--End PulumiCodeChooser -->\n\n## Import\n\nQueues can be imported using the `id` which is composed of `name@vhost`. E.g.\n\n```sh\n$ pulumi import rabbitmq:index/queue:Queue test name@vhost\n```\n\n",
      "properties": {
        "name": {
          "type": "string",
          "description": "The name of the queue.\n"
        },
        "settings": {
          "$ref": "#/types/rabbitmq:index%2FQueueSettings:QueueSettings",
          "description": "The settings of the queue. The structure is\ndescribed below.\n"
        },
        "vhost": {
          "type": "string",
          "description": "The vhost to create the resource in.\n"
        }
      },
      "type": "object",
      "required": [
        "name",
        "settings"
      ],
      "inputProperties": {
        "name": {
          "type": "string",
          "description": "The name of the queue.\n",
          "willReplaceOnChanges": true
        },
        "settings": {
          "$ref": "#/types/rabbitmq:index%2FQueueSettings:QueueSettings",
          "description": "The settings of the queue. The structure is\ndescribed below.\n",
          "willReplaceOnChanges": true
        },
        "vhost": {
          "type": "string",
          "description": "The vhost to create the resource in.\n",
          "willReplaceOnChanges": true
        }
      },
      "requiredInputs": [
        "settings"
      ],
      "stateInputs": {
        "description": "Input properties used for looking up and filtering Queue resources.\n",
        "properties": {
          "name": {
            "type": "string",
            "description": "The name of the queue.\n",
            "willReplaceOnChanges": true
          },
          "settings": {
            "$ref": "#/types/rabbitmq:index%2FQueueSettings:QueueSettings",
            "description": "The settings of the queue. The structure is\ndescribed below.\n",
            "willReplaceOnChanges": true
          },
          "vhost": {
            "type": "string",
            "description": "The vhost to create the resource in.\n",
            "willReplaceOnChanges": true
          }
        },
        "type": "object"
      }
    },
    "rabbitmq:index/shovel:Shovel": {
      "description": "The ``rabbitmq.Shovel`` resource creates and manages a dynamic shovel.\n\n## Example Usage\n\n<!--Start PulumiCodeChooser -->\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as rabbitmq from \"@pulumi/rabbitmq\";\n\nconst test = new rabbitmq.VHost(\"test\", {name: \"test\"});\nconst testExchange = new rabbitmq.Exchange(\"test\", {\n    name: \"test_exchange\",\n    vhost: test.name,\n    settings: {\n        type: \"fanout\",\n        durable: false,\n        autoDelete: true,\n    },\n});\nconst testQueue = new rabbitmq.Queue(\"test\", {\n    name: \"test_queue\",\n    vhost: test.name,\n    settings: {\n        durable: false,\n        autoDelete: true,\n    },\n});\nconst shovelTest = new rabbitmq.Shovel(\"shovelTest\", {\n    name: \"shovelTest\",\n    vhost: test.name,\n    info: {\n        sourceUri: \"amqp:///test\",\n        sourceExchange: testExchange.name,\n        sourceExchangeKey: \"test\",\n        destinationUri: \"amqp:///test\",\n        destinationQueue: testQueue.name,\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_rabbitmq as rabbitmq\n\ntest = rabbitmq.VHost(\"test\", name=\"test\")\ntest_exchange = rabbitmq.Exchange(\"test\",\n    name=\"test_exchange\",\n    vhost=test.name,\n    settings={\n        \"type\": \"fanout\",\n        \"durable\": False,\n        \"auto_delete\": True,\n    })\ntest_queue = rabbitmq.Queue(\"test\",\n    name=\"test_queue\",\n    vhost=test.name,\n    settings={\n        \"durable\": False,\n        \"auto_delete\": True,\n    })\nshovel_test = rabbitmq.Shovel(\"shovelTest\",\n    name=\"shovelTest\",\n    vhost=test.name,\n    info={\n        \"source_uri\": \"amqp:///test\",\n        \"source_exchange\": test_exchange.name,\n        \"source_exchange_key\": \"test\",\n        \"destination_uri\": \"amqp:///test\",\n        \"destination_queue\": test_queue.name,\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing RabbitMQ = Pulumi.RabbitMQ;\n\nreturn await Deployment.RunAsync(() => \n{\n    var test = new RabbitMQ.VHost(\"test\", new()\n    {\n        Name = \"test\",\n    });\n\n    var testExchange = new RabbitMQ.Exchange(\"test\", new()\n    {\n        Name = \"test_exchange\",\n        Vhost = test.Name,\n        Settings = new RabbitMQ.Inputs.ExchangeSettingsArgs\n        {\n            Type = \"fanout\",\n            Durable = false,\n            AutoDelete = true,\n        },\n    });\n\n    var testQueue = new RabbitMQ.Queue(\"test\", new()\n    {\n        Name = \"test_queue\",\n        Vhost = test.Name,\n        Settings = new RabbitMQ.Inputs.QueueSettingsArgs\n        {\n            Durable = false,\n            AutoDelete = true,\n        },\n    });\n\n    var shovelTest = new RabbitMQ.Shovel(\"shovelTest\", new()\n    {\n        Name = \"shovelTest\",\n        Vhost = test.Name,\n        Info = new RabbitMQ.Inputs.ShovelInfoArgs\n        {\n            SourceUri = \"amqp:///test\",\n            SourceExchange = testExchange.Name,\n            SourceExchangeKey = \"test\",\n            DestinationUri = \"amqp:///test\",\n            DestinationQueue = testQueue.Name,\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-rabbitmq/sdk/v3/go/rabbitmq\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttest, err := rabbitmq.NewVHost(ctx, \"test\", &rabbitmq.VHostArgs{\n\t\t\tName: pulumi.String(\"test\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttestExchange, err := rabbitmq.NewExchange(ctx, \"test\", &rabbitmq.ExchangeArgs{\n\t\t\tName:  pulumi.String(\"test_exchange\"),\n\t\t\tVhost: test.Name,\n\t\t\tSettings: &rabbitmq.ExchangeSettingsArgs{\n\t\t\t\tType:       pulumi.String(\"fanout\"),\n\t\t\t\tDurable:    pulumi.Bool(false),\n\t\t\t\tAutoDelete: pulumi.Bool(true),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttestQueue, err := rabbitmq.NewQueue(ctx, \"test\", &rabbitmq.QueueArgs{\n\t\t\tName:  pulumi.String(\"test_queue\"),\n\t\t\tVhost: test.Name,\n\t\t\tSettings: &rabbitmq.QueueSettingsArgs{\n\t\t\t\tDurable:    pulumi.Bool(false),\n\t\t\t\tAutoDelete: pulumi.Bool(true),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = rabbitmq.NewShovel(ctx, \"shovelTest\", &rabbitmq.ShovelArgs{\n\t\t\tName:  pulumi.String(\"shovelTest\"),\n\t\t\tVhost: test.Name,\n\t\t\tInfo: &rabbitmq.ShovelInfoArgs{\n\t\t\t\tSourceUri:         pulumi.String(\"amqp:///test\"),\n\t\t\t\tSourceExchange:    testExchange.Name,\n\t\t\t\tSourceExchangeKey: pulumi.String(\"test\"),\n\t\t\t\tDestinationUri:    pulumi.String(\"amqp:///test\"),\n\t\t\t\tDestinationQueue:  testQueue.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.rabbitmq.VHost;\nimport com.pulumi.rabbitmq.VHostArgs;\nimport com.pulumi.rabbitmq.Exchange;\nimport com.pulumi.rabbitmq.ExchangeArgs;\nimport com.pulumi.rabbitmq.inputs.ExchangeSettingsArgs;\nimport com.pulumi.rabbitmq.Queue;\nimport com.pulumi.rabbitmq.QueueArgs;\nimport com.pulumi.rabbitmq.inputs.QueueSettingsArgs;\nimport com.pulumi.rabbitmq.Shovel;\nimport com.pulumi.rabbitmq.ShovelArgs;\nimport com.pulumi.rabbitmq.inputs.ShovelInfoArgs;\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 test = new VHost(\"test\", VHostArgs.builder()\n            .name(\"test\")\n            .build());\n\n        var testExchange = new Exchange(\"testExchange\", ExchangeArgs.builder()\n            .name(\"test_exchange\")\n            .vhost(test.name())\n            .settings(ExchangeSettingsArgs.builder()\n                .type(\"fanout\")\n                .durable(false)\n                .autoDelete(true)\n                .build())\n            .build());\n\n        var testQueue = new Queue(\"testQueue\", QueueArgs.builder()\n            .name(\"test_queue\")\n            .vhost(test.name())\n            .settings(QueueSettingsArgs.builder()\n                .durable(false)\n                .autoDelete(true)\n                .build())\n            .build());\n\n        var shovelTest = new Shovel(\"shovelTest\", ShovelArgs.builder()\n            .name(\"shovelTest\")\n            .vhost(test.name())\n            .info(ShovelInfoArgs.builder()\n                .sourceUri(\"amqp:///test\")\n                .sourceExchange(testExchange.name())\n                .sourceExchangeKey(\"test\")\n                .destinationUri(\"amqp:///test\")\n                .destinationQueue(testQueue.name())\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  test:\n    type: rabbitmq:VHost\n    properties:\n      name: test\n  testExchange:\n    type: rabbitmq:Exchange\n    name: test\n    properties:\n      name: test_exchange\n      vhost: ${test.name}\n      settings:\n        type: fanout\n        durable: false\n        autoDelete: true\n  testQueue:\n    type: rabbitmq:Queue\n    name: test\n    properties:\n      name: test_queue\n      vhost: ${test.name}\n      settings:\n        durable: false\n        autoDelete: true\n  shovelTest:\n    type: rabbitmq:Shovel\n    properties:\n      name: shovelTest\n      vhost: ${test.name}\n      info:\n        sourceUri: amqp:///test\n        sourceExchange: ${testExchange.name}\n        sourceExchangeKey: test\n        destinationUri: amqp:///test\n        destinationQueue: ${testQueue.name}\n```\n<!--End PulumiCodeChooser -->\n\n## Import\n\nShovels can be imported using the `name` and `vhost`\n\nE.g.\n\n```sh\n$ pulumi import rabbitmq:index/shovel:Shovel test shovelTest@test\n```\n\n",
      "properties": {
        "info": {
          "$ref": "#/types/rabbitmq:index%2FShovelInfo:ShovelInfo",
          "description": "The settings of the dynamic shovel. The structure is\ndescribed below.\n"
        },
        "name": {
          "type": "string",
          "description": "The shovel name.\n"
        },
        "vhost": {
          "type": "string",
          "description": "The vhost to create the resource in.\n"
        }
      },
      "type": "object",
      "required": [
        "info",
        "name",
        "vhost"
      ],
      "inputProperties": {
        "info": {
          "$ref": "#/types/rabbitmq:index%2FShovelInfo:ShovelInfo",
          "description": "The settings of the dynamic shovel. The structure is\ndescribed below.\n"
        },
        "name": {
          "type": "string",
          "description": "The shovel name.\n",
          "willReplaceOnChanges": true
        },
        "vhost": {
          "type": "string",
          "description": "The vhost to create the resource in.\n",
          "willReplaceOnChanges": true
        }
      },
      "requiredInputs": [
        "info",
        "vhost"
      ],
      "stateInputs": {
        "description": "Input properties used for looking up and filtering Shovel resources.\n",
        "properties": {
          "info": {
            "$ref": "#/types/rabbitmq:index%2FShovelInfo:ShovelInfo",
            "description": "The settings of the dynamic shovel. The structure is\ndescribed below.\n"
          },
          "name": {
            "type": "string",
            "description": "The shovel name.\n",
            "willReplaceOnChanges": true
          },
          "vhost": {
            "type": "string",
            "description": "The vhost to create the resource in.\n",
            "willReplaceOnChanges": true
          }
        },
        "type": "object"
      }
    },
    "rabbitmq:index/topicPermissions:TopicPermissions": {
      "description": "The ``rabbitmq.TopicPermissions`` resource creates and manages a user's set of\ntopic permissions.\n\n## Example Usage\n\n<!--Start PulumiCodeChooser -->\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as rabbitmq from \"@pulumi/rabbitmq\";\n\nconst test = new rabbitmq.VHost(\"test\", {name: \"test\"});\nconst testUser = new rabbitmq.User(\"test\", {\n    name: \"mctest\",\n    password: \"foobar\",\n    tags: [\"administrator\"],\n});\nconst testTopicPermissions = new rabbitmq.TopicPermissions(\"test\", {\n    user: testUser.name,\n    vhost: test.name,\n    permissions: [{\n        exchange: \"amq.topic\",\n        write: \".*\",\n        read: \".*\",\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumi_rabbitmq as rabbitmq\n\ntest = rabbitmq.VHost(\"test\", name=\"test\")\ntest_user = rabbitmq.User(\"test\",\n    name=\"mctest\",\n    password=\"foobar\",\n    tags=[\"administrator\"])\ntest_topic_permissions = rabbitmq.TopicPermissions(\"test\",\n    user=test_user.name,\n    vhost=test.name,\n    permissions=[{\n        \"exchange\": \"amq.topic\",\n        \"write\": \".*\",\n        \"read\": \".*\",\n    }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing RabbitMQ = Pulumi.RabbitMQ;\n\nreturn await Deployment.RunAsync(() => \n{\n    var test = new RabbitMQ.VHost(\"test\", new()\n    {\n        Name = \"test\",\n    });\n\n    var testUser = new RabbitMQ.User(\"test\", new()\n    {\n        Name = \"mctest\",\n        Password = \"foobar\",\n        Tags = new[]\n        {\n            \"administrator\",\n        },\n    });\n\n    var testTopicPermissions = new RabbitMQ.TopicPermissions(\"test\", new()\n    {\n        User = testUser.Name,\n        Vhost = test.Name,\n        Permissions = new[]\n        {\n            new RabbitMQ.Inputs.TopicPermissionsPermissionArgs\n            {\n                Exchange = \"amq.topic\",\n                Write = \".*\",\n                Read = \".*\",\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-rabbitmq/sdk/v3/go/rabbitmq\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttest, err := rabbitmq.NewVHost(ctx, \"test\", &rabbitmq.VHostArgs{\n\t\t\tName: pulumi.String(\"test\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttestUser, err := rabbitmq.NewUser(ctx, \"test\", &rabbitmq.UserArgs{\n\t\t\tName:     pulumi.String(\"mctest\"),\n\t\t\tPassword: pulumi.String(\"foobar\"),\n\t\t\tTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"administrator\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = rabbitmq.NewTopicPermissions(ctx, \"test\", &rabbitmq.TopicPermissionsArgs{\n\t\t\tUser:  testUser.Name,\n\t\t\tVhost: test.Name,\n\t\t\tPermissions: rabbitmq.TopicPermissionsPermissionArray{\n\t\t\t\t&rabbitmq.TopicPermissionsPermissionArgs{\n\t\t\t\t\tExchange: pulumi.String(\"amq.topic\"),\n\t\t\t\t\tWrite:    pulumi.String(\".*\"),\n\t\t\t\t\tRead:     pulumi.String(\".*\"),\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.rabbitmq.VHost;\nimport com.pulumi.rabbitmq.VHostArgs;\nimport com.pulumi.rabbitmq.User;\nimport com.pulumi.rabbitmq.UserArgs;\nimport com.pulumi.rabbitmq.TopicPermissions;\nimport com.pulumi.rabbitmq.TopicPermissionsArgs;\nimport com.pulumi.rabbitmq.inputs.TopicPermissionsPermissionArgs;\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 test = new VHost(\"test\", VHostArgs.builder()\n            .name(\"test\")\n            .build());\n\n        var testUser = new User(\"testUser\", UserArgs.builder()\n            .name(\"mctest\")\n            .password(\"foobar\")\n            .tags(\"administrator\")\n            .build());\n\n        var testTopicPermissions = new TopicPermissions(\"testTopicPermissions\", TopicPermissionsArgs.builder()\n            .user(testUser.name())\n            .vhost(test.name())\n            .permissions(TopicPermissionsPermissionArgs.builder()\n                .exchange(\"amq.topic\")\n                .write(\".*\")\n                .read(\".*\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  test:\n    type: rabbitmq:VHost\n    properties:\n      name: test\n  testUser:\n    type: rabbitmq:User\n    name: test\n    properties:\n      name: mctest\n      password: foobar\n      tags:\n        - administrator\n  testTopicPermissions:\n    type: rabbitmq:TopicPermissions\n    name: test\n    properties:\n      user: ${testUser.name}\n      vhost: ${test.name}\n      permissions:\n        - exchange: amq.topic\n          write: .*\n          read: .*\n```\n<!--End PulumiCodeChooser -->\n\n## Import\n\nPermissions can be imported using the `id` which is composed of  `user@vhost`.\n\nE.g.\n\n```sh\n$ pulumi import rabbitmq:index/topicPermissions:TopicPermissions test user@vhost\n```\n\n",
      "properties": {
        "permissions": {
          "type": "array",
          "items": {
            "$ref": "#/types/rabbitmq:index%2FTopicPermissionsPermission:TopicPermissionsPermission"
          },
          "description": "The settings of the permissions. The structure is\ndescribed below.\n"
        },
        "user": {
          "type": "string",
          "description": "The user to apply the permissions to.\n"
        },
        "vhost": {
          "type": "string",
          "description": "The vhost to create the resource in.\n"
        }
      },
      "type": "object",
      "required": [
        "permissions",
        "user"
      ],
      "inputProperties": {
        "permissions": {
          "type": "array",
          "items": {
            "$ref": "#/types/rabbitmq:index%2FTopicPermissionsPermission:TopicPermissionsPermission"
          },
          "description": "The settings of the permissions. The structure is\ndescribed below.\n"
        },
        "user": {
          "type": "string",
          "description": "The user to apply the permissions to.\n",
          "willReplaceOnChanges": true
        },
        "vhost": {
          "type": "string",
          "description": "The vhost to create the resource in.\n",
          "willReplaceOnChanges": true
        }
      },
      "requiredInputs": [
        "permissions",
        "user"
      ],
      "stateInputs": {
        "description": "Input properties used for looking up and filtering TopicPermissions resources.\n",
        "properties": {
          "permissions": {
            "type": "array",
            "items": {
              "$ref": "#/types/rabbitmq:index%2FTopicPermissionsPermission:TopicPermissionsPermission"
            },
            "description": "The settings of the permissions. The structure is\ndescribed below.\n"
          },
          "user": {
            "type": "string",
            "description": "The user to apply the permissions to.\n",
            "willReplaceOnChanges": true
          },
          "vhost": {
            "type": "string",
            "description": "The vhost to create the resource in.\n",
            "willReplaceOnChanges": true
          }
        },
        "type": "object"
      }
    },
    "rabbitmq:index/user:User": {
      "description": "The ``rabbitmq.User`` resource creates and manages a user.\n\n> **Note:** All arguments including username and password will be stored in the raw state as plain-text.\n[Read more about sensitive data in state](https://www.terraform.io/docs/state/sensitive-data.html).\n\n## Example Usage\n\n<!--Start PulumiCodeChooser -->\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as rabbitmq from \"@pulumi/rabbitmq\";\n\nconst test = new rabbitmq.User(\"test\", {\n    name: \"mctest\",\n    password: \"foobar\",\n    tags: [\n        \"administrator\",\n        \"management\",\n    ],\n});\n```\n```python\nimport pulumi\nimport pulumi_rabbitmq as rabbitmq\n\ntest = rabbitmq.User(\"test\",\n    name=\"mctest\",\n    password=\"foobar\",\n    tags=[\n        \"administrator\",\n        \"management\",\n    ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing RabbitMQ = Pulumi.RabbitMQ;\n\nreturn await Deployment.RunAsync(() => \n{\n    var test = new RabbitMQ.User(\"test\", new()\n    {\n        Name = \"mctest\",\n        Password = \"foobar\",\n        Tags = new[]\n        {\n            \"administrator\",\n            \"management\",\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-rabbitmq/sdk/v3/go/rabbitmq\"\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 := rabbitmq.NewUser(ctx, \"test\", &rabbitmq.UserArgs{\n\t\t\tName:     pulumi.String(\"mctest\"),\n\t\t\tPassword: pulumi.String(\"foobar\"),\n\t\t\tTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"administrator\"),\n\t\t\t\tpulumi.String(\"management\"),\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.rabbitmq.User;\nimport com.pulumi.rabbitmq.UserArgs;\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 test = new User(\"test\", UserArgs.builder()\n            .name(\"mctest\")\n            .password(\"foobar\")\n            .tags(            \n                \"administrator\",\n                \"management\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  test:\n    type: rabbitmq:User\n    properties:\n      name: mctest\n      password: foobar\n      tags:\n        - administrator\n        - management\n```\n<!--End PulumiCodeChooser -->\n\n## Import\n\nUsers can be imported using the `name`, e.g.\n\n```sh\n$ pulumi import rabbitmq:index/user:User test mctest\n```\n\n",
      "properties": {
        "name": {
          "type": "string",
          "description": "The name of the user.\n"
        },
        "password": {
          "type": "string",
          "description": "The password of the user. The value of this argument\nis plain-text so make sure to secure where this is defined.\n",
          "secret": true
        },
        "tags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Which permission model to apply to the user. Valid\noptions are: management, policymaker, monitoring, and administrator.\n"
        }
      },
      "type": "object",
      "required": [
        "name",
        "password"
      ],
      "inputProperties": {
        "name": {
          "type": "string",
          "description": "The name of the user.\n",
          "willReplaceOnChanges": true
        },
        "password": {
          "type": "string",
          "description": "The password of the user. The value of this argument\nis plain-text so make sure to secure where this is defined.\n",
          "secret": true
        },
        "tags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Which permission model to apply to the user. Valid\noptions are: management, policymaker, monitoring, and administrator.\n"
        }
      },
      "requiredInputs": [
        "password"
      ],
      "stateInputs": {
        "description": "Input properties used for looking up and filtering User resources.\n",
        "properties": {
          "name": {
            "type": "string",
            "description": "The name of the user.\n",
            "willReplaceOnChanges": true
          },
          "password": {
            "type": "string",
            "description": "The password of the user. The value of this argument\nis plain-text so make sure to secure where this is defined.\n",
            "secret": true
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Which permission model to apply to the user. Valid\noptions are: management, policymaker, monitoring, and administrator.\n"
          }
        },
        "type": "object"
      }
    },
    "rabbitmq:index/vHost:VHost": {
      "description": "The ``rabbitmq.VHost`` resource creates and manages a vhost.\n\n## Example Usage\n\n<!--Start PulumiCodeChooser -->\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as rabbitmq from \"@pulumi/rabbitmq\";\n\nconst myVhost = new rabbitmq.VHost(\"my_vhost\", {\n    name: \"my_vhost\",\n    description: \"My Vhost\",\n    defaultQueueType: \"quorum\",\n    maxConnections: \"200\",\n    maxQueues: \"100\",\n    tracing: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_rabbitmq as rabbitmq\n\nmy_vhost = rabbitmq.VHost(\"my_vhost\",\n    name=\"my_vhost\",\n    description=\"My Vhost\",\n    default_queue_type=\"quorum\",\n    max_connections=\"200\",\n    max_queues=\"100\",\n    tracing=True)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing RabbitMQ = Pulumi.RabbitMQ;\n\nreturn await Deployment.RunAsync(() => \n{\n    var myVhost = new RabbitMQ.VHost(\"my_vhost\", new()\n    {\n        Name = \"my_vhost\",\n        Description = \"My Vhost\",\n        DefaultQueueType = \"quorum\",\n        MaxConnections = \"200\",\n        MaxQueues = \"100\",\n        Tracing = true,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-rabbitmq/sdk/v3/go/rabbitmq\"\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 := rabbitmq.NewVHost(ctx, \"my_vhost\", &rabbitmq.VHostArgs{\n\t\t\tName:             pulumi.String(\"my_vhost\"),\n\t\t\tDescription:      pulumi.String(\"My Vhost\"),\n\t\t\tDefaultQueueType: pulumi.String(\"quorum\"),\n\t\t\tMaxConnections:   pulumi.String(\"200\"),\n\t\t\tMaxQueues:        pulumi.String(\"100\"),\n\t\t\tTracing:          pulumi.Bool(true),\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.rabbitmq.VHost;\nimport com.pulumi.rabbitmq.VHostArgs;\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 myVhost = new VHost(\"myVhost\", VHostArgs.builder()\n            .name(\"my_vhost\")\n            .description(\"My Vhost\")\n            .defaultQueueType(\"quorum\")\n            .maxConnections(\"200\")\n            .maxQueues(\"100\")\n            .tracing(true)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  myVhost:\n    type: rabbitmq:VHost\n    name: my_vhost\n    properties:\n      name: my_vhost\n      description: My Vhost\n      defaultQueueType: quorum\n      maxConnections: '200'\n      maxQueues: 100\n      tracing: true\n```\n<!--End PulumiCodeChooser -->\n\n## Import\n\nVhosts can be imported using the `name`, e.g.\n\n```sh\n$ pulumi import rabbitmq:index/vHost:VHost my_vhost my_vhost\n```\n\n",
      "properties": {
        "defaultQueueType": {
          "type": "string",
          "description": "default queue type for new queues\n"
        },
        "description": {
          "type": "string",
          "description": "A friendly description.\n"
        },
        "maxConnections": {
          "type": "string",
          "description": "Maximum number of concurrent client connections to the vhost\n"
        },
        "maxQueues": {
          "type": "string",
          "description": "Maximum number of queues that can be created on the vhost\n"
        },
        "name": {
          "type": "string",
          "description": "The name of the vhost.\n"
        },
        "tracing": {
          "type": "boolean"
        }
      },
      "type": "object",
      "required": [
        "name"
      ],
      "inputProperties": {
        "defaultQueueType": {
          "type": "string",
          "description": "default queue type for new queues\n"
        },
        "description": {
          "type": "string",
          "description": "A friendly description.\n"
        },
        "maxConnections": {
          "type": "string",
          "description": "Maximum number of concurrent client connections to the vhost\n"
        },
        "maxQueues": {
          "type": "string",
          "description": "Maximum number of queues that can be created on the vhost\n"
        },
        "name": {
          "type": "string",
          "description": "The name of the vhost.\n",
          "willReplaceOnChanges": true
        },
        "tracing": {
          "type": "boolean"
        }
      },
      "stateInputs": {
        "description": "Input properties used for looking up and filtering VHost resources.\n",
        "properties": {
          "defaultQueueType": {
            "type": "string",
            "description": "default queue type for new queues\n"
          },
          "description": {
            "type": "string",
            "description": "A friendly description.\n"
          },
          "maxConnections": {
            "type": "string",
            "description": "Maximum number of concurrent client connections to the vhost\n"
          },
          "maxQueues": {
            "type": "string",
            "description": "Maximum number of queues that can be created on the vhost\n"
          },
          "name": {
            "type": "string",
            "description": "The name of the vhost.\n",
            "willReplaceOnChanges": true
          },
          "tracing": {
            "type": "boolean"
          }
        },
        "type": "object"
      }
    }
  },
  "functions": {
    "pulumi:providers:rabbitmq/terraformConfig": {
      "description": "This function returns a Terraform config object with terraform-namecased keys,to be used with the Terraform Module Provider.",
      "inputs": {
        "properties": {
          "__self__": {
            "$ref": "#/resources/pulumi:providers:rabbitmq"
          }
        },
        "type": "object",
        "required": [
          "__self__"
        ]
      },
      "outputs": {
        "properties": {
          "result": {
            "additionalProperties": {
              "$ref": "pulumi.json#/Any"
            },
            "type": "object"
          }
        },
        "required": [
          "result"
        ],
        "type": "object"
      }
    },
    "rabbitmq:index/getDefaultUser:getDefaultUser": {
      "inputs": {
        "description": "A collection of arguments for invoking getDefaultUser.\n",
        "properties": {
          "username": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "outputs": {
        "description": "A collection of values returned by getDefaultUser.\n",
        "properties": {
          "id": {
            "description": "The provider-assigned unique ID for this managed resource.",
            "type": "string"
          },
          "username": {
            "type": "string"
          }
        },
        "required": [
          "id"
        ],
        "type": "object"
      }
    },
    "rabbitmq:index/getExchange:getExchange": {
      "inputs": {
        "description": "A collection of arguments for invoking getExchange.\n",
        "properties": {
          "name": {
            "type": "string"
          },
          "vhost": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "name"
        ]
      },
      "outputs": {
        "description": "A collection of values returned by getExchange.\n",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "settings": {
            "items": {
              "$ref": "#/types/rabbitmq:index%2FgetExchangeSetting:getExchangeSetting"
            },
            "type": "array"
          },
          "vhost": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "name",
          "settings"
        ],
        "type": "object"
      }
    },
    "rabbitmq:index/getUser:getUser": {
      "inputs": {
        "description": "A collection of arguments for invoking getUser.\n",
        "properties": {
          "name": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "name"
        ]
      },
      "outputs": {
        "description": "A collection of values returned by getUser.\n",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "tags": {
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "id",
          "name",
          "tags"
        ],
        "type": "object"
      }
    },
    "rabbitmq:index/getVHost:getVHost": {
      "inputs": {
        "description": "A collection of arguments for invoking getVHost.\n",
        "properties": {
          "name": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "name"
        ]
      },
      "outputs": {
        "description": "A collection of values returned by getVHost.\n",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "name"
        ],
        "type": "object"
      }
    }
  }
}
