{"name":"kong","version":"4.5.12","description":"A Pulumi package for creating and managing Kong resources.","keywords":["pulumi","kong"],"homepage":"https://pulumi.io","license":"Apache-2.0","attribution":"This Pulumi package is based on the [`kong` Terraform Provider](https://github.com/kevholditch/terraform-provider-kong).","repository":"https://github.com/pulumi/pulumi-kong","meta":{"moduleFormat":"(.*)(?:/[^/]*)"},"language":{"csharp":{"packageReferences":{"Pulumi":"3.*"},"namespaces":{"kong":"Kong"},"compatibility":"tfbridge20","respectSchemaVersion":true},"go":{"importBasePath":"github.com/pulumi/pulumi-kong/sdk/v4/go/kong","generateResourceContainerTypes":true,"generateExtraInputTypes":true,"respectSchemaVersion":true},"nodejs":{"packageDescription":"A Pulumi package for creating and managing Kong resources.","readme":"\u003e This provider is a derived work of the [Terraform Provider](https://github.com/kevholditch/terraform-provider-kong)\n\u003e distributed under [MIT](https://mit-license.org/). If you encounter a bug or missing feature,\n\u003e first check the [`pulumi-kong` repo](https://github.com/pulumi/pulumi-kong/issues); however, if that doesn't turn up anything,\n\u003e please consult the source [`terraform-provider-kong` repo](https://github.com/kevholditch/terraform-provider-kong/issues).","devDependencies":{"@types/mime":"^2.0.0","@types/node":"^10.0.0"},"compatibility":"tfbridge20","disableUnionOutputTypes":true,"respectSchemaVersion":true},"python":{"readme":"\u003e This provider is a derived work of the [Terraform Provider](https://github.com/kevholditch/terraform-provider-kong)\n\u003e distributed under [MIT](https://mit-license.org/). If you encounter a bug or missing feature,\n\u003e first check the [`pulumi-kong` repo](https://github.com/pulumi/pulumi-kong/issues); however, if that doesn't turn up anything,\n\u003e please consult the source [`terraform-provider-kong` repo](https://github.com/kevholditch/terraform-provider-kong/issues).","compatibility":"tfbridge20","respectSchemaVersion":true,"pyproject":{"enabled":true}}},"config":{"variables":{"kongAdminPassword":{"type":"string","description":"An basic auth password for kong admin"},"kongAdminToken":{"type":"string","description":"API key for the kong api (Enterprise Edition)"},"kongAdminUri":{"type":"string","description":"The address of the kong admin url e.g. http://localhost:8001"},"kongAdminUsername":{"type":"string","description":"An basic auth user for kong admin"},"kongApiKey":{"type":"string","description":"API key for the kong api (if you have locked it down)"},"kongWorkspace":{"type":"string","description":"Workspace context (Enterprise Edition)"},"strictPluginsMatch":{"type":"boolean","description":"Should plugins \u003cspan pulumi-lang-nodejs=\"`configJson`\" pulumi-lang-dotnet=\"`ConfigJson`\" pulumi-lang-go=\"`configJson`\" pulumi-lang-python=\"`config_json`\" pulumi-lang-yaml=\"`configJson`\" pulumi-lang-java=\"`configJson`\"\u003e`config_json`\u003c/span\u003e field strictly match plugin configuration","defaultInfo":{"environment":["STRICT_PLUGINS_MATCH"]}},"tlsSkipVerify":{"type":"boolean","description":"Whether to skip tls verify for https kong api endpoint using self signed or untrusted certs","default":false,"defaultInfo":{"environment":["TLS_SKIP_VERIFY"]}}},"defaults":["kongAdminUri"]},"types":{"kong:index/RouteDestination:RouteDestination":{"properties":{"ip":{"type":"string"},"port":{"type":"integer"}},"type":"object"},"kong:index/RouteHeader:RouteHeader":{"properties":{"name":{"type":"string","description":"The name of the route\n"},"values":{"type":"array","items":{"type":"string"}}},"type":"object","required":["name","values"]},"kong:index/RouteSource:RouteSource":{"properties":{"ip":{"type":"string"},"port":{"type":"integer"}},"type":"object"},"kong:index/UpstreamHealthchecks:UpstreamHealthchecks":{"properties":{"active":{"$ref":"#/types/kong:index/UpstreamHealthchecksActive:UpstreamHealthchecksActive"},"passive":{"$ref":"#/types/kong:index/UpstreamHealthchecksPassive:UpstreamHealthchecksPassive"}},"type":"object","language":{"nodejs":{"requiredOutputs":["active","passive"]}}},"kong:index/UpstreamHealthchecksActive:UpstreamHealthchecksActive":{"properties":{"concurrency":{"type":"integer"},"healthy":{"$ref":"#/types/kong:index/UpstreamHealthchecksActiveHealthy:UpstreamHealthchecksActiveHealthy"},"httpPath":{"type":"string"},"httpsSni":{"type":"string"},"httpsVerifyCertificate":{"type":"boolean"},"timeout":{"type":"integer"},"type":{"type":"string"},"unhealthy":{"$ref":"#/types/kong:index/UpstreamHealthchecksActiveUnhealthy:UpstreamHealthchecksActiveUnhealthy"}},"type":"object","language":{"nodejs":{"requiredOutputs":["healthy","unhealthy"]}}},"kong:index/UpstreamHealthchecksActiveHealthy:UpstreamHealthchecksActiveHealthy":{"properties":{"httpStatuses":{"type":"array","items":{"type":"integer"}},"interval":{"type":"integer"},"successes":{"type":"integer"}},"type":"object","language":{"nodejs":{"requiredOutputs":["httpStatuses","interval","successes"]}}},"kong:index/UpstreamHealthchecksActiveUnhealthy:UpstreamHealthchecksActiveUnhealthy":{"properties":{"httpFailures":{"type":"integer"},"httpStatuses":{"type":"array","items":{"type":"integer"}},"interval":{"type":"integer"},"tcpFailures":{"type":"integer"},"timeouts":{"type":"integer"}},"type":"object","language":{"nodejs":{"requiredOutputs":["httpFailures","httpStatuses","interval","tcpFailures","timeouts"]}}},"kong:index/UpstreamHealthchecksPassive:UpstreamHealthchecksPassive":{"properties":{"healthy":{"$ref":"#/types/kong:index/UpstreamHealthchecksPassiveHealthy:UpstreamHealthchecksPassiveHealthy"},"type":{"type":"string"},"unhealthy":{"$ref":"#/types/kong:index/UpstreamHealthchecksPassiveUnhealthy:UpstreamHealthchecksPassiveUnhealthy"}},"type":"object","language":{"nodejs":{"requiredOutputs":["healthy","unhealthy"]}}},"kong:index/UpstreamHealthchecksPassiveHealthy:UpstreamHealthchecksPassiveHealthy":{"properties":{"httpStatuses":{"type":"array","items":{"type":"integer"}},"successes":{"type":"integer"}},"type":"object"},"kong:index/UpstreamHealthchecksPassiveUnhealthy:UpstreamHealthchecksPassiveUnhealthy":{"properties":{"httpFailures":{"type":"integer"},"httpStatuses":{"type":"array","items":{"type":"integer"}},"tcpFailures":{"type":"integer"},"timeouts":{"type":"integer"}},"type":"object"}},"provider":{"description":"The provider type for the kong 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":{"kongAdminPassword":{"type":"string","description":"An basic auth password for kong admin"},"kongAdminToken":{"type":"string","description":"API key for the kong api (Enterprise Edition)"},"kongAdminUri":{"type":"string","description":"The address of the kong admin url e.g. http://localhost:8001"},"kongAdminUsername":{"type":"string","description":"An basic auth user for kong admin"},"kongApiKey":{"type":"string","description":"API key for the kong api (if you have locked it down)"},"kongWorkspace":{"type":"string","description":"Workspace context (Enterprise Edition)"},"strictPluginsMatch":{"type":"boolean","description":"Should plugins \u003cspan pulumi-lang-nodejs=\"`configJson`\" pulumi-lang-dotnet=\"`ConfigJson`\" pulumi-lang-go=\"`configJson`\" pulumi-lang-python=\"`config_json`\" pulumi-lang-yaml=\"`configJson`\" pulumi-lang-java=\"`configJson`\"\u003e`config_json`\u003c/span\u003e field strictly match plugin configuration"},"tlsSkipVerify":{"type":"boolean","description":"Whether to skip tls verify for https kong api endpoint using self signed or untrusted certs"}},"inputProperties":{"kongAdminPassword":{"type":"string","description":"An basic auth password for kong admin"},"kongAdminToken":{"type":"string","description":"API key for the kong api (Enterprise Edition)"},"kongAdminUri":{"type":"string","description":"The address of the kong admin url e.g. http://localhost:8001"},"kongAdminUsername":{"type":"string","description":"An basic auth user for kong admin"},"kongApiKey":{"type":"string","description":"API key for the kong api (if you have locked it down)"},"kongWorkspace":{"type":"string","description":"Workspace context (Enterprise Edition)"},"strictPluginsMatch":{"type":"boolean","description":"Should plugins \u003cspan pulumi-lang-nodejs=\"`configJson`\" pulumi-lang-dotnet=\"`ConfigJson`\" pulumi-lang-go=\"`configJson`\" pulumi-lang-python=\"`config_json`\" pulumi-lang-yaml=\"`configJson`\" pulumi-lang-java=\"`configJson`\"\u003e`config_json`\u003c/span\u003e field strictly match plugin configuration","defaultInfo":{"environment":["STRICT_PLUGINS_MATCH"]}},"tlsSkipVerify":{"type":"boolean","description":"Whether to skip tls verify for https kong api endpoint using self signed or untrusted certs","default":false,"defaultInfo":{"environment":["TLS_SKIP_VERIFY"]}}},"methods":{"terraformConfig":"pulumi:providers:kong/terraformConfig"}},"resources":{"kong:index/certificate:Certificate":{"description":"## #\u003cspan pulumi-lang-nodejs=\" kong.Certificate\n\" pulumi-lang-dotnet=\" kong.Certificate\n\" pulumi-lang-go=\" Certificate\n\" pulumi-lang-python=\" Certificate\n\" pulumi-lang-yaml=\" kong.Certificate\n\" pulumi-lang-java=\" kong.Certificate\n\"\u003e kong.Certificate\n\u003c/span\u003e\nFor more information on creating certificates in Kong [see their documentation](https://docs.konghq.com/gateway-oss/2.5.x/admin-api/#certificate-object)\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as kong from \"@pulumi/kong\";\n\nconst certificate = new kong.Certificate(\"certificate\", {\n    certificate: \"public key --- 123 ----\",\n    privateKey: \"private key --- 456 ----\",\n    snis: [\n        \"foo.com\",\n        \"bar.com\",\n    ],\n    tags: [\"myTag\"],\n});\n```\n```python\nimport pulumi\nimport pulumi_kong as kong\n\ncertificate = kong.Certificate(\"certificate\",\n    certificate=\"public key --- 123 ----\",\n    private_key=\"private key --- 456 ----\",\n    snis=[\n        \"foo.com\",\n        \"bar.com\",\n    ],\n    tags=[\"myTag\"])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Kong = Pulumi.Kong;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var certificate = new Kong.Certificate(\"certificate\", new()\n    {\n        Cert = \"public key --- 123 ----\",\n        PrivateKey = \"private key --- 456 ----\",\n        Snis = new[]\n        {\n            \"foo.com\",\n            \"bar.com\",\n        },\n        Tags = new[]\n        {\n            \"myTag\",\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-kong/sdk/v4/go/kong\"\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 := kong.NewCertificate(ctx, \"certificate\", \u0026kong.CertificateArgs{\n\t\t\tCertificate: pulumi.String(\"public key --- 123 ----\"),\n\t\t\tPrivateKey:  pulumi.String(\"private key --- 456 ----\"),\n\t\t\tSnis: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"foo.com\"),\n\t\t\t\tpulumi.String(\"bar.com\"),\n\t\t\t},\n\t\t\tTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"myTag\"),\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.kong.Certificate;\nimport com.pulumi.kong.CertificateArgs;\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 certificate = new Certificate(\"certificate\", CertificateArgs.builder()\n            .certificate(\"public key --- 123 ----\")\n            .privateKey(\"private key --- 456 ----\")\n            .snis(            \n                \"foo.com\",\n                \"bar.com\")\n            .tags(\"myTag\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  certificate:\n    type: kong:Certificate\n    properties:\n      certificate: public key --- 123 ----\n      privateKey: private key --- 456 ----\n      snis:\n        - foo.com\n        - bar.com\n      tags:\n        - myTag\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nTo import a certificate:\n\n```sh\n$ pulumi import kong:index/certificate:Certificate \u003ccertifcate_identifier\u003e \u003ccertificate_id\u003e\n```\n\n","properties":{"certificate":{"type":"string","description":"should be the public key of your certificate it is mapped to the `Cert` parameter on the Kong API.\n","language":{"csharp":{"name":"Cert"}}},"privateKey":{"type":"string","description":"should be the private key of your certificate it is mapped to the `Key` parameter on the Kong API.\n","secret":true},"snis":{"type":"array","items":{"type":"string"},"description":"A list of strings associated with the Certificate for grouping and filtering\n"},"tags":{"type":"array","items":{"type":"string"}}},"required":["certificate"],"inputProperties":{"certificate":{"type":"string","description":"should be the public key of your certificate it is mapped to the `Cert` parameter on the Kong API.\n","language":{"csharp":{"name":"Cert"}}},"privateKey":{"type":"string","description":"should be the private key of your certificate it is mapped to the `Key` parameter on the Kong API.\n","secret":true},"snis":{"type":"array","items":{"type":"string"},"description":"A list of strings associated with the Certificate for grouping and filtering\n"},"tags":{"type":"array","items":{"type":"string"}}},"requiredInputs":["certificate"],"stateInputs":{"description":"Input properties used for looking up and filtering Certificate resources.\n","properties":{"certificate":{"type":"string","description":"should be the public key of your certificate it is mapped to the `Cert` parameter on the Kong API.\n","language":{"csharp":{"name":"Cert"}}},"privateKey":{"type":"string","description":"should be the private key of your certificate it is mapped to the `Key` parameter on the Kong API.\n","secret":true},"snis":{"type":"array","items":{"type":"string"},"description":"A list of strings associated with the Certificate for grouping and filtering\n"},"tags":{"type":"array","items":{"type":"string"}}},"type":"object"}},"kong:index/consumer:Consumer":{"description":"## #\u003cspan pulumi-lang-nodejs=\" kong.Consumer\n\" pulumi-lang-dotnet=\" kong.Consumer\n\" pulumi-lang-go=\" Consumer\n\" pulumi-lang-python=\" Consumer\n\" pulumi-lang-yaml=\" kong.Consumer\n\" pulumi-lang-java=\" kong.Consumer\n\"\u003e kong.Consumer\n\u003c/span\u003e\nThe consumer resource maps directly onto the json for creating a Consumer in Kong.  For more information on the parameters [see the Kong Consumer create documentation](https://docs.konghq.com/gateway-oss/2.5.x/admin-api/#consumer-object).\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as kong from \"@pulumi/kong\";\n\nconst consumer = new kong.Consumer(\"consumer\", {\n    username: \"User1\",\n    customId: \"123\",\n    tags: [\"mySuperTag\"],\n});\n```\n```python\nimport pulumi\nimport pulumi_kong as kong\n\nconsumer = kong.Consumer(\"consumer\",\n    username=\"User1\",\n    custom_id=\"123\",\n    tags=[\"mySuperTag\"])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Kong = Pulumi.Kong;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var consumer = new Kong.Consumer(\"consumer\", new()\n    {\n        Username = \"User1\",\n        CustomId = \"123\",\n        Tags = new[]\n        {\n            \"mySuperTag\",\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-kong/sdk/v4/go/kong\"\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 := kong.NewConsumer(ctx, \"consumer\", \u0026kong.ConsumerArgs{\n\t\t\tUsername: pulumi.String(\"User1\"),\n\t\t\tCustomId: pulumi.String(\"123\"),\n\t\t\tTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"mySuperTag\"),\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.kong.Consumer;\nimport com.pulumi.kong.ConsumerArgs;\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 consumer = new Consumer(\"consumer\", ConsumerArgs.builder()\n            .username(\"User1\")\n            .customId(\"123\")\n            .tags(\"mySuperTag\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  consumer:\n    type: kong:Consumer\n    properties:\n      username: User1\n      customId: '123'\n      tags:\n        - mySuperTag\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nTo import a consumer:\n\n```sh\n$ pulumi import kong:index/consumer:Consumer \u003cconsumer_identifier\u003e \u003cconsumer_id\u003e\n```\n\n","properties":{"customId":{"type":"string","description":"A custom id for the consumer, you must set either the username or custom_id\n"},"tags":{"type":"array","items":{"type":"string"},"description":"A list of strings associated with the Consumer for grouping and filtering\n"},"username":{"type":"string","description":"The username to use, you must set either the username or custom_id\n"}},"inputProperties":{"customId":{"type":"string","description":"A custom id for the consumer, you must set either the username or custom_id\n"},"tags":{"type":"array","items":{"type":"string"},"description":"A list of strings associated with the Consumer for grouping and filtering\n"},"username":{"type":"string","description":"The username to use, you must set either the username or custom_id\n"}},"stateInputs":{"description":"Input properties used for looking up and filtering Consumer resources.\n","properties":{"customId":{"type":"string","description":"A custom id for the consumer, you must set either the username or custom_id\n"},"tags":{"type":"array","items":{"type":"string"},"description":"A list of strings associated with the Consumer for grouping and filtering\n"},"username":{"type":"string","description":"The username to use, you must set either the username or custom_id\n"}},"type":"object"}},"kong:index/consumerAcl:ConsumerAcl":{"description":"## #\u003cspan pulumi-lang-nodejs=\" kong.ConsumerAcl\n\" pulumi-lang-dotnet=\" kong.ConsumerAcl\n\" pulumi-lang-go=\" ConsumerAcl\n\" pulumi-lang-python=\" ConsumerAcl\n\" pulumi-lang-yaml=\" kong.ConsumerAcl\n\" pulumi-lang-java=\" kong.ConsumerAcl\n\"\u003e kong.ConsumerAcl\n\u003c/span\u003e\nConsumer ACL is a resource that allows you to configure the acl plugin for a consumer.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as kong from \"@pulumi/kong\";\n\nconst myConsumer = new kong.Consumer(\"my_consumer\", {\n    username: \"User1\",\n    customId: \"123\",\n});\nconst aclPlugin = new kong.Plugin(\"acl_plugin\", {\n    name: \"acl\",\n    configJson: `\\\\t{\n\\\\t\\\\t\\\\\"allow\\\\\": [\\\\\"group1\\\\\", \\\\\"group2\\\\\"]\n\\\\t}\n`,\n});\nconst consumerAcl = new kong.ConsumerAcl(\"consumer_acl\", {\n    consumerId: myConsumer.id,\n    group: \"group2\",\n    tags: [\n        \"myTag\",\n        \"otherTag\",\n    ],\n});\n```\n```python\nimport pulumi\nimport pulumi_kong as kong\n\nmy_consumer = kong.Consumer(\"my_consumer\",\n    username=\"User1\",\n    custom_id=\"123\")\nacl_plugin = kong.Plugin(\"acl_plugin\",\n    name=\"acl\",\n    config_json=\"\"\"\\t{\n\\t\\t\\\"allow\\\": [\\\"group1\\\", \\\"group2\\\"]\n\\t}\n\"\"\")\nconsumer_acl = kong.ConsumerAcl(\"consumer_acl\",\n    consumer_id=my_consumer.id,\n    group=\"group2\",\n    tags=[\n        \"myTag\",\n        \"otherTag\",\n    ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Kong = Pulumi.Kong;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var myConsumer = new Kong.Consumer(\"my_consumer\", new()\n    {\n        Username = \"User1\",\n        CustomId = \"123\",\n    });\n\n    var aclPlugin = new Kong.Plugin(\"acl_plugin\", new()\n    {\n        Name = \"acl\",\n        ConfigJson = @\"\\t{\n\\t\\t\\\"\"allow\\\"\": [\\\"\"group1\\\"\", \\\"\"group2\\\"\"]\n\\t}\n\",\n    });\n\n    var consumerAcl = new Kong.ConsumerAcl(\"consumer_acl\", new()\n    {\n        ConsumerId = myConsumer.Id,\n        Group = \"group2\",\n        Tags = new[]\n        {\n            \"myTag\",\n            \"otherTag\",\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-kong/sdk/v4/go/kong\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmyConsumer, err := kong.NewConsumer(ctx, \"my_consumer\", \u0026kong.ConsumerArgs{\n\t\t\tUsername: pulumi.String(\"User1\"),\n\t\t\tCustomId: pulumi.String(\"123\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = kong.NewPlugin(ctx, \"acl_plugin\", \u0026kong.PluginArgs{\n\t\t\tName:       pulumi.String(\"acl\"),\n\t\t\tConfigJson: pulumi.String(\"\\\\t{\\n\\\\t\\\\t\\\\\\\"allow\\\\\\\": [\\\\\\\"group1\\\\\\\", \\\\\\\"group2\\\\\\\"]\\n\\\\t}\\n\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = kong.NewConsumerAcl(ctx, \"consumer_acl\", \u0026kong.ConsumerAclArgs{\n\t\t\tConsumerId: myConsumer.ID(),\n\t\t\tGroup:      pulumi.String(\"group2\"),\n\t\t\tTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"myTag\"),\n\t\t\t\tpulumi.String(\"otherTag\"),\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.kong.Consumer;\nimport com.pulumi.kong.ConsumerArgs;\nimport com.pulumi.kong.Plugin;\nimport com.pulumi.kong.PluginArgs;\nimport com.pulumi.kong.ConsumerAcl;\nimport com.pulumi.kong.ConsumerAclArgs;\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 myConsumer = new Consumer(\"myConsumer\", ConsumerArgs.builder()\n            .username(\"User1\")\n            .customId(\"123\")\n            .build());\n\n        var aclPlugin = new Plugin(\"aclPlugin\", PluginArgs.builder()\n            .name(\"acl\")\n            .configJson(\"\"\"\n\\t{\n\\t\\t\\\"allow\\\": [\\\"group1\\\", \\\"group2\\\"]\n\\t}\n            \"\"\")\n            .build());\n\n        var consumerAcl = new ConsumerAcl(\"consumerAcl\", ConsumerAclArgs.builder()\n            .consumerId(myConsumer.id())\n            .group(\"group2\")\n            .tags(            \n                \"myTag\",\n                \"otherTag\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  myConsumer:\n    type: kong:Consumer\n    name: my_consumer\n    properties:\n      username: User1\n      customId: '123'\n  aclPlugin:\n    type: kong:Plugin\n    name: acl_plugin\n    properties:\n      name: acl\n      configJson: |\n        \\t{\n        \\t\\t\\\"allow\\\": [\\\"group1\\\", \\\"group2\\\"]\n        \\t}\n  consumerAcl:\n    type: kong:ConsumerAcl\n    name: consumer_acl\n    properties:\n      consumerId: ${myConsumer.id}\n      group: group2\n      tags:\n        - myTag\n        - otherTag\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","properties":{"consumerId":{"type":"string","description":"the id of the consumer to be configured\n"},"group":{"type":"string","description":"the acl group\n"},"tags":{"type":"array","items":{"type":"string"},"description":"A list of strings associated with the consumer acl for grouping and filtering\n"}},"required":["consumerId","group"],"inputProperties":{"consumerId":{"type":"string","description":"the id of the consumer to be configured\n"},"group":{"type":"string","description":"the acl group\n"},"tags":{"type":"array","items":{"type":"string"},"description":"A list of strings associated with the consumer acl for grouping and filtering\n"}},"requiredInputs":["consumerId","group"],"stateInputs":{"description":"Input properties used for looking up and filtering ConsumerAcl resources.\n","properties":{"consumerId":{"type":"string","description":"the id of the consumer to be configured\n"},"group":{"type":"string","description":"the acl group\n"},"tags":{"type":"array","items":{"type":"string"},"description":"A list of strings associated with the consumer acl for grouping and filtering\n"}},"type":"object"}},"kong:index/consumerBasicAuth:ConsumerBasicAuth":{"description":"## #\u003cspan pulumi-lang-nodejs=\" kong.ConsumerBasicAuth\n\" pulumi-lang-dotnet=\" kong.ConsumerBasicAuth\n\" pulumi-lang-go=\" ConsumerBasicAuth\n\" pulumi-lang-python=\" ConsumerBasicAuth\n\" pulumi-lang-yaml=\" kong.ConsumerBasicAuth\n\" pulumi-lang-java=\" kong.ConsumerBasicAuth\n\"\u003e kong.ConsumerBasicAuth\n\u003c/span\u003e\nConsumer basic auth is a resource that allows you to configure the basic auth plugin for a consumer.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as kong from \"@pulumi/kong\";\n\nconst myConsumer = new kong.Consumer(\"my_consumer\", {\n    username: \"User1\",\n    customId: \"123\",\n});\nconst basicAuthPlugin = new kong.Plugin(\"basic_auth_plugin\", {name: \"basic-auth\"});\nconst consumerBasicAuth = new kong.ConsumerBasicAuth(\"consumer_basic_auth\", {\n    consumerId: myConsumer.id,\n    username: \"foo_updated\",\n    password: \"bar_updated\",\n    tags: [\n        \"myTag\",\n        \"anotherTag\",\n    ],\n});\n```\n```python\nimport pulumi\nimport pulumi_kong as kong\n\nmy_consumer = kong.Consumer(\"my_consumer\",\n    username=\"User1\",\n    custom_id=\"123\")\nbasic_auth_plugin = kong.Plugin(\"basic_auth_plugin\", name=\"basic-auth\")\nconsumer_basic_auth = kong.ConsumerBasicAuth(\"consumer_basic_auth\",\n    consumer_id=my_consumer.id,\n    username=\"foo_updated\",\n    password=\"bar_updated\",\n    tags=[\n        \"myTag\",\n        \"anotherTag\",\n    ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Kong = Pulumi.Kong;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var myConsumer = new Kong.Consumer(\"my_consumer\", new()\n    {\n        Username = \"User1\",\n        CustomId = \"123\",\n    });\n\n    var basicAuthPlugin = new Kong.Plugin(\"basic_auth_plugin\", new()\n    {\n        Name = \"basic-auth\",\n    });\n\n    var consumerBasicAuth = new Kong.ConsumerBasicAuth(\"consumer_basic_auth\", new()\n    {\n        ConsumerId = myConsumer.Id,\n        Username = \"foo_updated\",\n        Password = \"bar_updated\",\n        Tags = new[]\n        {\n            \"myTag\",\n            \"anotherTag\",\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-kong/sdk/v4/go/kong\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmyConsumer, err := kong.NewConsumer(ctx, \"my_consumer\", \u0026kong.ConsumerArgs{\n\t\t\tUsername: pulumi.String(\"User1\"),\n\t\t\tCustomId: pulumi.String(\"123\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = kong.NewPlugin(ctx, \"basic_auth_plugin\", \u0026kong.PluginArgs{\n\t\t\tName: pulumi.String(\"basic-auth\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = kong.NewConsumerBasicAuth(ctx, \"consumer_basic_auth\", \u0026kong.ConsumerBasicAuthArgs{\n\t\t\tConsumerId: myConsumer.ID(),\n\t\t\tUsername:   pulumi.String(\"foo_updated\"),\n\t\t\tPassword:   pulumi.String(\"bar_updated\"),\n\t\t\tTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"myTag\"),\n\t\t\t\tpulumi.String(\"anotherTag\"),\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.kong.Consumer;\nimport com.pulumi.kong.ConsumerArgs;\nimport com.pulumi.kong.Plugin;\nimport com.pulumi.kong.PluginArgs;\nimport com.pulumi.kong.ConsumerBasicAuth;\nimport com.pulumi.kong.ConsumerBasicAuthArgs;\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 myConsumer = new Consumer(\"myConsumer\", ConsumerArgs.builder()\n            .username(\"User1\")\n            .customId(\"123\")\n            .build());\n\n        var basicAuthPlugin = new Plugin(\"basicAuthPlugin\", PluginArgs.builder()\n            .name(\"basic-auth\")\n            .build());\n\n        var consumerBasicAuth = new ConsumerBasicAuth(\"consumerBasicAuth\", ConsumerBasicAuthArgs.builder()\n            .consumerId(myConsumer.id())\n            .username(\"foo_updated\")\n            .password(\"bar_updated\")\n            .tags(            \n                \"myTag\",\n                \"anotherTag\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  myConsumer:\n    type: kong:Consumer\n    name: my_consumer\n    properties:\n      username: User1\n      customId: '123'\n  basicAuthPlugin:\n    type: kong:Plugin\n    name: basic_auth_plugin\n    properties:\n      name: basic-auth\n  consumerBasicAuth:\n    type: kong:ConsumerBasicAuth\n    name: consumer_basic_auth\n    properties:\n      consumerId: ${myConsumer.id}\n      username: foo_updated\n      password: bar_updated\n      tags:\n        - myTag\n        - anotherTag\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","properties":{"consumerId":{"type":"string","description":"the id of the consumer to be configured with basic auth\n"},"password":{"type":"string","description":"password to be used for basic auth\n"},"tags":{"type":"array","items":{"type":"string"},"description":"A list of strings associated with the consumer basic auth for grouping and filtering\n"},"username":{"type":"string","description":"username to be used for basic auth\n"}},"required":["consumerId","password","username"],"inputProperties":{"consumerId":{"type":"string","description":"the id of the consumer to be configured with basic auth\n"},"password":{"type":"string","description":"password to be used for basic auth\n"},"tags":{"type":"array","items":{"type":"string"},"description":"A list of strings associated with the consumer basic auth for grouping and filtering\n"},"username":{"type":"string","description":"username to be used for basic auth\n"}},"requiredInputs":["consumerId","password","username"],"stateInputs":{"description":"Input properties used for looking up and filtering ConsumerBasicAuth resources.\n","properties":{"consumerId":{"type":"string","description":"the id of the consumer to be configured with basic auth\n"},"password":{"type":"string","description":"password to be used for basic auth\n"},"tags":{"type":"array","items":{"type":"string"},"description":"A list of strings associated with the consumer basic auth for grouping and filtering\n"},"username":{"type":"string","description":"username to be used for basic auth\n"}},"type":"object"}},"kong:index/consumerJwtAuth:ConsumerJwtAuth":{"description":"## #\u003cspan pulumi-lang-nodejs=\" kong.ConsumerJwtAuth\n\" pulumi-lang-dotnet=\" kong.ConsumerJwtAuth\n\" pulumi-lang-go=\" ConsumerJwtAuth\n\" pulumi-lang-python=\" ConsumerJwtAuth\n\" pulumi-lang-yaml=\" kong.ConsumerJwtAuth\n\" pulumi-lang-java=\" kong.ConsumerJwtAuth\n\"\u003e kong.ConsumerJwtAuth\n\u003c/span\u003e\nConsumer jwt auth is a resource that allows you to configure the jwt auth plugin for a consumer.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as kong from \"@pulumi/kong\";\n\nconst myConsumer = new kong.Consumer(\"my_consumer\", {\n    username: \"User1\",\n    customId: \"123\",\n});\nconst jwtPlugin = new kong.Plugin(\"jwt_plugin\", {\n    name: \"jwt\",\n    configJson: `\\\\t{\n\\\\t\\\\t\\\\\"claims_to_verify\\\\\": [\\\\\"exp\\\\\"]\n\\\\t}\n`,\n});\nconst consumerJwtConfig = new kong.ConsumerJwtAuth(\"consumer_jwt_config\", {\n    consumerId: myConsumer.id,\n    algorithm: \"HS256\",\n    key: \"my_key\",\n    rsaPublicKey: \"foo\",\n    secret: \"my_secret\",\n});\n```\n```python\nimport pulumi\nimport pulumi_kong as kong\n\nmy_consumer = kong.Consumer(\"my_consumer\",\n    username=\"User1\",\n    custom_id=\"123\")\njwt_plugin = kong.Plugin(\"jwt_plugin\",\n    name=\"jwt\",\n    config_json=\"\"\"\\t{\n\\t\\t\\\"claims_to_verify\\\": [\\\"exp\\\"]\n\\t}\n\"\"\")\nconsumer_jwt_config = kong.ConsumerJwtAuth(\"consumer_jwt_config\",\n    consumer_id=my_consumer.id,\n    algorithm=\"HS256\",\n    key=\"my_key\",\n    rsa_public_key=\"foo\",\n    secret=\"my_secret\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Kong = Pulumi.Kong;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var myConsumer = new Kong.Consumer(\"my_consumer\", new()\n    {\n        Username = \"User1\",\n        CustomId = \"123\",\n    });\n\n    var jwtPlugin = new Kong.Plugin(\"jwt_plugin\", new()\n    {\n        Name = \"jwt\",\n        ConfigJson = @\"\\t{\n\\t\\t\\\"\"claims_to_verify\\\"\": [\\\"\"exp\\\"\"]\n\\t}\n\",\n    });\n\n    var consumerJwtConfig = new Kong.ConsumerJwtAuth(\"consumer_jwt_config\", new()\n    {\n        ConsumerId = myConsumer.Id,\n        Algorithm = \"HS256\",\n        Key = \"my_key\",\n        RsaPublicKey = \"foo\",\n        Secret = \"my_secret\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-kong/sdk/v4/go/kong\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmyConsumer, err := kong.NewConsumer(ctx, \"my_consumer\", \u0026kong.ConsumerArgs{\n\t\t\tUsername: pulumi.String(\"User1\"),\n\t\t\tCustomId: pulumi.String(\"123\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = kong.NewPlugin(ctx, \"jwt_plugin\", \u0026kong.PluginArgs{\n\t\t\tName:       pulumi.String(\"jwt\"),\n\t\t\tConfigJson: pulumi.String(\"\\\\t{\\n\\\\t\\\\t\\\\\\\"claims_to_verify\\\\\\\": [\\\\\\\"exp\\\\\\\"]\\n\\\\t}\\n\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = kong.NewConsumerJwtAuth(ctx, \"consumer_jwt_config\", \u0026kong.ConsumerJwtAuthArgs{\n\t\t\tConsumerId:   myConsumer.ID(),\n\t\t\tAlgorithm:    pulumi.String(\"HS256\"),\n\t\t\tKey:          pulumi.String(\"my_key\"),\n\t\t\tRsaPublicKey: pulumi.String(\"foo\"),\n\t\t\tSecret:       pulumi.String(\"my_secret\"),\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.kong.Consumer;\nimport com.pulumi.kong.ConsumerArgs;\nimport com.pulumi.kong.Plugin;\nimport com.pulumi.kong.PluginArgs;\nimport com.pulumi.kong.ConsumerJwtAuth;\nimport com.pulumi.kong.ConsumerJwtAuthArgs;\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 myConsumer = new Consumer(\"myConsumer\", ConsumerArgs.builder()\n            .username(\"User1\")\n            .customId(\"123\")\n            .build());\n\n        var jwtPlugin = new Plugin(\"jwtPlugin\", PluginArgs.builder()\n            .name(\"jwt\")\n            .configJson(\"\"\"\n\\t{\n\\t\\t\\\"claims_to_verify\\\": [\\\"exp\\\"]\n\\t}\n            \"\"\")\n            .build());\n\n        var consumerJwtConfig = new ConsumerJwtAuth(\"consumerJwtConfig\", ConsumerJwtAuthArgs.builder()\n            .consumerId(myConsumer.id())\n            .algorithm(\"HS256\")\n            .key(\"my_key\")\n            .rsaPublicKey(\"foo\")\n            .secret(\"my_secret\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  myConsumer:\n    type: kong:Consumer\n    name: my_consumer\n    properties:\n      username: User1\n      customId: '123'\n  jwtPlugin:\n    type: kong:Plugin\n    name: jwt_plugin\n    properties:\n      name: jwt\n      configJson: |\n        \\t{\n        \\t\\t\\\"claims_to_verify\\\": [\\\"exp\\\"]\n        \\t}\n  consumerJwtConfig:\n    type: kong:ConsumerJwtAuth\n    name: consumer_jwt_config\n    properties:\n      consumerId: ${myConsumer.id}\n      algorithm: HS256\n      key: my_key\n      rsaPublicKey: foo\n      secret: my_secret\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","properties":{"algorithm":{"type":"string","description":"The algorithm used to verify the token’s signature. Can be HS256, HS384, HS512, RS256, or ES256, Default is `HS256`\n"},"consumerId":{"type":"string","description":"the id of the consumer to be configured with jwt auth\n"},"key":{"type":"string","description":"A unique string identifying the credential. If left out, it will be auto-generated.\n"},"rsaPublicKey":{"type":"string","description":"If algorithm is `RS256` or `ES256`, the public key (in PEM format) to use to verify the token’s signature\n"},"secret":{"type":"string","description":"If algorithm is `HS256` or `ES256`, the secret used to sign JWTs for this credential. If left out, will be auto-generated\n"},"tags":{"type":"array","items":{"type":"string"},"description":"A list of strings associated with the consumer JWT auth for grouping and filtering\n"}},"required":["consumerId","rsaPublicKey"],"inputProperties":{"algorithm":{"type":"string","description":"The algorithm used to verify the token’s signature. Can be HS256, HS384, HS512, RS256, or ES256, Default is `HS256`\n"},"consumerId":{"type":"string","description":"the id of the consumer to be configured with jwt auth\n"},"key":{"type":"string","description":"A unique string identifying the credential. If left out, it will be auto-generated.\n"},"rsaPublicKey":{"type":"string","description":"If algorithm is `RS256` or `ES256`, the public key (in PEM format) to use to verify the token’s signature\n"},"secret":{"type":"string","description":"If algorithm is `HS256` or `ES256`, the secret used to sign JWTs for this credential. If left out, will be auto-generated\n"},"tags":{"type":"array","items":{"type":"string"},"description":"A list of strings associated with the consumer JWT auth for grouping and filtering\n"}},"requiredInputs":["consumerId","rsaPublicKey"],"stateInputs":{"description":"Input properties used for looking up and filtering ConsumerJwtAuth resources.\n","properties":{"algorithm":{"type":"string","description":"The algorithm used to verify the token’s signature. Can be HS256, HS384, HS512, RS256, or ES256, Default is `HS256`\n"},"consumerId":{"type":"string","description":"the id of the consumer to be configured with jwt auth\n"},"key":{"type":"string","description":"A unique string identifying the credential. If left out, it will be auto-generated.\n"},"rsaPublicKey":{"type":"string","description":"If algorithm is `RS256` or `ES256`, the public key (in PEM format) to use to verify the token’s signature\n"},"secret":{"type":"string","description":"If algorithm is `HS256` or `ES256`, the secret used to sign JWTs for this credential. If left out, will be auto-generated\n"},"tags":{"type":"array","items":{"type":"string"},"description":"A list of strings associated with the consumer JWT auth for grouping and filtering\n"}},"type":"object"}},"kong:index/consumerKeyAuth:ConsumerKeyAuth":{"description":"## #\u003cspan pulumi-lang-nodejs=\" kong.ConsumerKeyAuth\n\" pulumi-lang-dotnet=\" kong.ConsumerKeyAuth\n\" pulumi-lang-go=\" ConsumerKeyAuth\n\" pulumi-lang-python=\" ConsumerKeyAuth\n\" pulumi-lang-yaml=\" kong.ConsumerKeyAuth\n\" pulumi-lang-java=\" kong.ConsumerKeyAuth\n\"\u003e kong.ConsumerKeyAuth\n\u003c/span\u003e\nResource that allows you to configure the [Key Authentication](https://docs.konghq.com/hub/kong-inc/key-auth/) plugin for a consumer.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as kong from \"@pulumi/kong\";\n\nconst myConsumer = new kong.Consumer(\"my_consumer\", {\n    username: \"User1\",\n    customId: \"123\",\n});\nconst keyAuthPlugin = new kong.Plugin(\"key_auth_plugin\", {name: \"key-auth\"});\nconst consumerKeyAuth = new kong.ConsumerKeyAuth(\"consumer_key_auth\", {\n    consumerId: myConsumer.id,\n    key: \"secret\",\n    tags: [\n        \"myTag\",\n        \"anotherTag\",\n    ],\n});\n```\n```python\nimport pulumi\nimport pulumi_kong as kong\n\nmy_consumer = kong.Consumer(\"my_consumer\",\n    username=\"User1\",\n    custom_id=\"123\")\nkey_auth_plugin = kong.Plugin(\"key_auth_plugin\", name=\"key-auth\")\nconsumer_key_auth = kong.ConsumerKeyAuth(\"consumer_key_auth\",\n    consumer_id=my_consumer.id,\n    key=\"secret\",\n    tags=[\n        \"myTag\",\n        \"anotherTag\",\n    ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Kong = Pulumi.Kong;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var myConsumer = new Kong.Consumer(\"my_consumer\", new()\n    {\n        Username = \"User1\",\n        CustomId = \"123\",\n    });\n\n    var keyAuthPlugin = new Kong.Plugin(\"key_auth_plugin\", new()\n    {\n        Name = \"key-auth\",\n    });\n\n    var consumerKeyAuth = new Kong.ConsumerKeyAuth(\"consumer_key_auth\", new()\n    {\n        ConsumerId = myConsumer.Id,\n        Key = \"secret\",\n        Tags = new[]\n        {\n            \"myTag\",\n            \"anotherTag\",\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-kong/sdk/v4/go/kong\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmyConsumer, err := kong.NewConsumer(ctx, \"my_consumer\", \u0026kong.ConsumerArgs{\n\t\t\tUsername: pulumi.String(\"User1\"),\n\t\t\tCustomId: pulumi.String(\"123\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = kong.NewPlugin(ctx, \"key_auth_plugin\", \u0026kong.PluginArgs{\n\t\t\tName: pulumi.String(\"key-auth\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = kong.NewConsumerKeyAuth(ctx, \"consumer_key_auth\", \u0026kong.ConsumerKeyAuthArgs{\n\t\t\tConsumerId: myConsumer.ID(),\n\t\t\tKey:        pulumi.String(\"secret\"),\n\t\t\tTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"myTag\"),\n\t\t\t\tpulumi.String(\"anotherTag\"),\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.kong.Consumer;\nimport com.pulumi.kong.ConsumerArgs;\nimport com.pulumi.kong.Plugin;\nimport com.pulumi.kong.PluginArgs;\nimport com.pulumi.kong.ConsumerKeyAuth;\nimport com.pulumi.kong.ConsumerKeyAuthArgs;\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 myConsumer = new Consumer(\"myConsumer\", ConsumerArgs.builder()\n            .username(\"User1\")\n            .customId(\"123\")\n            .build());\n\n        var keyAuthPlugin = new Plugin(\"keyAuthPlugin\", PluginArgs.builder()\n            .name(\"key-auth\")\n            .build());\n\n        var consumerKeyAuth = new ConsumerKeyAuth(\"consumerKeyAuth\", ConsumerKeyAuthArgs.builder()\n            .consumerId(myConsumer.id())\n            .key(\"secret\")\n            .tags(            \n                \"myTag\",\n                \"anotherTag\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  myConsumer:\n    type: kong:Consumer\n    name: my_consumer\n    properties:\n      username: User1\n      customId: '123'\n  keyAuthPlugin:\n    type: kong:Plugin\n    name: key_auth_plugin\n    properties:\n      name: key-auth\n  consumerKeyAuth:\n    type: kong:ConsumerKeyAuth\n    name: consumer_key_auth\n    properties:\n      consumerId: ${myConsumer.id}\n      key: secret\n      tags:\n        - myTag\n        - anotherTag\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","properties":{"consumerId":{"type":"string","description":"the id of the consumer to associate the credentials to\n"},"key":{"type":"string","description":"Unique key to authenticate the client; if omitted the plugin will generate one\n","secret":true},"tags":{"type":"array","items":{"type":"string"},"description":"A list of strings associated with the consumer key auth for grouping and filtering\n"}},"required":["consumerId","key"],"inputProperties":{"consumerId":{"type":"string","description":"the id of the consumer to associate the credentials to\n"},"key":{"type":"string","description":"Unique key to authenticate the client; if omitted the plugin will generate one\n","secret":true},"tags":{"type":"array","items":{"type":"string"},"description":"A list of strings associated with the consumer key auth for grouping and filtering\n"}},"requiredInputs":["consumerId"],"stateInputs":{"description":"Input properties used for looking up and filtering ConsumerKeyAuth resources.\n","properties":{"consumerId":{"type":"string","description":"the id of the consumer to associate the credentials to\n"},"key":{"type":"string","description":"Unique key to authenticate the client; if omitted the plugin will generate one\n","secret":true},"tags":{"type":"array","items":{"type":"string"},"description":"A list of strings associated with the consumer key auth for grouping and filtering\n"}},"type":"object"}},"kong:index/consumerOauth2:ConsumerOauth2":{"description":"## #\u003cspan pulumi-lang-nodejs=\" kong.ConsumerOauth2\n\" pulumi-lang-dotnet=\" kong.ConsumerOauth2\n\" pulumi-lang-go=\" ConsumerOauth2\n\" pulumi-lang-python=\" ConsumerOauth2\n\" pulumi-lang-yaml=\" kong.ConsumerOauth2\n\" pulumi-lang-java=\" kong.ConsumerOauth2\n\"\u003e kong.ConsumerOauth2\n\u003c/span\u003e\nResource that allows you to configure the OAuth2 plugin credentials for a consumer.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as kong from \"@pulumi/kong\";\n\nconst myConsumer = new kong.Consumer(\"my_consumer\", {\n    username: \"User1\",\n    customId: \"123\",\n});\nconst oauth2Plugin = new kong.Plugin(\"oauth2_plugin\", {\n    name: \"oauth2\",\n    configJson: `\\\\t{\n\\\\t\\\\t\\\\\"global_credentials\\\\\": true,\n\\\\t\\\\t\\\\\"enable_password_grant\\\\\": true,\n\\\\t\\\\t\\\\\"token_expiration\\\\\": 180,\n\\\\t\\\\t\\\\\"refresh_token_ttl\\\\\": 180,\n\\\\t\\\\t\\\\\"provision_key\\\\\": \\\\\"testprovisionkey\\\\\"\n\\\\t}\n`,\n});\nconst consumerOauth2 = new kong.ConsumerOauth2(\"consumer_oauth2\", {\n    name: \"test_application\",\n    consumerId: myConsumer.id,\n    clientId: \"client_id\",\n    clientSecret: \"client_secret\",\n    redirectUris: [\n        \"https://asdf.com/callback\",\n        \"https://test.cl/callback\",\n    ],\n    tags: [\"myTag\"],\n});\n```\n```python\nimport pulumi\nimport pulumi_kong as kong\n\nmy_consumer = kong.Consumer(\"my_consumer\",\n    username=\"User1\",\n    custom_id=\"123\")\noauth2_plugin = kong.Plugin(\"oauth2_plugin\",\n    name=\"oauth2\",\n    config_json=\"\"\"\\t{\n\\t\\t\\\"global_credentials\\\": true,\n\\t\\t\\\"enable_password_grant\\\": true,\n\\t\\t\\\"token_expiration\\\": 180,\n\\t\\t\\\"refresh_token_ttl\\\": 180,\n\\t\\t\\\"provision_key\\\": \\\"testprovisionkey\\\"\n\\t}\n\"\"\")\nconsumer_oauth2 = kong.ConsumerOauth2(\"consumer_oauth2\",\n    name=\"test_application\",\n    consumer_id=my_consumer.id,\n    client_id=\"client_id\",\n    client_secret=\"client_secret\",\n    redirect_uris=[\n        \"https://asdf.com/callback\",\n        \"https://test.cl/callback\",\n    ],\n    tags=[\"myTag\"])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Kong = Pulumi.Kong;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var myConsumer = new Kong.Consumer(\"my_consumer\", new()\n    {\n        Username = \"User1\",\n        CustomId = \"123\",\n    });\n\n    var oauth2Plugin = new Kong.Plugin(\"oauth2_plugin\", new()\n    {\n        Name = \"oauth2\",\n        ConfigJson = @\"\\t{\n\\t\\t\\\"\"global_credentials\\\"\": true,\n\\t\\t\\\"\"enable_password_grant\\\"\": true,\n\\t\\t\\\"\"token_expiration\\\"\": 180,\n\\t\\t\\\"\"refresh_token_ttl\\\"\": 180,\n\\t\\t\\\"\"provision_key\\\"\": \\\"\"testprovisionkey\\\"\"\n\\t}\n\",\n    });\n\n    var consumerOauth2 = new Kong.ConsumerOauth2(\"consumer_oauth2\", new()\n    {\n        Name = \"test_application\",\n        ConsumerId = myConsumer.Id,\n        ClientId = \"client_id\",\n        ClientSecret = \"client_secret\",\n        RedirectUris = new[]\n        {\n            \"https://asdf.com/callback\",\n            \"https://test.cl/callback\",\n        },\n        Tags = new[]\n        {\n            \"myTag\",\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-kong/sdk/v4/go/kong\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmyConsumer, err := kong.NewConsumer(ctx, \"my_consumer\", \u0026kong.ConsumerArgs{\n\t\t\tUsername: pulumi.String(\"User1\"),\n\t\t\tCustomId: pulumi.String(\"123\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = kong.NewPlugin(ctx, \"oauth2_plugin\", \u0026kong.PluginArgs{\n\t\t\tName: pulumi.String(\"oauth2\"),\n\t\t\tConfigJson: pulumi.String(`\\t{\n\\t\\t\\\"global_credentials\\\": true,\n\\t\\t\\\"enable_password_grant\\\": true,\n\\t\\t\\\"token_expiration\\\": 180,\n\\t\\t\\\"refresh_token_ttl\\\": 180,\n\\t\\t\\\"provision_key\\\": \\\"testprovisionkey\\\"\n\\t}\n`),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = kong.NewConsumerOauth2(ctx, \"consumer_oauth2\", \u0026kong.ConsumerOauth2Args{\n\t\t\tName:         pulumi.String(\"test_application\"),\n\t\t\tConsumerId:   myConsumer.ID(),\n\t\t\tClientId:     pulumi.String(\"client_id\"),\n\t\t\tClientSecret: pulumi.String(\"client_secret\"),\n\t\t\tRedirectUris: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"https://asdf.com/callback\"),\n\t\t\t\tpulumi.String(\"https://test.cl/callback\"),\n\t\t\t},\n\t\t\tTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"myTag\"),\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.kong.Consumer;\nimport com.pulumi.kong.ConsumerArgs;\nimport com.pulumi.kong.Plugin;\nimport com.pulumi.kong.PluginArgs;\nimport com.pulumi.kong.ConsumerOauth2;\nimport com.pulumi.kong.ConsumerOauth2Args;\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 myConsumer = new Consumer(\"myConsumer\", ConsumerArgs.builder()\n            .username(\"User1\")\n            .customId(\"123\")\n            .build());\n\n        var oauth2Plugin = new Plugin(\"oauth2Plugin\", PluginArgs.builder()\n            .name(\"oauth2\")\n            .configJson(\"\"\"\n\\t{\n\\t\\t\\\"global_credentials\\\": true,\n\\t\\t\\\"enable_password_grant\\\": true,\n\\t\\t\\\"token_expiration\\\": 180,\n\\t\\t\\\"refresh_token_ttl\\\": 180,\n\\t\\t\\\"provision_key\\\": \\\"testprovisionkey\\\"\n\\t}\n            \"\"\")\n            .build());\n\n        var consumerOauth2 = new ConsumerOauth2(\"consumerOauth2\", ConsumerOauth2Args.builder()\n            .name(\"test_application\")\n            .consumerId(myConsumer.id())\n            .clientId(\"client_id\")\n            .clientSecret(\"client_secret\")\n            .redirectUris(            \n                \"https://asdf.com/callback\",\n                \"https://test.cl/callback\")\n            .tags(\"myTag\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  myConsumer:\n    type: kong:Consumer\n    name: my_consumer\n    properties:\n      username: User1\n      customId: '123'\n  oauth2Plugin:\n    type: kong:Plugin\n    name: oauth2_plugin\n    properties:\n      name: oauth2\n      configJson: |\n        \\t{\n        \\t\\t\\\"global_credentials\\\": true,\n        \\t\\t\\\"enable_password_grant\\\": true,\n        \\t\\t\\\"token_expiration\\\": 180,\n        \\t\\t\\\"refresh_token_ttl\\\": 180,\n        \\t\\t\\\"provision_key\\\": \\\"testprovisionkey\\\"\n        \\t}\n  consumerOauth2:\n    type: kong:ConsumerOauth2\n    name: consumer_oauth2\n    properties:\n      name: test_application\n      consumerId: ${myConsumer.id}\n      clientId: client_id\n      clientSecret: client_secret\n      redirectUris:\n        - https://asdf.com/callback\n        - https://test.cl/callback\n      tags:\n        - myTag\n```\n\u003c!--End PulumiCodeChooser --\u003e\n","properties":{"clientId":{"type":"string","description":"Unique oauth2 client id. If not set, the oauth2 plugin will generate one\n"},"clientSecret":{"type":"string","description":"Unique oauth2 client secret. If not set, the oauth2 plugin will generate one\n"},"consumerId":{"type":"string","description":"The id of the consumer to be configured with oauth2.\n"},"hashSecret":{"type":"boolean","description":"A boolean flag that indicates whether the\u003cspan pulumi-lang-nodejs=\" clientSecret \" pulumi-lang-dotnet=\" ClientSecret \" pulumi-lang-go=\" clientSecret \" pulumi-lang-python=\" client_secret \" pulumi-lang-yaml=\" clientSecret \" pulumi-lang-java=\" clientSecret \"\u003e client_secret \u003c/span\u003efield will be stored in hashed form. If enabled on existing plugin instances, client secrets are hashed on the fly upon first usage. Default: \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e.\n"},"name":{"type":"string","description":"The name associated with the credential.\n"},"redirectUris":{"type":"array","items":{"type":"string"},"description":"An array with one or more URLs in your app where users will be sent after authorization ([RFC 6742 Section 3.1.2](https://tools.ietf.org/html/rfc6749#section-3.1.2)).\n"},"tags":{"type":"array","items":{"type":"string"},"description":"A list of strings associated with the consumer for grouping and filtering.\n"}},"required":["consumerId","name","redirectUris"],"inputProperties":{"clientId":{"type":"string","description":"Unique oauth2 client id. If not set, the oauth2 plugin will generate one\n"},"clientSecret":{"type":"string","description":"Unique oauth2 client secret. If not set, the oauth2 plugin will generate one\n"},"consumerId":{"type":"string","description":"The id of the consumer to be configured with oauth2.\n"},"hashSecret":{"type":"boolean","description":"A boolean flag that indicates whether the\u003cspan pulumi-lang-nodejs=\" clientSecret \" pulumi-lang-dotnet=\" ClientSecret \" pulumi-lang-go=\" clientSecret \" pulumi-lang-python=\" client_secret \" pulumi-lang-yaml=\" clientSecret \" pulumi-lang-java=\" clientSecret \"\u003e client_secret \u003c/span\u003efield will be stored in hashed form. If enabled on existing plugin instances, client secrets are hashed on the fly upon first usage. Default: \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e.\n"},"name":{"type":"string","description":"The name associated with the credential.\n"},"redirectUris":{"type":"array","items":{"type":"string"},"description":"An array with one or more URLs in your app where users will be sent after authorization ([RFC 6742 Section 3.1.2](https://tools.ietf.org/html/rfc6749#section-3.1.2)).\n"},"tags":{"type":"array","items":{"type":"string"},"description":"A list of strings associated with the consumer for grouping and filtering.\n"}},"requiredInputs":["consumerId","redirectUris"],"stateInputs":{"description":"Input properties used for looking up and filtering ConsumerOauth2 resources.\n","properties":{"clientId":{"type":"string","description":"Unique oauth2 client id. If not set, the oauth2 plugin will generate one\n"},"clientSecret":{"type":"string","description":"Unique oauth2 client secret. If not set, the oauth2 plugin will generate one\n"},"consumerId":{"type":"string","description":"The id of the consumer to be configured with oauth2.\n"},"hashSecret":{"type":"boolean","description":"A boolean flag that indicates whether the\u003cspan pulumi-lang-nodejs=\" clientSecret \" pulumi-lang-dotnet=\" ClientSecret \" pulumi-lang-go=\" clientSecret \" pulumi-lang-python=\" client_secret \" pulumi-lang-yaml=\" clientSecret \" pulumi-lang-java=\" clientSecret \"\u003e client_secret \u003c/span\u003efield will be stored in hashed form. If enabled on existing plugin instances, client secrets are hashed on the fly upon first usage. Default: \u003cspan pulumi-lang-nodejs=\"`false`\" pulumi-lang-dotnet=\"`False`\" pulumi-lang-go=\"`false`\" pulumi-lang-python=\"`false`\" pulumi-lang-yaml=\"`false`\" pulumi-lang-java=\"`false`\"\u003e`false`\u003c/span\u003e.\n"},"name":{"type":"string","description":"The name associated with the credential.\n"},"redirectUris":{"type":"array","items":{"type":"string"},"description":"An array with one or more URLs in your app where users will be sent after authorization ([RFC 6742 Section 3.1.2](https://tools.ietf.org/html/rfc6749#section-3.1.2)).\n"},"tags":{"type":"array","items":{"type":"string"},"description":"A list of strings associated with the consumer for grouping and filtering.\n"}},"type":"object"}},"kong:index/plugin:Plugin":{"description":"## #\u003cspan pulumi-lang-nodejs=\" kong.Plugin\n\" pulumi-lang-dotnet=\" kong.Plugin\n\" pulumi-lang-go=\" Plugin\n\" pulumi-lang-python=\" Plugin\n\" pulumi-lang-yaml=\" kong.Plugin\n\" pulumi-lang-java=\" kong.Plugin\n\"\u003e kong.Plugin\n\u003c/span\u003e\nThe plugin resource maps directly onto the json for the API endpoint in Kong.  For more information on the parameters [see the Kong Api create documentation](https://docs.konghq.com/gateway-oss/2.5.x/admin-api/#plugin-object).\nThe \u003cspan pulumi-lang-nodejs=\"`configJson`\" pulumi-lang-dotnet=\"`ConfigJson`\" pulumi-lang-go=\"`configJson`\" pulumi-lang-python=\"`config_json`\" pulumi-lang-yaml=\"`configJson`\" pulumi-lang-java=\"`configJson`\"\u003e`config_json`\u003c/span\u003e is passed through to the plugin to configure it as is.  \n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as kong from \"@pulumi/kong\";\n\nconst rateLimit = new kong.Plugin(\"rate_limit\", {\n    name: \"rate-limiting\",\n    configJson: `\\\\t{\n\\\\t\\\\t\\\\\"second\\\\\": 5,\n\\\\t\\\\t\\\\\"hour\\\\\" : 1000\n\\\\t}\n`,\n});\n```\n```python\nimport pulumi\nimport pulumi_kong as kong\n\nrate_limit = kong.Plugin(\"rate_limit\",\n    name=\"rate-limiting\",\n    config_json=\"\"\"\\t{\n\\t\\t\\\"second\\\": 5,\n\\t\\t\\\"hour\\\" : 1000\n\\t}\n\"\"\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Kong = Pulumi.Kong;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var rateLimit = new Kong.Plugin(\"rate_limit\", new()\n    {\n        Name = \"rate-limiting\",\n        ConfigJson = @\"\\t{\n\\t\\t\\\"\"second\\\"\": 5,\n\\t\\t\\\"\"hour\\\"\" : 1000\n\\t}\n\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-kong/sdk/v4/go/kong\"\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 := kong.NewPlugin(ctx, \"rate_limit\", \u0026kong.PluginArgs{\n\t\t\tName:       pulumi.String(\"rate-limiting\"),\n\t\t\tConfigJson: pulumi.String(\"\\\\t{\\n\\\\t\\\\t\\\\\\\"second\\\\\\\": 5,\\n\\\\t\\\\t\\\\\\\"hour\\\\\\\" : 1000\\n\\\\t}\\n\"),\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.kong.Plugin;\nimport com.pulumi.kong.PluginArgs;\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 rateLimit = new Plugin(\"rateLimit\", PluginArgs.builder()\n            .name(\"rate-limiting\")\n            .configJson(\"\"\"\n\\t{\n\\t\\t\\\"second\\\": 5,\n\\t\\t\\\"hour\\\" : 1000\n\\t}\n            \"\"\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  rateLimit:\n    type: kong:Plugin\n    name: rate_limit\n    properties:\n      name: rate-limiting\n      configJson: |\n        \\t{\n        \\t\\t\\\"second\\\": 5,\n        \\t\\t\\\"hour\\\" : 1000\n        \\t}\n```\n\u003c!--End PulumiCodeChooser --\u003e\nTo apply a plugin to a consumer use the \u003cspan pulumi-lang-nodejs=\"`consumerId`\" pulumi-lang-dotnet=\"`ConsumerId`\" pulumi-lang-go=\"`consumerId`\" pulumi-lang-python=\"`consumer_id`\" pulumi-lang-yaml=\"`consumerId`\" pulumi-lang-java=\"`consumerId`\"\u003e`consumer_id`\u003c/span\u003e property, for example:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as kong from \"@pulumi/kong\";\n\nconst pluginConsumer = new kong.Consumer(\"plugin_consumer\", {\n    username: \"PluginUser\",\n    customId: \"567\",\n});\nconst rateLimit = new kong.Plugin(\"rate_limit\", {\n    name: \"rate-limiting\",\n    consumerId: pluginConsumer.id,\n    configJson: `\\\\t{\n\\\\t\\\\t\\\\\"second\\\\\": 5,\n\\\\t\\\\t\\\\\"hour\\\\\" : 1000\n\\\\t}\n`,\n});\n```\n```python\nimport pulumi\nimport pulumi_kong as kong\n\nplugin_consumer = kong.Consumer(\"plugin_consumer\",\n    username=\"PluginUser\",\n    custom_id=\"567\")\nrate_limit = kong.Plugin(\"rate_limit\",\n    name=\"rate-limiting\",\n    consumer_id=plugin_consumer.id,\n    config_json=\"\"\"\\t{\n\\t\\t\\\"second\\\": 5,\n\\t\\t\\\"hour\\\" : 1000\n\\t}\n\"\"\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Kong = Pulumi.Kong;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var pluginConsumer = new Kong.Consumer(\"plugin_consumer\", new()\n    {\n        Username = \"PluginUser\",\n        CustomId = \"567\",\n    });\n\n    var rateLimit = new Kong.Plugin(\"rate_limit\", new()\n    {\n        Name = \"rate-limiting\",\n        ConsumerId = pluginConsumer.Id,\n        ConfigJson = @\"\\t{\n\\t\\t\\\"\"second\\\"\": 5,\n\\t\\t\\\"\"hour\\\"\" : 1000\n\\t}\n\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-kong/sdk/v4/go/kong\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tpluginConsumer, err := kong.NewConsumer(ctx, \"plugin_consumer\", \u0026kong.ConsumerArgs{\n\t\t\tUsername: pulumi.String(\"PluginUser\"),\n\t\t\tCustomId: pulumi.String(\"567\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = kong.NewPlugin(ctx, \"rate_limit\", \u0026kong.PluginArgs{\n\t\t\tName:       pulumi.String(\"rate-limiting\"),\n\t\t\tConsumerId: pluginConsumer.ID(),\n\t\t\tConfigJson: pulumi.String(\"\\\\t{\\n\\\\t\\\\t\\\\\\\"second\\\\\\\": 5,\\n\\\\t\\\\t\\\\\\\"hour\\\\\\\" : 1000\\n\\\\t}\\n\"),\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.kong.Consumer;\nimport com.pulumi.kong.ConsumerArgs;\nimport com.pulumi.kong.Plugin;\nimport com.pulumi.kong.PluginArgs;\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 pluginConsumer = new Consumer(\"pluginConsumer\", ConsumerArgs.builder()\n            .username(\"PluginUser\")\n            .customId(\"567\")\n            .build());\n\n        var rateLimit = new Plugin(\"rateLimit\", PluginArgs.builder()\n            .name(\"rate-limiting\")\n            .consumerId(pluginConsumer.id())\n            .configJson(\"\"\"\n\\t{\n\\t\\t\\\"second\\\": 5,\n\\t\\t\\\"hour\\\" : 1000\n\\t}\n            \"\"\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  pluginConsumer:\n    type: kong:Consumer\n    name: plugin_consumer\n    properties:\n      username: PluginUser\n      customId: '567'\n  rateLimit:\n    type: kong:Plugin\n    name: rate_limit\n    properties:\n      name: rate-limiting\n      consumerId: ${pluginConsumer.id}\n      configJson: |\n        \\t{\n        \\t\\t\\\"second\\\": 5,\n        \\t\\t\\\"hour\\\" : 1000\n        \\t}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nTo apply a plugin to a service use the \u003cspan pulumi-lang-nodejs=\"`serviceId`\" pulumi-lang-dotnet=\"`ServiceId`\" pulumi-lang-go=\"`serviceId`\" pulumi-lang-python=\"`service_id`\" pulumi-lang-yaml=\"`serviceId`\" pulumi-lang-java=\"`serviceId`\"\u003e`service_id`\u003c/span\u003e property, for example:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as kong from \"@pulumi/kong\";\n\nconst service = new kong.Service(\"service\", {\n    name: \"test\",\n    protocol: \"http\",\n    host: \"test.org\",\n});\nconst rateLimit = new kong.Plugin(\"rate_limit\", {\n    name: \"rate-limiting\",\n    serviceId: service.id,\n    configJson: `\\\\t{\n\\\\t\\\\t\\\\\"second\\\\\": 10,\n\\\\t\\\\t\\\\\"hour\\\\\" : 2000\n\\\\t}\n`,\n});\n```\n```python\nimport pulumi\nimport pulumi_kong as kong\n\nservice = kong.Service(\"service\",\n    name=\"test\",\n    protocol=\"http\",\n    host=\"test.org\")\nrate_limit = kong.Plugin(\"rate_limit\",\n    name=\"rate-limiting\",\n    service_id=service.id,\n    config_json=\"\"\"\\t{\n\\t\\t\\\"second\\\": 10,\n\\t\\t\\\"hour\\\" : 2000\n\\t}\n\"\"\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Kong = Pulumi.Kong;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var service = new Kong.Service(\"service\", new()\n    {\n        Name = \"test\",\n        Protocol = \"http\",\n        Host = \"test.org\",\n    });\n\n    var rateLimit = new Kong.Plugin(\"rate_limit\", new()\n    {\n        Name = \"rate-limiting\",\n        ServiceId = service.Id,\n        ConfigJson = @\"\\t{\n\\t\\t\\\"\"second\\\"\": 10,\n\\t\\t\\\"\"hour\\\"\" : 2000\n\\t}\n\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-kong/sdk/v4/go/kong\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tservice, err := kong.NewService(ctx, \"service\", \u0026kong.ServiceArgs{\n\t\t\tName:     pulumi.String(\"test\"),\n\t\t\tProtocol: pulumi.String(\"http\"),\n\t\t\tHost:     pulumi.String(\"test.org\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = kong.NewPlugin(ctx, \"rate_limit\", \u0026kong.PluginArgs{\n\t\t\tName:       pulumi.String(\"rate-limiting\"),\n\t\t\tServiceId:  service.ID(),\n\t\t\tConfigJson: pulumi.String(\"\\\\t{\\n\\\\t\\\\t\\\\\\\"second\\\\\\\": 10,\\n\\\\t\\\\t\\\\\\\"hour\\\\\\\" : 2000\\n\\\\t}\\n\"),\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.kong.Service;\nimport com.pulumi.kong.ServiceArgs;\nimport com.pulumi.kong.Plugin;\nimport com.pulumi.kong.PluginArgs;\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 service = new Service(\"service\", ServiceArgs.builder()\n            .name(\"test\")\n            .protocol(\"http\")\n            .host(\"test.org\")\n            .build());\n\n        var rateLimit = new Plugin(\"rateLimit\", PluginArgs.builder()\n            .name(\"rate-limiting\")\n            .serviceId(service.id())\n            .configJson(\"\"\"\n\\t{\n\\t\\t\\\"second\\\": 10,\n\\t\\t\\\"hour\\\" : 2000\n\\t}\n            \"\"\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  service:\n    type: kong:Service\n    properties:\n      name: test\n      protocol: http\n      host: test.org\n  rateLimit:\n    type: kong:Plugin\n    name: rate_limit\n    properties:\n      name: rate-limiting\n      serviceId: ${service.id}\n      configJson: |\n        \\t{\n        \\t\\t\\\"second\\\": 10,\n        \\t\\t\\\"hour\\\" : 2000\n        \\t}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nTo apply a plugin to a route use the \u003cspan pulumi-lang-nodejs=\"`routeId`\" pulumi-lang-dotnet=\"`RouteId`\" pulumi-lang-go=\"`routeId`\" pulumi-lang-python=\"`route_id`\" pulumi-lang-yaml=\"`routeId`\" pulumi-lang-java=\"`routeId`\"\u003e`route_id`\u003c/span\u003e property, for example:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as kong from \"@pulumi/kong\";\n\nconst service = new kong.Service(\"service\", {\n    name: \"test\",\n    protocol: \"http\",\n    host: \"test.org\",\n});\nconst rateLimit = new kong.Plugin(\"rate_limit\", {\n    name: \"rate-limiting\",\n    enabled: true,\n    serviceId: service.id,\n    configJson: `\\\\t{\n\\\\t\\\\t\\\\\"second\\\\\": 11,\n\\\\t\\\\t\\\\\"hour\\\\\" : 4000\n\\\\t}\n`,\n});\n```\n```python\nimport pulumi\nimport pulumi_kong as kong\n\nservice = kong.Service(\"service\",\n    name=\"test\",\n    protocol=\"http\",\n    host=\"test.org\")\nrate_limit = kong.Plugin(\"rate_limit\",\n    name=\"rate-limiting\",\n    enabled=True,\n    service_id=service.id,\n    config_json=\"\"\"\\t{\n\\t\\t\\\"second\\\": 11,\n\\t\\t\\\"hour\\\" : 4000\n\\t}\n\"\"\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Kong = Pulumi.Kong;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var service = new Kong.Service(\"service\", new()\n    {\n        Name = \"test\",\n        Protocol = \"http\",\n        Host = \"test.org\",\n    });\n\n    var rateLimit = new Kong.Plugin(\"rate_limit\", new()\n    {\n        Name = \"rate-limiting\",\n        Enabled = true,\n        ServiceId = service.Id,\n        ConfigJson = @\"\\t{\n\\t\\t\\\"\"second\\\"\": 11,\n\\t\\t\\\"\"hour\\\"\" : 4000\n\\t}\n\",\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-kong/sdk/v4/go/kong\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tservice, err := kong.NewService(ctx, \"service\", \u0026kong.ServiceArgs{\n\t\t\tName:     pulumi.String(\"test\"),\n\t\t\tProtocol: pulumi.String(\"http\"),\n\t\t\tHost:     pulumi.String(\"test.org\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = kong.NewPlugin(ctx, \"rate_limit\", \u0026kong.PluginArgs{\n\t\t\tName:       pulumi.String(\"rate-limiting\"),\n\t\t\tEnabled:    pulumi.Bool(true),\n\t\t\tServiceId:  service.ID(),\n\t\t\tConfigJson: pulumi.String(\"\\\\t{\\n\\\\t\\\\t\\\\\\\"second\\\\\\\": 11,\\n\\\\t\\\\t\\\\\\\"hour\\\\\\\" : 4000\\n\\\\t}\\n\"),\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.kong.Service;\nimport com.pulumi.kong.ServiceArgs;\nimport com.pulumi.kong.Plugin;\nimport com.pulumi.kong.PluginArgs;\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 service = new Service(\"service\", ServiceArgs.builder()\n            .name(\"test\")\n            .protocol(\"http\")\n            .host(\"test.org\")\n            .build());\n\n        var rateLimit = new Plugin(\"rateLimit\", PluginArgs.builder()\n            .name(\"rate-limiting\")\n            .enabled(true)\n            .serviceId(service.id())\n            .configJson(\"\"\"\n\\t{\n\\t\\t\\\"second\\\": 11,\n\\t\\t\\\"hour\\\" : 4000\n\\t}\n            \"\"\")\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  service:\n    type: kong:Service\n    properties:\n      name: test\n      protocol: http\n      host: test.org\n  rateLimit:\n    type: kong:Plugin\n    name: rate_limit\n    properties:\n      name: rate-limiting\n      enabled: true\n      serviceId: ${service.id}\n      configJson: |\n        \\t{\n        \\t\\t\\\"second\\\": 11,\n        \\t\\t\\\"hour\\\" : 4000\n        \\t}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nTo import a plugin:\n\n```sh\n$ pulumi import kong:index/plugin:Plugin \u003cplugin_identifier\u003e \u003cplugin_id\u003e\n```\n\n","properties":{"computedConfig":{"type":"string"},"configJson":{"type":"string","description":"this is the configuration json for how you want to configure the plugin.  The json is passed straight through to kong as is.  You can get the json config from the Kong documentation\npage of the plugin you are configuring\n"},"consumerId":{"type":"string","description":"the consumer id you want to configure the plugin for\n"},"enabled":{"type":"boolean","description":"whether the plugin is enabled or not, use if you want to keep the plugin installed but disable it\n"},"name":{"type":"string"},"routeId":{"type":"string","description":"the route id that you want to configure the plugin for\n"},"serviceId":{"type":"string","description":"the service id that you want to configure the plugin for\n"},"strictMatch":{"type":"boolean"},"tags":{"type":"array","items":{"type":"string"},"description":"A list of strings associated with the Plugin for grouping and filtering\n"}},"required":["computedConfig","name"],"inputProperties":{"configJson":{"type":"string","description":"this is the configuration json for how you want to configure the plugin.  The json is passed straight through to kong as is.  You can get the json config from the Kong documentation\npage of the plugin you are configuring\n"},"consumerId":{"type":"string","description":"the consumer id you want to configure the plugin for\n"},"enabled":{"type":"boolean","description":"whether the plugin is enabled or not, use if you want to keep the plugin installed but disable it\n"},"name":{"type":"string","willReplaceOnChanges":true},"routeId":{"type":"string","description":"the route id that you want to configure the plugin for\n"},"serviceId":{"type":"string","description":"the service id that you want to configure the plugin for\n"},"strictMatch":{"type":"boolean"},"tags":{"type":"array","items":{"type":"string"},"description":"A list of strings associated with the Plugin for grouping and filtering\n"}},"stateInputs":{"description":"Input properties used for looking up and filtering Plugin resources.\n","properties":{"computedConfig":{"type":"string"},"configJson":{"type":"string","description":"this is the configuration json for how you want to configure the plugin.  The json is passed straight through to kong as is.  You can get the json config from the Kong documentation\npage of the plugin you are configuring\n"},"consumerId":{"type":"string","description":"the consumer id you want to configure the plugin for\n"},"enabled":{"type":"boolean","description":"whether the plugin is enabled or not, use if you want to keep the plugin installed but disable it\n"},"name":{"type":"string","willReplaceOnChanges":true},"routeId":{"type":"string","description":"the route id that you want to configure the plugin for\n"},"serviceId":{"type":"string","description":"the service id that you want to configure the plugin for\n"},"strictMatch":{"type":"boolean"},"tags":{"type":"array","items":{"type":"string"},"description":"A list of strings associated with the Plugin for grouping and filtering\n"}},"type":"object"}},"kong:index/route:Route":{"description":"## #\u003cspan pulumi-lang-nodejs=\" kong.Route\n\" pulumi-lang-dotnet=\" kong.Route\n\" pulumi-lang-go=\" Route\n\" pulumi-lang-python=\" Route\n\" pulumi-lang-yaml=\" kong.Route\n\" pulumi-lang-java=\" kong.Route\n\"\u003e kong.Route\n\u003c/span\u003e\nThe route resource maps directly onto the json for the route endpoint in Kong. For more information on the parameters [see the Kong Route create documentation](https://docs.konghq.com/gateway-oss/2.5.x/admin-api/#route-object).\n\nTo create a tcp/tls route you set \u003cspan pulumi-lang-nodejs=\"`sources`\" pulumi-lang-dotnet=\"`Sources`\" pulumi-lang-go=\"`sources`\" pulumi-lang-python=\"`sources`\" pulumi-lang-yaml=\"`sources`\" pulumi-lang-java=\"`sources`\"\u003e`sources`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`destinations`\" pulumi-lang-dotnet=\"`Destinations`\" pulumi-lang-go=\"`destinations`\" pulumi-lang-python=\"`destinations`\" pulumi-lang-yaml=\"`destinations`\" pulumi-lang-java=\"`destinations`\"\u003e`destinations`\u003c/span\u003e by repeating the corresponding element (\u003cspan pulumi-lang-nodejs=\"`source`\" pulumi-lang-dotnet=\"`Source`\" pulumi-lang-go=\"`source`\" pulumi-lang-python=\"`source`\" pulumi-lang-yaml=\"`source`\" pulumi-lang-java=\"`source`\"\u003e`source`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`destination`\" pulumi-lang-dotnet=\"`Destination`\" pulumi-lang-go=\"`destination`\" pulumi-lang-python=\"`destination`\" pulumi-lang-yaml=\"`destination`\" pulumi-lang-java=\"`destination`\"\u003e`destination`\u003c/span\u003e) for each source or destination you want.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as kong from \"@pulumi/kong\";\n\nconst route = new kong.Route(\"route\", {\n    name: \"MyRoute\",\n    protocols: [\n        \"http\",\n        \"https\",\n    ],\n    methods: [\n        \"GET\",\n        \"POST\",\n    ],\n    hosts: [\"example2.com\"],\n    paths: [\"/test\"],\n    stripPath: false,\n    preserveHost: true,\n    regexPriority: 1,\n    serviceId: service.id,\n    headers: [{\n        name: \"x-test-1\",\n        values: [\n            \"a\",\n            \"b\",\n        ],\n    }],\n});\n```\n```python\nimport pulumi\nimport pulumi_kong as kong\n\nroute = kong.Route(\"route\",\n    name=\"MyRoute\",\n    protocols=[\n        \"http\",\n        \"https\",\n    ],\n    methods=[\n        \"GET\",\n        \"POST\",\n    ],\n    hosts=[\"example2.com\"],\n    paths=[\"/test\"],\n    strip_path=False,\n    preserve_host=True,\n    regex_priority=1,\n    service_id=service[\"id\"],\n    headers=[{\n        \"name\": \"x-test-1\",\n        \"values\": [\n            \"a\",\n            \"b\",\n        ],\n    }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Kong = Pulumi.Kong;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var route = new Kong.Route(\"route\", new()\n    {\n        Name = \"MyRoute\",\n        Protocols = new[]\n        {\n            \"http\",\n            \"https\",\n        },\n        Methods = new[]\n        {\n            \"GET\",\n            \"POST\",\n        },\n        Hosts = new[]\n        {\n            \"example2.com\",\n        },\n        Paths = new[]\n        {\n            \"/test\",\n        },\n        StripPath = false,\n        PreserveHost = true,\n        RegexPriority = 1,\n        ServiceId = service.Id,\n        Headers = new[]\n        {\n            new Kong.Inputs.RouteHeaderArgs\n            {\n                Name = \"x-test-1\",\n                Values = new[]\n                {\n                    \"a\",\n                    \"b\",\n                },\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-kong/sdk/v4/go/kong\"\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 := kong.NewRoute(ctx, \"route\", \u0026kong.RouteArgs{\n\t\t\tName: pulumi.String(\"MyRoute\"),\n\t\t\tProtocols: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"http\"),\n\t\t\t\tpulumi.String(\"https\"),\n\t\t\t},\n\t\t\tMethods: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"GET\"),\n\t\t\t\tpulumi.String(\"POST\"),\n\t\t\t},\n\t\t\tHosts: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"example2.com\"),\n\t\t\t},\n\t\t\tPaths: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"/test\"),\n\t\t\t},\n\t\t\tStripPath:     pulumi.Bool(false),\n\t\t\tPreserveHost:  pulumi.Bool(true),\n\t\t\tRegexPriority: pulumi.Int(1),\n\t\t\tServiceId:     pulumi.Any(service.Id),\n\t\t\tHeaders: kong.RouteHeaderArray{\n\t\t\t\t\u0026kong.RouteHeaderArgs{\n\t\t\t\t\tName: pulumi.String(\"x-test-1\"),\n\t\t\t\t\tValues: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"a\"),\n\t\t\t\t\t\tpulumi.String(\"b\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.kong.Route;\nimport com.pulumi.kong.RouteArgs;\nimport com.pulumi.kong.inputs.RouteHeaderArgs;\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 route = new Route(\"route\", RouteArgs.builder()\n            .name(\"MyRoute\")\n            .protocols(            \n                \"http\",\n                \"https\")\n            .methods(            \n                \"GET\",\n                \"POST\")\n            .hosts(\"example2.com\")\n            .paths(\"/test\")\n            .stripPath(false)\n            .preserveHost(true)\n            .regexPriority(1)\n            .serviceId(service.id())\n            .headers(RouteHeaderArgs.builder()\n                .name(\"x-test-1\")\n                .values(                \n                    \"a\",\n                    \"b\")\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  route:\n    type: kong:Route\n    properties:\n      name: MyRoute\n      protocols:\n        - http\n        - https\n      methods:\n        - GET\n        - POST\n      hosts:\n        - example2.com\n      paths:\n        - /test\n      stripPath: false\n      preserveHost: true\n      regexPriority: 1\n      serviceId: ${service.id}\n      headers:\n        - name: x-test-1\n          values:\n            - a\n            - b\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nTo create a tcp/tls route you set \u003cspan pulumi-lang-nodejs=\"`sources`\" pulumi-lang-dotnet=\"`Sources`\" pulumi-lang-go=\"`sources`\" pulumi-lang-python=\"`sources`\" pulumi-lang-yaml=\"`sources`\" pulumi-lang-java=\"`sources`\"\u003e`sources`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`destinations`\" pulumi-lang-dotnet=\"`Destinations`\" pulumi-lang-go=\"`destinations`\" pulumi-lang-python=\"`destinations`\" pulumi-lang-yaml=\"`destinations`\" pulumi-lang-java=\"`destinations`\"\u003e`destinations`\u003c/span\u003e by repeating the corresponding element (\u003cspan pulumi-lang-nodejs=\"`source`\" pulumi-lang-dotnet=\"`Source`\" pulumi-lang-go=\"`source`\" pulumi-lang-python=\"`source`\" pulumi-lang-yaml=\"`source`\" pulumi-lang-java=\"`source`\"\u003e`source`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`destination`\" pulumi-lang-dotnet=\"`Destination`\" pulumi-lang-go=\"`destination`\" pulumi-lang-python=\"`destination`\" pulumi-lang-yaml=\"`destination`\" pulumi-lang-java=\"`destination`\"\u003e`destination`\u003c/span\u003e) for each source or destination you want, for example:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as kong from \"@pulumi/kong\";\n\nconst route = new kong.Route(\"route\", {\n    protocols: [\"tcp\"],\n    stripPath: true,\n    preserveHost: false,\n    sources: [\n        {\n            ip: \"192.168.1.1\",\n            port: 80,\n        },\n        {\n            ip: \"192.168.1.2\",\n        },\n    ],\n    destinations: [{\n        ip: \"172.10.1.1\",\n        port: 81,\n    }],\n    snis: [\"foo.com\"],\n    serviceId: service.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_kong as kong\n\nroute = kong.Route(\"route\",\n    protocols=[\"tcp\"],\n    strip_path=True,\n    preserve_host=False,\n    sources=[\n        {\n            \"ip\": \"192.168.1.1\",\n            \"port\": 80,\n        },\n        {\n            \"ip\": \"192.168.1.2\",\n        },\n    ],\n    destinations=[{\n        \"ip\": \"172.10.1.1\",\n        \"port\": 81,\n    }],\n    snis=[\"foo.com\"],\n    service_id=service[\"id\"])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Kong = Pulumi.Kong;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var route = new Kong.Route(\"route\", new()\n    {\n        Protocols = new[]\n        {\n            \"tcp\",\n        },\n        StripPath = true,\n        PreserveHost = false,\n        Sources = new[]\n        {\n            new Kong.Inputs.RouteSourceArgs\n            {\n                Ip = \"192.168.1.1\",\n                Port = 80,\n            },\n            new Kong.Inputs.RouteSourceArgs\n            {\n                Ip = \"192.168.1.2\",\n            },\n        },\n        Destinations = new[]\n        {\n            new Kong.Inputs.RouteDestinationArgs\n            {\n                Ip = \"172.10.1.1\",\n                Port = 81,\n            },\n        },\n        Snis = new[]\n        {\n            \"foo.com\",\n        },\n        ServiceId = service.Id,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-kong/sdk/v4/go/kong\"\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 := kong.NewRoute(ctx, \"route\", \u0026kong.RouteArgs{\n\t\t\tProtocols: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"tcp\"),\n\t\t\t},\n\t\t\tStripPath:    pulumi.Bool(true),\n\t\t\tPreserveHost: pulumi.Bool(false),\n\t\t\tSources: kong.RouteSourceArray{\n\t\t\t\t\u0026kong.RouteSourceArgs{\n\t\t\t\t\tIp:   pulumi.String(\"192.168.1.1\"),\n\t\t\t\t\tPort: pulumi.Int(80),\n\t\t\t\t},\n\t\t\t\t\u0026kong.RouteSourceArgs{\n\t\t\t\t\tIp: pulumi.String(\"192.168.1.2\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tDestinations: kong.RouteDestinationArray{\n\t\t\t\t\u0026kong.RouteDestinationArgs{\n\t\t\t\t\tIp:   pulumi.String(\"172.10.1.1\"),\n\t\t\t\t\tPort: pulumi.Int(81),\n\t\t\t\t},\n\t\t\t},\n\t\t\tSnis: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"foo.com\"),\n\t\t\t},\n\t\t\tServiceId: pulumi.Any(service.Id),\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.kong.Route;\nimport com.pulumi.kong.RouteArgs;\nimport com.pulumi.kong.inputs.RouteSourceArgs;\nimport com.pulumi.kong.inputs.RouteDestinationArgs;\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 route = new Route(\"route\", RouteArgs.builder()\n            .protocols(\"tcp\")\n            .stripPath(true)\n            .preserveHost(false)\n            .sources(            \n                RouteSourceArgs.builder()\n                    .ip(\"192.168.1.1\")\n                    .port(80)\n                    .build(),\n                RouteSourceArgs.builder()\n                    .ip(\"192.168.1.2\")\n                    .build())\n            .destinations(RouteDestinationArgs.builder()\n                .ip(\"172.10.1.1\")\n                .port(81)\n                .build())\n            .snis(\"foo.com\")\n            .serviceId(service.id())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  route:\n    type: kong:Route\n    properties:\n      protocols:\n        - tcp\n      stripPath: true\n      preserveHost: false\n      sources:\n        - ip: 192.168.1.1\n          port: 80\n        - ip: 192.168.1.2\n      destinations:\n        - ip: 172.10.1.1\n          port: 81\n      snis:\n        - foo.com\n      serviceId: ${service.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nTo import a route:\n\n```sh\n$ pulumi import kong:index/route:Route \u003croute_identifier\u003e \u003croute_id\u003e\n```\n\n","properties":{"destinations":{"type":"array","items":{"$ref":"#/types/kong:index/RouteDestination:RouteDestination"},"description":"A list of destination \u003cspan pulumi-lang-nodejs=\"`ip`\" pulumi-lang-dotnet=\"`Ip`\" pulumi-lang-go=\"`ip`\" pulumi-lang-python=\"`ip`\" pulumi-lang-yaml=\"`ip`\" pulumi-lang-java=\"`ip`\"\u003e`ip`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`port`\" pulumi-lang-dotnet=\"`Port`\" pulumi-lang-go=\"`port`\" pulumi-lang-python=\"`port`\" pulumi-lang-yaml=\"`port`\" pulumi-lang-java=\"`port`\"\u003e`port`\u003c/span\u003e\n"},"headers":{"type":"array","items":{"$ref":"#/types/kong:index/RouteHeader:RouteHeader"},"description":"One or more blocks of \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e to set name of header and \u003cspan pulumi-lang-nodejs=\"`values`\" pulumi-lang-dotnet=\"`Values`\" pulumi-lang-go=\"`values`\" pulumi-lang-python=\"`values`\" pulumi-lang-yaml=\"`values`\" pulumi-lang-java=\"`values`\"\u003e`values`\u003c/span\u003e which is a list of \u003cspan pulumi-lang-nodejs=\"`string`\" pulumi-lang-dotnet=\"`String`\" pulumi-lang-go=\"`string`\" pulumi-lang-python=\"`string`\" pulumi-lang-yaml=\"`string`\" pulumi-lang-java=\"`string`\"\u003e`string`\u003c/span\u003e for the header values to match on.  See above example of how to set.  These headers will cause this Route to match if present in the request. The Host header cannot be used with this attribute: hosts should be specified using the hosts attribute.\n"},"hosts":{"type":"array","items":{"type":"string"},"description":"A list of domain names that match this Route\n"},"httpsRedirectStatusCode":{"type":"integer","description":"The status code Kong responds with when all properties of a Route match except the protocol i.e. if the protocol of the request is HTTP instead of HTTPS. Location header is injected by Kong if the field is set to \u003cspan pulumi-lang-nodejs=\"`301`\" pulumi-lang-dotnet=\"`301`\" pulumi-lang-go=\"`301`\" pulumi-lang-python=\"`301`\" pulumi-lang-yaml=\"`301`\" pulumi-lang-java=\"`301`\"\u003e`301`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`302`\" pulumi-lang-dotnet=\"`302`\" pulumi-lang-go=\"`302`\" pulumi-lang-python=\"`302`\" pulumi-lang-yaml=\"`302`\" pulumi-lang-java=\"`302`\"\u003e`302`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`307`\" pulumi-lang-dotnet=\"`307`\" pulumi-lang-go=\"`307`\" pulumi-lang-python=\"`307`\" pulumi-lang-yaml=\"`307`\" pulumi-lang-java=\"`307`\"\u003e`307`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`308`\" pulumi-lang-dotnet=\"`308`\" pulumi-lang-go=\"`308`\" pulumi-lang-python=\"`308`\" pulumi-lang-yaml=\"`308`\" pulumi-lang-java=\"`308`\"\u003e`308`\u003c/span\u003e. Accepted values are: \u003cspan pulumi-lang-nodejs=\"`426`\" pulumi-lang-dotnet=\"`426`\" pulumi-lang-go=\"`426`\" pulumi-lang-python=\"`426`\" pulumi-lang-yaml=\"`426`\" pulumi-lang-java=\"`426`\"\u003e`426`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`301`\" pulumi-lang-dotnet=\"`301`\" pulumi-lang-go=\"`301`\" pulumi-lang-python=\"`301`\" pulumi-lang-yaml=\"`301`\" pulumi-lang-java=\"`301`\"\u003e`301`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`302`\" pulumi-lang-dotnet=\"`302`\" pulumi-lang-go=\"`302`\" pulumi-lang-python=\"`302`\" pulumi-lang-yaml=\"`302`\" pulumi-lang-java=\"`302`\"\u003e`302`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`307`\" pulumi-lang-dotnet=\"`307`\" pulumi-lang-go=\"`307`\" pulumi-lang-python=\"`307`\" pulumi-lang-yaml=\"`307`\" pulumi-lang-java=\"`307`\"\u003e`307`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`308`\" pulumi-lang-dotnet=\"`308`\" pulumi-lang-go=\"`308`\" pulumi-lang-python=\"`308`\" pulumi-lang-yaml=\"`308`\" pulumi-lang-java=\"`308`\"\u003e`308`\u003c/span\u003e. Default: \u003cspan pulumi-lang-nodejs=\"`426`\" pulumi-lang-dotnet=\"`426`\" pulumi-lang-go=\"`426`\" pulumi-lang-python=\"`426`\" pulumi-lang-yaml=\"`426`\" pulumi-lang-java=\"`426`\"\u003e`426`\u003c/span\u003e.\n"},"methods":{"type":"array","items":{"type":"string"},"description":"A list of HTTP methods that match this Route\n"},"name":{"type":"string","description":"The name of the route\n"},"pathHandling":{"type":"string","description":"Controls how the Service path, Route path and requested path are combined when sending a request to the upstream.\n"},"paths":{"type":"array","items":{"type":"string"},"description":"A list of paths that match this Route\n"},"preserveHost":{"type":"boolean","description":"When matching a Route via one of the hosts domain names, use the request Host header in the upstream request headers. If set to false, the upstream Host header will be that of the Service’s host.\n"},"protocols":{"type":"array","items":{"type":"string"},"description":"The list of protocols to use\n"},"regexPriority":{"type":"integer","description":"A number used to choose which route resolves a given request when several routes match it using regexes simultaneously.\n"},"requestBuffering":{"type":"boolean","description":"Whether to enable request body buffering or not. With HTTP 1.1, it may make sense to turn this off on services that receive data with chunked transfer encoding. Default: true.\n"},"responseBuffering":{"type":"boolean","description":"Whether to enable response body buffering or not. With HTTP 1.1, it may make sense to turn this off on services that send data with chunked transfer encoding. Default: true.\n"},"serviceId":{"type":"string","description":"Service ID to map to\n"},"snis":{"type":"array","items":{"type":"string"},"description":"A list of SNIs that match this Route when using stream routing.\n"},"sources":{"type":"array","items":{"$ref":"#/types/kong:index/RouteSource:RouteSource"},"description":"A list of source \u003cspan pulumi-lang-nodejs=\"`ip`\" pulumi-lang-dotnet=\"`Ip`\" pulumi-lang-go=\"`ip`\" pulumi-lang-python=\"`ip`\" pulumi-lang-yaml=\"`ip`\" pulumi-lang-java=\"`ip`\"\u003e`ip`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`port`\" pulumi-lang-dotnet=\"`Port`\" pulumi-lang-go=\"`port`\" pulumi-lang-python=\"`port`\" pulumi-lang-yaml=\"`port`\" pulumi-lang-java=\"`port`\"\u003e`port`\u003c/span\u003e\n"},"stripPath":{"type":"boolean","description":"When matching a Route via one of the paths, strip the matching prefix from the upstream request URL. Default: true.\n"},"tags":{"type":"array","items":{"type":"string"},"description":"A list of strings associated with the Route for grouping and filtering.\n"}},"required":["name","protocols","serviceId"],"inputProperties":{"destinations":{"type":"array","items":{"$ref":"#/types/kong:index/RouteDestination:RouteDestination"},"description":"A list of destination \u003cspan pulumi-lang-nodejs=\"`ip`\" pulumi-lang-dotnet=\"`Ip`\" pulumi-lang-go=\"`ip`\" pulumi-lang-python=\"`ip`\" pulumi-lang-yaml=\"`ip`\" pulumi-lang-java=\"`ip`\"\u003e`ip`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`port`\" pulumi-lang-dotnet=\"`Port`\" pulumi-lang-go=\"`port`\" pulumi-lang-python=\"`port`\" pulumi-lang-yaml=\"`port`\" pulumi-lang-java=\"`port`\"\u003e`port`\u003c/span\u003e\n"},"headers":{"type":"array","items":{"$ref":"#/types/kong:index/RouteHeader:RouteHeader"},"description":"One or more blocks of \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e to set name of header and \u003cspan pulumi-lang-nodejs=\"`values`\" pulumi-lang-dotnet=\"`Values`\" pulumi-lang-go=\"`values`\" pulumi-lang-python=\"`values`\" pulumi-lang-yaml=\"`values`\" pulumi-lang-java=\"`values`\"\u003e`values`\u003c/span\u003e which is a list of \u003cspan pulumi-lang-nodejs=\"`string`\" pulumi-lang-dotnet=\"`String`\" pulumi-lang-go=\"`string`\" pulumi-lang-python=\"`string`\" pulumi-lang-yaml=\"`string`\" pulumi-lang-java=\"`string`\"\u003e`string`\u003c/span\u003e for the header values to match on.  See above example of how to set.  These headers will cause this Route to match if present in the request. The Host header cannot be used with this attribute: hosts should be specified using the hosts attribute.\n"},"hosts":{"type":"array","items":{"type":"string"},"description":"A list of domain names that match this Route\n"},"httpsRedirectStatusCode":{"type":"integer","description":"The status code Kong responds with when all properties of a Route match except the protocol i.e. if the protocol of the request is HTTP instead of HTTPS. Location header is injected by Kong if the field is set to \u003cspan pulumi-lang-nodejs=\"`301`\" pulumi-lang-dotnet=\"`301`\" pulumi-lang-go=\"`301`\" pulumi-lang-python=\"`301`\" pulumi-lang-yaml=\"`301`\" pulumi-lang-java=\"`301`\"\u003e`301`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`302`\" pulumi-lang-dotnet=\"`302`\" pulumi-lang-go=\"`302`\" pulumi-lang-python=\"`302`\" pulumi-lang-yaml=\"`302`\" pulumi-lang-java=\"`302`\"\u003e`302`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`307`\" pulumi-lang-dotnet=\"`307`\" pulumi-lang-go=\"`307`\" pulumi-lang-python=\"`307`\" pulumi-lang-yaml=\"`307`\" pulumi-lang-java=\"`307`\"\u003e`307`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`308`\" pulumi-lang-dotnet=\"`308`\" pulumi-lang-go=\"`308`\" pulumi-lang-python=\"`308`\" pulumi-lang-yaml=\"`308`\" pulumi-lang-java=\"`308`\"\u003e`308`\u003c/span\u003e. Accepted values are: \u003cspan pulumi-lang-nodejs=\"`426`\" pulumi-lang-dotnet=\"`426`\" pulumi-lang-go=\"`426`\" pulumi-lang-python=\"`426`\" pulumi-lang-yaml=\"`426`\" pulumi-lang-java=\"`426`\"\u003e`426`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`301`\" pulumi-lang-dotnet=\"`301`\" pulumi-lang-go=\"`301`\" pulumi-lang-python=\"`301`\" pulumi-lang-yaml=\"`301`\" pulumi-lang-java=\"`301`\"\u003e`301`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`302`\" pulumi-lang-dotnet=\"`302`\" pulumi-lang-go=\"`302`\" pulumi-lang-python=\"`302`\" pulumi-lang-yaml=\"`302`\" pulumi-lang-java=\"`302`\"\u003e`302`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`307`\" pulumi-lang-dotnet=\"`307`\" pulumi-lang-go=\"`307`\" pulumi-lang-python=\"`307`\" pulumi-lang-yaml=\"`307`\" pulumi-lang-java=\"`307`\"\u003e`307`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`308`\" pulumi-lang-dotnet=\"`308`\" pulumi-lang-go=\"`308`\" pulumi-lang-python=\"`308`\" pulumi-lang-yaml=\"`308`\" pulumi-lang-java=\"`308`\"\u003e`308`\u003c/span\u003e. Default: \u003cspan pulumi-lang-nodejs=\"`426`\" pulumi-lang-dotnet=\"`426`\" pulumi-lang-go=\"`426`\" pulumi-lang-python=\"`426`\" pulumi-lang-yaml=\"`426`\" pulumi-lang-java=\"`426`\"\u003e`426`\u003c/span\u003e.\n"},"methods":{"type":"array","items":{"type":"string"},"description":"A list of HTTP methods that match this Route\n"},"name":{"type":"string","description":"The name of the route\n"},"pathHandling":{"type":"string","description":"Controls how the Service path, Route path and requested path are combined when sending a request to the upstream.\n"},"paths":{"type":"array","items":{"type":"string"},"description":"A list of paths that match this Route\n"},"preserveHost":{"type":"boolean","description":"When matching a Route via one of the hosts domain names, use the request Host header in the upstream request headers. If set to false, the upstream Host header will be that of the Service’s host.\n"},"protocols":{"type":"array","items":{"type":"string"},"description":"The list of protocols to use\n"},"regexPriority":{"type":"integer","description":"A number used to choose which route resolves a given request when several routes match it using regexes simultaneously.\n"},"requestBuffering":{"type":"boolean","description":"Whether to enable request body buffering or not. With HTTP 1.1, it may make sense to turn this off on services that receive data with chunked transfer encoding. Default: true.\n"},"responseBuffering":{"type":"boolean","description":"Whether to enable response body buffering or not. With HTTP 1.1, it may make sense to turn this off on services that send data with chunked transfer encoding. Default: true.\n"},"serviceId":{"type":"string","description":"Service ID to map to\n"},"snis":{"type":"array","items":{"type":"string"},"description":"A list of SNIs that match this Route when using stream routing.\n"},"sources":{"type":"array","items":{"$ref":"#/types/kong:index/RouteSource:RouteSource"},"description":"A list of source \u003cspan pulumi-lang-nodejs=\"`ip`\" pulumi-lang-dotnet=\"`Ip`\" pulumi-lang-go=\"`ip`\" pulumi-lang-python=\"`ip`\" pulumi-lang-yaml=\"`ip`\" pulumi-lang-java=\"`ip`\"\u003e`ip`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`port`\" pulumi-lang-dotnet=\"`Port`\" pulumi-lang-go=\"`port`\" pulumi-lang-python=\"`port`\" pulumi-lang-yaml=\"`port`\" pulumi-lang-java=\"`port`\"\u003e`port`\u003c/span\u003e\n"},"stripPath":{"type":"boolean","description":"When matching a Route via one of the paths, strip the matching prefix from the upstream request URL. Default: true.\n"},"tags":{"type":"array","items":{"type":"string"},"description":"A list of strings associated with the Route for grouping and filtering.\n"}},"requiredInputs":["protocols","serviceId"],"stateInputs":{"description":"Input properties used for looking up and filtering Route resources.\n","properties":{"destinations":{"type":"array","items":{"$ref":"#/types/kong:index/RouteDestination:RouteDestination"},"description":"A list of destination \u003cspan pulumi-lang-nodejs=\"`ip`\" pulumi-lang-dotnet=\"`Ip`\" pulumi-lang-go=\"`ip`\" pulumi-lang-python=\"`ip`\" pulumi-lang-yaml=\"`ip`\" pulumi-lang-java=\"`ip`\"\u003e`ip`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`port`\" pulumi-lang-dotnet=\"`Port`\" pulumi-lang-go=\"`port`\" pulumi-lang-python=\"`port`\" pulumi-lang-yaml=\"`port`\" pulumi-lang-java=\"`port`\"\u003e`port`\u003c/span\u003e\n"},"headers":{"type":"array","items":{"$ref":"#/types/kong:index/RouteHeader:RouteHeader"},"description":"One or more blocks of \u003cspan pulumi-lang-nodejs=\"`name`\" pulumi-lang-dotnet=\"`Name`\" pulumi-lang-go=\"`name`\" pulumi-lang-python=\"`name`\" pulumi-lang-yaml=\"`name`\" pulumi-lang-java=\"`name`\"\u003e`name`\u003c/span\u003e to set name of header and \u003cspan pulumi-lang-nodejs=\"`values`\" pulumi-lang-dotnet=\"`Values`\" pulumi-lang-go=\"`values`\" pulumi-lang-python=\"`values`\" pulumi-lang-yaml=\"`values`\" pulumi-lang-java=\"`values`\"\u003e`values`\u003c/span\u003e which is a list of \u003cspan pulumi-lang-nodejs=\"`string`\" pulumi-lang-dotnet=\"`String`\" pulumi-lang-go=\"`string`\" pulumi-lang-python=\"`string`\" pulumi-lang-yaml=\"`string`\" pulumi-lang-java=\"`string`\"\u003e`string`\u003c/span\u003e for the header values to match on.  See above example of how to set.  These headers will cause this Route to match if present in the request. The Host header cannot be used with this attribute: hosts should be specified using the hosts attribute.\n"},"hosts":{"type":"array","items":{"type":"string"},"description":"A list of domain names that match this Route\n"},"httpsRedirectStatusCode":{"type":"integer","description":"The status code Kong responds with when all properties of a Route match except the protocol i.e. if the protocol of the request is HTTP instead of HTTPS. Location header is injected by Kong if the field is set to \u003cspan pulumi-lang-nodejs=\"`301`\" pulumi-lang-dotnet=\"`301`\" pulumi-lang-go=\"`301`\" pulumi-lang-python=\"`301`\" pulumi-lang-yaml=\"`301`\" pulumi-lang-java=\"`301`\"\u003e`301`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`302`\" pulumi-lang-dotnet=\"`302`\" pulumi-lang-go=\"`302`\" pulumi-lang-python=\"`302`\" pulumi-lang-yaml=\"`302`\" pulumi-lang-java=\"`302`\"\u003e`302`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`307`\" pulumi-lang-dotnet=\"`307`\" pulumi-lang-go=\"`307`\" pulumi-lang-python=\"`307`\" pulumi-lang-yaml=\"`307`\" pulumi-lang-java=\"`307`\"\u003e`307`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`308`\" pulumi-lang-dotnet=\"`308`\" pulumi-lang-go=\"`308`\" pulumi-lang-python=\"`308`\" pulumi-lang-yaml=\"`308`\" pulumi-lang-java=\"`308`\"\u003e`308`\u003c/span\u003e. Accepted values are: \u003cspan pulumi-lang-nodejs=\"`426`\" pulumi-lang-dotnet=\"`426`\" pulumi-lang-go=\"`426`\" pulumi-lang-python=\"`426`\" pulumi-lang-yaml=\"`426`\" pulumi-lang-java=\"`426`\"\u003e`426`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`301`\" pulumi-lang-dotnet=\"`301`\" pulumi-lang-go=\"`301`\" pulumi-lang-python=\"`301`\" pulumi-lang-yaml=\"`301`\" pulumi-lang-java=\"`301`\"\u003e`301`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`302`\" pulumi-lang-dotnet=\"`302`\" pulumi-lang-go=\"`302`\" pulumi-lang-python=\"`302`\" pulumi-lang-yaml=\"`302`\" pulumi-lang-java=\"`302`\"\u003e`302`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`307`\" pulumi-lang-dotnet=\"`307`\" pulumi-lang-go=\"`307`\" pulumi-lang-python=\"`307`\" pulumi-lang-yaml=\"`307`\" pulumi-lang-java=\"`307`\"\u003e`307`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`308`\" pulumi-lang-dotnet=\"`308`\" pulumi-lang-go=\"`308`\" pulumi-lang-python=\"`308`\" pulumi-lang-yaml=\"`308`\" pulumi-lang-java=\"`308`\"\u003e`308`\u003c/span\u003e. Default: \u003cspan pulumi-lang-nodejs=\"`426`\" pulumi-lang-dotnet=\"`426`\" pulumi-lang-go=\"`426`\" pulumi-lang-python=\"`426`\" pulumi-lang-yaml=\"`426`\" pulumi-lang-java=\"`426`\"\u003e`426`\u003c/span\u003e.\n"},"methods":{"type":"array","items":{"type":"string"},"description":"A list of HTTP methods that match this Route\n"},"name":{"type":"string","description":"The name of the route\n"},"pathHandling":{"type":"string","description":"Controls how the Service path, Route path and requested path are combined when sending a request to the upstream.\n"},"paths":{"type":"array","items":{"type":"string"},"description":"A list of paths that match this Route\n"},"preserveHost":{"type":"boolean","description":"When matching a Route via one of the hosts domain names, use the request Host header in the upstream request headers. If set to false, the upstream Host header will be that of the Service’s host.\n"},"protocols":{"type":"array","items":{"type":"string"},"description":"The list of protocols to use\n"},"regexPriority":{"type":"integer","description":"A number used to choose which route resolves a given request when several routes match it using regexes simultaneously.\n"},"requestBuffering":{"type":"boolean","description":"Whether to enable request body buffering or not. With HTTP 1.1, it may make sense to turn this off on services that receive data with chunked transfer encoding. Default: true.\n"},"responseBuffering":{"type":"boolean","description":"Whether to enable response body buffering or not. With HTTP 1.1, it may make sense to turn this off on services that send data with chunked transfer encoding. Default: true.\n"},"serviceId":{"type":"string","description":"Service ID to map to\n"},"snis":{"type":"array","items":{"type":"string"},"description":"A list of SNIs that match this Route when using stream routing.\n"},"sources":{"type":"array","items":{"$ref":"#/types/kong:index/RouteSource:RouteSource"},"description":"A list of source \u003cspan pulumi-lang-nodejs=\"`ip`\" pulumi-lang-dotnet=\"`Ip`\" pulumi-lang-go=\"`ip`\" pulumi-lang-python=\"`ip`\" pulumi-lang-yaml=\"`ip`\" pulumi-lang-java=\"`ip`\"\u003e`ip`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`port`\" pulumi-lang-dotnet=\"`Port`\" pulumi-lang-go=\"`port`\" pulumi-lang-python=\"`port`\" pulumi-lang-yaml=\"`port`\" pulumi-lang-java=\"`port`\"\u003e`port`\u003c/span\u003e\n"},"stripPath":{"type":"boolean","description":"When matching a Route via one of the paths, strip the matching prefix from the upstream request URL. Default: true.\n"},"tags":{"type":"array","items":{"type":"string"},"description":"A list of strings associated with the Route for grouping and filtering.\n"}},"type":"object"}},"kong:index/service:Service":{"description":"## #\u003cspan pulumi-lang-nodejs=\" kong.Service\n\" pulumi-lang-dotnet=\" kong.Service\n\" pulumi-lang-go=\" Service\n\" pulumi-lang-python=\" Service\n\" pulumi-lang-yaml=\" kong.Service\n\" pulumi-lang-java=\" kong.Service\n\"\u003e kong.Service\n\u003c/span\u003e\nThe service resource maps directly onto the json for the service endpoint in Kong.  For more information on the parameters [see the Kong Service create documentation](https://docs.konghq.com/gateway-oss/2.5.x/admin-api/#service-object).\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as kong from \"@pulumi/kong\";\n\nconst service = new kong.Service(\"service\", {\n    name: \"test\",\n    protocol: \"http\",\n    host: \"test.org\",\n    port: 8080,\n    path: \"/mypath\",\n    retries: 5,\n    connectTimeout: 1000,\n    writeTimeout: 2000,\n    readTimeout: 3000,\n});\n```\n```python\nimport pulumi\nimport pulumi_kong as kong\n\nservice = kong.Service(\"service\",\n    name=\"test\",\n    protocol=\"http\",\n    host=\"test.org\",\n    port=8080,\n    path=\"/mypath\",\n    retries=5,\n    connect_timeout=1000,\n    write_timeout=2000,\n    read_timeout=3000)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Kong = Pulumi.Kong;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var service = new Kong.Service(\"service\", new()\n    {\n        Name = \"test\",\n        Protocol = \"http\",\n        Host = \"test.org\",\n        Port = 8080,\n        Path = \"/mypath\",\n        Retries = 5,\n        ConnectTimeout = 1000,\n        WriteTimeout = 2000,\n        ReadTimeout = 3000,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-kong/sdk/v4/go/kong\"\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 := kong.NewService(ctx, \"service\", \u0026kong.ServiceArgs{\n\t\t\tName:           pulumi.String(\"test\"),\n\t\t\tProtocol:       pulumi.String(\"http\"),\n\t\t\tHost:           pulumi.String(\"test.org\"),\n\t\t\tPort:           pulumi.Int(8080),\n\t\t\tPath:           pulumi.String(\"/mypath\"),\n\t\t\tRetries:        pulumi.Int(5),\n\t\t\tConnectTimeout: pulumi.Int(1000),\n\t\t\tWriteTimeout:   pulumi.Int(2000),\n\t\t\tReadTimeout:    pulumi.Int(3000),\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.kong.Service;\nimport com.pulumi.kong.ServiceArgs;\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 service = new Service(\"service\", ServiceArgs.builder()\n            .name(\"test\")\n            .protocol(\"http\")\n            .host(\"test.org\")\n            .port(8080)\n            .path(\"/mypath\")\n            .retries(5)\n            .connectTimeout(1000)\n            .writeTimeout(2000)\n            .readTimeout(3000)\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  service:\n    type: kong:Service\n    properties:\n      name: test\n      protocol: http\n      host: test.org\n      port: 8080\n      path: /mypath\n      retries: 5\n      connectTimeout: 1000\n      writeTimeout: 2000\n      readTimeout: 3000\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nTo use a client certificate and ca certificates combine with certificate resource (note protocol must be \u003cspan pulumi-lang-nodejs=\"`https`\" pulumi-lang-dotnet=\"`Https`\" pulumi-lang-go=\"`https`\" pulumi-lang-python=\"`https`\" pulumi-lang-yaml=\"`https`\" pulumi-lang-java=\"`https`\"\u003e`https`\u003c/span\u003e):\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as kong from \"@pulumi/kong\";\n\nconst certificate = new kong.Certificate(\"certificate\", {\n    certificate: `    -----BEGIN CERTIFICATE-----\n    ......\n    -----END CERTIFICATE-----\n`,\n    privateKey: `    -----BEGIN PRIVATE KEY-----\n    .....\n    -----END PRIVATE KEY-----\n`,\n    snis: [\"foo.com\"],\n});\nconst ca = new kong.Certificate(\"ca\", {\n    certificate: `    -----BEGIN CERTIFICATE-----\n    ......\n    -----END CERTIFICATE-----\n`,\n    privateKey: `    -----BEGIN PRIVATE KEY-----\n    .....\n    -----END PRIVATE KEY-----\n`,\n    snis: [\"ca.com\"],\n});\nconst service = new kong.Service(\"service\", {\n    name: \"test\",\n    protocol: \"https\",\n    host: \"test.org\",\n    tlsVerify: true,\n    tlsVerifyDepth: 2,\n    clientCertificateId: certificate.id,\n    caCertificateIds: [ca.id],\n});\n```\n```python\nimport pulumi\nimport pulumi_kong as kong\n\ncertificate = kong.Certificate(\"certificate\",\n    certificate=\"\"\"    -----BEGIN CERTIFICATE-----\n    ......\n    -----END CERTIFICATE-----\n\"\"\",\n    private_key=\"\"\"    -----BEGIN PRIVATE KEY-----\n    .....\n    -----END PRIVATE KEY-----\n\"\"\",\n    snis=[\"foo.com\"])\nca = kong.Certificate(\"ca\",\n    certificate=\"\"\"    -----BEGIN CERTIFICATE-----\n    ......\n    -----END CERTIFICATE-----\n\"\"\",\n    private_key=\"\"\"    -----BEGIN PRIVATE KEY-----\n    .....\n    -----END PRIVATE KEY-----\n\"\"\",\n    snis=[\"ca.com\"])\nservice = kong.Service(\"service\",\n    name=\"test\",\n    protocol=\"https\",\n    host=\"test.org\",\n    tls_verify=True,\n    tls_verify_depth=2,\n    client_certificate_id=certificate.id,\n    ca_certificate_ids=[ca.id])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Kong = Pulumi.Kong;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var certificate = new Kong.Certificate(\"certificate\", new()\n    {\n        Cert = @\"    -----BEGIN CERTIFICATE-----\n    ......\n    -----END CERTIFICATE-----\n\",\n        PrivateKey = @\"    -----BEGIN PRIVATE KEY-----\n    .....\n    -----END PRIVATE KEY-----\n\",\n        Snis = new[]\n        {\n            \"foo.com\",\n        },\n    });\n\n    var ca = new Kong.Certificate(\"ca\", new()\n    {\n        Cert = @\"    -----BEGIN CERTIFICATE-----\n    ......\n    -----END CERTIFICATE-----\n\",\n        PrivateKey = @\"    -----BEGIN PRIVATE KEY-----\n    .....\n    -----END PRIVATE KEY-----\n\",\n        Snis = new[]\n        {\n            \"ca.com\",\n        },\n    });\n\n    var service = new Kong.Service(\"service\", new()\n    {\n        Name = \"test\",\n        Protocol = \"https\",\n        Host = \"test.org\",\n        TlsVerify = true,\n        TlsVerifyDepth = 2,\n        ClientCertificateId = certificate.Id,\n        CaCertificateIds = new[]\n        {\n            ca.Id,\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-kong/sdk/v4/go/kong\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcertificate, err := kong.NewCertificate(ctx, \"certificate\", \u0026kong.CertificateArgs{\n\t\t\tCertificate: pulumi.String(\"    -----BEGIN CERTIFICATE-----\\n    ......\\n    -----END CERTIFICATE-----\\n\"),\n\t\t\tPrivateKey:  pulumi.String(\"    -----BEGIN PRIVATE KEY-----\\n    .....\\n    -----END PRIVATE KEY-----\\n\"),\n\t\t\tSnis: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"foo.com\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tca, err := kong.NewCertificate(ctx, \"ca\", \u0026kong.CertificateArgs{\n\t\t\tCertificate: pulumi.String(\"    -----BEGIN CERTIFICATE-----\\n    ......\\n    -----END CERTIFICATE-----\\n\"),\n\t\t\tPrivateKey:  pulumi.String(\"    -----BEGIN PRIVATE KEY-----\\n    .....\\n    -----END PRIVATE KEY-----\\n\"),\n\t\t\tSnis: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"ca.com\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = kong.NewService(ctx, \"service\", \u0026kong.ServiceArgs{\n\t\t\tName:                pulumi.String(\"test\"),\n\t\t\tProtocol:            pulumi.String(\"https\"),\n\t\t\tHost:                pulumi.String(\"test.org\"),\n\t\t\tTlsVerify:           pulumi.Bool(true),\n\t\t\tTlsVerifyDepth:      pulumi.Int(2),\n\t\t\tClientCertificateId: certificate.ID(),\n\t\t\tCaCertificateIds: pulumi.StringArray{\n\t\t\t\tca.ID(),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.kong.Certificate;\nimport com.pulumi.kong.CertificateArgs;\nimport com.pulumi.kong.Service;\nimport com.pulumi.kong.ServiceArgs;\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 certificate = new Certificate(\"certificate\", CertificateArgs.builder()\n            .certificate(\"\"\"\n    -----BEGIN CERTIFICATE-----\n    ......\n    -----END CERTIFICATE-----\n            \"\"\")\n            .privateKey(\"\"\"\n    -----BEGIN PRIVATE KEY-----\n    .....\n    -----END PRIVATE KEY-----\n            \"\"\")\n            .snis(\"foo.com\")\n            .build());\n\n        var ca = new Certificate(\"ca\", CertificateArgs.builder()\n            .certificate(\"\"\"\n    -----BEGIN CERTIFICATE-----\n    ......\n    -----END CERTIFICATE-----\n            \"\"\")\n            .privateKey(\"\"\"\n    -----BEGIN PRIVATE KEY-----\n    .....\n    -----END PRIVATE KEY-----\n            \"\"\")\n            .snis(\"ca.com\")\n            .build());\n\n        var service = new Service(\"service\", ServiceArgs.builder()\n            .name(\"test\")\n            .protocol(\"https\")\n            .host(\"test.org\")\n            .tlsVerify(true)\n            .tlsVerifyDepth(2)\n            .clientCertificateId(certificate.id())\n            .caCertificateIds(ca.id())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  certificate:\n    type: kong:Certificate\n    properties:\n      certificate: |2\n            -----BEGIN CERTIFICATE-----\n            ......\n            -----END CERTIFICATE-----\n      privateKey: |2\n            -----BEGIN PRIVATE KEY-----\n            .....\n            -----END PRIVATE KEY-----\n      snis:\n        - foo.com\n  ca:\n    type: kong:Certificate\n    properties:\n      certificate: |2\n            -----BEGIN CERTIFICATE-----\n            ......\n            -----END CERTIFICATE-----\n      privateKey: |2\n            -----BEGIN PRIVATE KEY-----\n            .....\n            -----END PRIVATE KEY-----\n      snis:\n        - ca.com\n  service:\n    type: kong:Service\n    properties:\n      name: test\n      protocol: https\n      host: test.org\n      tlsVerify: true\n      tlsVerifyDepth: 2\n      clientCertificateId: ${certificate.id}\n      caCertificateIds:\n        - ${ca.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nTo import a service:\n\n```sh\n$ pulumi import kong:index/service:Service \u003cservice_identifier\u003e \u003cservice_id\u003e\n```\n\n","properties":{"caCertificateIds":{"type":"array","items":{"type":"string"},"description":"A of CA Certificate IDs (created from the certificate resource). that are used to build the trust store while verifying upstream server’s TLS certificate.\n"},"clientCertificateId":{"type":"string","description":"ID of Certificate to be used as client certificate while TLS handshaking to the upstream server. Use ID from \u003cspan pulumi-lang-nodejs=\"`kong.Certificate`\" pulumi-lang-dotnet=\"`kong.Certificate`\" pulumi-lang-go=\"`Certificate`\" pulumi-lang-python=\"`Certificate`\" pulumi-lang-yaml=\"`kong.Certificate`\" pulumi-lang-java=\"`kong.Certificate`\"\u003e`kong.Certificate`\u003c/span\u003e resource\n"},"connectTimeout":{"type":"integer","description":"Connection timeout. Default(ms): 60000\n"},"host":{"type":"string","description":"Host to map to\n"},"name":{"type":"string","description":"Service name\n"},"path":{"type":"string","description":"Path to map to\n"},"port":{"type":"integer","description":"Port to map to. Default: 80\n"},"protocol":{"type":"string","description":"Protocol to use\n"},"readTimeout":{"type":"integer","description":"Read timeout. Default(ms): 60000\n"},"retries":{"type":"integer","description":"Number of retries. Default: 5\n"},"tags":{"type":"array","items":{"type":"string"},"description":"A list of strings associated with the Service for grouping and filtering.\n"},"tlsVerify":{"type":"boolean","description":"Whether to enable verification of upstream server TLS certificate. If not set then the nginx default is respected.\n"},"tlsVerifyDepth":{"type":"integer","description":"Maximum depth of chain while verifying Upstream server’s TLS certificate.\n"},"writeTimeout":{"type":"integer","description":"Write timout. Default(ms): 60000\n"}},"required":["name","protocol"],"inputProperties":{"caCertificateIds":{"type":"array","items":{"type":"string"},"description":"A of CA Certificate IDs (created from the certificate resource). that are used to build the trust store while verifying upstream server’s TLS certificate.\n"},"clientCertificateId":{"type":"string","description":"ID of Certificate to be used as client certificate while TLS handshaking to the upstream server. Use ID from \u003cspan pulumi-lang-nodejs=\"`kong.Certificate`\" pulumi-lang-dotnet=\"`kong.Certificate`\" pulumi-lang-go=\"`Certificate`\" pulumi-lang-python=\"`Certificate`\" pulumi-lang-yaml=\"`kong.Certificate`\" pulumi-lang-java=\"`kong.Certificate`\"\u003e`kong.Certificate`\u003c/span\u003e resource\n"},"connectTimeout":{"type":"integer","description":"Connection timeout. Default(ms): 60000\n"},"host":{"type":"string","description":"Host to map to\n"},"name":{"type":"string","description":"Service name\n"},"path":{"type":"string","description":"Path to map to\n"},"port":{"type":"integer","description":"Port to map to. Default: 80\n"},"protocol":{"type":"string","description":"Protocol to use\n"},"readTimeout":{"type":"integer","description":"Read timeout. Default(ms): 60000\n"},"retries":{"type":"integer","description":"Number of retries. Default: 5\n"},"tags":{"type":"array","items":{"type":"string"},"description":"A list of strings associated with the Service for grouping and filtering.\n"},"tlsVerify":{"type":"boolean","description":"Whether to enable verification of upstream server TLS certificate. If not set then the nginx default is respected.\n"},"tlsVerifyDepth":{"type":"integer","description":"Maximum depth of chain while verifying Upstream server’s TLS certificate.\n"},"writeTimeout":{"type":"integer","description":"Write timout. Default(ms): 60000\n"}},"requiredInputs":["protocol"],"stateInputs":{"description":"Input properties used for looking up and filtering Service resources.\n","properties":{"caCertificateIds":{"type":"array","items":{"type":"string"},"description":"A of CA Certificate IDs (created from the certificate resource). that are used to build the trust store while verifying upstream server’s TLS certificate.\n"},"clientCertificateId":{"type":"string","description":"ID of Certificate to be used as client certificate while TLS handshaking to the upstream server. Use ID from \u003cspan pulumi-lang-nodejs=\"`kong.Certificate`\" pulumi-lang-dotnet=\"`kong.Certificate`\" pulumi-lang-go=\"`Certificate`\" pulumi-lang-python=\"`Certificate`\" pulumi-lang-yaml=\"`kong.Certificate`\" pulumi-lang-java=\"`kong.Certificate`\"\u003e`kong.Certificate`\u003c/span\u003e resource\n"},"connectTimeout":{"type":"integer","description":"Connection timeout. Default(ms): 60000\n"},"host":{"type":"string","description":"Host to map to\n"},"name":{"type":"string","description":"Service name\n"},"path":{"type":"string","description":"Path to map to\n"},"port":{"type":"integer","description":"Port to map to. Default: 80\n"},"protocol":{"type":"string","description":"Protocol to use\n"},"readTimeout":{"type":"integer","description":"Read timeout. Default(ms): 60000\n"},"retries":{"type":"integer","description":"Number of retries. Default: 5\n"},"tags":{"type":"array","items":{"type":"string"},"description":"A list of strings associated with the Service for grouping and filtering.\n"},"tlsVerify":{"type":"boolean","description":"Whether to enable verification of upstream server TLS certificate. If not set then the nginx default is respected.\n"},"tlsVerifyDepth":{"type":"integer","description":"Maximum depth of chain while verifying Upstream server’s TLS certificate.\n"},"writeTimeout":{"type":"integer","description":"Write timout. Default(ms): 60000\n"}},"type":"object"}},"kong:index/target:Target":{"description":"## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as kong from \"@pulumi/kong\";\n\nconst target = new kong.Target(\"target\", {\n    target: \"sample_target:80\",\n    weight: 10,\n    upstreamId: upstream.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_kong as kong\n\ntarget = kong.Target(\"target\",\n    target=\"sample_target:80\",\n    weight=10,\n    upstream_id=upstream[\"id\"])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Kong = Pulumi.Kong;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var target = new Kong.Target(\"target\", new()\n    {\n        TargetAddress = \"sample_target:80\",\n        Weight = 10,\n        UpstreamId = upstream.Id,\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-kong/sdk/v4/go/kong\"\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 := kong.NewTarget(ctx, \"target\", \u0026kong.TargetArgs{\n\t\t\tTarget:     pulumi.String(\"sample_target:80\"),\n\t\t\tWeight:     pulumi.Int(10),\n\t\t\tUpstreamId: pulumi.Any(upstream.Id),\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.kong.Target;\nimport com.pulumi.kong.TargetArgs;\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 target = new Target(\"target\", TargetArgs.builder()\n            .target(\"sample_target:80\")\n            .weight(10)\n            .upstreamId(upstream.id())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  target:\n    type: kong:Target\n    properties:\n      target: sample_target:80\n      weight: 10\n      upstreamId: ${upstream.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nTo import a target use a combination of the upstream id and the target id as follows:\n\n```sh\n$ pulumi import kong:index/target:Target \u003ctarget_identifier\u003e \u003cupstream_id\u003e/\u003ctarget_id\u003e\n```\n\n","properties":{"tags":{"type":"array","items":{"type":"string"},"description":"A list set of strings associated with the Plugin for grouping and filtering\n"},"target":{"type":"string","description":"is the target address (IP or hostname) and port. If omitted the port defaults to 8000.\n","language":{"csharp":{"name":"TargetAddress"}}},"upstreamId":{"type":"string","description":"is the id of the upstream to apply this target to.\n"},"weight":{"type":"integer","description":"is the weight this target gets within the upstream load balancer (0-1000, defaults to 100).\n"}},"required":["target","upstreamId","weight"],"inputProperties":{"tags":{"type":"array","items":{"type":"string"},"description":"A list set of strings associated with the Plugin for grouping and filtering\n","willReplaceOnChanges":true},"target":{"type":"string","description":"is the target address (IP or hostname) and port. If omitted the port defaults to 8000.\n","language":{"csharp":{"name":"TargetAddress"}},"willReplaceOnChanges":true},"upstreamId":{"type":"string","description":"is the id of the upstream to apply this target to.\n","willReplaceOnChanges":true},"weight":{"type":"integer","description":"is the weight this target gets within the upstream load balancer (0-1000, defaults to 100).\n","willReplaceOnChanges":true}},"requiredInputs":["target","upstreamId","weight"],"stateInputs":{"description":"Input properties used for looking up and filtering Target resources.\n","properties":{"tags":{"type":"array","items":{"type":"string"},"description":"A list set of strings associated with the Plugin for grouping and filtering\n","willReplaceOnChanges":true},"target":{"type":"string","description":"is the target address (IP or hostname) and port. If omitted the port defaults to 8000.\n","language":{"csharp":{"name":"TargetAddress"}},"willReplaceOnChanges":true},"upstreamId":{"type":"string","description":"is the id of the upstream to apply this target to.\n","willReplaceOnChanges":true},"weight":{"type":"integer","description":"is the weight this target gets within the upstream load balancer (0-1000, defaults to 100).\n","willReplaceOnChanges":true}},"type":"object"}},"kong:index/upstream:Upstream":{"description":"## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as kong from \"@pulumi/kong\";\n\nconst certificate = new kong.Certificate(\"certificate\", {\n    certificate: `    -----BEGIN CERTIFICATE-----\n    ......\n    -----END CERTIFICATE-----\n`,\n    privateKey: `    -----BEGIN PRIVATE KEY-----\n    .....\n    -----END PRIVATE KEY-----\n`,\n    snis: [\"foo.com\"],\n});\nconst upstream = new kong.Upstream(\"upstream\", {\n    name: \"sample_upstream\",\n    slots: 10,\n    hashOn: \"header\",\n    hashFallback: \"cookie\",\n    hashOnHeader: \"HeaderName\",\n    hashFallbackHeader: \"FallbackHeaderName\",\n    hashOnCookie: \"CookieName\",\n    hashOnCookiePath: \"/path\",\n    hostHeader: \"x-host\",\n    tags: [\n        \"a\",\n        \"b\",\n    ],\n    clientCertificateId: certificate.id,\n    healthchecks: {\n        active: {\n            type: \"https\",\n            httpPath: \"/status\",\n            timeout: 10,\n            concurrency: 20,\n            httpsVerifyCertificate: false,\n            httpsSni: \"some.domain.com\",\n            healthy: {\n                successes: 1,\n                interval: 5,\n                httpStatuses: [\n                    200,\n                    201,\n                ],\n            },\n            unhealthy: {\n                timeouts: 7,\n                interval: 3,\n                tcpFailures: 1,\n                httpFailures: 2,\n                httpStatuses: [\n                    500,\n                    501,\n                ],\n            },\n        },\n        passive: {\n            type: \"https\",\n            healthy: {\n                successes: 1,\n                httpStatuses: [\n                    200,\n                    201,\n                    202,\n                ],\n            },\n            unhealthy: {\n                timeouts: 3,\n                tcpFailures: 5,\n                httpFailures: 6,\n                httpStatuses: [\n                    500,\n                    501,\n                    502,\n                ],\n            },\n        },\n    },\n});\n```\n```python\nimport pulumi\nimport pulumi_kong as kong\n\ncertificate = kong.Certificate(\"certificate\",\n    certificate=\"\"\"    -----BEGIN CERTIFICATE-----\n    ......\n    -----END CERTIFICATE-----\n\"\"\",\n    private_key=\"\"\"    -----BEGIN PRIVATE KEY-----\n    .....\n    -----END PRIVATE KEY-----\n\"\"\",\n    snis=[\"foo.com\"])\nupstream = kong.Upstream(\"upstream\",\n    name=\"sample_upstream\",\n    slots=10,\n    hash_on=\"header\",\n    hash_fallback=\"cookie\",\n    hash_on_header=\"HeaderName\",\n    hash_fallback_header=\"FallbackHeaderName\",\n    hash_on_cookie=\"CookieName\",\n    hash_on_cookie_path=\"/path\",\n    host_header=\"x-host\",\n    tags=[\n        \"a\",\n        \"b\",\n    ],\n    client_certificate_id=certificate.id,\n    healthchecks={\n        \"active\": {\n            \"type\": \"https\",\n            \"http_path\": \"/status\",\n            \"timeout\": 10,\n            \"concurrency\": 20,\n            \"https_verify_certificate\": False,\n            \"https_sni\": \"some.domain.com\",\n            \"healthy\": {\n                \"successes\": 1,\n                \"interval\": 5,\n                \"http_statuses\": [\n                    200,\n                    201,\n                ],\n            },\n            \"unhealthy\": {\n                \"timeouts\": 7,\n                \"interval\": 3,\n                \"tcp_failures\": 1,\n                \"http_failures\": 2,\n                \"http_statuses\": [\n                    500,\n                    501,\n                ],\n            },\n        },\n        \"passive\": {\n            \"type\": \"https\",\n            \"healthy\": {\n                \"successes\": 1,\n                \"http_statuses\": [\n                    200,\n                    201,\n                    202,\n                ],\n            },\n            \"unhealthy\": {\n                \"timeouts\": 3,\n                \"tcp_failures\": 5,\n                \"http_failures\": 6,\n                \"http_statuses\": [\n                    500,\n                    501,\n                    502,\n                ],\n            },\n        },\n    })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Kong = Pulumi.Kong;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n    var certificate = new Kong.Certificate(\"certificate\", new()\n    {\n        Cert = @\"    -----BEGIN CERTIFICATE-----\n    ......\n    -----END CERTIFICATE-----\n\",\n        PrivateKey = @\"    -----BEGIN PRIVATE KEY-----\n    .....\n    -----END PRIVATE KEY-----\n\",\n        Snis = new[]\n        {\n            \"foo.com\",\n        },\n    });\n\n    var upstream = new Kong.Upstream(\"upstream\", new()\n    {\n        Name = \"sample_upstream\",\n        Slots = 10,\n        HashOn = \"header\",\n        HashFallback = \"cookie\",\n        HashOnHeader = \"HeaderName\",\n        HashFallbackHeader = \"FallbackHeaderName\",\n        HashOnCookie = \"CookieName\",\n        HashOnCookiePath = \"/path\",\n        HostHeader = \"x-host\",\n        Tags = new[]\n        {\n            \"a\",\n            \"b\",\n        },\n        ClientCertificateId = certificate.Id,\n        Healthchecks = new Kong.Inputs.UpstreamHealthchecksArgs\n        {\n            Active = new Kong.Inputs.UpstreamHealthchecksActiveArgs\n            {\n                Type = \"https\",\n                HttpPath = \"/status\",\n                Timeout = 10,\n                Concurrency = 20,\n                HttpsVerifyCertificate = false,\n                HttpsSni = \"some.domain.com\",\n                Healthy = new Kong.Inputs.UpstreamHealthchecksActiveHealthyArgs\n                {\n                    Successes = 1,\n                    Interval = 5,\n                    HttpStatuses = new[]\n                    {\n                        200,\n                        201,\n                    },\n                },\n                Unhealthy = new Kong.Inputs.UpstreamHealthchecksActiveUnhealthyArgs\n                {\n                    Timeouts = 7,\n                    Interval = 3,\n                    TcpFailures = 1,\n                    HttpFailures = 2,\n                    HttpStatuses = new[]\n                    {\n                        500,\n                        501,\n                    },\n                },\n            },\n            Passive = new Kong.Inputs.UpstreamHealthchecksPassiveArgs\n            {\n                Type = \"https\",\n                Healthy = new Kong.Inputs.UpstreamHealthchecksPassiveHealthyArgs\n                {\n                    Successes = 1,\n                    HttpStatuses = new[]\n                    {\n                        200,\n                        201,\n                        202,\n                    },\n                },\n                Unhealthy = new Kong.Inputs.UpstreamHealthchecksPassiveUnhealthyArgs\n                {\n                    Timeouts = 3,\n                    TcpFailures = 5,\n                    HttpFailures = 6,\n                    HttpStatuses = new[]\n                    {\n                        500,\n                        501,\n                        502,\n                    },\n                },\n            },\n        },\n    });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-kong/sdk/v4/go/kong\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcertificate, err := kong.NewCertificate(ctx, \"certificate\", \u0026kong.CertificateArgs{\n\t\t\tCertificate: pulumi.String(\"    -----BEGIN CERTIFICATE-----\\n    ......\\n    -----END CERTIFICATE-----\\n\"),\n\t\t\tPrivateKey:  pulumi.String(\"    -----BEGIN PRIVATE KEY-----\\n    .....\\n    -----END PRIVATE KEY-----\\n\"),\n\t\t\tSnis: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"foo.com\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = kong.NewUpstream(ctx, \"upstream\", \u0026kong.UpstreamArgs{\n\t\t\tName:               pulumi.String(\"sample_upstream\"),\n\t\t\tSlots:              pulumi.Int(10),\n\t\t\tHashOn:             pulumi.String(\"header\"),\n\t\t\tHashFallback:       pulumi.String(\"cookie\"),\n\t\t\tHashOnHeader:       pulumi.String(\"HeaderName\"),\n\t\t\tHashFallbackHeader: pulumi.String(\"FallbackHeaderName\"),\n\t\t\tHashOnCookie:       pulumi.String(\"CookieName\"),\n\t\t\tHashOnCookiePath:   pulumi.String(\"/path\"),\n\t\t\tHostHeader:         pulumi.String(\"x-host\"),\n\t\t\tTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"a\"),\n\t\t\t\tpulumi.String(\"b\"),\n\t\t\t},\n\t\t\tClientCertificateId: certificate.ID(),\n\t\t\tHealthchecks: \u0026kong.UpstreamHealthchecksArgs{\n\t\t\t\tActive: \u0026kong.UpstreamHealthchecksActiveArgs{\n\t\t\t\t\tType:                   pulumi.String(\"https\"),\n\t\t\t\t\tHttpPath:               pulumi.String(\"/status\"),\n\t\t\t\t\tTimeout:                pulumi.Int(10),\n\t\t\t\t\tConcurrency:            pulumi.Int(20),\n\t\t\t\t\tHttpsVerifyCertificate: pulumi.Bool(false),\n\t\t\t\t\tHttpsSni:               pulumi.String(\"some.domain.com\"),\n\t\t\t\t\tHealthy: \u0026kong.UpstreamHealthchecksActiveHealthyArgs{\n\t\t\t\t\t\tSuccesses: pulumi.Int(1),\n\t\t\t\t\t\tInterval:  pulumi.Int(5),\n\t\t\t\t\t\tHttpStatuses: pulumi.IntArray{\n\t\t\t\t\t\t\tpulumi.Int(200),\n\t\t\t\t\t\t\tpulumi.Int(201),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tUnhealthy: \u0026kong.UpstreamHealthchecksActiveUnhealthyArgs{\n\t\t\t\t\t\tTimeouts:     pulumi.Int(7),\n\t\t\t\t\t\tInterval:     pulumi.Int(3),\n\t\t\t\t\t\tTcpFailures:  pulumi.Int(1),\n\t\t\t\t\t\tHttpFailures: pulumi.Int(2),\n\t\t\t\t\t\tHttpStatuses: pulumi.IntArray{\n\t\t\t\t\t\t\tpulumi.Int(500),\n\t\t\t\t\t\t\tpulumi.Int(501),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tPassive: \u0026kong.UpstreamHealthchecksPassiveArgs{\n\t\t\t\t\tType: pulumi.String(\"https\"),\n\t\t\t\t\tHealthy: \u0026kong.UpstreamHealthchecksPassiveHealthyArgs{\n\t\t\t\t\t\tSuccesses: pulumi.Int(1),\n\t\t\t\t\t\tHttpStatuses: pulumi.IntArray{\n\t\t\t\t\t\t\tpulumi.Int(200),\n\t\t\t\t\t\t\tpulumi.Int(201),\n\t\t\t\t\t\t\tpulumi.Int(202),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tUnhealthy: \u0026kong.UpstreamHealthchecksPassiveUnhealthyArgs{\n\t\t\t\t\t\tTimeouts:     pulumi.Int(3),\n\t\t\t\t\t\tTcpFailures:  pulumi.Int(5),\n\t\t\t\t\t\tHttpFailures: pulumi.Int(6),\n\t\t\t\t\t\tHttpStatuses: pulumi.IntArray{\n\t\t\t\t\t\t\tpulumi.Int(500),\n\t\t\t\t\t\t\tpulumi.Int(501),\n\t\t\t\t\t\t\tpulumi.Int(502),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.kong.Certificate;\nimport com.pulumi.kong.CertificateArgs;\nimport com.pulumi.kong.Upstream;\nimport com.pulumi.kong.UpstreamArgs;\nimport com.pulumi.kong.inputs.UpstreamHealthchecksArgs;\nimport com.pulumi.kong.inputs.UpstreamHealthchecksActiveArgs;\nimport com.pulumi.kong.inputs.UpstreamHealthchecksActiveHealthyArgs;\nimport com.pulumi.kong.inputs.UpstreamHealthchecksActiveUnhealthyArgs;\nimport com.pulumi.kong.inputs.UpstreamHealthchecksPassiveArgs;\nimport com.pulumi.kong.inputs.UpstreamHealthchecksPassiveHealthyArgs;\nimport com.pulumi.kong.inputs.UpstreamHealthchecksPassiveUnhealthyArgs;\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 certificate = new Certificate(\"certificate\", CertificateArgs.builder()\n            .certificate(\"\"\"\n    -----BEGIN CERTIFICATE-----\n    ......\n    -----END CERTIFICATE-----\n            \"\"\")\n            .privateKey(\"\"\"\n    -----BEGIN PRIVATE KEY-----\n    .....\n    -----END PRIVATE KEY-----\n            \"\"\")\n            .snis(\"foo.com\")\n            .build());\n\n        var upstream = new Upstream(\"upstream\", UpstreamArgs.builder()\n            .name(\"sample_upstream\")\n            .slots(10)\n            .hashOn(\"header\")\n            .hashFallback(\"cookie\")\n            .hashOnHeader(\"HeaderName\")\n            .hashFallbackHeader(\"FallbackHeaderName\")\n            .hashOnCookie(\"CookieName\")\n            .hashOnCookiePath(\"/path\")\n            .hostHeader(\"x-host\")\n            .tags(            \n                \"a\",\n                \"b\")\n            .clientCertificateId(certificate.id())\n            .healthchecks(UpstreamHealthchecksArgs.builder()\n                .active(UpstreamHealthchecksActiveArgs.builder()\n                    .type(\"https\")\n                    .httpPath(\"/status\")\n                    .timeout(10)\n                    .concurrency(20)\n                    .httpsVerifyCertificate(false)\n                    .httpsSni(\"some.domain.com\")\n                    .healthy(UpstreamHealthchecksActiveHealthyArgs.builder()\n                        .successes(1)\n                        .interval(5)\n                        .httpStatuses(                        \n                            200,\n                            201)\n                        .build())\n                    .unhealthy(UpstreamHealthchecksActiveUnhealthyArgs.builder()\n                        .timeouts(7)\n                        .interval(3)\n                        .tcpFailures(1)\n                        .httpFailures(2)\n                        .httpStatuses(                        \n                            500,\n                            501)\n                        .build())\n                    .build())\n                .passive(UpstreamHealthchecksPassiveArgs.builder()\n                    .type(\"https\")\n                    .healthy(UpstreamHealthchecksPassiveHealthyArgs.builder()\n                        .successes(1)\n                        .httpStatuses(                        \n                            200,\n                            201,\n                            202)\n                        .build())\n                    .unhealthy(UpstreamHealthchecksPassiveUnhealthyArgs.builder()\n                        .timeouts(3)\n                        .tcpFailures(5)\n                        .httpFailures(6)\n                        .httpStatuses(                        \n                            500,\n                            501,\n                            502)\n                        .build())\n                    .build())\n                .build())\n            .build());\n\n    }\n}\n```\n```yaml\nresources:\n  certificate:\n    type: kong:Certificate\n    properties:\n      certificate: |2\n            -----BEGIN CERTIFICATE-----\n            ......\n            -----END CERTIFICATE-----\n      privateKey: |2\n            -----BEGIN PRIVATE KEY-----\n            .....\n            -----END PRIVATE KEY-----\n      snis:\n        - foo.com\n  upstream:\n    type: kong:Upstream\n    properties:\n      name: sample_upstream\n      slots: 10\n      hashOn: header\n      hashFallback: cookie\n      hashOnHeader: HeaderName\n      hashFallbackHeader: FallbackHeaderName\n      hashOnCookie: CookieName\n      hashOnCookiePath: /path\n      hostHeader: x-host\n      tags:\n        - a\n        - b\n      clientCertificateId: ${certificate.id}\n      healthchecks:\n        active:\n          type: https\n          httpPath: /status\n          timeout: 10\n          concurrency: 20\n          httpsVerifyCertificate: false\n          httpsSni: some.domain.com\n          healthy:\n            successes: 1\n            interval: 5\n            httpStatuses:\n              - 200\n              - 201\n          unhealthy:\n            timeouts: 7\n            interval: 3\n            tcpFailures: 1\n            httpFailures: 2\n            httpStatuses:\n              - 500\n              - 501\n        passive:\n          type: https\n          healthy:\n            successes: 1\n            httpStatuses:\n              - 200\n              - 201\n              - 202\n          unhealthy:\n            timeouts: 3\n            tcpFailures: 5\n            httpFailures: 6\n            httpStatuses:\n              - 500\n              - 501\n              - 502\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nTo import an upstream:\n\n```sh\n$ pulumi import kong:index/upstream:Upstream \u003cupstream_identifier\u003e \u003cupstream_id\u003e\n```\n\n","properties":{"clientCertificateId":{"type":"string","description":"The ID of the client certificate to use (from certificate resource) while TLS handshaking to the upstream server.\n"},"hashFallback":{"type":"string","description":"is a hashing input type if the primary \u003cspan pulumi-lang-nodejs=\"`hashOn`\" pulumi-lang-dotnet=\"`HashOn`\" pulumi-lang-go=\"`hashOn`\" pulumi-lang-python=\"`hash_on`\" pulumi-lang-yaml=\"`hashOn`\" pulumi-lang-java=\"`hashOn`\"\u003e`hash_on`\u003c/span\u003e does not return a hash (eg. header is missing, or no consumer identified). One of: \u003cspan pulumi-lang-nodejs=\"`none`\" pulumi-lang-dotnet=\"`None`\" pulumi-lang-go=\"`none`\" pulumi-lang-python=\"`none`\" pulumi-lang-yaml=\"`none`\" pulumi-lang-java=\"`none`\"\u003e`none`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`consumer`\" pulumi-lang-dotnet=\"`Consumer`\" pulumi-lang-go=\"`consumer`\" pulumi-lang-python=\"`consumer`\" pulumi-lang-yaml=\"`consumer`\" pulumi-lang-java=\"`consumer`\"\u003e`consumer`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`ip`\" pulumi-lang-dotnet=\"`Ip`\" pulumi-lang-go=\"`ip`\" pulumi-lang-python=\"`ip`\" pulumi-lang-yaml=\"`ip`\" pulumi-lang-java=\"`ip`\"\u003e`ip`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`header`\" pulumi-lang-dotnet=\"`Header`\" pulumi-lang-go=\"`header`\" pulumi-lang-python=\"`header`\" pulumi-lang-yaml=\"`header`\" pulumi-lang-java=\"`header`\"\u003e`header`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`cookie`\" pulumi-lang-dotnet=\"`Cookie`\" pulumi-lang-go=\"`cookie`\" pulumi-lang-python=\"`cookie`\" pulumi-lang-yaml=\"`cookie`\" pulumi-lang-java=\"`cookie`\"\u003e`cookie`\u003c/span\u003e. Not available if \u003cspan pulumi-lang-nodejs=\"`hashOn`\" pulumi-lang-dotnet=\"`HashOn`\" pulumi-lang-go=\"`hashOn`\" pulumi-lang-python=\"`hash_on`\" pulumi-lang-yaml=\"`hashOn`\" pulumi-lang-java=\"`hashOn`\"\u003e`hash_on`\u003c/span\u003e is set to \u003cspan pulumi-lang-nodejs=\"`cookie`\" pulumi-lang-dotnet=\"`Cookie`\" pulumi-lang-go=\"`cookie`\" pulumi-lang-python=\"`cookie`\" pulumi-lang-yaml=\"`cookie`\" pulumi-lang-java=\"`cookie`\"\u003e`cookie`\u003c/span\u003e. Defaults to \u003cspan pulumi-lang-nodejs=\"`none`\" pulumi-lang-dotnet=\"`None`\" pulumi-lang-go=\"`none`\" pulumi-lang-python=\"`none`\" pulumi-lang-yaml=\"`none`\" pulumi-lang-java=\"`none`\"\u003e`none`\u003c/span\u003e.\n"},"hashFallbackHeader":{"type":"string","description":"is a header name to take the value from as hash input. Only required when \u003cspan pulumi-lang-nodejs=\"`hashFallback`\" pulumi-lang-dotnet=\"`HashFallback`\" pulumi-lang-go=\"`hashFallback`\" pulumi-lang-python=\"`hash_fallback`\" pulumi-lang-yaml=\"`hashFallback`\" pulumi-lang-java=\"`hashFallback`\"\u003e`hash_fallback`\u003c/span\u003e is set to \u003cspan pulumi-lang-nodejs=\"`header`\" pulumi-lang-dotnet=\"`Header`\" pulumi-lang-go=\"`header`\" pulumi-lang-python=\"`header`\" pulumi-lang-yaml=\"`header`\" pulumi-lang-java=\"`header`\"\u003e`header`\u003c/span\u003e. Default \u003cspan pulumi-lang-nodejs=\"`nil`\" pulumi-lang-dotnet=\"`Nil`\" pulumi-lang-go=\"`nil`\" pulumi-lang-python=\"`nil`\" pulumi-lang-yaml=\"`nil`\" pulumi-lang-java=\"`nil`\"\u003e`nil`\u003c/span\u003e.\n"},"hashOn":{"type":"string","description":"is a hashing input type: `none `(resulting in a weighted*round*robin scheme with no hashing), \u003cspan pulumi-lang-nodejs=\"`consumer`\" pulumi-lang-dotnet=\"`Consumer`\" pulumi-lang-go=\"`consumer`\" pulumi-lang-python=\"`consumer`\" pulumi-lang-yaml=\"`consumer`\" pulumi-lang-java=\"`consumer`\"\u003e`consumer`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`ip`\" pulumi-lang-dotnet=\"`Ip`\" pulumi-lang-go=\"`ip`\" pulumi-lang-python=\"`ip`\" pulumi-lang-yaml=\"`ip`\" pulumi-lang-java=\"`ip`\"\u003e`ip`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`header`\" pulumi-lang-dotnet=\"`Header`\" pulumi-lang-go=\"`header`\" pulumi-lang-python=\"`header`\" pulumi-lang-yaml=\"`header`\" pulumi-lang-java=\"`header`\"\u003e`header`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`cookie`\" pulumi-lang-dotnet=\"`Cookie`\" pulumi-lang-go=\"`cookie`\" pulumi-lang-python=\"`cookie`\" pulumi-lang-yaml=\"`cookie`\" pulumi-lang-java=\"`cookie`\"\u003e`cookie`\u003c/span\u003e. Defaults to \u003cspan pulumi-lang-nodejs=\"`none`\" pulumi-lang-dotnet=\"`None`\" pulumi-lang-go=\"`none`\" pulumi-lang-python=\"`none`\" pulumi-lang-yaml=\"`none`\" pulumi-lang-java=\"`none`\"\u003e`none`\u003c/span\u003e.\n"},"hashOnCookie":{"type":"string","description":"is a cookie name to take the value from as hash input. Only required when \u003cspan pulumi-lang-nodejs=\"`hashOn`\" pulumi-lang-dotnet=\"`HashOn`\" pulumi-lang-go=\"`hashOn`\" pulumi-lang-python=\"`hash_on`\" pulumi-lang-yaml=\"`hashOn`\" pulumi-lang-java=\"`hashOn`\"\u003e`hash_on`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`hashFallback`\" pulumi-lang-dotnet=\"`HashFallback`\" pulumi-lang-go=\"`hashFallback`\" pulumi-lang-python=\"`hash_fallback`\" pulumi-lang-yaml=\"`hashFallback`\" pulumi-lang-java=\"`hashFallback`\"\u003e`hash_fallback`\u003c/span\u003e is set to \u003cspan pulumi-lang-nodejs=\"`cookie`\" pulumi-lang-dotnet=\"`Cookie`\" pulumi-lang-go=\"`cookie`\" pulumi-lang-python=\"`cookie`\" pulumi-lang-yaml=\"`cookie`\" pulumi-lang-java=\"`cookie`\"\u003e`cookie`\u003c/span\u003e. If the specified cookie is not in the request, Kong will generate a value and set the cookie in the response. Default \u003cspan pulumi-lang-nodejs=\"`nil`\" pulumi-lang-dotnet=\"`Nil`\" pulumi-lang-go=\"`nil`\" pulumi-lang-python=\"`nil`\" pulumi-lang-yaml=\"`nil`\" pulumi-lang-java=\"`nil`\"\u003e`nil`\u003c/span\u003e.\n"},"hashOnCookiePath":{"type":"string","description":"is a cookie path to set in the response headers. Only required when \u003cspan pulumi-lang-nodejs=\"`hashOn`\" pulumi-lang-dotnet=\"`HashOn`\" pulumi-lang-go=\"`hashOn`\" pulumi-lang-python=\"`hash_on`\" pulumi-lang-yaml=\"`hashOn`\" pulumi-lang-java=\"`hashOn`\"\u003e`hash_on`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`hashFallback`\" pulumi-lang-dotnet=\"`HashFallback`\" pulumi-lang-go=\"`hashFallback`\" pulumi-lang-python=\"`hash_fallback`\" pulumi-lang-yaml=\"`hashFallback`\" pulumi-lang-java=\"`hashFallback`\"\u003e`hash_fallback`\u003c/span\u003e is set to \u003cspan pulumi-lang-nodejs=\"`cookie`\" pulumi-lang-dotnet=\"`Cookie`\" pulumi-lang-go=\"`cookie`\" pulumi-lang-python=\"`cookie`\" pulumi-lang-yaml=\"`cookie`\" pulumi-lang-java=\"`cookie`\"\u003e`cookie`\u003c/span\u003e. Defaults to `/`.\n* `healthchecks.active.type` - (Optional) is a active health check type. HTTP or HTTPS, or just attempt a TCP connection. Possible values are \u003cspan pulumi-lang-nodejs=\"`tcp`\" pulumi-lang-dotnet=\"`Tcp`\" pulumi-lang-go=\"`tcp`\" pulumi-lang-python=\"`tcp`\" pulumi-lang-yaml=\"`tcp`\" pulumi-lang-java=\"`tcp`\"\u003e`tcp`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`http`\" pulumi-lang-dotnet=\"`Http`\" pulumi-lang-go=\"`http`\" pulumi-lang-python=\"`http`\" pulumi-lang-yaml=\"`http`\" pulumi-lang-java=\"`http`\"\u003e`http`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`https`\" pulumi-lang-dotnet=\"`Https`\" pulumi-lang-go=\"`https`\" pulumi-lang-python=\"`https`\" pulumi-lang-yaml=\"`https`\" pulumi-lang-java=\"`https`\"\u003e`https`\u003c/span\u003e. Defaults to \u003cspan pulumi-lang-nodejs=\"`http`\" pulumi-lang-dotnet=\"`Http`\" pulumi-lang-go=\"`http`\" pulumi-lang-python=\"`http`\" pulumi-lang-yaml=\"`http`\" pulumi-lang-java=\"`http`\"\u003e`http`\u003c/span\u003e.\n* `healthchecks.active.timeout` - (Optional) is a socket timeout for active health checks (in seconds). Defaults to \u003cspan pulumi-lang-nodejs=\"`1`\" pulumi-lang-dotnet=\"`1`\" pulumi-lang-go=\"`1`\" pulumi-lang-python=\"`1`\" pulumi-lang-yaml=\"`1`\" pulumi-lang-java=\"`1`\"\u003e`1`\u003c/span\u003e.\n* `healthchecks.active.concurrency` - (Optional) is a number of targets to check concurrently in active health checks. Defaults to \u003cspan pulumi-lang-nodejs=\"`10`\" pulumi-lang-dotnet=\"`10`\" pulumi-lang-go=\"`10`\" pulumi-lang-python=\"`10`\" pulumi-lang-yaml=\"`10`\" pulumi-lang-java=\"`10`\"\u003e`10`\u003c/span\u003e.\n* `healthchecks.active.http_path` - (Optional) is a path to use in GET HTTP request to run as a probe on active health checks. Defaults to `/`.\n* `healthchecks.active.https_verify_certificate` - (Optional) check the validity of the SSL certificate of the remote host when performing active health checks using HTTPS. Defaults to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e.\n* `healthchecks.active.https_sni` - (Optional) is the hostname to use as an SNI (Server Name Identification) when performing active health checks using HTTPS. This is particularly useful when Targets are configured using IPs, so that the target host’s certificate can be verified with the proper SNI. Default \u003cspan pulumi-lang-nodejs=\"`nil`\" pulumi-lang-dotnet=\"`Nil`\" pulumi-lang-go=\"`nil`\" pulumi-lang-python=\"`nil`\" pulumi-lang-yaml=\"`nil`\" pulumi-lang-java=\"`nil`\"\u003e`nil`\u003c/span\u003e.\n* `healthchecks.active.healthy.interval` - (Optional) is an interval between active health checks for healthy targets (in seconds). A value of zero indicates that active probes for healthy targets should not be performed. Defaults to \u003cspan pulumi-lang-nodejs=\"`0`\" pulumi-lang-dotnet=\"`0`\" pulumi-lang-go=\"`0`\" pulumi-lang-python=\"`0`\" pulumi-lang-yaml=\"`0`\" pulumi-lang-java=\"`0`\"\u003e`0`\u003c/span\u003e.\n* `healthchecks.active.healthy.successes` - (Optional) is a number of successes in active probes (as defined by `healthchecks.active.healthy.http_statuses`) to consider a target healthy. Defaults to \u003cspan pulumi-lang-nodejs=\"`0`\" pulumi-lang-dotnet=\"`0`\" pulumi-lang-go=\"`0`\" pulumi-lang-python=\"`0`\" pulumi-lang-yaml=\"`0`\" pulumi-lang-java=\"`0`\"\u003e`0`\u003c/span\u003e.\n* `healthchecks.active.healthy.http_statuses` - (Optional) is an array of HTTP statuses to consider a success, indicating healthiness, when returned by a probe in active health checks. Defaults to `[200, 302]`.\n* `healthchecks.active.unhealthy.interval` - (Optional) is an interval between active health checks for unhealthy targets (in seconds). A value of zero indicates that active probes for unhealthy targets should not be performed. Defaults to \u003cspan pulumi-lang-nodejs=\"`0`\" pulumi-lang-dotnet=\"`0`\" pulumi-lang-go=\"`0`\" pulumi-lang-python=\"`0`\" pulumi-lang-yaml=\"`0`\" pulumi-lang-java=\"`0`\"\u003e`0`\u003c/span\u003e.\n* `healthchecks.active.unhealthy.tcp_failures` - (Optional) is a number of TCP failures in active probes to consider a target unhealthy. Defaults to \u003cspan pulumi-lang-nodejs=\"`0`\" pulumi-lang-dotnet=\"`0`\" pulumi-lang-go=\"`0`\" pulumi-lang-python=\"`0`\" pulumi-lang-yaml=\"`0`\" pulumi-lang-java=\"`0`\"\u003e`0`\u003c/span\u003e.\n* `healthchecks.active.unhealthy.http_failures` - (Optional) is a number of HTTP failures in active probes (as defined by `healthchecks.active.unhealthy.http_statuses`) to consider a target unhealthy. Defaults to \u003cspan pulumi-lang-nodejs=\"`0`\" pulumi-lang-dotnet=\"`0`\" pulumi-lang-go=\"`0`\" pulumi-lang-python=\"`0`\" pulumi-lang-yaml=\"`0`\" pulumi-lang-java=\"`0`\"\u003e`0`\u003c/span\u003e.\n* `healthchecks.active.unhealthy.timeouts` - (Optional) is a number of timeouts in active probes to consider a target unhealthy. Defaults to \u003cspan pulumi-lang-nodejs=\"`0`\" pulumi-lang-dotnet=\"`0`\" pulumi-lang-go=\"`0`\" pulumi-lang-python=\"`0`\" pulumi-lang-yaml=\"`0`\" pulumi-lang-java=\"`0`\"\u003e`0`\u003c/span\u003e.\n* `healthchecks.active.unhealthy.http_statuses` - (Optional) is an array of HTTP statuses to consider a failure, indicating unhealthiness, when returned by a probe in active health checks. Defaults to `[429, 404, 500, 501, 502, 503, 504, 505]`.\n* `healthchecks.passive.type` - (Optional) is a passive health check type. Interpreting HTTP/HTTPS statuses, or just check for TCP connection success. Possible values are \u003cspan pulumi-lang-nodejs=\"`tcp`\" pulumi-lang-dotnet=\"`Tcp`\" pulumi-lang-go=\"`tcp`\" pulumi-lang-python=\"`tcp`\" pulumi-lang-yaml=\"`tcp`\" pulumi-lang-java=\"`tcp`\"\u003e`tcp`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`http`\" pulumi-lang-dotnet=\"`Http`\" pulumi-lang-go=\"`http`\" pulumi-lang-python=\"`http`\" pulumi-lang-yaml=\"`http`\" pulumi-lang-java=\"`http`\"\u003e`http`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`https`\" pulumi-lang-dotnet=\"`Https`\" pulumi-lang-go=\"`https`\" pulumi-lang-python=\"`https`\" pulumi-lang-yaml=\"`https`\" pulumi-lang-java=\"`https`\"\u003e`https`\u003c/span\u003e (in passive checks, \u003cspan pulumi-lang-nodejs=\"`http`\" pulumi-lang-dotnet=\"`Http`\" pulumi-lang-go=\"`http`\" pulumi-lang-python=\"`http`\" pulumi-lang-yaml=\"`http`\" pulumi-lang-java=\"`http`\"\u003e`http`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`https`\" pulumi-lang-dotnet=\"`Https`\" pulumi-lang-go=\"`https`\" pulumi-lang-python=\"`https`\" pulumi-lang-yaml=\"`https`\" pulumi-lang-java=\"`https`\"\u003e`https`\u003c/span\u003e options are equivalent.). Defaults to \u003cspan pulumi-lang-nodejs=\"`http`\" pulumi-lang-dotnet=\"`Http`\" pulumi-lang-go=\"`http`\" pulumi-lang-python=\"`http`\" pulumi-lang-yaml=\"`http`\" pulumi-lang-java=\"`http`\"\u003e`http`\u003c/span\u003e.\n* `healthchecks.passive.healthy.successes` - (Optional) is a Number of successes in proxied traffic (as defined by `healthchecks.passive.healthy.http_statuses`) to consider a target healthy, as observed by passive health checks. Defaults to \u003cspan pulumi-lang-nodejs=\"`0`\" pulumi-lang-dotnet=\"`0`\" pulumi-lang-go=\"`0`\" pulumi-lang-python=\"`0`\" pulumi-lang-yaml=\"`0`\" pulumi-lang-java=\"`0`\"\u003e`0`\u003c/span\u003e.\n* `healthchecks.passive.healthy.http_statuses` - (Optional) is an array of HTTP statuses which represent healthiness when produced by proxied traffic, as observed by passive health checks. Defaults to `[200, 201, 202, 203, 204, 205, 206, 207, 208, 226, 300, 301, 302, 303, 304, 305, 306, 307, 308]`.\n* `healthchecks.passive.unhealthy.tcp_failures` - (Optional) is a number of TCP failures in proxied traffic to consider a target unhealthy, as observed by passive health checks. Defaults to \u003cspan pulumi-lang-nodejs=\"`0`\" pulumi-lang-dotnet=\"`0`\" pulumi-lang-go=\"`0`\" pulumi-lang-python=\"`0`\" pulumi-lang-yaml=\"`0`\" pulumi-lang-java=\"`0`\"\u003e`0`\u003c/span\u003e.\n* `healthchecks.passive.unhealthy.http_failures` - (Optional) is a number of HTTP failures in proxied traffic (as defined by `healthchecks.passive.unhealthy.http_statuses`) to consider a target unhealthy, as observed by passive health checks. Defaults to \u003cspan pulumi-lang-nodejs=\"`0`\" pulumi-lang-dotnet=\"`0`\" pulumi-lang-go=\"`0`\" pulumi-lang-python=\"`0`\" pulumi-lang-yaml=\"`0`\" pulumi-lang-java=\"`0`\"\u003e`0`\u003c/span\u003e.\n* `healthchecks.passive.unhealthy.timeouts` - (Optional) is a number of timeouts in proxied traffic to consider a target unhealthy, as observed by passive health checks. Defaults to \u003cspan pulumi-lang-nodejs=\"`0`\" pulumi-lang-dotnet=\"`0`\" pulumi-lang-go=\"`0`\" pulumi-lang-python=\"`0`\" pulumi-lang-yaml=\"`0`\" pulumi-lang-java=\"`0`\"\u003e`0`\u003c/span\u003e.\n* `healthchecks.passive.unhealthy.http_statuses` - (Optional) is an array of HTTP statuses which represent unhealthiness when produced by proxied traffic, as observed by passive health checks. Defaults to `[429, 500, 503]`.\n"},"hashOnHeader":{"type":"string","description":"is a header name to take the value from as hash input. Only required when \u003cspan pulumi-lang-nodejs=\"`hashOn`\" pulumi-lang-dotnet=\"`HashOn`\" pulumi-lang-go=\"`hashOn`\" pulumi-lang-python=\"`hash_on`\" pulumi-lang-yaml=\"`hashOn`\" pulumi-lang-java=\"`hashOn`\"\u003e`hash_on`\u003c/span\u003e is set to \u003cspan pulumi-lang-nodejs=\"`header`\" pulumi-lang-dotnet=\"`Header`\" pulumi-lang-go=\"`header`\" pulumi-lang-python=\"`header`\" pulumi-lang-yaml=\"`header`\" pulumi-lang-java=\"`header`\"\u003e`header`\u003c/span\u003e. Default \u003cspan pulumi-lang-nodejs=\"`nil`\" pulumi-lang-dotnet=\"`Nil`\" pulumi-lang-go=\"`nil`\" pulumi-lang-python=\"`nil`\" pulumi-lang-yaml=\"`nil`\" pulumi-lang-java=\"`nil`\"\u003e`nil`\u003c/span\u003e.\n"},"healthchecks":{"$ref":"#/types/kong:index/UpstreamHealthchecks:UpstreamHealthchecks"},"hostHeader":{"type":"string","description":"The hostname to be used as Host header when proxying requests through Kong.\n"},"name":{"type":"string","description":"is a hostname, which must be equal to the host of a Service.\n"},"slots":{"type":"integer","description":"is the number of slots in the load balancer algorithm (10*65536, defaults to 10000).\n"},"tags":{"type":"array","items":{"type":"string"},"description":"A list of strings associated with the Upstream for grouping and filtering.\n"}},"required":["healthchecks","name"],"inputProperties":{"clientCertificateId":{"type":"string","description":"The ID of the client certificate to use (from certificate resource) while TLS handshaking to the upstream server.\n"},"hashFallback":{"type":"string","description":"is a hashing input type if the primary \u003cspan pulumi-lang-nodejs=\"`hashOn`\" pulumi-lang-dotnet=\"`HashOn`\" pulumi-lang-go=\"`hashOn`\" pulumi-lang-python=\"`hash_on`\" pulumi-lang-yaml=\"`hashOn`\" pulumi-lang-java=\"`hashOn`\"\u003e`hash_on`\u003c/span\u003e does not return a hash (eg. header is missing, or no consumer identified). One of: \u003cspan pulumi-lang-nodejs=\"`none`\" pulumi-lang-dotnet=\"`None`\" pulumi-lang-go=\"`none`\" pulumi-lang-python=\"`none`\" pulumi-lang-yaml=\"`none`\" pulumi-lang-java=\"`none`\"\u003e`none`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`consumer`\" pulumi-lang-dotnet=\"`Consumer`\" pulumi-lang-go=\"`consumer`\" pulumi-lang-python=\"`consumer`\" pulumi-lang-yaml=\"`consumer`\" pulumi-lang-java=\"`consumer`\"\u003e`consumer`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`ip`\" pulumi-lang-dotnet=\"`Ip`\" pulumi-lang-go=\"`ip`\" pulumi-lang-python=\"`ip`\" pulumi-lang-yaml=\"`ip`\" pulumi-lang-java=\"`ip`\"\u003e`ip`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`header`\" pulumi-lang-dotnet=\"`Header`\" pulumi-lang-go=\"`header`\" pulumi-lang-python=\"`header`\" pulumi-lang-yaml=\"`header`\" pulumi-lang-java=\"`header`\"\u003e`header`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`cookie`\" pulumi-lang-dotnet=\"`Cookie`\" pulumi-lang-go=\"`cookie`\" pulumi-lang-python=\"`cookie`\" pulumi-lang-yaml=\"`cookie`\" pulumi-lang-java=\"`cookie`\"\u003e`cookie`\u003c/span\u003e. Not available if \u003cspan pulumi-lang-nodejs=\"`hashOn`\" pulumi-lang-dotnet=\"`HashOn`\" pulumi-lang-go=\"`hashOn`\" pulumi-lang-python=\"`hash_on`\" pulumi-lang-yaml=\"`hashOn`\" pulumi-lang-java=\"`hashOn`\"\u003e`hash_on`\u003c/span\u003e is set to \u003cspan pulumi-lang-nodejs=\"`cookie`\" pulumi-lang-dotnet=\"`Cookie`\" pulumi-lang-go=\"`cookie`\" pulumi-lang-python=\"`cookie`\" pulumi-lang-yaml=\"`cookie`\" pulumi-lang-java=\"`cookie`\"\u003e`cookie`\u003c/span\u003e. Defaults to \u003cspan pulumi-lang-nodejs=\"`none`\" pulumi-lang-dotnet=\"`None`\" pulumi-lang-go=\"`none`\" pulumi-lang-python=\"`none`\" pulumi-lang-yaml=\"`none`\" pulumi-lang-java=\"`none`\"\u003e`none`\u003c/span\u003e.\n"},"hashFallbackHeader":{"type":"string","description":"is a header name to take the value from as hash input. Only required when \u003cspan pulumi-lang-nodejs=\"`hashFallback`\" pulumi-lang-dotnet=\"`HashFallback`\" pulumi-lang-go=\"`hashFallback`\" pulumi-lang-python=\"`hash_fallback`\" pulumi-lang-yaml=\"`hashFallback`\" pulumi-lang-java=\"`hashFallback`\"\u003e`hash_fallback`\u003c/span\u003e is set to \u003cspan pulumi-lang-nodejs=\"`header`\" pulumi-lang-dotnet=\"`Header`\" pulumi-lang-go=\"`header`\" pulumi-lang-python=\"`header`\" pulumi-lang-yaml=\"`header`\" pulumi-lang-java=\"`header`\"\u003e`header`\u003c/span\u003e. Default \u003cspan pulumi-lang-nodejs=\"`nil`\" pulumi-lang-dotnet=\"`Nil`\" pulumi-lang-go=\"`nil`\" pulumi-lang-python=\"`nil`\" pulumi-lang-yaml=\"`nil`\" pulumi-lang-java=\"`nil`\"\u003e`nil`\u003c/span\u003e.\n"},"hashOn":{"type":"string","description":"is a hashing input type: `none `(resulting in a weighted*round*robin scheme with no hashing), \u003cspan pulumi-lang-nodejs=\"`consumer`\" pulumi-lang-dotnet=\"`Consumer`\" pulumi-lang-go=\"`consumer`\" pulumi-lang-python=\"`consumer`\" pulumi-lang-yaml=\"`consumer`\" pulumi-lang-java=\"`consumer`\"\u003e`consumer`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`ip`\" pulumi-lang-dotnet=\"`Ip`\" pulumi-lang-go=\"`ip`\" pulumi-lang-python=\"`ip`\" pulumi-lang-yaml=\"`ip`\" pulumi-lang-java=\"`ip`\"\u003e`ip`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`header`\" pulumi-lang-dotnet=\"`Header`\" pulumi-lang-go=\"`header`\" pulumi-lang-python=\"`header`\" pulumi-lang-yaml=\"`header`\" pulumi-lang-java=\"`header`\"\u003e`header`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`cookie`\" pulumi-lang-dotnet=\"`Cookie`\" pulumi-lang-go=\"`cookie`\" pulumi-lang-python=\"`cookie`\" pulumi-lang-yaml=\"`cookie`\" pulumi-lang-java=\"`cookie`\"\u003e`cookie`\u003c/span\u003e. Defaults to \u003cspan pulumi-lang-nodejs=\"`none`\" pulumi-lang-dotnet=\"`None`\" pulumi-lang-go=\"`none`\" pulumi-lang-python=\"`none`\" pulumi-lang-yaml=\"`none`\" pulumi-lang-java=\"`none`\"\u003e`none`\u003c/span\u003e.\n"},"hashOnCookie":{"type":"string","description":"is a cookie name to take the value from as hash input. Only required when \u003cspan pulumi-lang-nodejs=\"`hashOn`\" pulumi-lang-dotnet=\"`HashOn`\" pulumi-lang-go=\"`hashOn`\" pulumi-lang-python=\"`hash_on`\" pulumi-lang-yaml=\"`hashOn`\" pulumi-lang-java=\"`hashOn`\"\u003e`hash_on`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`hashFallback`\" pulumi-lang-dotnet=\"`HashFallback`\" pulumi-lang-go=\"`hashFallback`\" pulumi-lang-python=\"`hash_fallback`\" pulumi-lang-yaml=\"`hashFallback`\" pulumi-lang-java=\"`hashFallback`\"\u003e`hash_fallback`\u003c/span\u003e is set to \u003cspan pulumi-lang-nodejs=\"`cookie`\" pulumi-lang-dotnet=\"`Cookie`\" pulumi-lang-go=\"`cookie`\" pulumi-lang-python=\"`cookie`\" pulumi-lang-yaml=\"`cookie`\" pulumi-lang-java=\"`cookie`\"\u003e`cookie`\u003c/span\u003e. If the specified cookie is not in the request, Kong will generate a value and set the cookie in the response. Default \u003cspan pulumi-lang-nodejs=\"`nil`\" pulumi-lang-dotnet=\"`Nil`\" pulumi-lang-go=\"`nil`\" pulumi-lang-python=\"`nil`\" pulumi-lang-yaml=\"`nil`\" pulumi-lang-java=\"`nil`\"\u003e`nil`\u003c/span\u003e.\n"},"hashOnCookiePath":{"type":"string","description":"is a cookie path to set in the response headers. Only required when \u003cspan pulumi-lang-nodejs=\"`hashOn`\" pulumi-lang-dotnet=\"`HashOn`\" pulumi-lang-go=\"`hashOn`\" pulumi-lang-python=\"`hash_on`\" pulumi-lang-yaml=\"`hashOn`\" pulumi-lang-java=\"`hashOn`\"\u003e`hash_on`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`hashFallback`\" pulumi-lang-dotnet=\"`HashFallback`\" pulumi-lang-go=\"`hashFallback`\" pulumi-lang-python=\"`hash_fallback`\" pulumi-lang-yaml=\"`hashFallback`\" pulumi-lang-java=\"`hashFallback`\"\u003e`hash_fallback`\u003c/span\u003e is set to \u003cspan pulumi-lang-nodejs=\"`cookie`\" pulumi-lang-dotnet=\"`Cookie`\" pulumi-lang-go=\"`cookie`\" pulumi-lang-python=\"`cookie`\" pulumi-lang-yaml=\"`cookie`\" pulumi-lang-java=\"`cookie`\"\u003e`cookie`\u003c/span\u003e. Defaults to `/`.\n* `healthchecks.active.type` - (Optional) is a active health check type. HTTP or HTTPS, or just attempt a TCP connection. Possible values are \u003cspan pulumi-lang-nodejs=\"`tcp`\" pulumi-lang-dotnet=\"`Tcp`\" pulumi-lang-go=\"`tcp`\" pulumi-lang-python=\"`tcp`\" pulumi-lang-yaml=\"`tcp`\" pulumi-lang-java=\"`tcp`\"\u003e`tcp`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`http`\" pulumi-lang-dotnet=\"`Http`\" pulumi-lang-go=\"`http`\" pulumi-lang-python=\"`http`\" pulumi-lang-yaml=\"`http`\" pulumi-lang-java=\"`http`\"\u003e`http`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`https`\" pulumi-lang-dotnet=\"`Https`\" pulumi-lang-go=\"`https`\" pulumi-lang-python=\"`https`\" pulumi-lang-yaml=\"`https`\" pulumi-lang-java=\"`https`\"\u003e`https`\u003c/span\u003e. Defaults to \u003cspan pulumi-lang-nodejs=\"`http`\" pulumi-lang-dotnet=\"`Http`\" pulumi-lang-go=\"`http`\" pulumi-lang-python=\"`http`\" pulumi-lang-yaml=\"`http`\" pulumi-lang-java=\"`http`\"\u003e`http`\u003c/span\u003e.\n* `healthchecks.active.timeout` - (Optional) is a socket timeout for active health checks (in seconds). Defaults to \u003cspan pulumi-lang-nodejs=\"`1`\" pulumi-lang-dotnet=\"`1`\" pulumi-lang-go=\"`1`\" pulumi-lang-python=\"`1`\" pulumi-lang-yaml=\"`1`\" pulumi-lang-java=\"`1`\"\u003e`1`\u003c/span\u003e.\n* `healthchecks.active.concurrency` - (Optional) is a number of targets to check concurrently in active health checks. Defaults to \u003cspan pulumi-lang-nodejs=\"`10`\" pulumi-lang-dotnet=\"`10`\" pulumi-lang-go=\"`10`\" pulumi-lang-python=\"`10`\" pulumi-lang-yaml=\"`10`\" pulumi-lang-java=\"`10`\"\u003e`10`\u003c/span\u003e.\n* `healthchecks.active.http_path` - (Optional) is a path to use in GET HTTP request to run as a probe on active health checks. Defaults to `/`.\n* `healthchecks.active.https_verify_certificate` - (Optional) check the validity of the SSL certificate of the remote host when performing active health checks using HTTPS. Defaults to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e.\n* `healthchecks.active.https_sni` - (Optional) is the hostname to use as an SNI (Server Name Identification) when performing active health checks using HTTPS. This is particularly useful when Targets are configured using IPs, so that the target host’s certificate can be verified with the proper SNI. Default \u003cspan pulumi-lang-nodejs=\"`nil`\" pulumi-lang-dotnet=\"`Nil`\" pulumi-lang-go=\"`nil`\" pulumi-lang-python=\"`nil`\" pulumi-lang-yaml=\"`nil`\" pulumi-lang-java=\"`nil`\"\u003e`nil`\u003c/span\u003e.\n* `healthchecks.active.healthy.interval` - (Optional) is an interval between active health checks for healthy targets (in seconds). A value of zero indicates that active probes for healthy targets should not be performed. Defaults to \u003cspan pulumi-lang-nodejs=\"`0`\" pulumi-lang-dotnet=\"`0`\" pulumi-lang-go=\"`0`\" pulumi-lang-python=\"`0`\" pulumi-lang-yaml=\"`0`\" pulumi-lang-java=\"`0`\"\u003e`0`\u003c/span\u003e.\n* `healthchecks.active.healthy.successes` - (Optional) is a number of successes in active probes (as defined by `healthchecks.active.healthy.http_statuses`) to consider a target healthy. Defaults to \u003cspan pulumi-lang-nodejs=\"`0`\" pulumi-lang-dotnet=\"`0`\" pulumi-lang-go=\"`0`\" pulumi-lang-python=\"`0`\" pulumi-lang-yaml=\"`0`\" pulumi-lang-java=\"`0`\"\u003e`0`\u003c/span\u003e.\n* `healthchecks.active.healthy.http_statuses` - (Optional) is an array of HTTP statuses to consider a success, indicating healthiness, when returned by a probe in active health checks. Defaults to `[200, 302]`.\n* `healthchecks.active.unhealthy.interval` - (Optional) is an interval between active health checks for unhealthy targets (in seconds). A value of zero indicates that active probes for unhealthy targets should not be performed. Defaults to \u003cspan pulumi-lang-nodejs=\"`0`\" pulumi-lang-dotnet=\"`0`\" pulumi-lang-go=\"`0`\" pulumi-lang-python=\"`0`\" pulumi-lang-yaml=\"`0`\" pulumi-lang-java=\"`0`\"\u003e`0`\u003c/span\u003e.\n* `healthchecks.active.unhealthy.tcp_failures` - (Optional) is a number of TCP failures in active probes to consider a target unhealthy. Defaults to \u003cspan pulumi-lang-nodejs=\"`0`\" pulumi-lang-dotnet=\"`0`\" pulumi-lang-go=\"`0`\" pulumi-lang-python=\"`0`\" pulumi-lang-yaml=\"`0`\" pulumi-lang-java=\"`0`\"\u003e`0`\u003c/span\u003e.\n* `healthchecks.active.unhealthy.http_failures` - (Optional) is a number of HTTP failures in active probes (as defined by `healthchecks.active.unhealthy.http_statuses`) to consider a target unhealthy. Defaults to \u003cspan pulumi-lang-nodejs=\"`0`\" pulumi-lang-dotnet=\"`0`\" pulumi-lang-go=\"`0`\" pulumi-lang-python=\"`0`\" pulumi-lang-yaml=\"`0`\" pulumi-lang-java=\"`0`\"\u003e`0`\u003c/span\u003e.\n* `healthchecks.active.unhealthy.timeouts` - (Optional) is a number of timeouts in active probes to consider a target unhealthy. Defaults to \u003cspan pulumi-lang-nodejs=\"`0`\" pulumi-lang-dotnet=\"`0`\" pulumi-lang-go=\"`0`\" pulumi-lang-python=\"`0`\" pulumi-lang-yaml=\"`0`\" pulumi-lang-java=\"`0`\"\u003e`0`\u003c/span\u003e.\n* `healthchecks.active.unhealthy.http_statuses` - (Optional) is an array of HTTP statuses to consider a failure, indicating unhealthiness, when returned by a probe in active health checks. Defaults to `[429, 404, 500, 501, 502, 503, 504, 505]`.\n* `healthchecks.passive.type` - (Optional) is a passive health check type. Interpreting HTTP/HTTPS statuses, or just check for TCP connection success. Possible values are \u003cspan pulumi-lang-nodejs=\"`tcp`\" pulumi-lang-dotnet=\"`Tcp`\" pulumi-lang-go=\"`tcp`\" pulumi-lang-python=\"`tcp`\" pulumi-lang-yaml=\"`tcp`\" pulumi-lang-java=\"`tcp`\"\u003e`tcp`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`http`\" pulumi-lang-dotnet=\"`Http`\" pulumi-lang-go=\"`http`\" pulumi-lang-python=\"`http`\" pulumi-lang-yaml=\"`http`\" pulumi-lang-java=\"`http`\"\u003e`http`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`https`\" pulumi-lang-dotnet=\"`Https`\" pulumi-lang-go=\"`https`\" pulumi-lang-python=\"`https`\" pulumi-lang-yaml=\"`https`\" pulumi-lang-java=\"`https`\"\u003e`https`\u003c/span\u003e (in passive checks, \u003cspan pulumi-lang-nodejs=\"`http`\" pulumi-lang-dotnet=\"`Http`\" pulumi-lang-go=\"`http`\" pulumi-lang-python=\"`http`\" pulumi-lang-yaml=\"`http`\" pulumi-lang-java=\"`http`\"\u003e`http`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`https`\" pulumi-lang-dotnet=\"`Https`\" pulumi-lang-go=\"`https`\" pulumi-lang-python=\"`https`\" pulumi-lang-yaml=\"`https`\" pulumi-lang-java=\"`https`\"\u003e`https`\u003c/span\u003e options are equivalent.). Defaults to \u003cspan pulumi-lang-nodejs=\"`http`\" pulumi-lang-dotnet=\"`Http`\" pulumi-lang-go=\"`http`\" pulumi-lang-python=\"`http`\" pulumi-lang-yaml=\"`http`\" pulumi-lang-java=\"`http`\"\u003e`http`\u003c/span\u003e.\n* `healthchecks.passive.healthy.successes` - (Optional) is a Number of successes in proxied traffic (as defined by `healthchecks.passive.healthy.http_statuses`) to consider a target healthy, as observed by passive health checks. Defaults to \u003cspan pulumi-lang-nodejs=\"`0`\" pulumi-lang-dotnet=\"`0`\" pulumi-lang-go=\"`0`\" pulumi-lang-python=\"`0`\" pulumi-lang-yaml=\"`0`\" pulumi-lang-java=\"`0`\"\u003e`0`\u003c/span\u003e.\n* `healthchecks.passive.healthy.http_statuses` - (Optional) is an array of HTTP statuses which represent healthiness when produced by proxied traffic, as observed by passive health checks. Defaults to `[200, 201, 202, 203, 204, 205, 206, 207, 208, 226, 300, 301, 302, 303, 304, 305, 306, 307, 308]`.\n* `healthchecks.passive.unhealthy.tcp_failures` - (Optional) is a number of TCP failures in proxied traffic to consider a target unhealthy, as observed by passive health checks. Defaults to \u003cspan pulumi-lang-nodejs=\"`0`\" pulumi-lang-dotnet=\"`0`\" pulumi-lang-go=\"`0`\" pulumi-lang-python=\"`0`\" pulumi-lang-yaml=\"`0`\" pulumi-lang-java=\"`0`\"\u003e`0`\u003c/span\u003e.\n* `healthchecks.passive.unhealthy.http_failures` - (Optional) is a number of HTTP failures in proxied traffic (as defined by `healthchecks.passive.unhealthy.http_statuses`) to consider a target unhealthy, as observed by passive health checks. Defaults to \u003cspan pulumi-lang-nodejs=\"`0`\" pulumi-lang-dotnet=\"`0`\" pulumi-lang-go=\"`0`\" pulumi-lang-python=\"`0`\" pulumi-lang-yaml=\"`0`\" pulumi-lang-java=\"`0`\"\u003e`0`\u003c/span\u003e.\n* `healthchecks.passive.unhealthy.timeouts` - (Optional) is a number of timeouts in proxied traffic to consider a target unhealthy, as observed by passive health checks. Defaults to \u003cspan pulumi-lang-nodejs=\"`0`\" pulumi-lang-dotnet=\"`0`\" pulumi-lang-go=\"`0`\" pulumi-lang-python=\"`0`\" pulumi-lang-yaml=\"`0`\" pulumi-lang-java=\"`0`\"\u003e`0`\u003c/span\u003e.\n* `healthchecks.passive.unhealthy.http_statuses` - (Optional) is an array of HTTP statuses which represent unhealthiness when produced by proxied traffic, as observed by passive health checks. Defaults to `[429, 500, 503]`.\n"},"hashOnHeader":{"type":"string","description":"is a header name to take the value from as hash input. Only required when \u003cspan pulumi-lang-nodejs=\"`hashOn`\" pulumi-lang-dotnet=\"`HashOn`\" pulumi-lang-go=\"`hashOn`\" pulumi-lang-python=\"`hash_on`\" pulumi-lang-yaml=\"`hashOn`\" pulumi-lang-java=\"`hashOn`\"\u003e`hash_on`\u003c/span\u003e is set to \u003cspan pulumi-lang-nodejs=\"`header`\" pulumi-lang-dotnet=\"`Header`\" pulumi-lang-go=\"`header`\" pulumi-lang-python=\"`header`\" pulumi-lang-yaml=\"`header`\" pulumi-lang-java=\"`header`\"\u003e`header`\u003c/span\u003e. Default \u003cspan pulumi-lang-nodejs=\"`nil`\" pulumi-lang-dotnet=\"`Nil`\" pulumi-lang-go=\"`nil`\" pulumi-lang-python=\"`nil`\" pulumi-lang-yaml=\"`nil`\" pulumi-lang-java=\"`nil`\"\u003e`nil`\u003c/span\u003e.\n"},"healthchecks":{"$ref":"#/types/kong:index/UpstreamHealthchecks:UpstreamHealthchecks"},"hostHeader":{"type":"string","description":"The hostname to be used as Host header when proxying requests through Kong.\n"},"name":{"type":"string","description":"is a hostname, which must be equal to the host of a Service.\n"},"slots":{"type":"integer","description":"is the number of slots in the load balancer algorithm (10*65536, defaults to 10000).\n"},"tags":{"type":"array","items":{"type":"string"},"description":"A list of strings associated with the Upstream for grouping and filtering.\n"}},"stateInputs":{"description":"Input properties used for looking up and filtering Upstream resources.\n","properties":{"clientCertificateId":{"type":"string","description":"The ID of the client certificate to use (from certificate resource) while TLS handshaking to the upstream server.\n"},"hashFallback":{"type":"string","description":"is a hashing input type if the primary \u003cspan pulumi-lang-nodejs=\"`hashOn`\" pulumi-lang-dotnet=\"`HashOn`\" pulumi-lang-go=\"`hashOn`\" pulumi-lang-python=\"`hash_on`\" pulumi-lang-yaml=\"`hashOn`\" pulumi-lang-java=\"`hashOn`\"\u003e`hash_on`\u003c/span\u003e does not return a hash (eg. header is missing, or no consumer identified). One of: \u003cspan pulumi-lang-nodejs=\"`none`\" pulumi-lang-dotnet=\"`None`\" pulumi-lang-go=\"`none`\" pulumi-lang-python=\"`none`\" pulumi-lang-yaml=\"`none`\" pulumi-lang-java=\"`none`\"\u003e`none`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`consumer`\" pulumi-lang-dotnet=\"`Consumer`\" pulumi-lang-go=\"`consumer`\" pulumi-lang-python=\"`consumer`\" pulumi-lang-yaml=\"`consumer`\" pulumi-lang-java=\"`consumer`\"\u003e`consumer`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`ip`\" pulumi-lang-dotnet=\"`Ip`\" pulumi-lang-go=\"`ip`\" pulumi-lang-python=\"`ip`\" pulumi-lang-yaml=\"`ip`\" pulumi-lang-java=\"`ip`\"\u003e`ip`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`header`\" pulumi-lang-dotnet=\"`Header`\" pulumi-lang-go=\"`header`\" pulumi-lang-python=\"`header`\" pulumi-lang-yaml=\"`header`\" pulumi-lang-java=\"`header`\"\u003e`header`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`cookie`\" pulumi-lang-dotnet=\"`Cookie`\" pulumi-lang-go=\"`cookie`\" pulumi-lang-python=\"`cookie`\" pulumi-lang-yaml=\"`cookie`\" pulumi-lang-java=\"`cookie`\"\u003e`cookie`\u003c/span\u003e. Not available if \u003cspan pulumi-lang-nodejs=\"`hashOn`\" pulumi-lang-dotnet=\"`HashOn`\" pulumi-lang-go=\"`hashOn`\" pulumi-lang-python=\"`hash_on`\" pulumi-lang-yaml=\"`hashOn`\" pulumi-lang-java=\"`hashOn`\"\u003e`hash_on`\u003c/span\u003e is set to \u003cspan pulumi-lang-nodejs=\"`cookie`\" pulumi-lang-dotnet=\"`Cookie`\" pulumi-lang-go=\"`cookie`\" pulumi-lang-python=\"`cookie`\" pulumi-lang-yaml=\"`cookie`\" pulumi-lang-java=\"`cookie`\"\u003e`cookie`\u003c/span\u003e. Defaults to \u003cspan pulumi-lang-nodejs=\"`none`\" pulumi-lang-dotnet=\"`None`\" pulumi-lang-go=\"`none`\" pulumi-lang-python=\"`none`\" pulumi-lang-yaml=\"`none`\" pulumi-lang-java=\"`none`\"\u003e`none`\u003c/span\u003e.\n"},"hashFallbackHeader":{"type":"string","description":"is a header name to take the value from as hash input. Only required when \u003cspan pulumi-lang-nodejs=\"`hashFallback`\" pulumi-lang-dotnet=\"`HashFallback`\" pulumi-lang-go=\"`hashFallback`\" pulumi-lang-python=\"`hash_fallback`\" pulumi-lang-yaml=\"`hashFallback`\" pulumi-lang-java=\"`hashFallback`\"\u003e`hash_fallback`\u003c/span\u003e is set to \u003cspan pulumi-lang-nodejs=\"`header`\" pulumi-lang-dotnet=\"`Header`\" pulumi-lang-go=\"`header`\" pulumi-lang-python=\"`header`\" pulumi-lang-yaml=\"`header`\" pulumi-lang-java=\"`header`\"\u003e`header`\u003c/span\u003e. Default \u003cspan pulumi-lang-nodejs=\"`nil`\" pulumi-lang-dotnet=\"`Nil`\" pulumi-lang-go=\"`nil`\" pulumi-lang-python=\"`nil`\" pulumi-lang-yaml=\"`nil`\" pulumi-lang-java=\"`nil`\"\u003e`nil`\u003c/span\u003e.\n"},"hashOn":{"type":"string","description":"is a hashing input type: `none `(resulting in a weighted*round*robin scheme with no hashing), \u003cspan pulumi-lang-nodejs=\"`consumer`\" pulumi-lang-dotnet=\"`Consumer`\" pulumi-lang-go=\"`consumer`\" pulumi-lang-python=\"`consumer`\" pulumi-lang-yaml=\"`consumer`\" pulumi-lang-java=\"`consumer`\"\u003e`consumer`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`ip`\" pulumi-lang-dotnet=\"`Ip`\" pulumi-lang-go=\"`ip`\" pulumi-lang-python=\"`ip`\" pulumi-lang-yaml=\"`ip`\" pulumi-lang-java=\"`ip`\"\u003e`ip`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`header`\" pulumi-lang-dotnet=\"`Header`\" pulumi-lang-go=\"`header`\" pulumi-lang-python=\"`header`\" pulumi-lang-yaml=\"`header`\" pulumi-lang-java=\"`header`\"\u003e`header`\u003c/span\u003e, or \u003cspan pulumi-lang-nodejs=\"`cookie`\" pulumi-lang-dotnet=\"`Cookie`\" pulumi-lang-go=\"`cookie`\" pulumi-lang-python=\"`cookie`\" pulumi-lang-yaml=\"`cookie`\" pulumi-lang-java=\"`cookie`\"\u003e`cookie`\u003c/span\u003e. Defaults to \u003cspan pulumi-lang-nodejs=\"`none`\" pulumi-lang-dotnet=\"`None`\" pulumi-lang-go=\"`none`\" pulumi-lang-python=\"`none`\" pulumi-lang-yaml=\"`none`\" pulumi-lang-java=\"`none`\"\u003e`none`\u003c/span\u003e.\n"},"hashOnCookie":{"type":"string","description":"is a cookie name to take the value from as hash input. Only required when \u003cspan pulumi-lang-nodejs=\"`hashOn`\" pulumi-lang-dotnet=\"`HashOn`\" pulumi-lang-go=\"`hashOn`\" pulumi-lang-python=\"`hash_on`\" pulumi-lang-yaml=\"`hashOn`\" pulumi-lang-java=\"`hashOn`\"\u003e`hash_on`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`hashFallback`\" pulumi-lang-dotnet=\"`HashFallback`\" pulumi-lang-go=\"`hashFallback`\" pulumi-lang-python=\"`hash_fallback`\" pulumi-lang-yaml=\"`hashFallback`\" pulumi-lang-java=\"`hashFallback`\"\u003e`hash_fallback`\u003c/span\u003e is set to \u003cspan pulumi-lang-nodejs=\"`cookie`\" pulumi-lang-dotnet=\"`Cookie`\" pulumi-lang-go=\"`cookie`\" pulumi-lang-python=\"`cookie`\" pulumi-lang-yaml=\"`cookie`\" pulumi-lang-java=\"`cookie`\"\u003e`cookie`\u003c/span\u003e. If the specified cookie is not in the request, Kong will generate a value and set the cookie in the response. Default \u003cspan pulumi-lang-nodejs=\"`nil`\" pulumi-lang-dotnet=\"`Nil`\" pulumi-lang-go=\"`nil`\" pulumi-lang-python=\"`nil`\" pulumi-lang-yaml=\"`nil`\" pulumi-lang-java=\"`nil`\"\u003e`nil`\u003c/span\u003e.\n"},"hashOnCookiePath":{"type":"string","description":"is a cookie path to set in the response headers. Only required when \u003cspan pulumi-lang-nodejs=\"`hashOn`\" pulumi-lang-dotnet=\"`HashOn`\" pulumi-lang-go=\"`hashOn`\" pulumi-lang-python=\"`hash_on`\" pulumi-lang-yaml=\"`hashOn`\" pulumi-lang-java=\"`hashOn`\"\u003e`hash_on`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`hashFallback`\" pulumi-lang-dotnet=\"`HashFallback`\" pulumi-lang-go=\"`hashFallback`\" pulumi-lang-python=\"`hash_fallback`\" pulumi-lang-yaml=\"`hashFallback`\" pulumi-lang-java=\"`hashFallback`\"\u003e`hash_fallback`\u003c/span\u003e is set to \u003cspan pulumi-lang-nodejs=\"`cookie`\" pulumi-lang-dotnet=\"`Cookie`\" pulumi-lang-go=\"`cookie`\" pulumi-lang-python=\"`cookie`\" pulumi-lang-yaml=\"`cookie`\" pulumi-lang-java=\"`cookie`\"\u003e`cookie`\u003c/span\u003e. Defaults to `/`.\n* `healthchecks.active.type` - (Optional) is a active health check type. HTTP or HTTPS, or just attempt a TCP connection. Possible values are \u003cspan pulumi-lang-nodejs=\"`tcp`\" pulumi-lang-dotnet=\"`Tcp`\" pulumi-lang-go=\"`tcp`\" pulumi-lang-python=\"`tcp`\" pulumi-lang-yaml=\"`tcp`\" pulumi-lang-java=\"`tcp`\"\u003e`tcp`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`http`\" pulumi-lang-dotnet=\"`Http`\" pulumi-lang-go=\"`http`\" pulumi-lang-python=\"`http`\" pulumi-lang-yaml=\"`http`\" pulumi-lang-java=\"`http`\"\u003e`http`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`https`\" pulumi-lang-dotnet=\"`Https`\" pulumi-lang-go=\"`https`\" pulumi-lang-python=\"`https`\" pulumi-lang-yaml=\"`https`\" pulumi-lang-java=\"`https`\"\u003e`https`\u003c/span\u003e. Defaults to \u003cspan pulumi-lang-nodejs=\"`http`\" pulumi-lang-dotnet=\"`Http`\" pulumi-lang-go=\"`http`\" pulumi-lang-python=\"`http`\" pulumi-lang-yaml=\"`http`\" pulumi-lang-java=\"`http`\"\u003e`http`\u003c/span\u003e.\n* `healthchecks.active.timeout` - (Optional) is a socket timeout for active health checks (in seconds). Defaults to \u003cspan pulumi-lang-nodejs=\"`1`\" pulumi-lang-dotnet=\"`1`\" pulumi-lang-go=\"`1`\" pulumi-lang-python=\"`1`\" pulumi-lang-yaml=\"`1`\" pulumi-lang-java=\"`1`\"\u003e`1`\u003c/span\u003e.\n* `healthchecks.active.concurrency` - (Optional) is a number of targets to check concurrently in active health checks. Defaults to \u003cspan pulumi-lang-nodejs=\"`10`\" pulumi-lang-dotnet=\"`10`\" pulumi-lang-go=\"`10`\" pulumi-lang-python=\"`10`\" pulumi-lang-yaml=\"`10`\" pulumi-lang-java=\"`10`\"\u003e`10`\u003c/span\u003e.\n* `healthchecks.active.http_path` - (Optional) is a path to use in GET HTTP request to run as a probe on active health checks. Defaults to `/`.\n* `healthchecks.active.https_verify_certificate` - (Optional) check the validity of the SSL certificate of the remote host when performing active health checks using HTTPS. Defaults to \u003cspan pulumi-lang-nodejs=\"`true`\" pulumi-lang-dotnet=\"`True`\" pulumi-lang-go=\"`true`\" pulumi-lang-python=\"`true`\" pulumi-lang-yaml=\"`true`\" pulumi-lang-java=\"`true`\"\u003e`true`\u003c/span\u003e.\n* `healthchecks.active.https_sni` - (Optional) is the hostname to use as an SNI (Server Name Identification) when performing active health checks using HTTPS. This is particularly useful when Targets are configured using IPs, so that the target host’s certificate can be verified with the proper SNI. Default \u003cspan pulumi-lang-nodejs=\"`nil`\" pulumi-lang-dotnet=\"`Nil`\" pulumi-lang-go=\"`nil`\" pulumi-lang-python=\"`nil`\" pulumi-lang-yaml=\"`nil`\" pulumi-lang-java=\"`nil`\"\u003e`nil`\u003c/span\u003e.\n* `healthchecks.active.healthy.interval` - (Optional) is an interval between active health checks for healthy targets (in seconds). A value of zero indicates that active probes for healthy targets should not be performed. Defaults to \u003cspan pulumi-lang-nodejs=\"`0`\" pulumi-lang-dotnet=\"`0`\" pulumi-lang-go=\"`0`\" pulumi-lang-python=\"`0`\" pulumi-lang-yaml=\"`0`\" pulumi-lang-java=\"`0`\"\u003e`0`\u003c/span\u003e.\n* `healthchecks.active.healthy.successes` - (Optional) is a number of successes in active probes (as defined by `healthchecks.active.healthy.http_statuses`) to consider a target healthy. Defaults to \u003cspan pulumi-lang-nodejs=\"`0`\" pulumi-lang-dotnet=\"`0`\" pulumi-lang-go=\"`0`\" pulumi-lang-python=\"`0`\" pulumi-lang-yaml=\"`0`\" pulumi-lang-java=\"`0`\"\u003e`0`\u003c/span\u003e.\n* `healthchecks.active.healthy.http_statuses` - (Optional) is an array of HTTP statuses to consider a success, indicating healthiness, when returned by a probe in active health checks. Defaults to `[200, 302]`.\n* `healthchecks.active.unhealthy.interval` - (Optional) is an interval between active health checks for unhealthy targets (in seconds). A value of zero indicates that active probes for unhealthy targets should not be performed. Defaults to \u003cspan pulumi-lang-nodejs=\"`0`\" pulumi-lang-dotnet=\"`0`\" pulumi-lang-go=\"`0`\" pulumi-lang-python=\"`0`\" pulumi-lang-yaml=\"`0`\" pulumi-lang-java=\"`0`\"\u003e`0`\u003c/span\u003e.\n* `healthchecks.active.unhealthy.tcp_failures` - (Optional) is a number of TCP failures in active probes to consider a target unhealthy. Defaults to \u003cspan pulumi-lang-nodejs=\"`0`\" pulumi-lang-dotnet=\"`0`\" pulumi-lang-go=\"`0`\" pulumi-lang-python=\"`0`\" pulumi-lang-yaml=\"`0`\" pulumi-lang-java=\"`0`\"\u003e`0`\u003c/span\u003e.\n* `healthchecks.active.unhealthy.http_failures` - (Optional) is a number of HTTP failures in active probes (as defined by `healthchecks.active.unhealthy.http_statuses`) to consider a target unhealthy. Defaults to \u003cspan pulumi-lang-nodejs=\"`0`\" pulumi-lang-dotnet=\"`0`\" pulumi-lang-go=\"`0`\" pulumi-lang-python=\"`0`\" pulumi-lang-yaml=\"`0`\" pulumi-lang-java=\"`0`\"\u003e`0`\u003c/span\u003e.\n* `healthchecks.active.unhealthy.timeouts` - (Optional) is a number of timeouts in active probes to consider a target unhealthy. Defaults to \u003cspan pulumi-lang-nodejs=\"`0`\" pulumi-lang-dotnet=\"`0`\" pulumi-lang-go=\"`0`\" pulumi-lang-python=\"`0`\" pulumi-lang-yaml=\"`0`\" pulumi-lang-java=\"`0`\"\u003e`0`\u003c/span\u003e.\n* `healthchecks.active.unhealthy.http_statuses` - (Optional) is an array of HTTP statuses to consider a failure, indicating unhealthiness, when returned by a probe in active health checks. Defaults to `[429, 404, 500, 501, 502, 503, 504, 505]`.\n* `healthchecks.passive.type` - (Optional) is a passive health check type. Interpreting HTTP/HTTPS statuses, or just check for TCP connection success. Possible values are \u003cspan pulumi-lang-nodejs=\"`tcp`\" pulumi-lang-dotnet=\"`Tcp`\" pulumi-lang-go=\"`tcp`\" pulumi-lang-python=\"`tcp`\" pulumi-lang-yaml=\"`tcp`\" pulumi-lang-java=\"`tcp`\"\u003e`tcp`\u003c/span\u003e, \u003cspan pulumi-lang-nodejs=\"`http`\" pulumi-lang-dotnet=\"`Http`\" pulumi-lang-go=\"`http`\" pulumi-lang-python=\"`http`\" pulumi-lang-yaml=\"`http`\" pulumi-lang-java=\"`http`\"\u003e`http`\u003c/span\u003e or \u003cspan pulumi-lang-nodejs=\"`https`\" pulumi-lang-dotnet=\"`Https`\" pulumi-lang-go=\"`https`\" pulumi-lang-python=\"`https`\" pulumi-lang-yaml=\"`https`\" pulumi-lang-java=\"`https`\"\u003e`https`\u003c/span\u003e (in passive checks, \u003cspan pulumi-lang-nodejs=\"`http`\" pulumi-lang-dotnet=\"`Http`\" pulumi-lang-go=\"`http`\" pulumi-lang-python=\"`http`\" pulumi-lang-yaml=\"`http`\" pulumi-lang-java=\"`http`\"\u003e`http`\u003c/span\u003e and \u003cspan pulumi-lang-nodejs=\"`https`\" pulumi-lang-dotnet=\"`Https`\" pulumi-lang-go=\"`https`\" pulumi-lang-python=\"`https`\" pulumi-lang-yaml=\"`https`\" pulumi-lang-java=\"`https`\"\u003e`https`\u003c/span\u003e options are equivalent.). Defaults to \u003cspan pulumi-lang-nodejs=\"`http`\" pulumi-lang-dotnet=\"`Http`\" pulumi-lang-go=\"`http`\" pulumi-lang-python=\"`http`\" pulumi-lang-yaml=\"`http`\" pulumi-lang-java=\"`http`\"\u003e`http`\u003c/span\u003e.\n* `healthchecks.passive.healthy.successes` - (Optional) is a Number of successes in proxied traffic (as defined by `healthchecks.passive.healthy.http_statuses`) to consider a target healthy, as observed by passive health checks. Defaults to \u003cspan pulumi-lang-nodejs=\"`0`\" pulumi-lang-dotnet=\"`0`\" pulumi-lang-go=\"`0`\" pulumi-lang-python=\"`0`\" pulumi-lang-yaml=\"`0`\" pulumi-lang-java=\"`0`\"\u003e`0`\u003c/span\u003e.\n* `healthchecks.passive.healthy.http_statuses` - (Optional) is an array of HTTP statuses which represent healthiness when produced by proxied traffic, as observed by passive health checks. Defaults to `[200, 201, 202, 203, 204, 205, 206, 207, 208, 226, 300, 301, 302, 303, 304, 305, 306, 307, 308]`.\n* `healthchecks.passive.unhealthy.tcp_failures` - (Optional) is a number of TCP failures in proxied traffic to consider a target unhealthy, as observed by passive health checks. Defaults to \u003cspan pulumi-lang-nodejs=\"`0`\" pulumi-lang-dotnet=\"`0`\" pulumi-lang-go=\"`0`\" pulumi-lang-python=\"`0`\" pulumi-lang-yaml=\"`0`\" pulumi-lang-java=\"`0`\"\u003e`0`\u003c/span\u003e.\n* `healthchecks.passive.unhealthy.http_failures` - (Optional) is a number of HTTP failures in proxied traffic (as defined by `healthchecks.passive.unhealthy.http_statuses`) to consider a target unhealthy, as observed by passive health checks. Defaults to \u003cspan pulumi-lang-nodejs=\"`0`\" pulumi-lang-dotnet=\"`0`\" pulumi-lang-go=\"`0`\" pulumi-lang-python=\"`0`\" pulumi-lang-yaml=\"`0`\" pulumi-lang-java=\"`0`\"\u003e`0`\u003c/span\u003e.\n* `healthchecks.passive.unhealthy.timeouts` - (Optional) is a number of timeouts in proxied traffic to consider a target unhealthy, as observed by passive health checks. Defaults to \u003cspan pulumi-lang-nodejs=\"`0`\" pulumi-lang-dotnet=\"`0`\" pulumi-lang-go=\"`0`\" pulumi-lang-python=\"`0`\" pulumi-lang-yaml=\"`0`\" pulumi-lang-java=\"`0`\"\u003e`0`\u003c/span\u003e.\n* `healthchecks.passive.unhealthy.http_statuses` - (Optional) is an array of HTTP statuses which represent unhealthiness when produced by proxied traffic, as observed by passive health checks. Defaults to `[429, 500, 503]`.\n"},"hashOnHeader":{"type":"string","description":"is a header name to take the value from as hash input. Only required when \u003cspan pulumi-lang-nodejs=\"`hashOn`\" pulumi-lang-dotnet=\"`HashOn`\" pulumi-lang-go=\"`hashOn`\" pulumi-lang-python=\"`hash_on`\" pulumi-lang-yaml=\"`hashOn`\" pulumi-lang-java=\"`hashOn`\"\u003e`hash_on`\u003c/span\u003e is set to \u003cspan pulumi-lang-nodejs=\"`header`\" pulumi-lang-dotnet=\"`Header`\" pulumi-lang-go=\"`header`\" pulumi-lang-python=\"`header`\" pulumi-lang-yaml=\"`header`\" pulumi-lang-java=\"`header`\"\u003e`header`\u003c/span\u003e. Default \u003cspan pulumi-lang-nodejs=\"`nil`\" pulumi-lang-dotnet=\"`Nil`\" pulumi-lang-go=\"`nil`\" pulumi-lang-python=\"`nil`\" pulumi-lang-yaml=\"`nil`\" pulumi-lang-java=\"`nil`\"\u003e`nil`\u003c/span\u003e.\n"},"healthchecks":{"$ref":"#/types/kong:index/UpstreamHealthchecks:UpstreamHealthchecks"},"hostHeader":{"type":"string","description":"The hostname to be used as Host header when proxying requests through Kong.\n"},"name":{"type":"string","description":"is a hostname, which must be equal to the host of a Service.\n"},"slots":{"type":"integer","description":"is the number of slots in the load balancer algorithm (10*65536, defaults to 10000).\n"},"tags":{"type":"array","items":{"type":"string"},"description":"A list of strings associated with the Upstream for grouping and filtering.\n"}},"type":"object"}}},"functions":{"pulumi:providers:kong/terraformConfig":{"description":"This function returns a Terraform config object with terraform-namecased keys,to be used with the Terraform Module Provider.","inputs":{"properties":{"__self__":{"type":"ref","$ref":"#/provider"}},"type":"pulumi:providers:kong/terraformConfig","required":["__self__"]},"outputs":{"properties":{"result":{"additionalProperties":{"$ref":"pulumi.json#/Any"},"type":"object"}},"required":["result"],"type":"object"}}}}