From b4747bd180ddb46b30aa14595480e615c67cd74a Mon Sep 17 00:00:00 2001 From: Ivan Sabelnikov Date: Sat, 4 Jun 2022 09:18:50 +0300 Subject: [PATCH 1/2] Access to internal folder --- .gitignore | 1 + provider/go.mod | 28 ++-- provider/go.sum | 59 ++++--- provider/resources.go | 4 +- provider/shim/go.mod | 64 ++++++++ provider/shim/go.sum | 359 ++++++++++++++++++++++++++++++++++++++++++ provider/shim/shim.go | 10 ++ 7 files changed, 479 insertions(+), 46 deletions(-) create mode 100644 provider/shim/go.mod create mode 100644 provider/shim/go.sum create mode 100644 provider/shim/shim.go diff --git a/.gitignore b/.gitignore index 325da327..fdc1711f 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,6 @@ .idea .code +.vscode **/vendor/ .pulumi **/bin/ diff --git a/provider/go.mod b/provider/go.mod index b0d321ff..29a772dd 100644 --- a/provider/go.mod +++ b/provider/go.mod @@ -3,7 +3,7 @@ module github.com/pulumi/pulumi-cloudflare/provider/v4 go 1.18 require ( - github.com/cloudflare/terraform-provider-cloudflare v1.18.2-0.20220518002735-ddfea301f5ca + github.com/cloudflare/terraform-provider-cloudflare/shim v0.0.0-00010101000000-000000000000 github.com/pulumi/pulumi-terraform-bridge/v3 v3.23.0 github.com/pulumi/pulumi/sdk/v3 v3.32.1 ) @@ -42,7 +42,8 @@ require ( github.com/census-instrumentation/opencensus-proto v0.3.0 // indirect github.com/cespare/xxhash/v2 v2.1.2 // indirect github.com/cheggaaa/pb v1.0.29 // indirect - github.com/cloudflare/cloudflare-go v0.39.0 // indirect + github.com/cloudflare/cloudflare-go v0.40.1-0.20220602010313-668778596a1c // indirect + github.com/cloudflare/terraform-provider-cloudflare v1.18.2-0.20220531051658-8a97894e0e61 // indirect github.com/cncf/udpa/go v0.0.0-20210930031921-04548b0d99d4 // indirect github.com/cncf/xds/go v0.0.0-20211130200136-a8f946100490 // indirect github.com/davecgh/go-spew v1.1.1 // indirect @@ -50,11 +51,12 @@ require ( github.com/djherbis/times v1.5.0 // indirect github.com/dustin/go-humanize v1.0.0 // indirect github.com/emirpasic/gods v1.12.0 // indirect - github.com/envoyproxy/go-control-plane v0.10.1 // indirect + github.com/envoyproxy/go-control-plane v0.10.2-0.20220325020618-49ff273808a1 // indirect github.com/envoyproxy/protoc-gen-validate v0.6.2 // indirect github.com/ettle/strcase v0.1.1 // indirect github.com/fatih/color v1.13.0 // indirect github.com/form3tech-oss/jwt-go v3.2.2+incompatible // indirect + github.com/frankban/quicktest v1.14.2 // indirect github.com/gedex/inflector v0.0.0-20170307190818-16278e9db813 // indirect github.com/gofrs/uuid v4.2.0+incompatible // indirect github.com/gogo/protobuf v1.3.2 // indirect @@ -77,24 +79,24 @@ require ( github.com/hashicorp/go-getter v1.5.3 // indirect github.com/hashicorp/go-hclog v1.2.0 // indirect github.com/hashicorp/go-multierror v1.1.1 // indirect - github.com/hashicorp/go-plugin v1.4.3 // indirect + github.com/hashicorp/go-plugin v1.4.4 // indirect github.com/hashicorp/go-retryablehttp v0.7.0 // indirect github.com/hashicorp/go-rootcerts v1.0.2 // indirect github.com/hashicorp/go-safetemp v1.0.0 // indirect github.com/hashicorp/go-sockaddr v1.0.2 // indirect github.com/hashicorp/go-uuid v1.0.3 // indirect - github.com/hashicorp/go-version v1.4.0 // indirect + github.com/hashicorp/go-version v1.5.0 // indirect github.com/hashicorp/hc-install v0.3.2 // indirect github.com/hashicorp/hcl v1.0.0 // indirect github.com/hashicorp/hcl/v2 v2.12.0 // indirect github.com/hashicorp/hil v0.0.0-20190212132231-97b3a9cdfa93 // indirect github.com/hashicorp/logutils v1.0.0 // indirect github.com/hashicorp/terraform-exec v0.16.1 // indirect - github.com/hashicorp/terraform-json v0.13.0 // indirect - github.com/hashicorp/terraform-plugin-go v0.9.0 // indirect + github.com/hashicorp/terraform-json v0.14.0 // indirect + github.com/hashicorp/terraform-plugin-go v0.9.1 // indirect github.com/hashicorp/terraform-plugin-log v0.4.0 // indirect - github.com/hashicorp/terraform-plugin-sdk v1.17.2 // indirect - github.com/hashicorp/terraform-plugin-sdk/v2 v2.16.0 // indirect + github.com/hashicorp/terraform-plugin-sdk v1.7.0 // indirect + github.com/hashicorp/terraform-plugin-sdk/v2 v2.17.0 // indirect github.com/hashicorp/terraform-registry-address v0.0.0-20210412075316-9b2996cce896 // indirect github.com/hashicorp/terraform-svchost v0.0.0-20200729002733-f050f53b9734 // indirect github.com/hashicorp/vault/api v1.1.0 // indirect @@ -111,6 +113,7 @@ require ( github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 // indirect github.com/kevinburke/ssh_config v1.1.0 // indirect github.com/klauspost/compress v1.12.2 // indirect + github.com/kr/pretty v0.3.0 // indirect github.com/mattn/go-colorable v0.1.12 // indirect github.com/mattn/go-ieproxy v0.0.1 // indirect github.com/mattn/go-isatty v0.0.14 // indirect @@ -170,7 +173,7 @@ require ( github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 // indirect github.com/xeipuuv/gojsonschema v1.2.0 // indirect github.com/zclconf/go-cty v1.10.0 // indirect - github.com/zclconf/go-cty-yaml v1.0.2 // indirect + github.com/zclconf/go-cty-yaml v1.0.1 // indirect go.opencensus.io v0.23.0 // indirect go.uber.org/atomic v1.9.0 // indirect gocloud.dev v0.23.0 // indirect @@ -188,7 +191,7 @@ require ( google.golang.org/api v0.62.0 // indirect google.golang.org/appengine v1.6.7 // indirect google.golang.org/genproto v0.0.0-20220407144326-9054f6ed7bac // indirect - google.golang.org/grpc v1.45.0 // indirect + google.golang.org/grpc v1.46.0 // indirect google.golang.org/protobuf v1.28.0 // indirect gopkg.in/AlecAivazis/survey.v1 v1.8.9-0.20200217094205-6773bdf39b7f // indirect gopkg.in/square/go-jose.v2 v2.5.1 // indirect @@ -196,12 +199,13 @@ require ( gopkg.in/src-d/go-git.v4 v4.13.1 // indirect gopkg.in/warnings.v0 v0.1.2 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect - gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b // indirect + gopkg.in/yaml.v3 v3.0.1 // indirect sourcegraph.com/sourcegraph/appdash v0.0.0-20211028080628-e2786a622600 // indirect ) replace ( cloud.google.com/go/storage => cloud.google.com/go/storage v1.16.1 + github.com/cloudflare/terraform-provider-cloudflare/shim => ./shim github.com/hashicorp/go-getter v1.5.0 => github.com/hashicorp/go-getter v1.4.0 github.com/hashicorp/terraform-exec => github.com/hashicorp/terraform-exec v0.15.0 github.com/hashicorp/terraform-plugin-sdk/v2 => github.com/pulumi/terraform-plugin-sdk/v2 v2.0.0-20220505215311-795430389fa7 diff --git a/provider/go.sum b/provider/go.sum index e7bfde21..c812a052 100644 --- a/provider/go.sum +++ b/provider/go.sum @@ -161,7 +161,6 @@ github.com/aws/aws-sdk-go v1.23.20/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpi github.com/aws/aws-sdk-go v1.25.3/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= github.com/aws/aws-sdk-go v1.25.37/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= github.com/aws/aws-sdk-go v1.30.27/go.mod h1:5zCpMtNQVjRREroY7sYe8lOMRSxkhG6MZveU8YkpAk0= -github.com/aws/aws-sdk-go v1.37.0/go.mod h1:hcU610XS61/+aQV88ixoOzUoG7v3b31pl2zKMmprdro= github.com/aws/aws-sdk-go v1.38.35 h1:7AlAO0FC+8nFjxiGKEmq0QLpiA8/XFr6eIxgRTwkdTg= github.com/aws/aws-sdk-go v1.38.35/go.mod h1:hcU610XS61/+aQV88ixoOzUoG7v3b31pl2zKMmprdro= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= @@ -191,10 +190,10 @@ github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMn github.com/circonus-labs/circonus-gometrics v2.3.1+incompatible/go.mod h1:nmEj6Dob7S7YxXgwXpfOuvO54S+tGdZdw9fuRZt25Ag= github.com/circonus-labs/circonusllhist v0.1.3/go.mod h1:kMXHVDlOchFAehlya5ePtbp5jckzBHf4XRpQvBOLI+I= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= -github.com/cloudflare/cloudflare-go v0.39.0 h1:xXTTTBtbYDEsiltOMgcSuReDmnJEBq0CbFPtbrIkJkc= -github.com/cloudflare/cloudflare-go v0.39.0/go.mod h1:zwDLiwQbvubMqmIVbEuFDoiXE0dED/D4DFyT2yhNWf4= -github.com/cloudflare/terraform-provider-cloudflare v1.18.2-0.20220518002735-ddfea301f5ca h1:CM2dJhEeEyZlyMtt1i6CM19XOaiF/6yNa8sjukd5Zzs= -github.com/cloudflare/terraform-provider-cloudflare v1.18.2-0.20220518002735-ddfea301f5ca/go.mod h1:JrUqP8khexWT92nKxhgPqB2jJqvggK1XAHtIIre7xck= +github.com/cloudflare/cloudflare-go v0.40.1-0.20220602010313-668778596a1c h1:OQXcMmN4u/nxDH6xVRhFe8CySHvQNMHWGwQpVursIa0= +github.com/cloudflare/cloudflare-go v0.40.1-0.20220602010313-668778596a1c/go.mod h1:MmAqiRfD8rjKEuUe4MYNHfHjYhFWfW7PNe12CCQWqPY= +github.com/cloudflare/terraform-provider-cloudflare v1.18.2-0.20220531051658-8a97894e0e61 h1:yz0PETAxSiCeP4VdH8YdZGV3NQvY0XbJh3h+CaCLKE8= +github.com/cloudflare/terraform-provider-cloudflare v1.18.2-0.20220531051658-8a97894e0e61/go.mod h1:mz5qbedzN7TP3mOaP0CZrBZz/byYYy9Cjr9w2tq4mfk= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= @@ -260,8 +259,9 @@ github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.m github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.mod h1:hliV/p42l8fGbc6Y9bQ70uLwIvmJyVE5k4iMKlh8wCQ= github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0= -github.com/envoyproxy/go-control-plane v0.10.1 h1:cgDRLG7bs59Zd+apAWuzLQL95obVYAymNJek76W3mgw= github.com/envoyproxy/go-control-plane v0.10.1/go.mod h1:AY7fTTXNdv/aJ2O5jwpxAPOWUZ7hQAEvzN5Pf27BkQQ= +github.com/envoyproxy/go-control-plane v0.10.2-0.20220325020618-49ff273808a1 h1:xvqufLtNVwAhN8NMyWklVgxnWohi+wtMGQMhtxexlm0= +github.com/envoyproxy/go-control-plane v0.10.2-0.20220325020618-49ff273808a1/go.mod h1:KJwIaB5Mv44NWtYuAOFCVOjcI94vtpEz2JU/D2v6IjE= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/envoyproxy/protoc-gen-validate v0.6.2 h1:JiO+kJTpmYGjEodY7O1Zk8oZcNz1+f30UtwtXoFUPzE= github.com/envoyproxy/protoc-gen-validate v0.6.2/go.mod h1:2t7qjJNvHPx8IjnBOzl9E9/baC+qXE/TeeyBRzgJDws= @@ -277,8 +277,9 @@ github.com/fogleman/gg v1.2.1-0.20190220221249-0403632d5b90/go.mod h1:R/bRT+9gY/ github.com/form3tech-oss/jwt-go v3.2.2+incompatible h1:TcekIExNqud5crz4xD2pavyTgWiPvpYe4Xau31I0PRk= github.com/form3tech-oss/jwt-go v3.2.2+incompatible/go.mod h1:pbq4aXjuKjdthFRnoDwaVPLA+WlJuPGy+QneDUgJi2k= github.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g= -github.com/frankban/quicktest v1.10.0 h1:Gfh+GAJZOAoKZsIZeZbdn2JF10kN1XHNvjsvQK8gVkE= github.com/frankban/quicktest v1.10.0/go.mod h1:ui7WezCLWMWxVWr1GETZY3smRy0G4KWq9vcPtJmFl7Y= +github.com/frankban/quicktest v1.14.2 h1:SPb1KFFmM+ybpEjPUhCCkZOM5xlovT5UbrMvWnXyBns= +github.com/frankban/quicktest v1.14.2/go.mod h1:mgiwOwqx65TmIk1wJ6Q7wvnVMocbUorkibMOrVTHZps= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= github.com/gedex/inflector v0.0.0-20170307190818-16278e9db813 h1:Uc+IZ7gYqAf/rSGFplbWBSHaGolEQlNLgMgSE3ccnIQ= @@ -474,9 +475,9 @@ github.com/hashicorp/go-multierror v1.1.0/go.mod h1:spPvp8C1qA32ftKqdAHm4hHTbPw+ github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo= github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM= github.com/hashicorp/go-plugin v1.0.1/go.mod h1:++UyYGoz3o5w9ZzAdZxtQKrWWP+iqPBn3cQptSMzBuY= -github.com/hashicorp/go-plugin v1.3.0/go.mod h1:F9eH4LrE/ZsRdbwhfjs9k9HoDUwAHnYtXdgmf1AVNs0= -github.com/hashicorp/go-plugin v1.4.3 h1:DXmvivbWD5qdiBts9TpBC7BYL1Aia5sxbRgQB+v6UZM= github.com/hashicorp/go-plugin v1.4.3/go.mod h1:5fGEH17QVwTTcR0zV7yhDPLLmFX9YSZ38b18Udy6vYQ= +github.com/hashicorp/go-plugin v1.4.4 h1:NVdrSdFRt3SkZtNckJ6tog7gbpRrcbOjQi/rgF7JYWQ= +github.com/hashicorp/go-plugin v1.4.4/go.mod h1:viDMjcLJuDui6pXb8U4HVfb8AamCWhHGUjr2IrTF67s= github.com/hashicorp/go-retryablehttp v0.5.3/go.mod h1:9B5zBasrRhHXnJnui7y6sL7es7NDiJgTc6Er0maI1Xs= github.com/hashicorp/go-retryablehttp v0.6.2/go.mod h1:gEx6HMUGxYYhJScX7W1Il64m6cc2C1mDaW3NQ9sY1FY= github.com/hashicorp/go-retryablehttp v0.6.6/go.mod h1:vAew36LZh98gCBJNLH42IQ1ER/9wtLZZ8meHqQvEYWY= @@ -497,8 +498,9 @@ github.com/hashicorp/go-uuid v1.0.3/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/b github.com/hashicorp/go-version v1.1.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= github.com/hashicorp/go-version v1.2.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= github.com/hashicorp/go-version v1.3.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= -github.com/hashicorp/go-version v1.4.0 h1:aAQzgqIrRKRa7w75CKpbBxYsmUoPjzVm1W59ca1L0J4= github.com/hashicorp/go-version v1.4.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= +github.com/hashicorp/go-version v1.5.0 h1:O293SZ2Eg+AAYijkVK3jR786Am1bhDEh2GHT0tIVE5E= +github.com/hashicorp/go-version v1.5.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.3/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= @@ -510,7 +512,6 @@ github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= github.com/hashicorp/hcl/v2 v2.0.0/go.mod h1:oVVDG71tEinNGYCxinCYadcmKU9bglqW9pV3txagJ90= github.com/hashicorp/hcl/v2 v2.3.0/go.mod h1:d+FwDBbOLvpAM3Z6J7gPj/VoAGkNe/gm352ZhjJ/Zv8= -github.com/hashicorp/hcl/v2 v2.8.2/go.mod h1:bQTN5mpo+jewjJgh8jr0JUguIi7qPHUF6yIfAEN3jqY= github.com/hashicorp/hcl/v2 v2.11.1/go.mod h1:FwWsfWEjyV/CMj8s/gqAuiviY72rJ1/oayI9WftqcKg= github.com/hashicorp/hcl/v2 v2.12.0 h1:PsYxySWpMD4KPaoJLnsHwtK5Qptvj/4Q6s0t4sUxZf4= github.com/hashicorp/hcl/v2 v2.12.0/go.mod h1:FwWsfWEjyV/CMj8s/gqAuiviY72rJ1/oayI9WftqcKg= @@ -521,29 +522,25 @@ github.com/hashicorp/hil v0.0.0-20190212132231-97b3a9cdfa93/go.mod h1:n2TSygSNws github.com/hashicorp/logutils v1.0.0 h1:dLEQVugN8vlakKOUE3ihGLTZJRB4j+M2cdTm/ORI65Y= github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= github.com/hashicorp/terraform-config-inspect v0.0.0-20190821133035-82a99dc22ef4/go.mod h1:JDmizlhaP5P0rYTTZB0reDMefAiJyfWPEtugV4in1oI= +github.com/hashicorp/terraform-config-inspect v0.0.0-20191115094559-17f92b0546e8 h1:+RyjwU+Gnd/aTJBPZVDNm903eXVjjqhbaR4Ypx3xYyY= github.com/hashicorp/terraform-config-inspect v0.0.0-20191115094559-17f92b0546e8/go.mod h1:p+ivJws3dpqbp1iP84+npOyAmTTOLMgCzrXd3GSdn/A= -github.com/hashicorp/terraform-config-inspect v0.0.0-20191212124732-c6ae6269b9d7 h1:Pc5TCv9mbxFN6UVX0LH6CpQrdTM5YjbVI2w15237Pjk= -github.com/hashicorp/terraform-config-inspect v0.0.0-20191212124732-c6ae6269b9d7/go.mod h1:p+ivJws3dpqbp1iP84+npOyAmTTOLMgCzrXd3GSdn/A= github.com/hashicorp/terraform-exec v0.15.0 h1:cqjh4d8HYNQrDoEmlSGelHmg2DYDh5yayckvJ5bV18E= github.com/hashicorp/terraform-exec v0.15.0/go.mod h1:H4IG8ZxanU+NW0ZpDRNsvh9f0ul7C0nHP+rUR/CHs7I= github.com/hashicorp/terraform-json v0.4.0/go.mod h1:eAbqb4w0pSlRmdvl8fOyHAi/+8jnkVYN28gJkSJrLhU= -github.com/hashicorp/terraform-json v0.10.0/go.mod h1:3defM4kkMfttwiE7VakJDwCd4R+umhSQnvJwORXbprE= -github.com/hashicorp/terraform-json v0.13.0 h1:Li9L+lKD1FO5RVFRM1mMMIBDoUHslOniyEi5CM+FWGY= github.com/hashicorp/terraform-json v0.13.0/go.mod h1:y5OdLBCT+rxbwnpxZs9kGL7R9ExU76+cpdY8zHwoazk= +github.com/hashicorp/terraform-json v0.14.0 h1:sh9iZ1Y8IFJLx+xQiKHGud6/TSUCM0N8e17dKDpqV7s= +github.com/hashicorp/terraform-json v0.14.0/go.mod h1:5A9HIWPkk4e5aeeXIBbkcOvaZbIYnAIkEyqP2pNSckM= github.com/hashicorp/terraform-plugin-go v0.8.0/go.mod h1:E3GuvfX0Pz2Azcl6BegD6t51StXsVZMOYQoGO8mkHM0= -github.com/hashicorp/terraform-plugin-go v0.9.0 h1:FvLY/3z4SNVatPZdoFcyrlNbCar+WyyOTv5X4Tp+WZc= -github.com/hashicorp/terraform-plugin-go v0.9.0/go.mod h1:EawBkgjBWNf7jiKnVoyDyF39OSV+u6KUX+Y73EPj3oM= +github.com/hashicorp/terraform-plugin-go v0.9.1 h1:vXdHaQ6aqL+OF076nMSBV+JKPdmXlzG5mzVDD04WyPs= +github.com/hashicorp/terraform-plugin-go v0.9.1/go.mod h1:ItjVSlQs70otlzcCwlPcU8FRXLdO973oYFRZwAOxy8M= github.com/hashicorp/terraform-plugin-log v0.3.0/go.mod h1:EjueSP/HjlyFAsDqt+okpCPjkT4NDynAe32AeDC4vps= github.com/hashicorp/terraform-plugin-log v0.4.0 h1:F3eVnm8r2EfQCe2k9blPIiF/r2TT01SHijXnS7bujvc= github.com/hashicorp/terraform-plugin-log v0.4.0/go.mod h1:9KclxdunFownr4pIm1jdmwKRmE4d6HVG2c9XDq47rpg= github.com/hashicorp/terraform-plugin-sdk v1.0.0/go.mod h1:NuwtLpEpPsFaKJPJNGtMcn9vlhe6Ofe+Y6NqXhJgV2M= +github.com/hashicorp/terraform-plugin-sdk v1.7.0 h1:B//oq0ZORG+EkVrIJy0uPGSonvmXqxSzXe8+GhknoW0= github.com/hashicorp/terraform-plugin-sdk v1.7.0/go.mod h1:OjgQmey5VxnPej/buEhe+YqKm0KNvV3QqU4hkqHqPCY= -github.com/hashicorp/terraform-plugin-sdk v1.17.2 h1:V7DUR3yBWFrVB9z3ddpY7kiYVSsq4NYR67NiTs93NQo= -github.com/hashicorp/terraform-plugin-sdk v1.17.2/go.mod h1:wkvldbraEMkz23NxkkAsFS88A1R9eUiooiaUZyS6TLw= github.com/hashicorp/terraform-plugin-test v1.2.0 h1:AWFdqyfnOj04sxTdaAF57QqvW7XXrT8PseUHkbKsE8I= github.com/hashicorp/terraform-plugin-test v1.2.0/go.mod h1:QIJHYz8j+xJtdtLrFTlzQVC0ocr3rf/OjIpgZLK56Hs= -github.com/hashicorp/terraform-plugin-test/v2 v2.2.1 h1:d3Rzmi5bnRzcAZon91FY4TDCMUYdU8c5vpPpf2Tz+c8= -github.com/hashicorp/terraform-plugin-test/v2 v2.2.1/go.mod h1:eZ9JL3O69Cb71Skn6OhHyj17sLmHRb+H6VrDcJjKrYU= github.com/hashicorp/terraform-registry-address v0.0.0-20210412075316-9b2996cce896 h1:1FGtlkJw87UsTMg5s8jrekrHmUPUJaMcu6ELiVhQrNw= github.com/hashicorp/terraform-registry-address v0.0.0-20210412075316-9b2996cce896/go.mod h1:bzBPnUIkI0RxauU8Dqo+2KrZZ28Cf48s8V6IHt3p4co= github.com/hashicorp/terraform-svchost v0.0.0-20191011084731-65d371908596/go.mod h1:kNDNcF7sN4DocDLBkQYz73HGKwN1ANB1blq4lIYLYvg= @@ -626,8 +623,9 @@ github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= -github.com/kr/pretty v0.2.1 h1:Fmg33tUaq4/8ym9TJN1x7sLJnHVwhP33CNkpYV/7rwI= github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= +github.com/kr/pretty v0.3.0 h1:WgNl7dwNpEZ6jJ9k1snq4pZsg7DOEN8hP9Xw0Tsjwk0= +github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/pty v1.1.4/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/pty v1.1.8 h1:AkaSdXYQOWeaO3neb8EM634ahkXXe3jYbVh/F9lq+GI= @@ -686,7 +684,6 @@ github.com/mitchellh/go-ps v1.0.0 h1:i6ampVEEF4wQFF+bkYfwYgY+F/uYJDktmvLPf7qIgjc github.com/mitchellh/go-ps v1.0.0/go.mod h1:J4lOc8z8yJs6vUwklHw2XEIiT4z4C40KtWVN3nvg8Pg= github.com/mitchellh/go-testing-interface v0.0.0-20171004221916-a61a99592b77/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= -github.com/mitchellh/go-testing-interface v1.0.4/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= github.com/mitchellh/go-testing-interface v1.14.1 h1:jrgshOhYAUVNMAJiKbEu7EqAwgJJ2JqpQmpLJOu07cU= github.com/mitchellh/go-testing-interface v1.14.1/go.mod h1:gfgS7OtZj6MA4U1UrDRp04twqAjfvlZyCfX3sDjEym8= github.com/mitchellh/go-wordwrap v0.0.0-20150314170334-ad45545899c7/go.mod h1:ZXFpozHsX6DPmq2I0TCekCxypsnAUbP2oI0UX1GXzOo= @@ -823,6 +820,7 @@ github.com/rjeczalik/notify v0.9.2/go.mod h1:aErll2f0sUX9PXZnVNyeiObbmTlk5jnMoCa github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= +github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= github.com/rogpeppe/go-internal v1.6.2/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= github.com/rogpeppe/go-internal v1.8.1 h1:geMPLpDpQOgVyCg5z5GoRwLHepNdb71NXb67XFkP+Eg= github.com/rogpeppe/go-internal v1.8.1/go.mod h1:JeRgkft04UBgHMgCIwADu4Pn6Mtm5d4nPKWu0nJ5d+o= @@ -883,8 +881,8 @@ github.com/src-d/gcfg v1.4.0 h1:xXbNR5AlLSA315x2UO+fTSSAXCDf+Ar38/6oyGbDKQ4= github.com/src-d/gcfg v1.4.0/go.mod h1:p/UMsR43ujA89BJY9duynAwIpvqEujIH/jFlfL7jWoI= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/objx v0.2.0 h1:Hbg2NidpLE8veEBkEZTL3CvlkUIVzuU9jDplZO54c48= github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE= +github.com/stretchr/objx v0.4.0 h1:M2gUjqZET1qApGOWNSnZ49BAIMX4F/1plDv3+l31EJ4= github.com/stretchr/testify v1.2.1/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= @@ -954,14 +952,12 @@ github.com/zclconf/go-cty v1.2.0/go.mod h1:hOPWgoHbaTUnI5k4D2ld+GRpFJSCe6bCM7m1q github.com/zclconf/go-cty v1.2.1/go.mod h1:hOPWgoHbaTUnI5k4D2ld+GRpFJSCe6bCM7m1q/N4PQ8= github.com/zclconf/go-cty v1.3.1/go.mod h1:YO23e2L18AG+ZYQfSobnY4G65nvwvprPCxBHkufUH1k= github.com/zclconf/go-cty v1.8.0/go.mod h1:vVKLxnk3puL4qRAv72AO+W99LUD4da90g3uUAzyuvAk= -github.com/zclconf/go-cty v1.8.2/go.mod h1:vVKLxnk3puL4qRAv72AO+W99LUD4da90g3uUAzyuvAk= github.com/zclconf/go-cty v1.9.1/go.mod h1:vVKLxnk3puL4qRAv72AO+W99LUD4da90g3uUAzyuvAk= github.com/zclconf/go-cty v1.10.0 h1:mp9ZXQeIcN8kAwuqorjH+Q+njbJKjLrvB2yIh4q7U+0= github.com/zclconf/go-cty v1.10.0/go.mod h1:vVKLxnk3puL4qRAv72AO+W99LUD4da90g3uUAzyuvAk= github.com/zclconf/go-cty-debug v0.0.0-20191215020915-b22d67c1ba0b/go.mod h1:ZRKQfBXbGkpdV6QMzT3rU1kSTAnfu1dO8dPKjYprgj8= +github.com/zclconf/go-cty-yaml v1.0.1 h1:up11wlgAaDvlAGENcFDnZgkn0qUJurso7k6EpURKNF8= github.com/zclconf/go-cty-yaml v1.0.1/go.mod h1:IP3Ylp0wQpYm50IHK8OZWKMu6sPJIUgKa8XhiVHura0= -github.com/zclconf/go-cty-yaml v1.0.2 h1:dNyg4QLTrv2IfJpm7Wtxi55ed5gLGOlPrZ6kMd51hY0= -github.com/zclconf/go-cty-yaml v1.0.2/go.mod h1:IP3Ylp0wQpYm50IHK8OZWKMu6sPJIUgKa8XhiVHura0= go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= go.opencensus.io v0.15.0/go.mod h1:UffZAU+4sDEINUGP/B7UfBBkq4fqLu9zXAX7ke6CHW0= go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= @@ -1284,7 +1280,6 @@ golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE= -golang.org/x/tools v0.0.0-20201028111035-eafbe7b904eb/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= @@ -1319,7 +1314,6 @@ google.golang.org/api v0.17.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/ google.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM= google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc= -google.golang.org/api v0.34.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg= google.golang.org/api v0.35.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg= google.golang.org/api v0.36.0/go.mod h1:+z5ficQTmoYpPn8LCUNVpK5I7hwkpjbcgqA7I34qYtE= google.golang.org/api v0.40.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjRCQ8= @@ -1368,7 +1362,6 @@ google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3Iji google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= google.golang.org/grpc v1.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= -google.golang.org/grpc v1.32.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= google.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA51WJ8= @@ -1383,8 +1376,9 @@ google.golang.org/grpc v1.39.1/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnD google.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= google.golang.org/grpc v1.40.1/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= google.golang.org/grpc v1.44.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU= -google.golang.org/grpc v1.45.0 h1:NEpgUqV3Z+ZjkqMsxMg11IaDrXY4RY6CQukSGK0uI1M= google.golang.org/grpc v1.45.0/go.mod h1:lN7owxKUQEqMfSyQikvvk5tf/6zMPsrK+ONuO11+0rQ= +google.golang.org/grpc v1.46.0 h1:oCjezcn6g6A75TGoKYBPgKmVBLexhYLM6MebdrPApP8= +google.golang.org/grpc v1.46.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= @@ -1439,8 +1433,9 @@ gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b h1:h8qDotaEPuJATrMmW04NCwg7v22aHH28wwpauUhK9Oo= gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gotest.tools v2.2.0+incompatible h1:VsBPFP1AI068pPrMxtb/S8Zkgf9xEmTLJjfM+P5UIEo= gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw= gotest.tools/v3 v3.0.2 h1:kG1BFyqVHuQoVQiR1bWGnfz/fmHvvuiSPIV7rvl360E= diff --git a/provider/resources.go b/provider/resources.go index 364ef84b..da3fcd58 100644 --- a/provider/resources.go +++ b/provider/resources.go @@ -19,7 +19,7 @@ import ( "path/filepath" "unicode" - "github.com/cloudflare/terraform-provider-cloudflare/cloudflare" + providerShim "github.com/cloudflare/terraform-provider-cloudflare/shim" "github.com/pulumi/pulumi-cloudflare/provider/v4/pkg/version" "github.com/pulumi/pulumi-terraform-bridge/v3/pkg/tfbridge" shimv2 "github.com/pulumi/pulumi-terraform-bridge/v3/pkg/tfshim/sdk-v2" @@ -63,7 +63,7 @@ func makeResource(mod string, res string) tokens.Type { // Provider returns additional overlaid schema and metadata associated with the provider.. func Provider() tfbridge.ProviderInfo { // Instantiate the Terraform provider - p := shimv2.NewProvider(cloudflare.Provider()) + p := shimv2.NewProvider(providerShim.NewProvider(version.Version)) // Create a Pulumi provider mapping prov := tfbridge.ProviderInfo{ diff --git a/provider/shim/go.mod b/provider/shim/go.mod new file mode 100644 index 00000000..0f931739 --- /dev/null +++ b/provider/shim/go.mod @@ -0,0 +1,64 @@ +module github.com/cloudflare/terraform-provider-cloudflare/shim + +go 1.18 + +// TODO: Remove this after the fix is merged +replace github.com/cloudflare/terraform-provider-cloudflare => github.com/mapped/terraform-provider-cloudflare v1.18.2-0.20220604053233-3f7c27d1822c + +require ( + github.com/cloudflare/terraform-provider-cloudflare v0.0.0-00010101000000-000000000000 + github.com/hashicorp/terraform-plugin-sdk/v2 v2.17.0 +) + +require ( + github.com/agext/levenshtein v1.2.3 // indirect + github.com/apparentlymart/go-textseg/v13 v13.0.0 // indirect + github.com/cloudflare/cloudflare-go v0.40.1-0.20220602010313-668778596a1c // indirect + github.com/davecgh/go-spew v1.1.1 // indirect + github.com/fatih/color v1.13.0 // indirect + github.com/golang/protobuf v1.5.2 // indirect + github.com/google/go-cmp v0.5.8 // indirect + github.com/google/go-querystring v1.1.0 // indirect + github.com/google/uuid v1.3.0 // indirect + github.com/hashicorp/errwrap v1.1.0 // indirect + github.com/hashicorp/go-checkpoint v0.5.0 // indirect + github.com/hashicorp/go-cleanhttp v0.5.2 // indirect + github.com/hashicorp/go-cty v1.4.1-0.20200414143053-d3edf31b6320 // indirect + github.com/hashicorp/go-hclog v1.2.0 // indirect + github.com/hashicorp/go-multierror v1.1.1 // indirect + github.com/hashicorp/go-plugin v1.4.4 // indirect + github.com/hashicorp/go-uuid v1.0.3 // indirect + github.com/hashicorp/go-version v1.5.0 // indirect + github.com/hashicorp/hc-install v0.3.2 // indirect + github.com/hashicorp/hcl/v2 v2.12.0 // indirect + github.com/hashicorp/logutils v1.0.0 // indirect + github.com/hashicorp/terraform-exec v0.16.1 // indirect + github.com/hashicorp/terraform-json v0.14.0 // indirect + github.com/hashicorp/terraform-plugin-go v0.9.1 // indirect + github.com/hashicorp/terraform-plugin-log v0.4.0 // indirect + github.com/hashicorp/terraform-registry-address v0.0.0-20210412075316-9b2996cce896 // indirect + github.com/hashicorp/terraform-svchost v0.0.0-20200729002733-f050f53b9734 // indirect + github.com/hashicorp/yamux v0.0.0-20210826001029-26ff87cf9493 // indirect + github.com/mattn/go-colorable v0.1.12 // indirect + github.com/mattn/go-isatty v0.0.14 // indirect + github.com/mitchellh/copystructure v1.2.0 // indirect + github.com/mitchellh/go-testing-interface v1.14.1 // indirect + github.com/mitchellh/go-wordwrap v1.0.1 // indirect + github.com/mitchellh/mapstructure v1.5.0 // indirect + github.com/mitchellh/reflectwalk v1.0.2 // indirect + github.com/oklog/run v1.1.0 // indirect + github.com/pkg/errors v0.9.1 // indirect + github.com/vmihailenco/msgpack v4.0.4+incompatible // indirect + github.com/vmihailenco/msgpack/v4 v4.3.12 // indirect + github.com/vmihailenco/tagparser v0.1.1 // indirect + github.com/zclconf/go-cty v1.10.0 // indirect + golang.org/x/crypto v0.0.0-20220411220226-7b82a4e95df4 // indirect + golang.org/x/net v0.0.0-20220412020605-290c469a71a5 // indirect + golang.org/x/sys v0.0.0-20220422013727-9388b58f7150 // indirect + golang.org/x/text v0.3.7 // indirect + golang.org/x/time v0.0.0-20220224211638-0e9765cccd65 // indirect + google.golang.org/appengine v1.6.7 // indirect + google.golang.org/genproto v0.0.0-20220407144326-9054f6ed7bac // indirect + google.golang.org/grpc v1.46.0 // indirect + google.golang.org/protobuf v1.28.0 // indirect +) diff --git a/provider/shim/go.sum b/provider/shim/go.sum new file mode 100644 index 00000000..113085df --- /dev/null +++ b/provider/shim/go.sum @@ -0,0 +1,359 @@ +cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/Microsoft/go-winio v0.4.14/go.mod h1:qXqCSQ3Xa7+6tgxaGTIe4Kpcdsi+P8jBhyzoq1bpyYA= +github.com/Microsoft/go-winio v0.4.16 h1:FtSW/jqD+l4ba5iPBj9CODVtgfYAD8w2wS923g/cFDk= +github.com/Microsoft/go-winio v0.4.16/go.mod h1:XB6nPKklQyQ7GC9LdcBEcBl8PF76WugXOPRXwdLnMv0= +github.com/ProtonMail/go-crypto v0.0.0-20210428141323-04723f9f07d7 h1:YoJbenK9C67SkzkDfmQuVln04ygHj3vjZfd9FL+GmQQ= +github.com/ProtonMail/go-crypto v0.0.0-20210428141323-04723f9f07d7/go.mod h1:z4/9nQmJSSwwds7ejkxaJwO37dru3geImFUdJlaLzQo= +github.com/acomagu/bufpipe v1.0.3 h1:fxAGrHZTgQ9w5QqVItgzwj235/uYZYgbXitB+dLupOk= +github.com/acomagu/bufpipe v1.0.3/go.mod h1:mxdxdup/WdsKVreO5GpW4+M/1CE2sMG4jeGJ2sYmHc4= +github.com/agext/levenshtein v1.2.1/go.mod h1:JEDfjyjHDjOF/1e4FlBE/PkbqA9OfWu2ki2W0IB5558= +github.com/agext/levenshtein v1.2.3 h1:YB2fHEn0UJagG8T1rrWknE3ZQzWM06O8AMAatNn7lmo= +github.com/agext/levenshtein v1.2.3/go.mod h1:JEDfjyjHDjOF/1e4FlBE/PkbqA9OfWu2ki2W0IB5558= +github.com/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239/go.mod h1:2FmKhYUyUczH0OGQWaF5ceTx0UBShxjsH6f8oGKYe2c= +github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= +github.com/apparentlymart/go-cidr v1.1.0 h1:2mAhrMoF+nhXqxTzSZMUzDHkLjmIHC+Zzn4tdgBZjnU= +github.com/apparentlymart/go-dump v0.0.0-20180507223929-23540a00eaa3/go.mod h1:oL81AME2rN47vu18xqj1S1jPIPuN7afo62yKTNn3XMM= +github.com/apparentlymart/go-dump v0.0.0-20190214190832-042adf3cf4a0 h1:MzVXffFUye+ZcSR6opIgz9Co7WcDx6ZcY+RjfFHoA0I= +github.com/apparentlymart/go-textseg v1.0.0/go.mod h1:z96Txxhf3xSFMPmb5X/1W05FF/Nj9VFpLOpjS5yuumk= +github.com/apparentlymart/go-textseg/v12 v12.0.0/go.mod h1:S/4uRK2UtaQttw1GenVJEynmyUenKwP++x/+DdGV/Ec= +github.com/apparentlymart/go-textseg/v13 v13.0.0 h1:Y+KvPE1NYz0xl601PVImeQfFyEy6iT90AvPUL1NNfNw= +github.com/apparentlymart/go-textseg/v13 v13.0.0/go.mod h1:ZK2fH7c4NqDTLtiYLvIkEghdlcqw7yxLeM89kiTRPUo= +github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs= +github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= +github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= +github.com/cloudflare/cloudflare-go v0.40.1-0.20220602010313-668778596a1c h1:OQXcMmN4u/nxDH6xVRhFe8CySHvQNMHWGwQpVursIa0= +github.com/cloudflare/cloudflare-go v0.40.1-0.20220602010313-668778596a1c/go.mod h1:MmAqiRfD8rjKEuUe4MYNHfHjYhFWfW7PNe12CCQWqPY= +github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= +github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= +github.com/cncf/udpa/go v0.0.0-20210930031921-04548b0d99d4/go.mod h1:6pvJx4me5XPnfI9Z40ddWsdw2W/uZgQLFXToKeRcDiI= +github.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20211001041855-01bcc9b48dfe/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/emirpasic/gods v1.12.0 h1:QAUIPSaCu4G+POclxeqb3F+WPpdKqFGlw36+yOzGlrg= +github.com/emirpasic/gods v1.12.0/go.mod h1:YfzfFFoVP/catgzJb4IKIqXjX78Ha8FMSDh3ymbK86o= +github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= +github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= +github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= +github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= +github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0= +github.com/envoyproxy/go-control-plane v0.10.2-0.20220325020618-49ff273808a1/go.mod h1:KJwIaB5Mv44NWtYuAOFCVOjcI94vtpEz2JU/D2v6IjE= +github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= +github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= +github.com/fatih/color v1.13.0 h1:8LOYc1KYPPmyKMuN8QV2DNRWNbLo6LZ0iLs8+mlH53w= +github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= +github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568/go.mod h1:xEzjJPgXI435gkrCt3MPfRiAkVrwSbHsst4LCFVfpJc= +github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= +github.com/gliderlabs/ssh v0.2.2/go.mod h1:U7qILu1NlMHj9FlMhZLlkCdDnU1DBEAqr0aevW3Awn0= +github.com/go-git/gcfg v1.5.0 h1:Q5ViNfGF8zFgyJWPqYwA7qGFoMTEiBmdlkcfRmpIMa4= +github.com/go-git/gcfg v1.5.0/go.mod h1:5m20vg6GwYabIxaOonVkTdrILxQMpEShl1xiMF4ua+E= +github.com/go-git/go-billy/v5 v5.2.0/go.mod h1:pmpqyWchKfYfrkb/UVH4otLvyi/5gJlGI4Hb3ZqZ3W0= +github.com/go-git/go-billy/v5 v5.3.1 h1:CPiOUAzKtMRvolEKw+bG1PLRpT7D3LIs3/3ey4Aiu34= +github.com/go-git/go-billy/v5 v5.3.1/go.mod h1:pmpqyWchKfYfrkb/UVH4otLvyi/5gJlGI4Hb3ZqZ3W0= +github.com/go-git/go-git-fixtures/v4 v4.2.1/go.mod h1:K8zd3kDUAykwTdDCr+I0per6Y6vMiRR/nnVTBtavnB0= +github.com/go-git/go-git/v5 v5.4.2 h1:BXyZu9t0VkbiHtqrsvdq39UDhGJTl1h55VW6CSC4aY4= +github.com/go-git/go-git/v5 v5.4.2/go.mod h1:gQ1kArt6d+n+BGd+/B/I74HwRTLhth2+zti4ihgckDc= +github.com/go-test/deep v1.0.3 h1:ZrJSEWsXzPOxaZnFteGEfooLba+ju3FYIbOrS+rQd68= +github.com/go-test/deep v1.0.3/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA= +github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= +github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/protobuf v1.1.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= +github.com/golang/protobuf v1.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= +github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= +github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= +github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= +github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= +github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= +github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= +github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= +github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= +github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= +github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw= +github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= +github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= +github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.8 h1:e6P7q2lk1O+qJJb4BtCQXlK8vWEO8V1ZeuEdJNOqZyg= +github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/go-querystring v1.1.0 h1:AnCroh3fv4ZBgVIf1Iwtovgjaw/GiKJo8M8yD/fhyJ8= +github.com/google/go-querystring v1.1.0/go.mod h1:Kcdr2DB4koayq7X8pmAG4sNG59So17icRSOU623lUBU= +github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= +github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= +github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= +github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I= +github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= +github.com/hashicorp/go-checkpoint v0.5.0 h1:MFYpPZCnQqQTE18jFwSII6eUQrD/oxMFp3mlgcqk5mU= +github.com/hashicorp/go-checkpoint v0.5.0/go.mod h1:7nfLNL10NsxqO4iWuW6tWW0HjZuDrwkBuEQsVcpCOgg= +github.com/hashicorp/go-cleanhttp v0.5.0/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= +github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= +github.com/hashicorp/go-cleanhttp v0.5.2 h1:035FKYIWjmULyFRBKPs8TBQoi0x6d9G4xc9neXJWAZQ= +github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48= +github.com/hashicorp/go-cty v1.4.1-0.20200414143053-d3edf31b6320 h1:1/D3zfFHttUKaCaGKZ/dR2roBXv0vKbSCnssIldfQdI= +github.com/hashicorp/go-cty v1.4.1-0.20200414143053-d3edf31b6320/go.mod h1:EiZBMaudVLy8fmjf9Npq1dq9RalhveqZG5w/yz3mHWs= +github.com/hashicorp/go-hclog v1.2.0 h1:La19f8d7WIlm4ogzNHB0JGqs5AUDAZ2UfCY4sJXcJdM= +github.com/hashicorp/go-hclog v1.2.0/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= +github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo= +github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM= +github.com/hashicorp/go-plugin v1.4.4 h1:NVdrSdFRt3SkZtNckJ6tog7gbpRrcbOjQi/rgF7JYWQ= +github.com/hashicorp/go-plugin v1.4.4/go.mod h1:viDMjcLJuDui6pXb8U4HVfb8AamCWhHGUjr2IrTF67s= +github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= +github.com/hashicorp/go-uuid v1.0.3 h1:2gKiV6YVmrJ1i2CKKa9obLvRieoRGviZFL26PcT/Co8= +github.com/hashicorp/go-uuid v1.0.3/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= +github.com/hashicorp/go-version v1.2.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= +github.com/hashicorp/go-version v1.4.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= +github.com/hashicorp/go-version v1.5.0 h1:O293SZ2Eg+AAYijkVK3jR786Am1bhDEh2GHT0tIVE5E= +github.com/hashicorp/go-version v1.5.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= +github.com/hashicorp/hc-install v0.3.2 h1:oiQdJZvXmkNcRcEOOfM5n+VTsvNjWQeOjfAoO6dKSH8= +github.com/hashicorp/hc-install v0.3.2/go.mod h1:xMG6Tr8Fw1WFjlxH0A9v61cW15pFwgEGqEz0V4jisHs= +github.com/hashicorp/hcl/v2 v2.12.0 h1:PsYxySWpMD4KPaoJLnsHwtK5Qptvj/4Q6s0t4sUxZf4= +github.com/hashicorp/hcl/v2 v2.12.0/go.mod h1:FwWsfWEjyV/CMj8s/gqAuiviY72rJ1/oayI9WftqcKg= +github.com/hashicorp/logutils v1.0.0 h1:dLEQVugN8vlakKOUE3ihGLTZJRB4j+M2cdTm/ORI65Y= +github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= +github.com/hashicorp/terraform-exec v0.16.1 h1:NAwZFJW2L2SaCBVZoVaH8LPImLOGbPLkSHy0IYbs2uE= +github.com/hashicorp/terraform-exec v0.16.1/go.mod h1:aj0lVshy8l+MHhFNoijNHtqTJQI3Xlowv5EOsEaGO7M= +github.com/hashicorp/terraform-json v0.14.0 h1:sh9iZ1Y8IFJLx+xQiKHGud6/TSUCM0N8e17dKDpqV7s= +github.com/hashicorp/terraform-json v0.14.0/go.mod h1:5A9HIWPkk4e5aeeXIBbkcOvaZbIYnAIkEyqP2pNSckM= +github.com/hashicorp/terraform-plugin-go v0.9.1 h1:vXdHaQ6aqL+OF076nMSBV+JKPdmXlzG5mzVDD04WyPs= +github.com/hashicorp/terraform-plugin-go v0.9.1/go.mod h1:ItjVSlQs70otlzcCwlPcU8FRXLdO973oYFRZwAOxy8M= +github.com/hashicorp/terraform-plugin-log v0.4.0 h1:F3eVnm8r2EfQCe2k9blPIiF/r2TT01SHijXnS7bujvc= +github.com/hashicorp/terraform-plugin-log v0.4.0/go.mod h1:9KclxdunFownr4pIm1jdmwKRmE4d6HVG2c9XDq47rpg= +github.com/hashicorp/terraform-plugin-sdk/v2 v2.17.0 h1:Qr5fWNg1SPSfCRMtou67Y6Kcy9UnMYRNlIJTKRuUvXU= +github.com/hashicorp/terraform-plugin-sdk/v2 v2.17.0/go.mod h1:b+LFg8WpYgFgvEBP/6Htk5H9/pJp1V1E8NJAekfH2Ws= +github.com/hashicorp/terraform-registry-address v0.0.0-20210412075316-9b2996cce896 h1:1FGtlkJw87UsTMg5s8jrekrHmUPUJaMcu6ELiVhQrNw= +github.com/hashicorp/terraform-registry-address v0.0.0-20210412075316-9b2996cce896/go.mod h1:bzBPnUIkI0RxauU8Dqo+2KrZZ28Cf48s8V6IHt3p4co= +github.com/hashicorp/terraform-svchost v0.0.0-20200729002733-f050f53b9734 h1:HKLsbzeOsfXmKNpr3GiT18XAblV0BjCbzL8KQAMZGa0= +github.com/hashicorp/terraform-svchost v0.0.0-20200729002733-f050f53b9734/go.mod h1:kNDNcF7sN4DocDLBkQYz73HGKwN1ANB1blq4lIYLYvg= +github.com/hashicorp/yamux v0.0.0-20210826001029-26ff87cf9493 h1:brI5vBRUlAlM34VFmnLPwjnCL/FxAJp9XvOdX6Zt+XE= +github.com/hashicorp/yamux v0.0.0-20210826001029-26ff87cf9493/go.mod h1:CtWFDAQgb7dxtzFs4tWbplKIe2jSi3+5vKbgIO0SLnQ= +github.com/imdario/mergo v0.3.12 h1:b6R2BslTbIEToALKP7LxUvijTsNI9TAe80pLWN2g/HU= +github.com/imdario/mergo v0.3.12/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= +github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 h1:BQSFePA1RWJOlocH6Fxy8MmwDt+yVQYULKfN0RoTN8A= +github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod h1:1lJo3i6rXxKeerYnT8Nvf0QmHCRC1n8sfWVwXF2Frvo= +github.com/jessevdk/go-flags v1.5.0/go.mod h1:Fw0T6WPc1dYxT4mKEZRfG5kJhaTDP9pj1c2EWnYs/m4= +github.com/jhump/protoreflect v1.6.0 h1:h5jfMVslIg6l29nsMs0D8Wj17RDVdNYti0vDN/PZZoE= +github.com/kevinburke/ssh_config v0.0.0-20201106050909-4977a11b4351 h1:DowS9hvgyYSX4TO5NpyC606/Z4SxnNYbT+WX27or6Ck= +github.com/kevinburke/ssh_config v0.0.0-20201106050909-4977a11b4351/go.mod h1:CT57kijsi8u/K/BOFA39wgDQJ9CxiF4nAY/ojJ6r6mM= +github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +github.com/kr/pretty v0.2.1 h1:Fmg33tUaq4/8ym9TJN1x7sLJnHVwhP33CNkpYV/7rwI= +github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= +github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= +github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= +github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= +github.com/kylelemons/godebug v0.0.0-20170820004349-d65d576e9348/go.mod h1:B69LEHPfb2qLo0BaaOLcbitczOKLWTsrBG9LczfCD4k= +github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc= +github.com/mapped/terraform-provider-cloudflare v1.18.2-0.20220604053233-3f7c27d1822c h1:zw6H/gaLPG//darzfKzZKN+96DE9W5tH2+WBuSx5SSc= +github.com/mapped/terraform-provider-cloudflare v1.18.2-0.20220604053233-3f7c27d1822c/go.mod h1:SbDS8UqK8mQOM50qB6OPIRl96Hq/N6NxzfOUVYLzQvA= +github.com/matryer/is v1.2.0/go.mod h1:2fLPjFQM9rhQ15aVEtbuwhJinnOqrmgXPNdZsdwlWXA= +github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= +github.com/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= +github.com/mattn/go-colorable v0.1.12 h1:jF+Du6AlPIjs2BiUiQlKOX0rt3SujHxPnksPKZbaA40= +github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4= +github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= +github.com/mattn/go-isatty v0.0.10/go.mod h1:qgIWMr58cqv1PHHyhnkY9lrL7etaEgOFcMEpPG5Rm84= +github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= +github.com/mattn/go-isatty v0.0.14 h1:yVuAays6BHfxijgZPzw+3Zlu5yQgKGP2/hcQbHb7S9Y= +github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= +github.com/mitchellh/copystructure v1.2.0 h1:vpKXTN4ewci03Vljg/q9QvCGUDttBOGBIa15WveJJGw= +github.com/mitchellh/copystructure v1.2.0/go.mod h1:qLl+cE2AmVv+CoeAwDPye/v+N2HKCj9FbZEVFJRxO9s= +github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= +github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= +github.com/mitchellh/go-testing-interface v1.14.1 h1:jrgshOhYAUVNMAJiKbEu7EqAwgJJ2JqpQmpLJOu07cU= +github.com/mitchellh/go-testing-interface v1.14.1/go.mod h1:gfgS7OtZj6MA4U1UrDRp04twqAjfvlZyCfX3sDjEym8= +github.com/mitchellh/go-wordwrap v0.0.0-20150314170334-ad45545899c7/go.mod h1:ZXFpozHsX6DPmq2I0TCekCxypsnAUbP2oI0UX1GXzOo= +github.com/mitchellh/go-wordwrap v1.0.1 h1:TLuKupo69TCn6TQSyGxwI1EblZZEsQ0vMlAFQflz0v0= +github.com/mitchellh/go-wordwrap v1.0.1/go.mod h1:R62XHJLzvMFRBbcrT7m7WgmE1eOyTSsCt+hzestvNj0= +github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= +github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= +github.com/mitchellh/reflectwalk v1.0.2 h1:G2LzWKi524PWgd3mLHV8Y5k7s6XUvT0Gef6zxSIeXaQ= +github.com/mitchellh/reflectwalk v1.0.2/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= +github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= +github.com/nsf/jsondiff v0.0.0-20200515183724-f29ed568f4ce h1:RPclfga2SEJmgMmz2k+Mg7cowZ8yv4Trqw9UsJby758= +github.com/oklog/run v1.1.0 h1:GEenZ1cK0+q0+wsJew9qUg/DyD8k3JzYsZAi5gYi2mA= +github.com/oklog/run v1.1.0/go.mod h1:sVPdnTZT1zYwAJeCMu2Th4T21pA3FPOQRfWjQlk7DVU= +github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= +github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= +github.com/sebdah/goldie v1.0.0/go.mod h1:jXP4hmWywNEwZzhMuv2ccnqTSFpuq8iyQhtQdkkZBH4= +github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= +github.com/sergi/go-diff v1.1.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= +github.com/sergi/go-diff v1.2.0 h1:XU+rvMAioB0UC3q1MFrIQy4Vo5/4VsRDQQXHsEya6xQ= +github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q= +github.com/spf13/pflag v1.0.2/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= +github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= +github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.7.1 h1:5TQK59W5E3v0r2duFAb7P95B6hEeOyEnHRa8MjYSMTY= +github.com/vmihailenco/msgpack v3.3.3+incompatible/go.mod h1:fy3FlTQTDXWkZ7Bh6AcGMlsjHatGryHQYUTf1ShIgkk= +github.com/vmihailenco/msgpack v4.0.4+incompatible h1:dSLoQfGFAo3F6OoNhwUmLwVgaUXK79GlxNBwueZn0xI= +github.com/vmihailenco/msgpack v4.0.4+incompatible/go.mod h1:fy3FlTQTDXWkZ7Bh6AcGMlsjHatGryHQYUTf1ShIgkk= +github.com/vmihailenco/msgpack/v4 v4.3.12 h1:07s4sz9IReOgdikxLTKNbBdqDMLsjPKXwvCazn8G65U= +github.com/vmihailenco/msgpack/v4 v4.3.12/go.mod h1:gborTTJjAo/GWTqqRjrLCn9pgNN+NXzzngzBKDPIqw4= +github.com/vmihailenco/tagparser v0.1.1 h1:quXMXlA39OCbd2wAdTsGDlK9RkOk6Wuw+x37wVyIuWY= +github.com/vmihailenco/tagparser v0.1.1/go.mod h1:OeAg3pn3UbLjkWt+rN9oFYB6u/cQgqMEUPoW2WPyhdI= +github.com/xanzy/ssh-agent v0.3.0 h1:wUMzuKtKilRgBAD1sUb8gOwwRr2FGoBVumcjoOACClI= +github.com/xanzy/ssh-agent v0.3.0/go.mod h1:3s9xbODqPuuhK9JV1R321M/FlMZSBvE5aY6eAcqrDh0= +github.com/zclconf/go-cty v1.1.0/go.mod h1:xnAOWiHeOqg2nWS62VtQ7pbOu17FtxJNW8RLEih+O3s= +github.com/zclconf/go-cty v1.2.0/go.mod h1:hOPWgoHbaTUnI5k4D2ld+GRpFJSCe6bCM7m1q/N4PQ8= +github.com/zclconf/go-cty v1.8.0/go.mod h1:vVKLxnk3puL4qRAv72AO+W99LUD4da90g3uUAzyuvAk= +github.com/zclconf/go-cty v1.10.0 h1:mp9ZXQeIcN8kAwuqorjH+Q+njbJKjLrvB2yIh4q7U+0= +github.com/zclconf/go-cty v1.10.0/go.mod h1:vVKLxnk3puL4qRAv72AO+W99LUD4da90g3uUAzyuvAk= +github.com/zclconf/go-cty-debug v0.0.0-20191215020915-b22d67c1ba0b/go.mod h1:ZRKQfBXbGkpdV6QMzT3rU1kSTAnfu1dO8dPKjYprgj8= +go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= +golang.org/x/crypto v0.0.0-20190219172222-a4c6cb3142f2/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20190426145343-a29dc8fdc734/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= +golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= +golang.org/x/crypto v0.0.0-20210616213533-5ff15b29337e/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.0.0-20220411220226-7b82a4e95df4 h1:kUhD7nTDoI3fVd9G4ORWrbV5NY0liEs/Jg2pv5f+bBA= +golang.org/x/crypto v0.0.0-20220411220226-7b82a4e95df4/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= +golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= +golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= +golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180811021610-c39426892332/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= +golang.org/x/net v0.0.0-20191009170851-d66e71096ffb/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20210326060303-6b1517762897/go.mod h1:uSPa2vr4CLtc/ILN5odXGNXS6mhrKVzTaCXzk9m6W3k= +golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= +golang.org/x/net v0.0.0-20220412020605-290c469a71a5 h1:bRb386wvrE+oBNdF1d/Xh9mQrfQ4ecYhW5qJ5GvTGT4= +golang.org/x/net v0.0.0-20220412020605-290c469a71a5/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= +golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190502175342-a43fa875dd82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191008105621-543471e840be/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210324051608-47abb6519492/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210502180810-71e4cd670f79/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220422013727-9388b58f7150 h1:xHms4gcpe1YE7A3yIllJXP16CMAGuqwO2lX1mTyyRRc= +golang.org/x/sys v0.0.0-20220422013727-9388b58f7150/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= +golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.7 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk= +golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= +golang.org/x/time v0.0.0-20220224211638-0e9765cccd65 h1:M73Iuj3xbbb9Uk1DYhzydthsj6oOd6l9bpuFcNoUvTs= +golang.org/x/time v0.0.0-20220224211638-0e9765cccd65/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= +golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= +google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/appengine v1.6.7 h1:FZR1q0exgwxzPzp/aF+VccGrSfxfPpkBqjIIEq3ru6c= +google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= +google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= +google.golang.org/genproto v0.0.0-20220407144326-9054f6ed7bac h1:qSNTkEN+L2mvWcLgJOR+8bdHX9rN/IdU3A1Ghpfb1Rg= +google.golang.org/genproto v0.0.0-20220407144326-9054f6ed7bac/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= +google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= +google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= +google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= +google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= +google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= +google.golang.org/grpc v1.45.0/go.mod h1:lN7owxKUQEqMfSyQikvvk5tf/6zMPsrK+ONuO11+0rQ= +google.golang.org/grpc v1.46.0 h1:oCjezcn6g6A75TGoKYBPgKmVBLexhYLM6MebdrPApP8= +google.golang.org/grpc v1.46.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= +google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= +google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= +google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= +google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= +google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= +google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= +google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= +google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= +google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= +google.golang.org/protobuf v1.28.0 h1:w43yiav+6bVFTBQFZX0r7ipe9JQ1QsbMgHwbBziscLw= +google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= +gopkg.in/warnings.v0 v0.1.2 h1:wFXVbFY8DY5/xOe1ECiWdKCzZlxgshcYVNkBHstARME= +gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI= +gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= diff --git a/provider/shim/shim.go b/provider/shim/shim.go new file mode 100644 index 00000000..0c50312b --- /dev/null +++ b/provider/shim/shim.go @@ -0,0 +1,10 @@ +package shim + +import ( + "github.com/cloudflare/terraform-provider-cloudflare/internal/provider" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" +) + +func NewProvider(version string) *schema.Provider { + return provider.New(version)() +} From 7e2bfaf269033753092a6377504d84075d9f23bf Mon Sep 17 00:00:00 2001 From: Ivan Sabelnikov Date: Sat, 4 Jun 2022 09:43:38 +0300 Subject: [PATCH 2/2] Updgrade to the latest tf provider --- .../pulumi-resource-cloudflare/schema.json | 345 +++- provider/go.mod | 4 +- provider/go.sum | 8 +- provider/resources.go | 49 +- sdk/dotnet/AccessApplication.cs | 8 +- sdk/dotnet/AccessGroup.cs | 2 + sdk/dotnet/ArgoTunnel.cs | 12 + sdk/dotnet/Healthcheck.cs | 10 + sdk/dotnet/Inputs/AccessGroupExcludeArgs.cs | 3 + ...ccessGroupExcludeExternalEvaluationArgs.cs | 25 + ...ssGroupExcludeExternalEvaluationGetArgs.cs | 25 + .../Inputs/AccessGroupExcludeGetArgs.cs | 3 + sdk/dotnet/Inputs/AccessGroupIncludeArgs.cs | 3 + ...ccessGroupIncludeExternalEvaluationArgs.cs | 25 + ...ssGroupIncludeExternalEvaluationGetArgs.cs | 25 + .../Inputs/AccessGroupIncludeGetArgs.cs | 3 + sdk/dotnet/Inputs/AccessGroupRequireArgs.cs | 3 + ...ccessGroupRequireExternalEvaluationArgs.cs | 25 + ...ssGroupRequireExternalEvaluationGetArgs.cs | 25 + .../Inputs/AccessGroupRequireGetArgs.cs | 3 + sdk/dotnet/Inputs/AccessPolicyExcludeArgs.cs | 3 + ...cessPolicyExcludeExternalEvaluationArgs.cs | 25 + ...sPolicyExcludeExternalEvaluationGetArgs.cs | 25 + .../Inputs/AccessPolicyExcludeGetArgs.cs | 3 + sdk/dotnet/Inputs/AccessPolicyIncludeArgs.cs | 3 + ...cessPolicyIncludeExternalEvaluationArgs.cs | 25 + ...sPolicyIncludeExternalEvaluationGetArgs.cs | 25 + .../Inputs/AccessPolicyIncludeGetArgs.cs | 3 + sdk/dotnet/Inputs/AccessPolicyRequireArgs.cs | 3 + ...cessPolicyRequireExternalEvaluationArgs.cs | 25 + ...sPolicyRequireExternalEvaluationGetArgs.cs | 25 + .../Inputs/AccessPolicyRequireGetArgs.cs | 3 + .../Inputs/RulesetRuleActionParametersArgs.cs | 36 + .../RulesetRuleActionParametersGetArgs.cs | 36 + sdk/dotnet/LogpushJob.cs | 19 + sdk/dotnet/Outputs/AccessGroupExclude.cs | 4 + .../AccessGroupExcludeExternalEvaluation.cs | 29 + sdk/dotnet/Outputs/AccessGroupInclude.cs | 4 + .../AccessGroupIncludeExternalEvaluation.cs | 29 + sdk/dotnet/Outputs/AccessGroupRequire.cs | 4 + .../AccessGroupRequireExternalEvaluation.cs | 29 + sdk/dotnet/Outputs/AccessPolicyExclude.cs | 4 + .../AccessPolicyExcludeExternalEvaluation.cs | 29 + sdk/dotnet/Outputs/AccessPolicyInclude.cs | 4 + .../AccessPolicyIncludeExternalEvaluation.cs | 29 + sdk/dotnet/Outputs/AccessPolicyRequire.cs | 4 + .../AccessPolicyRequireExternalEvaluation.cs | 29 + .../Outputs/RulesetRuleActionParameters.cs | 21 + sdk/dotnet/Ruleset.cs | 40 + sdk/dotnet/TunnelRoute.cs | 28 +- sdk/dotnet/TunnelVirtualNetwork.cs | 178 ++ sdk/dotnet/WaitingRoom.cs | 18 + sdk/dotnet/WaitingRoomEvent.cs | 23 + sdk/dotnet/go.mod | 3 + sdk/go/cloudflare/accessApplication.go | 18 +- sdk/go/cloudflare/accessGroup.go | 2 + sdk/go/cloudflare/argoTunnel.go | 11 + sdk/go/cloudflare/healthcheck.go | 10 + sdk/go/cloudflare/init.go | 7 + sdk/go/cloudflare/logpushJob.go | 16 + sdk/go/cloudflare/pulumiTypes.go | 1503 ++++++++++++++--- sdk/go/cloudflare/ruleset.go | 35 + sdk/go/cloudflare/tunnelRoute.go | 41 +- sdk/go/cloudflare/tunnelVirtualNetwork.go | 300 ++++ sdk/go/cloudflare/waitingRoom.go | 15 + sdk/go/cloudflare/waitingRoomEvent.go | 27 + sdk/nodejs/accessApplication.ts | 8 +- sdk/nodejs/accessGroup.ts | 2 + sdk/nodejs/argoTunnel.ts | 10 + sdk/nodejs/go.mod | 3 + sdk/nodejs/healthcheck.ts | 10 + sdk/nodejs/index.ts | 5 + sdk/nodejs/logpushJob.ts | 15 + sdk/nodejs/ruleset.ts | 31 + sdk/nodejs/tsconfig.json | 1 + sdk/nodejs/tunnelRoute.ts | 24 +- sdk/nodejs/tunnelVirtualNetwork.ts | 155 ++ sdk/nodejs/types/input.ts | 104 +- sdk/nodejs/types/output.ts | 48 + sdk/nodejs/waitingRoom.ts | 14 + sdk/nodejs/waitingRoomEvent.ts | 2 +- sdk/python/go.mod | 3 + sdk/python/pulumi_cloudflare/__init__.py | 9 + sdk/python/pulumi_cloudflare/_inputs.py | 300 ++++ .../pulumi_cloudflare/access_application.py | 16 +- sdk/python/pulumi_cloudflare/access_group.py | 4 + sdk/python/pulumi_cloudflare/argo_tunnel.py | 32 +- sdk/python/pulumi_cloudflare/healthcheck.py | 20 + sdk/python/pulumi_cloudflare/logpush_job.py | 49 + sdk/python/pulumi_cloudflare/outputs.py | 350 +++- sdk/python/pulumi_cloudflare/ruleset.py | 60 + sdk/python/pulumi_cloudflare/tunnel_route.py | 81 +- .../tunnel_virtual_network.py | 334 ++++ sdk/python/pulumi_cloudflare/waiting_room.py | 47 + .../pulumi_cloudflare/waiting_room_event.py | 28 + 95 files changed, 4758 insertions(+), 366 deletions(-) create mode 100644 sdk/dotnet/Inputs/AccessGroupExcludeExternalEvaluationArgs.cs create mode 100644 sdk/dotnet/Inputs/AccessGroupExcludeExternalEvaluationGetArgs.cs create mode 100644 sdk/dotnet/Inputs/AccessGroupIncludeExternalEvaluationArgs.cs create mode 100644 sdk/dotnet/Inputs/AccessGroupIncludeExternalEvaluationGetArgs.cs create mode 100644 sdk/dotnet/Inputs/AccessGroupRequireExternalEvaluationArgs.cs create mode 100644 sdk/dotnet/Inputs/AccessGroupRequireExternalEvaluationGetArgs.cs create mode 100644 sdk/dotnet/Inputs/AccessPolicyExcludeExternalEvaluationArgs.cs create mode 100644 sdk/dotnet/Inputs/AccessPolicyExcludeExternalEvaluationGetArgs.cs create mode 100644 sdk/dotnet/Inputs/AccessPolicyIncludeExternalEvaluationArgs.cs create mode 100644 sdk/dotnet/Inputs/AccessPolicyIncludeExternalEvaluationGetArgs.cs create mode 100644 sdk/dotnet/Inputs/AccessPolicyRequireExternalEvaluationArgs.cs create mode 100644 sdk/dotnet/Inputs/AccessPolicyRequireExternalEvaluationGetArgs.cs create mode 100644 sdk/dotnet/Outputs/AccessGroupExcludeExternalEvaluation.cs create mode 100644 sdk/dotnet/Outputs/AccessGroupIncludeExternalEvaluation.cs create mode 100644 sdk/dotnet/Outputs/AccessGroupRequireExternalEvaluation.cs create mode 100644 sdk/dotnet/Outputs/AccessPolicyExcludeExternalEvaluation.cs create mode 100644 sdk/dotnet/Outputs/AccessPolicyIncludeExternalEvaluation.cs create mode 100644 sdk/dotnet/Outputs/AccessPolicyRequireExternalEvaluation.cs create mode 100644 sdk/dotnet/TunnelVirtualNetwork.cs create mode 100644 sdk/dotnet/go.mod create mode 100644 sdk/go/cloudflare/tunnelVirtualNetwork.go create mode 100644 sdk/nodejs/go.mod create mode 100644 sdk/nodejs/tunnelVirtualNetwork.ts create mode 100644 sdk/python/go.mod create mode 100644 sdk/python/pulumi_cloudflare/tunnel_virtual_network.py diff --git a/provider/cmd/pulumi-resource-cloudflare/schema.json b/provider/cmd/pulumi-resource-cloudflare/schema.json index a39caeec..bab1621b 100644 --- a/provider/cmd/pulumi-resource-cloudflare/schema.json +++ b/provider/cmd/pulumi-resource-cloudflare/schema.json @@ -267,6 +267,14 @@ } } }, + "externalEvaluation": { + "$ref": "#/types/cloudflare:index/AccessGroupExcludeExternalEvaluation:AccessGroupExcludeExternalEvaluation", + "language": { + "python": { + "mapCase": false + } + } + }, "geos": { "type": "array", "items": { @@ -393,6 +401,27 @@ }, "type": "object" }, + "cloudflare:index/AccessGroupExcludeExternalEvaluation:AccessGroupExcludeExternalEvaluation": { + "properties": { + "evaluateUrl": { + "type": "string", + "language": { + "python": { + "mapCase": false + } + } + }, + "keysUrl": { + "type": "string", + "language": { + "python": { + "mapCase": false + } + } + } + }, + "type": "object" + }, "cloudflare:index/AccessGroupExcludeGithub:AccessGroupExcludeGithub": { "properties": { "identityProviderId": { @@ -590,6 +619,14 @@ } } }, + "externalEvaluation": { + "$ref": "#/types/cloudflare:index/AccessGroupIncludeExternalEvaluation:AccessGroupIncludeExternalEvaluation", + "language": { + "python": { + "mapCase": false + } + } + }, "geos": { "type": "array", "items": { @@ -716,6 +753,27 @@ }, "type": "object" }, + "cloudflare:index/AccessGroupIncludeExternalEvaluation:AccessGroupIncludeExternalEvaluation": { + "properties": { + "evaluateUrl": { + "type": "string", + "language": { + "python": { + "mapCase": false + } + } + }, + "keysUrl": { + "type": "string", + "language": { + "python": { + "mapCase": false + } + } + } + }, + "type": "object" + }, "cloudflare:index/AccessGroupIncludeGithub:AccessGroupIncludeGithub": { "properties": { "identityProviderId": { @@ -913,6 +971,14 @@ } } }, + "externalEvaluation": { + "$ref": "#/types/cloudflare:index/AccessGroupRequireExternalEvaluation:AccessGroupRequireExternalEvaluation", + "language": { + "python": { + "mapCase": false + } + } + }, "geos": { "type": "array", "items": { @@ -1039,6 +1105,27 @@ }, "type": "object" }, + "cloudflare:index/AccessGroupRequireExternalEvaluation:AccessGroupRequireExternalEvaluation": { + "properties": { + "evaluateUrl": { + "type": "string", + "language": { + "python": { + "mapCase": false + } + } + }, + "keysUrl": { + "type": "string", + "language": { + "python": { + "mapCase": false + } + } + } + }, + "type": "object" + }, "cloudflare:index/AccessGroupRequireGithub:AccessGroupRequireGithub": { "properties": { "identityProviderId": { @@ -1448,6 +1535,14 @@ } } }, + "externalEvaluation": { + "$ref": "#/types/cloudflare:index/AccessPolicyExcludeExternalEvaluation:AccessPolicyExcludeExternalEvaluation", + "language": { + "python": { + "mapCase": false + } + } + }, "geos": { "type": "array", "items": { @@ -1574,6 +1669,27 @@ }, "type": "object" }, + "cloudflare:index/AccessPolicyExcludeExternalEvaluation:AccessPolicyExcludeExternalEvaluation": { + "properties": { + "evaluateUrl": { + "type": "string", + "language": { + "python": { + "mapCase": false + } + } + }, + "keysUrl": { + "type": "string", + "language": { + "python": { + "mapCase": false + } + } + } + }, + "type": "object" + }, "cloudflare:index/AccessPolicyExcludeGithub:AccessPolicyExcludeGithub": { "properties": { "identityProviderId": { @@ -1771,6 +1887,14 @@ } } }, + "externalEvaluation": { + "$ref": "#/types/cloudflare:index/AccessPolicyIncludeExternalEvaluation:AccessPolicyIncludeExternalEvaluation", + "language": { + "python": { + "mapCase": false + } + } + }, "geos": { "type": "array", "items": { @@ -1897,6 +2021,27 @@ }, "type": "object" }, + "cloudflare:index/AccessPolicyIncludeExternalEvaluation:AccessPolicyIncludeExternalEvaluation": { + "properties": { + "evaluateUrl": { + "type": "string", + "language": { + "python": { + "mapCase": false + } + } + }, + "keysUrl": { + "type": "string", + "language": { + "python": { + "mapCase": false + } + } + } + }, + "type": "object" + }, "cloudflare:index/AccessPolicyIncludeGithub:AccessPolicyIncludeGithub": { "properties": { "identityProviderId": { @@ -2094,6 +2239,14 @@ } } }, + "externalEvaluation": { + "$ref": "#/types/cloudflare:index/AccessPolicyRequireExternalEvaluation:AccessPolicyRequireExternalEvaluation", + "language": { + "python": { + "mapCase": false + } + } + }, "geos": { "type": "array", "items": { @@ -2220,6 +2373,27 @@ }, "type": "object" }, + "cloudflare:index/AccessPolicyRequireExternalEvaluation:AccessPolicyRequireExternalEvaluation": { + "properties": { + "evaluateUrl": { + "type": "string", + "language": { + "python": { + "mapCase": false + } + } + }, + "keysUrl": { + "type": "string", + "language": { + "python": { + "mapCase": false + } + } + } + }, + "type": "object" + }, "cloudflare:index/AccessPolicyRequireGithub:AccessPolicyRequireGithub": { "properties": { "identityProviderId": { @@ -5181,6 +5355,18 @@ }, "cloudflare:index/RulesetRuleActionParameters:RulesetRuleActionParameters": { "properties": { + "cookieFields": { + "type": "array", + "items": { + "type": "string" + }, + "description": "List of cookie values to include as part of custom fields logging.\n", + "language": { + "python": { + "mapCase": false + } + } + }, "headers": { "type": "array", "items": { @@ -5269,6 +5455,30 @@ } } }, + "requestFields": { + "type": "array", + "items": { + "type": "string" + }, + "description": "List of request headers to include as part of custom fields logging, in lowercase.\n", + "language": { + "python": { + "mapCase": false + } + } + }, + "responseFields": { + "type": "array", + "items": { + "type": "string" + }, + "description": "List of response headers to include as part of custom fields logging, in lowercase.\n", + "language": { + "python": { + "mapCase": false + } + } + }, "responses": { "type": "array", "items": { @@ -8535,7 +8745,7 @@ }, "httpOnlyCookieAttribute": { "type": "boolean", - "description": "Option to add the `HttpOnly` cookie flag to access tokens.\n" + "description": "Option to add the `HttpOnly` cookie flag to access tokens. Defaults to `true`.\n" }, "logoUrl": { "type": "string", @@ -8574,7 +8784,6 @@ "accountId", "aud", "domain", - "httpOnlyCookieAttribute", "name", "zoneId" ], @@ -8623,7 +8832,7 @@ }, "httpOnlyCookieAttribute": { "type": "boolean", - "description": "Option to add the `HttpOnly` cookie flag to access tokens.\n" + "description": "Option to add the `HttpOnly` cookie flag to access tokens. Defaults to `true`.\n" }, "logoUrl": { "type": "string", @@ -8713,7 +8922,7 @@ }, "httpOnlyCookieAttribute": { "type": "boolean", - "description": "Option to add the `HttpOnly` cookie flag to access tokens.\n" + "description": "Option to add the `HttpOnly` cookie flag to access tokens. Defaults to `true`.\n" }, "logoUrl": { "type": "string", @@ -8922,7 +9131,7 @@ } }, "cloudflare:index/accessGroup:AccessGroup": { - "description": "Provides a Cloudflare Access Group resource. Access Groups are used\nin conjunction with Access Policies to restrict access to a\nparticular resource based on group membership.\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as cloudflare from \"@pulumi/cloudflare\";\n\n// Allowing access to `test@example.com` email address only\nconst testGroupAccessGroup = new cloudflare.AccessGroup(\"testGroupAccessGroup\", {\n accountId: \"975ecf5a45e3bcb680dba0722a420ad9\",\n name: \"staging group\",\n includes: [{\n emails: [\"test@example.com\"],\n }],\n});\n// Allowing `test@example.com` to access but only when coming from a\n// specific IP.\nconst testGroupIndex_accessGroupAccessGroup = new cloudflare.AccessGroup(\"testGroupIndex/accessGroupAccessGroup\", {\n accountId: \"975ecf5a45e3bcb680dba0722a420ad9\",\n name: \"staging group\",\n includes: [{\n emails: [\"test@example.com\"],\n }],\n requires: {\n ips: [_var.office_ip],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_cloudflare as cloudflare\n\n# Allowing access to `test@example.com` email address only\ntest_group_access_group = cloudflare.AccessGroup(\"testGroupAccessGroup\",\n account_id=\"975ecf5a45e3bcb680dba0722a420ad9\",\n name=\"staging group\",\n includes=[cloudflare.AccessGroupIncludeArgs(\n emails=[\"test@example.com\"],\n )])\n# Allowing `test@example.com` to access but only when coming from a\n# specific IP.\ntest_group_index_access_group_access_group = cloudflare.AccessGroup(\"testGroupIndex/accessGroupAccessGroup\",\n account_id=\"975ecf5a45e3bcb680dba0722a420ad9\",\n name=\"staging group\",\n includes=[cloudflare.AccessGroupIncludeArgs(\n emails=[\"test@example.com\"],\n )],\n requires={\n \"ips\": [var[\"office_ip\"]],\n })\n```\n```csharp\nusing Pulumi;\nusing Cloudflare = Pulumi.Cloudflare;\n\nclass MyStack : Stack\n{\n public MyStack()\n {\n // Allowing access to `test@example.com` email address only\n var testGroupAccessGroup = new Cloudflare.AccessGroup(\"testGroupAccessGroup\", new Cloudflare.AccessGroupArgs\n {\n AccountId = \"975ecf5a45e3bcb680dba0722a420ad9\",\n Name = \"staging group\",\n Includes = \n {\n new Cloudflare.Inputs.AccessGroupIncludeArgs\n {\n Emails = \n {\n \"test@example.com\",\n },\n },\n },\n });\n // Allowing `test@example.com` to access but only when coming from a\n // specific IP.\n var testGroupIndex_accessGroupAccessGroup = new Cloudflare.AccessGroup(\"testGroupIndex/accessGroupAccessGroup\", new Cloudflare.AccessGroupArgs\n {\n AccountId = \"975ecf5a45e3bcb680dba0722a420ad9\",\n Name = \"staging group\",\n Includes = \n {\n new Cloudflare.Inputs.AccessGroupIncludeArgs\n {\n Emails = \n {\n \"test@example.com\",\n },\n },\n },\n Requires = \n {\n { \"ips\", \n {\n @var.Office_ip,\n } },\n },\n });\n }\n\n}\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-cloudflare/sdk/v4/go/cloudflare\"\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 := cloudflare.NewAccessGroup(ctx, \"testGroupAccessGroup\", \u0026cloudflare.AccessGroupArgs{\n\t\t\tAccountId: pulumi.String(\"975ecf5a45e3bcb680dba0722a420ad9\"),\n\t\t\tName: pulumi.String(\"staging group\"),\n\t\t\tIncludes: AccessGroupIncludeArray{\n\t\t\t\t\u0026AccessGroupIncludeArgs{\n\t\t\t\t\tEmails: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"test@example.com\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudflare.NewAccessGroup(ctx, \"testGroupIndex/accessGroupAccessGroup\", \u0026cloudflare.AccessGroupArgs{\n\t\t\tAccountId: pulumi.String(\"975ecf5a45e3bcb680dba0722a420ad9\"),\n\t\t\tName: pulumi.String(\"staging group\"),\n\t\t\tIncludes: AccessGroupIncludeArray{\n\t\t\t\t\u0026AccessGroupIncludeArgs{\n\t\t\t\t\tEmails: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"test@example.com\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tRequires: AccessGroupRequireArray{\n\t\t\t\tIps: AccessGroupRequireArgs{\n\t\t\t\t\t_var.Office_ip,\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 java.util.*;\nimport java.io.*;\nimport java.nio.*;\nimport com.pulumi.*;\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 testGroupAccessGroup = new AccessGroup(\"testGroupAccessGroup\", AccessGroupArgs.builder() \n .accountId(\"975ecf5a45e3bcb680dba0722a420ad9\")\n .name(\"staging group\")\n .includes(AccessGroupInclude.builder()\n .emails(\"test@example.com\")\n .build())\n .build());\n\n var testGroupIndex_accessGroupAccessGroup = new AccessGroup(\"testGroupIndex/accessGroupAccessGroup\", AccessGroupArgs.builder() \n .accountId(\"975ecf5a45e3bcb680dba0722a420ad9\")\n .name(\"staging group\")\n .includes(AccessGroupInclude.builder()\n .emails(\"test@example.com\")\n .build())\n .requires(AccessGroupRequire.builder()\n .ips(var_.getOffice_ip())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n testGroupAccessGroup:\n type: cloudflare:AccessGroup\n properties:\n accountId: 975ecf5a45e3bcb680dba0722a420ad9\n name: staging group\n includes:\n - emails:\n - test@example.com\n testGroupIndex/accessGroupAccessGroup:\n type: cloudflare:AccessGroup\n properties:\n accountId: 975ecf5a45e3bcb680dba0722a420ad9\n name: staging group\n includes:\n - emails:\n - test@example.com\n requires:\n ips:\n - ${var.office_ip}\n```\n{{% /example %}}\n{{% /examples %}}\n## Conditions\n\n`require`, `exclude` and `include` arguments share the available\nconditions which can be applied. The conditions are:\n\n* `ip` - (Optional) A list of IP addresses or ranges. Example:\n `ip = [\"1.2.3.4\", \"10.0.0.0/2\"]`\n* `email` - (Optional) A list of email addresses. Example:\n `email = [\"test@example.com\"]`\n* `email_domain` - (Optional) A list of email domains. Example:\n `email_domain = [\"example.com\"]`\n* `service_token` - (Optional) A list of service token ids. Example:\n `service_token = [cloudflare_access_service_token.demo.id]`\n* `any_valid_service_token` - (Optional) Boolean indicating if allow\n all tokens to be granted. Example: `any_valid_service_token = true`\n* `group` - (Optional) A list of access group ids. Example:\n `group = [cloudflare_access_group.demo.id]`\n* `everyone` - (Optional) Boolean indicating permitting access for all\n requests. Example: `everyone = true`\n* `certificate` - (Optional) Whether to use mTLS certificate authentication.\n* `common_name` - (Optional) Use a certificate common name to authenticate with.\n* `auth_method` - (Optional) A string identifying the authentication\n method code. The list of codes are listed here: https://tools.ietf.org/html/rfc8176#section-2.\n Custom values are also supported. Example: `auth_method = [\"swk\"]`\n* `geo` - (Optional) A list of country codes. Example: `geo = [\"US\"]`\n* `login_method` - (Optional) A list of identity provider ids. Example: `login_method = [cloudflare_access_identity_provider.my_idp.id]`\n* `device_posture` - (Optional) A list of device_posture integration_uids. Example: `device_posture = [cloudflare_device_posture_rule.my_posture_rule.id]`\n* `gsuite` - (Optional) Use GSuite as the authentication mechanism. Example:\n\n ```hcl\n # ... other configuration\n include {\n gsuite {\n email = [\"admins@example.com\"]\n identity_provider_id = \"ca298b82-93b5-41bf-bc2d-10493f09b761\"\n }\n }\n ```\n* `github` - (Optional) Use a GitHub organization as the `include` condition. Example:\n\n ```hcl\n # ... other configuration\n include {\n github {\n name = \"my-github-org-name\" # (Required) GitHub organization name\n teams = [\"my-github-team-name\"] # (Optional) GitHub teams\n identity_provider_id = \"ca298b82-93b5-41bf-bc2d-10493f09b761\"\n }\n }\n ```\n* `azure` - (Optional) Use Azure AD as the `include` condition. Example:\n\n ```hcl\n # ... other configuration\n include {\n azure {\n id = [\"86773093-5feb-48dd-814b-7ccd3676ff50e\"]\n identity_provider_id = \"ca298b82-93b5-41bf-bc2d-10493f09b761\"\n }\n }\n ```\n* `okta` - (Optional) Use Okta as the `include` condition. Example:\n\n ```hcl\n # ... other configuration\n include {\n okta {\n name = [\"admins\"]\n identity_provider_id = \"ca298b82-93b5-41bf-bc2d-10493f09b761\"\n }\n }\n ```\n* `saml` - (Optional) Use an external SAML setup as the `include` condition.\n Example:\n\n ```hcl\n # ... other configuration\n include {\n saml {\n attribute_name = \"group\"\n attribute_value = \"admins\"\n identity_provider_id = \"ca298b82-93b5-41bf-bc2d-10493f09b761\"\n }\n }\n ```\n\n\n## Import\n\nAccess Groups can be imported using a composite ID formed of account ID and group ID.\n\n```sh\n $ pulumi import cloudflare:index/accessGroup:AccessGroup staging 975ecf5a45e3bcb680dba0722a420ad9/67ea780ce4982c1cfbe6b7293afc765d\n```\n\n where * `975ecf5a45e3bcb680dba0722a420ad9` - Account ID * `67ea780ce4982c1cfbe6b7293afc765d` - Access Group ID ", + "description": "Provides a Cloudflare Access Group resource. Access Groups are used\nin conjunction with Access Policies to restrict access to a\nparticular resource based on group membership.\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as cloudflare from \"@pulumi/cloudflare\";\n\n// Allowing access to `test@example.com` email address only\nconst testGroupAccessGroup = new cloudflare.AccessGroup(\"testGroupAccessGroup\", {\n accountId: \"975ecf5a45e3bcb680dba0722a420ad9\",\n name: \"staging group\",\n includes: [{\n emails: [\"test@example.com\"],\n }],\n});\n// Allowing `test@example.com` to access but only when coming from a\n// specific IP.\nconst testGroupIndex_accessGroupAccessGroup = new cloudflare.AccessGroup(\"testGroupIndex/accessGroupAccessGroup\", {\n accountId: \"975ecf5a45e3bcb680dba0722a420ad9\",\n name: \"staging group\",\n includes: [{\n emails: [\"test@example.com\"],\n }],\n requires: {\n ips: [_var.office_ip],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_cloudflare as cloudflare\n\n# Allowing access to `test@example.com` email address only\ntest_group_access_group = cloudflare.AccessGroup(\"testGroupAccessGroup\",\n account_id=\"975ecf5a45e3bcb680dba0722a420ad9\",\n name=\"staging group\",\n includes=[cloudflare.AccessGroupIncludeArgs(\n emails=[\"test@example.com\"],\n )])\n# Allowing `test@example.com` to access but only when coming from a\n# specific IP.\ntest_group_index_access_group_access_group = cloudflare.AccessGroup(\"testGroupIndex/accessGroupAccessGroup\",\n account_id=\"975ecf5a45e3bcb680dba0722a420ad9\",\n name=\"staging group\",\n includes=[cloudflare.AccessGroupIncludeArgs(\n emails=[\"test@example.com\"],\n )],\n requires={\n \"ips\": [var[\"office_ip\"]],\n })\n```\n```csharp\nusing Pulumi;\nusing Cloudflare = Pulumi.Cloudflare;\n\nclass MyStack : Stack\n{\n public MyStack()\n {\n // Allowing access to `test@example.com` email address only\n var testGroupAccessGroup = new Cloudflare.AccessGroup(\"testGroupAccessGroup\", new Cloudflare.AccessGroupArgs\n {\n AccountId = \"975ecf5a45e3bcb680dba0722a420ad9\",\n Name = \"staging group\",\n Includes = \n {\n new Cloudflare.Inputs.AccessGroupIncludeArgs\n {\n Emails = \n {\n \"test@example.com\",\n },\n },\n },\n });\n // Allowing `test@example.com` to access but only when coming from a\n // specific IP.\n var testGroupIndex_accessGroupAccessGroup = new Cloudflare.AccessGroup(\"testGroupIndex/accessGroupAccessGroup\", new Cloudflare.AccessGroupArgs\n {\n AccountId = \"975ecf5a45e3bcb680dba0722a420ad9\",\n Name = \"staging group\",\n Includes = \n {\n new Cloudflare.Inputs.AccessGroupIncludeArgs\n {\n Emails = \n {\n \"test@example.com\",\n },\n },\n },\n Requires = \n {\n { \"ips\", \n {\n @var.Office_ip,\n } },\n },\n });\n }\n\n}\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-cloudflare/sdk/v4/go/cloudflare\"\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 := cloudflare.NewAccessGroup(ctx, \"testGroupAccessGroup\", \u0026cloudflare.AccessGroupArgs{\n\t\t\tAccountId: pulumi.String(\"975ecf5a45e3bcb680dba0722a420ad9\"),\n\t\t\tName: pulumi.String(\"staging group\"),\n\t\t\tIncludes: AccessGroupIncludeArray{\n\t\t\t\t\u0026AccessGroupIncludeArgs{\n\t\t\t\t\tEmails: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"test@example.com\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudflare.NewAccessGroup(ctx, \"testGroupIndex/accessGroupAccessGroup\", \u0026cloudflare.AccessGroupArgs{\n\t\t\tAccountId: pulumi.String(\"975ecf5a45e3bcb680dba0722a420ad9\"),\n\t\t\tName: pulumi.String(\"staging group\"),\n\t\t\tIncludes: AccessGroupIncludeArray{\n\t\t\t\t\u0026AccessGroupIncludeArgs{\n\t\t\t\t\tEmails: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"test@example.com\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tRequires: AccessGroupRequireArray{\n\t\t\t\tIps: AccessGroupRequireArgs{\n\t\t\t\t\t_var.Office_ip,\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 java.util.*;\nimport java.io.*;\nimport java.nio.*;\nimport com.pulumi.*;\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 testGroupAccessGroup = new AccessGroup(\"testGroupAccessGroup\", AccessGroupArgs.builder() \n .accountId(\"975ecf5a45e3bcb680dba0722a420ad9\")\n .name(\"staging group\")\n .includes(AccessGroupInclude.builder()\n .emails(\"test@example.com\")\n .build())\n .build());\n\n var testGroupIndex_accessGroupAccessGroup = new AccessGroup(\"testGroupIndex/accessGroupAccessGroup\", AccessGroupArgs.builder() \n .accountId(\"975ecf5a45e3bcb680dba0722a420ad9\")\n .name(\"staging group\")\n .includes(AccessGroupInclude.builder()\n .emails(\"test@example.com\")\n .build())\n .requires(AccessGroupRequire.builder()\n .ips(var_.getOffice_ip())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n testGroupAccessGroup:\n type: cloudflare:AccessGroup\n properties:\n accountId: 975ecf5a45e3bcb680dba0722a420ad9\n name: staging group\n includes:\n - emails:\n - test@example.com\n testGroupIndex/accessGroupAccessGroup:\n type: cloudflare:AccessGroup\n properties:\n accountId: 975ecf5a45e3bcb680dba0722a420ad9\n name: staging group\n includes:\n - emails:\n - test@example.com\n requires:\n ips:\n - ${var.office_ip}\n```\n{{% /example %}}\n{{% /examples %}}\n## Conditions\n\n`require`, `exclude` and `include` arguments share the available\nconditions which can be applied. The conditions are:\n\n* `ip` - (Optional) A list of IP addresses or ranges. Example:\n `ip = [\"1.2.3.4\", \"10.0.0.0/2\"]`\n* `email` - (Optional) A list of email addresses. Example:\n `email = [\"test@example.com\"]`\n* `email_domain` - (Optional) A list of email domains. Example:\n `email_domain = [\"example.com\"]`\n* `service_token` - (Optional) A list of service token ids. Example:\n `service_token = [cloudflare_access_service_token.demo.id]`\n* `any_valid_service_token` - (Optional) Boolean indicating if allow\n all tokens to be granted. Example: `any_valid_service_token = true`\n* `group` - (Optional) A list of access group ids. Example:\n `group = [cloudflare_access_group.demo.id]`\n* `everyone` - (Optional) Boolean indicating permitting access for all\n requests. Example: `everyone = true`\n* `certificate` - (Optional) Whether to use mTLS certificate authentication.\n* `common_name` - (Optional) Use a certificate common name to authenticate with.\n* `auth_method` - (Optional) A string identifying the authentication\n method code. The list of codes are listed here: https://tools.ietf.org/html/rfc8176#section-2.\n Custom values are also supported. Example: `auth_method = [\"swk\"]`\n* `geo` - (Optional) A list of country codes. Example: `geo = [\"US\"]`\n* `login_method` - (Optional) A list of identity provider ids. Example: `login_method = [cloudflare_access_identity_provider.my_idp.id]`\n* `device_posture` - (Optional) A list of device_posture integration_uids. Example: `device_posture = [cloudflare_device_posture_rule.my_posture_rule.id]`\n* `gsuite` - (Optional) Use GSuite as the authentication mechanism. Example:\n\n ```hcl\n # ... other configuration\n include {\n gsuite {\n email = [\"admins@example.com\"]\n identity_provider_id = \"ca298b82-93b5-41bf-bc2d-10493f09b761\"\n }\n }\n ```\n* `github` - (Optional) Use a GitHub organization as the `include` condition. Example:\n\n ```hcl\n # ... other configuration\n include {\n github {\n name = \"my-github-org-name\" # (Required) GitHub organization name\n teams = [\"my-github-team-name\"] # (Optional) GitHub teams\n identity_provider_id = \"ca298b82-93b5-41bf-bc2d-10493f09b761\"\n }\n }\n ```\n* `azure` - (Optional) Use Azure AD as the `include` condition. Example:\n\n ```hcl\n # ... other configuration\n include {\n azure {\n id = [\"86773093-5feb-48dd-814b-7ccd3676ff50e\"]\n identity_provider_id = \"ca298b82-93b5-41bf-bc2d-10493f09b761\"\n }\n }\n ```\n* `okta` - (Optional) Use Okta as the `include` condition. Example:\n\n ```hcl\n # ... other configuration\n include {\n okta {\n name = [\"admins\"]\n identity_provider_id = \"ca298b82-93b5-41bf-bc2d-10493f09b761\"\n }\n }\n ```\n* `saml` - (Optional) Use an external SAML setup as the `include` condition.\n Example:\n\n ```hcl\n # ... other configuration\n include {\n saml {\n attribute_name = \"group\"\n attribute_value = \"admins\"\n identity_provider_id = \"ca298b82-93b5-41bf-bc2d-10493f09b761\"\n }\n }\n ```\n * `external_evaluation` - (Optional) Pass a user's identity to an external URL as the `include` condition. \n Example:\n\n ```hcl\n # ... other configuration\n include {\n external {\n evaluate_url = \"https://example.com/login\"\n keys_url = \"https://example.com/keys\"\n }\n }\n ```\n\n\n## Import\n\nAccess Groups can be imported using a composite ID formed of account ID and group ID.\n\n```sh\n $ pulumi import cloudflare:index/accessGroup:AccessGroup staging 975ecf5a45e3bcb680dba0722a420ad9/67ea780ce4982c1cfbe6b7293afc765d\n```\n\n where * `975ecf5a45e3bcb680dba0722a420ad9` - Account ID * `67ea780ce4982c1cfbe6b7293afc765d` - Access Group ID ", "properties": { "accountId": { "type": "string", @@ -9872,13 +10081,18 @@ "secret": { "type": "string", "description": "32 or more bytes, encoded as a base64 string. The Create Argo Tunnel endpoint sets this as the tunnel's password. Anyone wishing to run the tunnel needs this password.\n" + }, + "tunnelToken": { + "type": "string", + "description": "Token used by a connector to authenticate and run the tunnel.\n" } }, "required": [ "accountId", "cname", "name", - "secret" + "secret", + "tunnelToken" ], "inputProperties": { "accountId": { @@ -9917,6 +10131,10 @@ "secret": { "type": "string", "description": "32 or more bytes, encoded as a base64 string. The Create Argo Tunnel endpoint sets this as the tunnel's password. Anyone wishing to run the tunnel needs this password.\n" + }, + "tunnelToken": { + "type": "string", + "description": "Token used by a connector to authenticate and run the tunnel.\n" } }, "type": "object" @@ -11412,7 +11630,7 @@ } }, "cloudflare:index/healthcheck:Healthcheck": { - "description": "Standalone Health Checks provide a way to monitor origin servers without needing a Cloudflare Load Balancer. \n\n{{% examples %}}\n## Example Usage\n\nThe resource supports HTTP, HTTPS and TCP type health checks.\n{{% example %}}\n### HTTPS Health Check\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as cloudflare from \"@pulumi/cloudflare\";\n\nconst httpHealthCheck = new cloudflare.Healthcheck(\"httpHealthCheck\", {\n zoneId: _var.cloudflare_zone_id,\n name: \"http-health-check\",\n description: \"example http health check\",\n address: \"example.com\",\n suspended: false,\n checkRegions: [\n \"WEU\",\n \"EEU\",\n ],\n notificationSuspended: false,\n notificationEmailAddresses: [\"hostmaster@example.com\"],\n type: \"HTTPS\",\n port: 443,\n method: \"GET\",\n path: \"/health\",\n expectedBody: \"alive\",\n expectedCodes: [\n \"2xx\",\n \"301\",\n ],\n followRedirects: true,\n allowInsecure: false,\n headers: [{\n header: \"Host\",\n values: [\"example.com\"],\n }],\n timeout: 10,\n retries: 2,\n interval: 60,\n consecutiveFails: 3,\n consecutiveSuccesses: 2,\n});\n```\n```python\nimport pulumi\nimport pulumi_cloudflare as cloudflare\n\nhttp_health_check = cloudflare.Healthcheck(\"httpHealthCheck\",\n zone_id=var[\"cloudflare_zone_id\"],\n name=\"http-health-check\",\n description=\"example http health check\",\n address=\"example.com\",\n suspended=False,\n check_regions=[\n \"WEU\",\n \"EEU\",\n ],\n notification_suspended=False,\n notification_email_addresses=[\"hostmaster@example.com\"],\n type=\"HTTPS\",\n port=443,\n method=\"GET\",\n path=\"/health\",\n expected_body=\"alive\",\n expected_codes=[\n \"2xx\",\n \"301\",\n ],\n follow_redirects=True,\n allow_insecure=False,\n headers=[cloudflare.HealthcheckHeaderArgs(\n header=\"Host\",\n values=[\"example.com\"],\n )],\n timeout=10,\n retries=2,\n interval=60,\n consecutive_fails=3,\n consecutive_successes=2)\n```\n```csharp\nusing Pulumi;\nusing Cloudflare = Pulumi.Cloudflare;\n\nclass MyStack : Stack\n{\n public MyStack()\n {\n var httpHealthCheck = new Cloudflare.Healthcheck(\"httpHealthCheck\", new Cloudflare.HealthcheckArgs\n {\n ZoneId = @var.Cloudflare_zone_id,\n Name = \"http-health-check\",\n Description = \"example http health check\",\n Address = \"example.com\",\n Suspended = false,\n CheckRegions = \n {\n \"WEU\",\n \"EEU\",\n },\n NotificationSuspended = false,\n NotificationEmailAddresses = \n {\n \"hostmaster@example.com\",\n },\n Type = \"HTTPS\",\n Port = 443,\n Method = \"GET\",\n Path = \"/health\",\n ExpectedBody = \"alive\",\n ExpectedCodes = \n {\n \"2xx\",\n \"301\",\n },\n FollowRedirects = true,\n AllowInsecure = false,\n Headers = \n {\n new Cloudflare.Inputs.HealthcheckHeaderArgs\n {\n Header = \"Host\",\n Values = \n {\n \"example.com\",\n },\n },\n },\n Timeout = 10,\n Retries = 2,\n Interval = 60,\n ConsecutiveFails = 3,\n ConsecutiveSuccesses = 2,\n });\n }\n\n}\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-cloudflare/sdk/v4/go/cloudflare\"\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 := cloudflare.NewHealthcheck(ctx, \"httpHealthCheck\", \u0026cloudflare.HealthcheckArgs{\n\t\t\tZoneId: pulumi.Any(_var.Cloudflare_zone_id),\n\t\t\tName: pulumi.String(\"http-health-check\"),\n\t\t\tDescription: pulumi.String(\"example http health check\"),\n\t\t\tAddress: pulumi.String(\"example.com\"),\n\t\t\tSuspended: pulumi.Bool(false),\n\t\t\tCheckRegions: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"WEU\"),\n\t\t\t\tpulumi.String(\"EEU\"),\n\t\t\t},\n\t\t\tNotificationSuspended: pulumi.Bool(false),\n\t\t\tNotificationEmailAddresses: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"hostmaster@example.com\"),\n\t\t\t},\n\t\t\tType: pulumi.String(\"HTTPS\"),\n\t\t\tPort: pulumi.Int(443),\n\t\t\tMethod: pulumi.String(\"GET\"),\n\t\t\tPath: pulumi.String(\"/health\"),\n\t\t\tExpectedBody: pulumi.String(\"alive\"),\n\t\t\tExpectedCodes: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"2xx\"),\n\t\t\t\tpulumi.String(\"301\"),\n\t\t\t},\n\t\t\tFollowRedirects: pulumi.Bool(true),\n\t\t\tAllowInsecure: pulumi.Bool(false),\n\t\t\tHeaders: HealthcheckHeaderArray{\n\t\t\t\t\u0026HealthcheckHeaderArgs{\n\t\t\t\t\tHeader: pulumi.String(\"Host\"),\n\t\t\t\t\tValues: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"example.com\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tTimeout: pulumi.Int(10),\n\t\t\tRetries: pulumi.Int(2),\n\t\t\tInterval: pulumi.Int(60),\n\t\t\tConsecutiveFails: pulumi.Int(3),\n\t\t\tConsecutiveSuccesses: pulumi.Int(2),\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 java.util.*;\nimport java.io.*;\nimport java.nio.*;\nimport com.pulumi.*;\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 httpHealthCheck = new Healthcheck(\"httpHealthCheck\", HealthcheckArgs.builder() \n .zoneId(var_.getCloudflare_zone_id())\n .name(\"http-health-check\")\n .description(\"example http health check\")\n .address(\"example.com\")\n .suspended(false)\n .checkRegions( \n \"WEU\",\n \"EEU\")\n .notificationSuspended(false)\n .notificationEmailAddresses(\"hostmaster@example.com\")\n .type(\"HTTPS\")\n .port(\"443\")\n .method(\"GET\")\n .path(\"/health\")\n .expectedBody(\"alive\")\n .expectedCodes( \n \"2xx\",\n \"301\")\n .followRedirects(true)\n .allowInsecure(false)\n .headers(HealthcheckHeader.builder()\n .header(\"Host\")\n .values(\"example.com\")\n .build())\n .timeout(10)\n .retries(2)\n .interval(60)\n .consecutiveFails(3)\n .consecutiveSuccesses(2)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n httpHealthCheck:\n type: cloudflare:Healthcheck\n properties:\n zoneId: ${var.cloudflare_zone_id}\n name: http-health-check\n description: example http health check\n address: example.com\n suspended: false\n checkRegions:\n - WEU\n - EEU\n notificationSuspended: false\n notificationEmailAddresses:\n - hostmaster@example.com\n type: HTTPS\n port: 443\n method: GET\n path: /health\n expectedBody: alive\n expectedCodes:\n - 2xx\n - 301\n followRedirects: true\n allowInsecure: false\n headers:\n - header: Host\n values:\n - example.com\n timeout: 10\n retries: 2\n interval: 60\n consecutiveFails: 3\n consecutiveSuccesses: 2\n```\n{{% /example %}}\n{{% example %}}\n### TCP Monitor\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as cloudflare from \"@pulumi/cloudflare\";\n\nconst tcpHealthCheck = new cloudflare.Healthcheck(\"tcpHealthCheck\", {\n zoneId: _var.cloudflare_zone_id,\n name: \"tcp-health-check\",\n description: \"example tcp health check\",\n address: \"example.com\",\n suspended: false,\n checkRegions: [\n \"WEU\",\n \"EEU\",\n ],\n notificationSuspended: false,\n notificationEmailAddresses: [\"hostmaster@example.com\"],\n type: \"TCP\",\n port: 22,\n method: \"connection_established\",\n timeout: 10,\n retries: 2,\n interval: 60,\n consecutiveFails: 3,\n consecutiveSuccesses: 2,\n});\n```\n```python\nimport pulumi\nimport pulumi_cloudflare as cloudflare\n\ntcp_health_check = cloudflare.Healthcheck(\"tcpHealthCheck\",\n zone_id=var[\"cloudflare_zone_id\"],\n name=\"tcp-health-check\",\n description=\"example tcp health check\",\n address=\"example.com\",\n suspended=False,\n check_regions=[\n \"WEU\",\n \"EEU\",\n ],\n notification_suspended=False,\n notification_email_addresses=[\"hostmaster@example.com\"],\n type=\"TCP\",\n port=22,\n method=\"connection_established\",\n timeout=10,\n retries=2,\n interval=60,\n consecutive_fails=3,\n consecutive_successes=2)\n```\n```csharp\nusing Pulumi;\nusing Cloudflare = Pulumi.Cloudflare;\n\nclass MyStack : Stack\n{\n public MyStack()\n {\n var tcpHealthCheck = new Cloudflare.Healthcheck(\"tcpHealthCheck\", new Cloudflare.HealthcheckArgs\n {\n ZoneId = @var.Cloudflare_zone_id,\n Name = \"tcp-health-check\",\n Description = \"example tcp health check\",\n Address = \"example.com\",\n Suspended = false,\n CheckRegions = \n {\n \"WEU\",\n \"EEU\",\n },\n NotificationSuspended = false,\n NotificationEmailAddresses = \n {\n \"hostmaster@example.com\",\n },\n Type = \"TCP\",\n Port = 22,\n Method = \"connection_established\",\n Timeout = 10,\n Retries = 2,\n Interval = 60,\n ConsecutiveFails = 3,\n ConsecutiveSuccesses = 2,\n });\n }\n\n}\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-cloudflare/sdk/v4/go/cloudflare\"\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 := cloudflare.NewHealthcheck(ctx, \"tcpHealthCheck\", \u0026cloudflare.HealthcheckArgs{\n\t\t\tZoneId: pulumi.Any(_var.Cloudflare_zone_id),\n\t\t\tName: pulumi.String(\"tcp-health-check\"),\n\t\t\tDescription: pulumi.String(\"example tcp health check\"),\n\t\t\tAddress: pulumi.String(\"example.com\"),\n\t\t\tSuspended: pulumi.Bool(false),\n\t\t\tCheckRegions: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"WEU\"),\n\t\t\t\tpulumi.String(\"EEU\"),\n\t\t\t},\n\t\t\tNotificationSuspended: pulumi.Bool(false),\n\t\t\tNotificationEmailAddresses: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"hostmaster@example.com\"),\n\t\t\t},\n\t\t\tType: pulumi.String(\"TCP\"),\n\t\t\tPort: pulumi.Int(22),\n\t\t\tMethod: pulumi.String(\"connection_established\"),\n\t\t\tTimeout: pulumi.Int(10),\n\t\t\tRetries: pulumi.Int(2),\n\t\t\tInterval: pulumi.Int(60),\n\t\t\tConsecutiveFails: pulumi.Int(3),\n\t\t\tConsecutiveSuccesses: pulumi.Int(2),\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 java.util.*;\nimport java.io.*;\nimport java.nio.*;\nimport com.pulumi.*;\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 tcpHealthCheck = new Healthcheck(\"tcpHealthCheck\", HealthcheckArgs.builder() \n .zoneId(var_.getCloudflare_zone_id())\n .name(\"tcp-health-check\")\n .description(\"example tcp health check\")\n .address(\"example.com\")\n .suspended(false)\n .checkRegions( \n \"WEU\",\n \"EEU\")\n .notificationSuspended(false)\n .notificationEmailAddresses(\"hostmaster@example.com\")\n .type(\"TCP\")\n .port(\"22\")\n .method(\"connection_established\")\n .timeout(10)\n .retries(2)\n .interval(60)\n .consecutiveFails(3)\n .consecutiveSuccesses(2)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n tcpHealthCheck:\n type: cloudflare:Healthcheck\n properties:\n zoneId: ${var.cloudflare_zone_id}\n name: tcp-health-check\n description: example tcp health check\n address: example.com\n suspended: false\n checkRegions:\n - WEU\n - EEU\n notificationSuspended: false\n notificationEmailAddresses:\n - hostmaster@example.com\n type: TCP\n port: 22\n method: connection_established\n timeout: 10\n retries: 2\n interval: 60\n consecutiveFails: 3\n consecutiveSuccesses: 2\n```\n{{% /example %}}\n{{% /examples %}}", + "description": "Standalone Health Checks provide a way to monitor origin servers without needing a Cloudflare Load Balancer. \n\n{{% examples %}}\n## Example Usage\n\nThe resource supports HTTP, HTTPS and TCP type health checks.\n{{% example %}}\n### HTTPS Health Check\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as cloudflare from \"@pulumi/cloudflare\";\n\nconst httpHealthCheck = new cloudflare.Healthcheck(\"httpHealthCheck\", {\n zoneId: _var.cloudflare_zone_id,\n name: \"http-health-check\",\n description: \"example http health check\",\n address: \"example.com\",\n suspended: false,\n checkRegions: [\n \"WEU\",\n \"EEU\",\n ],\n notificationSuspended: false,\n notificationEmailAddresses: [\"hostmaster@example.com\"],\n type: \"HTTPS\",\n port: 443,\n method: \"GET\",\n path: \"/health\",\n expectedBody: \"alive\",\n expectedCodes: [\n \"2xx\",\n \"301\",\n ],\n followRedirects: true,\n allowInsecure: false,\n headers: [{\n header: \"Host\",\n values: [\"example.com\"],\n }],\n timeout: 10,\n retries: 2,\n interval: 60,\n consecutiveFails: 3,\n consecutiveSuccesses: 2,\n});\n```\n```python\nimport pulumi\nimport pulumi_cloudflare as cloudflare\n\nhttp_health_check = cloudflare.Healthcheck(\"httpHealthCheck\",\n zone_id=var[\"cloudflare_zone_id\"],\n name=\"http-health-check\",\n description=\"example http health check\",\n address=\"example.com\",\n suspended=False,\n check_regions=[\n \"WEU\",\n \"EEU\",\n ],\n notification_suspended=False,\n notification_email_addresses=[\"hostmaster@example.com\"],\n type=\"HTTPS\",\n port=443,\n method=\"GET\",\n path=\"/health\",\n expected_body=\"alive\",\n expected_codes=[\n \"2xx\",\n \"301\",\n ],\n follow_redirects=True,\n allow_insecure=False,\n headers=[cloudflare.HealthcheckHeaderArgs(\n header=\"Host\",\n values=[\"example.com\"],\n )],\n timeout=10,\n retries=2,\n interval=60,\n consecutive_fails=3,\n consecutive_successes=2)\n```\n```csharp\nusing Pulumi;\nusing Cloudflare = Pulumi.Cloudflare;\n\nclass MyStack : Stack\n{\n public MyStack()\n {\n var httpHealthCheck = new Cloudflare.Healthcheck(\"httpHealthCheck\", new Cloudflare.HealthcheckArgs\n {\n ZoneId = @var.Cloudflare_zone_id,\n Name = \"http-health-check\",\n Description = \"example http health check\",\n Address = \"example.com\",\n Suspended = false,\n CheckRegions = \n {\n \"WEU\",\n \"EEU\",\n },\n NotificationSuspended = false,\n NotificationEmailAddresses = \n {\n \"hostmaster@example.com\",\n },\n Type = \"HTTPS\",\n Port = 443,\n Method = \"GET\",\n Path = \"/health\",\n ExpectedBody = \"alive\",\n ExpectedCodes = \n {\n \"2xx\",\n \"301\",\n },\n FollowRedirects = true,\n AllowInsecure = false,\n Headers = \n {\n new Cloudflare.Inputs.HealthcheckHeaderArgs\n {\n Header = \"Host\",\n Values = \n {\n \"example.com\",\n },\n },\n },\n Timeout = 10,\n Retries = 2,\n Interval = 60,\n ConsecutiveFails = 3,\n ConsecutiveSuccesses = 2,\n });\n }\n\n}\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-cloudflare/sdk/v4/go/cloudflare\"\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 := cloudflare.NewHealthcheck(ctx, \"httpHealthCheck\", \u0026cloudflare.HealthcheckArgs{\n\t\t\tZoneId: pulumi.Any(_var.Cloudflare_zone_id),\n\t\t\tName: pulumi.String(\"http-health-check\"),\n\t\t\tDescription: pulumi.String(\"example http health check\"),\n\t\t\tAddress: pulumi.String(\"example.com\"),\n\t\t\tSuspended: pulumi.Bool(false),\n\t\t\tCheckRegions: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"WEU\"),\n\t\t\t\tpulumi.String(\"EEU\"),\n\t\t\t},\n\t\t\tNotificationSuspended: pulumi.Bool(false),\n\t\t\tNotificationEmailAddresses: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"hostmaster@example.com\"),\n\t\t\t},\n\t\t\tType: pulumi.String(\"HTTPS\"),\n\t\t\tPort: pulumi.Int(443),\n\t\t\tMethod: pulumi.String(\"GET\"),\n\t\t\tPath: pulumi.String(\"/health\"),\n\t\t\tExpectedBody: pulumi.String(\"alive\"),\n\t\t\tExpectedCodes: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"2xx\"),\n\t\t\t\tpulumi.String(\"301\"),\n\t\t\t},\n\t\t\tFollowRedirects: pulumi.Bool(true),\n\t\t\tAllowInsecure: pulumi.Bool(false),\n\t\t\tHeaders: HealthcheckHeaderArray{\n\t\t\t\t\u0026HealthcheckHeaderArgs{\n\t\t\t\t\tHeader: pulumi.String(\"Host\"),\n\t\t\t\t\tValues: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"example.com\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tTimeout: pulumi.Int(10),\n\t\t\tRetries: pulumi.Int(2),\n\t\t\tInterval: pulumi.Int(60),\n\t\t\tConsecutiveFails: pulumi.Int(3),\n\t\t\tConsecutiveSuccesses: pulumi.Int(2),\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 java.util.*;\nimport java.io.*;\nimport java.nio.*;\nimport com.pulumi.*;\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 httpHealthCheck = new Healthcheck(\"httpHealthCheck\", HealthcheckArgs.builder() \n .zoneId(var_.getCloudflare_zone_id())\n .name(\"http-health-check\")\n .description(\"example http health check\")\n .address(\"example.com\")\n .suspended(false)\n .checkRegions( \n \"WEU\",\n \"EEU\")\n .notificationSuspended(false)\n .notificationEmailAddresses(\"hostmaster@example.com\")\n .type(\"HTTPS\")\n .port(\"443\")\n .method(\"GET\")\n .path(\"/health\")\n .expectedBody(\"alive\")\n .expectedCodes( \n \"2xx\",\n \"301\")\n .followRedirects(true)\n .allowInsecure(false)\n .headers(HealthcheckHeader.builder()\n .header(\"Host\")\n .values(\"example.com\")\n .build())\n .timeout(10)\n .retries(2)\n .interval(60)\n .consecutiveFails(3)\n .consecutiveSuccesses(2)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n httpHealthCheck:\n type: cloudflare:Healthcheck\n properties:\n zoneId: ${var.cloudflare_zone_id}\n name: http-health-check\n description: example http health check\n address: example.com\n suspended: false\n checkRegions:\n - WEU\n - EEU\n notificationSuspended: false\n notificationEmailAddresses:\n - hostmaster@example.com\n type: HTTPS\n port: 443\n method: GET\n path: /health\n expectedBody: alive\n expectedCodes:\n - 2xx\n - 301\n followRedirects: true\n allowInsecure: false\n headers:\n - header: Host\n values:\n - example.com\n timeout: 10\n retries: 2\n interval: 60\n consecutiveFails: 3\n consecutiveSuccesses: 2\n```\n{{% /example %}}\n{{% example %}}\n### TCP Monitor\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as cloudflare from \"@pulumi/cloudflare\";\n\nconst tcpHealthCheck = new cloudflare.Healthcheck(\"tcpHealthCheck\", {\n zoneId: _var.cloudflare_zone_id,\n name: \"tcp-health-check\",\n description: \"example tcp health check\",\n address: \"example.com\",\n suspended: false,\n checkRegions: [\n \"WEU\",\n \"EEU\",\n ],\n notificationSuspended: false,\n notificationEmailAddresses: [\"hostmaster@example.com\"],\n type: \"TCP\",\n port: 22,\n method: \"connection_established\",\n timeout: 10,\n retries: 2,\n interval: 60,\n consecutiveFails: 3,\n consecutiveSuccesses: 2,\n});\n```\n```python\nimport pulumi\nimport pulumi_cloudflare as cloudflare\n\ntcp_health_check = cloudflare.Healthcheck(\"tcpHealthCheck\",\n zone_id=var[\"cloudflare_zone_id\"],\n name=\"tcp-health-check\",\n description=\"example tcp health check\",\n address=\"example.com\",\n suspended=False,\n check_regions=[\n \"WEU\",\n \"EEU\",\n ],\n notification_suspended=False,\n notification_email_addresses=[\"hostmaster@example.com\"],\n type=\"TCP\",\n port=22,\n method=\"connection_established\",\n timeout=10,\n retries=2,\n interval=60,\n consecutive_fails=3,\n consecutive_successes=2)\n```\n```csharp\nusing Pulumi;\nusing Cloudflare = Pulumi.Cloudflare;\n\nclass MyStack : Stack\n{\n public MyStack()\n {\n var tcpHealthCheck = new Cloudflare.Healthcheck(\"tcpHealthCheck\", new Cloudflare.HealthcheckArgs\n {\n ZoneId = @var.Cloudflare_zone_id,\n Name = \"tcp-health-check\",\n Description = \"example tcp health check\",\n Address = \"example.com\",\n Suspended = false,\n CheckRegions = \n {\n \"WEU\",\n \"EEU\",\n },\n NotificationSuspended = false,\n NotificationEmailAddresses = \n {\n \"hostmaster@example.com\",\n },\n Type = \"TCP\",\n Port = 22,\n Method = \"connection_established\",\n Timeout = 10,\n Retries = 2,\n Interval = 60,\n ConsecutiveFails = 3,\n ConsecutiveSuccesses = 2,\n });\n }\n\n}\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-cloudflare/sdk/v4/go/cloudflare\"\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 := cloudflare.NewHealthcheck(ctx, \"tcpHealthCheck\", \u0026cloudflare.HealthcheckArgs{\n\t\t\tZoneId: pulumi.Any(_var.Cloudflare_zone_id),\n\t\t\tName: pulumi.String(\"tcp-health-check\"),\n\t\t\tDescription: pulumi.String(\"example tcp health check\"),\n\t\t\tAddress: pulumi.String(\"example.com\"),\n\t\t\tSuspended: pulumi.Bool(false),\n\t\t\tCheckRegions: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"WEU\"),\n\t\t\t\tpulumi.String(\"EEU\"),\n\t\t\t},\n\t\t\tNotificationSuspended: pulumi.Bool(false),\n\t\t\tNotificationEmailAddresses: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"hostmaster@example.com\"),\n\t\t\t},\n\t\t\tType: pulumi.String(\"TCP\"),\n\t\t\tPort: pulumi.Int(22),\n\t\t\tMethod: pulumi.String(\"connection_established\"),\n\t\t\tTimeout: pulumi.Int(10),\n\t\t\tRetries: pulumi.Int(2),\n\t\t\tInterval: pulumi.Int(60),\n\t\t\tConsecutiveFails: pulumi.Int(3),\n\t\t\tConsecutiveSuccesses: pulumi.Int(2),\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 java.util.*;\nimport java.io.*;\nimport java.nio.*;\nimport com.pulumi.*;\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 tcpHealthCheck = new Healthcheck(\"tcpHealthCheck\", HealthcheckArgs.builder() \n .zoneId(var_.getCloudflare_zone_id())\n .name(\"tcp-health-check\")\n .description(\"example tcp health check\")\n .address(\"example.com\")\n .suspended(false)\n .checkRegions( \n \"WEU\",\n \"EEU\")\n .notificationSuspended(false)\n .notificationEmailAddresses(\"hostmaster@example.com\")\n .type(\"TCP\")\n .port(\"22\")\n .method(\"connection_established\")\n .timeout(10)\n .retries(2)\n .interval(60)\n .consecutiveFails(3)\n .consecutiveSuccesses(2)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n tcpHealthCheck:\n type: cloudflare:Healthcheck\n properties:\n zoneId: ${var.cloudflare_zone_id}\n name: tcp-health-check\n description: example tcp health check\n address: example.com\n suspended: false\n checkRegions:\n - WEU\n - EEU\n notificationSuspended: false\n notificationEmailAddresses:\n - hostmaster@example.com\n type: TCP\n port: 22\n method: connection_established\n timeout: 10\n retries: 2\n interval: 60\n consecutiveFails: 3\n consecutiveSuccesses: 2\n```\n{{% /example %}}\n{{% /examples %}}\n\n## Import\n\nHealthchecks can be imported using a composite ID formed of zone ID and healthcheck ID, e.g.\n\n```sh\n $ pulumi import cloudflare:index/healthcheck:Healthcheck example 9a7806061c88ada191ed06f989cc3dac/699d98642c564d2e855e9661899b7252\n```\n\n where* `9a7806061c88ada191ed06f989cc3dac` - the zone ID * `699d98642c564d2e855e9661899b7252` - healthcheck ID as returned by [API](https://api.cloudflare.com/#health-checks-list-health-checks) ", "properties": { "address": { "type": "string", @@ -12758,7 +12976,7 @@ } }, "cloudflare:index/logpushJob:LogpushJob": { - "description": "{{% examples %}}\n## Example Usage\n{{% example %}}\n### Manual Inspection Of S3 Bucket)\n\n- Create `cloudflare.LogPushOwnershipChallenge` resource\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as cloudflare from \"@pulumi/cloudflare\";\n\nconst ownershipChallenge = new cloudflare.LogPushOwnershipChallenge(\"ownership_challenge\", {\n destinationConf: \"s3://my-bucket-path?region=us-west-2\",\n zoneId: \"d41d8cd98f00b204e9800998ecf8427e\",\n});\n```\n```python\nimport pulumi\nimport pulumi_cloudflare as cloudflare\n\nownership_challenge = cloudflare.LogPushOwnershipChallenge(\"ownershipChallenge\",\n destination_conf=\"s3://my-bucket-path?region=us-west-2\",\n zone_id=\"d41d8cd98f00b204e9800998ecf8427e\")\n```\n```csharp\nusing Pulumi;\nusing Cloudflare = Pulumi.Cloudflare;\n\nclass MyStack : Stack\n{\n public MyStack()\n {\n var ownershipChallenge = new Cloudflare.LogPushOwnershipChallenge(\"ownershipChallenge\", new Cloudflare.LogPushOwnershipChallengeArgs\n {\n DestinationConf = \"s3://my-bucket-path?region=us-west-2\",\n ZoneId = \"d41d8cd98f00b204e9800998ecf8427e\",\n });\n }\n\n}\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-cloudflare/sdk/v4/go/cloudflare\"\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 := cloudflare.NewLogPushOwnershipChallenge(ctx, \"ownershipChallenge\", \u0026cloudflare.LogPushOwnershipChallengeArgs{\n\t\t\tDestinationConf: pulumi.String(\"s3://my-bucket-path?region=us-west-2\"),\n\t\t\tZoneId: pulumi.String(\"d41d8cd98f00b204e9800998ecf8427e\"),\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 java.util.*;\nimport java.io.*;\nimport java.nio.*;\nimport com.pulumi.*;\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 ownershipChallenge = new LogPushOwnershipChallenge(\"ownershipChallenge\", LogPushOwnershipChallengeArgs.builder() \n .destinationConf(\"s3://my-bucket-path?region=us-west-2\")\n .zoneId(\"d41d8cd98f00b204e9800998ecf8427e\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n ownershipChallenge:\n type: cloudflare:LogPushOwnershipChallenge\n properties:\n destinationConf: s3://my-bucket-path?region=us-west-2\n zoneId: d41d8cd98f00b204e9800998ecf8427e\n```\n\n- Check S3 bucket for your ownership challenge filename and grab the contents.\n- Create the `cloudflare.LogpushJob` substituting in your manual `ownership_challenge`.\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as cloudflare from \"@pulumi/cloudflare\";\n\nconst exampleJob = new cloudflare.LogpushJob(\"example_job\", {\n dataset: \"http_requests\",\n destinationConf: \"s3://my-bucket-path?region=us-west-2\",\n enabled: true,\n logpullOptions: \"fields=RayID,ClientIP,EdgeStartTimestamp\u0026timestamps=rfc3339\",\n name: \"My-logpush-job\",\n ownershipChallenge: \"0000000000000\",\n zoneId: \"d41d8cd98f00b204e9800998ecf8427e\",\n});\n```\n```python\nimport pulumi\nimport pulumi_cloudflare as cloudflare\n\nexample_job = cloudflare.LogpushJob(\"exampleJob\",\n dataset=\"http_requests\",\n destination_conf=\"s3://my-bucket-path?region=us-west-2\",\n enabled=True,\n logpull_options=\"fields=RayID,ClientIP,EdgeStartTimestamp\u0026timestamps=rfc3339\",\n name=\"My-logpush-job\",\n ownership_challenge=\"0000000000000\",\n zone_id=\"d41d8cd98f00b204e9800998ecf8427e\")\n```\n```csharp\nusing Pulumi;\nusing Cloudflare = Pulumi.Cloudflare;\n\nclass MyStack : Stack\n{\n public MyStack()\n {\n var exampleJob = new Cloudflare.LogpushJob(\"exampleJob\", new Cloudflare.LogpushJobArgs\n {\n Dataset = \"http_requests\",\n DestinationConf = \"s3://my-bucket-path?region=us-west-2\",\n Enabled = true,\n LogpullOptions = \"fields=RayID,ClientIP,EdgeStartTimestamp\u0026timestamps=rfc3339\",\n Name = \"My-logpush-job\",\n OwnershipChallenge = \"0000000000000\",\n ZoneId = \"d41d8cd98f00b204e9800998ecf8427e\",\n });\n }\n\n}\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-cloudflare/sdk/v4/go/cloudflare\"\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 := cloudflare.NewLogpushJob(ctx, \"exampleJob\", \u0026cloudflare.LogpushJobArgs{\n\t\t\tDataset: pulumi.String(\"http_requests\"),\n\t\t\tDestinationConf: pulumi.String(\"s3://my-bucket-path?region=us-west-2\"),\n\t\t\tEnabled: pulumi.Bool(true),\n\t\t\tLogpullOptions: pulumi.String(\"fields=RayID,ClientIP,EdgeStartTimestamp\u0026timestamps=rfc3339\"),\n\t\t\tName: pulumi.String(\"My-logpush-job\"),\n\t\t\tOwnershipChallenge: pulumi.String(\"0000000000000\"),\n\t\t\tZoneId: pulumi.String(\"d41d8cd98f00b204e9800998ecf8427e\"),\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 java.util.*;\nimport java.io.*;\nimport java.nio.*;\nimport com.pulumi.*;\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 exampleJob = new LogpushJob(\"exampleJob\", LogpushJobArgs.builder() \n .dataset(\"http_requests\")\n .destinationConf(\"s3://my-bucket-path?region=us-west-2\")\n .enabled(true)\n .logpullOptions(\"fields=RayID,ClientIP,EdgeStartTimestamp\u0026timestamps=rfc3339\")\n .name(\"My-logpush-job\")\n .ownershipChallenge(\"0000000000000\")\n .zoneId(\"d41d8cd98f00b204e9800998ecf8427e\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n exampleJob:\n type: cloudflare:LogpushJob\n properties:\n dataset: http_requests\n destinationConf: s3://my-bucket-path?region=us-west-2\n enabled: true\n logpullOptions: fields=RayID,ClientIP,EdgeStartTimestamp\u0026timestamps=rfc3339\n name: My-logpush-job\n ownershipChallenge: 0000000000000\n zoneId: d41d8cd98f00b204e9800998ecf8427e\n```\n{{% /example %}}\n{{% /examples %}}\n\n## Import\n\nLogpush jobs can be imported using a composite ID formed of* `identifierType` - Either `account` or `zone`. * `identifierID` - The ID of the account or zone. * `jobID` - The Logpush Job ID to import. Import an account-scoped job using `account/:accountID/:jobID`\n\n```sh\n $ pulumi import cloudflare:index/logpushJob:LogpushJob example account/1d5fdc9e88c8a8c4518b068cd94331fe/54321\n```\n\n Import a zone-scoped job using `zone/:zoneID/:jobID`\n\n```sh\n $ pulumi import cloudflare:index/logpushJob:LogpushJob example zone/d41d8cd98f00b204e9800998ecf8427e/54321\n```\n\n ", + "description": "{{% examples %}}\n## Example Usage\n{{% example %}}\n### Manual Inspection Of S3 Bucket)\n\n- Create `cloudflare.LogPushOwnershipChallenge` resource\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as cloudflare from \"@pulumi/cloudflare\";\n\nconst ownershipChallenge = new cloudflare.LogPushOwnershipChallenge(\"ownership_challenge\", {\n destinationConf: \"s3://my-bucket-path?region=us-west-2\",\n zoneId: \"d41d8cd98f00b204e9800998ecf8427e\",\n});\n```\n```python\nimport pulumi\nimport pulumi_cloudflare as cloudflare\n\nownership_challenge = cloudflare.LogPushOwnershipChallenge(\"ownershipChallenge\",\n destination_conf=\"s3://my-bucket-path?region=us-west-2\",\n zone_id=\"d41d8cd98f00b204e9800998ecf8427e\")\n```\n```csharp\nusing Pulumi;\nusing Cloudflare = Pulumi.Cloudflare;\n\nclass MyStack : Stack\n{\n public MyStack()\n {\n var ownershipChallenge = new Cloudflare.LogPushOwnershipChallenge(\"ownershipChallenge\", new Cloudflare.LogPushOwnershipChallengeArgs\n {\n DestinationConf = \"s3://my-bucket-path?region=us-west-2\",\n ZoneId = \"d41d8cd98f00b204e9800998ecf8427e\",\n });\n }\n\n}\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-cloudflare/sdk/v4/go/cloudflare\"\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 := cloudflare.NewLogPushOwnershipChallenge(ctx, \"ownershipChallenge\", \u0026cloudflare.LogPushOwnershipChallengeArgs{\n\t\t\tDestinationConf: pulumi.String(\"s3://my-bucket-path?region=us-west-2\"),\n\t\t\tZoneId: pulumi.String(\"d41d8cd98f00b204e9800998ecf8427e\"),\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 java.util.*;\nimport java.io.*;\nimport java.nio.*;\nimport com.pulumi.*;\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 ownershipChallenge = new LogPushOwnershipChallenge(\"ownershipChallenge\", LogPushOwnershipChallengeArgs.builder() \n .destinationConf(\"s3://my-bucket-path?region=us-west-2\")\n .zoneId(\"d41d8cd98f00b204e9800998ecf8427e\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n ownershipChallenge:\n type: cloudflare:LogPushOwnershipChallenge\n properties:\n destinationConf: s3://my-bucket-path?region=us-west-2\n zoneId: d41d8cd98f00b204e9800998ecf8427e\n```\n\n- Check S3 bucket for your ownership challenge filename and grab the contents.\n- Create the `cloudflare.LogpushJob` substituting in your manual `ownership_challenge`.\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as cloudflare from \"@pulumi/cloudflare\";\n\nconst exampleJob = new cloudflare.LogpushJob(\"example_job\", {\n dataset: \"http_requests\",\n destinationConf: \"s3://my-bucket-path?region=us-west-2\",\n enabled: true,\n frequency: \"high\",\n logpullOptions: \"fields=RayID,ClientIP,EdgeStartTimestamp\u0026timestamps=rfc3339\",\n name: \"My-logpush-job\",\n ownershipChallenge: \"0000000000000\",\n zoneId: \"d41d8cd98f00b204e9800998ecf8427e\",\n});\n```\n```python\nimport pulumi\nimport pulumi_cloudflare as cloudflare\n\nexample_job = cloudflare.LogpushJob(\"exampleJob\",\n dataset=\"http_requests\",\n destination_conf=\"s3://my-bucket-path?region=us-west-2\",\n enabled=True,\n frequency=\"high\",\n logpull_options=\"fields=RayID,ClientIP,EdgeStartTimestamp\u0026timestamps=rfc3339\",\n name=\"My-logpush-job\",\n ownership_challenge=\"0000000000000\",\n zone_id=\"d41d8cd98f00b204e9800998ecf8427e\")\n```\n```csharp\nusing Pulumi;\nusing Cloudflare = Pulumi.Cloudflare;\n\nclass MyStack : Stack\n{\n public MyStack()\n {\n var exampleJob = new Cloudflare.LogpushJob(\"exampleJob\", new Cloudflare.LogpushJobArgs\n {\n Dataset = \"http_requests\",\n DestinationConf = \"s3://my-bucket-path?region=us-west-2\",\n Enabled = true,\n Frequency = \"high\",\n LogpullOptions = \"fields=RayID,ClientIP,EdgeStartTimestamp\u0026timestamps=rfc3339\",\n Name = \"My-logpush-job\",\n OwnershipChallenge = \"0000000000000\",\n ZoneId = \"d41d8cd98f00b204e9800998ecf8427e\",\n });\n }\n\n}\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-cloudflare/sdk/v4/go/cloudflare\"\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 := cloudflare.NewLogpushJob(ctx, \"exampleJob\", \u0026cloudflare.LogpushJobArgs{\n\t\t\tDataset: pulumi.String(\"http_requests\"),\n\t\t\tDestinationConf: pulumi.String(\"s3://my-bucket-path?region=us-west-2\"),\n\t\t\tEnabled: pulumi.Bool(true),\n\t\t\tFrequency: pulumi.String(\"high\"),\n\t\t\tLogpullOptions: pulumi.String(\"fields=RayID,ClientIP,EdgeStartTimestamp\u0026timestamps=rfc3339\"),\n\t\t\tName: pulumi.String(\"My-logpush-job\"),\n\t\t\tOwnershipChallenge: pulumi.String(\"0000000000000\"),\n\t\t\tZoneId: pulumi.String(\"d41d8cd98f00b204e9800998ecf8427e\"),\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 java.util.*;\nimport java.io.*;\nimport java.nio.*;\nimport com.pulumi.*;\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 exampleJob = new LogpushJob(\"exampleJob\", LogpushJobArgs.builder() \n .dataset(\"http_requests\")\n .destinationConf(\"s3://my-bucket-path?region=us-west-2\")\n .enabled(true)\n .frequency(\"high\")\n .logpullOptions(\"fields=RayID,ClientIP,EdgeStartTimestamp\u0026timestamps=rfc3339\")\n .name(\"My-logpush-job\")\n .ownershipChallenge(\"0000000000000\")\n .zoneId(\"d41d8cd98f00b204e9800998ecf8427e\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n exampleJob:\n type: cloudflare:LogpushJob\n properties:\n dataset: http_requests\n destinationConf: s3://my-bucket-path?region=us-west-2\n enabled: true\n frequency: high\n logpullOptions: fields=RayID,ClientIP,EdgeStartTimestamp\u0026timestamps=rfc3339\n name: My-logpush-job\n ownershipChallenge: 0000000000000\n zoneId: d41d8cd98f00b204e9800998ecf8427e\n```\n{{% /example %}}\n{{% /examples %}}\n\n## Import\n\nLogpush jobs can be imported using a composite ID formed of* `identifierType` - Either `account` or `zone`. * `identifierID` - The ID of the account or zone. * `jobID` - The Logpush Job ID to import. Import an account-scoped job using `account/:accountID/:jobID`\n\n```sh\n $ pulumi import cloudflare:index/logpushJob:LogpushJob example account/1d5fdc9e88c8a8c4518b068cd94331fe/54321\n```\n\n Import a zone-scoped job using `zone/:zoneID/:jobID`\n\n```sh\n $ pulumi import cloudflare:index/logpushJob:LogpushJob example zone/d41d8cd98f00b204e9800998ecf8427e/54321\n```\n\n ", "properties": { "accountId": { "type": "string", @@ -12776,6 +12994,10 @@ "type": "boolean", "description": "Whether to enable the job.\n" }, + "frequency": { + "type": "string", + "description": "`\"high\"` or `\"low\"`. A higher frequency will result in logs being pushed on faster with smaller files. `\"low\"` frequency will push logs less often with larger files.\n" + }, "logpullOptions": { "type": "string", "description": "Configuration string for the Logshare API. It specifies things like requested fields and timestamp formats. See [Logpull options documentation](https://developers.cloudflare.com/logs/logpush/logpush-configuration-api/understanding-logpush-api/#options).\n" @@ -12814,6 +13036,10 @@ "type": "boolean", "description": "Whether to enable the job.\n" }, + "frequency": { + "type": "string", + "description": "`\"high\"` or `\"low\"`. A higher frequency will result in logs being pushed on faster with smaller files. `\"low\"` frequency will push logs less often with larger files.\n" + }, "logpullOptions": { "type": "string", "description": "Configuration string for the Logshare API. It specifies things like requested fields and timestamp formats. See [Logpull options documentation](https://developers.cloudflare.com/logs/logpush/logpush-configuration-api/understanding-logpush-api/#options).\n" @@ -12854,6 +13080,10 @@ "type": "boolean", "description": "Whether to enable the job.\n" }, + "frequency": { + "type": "string", + "description": "`\"high\"` or `\"low\"`. A higher frequency will result in logs being pushed on faster with smaller files. `\"low\"` frequency will push logs less often with larger files.\n" + }, "logpullOptions": { "type": "string", "description": "Configuration string for the Logshare API. It specifies things like requested fields and timestamp formats. See [Logpull options documentation](https://developers.cloudflare.com/logs/logpush/logpush-configuration-api/understanding-logpush-api/#options).\n" @@ -13734,7 +13964,7 @@ } }, "cloudflare:index/ruleset:Ruleset": { - "description": "{{% examples %}}\n## Example Usage\n{{% example %}}\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as cloudflare from \"@pulumi/cloudflare\";\n\n// Magic Transit\nconst magicTransitExample = new cloudflare.Ruleset(\"magic_transit_example\", {\n accountId: \"d41d8cd98f00b204e9800998ecf8427e\",\n description: \"example magic transit ruleset description\",\n kind: \"root\",\n name: \"account magic transit\",\n phase: \"magic_transit\",\n rules: [{\n action: \"allow\",\n description: \"Allow TCP Ephemeral Ports\",\n expression: \"tcp.dstport in { 32768..65535 }\",\n }],\n});\n// Zone-level WAF Managed Ruleset\nconst zoneLevelManagedWaf = new cloudflare.Ruleset(\"zone_level_managed_waf\", {\n description: \"managed WAF ruleset description\",\n kind: \"zone\",\n name: \"managed WAF\",\n phase: \"http_request_firewall_managed\",\n rules: [{\n action: \"execute\",\n actionParameters: {\n id: \"efb7b8c949ac4650a09736fc376e9aee\",\n },\n description: \"Execute Cloudflare Managed Ruleset on my zone-level phase entry point ruleset\",\n enabled: true,\n expression: \"true\",\n }],\n zoneId: \"cb029e245cfdd66dc8d2e570d5dd3322\",\n});\n// Zone-level WAF with tag-based overrides\nconst zoneLevelManagedWafWithCategoryBasedOverrides = new cloudflare.Ruleset(\"zone_level_managed_waf_with_category_based_overrides\", {\n description: \"managed WAF with tag-based overrides ruleset description\",\n kind: \"zone\",\n name: \"managed WAF with tag-based overrides\",\n phase: \"http_request_firewall_managed\",\n rules: [{\n action: \"execute\",\n actionParameters: {\n id: \"efb7b8c949ac4650a09736fc376e9aee\",\n overrides: {\n categories: [\n {\n action: \"block\",\n category: \"wordpress\",\n enabled: true,\n },\n {\n action: \"block\",\n category: \"joomla\",\n enabled: true,\n },\n ],\n },\n },\n description: \"overrides to only enable wordpress rules to block\",\n enabled: false,\n expression: \"true\",\n }],\n zoneId: \"cb029e245cfdd66dc8d2e570d5dd3322\",\n});\n// Rewrite the URI path component to a static path\nconst transformUriRulePath = new cloudflare.Ruleset(\"transform_uri_rule_path\", {\n description: \"change the URI path to a new static path\",\n kind: \"zone\",\n name: \"transform rule for URI path\",\n phase: \"http_request_transform\",\n rules: [{\n action: \"rewrite\",\n actionParameters: {\n uri: {\n path: {\n value: \"/my-new-route\",\n },\n },\n },\n description: \"example URI path transform rule\",\n enabled: true,\n expression: \"(http.host eq \\\"example.com\\\" and http.request.uri.path eq \\\"/old-path\\\")\",\n }],\n zoneId: \"cb029e245cfdd66dc8d2e570d5dd3322\",\n});\n// Rewrite the URI query component to a static query\nconst transformUriRuleQuery = new cloudflare.Ruleset(\"transform_uri_rule_query\", {\n description: \"change the URI query to a new static query\",\n kind: \"zone\",\n name: \"transform rule for URI query parameter\",\n phase: \"http_request_transform\",\n rules: [{\n action: \"rewrite\",\n actionParameters: {\n uri: {\n query: {\n value: \"old=new_again\",\n },\n },\n },\n description: \"URI transformation query example\",\n enabled: true,\n expression: \"true\",\n }],\n zoneId: \"cb029e245cfdd66dc8d2e570d5dd3322\",\n});\n// Rewrite HTTP headers to a modified values\nconst transformUriHttpHeaders = new cloudflare.Ruleset(\"transform_uri_http_headers\", {\n description: \"modify HTTP headers before reaching origin\",\n kind: \"zone\",\n name: \"transform rule for HTTP headers\",\n phase: \"http_request_late_transform\",\n rules: [{\n action: \"rewrite\",\n actionParameters: {\n headers: [\n {\n name: \"example-http-header-1\",\n operation: \"set\",\n value: \"my-http-header-value-1\",\n },\n {\n expression: \"cf.zone.name\",\n name: \"example-http-header-2\",\n operation: \"set\",\n },\n {\n name: \"example-http-header-3-to-remove\",\n operation: \"remove\",\n },\n ],\n },\n description: \"example request header transform rule\",\n enabled: false,\n expression: \"true\",\n }],\n zoneId: \"cb029e245cfdd66dc8d2e570d5dd3322\",\n});\n// HTTP rate limit for an API route\nconst rateLimitingExample = new cloudflare.Ruleset(\"rate_limiting_example\", {\n description: \"apply HTTP rate limiting for a route\",\n kind: \"zone\",\n name: \"restrict API requests count\",\n phase: \"http_ratelimit\",\n rules: [{\n action: \"block\",\n description: \"rate limit for API\",\n enabled: true,\n expression: \"(http.request.uri.path matches \\\"^/api/\\\")\",\n ratelimit: {\n characteristics: [\n \"cf.colo.id\",\n \"ip.src\",\n ],\n mitigationTimeout: 600,\n period: 60,\n requestsPerPeriod: 100,\n },\n }],\n zoneId: \"cb029e245cfdd66dc8d2e570d5dd3322\",\n});\n// Change origin for an API route\nconst httpOriginExample = new cloudflare.Ruleset(\"http_origin_example\", {\n description: \"Change origin for a route\",\n kind: \"zone\",\n name: \"Change to some origin\",\n phase: \"http_request_origin\",\n rules: [{\n action: \"route\",\n actionParameters: {\n hostHeader: \"some.host\",\n origin: {\n host: \"some.host\",\n port: 80,\n },\n },\n description: \"change origin to some.host\",\n enabled: true,\n expression: \"(http.request.uri.path matches \\\"^/api/\\\")\",\n }],\n zoneId: \"cb029e245cfdd66dc8d2e570d5dd3322\",\n});\n```\n```python\nimport pulumi\nimport pulumi_cloudflare as cloudflare\n\n# Magic Transit\nmagic_transit_example = cloudflare.Ruleset(\"magicTransitExample\",\n account_id=\"d41d8cd98f00b204e9800998ecf8427e\",\n description=\"example magic transit ruleset description\",\n kind=\"root\",\n name=\"account magic transit\",\n phase=\"magic_transit\",\n rules=[cloudflare.RulesetRuleArgs(\n action=\"allow\",\n description=\"Allow TCP Ephemeral Ports\",\n expression=\"tcp.dstport in { 32768..65535 }\",\n )])\n# Zone-level WAF Managed Ruleset\nzone_level_managed_waf = cloudflare.Ruleset(\"zoneLevelManagedWaf\",\n description=\"managed WAF ruleset description\",\n kind=\"zone\",\n name=\"managed WAF\",\n phase=\"http_request_firewall_managed\",\n rules=[cloudflare.RulesetRuleArgs(\n action=\"execute\",\n action_parameters=cloudflare.RulesetRuleActionParametersArgs(\n id=\"efb7b8c949ac4650a09736fc376e9aee\",\n ),\n description=\"Execute Cloudflare Managed Ruleset on my zone-level phase entry point ruleset\",\n enabled=True,\n expression=\"true\",\n )],\n zone_id=\"cb029e245cfdd66dc8d2e570d5dd3322\")\n# Zone-level WAF with tag-based overrides\nzone_level_managed_waf_with_category_based_overrides = cloudflare.Ruleset(\"zoneLevelManagedWafWithCategoryBasedOverrides\",\n description=\"managed WAF with tag-based overrides ruleset description\",\n kind=\"zone\",\n name=\"managed WAF with tag-based overrides\",\n phase=\"http_request_firewall_managed\",\n rules=[cloudflare.RulesetRuleArgs(\n action=\"execute\",\n action_parameters=cloudflare.RulesetRuleActionParametersArgs(\n id=\"efb7b8c949ac4650a09736fc376e9aee\",\n overrides=cloudflare.RulesetRuleActionParametersOverridesArgs(\n categories=[\n cloudflare.RulesetRuleActionParametersOverridesCategoryArgs(\n action=\"block\",\n category=\"wordpress\",\n enabled=True,\n ),\n cloudflare.RulesetRuleActionParametersOverridesCategoryArgs(\n action=\"block\",\n category=\"joomla\",\n enabled=True,\n ),\n ],\n ),\n ),\n description=\"overrides to only enable wordpress rules to block\",\n enabled=False,\n expression=\"true\",\n )],\n zone_id=\"cb029e245cfdd66dc8d2e570d5dd3322\")\n# Rewrite the URI path component to a static path\ntransform_uri_rule_path = cloudflare.Ruleset(\"transformUriRulePath\",\n description=\"change the URI path to a new static path\",\n kind=\"zone\",\n name=\"transform rule for URI path\",\n phase=\"http_request_transform\",\n rules=[cloudflare.RulesetRuleArgs(\n action=\"rewrite\",\n action_parameters=cloudflare.RulesetRuleActionParametersArgs(\n uri=cloudflare.RulesetRuleActionParametersUriArgs(\n path=cloudflare.RulesetRuleActionParametersUriPathArgs(\n value=\"/my-new-route\",\n ),\n ),\n ),\n description=\"example URI path transform rule\",\n enabled=True,\n expression=\"(http.host eq \\\"example.com\\\" and http.request.uri.path eq \\\"/old-path\\\")\",\n )],\n zone_id=\"cb029e245cfdd66dc8d2e570d5dd3322\")\n# Rewrite the URI query component to a static query\ntransform_uri_rule_query = cloudflare.Ruleset(\"transformUriRuleQuery\",\n description=\"change the URI query to a new static query\",\n kind=\"zone\",\n name=\"transform rule for URI query parameter\",\n phase=\"http_request_transform\",\n rules=[cloudflare.RulesetRuleArgs(\n action=\"rewrite\",\n action_parameters=cloudflare.RulesetRuleActionParametersArgs(\n uri=cloudflare.RulesetRuleActionParametersUriArgs(\n query=cloudflare.RulesetRuleActionParametersUriQueryArgs(\n value=\"old=new_again\",\n ),\n ),\n ),\n description=\"URI transformation query example\",\n enabled=True,\n expression=\"true\",\n )],\n zone_id=\"cb029e245cfdd66dc8d2e570d5dd3322\")\n# Rewrite HTTP headers to a modified values\ntransform_uri_http_headers = cloudflare.Ruleset(\"transformUriHttpHeaders\",\n description=\"modify HTTP headers before reaching origin\",\n kind=\"zone\",\n name=\"transform rule for HTTP headers\",\n phase=\"http_request_late_transform\",\n rules=[cloudflare.RulesetRuleArgs(\n action=\"rewrite\",\n action_parameters=cloudflare.RulesetRuleActionParametersArgs(\n headers=[\n cloudflare.RulesetRuleActionParametersHeaderArgs(\n name=\"example-http-header-1\",\n operation=\"set\",\n value=\"my-http-header-value-1\",\n ),\n cloudflare.RulesetRuleActionParametersHeaderArgs(\n expression=\"cf.zone.name\",\n name=\"example-http-header-2\",\n operation=\"set\",\n ),\n cloudflare.RulesetRuleActionParametersHeaderArgs(\n name=\"example-http-header-3-to-remove\",\n operation=\"remove\",\n ),\n ],\n ),\n description=\"example request header transform rule\",\n enabled=False,\n expression=\"true\",\n )],\n zone_id=\"cb029e245cfdd66dc8d2e570d5dd3322\")\n# HTTP rate limit for an API route\nrate_limiting_example = cloudflare.Ruleset(\"rateLimitingExample\",\n description=\"apply HTTP rate limiting for a route\",\n kind=\"zone\",\n name=\"restrict API requests count\",\n phase=\"http_ratelimit\",\n rules=[cloudflare.RulesetRuleArgs(\n action=\"block\",\n description=\"rate limit for API\",\n enabled=True,\n expression=\"(http.request.uri.path matches \\\"^/api/\\\")\",\n ratelimit=cloudflare.RulesetRuleRatelimitArgs(\n characteristics=[\n \"cf.colo.id\",\n \"ip.src\",\n ],\n mitigation_timeout=600,\n period=60,\n requests_per_period=100,\n ),\n )],\n zone_id=\"cb029e245cfdd66dc8d2e570d5dd3322\")\n# Change origin for an API route\nhttp_origin_example = cloudflare.Ruleset(\"httpOriginExample\",\n description=\"Change origin for a route\",\n kind=\"zone\",\n name=\"Change to some origin\",\n phase=\"http_request_origin\",\n rules=[cloudflare.RulesetRuleArgs(\n action=\"route\",\n action_parameters=cloudflare.RulesetRuleActionParametersArgs(\n host_header=\"some.host\",\n origin=cloudflare.RulesetRuleActionParametersOriginArgs(\n host=\"some.host\",\n port=80,\n ),\n ),\n description=\"change origin to some.host\",\n enabled=True,\n expression=\"(http.request.uri.path matches \\\"^/api/\\\")\",\n )],\n zone_id=\"cb029e245cfdd66dc8d2e570d5dd3322\")\n```\n```csharp\nusing Pulumi;\nusing Cloudflare = Pulumi.Cloudflare;\n\nclass MyStack : Stack\n{\n public MyStack()\n {\n // Magic Transit\n var magicTransitExample = new Cloudflare.Ruleset(\"magicTransitExample\", new Cloudflare.RulesetArgs\n {\n AccountId = \"d41d8cd98f00b204e9800998ecf8427e\",\n Description = \"example magic transit ruleset description\",\n Kind = \"root\",\n Name = \"account magic transit\",\n Phase = \"magic_transit\",\n Rules = \n {\n new Cloudflare.Inputs.RulesetRuleArgs\n {\n Action = \"allow\",\n Description = \"Allow TCP Ephemeral Ports\",\n Expression = \"tcp.dstport in { 32768..65535 }\",\n },\n },\n });\n // Zone-level WAF Managed Ruleset\n var zoneLevelManagedWaf = new Cloudflare.Ruleset(\"zoneLevelManagedWaf\", new Cloudflare.RulesetArgs\n {\n Description = \"managed WAF ruleset description\",\n Kind = \"zone\",\n Name = \"managed WAF\",\n Phase = \"http_request_firewall_managed\",\n Rules = \n {\n new Cloudflare.Inputs.RulesetRuleArgs\n {\n Action = \"execute\",\n ActionParameters = new Cloudflare.Inputs.RulesetRuleActionParametersArgs\n {\n Id = \"efb7b8c949ac4650a09736fc376e9aee\",\n },\n Description = \"Execute Cloudflare Managed Ruleset on my zone-level phase entry point ruleset\",\n Enabled = true,\n Expression = \"true\",\n },\n },\n ZoneId = \"cb029e245cfdd66dc8d2e570d5dd3322\",\n });\n // Zone-level WAF with tag-based overrides\n var zoneLevelManagedWafWithCategoryBasedOverrides = new Cloudflare.Ruleset(\"zoneLevelManagedWafWithCategoryBasedOverrides\", new Cloudflare.RulesetArgs\n {\n Description = \"managed WAF with tag-based overrides ruleset description\",\n Kind = \"zone\",\n Name = \"managed WAF with tag-based overrides\",\n Phase = \"http_request_firewall_managed\",\n Rules = \n {\n new Cloudflare.Inputs.RulesetRuleArgs\n {\n Action = \"execute\",\n ActionParameters = new Cloudflare.Inputs.RulesetRuleActionParametersArgs\n {\n Id = \"efb7b8c949ac4650a09736fc376e9aee\",\n Overrides = new Cloudflare.Inputs.RulesetRuleActionParametersOverridesArgs\n {\n Categories = \n {\n new Cloudflare.Inputs.RulesetRuleActionParametersOverridesCategoryArgs\n {\n Action = \"block\",\n Category = \"wordpress\",\n Enabled = true,\n },\n new Cloudflare.Inputs.RulesetRuleActionParametersOverridesCategoryArgs\n {\n Action = \"block\",\n Category = \"joomla\",\n Enabled = true,\n },\n },\n },\n },\n Description = \"overrides to only enable wordpress rules to block\",\n Enabled = false,\n Expression = \"true\",\n },\n },\n ZoneId = \"cb029e245cfdd66dc8d2e570d5dd3322\",\n });\n // Rewrite the URI path component to a static path\n var transformUriRulePath = new Cloudflare.Ruleset(\"transformUriRulePath\", new Cloudflare.RulesetArgs\n {\n Description = \"change the URI path to a new static path\",\n Kind = \"zone\",\n Name = \"transform rule for URI path\",\n Phase = \"http_request_transform\",\n Rules = \n {\n new Cloudflare.Inputs.RulesetRuleArgs\n {\n Action = \"rewrite\",\n ActionParameters = new Cloudflare.Inputs.RulesetRuleActionParametersArgs\n {\n Uri = new Cloudflare.Inputs.RulesetRuleActionParametersUriArgs\n {\n Path = new Cloudflare.Inputs.RulesetRuleActionParametersUriPathArgs\n {\n Value = \"/my-new-route\",\n },\n },\n },\n Description = \"example URI path transform rule\",\n Enabled = true,\n Expression = \"(http.host eq \\\"example.com\\\" and http.request.uri.path eq \\\"/old-path\\\")\",\n },\n },\n ZoneId = \"cb029e245cfdd66dc8d2e570d5dd3322\",\n });\n // Rewrite the URI query component to a static query\n var transformUriRuleQuery = new Cloudflare.Ruleset(\"transformUriRuleQuery\", new Cloudflare.RulesetArgs\n {\n Description = \"change the URI query to a new static query\",\n Kind = \"zone\",\n Name = \"transform rule for URI query parameter\",\n Phase = \"http_request_transform\",\n Rules = \n {\n new Cloudflare.Inputs.RulesetRuleArgs\n {\n Action = \"rewrite\",\n ActionParameters = new Cloudflare.Inputs.RulesetRuleActionParametersArgs\n {\n Uri = new Cloudflare.Inputs.RulesetRuleActionParametersUriArgs\n {\n Query = new Cloudflare.Inputs.RulesetRuleActionParametersUriQueryArgs\n {\n Value = \"old=new_again\",\n },\n },\n },\n Description = \"URI transformation query example\",\n Enabled = true,\n Expression = \"true\",\n },\n },\n ZoneId = \"cb029e245cfdd66dc8d2e570d5dd3322\",\n });\n // Rewrite HTTP headers to a modified values\n var transformUriHttpHeaders = new Cloudflare.Ruleset(\"transformUriHttpHeaders\", new Cloudflare.RulesetArgs\n {\n Description = \"modify HTTP headers before reaching origin\",\n Kind = \"zone\",\n Name = \"transform rule for HTTP headers\",\n Phase = \"http_request_late_transform\",\n Rules = \n {\n new Cloudflare.Inputs.RulesetRuleArgs\n {\n Action = \"rewrite\",\n ActionParameters = new Cloudflare.Inputs.RulesetRuleActionParametersArgs\n {\n Headers = \n {\n new Cloudflare.Inputs.RulesetRuleActionParametersHeaderArgs\n {\n Name = \"example-http-header-1\",\n Operation = \"set\",\n Value = \"my-http-header-value-1\",\n },\n new Cloudflare.Inputs.RulesetRuleActionParametersHeaderArgs\n {\n Expression = \"cf.zone.name\",\n Name = \"example-http-header-2\",\n Operation = \"set\",\n },\n new Cloudflare.Inputs.RulesetRuleActionParametersHeaderArgs\n {\n Name = \"example-http-header-3-to-remove\",\n Operation = \"remove\",\n },\n },\n },\n Description = \"example request header transform rule\",\n Enabled = false,\n Expression = \"true\",\n },\n },\n ZoneId = \"cb029e245cfdd66dc8d2e570d5dd3322\",\n });\n // HTTP rate limit for an API route\n var rateLimitingExample = new Cloudflare.Ruleset(\"rateLimitingExample\", new Cloudflare.RulesetArgs\n {\n Description = \"apply HTTP rate limiting for a route\",\n Kind = \"zone\",\n Name = \"restrict API requests count\",\n Phase = \"http_ratelimit\",\n Rules = \n {\n new Cloudflare.Inputs.RulesetRuleArgs\n {\n Action = \"block\",\n Description = \"rate limit for API\",\n Enabled = true,\n Expression = \"(http.request.uri.path matches \\\"^/api/\\\")\",\n Ratelimit = new Cloudflare.Inputs.RulesetRuleRatelimitArgs\n {\n Characteristics = \n {\n \"cf.colo.id\",\n \"ip.src\",\n },\n MitigationTimeout = 600,\n Period = 60,\n RequestsPerPeriod = 100,\n },\n },\n },\n ZoneId = \"cb029e245cfdd66dc8d2e570d5dd3322\",\n });\n // Change origin for an API route\n var httpOriginExample = new Cloudflare.Ruleset(\"httpOriginExample\", new Cloudflare.RulesetArgs\n {\n Description = \"Change origin for a route\",\n Kind = \"zone\",\n Name = \"Change to some origin\",\n Phase = \"http_request_origin\",\n Rules = \n {\n new Cloudflare.Inputs.RulesetRuleArgs\n {\n Action = \"route\",\n ActionParameters = new Cloudflare.Inputs.RulesetRuleActionParametersArgs\n {\n HostHeader = \"some.host\",\n Origin = new Cloudflare.Inputs.RulesetRuleActionParametersOriginArgs\n {\n Host = \"some.host\",\n Port = 80,\n },\n },\n Description = \"change origin to some.host\",\n Enabled = true,\n Expression = \"(http.request.uri.path matches \\\"^/api/\\\")\",\n },\n },\n ZoneId = \"cb029e245cfdd66dc8d2e570d5dd3322\",\n });\n }\n\n}\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-cloudflare/sdk/v4/go/cloudflare\"\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 := cloudflare.NewRuleset(ctx, \"magicTransitExample\", \u0026cloudflare.RulesetArgs{\n\t\t\tAccountId: pulumi.String(\"d41d8cd98f00b204e9800998ecf8427e\"),\n\t\t\tDescription: pulumi.String(\"example magic transit ruleset description\"),\n\t\t\tKind: pulumi.String(\"root\"),\n\t\t\tName: pulumi.String(\"account magic transit\"),\n\t\t\tPhase: pulumi.String(\"magic_transit\"),\n\t\t\tRules: RulesetRuleArray{\n\t\t\t\t\u0026RulesetRuleArgs{\n\t\t\t\t\tAction: pulumi.String(\"allow\"),\n\t\t\t\t\tDescription: pulumi.String(\"Allow TCP Ephemeral Ports\"),\n\t\t\t\t\tExpression: pulumi.String(\"tcp.dstport in { 32768..65535 }\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudflare.NewRuleset(ctx, \"zoneLevelManagedWaf\", \u0026cloudflare.RulesetArgs{\n\t\t\tDescription: pulumi.String(\"managed WAF ruleset description\"),\n\t\t\tKind: pulumi.String(\"zone\"),\n\t\t\tName: pulumi.String(\"managed WAF\"),\n\t\t\tPhase: pulumi.String(\"http_request_firewall_managed\"),\n\t\t\tRules: RulesetRuleArray{\n\t\t\t\t\u0026RulesetRuleArgs{\n\t\t\t\t\tAction: pulumi.String(\"execute\"),\n\t\t\t\t\tActionParameters: \u0026RulesetRuleActionParametersArgs{\n\t\t\t\t\t\tId: pulumi.String(\"efb7b8c949ac4650a09736fc376e9aee\"),\n\t\t\t\t\t},\n\t\t\t\t\tDescription: pulumi.String(\"Execute Cloudflare Managed Ruleset on my zone-level phase entry point ruleset\"),\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t\tExpression: pulumi.String(\"true\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tZoneId: pulumi.String(\"cb029e245cfdd66dc8d2e570d5dd3322\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudflare.NewRuleset(ctx, \"zoneLevelManagedWafWithCategoryBasedOverrides\", \u0026cloudflare.RulesetArgs{\n\t\t\tDescription: pulumi.String(\"managed WAF with tag-based overrides ruleset description\"),\n\t\t\tKind: pulumi.String(\"zone\"),\n\t\t\tName: pulumi.String(\"managed WAF with tag-based overrides\"),\n\t\t\tPhase: pulumi.String(\"http_request_firewall_managed\"),\n\t\t\tRules: RulesetRuleArray{\n\t\t\t\t\u0026RulesetRuleArgs{\n\t\t\t\t\tAction: pulumi.String(\"execute\"),\n\t\t\t\t\tActionParameters: \u0026RulesetRuleActionParametersArgs{\n\t\t\t\t\t\tId: pulumi.String(\"efb7b8c949ac4650a09736fc376e9aee\"),\n\t\t\t\t\t\tOverrides: \u0026RulesetRuleActionParametersOverridesArgs{\n\t\t\t\t\t\t\tCategories: RulesetRuleActionParametersOverridesCategoryArray{\n\t\t\t\t\t\t\t\t\u0026RulesetRuleActionParametersOverridesCategoryArgs{\n\t\t\t\t\t\t\t\t\tAction: pulumi.String(\"block\"),\n\t\t\t\t\t\t\t\t\tCategory: pulumi.String(\"wordpress\"),\n\t\t\t\t\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\u0026RulesetRuleActionParametersOverridesCategoryArgs{\n\t\t\t\t\t\t\t\t\tAction: pulumi.String(\"block\"),\n\t\t\t\t\t\t\t\t\tCategory: pulumi.String(\"joomla\"),\n\t\t\t\t\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tDescription: pulumi.String(\"overrides to only enable wordpress rules to block\"),\n\t\t\t\t\tEnabled: pulumi.Bool(false),\n\t\t\t\t\tExpression: pulumi.String(\"true\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tZoneId: pulumi.String(\"cb029e245cfdd66dc8d2e570d5dd3322\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudflare.NewRuleset(ctx, \"transformUriRulePath\", \u0026cloudflare.RulesetArgs{\n\t\t\tDescription: pulumi.String(\"change the URI path to a new static path\"),\n\t\t\tKind: pulumi.String(\"zone\"),\n\t\t\tName: pulumi.String(\"transform rule for URI path\"),\n\t\t\tPhase: pulumi.String(\"http_request_transform\"),\n\t\t\tRules: RulesetRuleArray{\n\t\t\t\t\u0026RulesetRuleArgs{\n\t\t\t\t\tAction: pulumi.String(\"rewrite\"),\n\t\t\t\t\tActionParameters: \u0026RulesetRuleActionParametersArgs{\n\t\t\t\t\t\tUri: \u0026RulesetRuleActionParametersUriArgs{\n\t\t\t\t\t\t\tPath: \u0026RulesetRuleActionParametersUriPathArgs{\n\t\t\t\t\t\t\t\tValue: pulumi.String(\"/my-new-route\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tDescription: pulumi.String(\"example URI path transform rule\"),\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t\tExpression: pulumi.String(\"(http.host eq \\\"example.com\\\" and http.request.uri.path eq \\\"/old-path\\\")\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tZoneId: pulumi.String(\"cb029e245cfdd66dc8d2e570d5dd3322\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudflare.NewRuleset(ctx, \"transformUriRuleQuery\", \u0026cloudflare.RulesetArgs{\n\t\t\tDescription: pulumi.String(\"change the URI query to a new static query\"),\n\t\t\tKind: pulumi.String(\"zone\"),\n\t\t\tName: pulumi.String(\"transform rule for URI query parameter\"),\n\t\t\tPhase: pulumi.String(\"http_request_transform\"),\n\t\t\tRules: RulesetRuleArray{\n\t\t\t\t\u0026RulesetRuleArgs{\n\t\t\t\t\tAction: pulumi.String(\"rewrite\"),\n\t\t\t\t\tActionParameters: \u0026RulesetRuleActionParametersArgs{\n\t\t\t\t\t\tUri: \u0026RulesetRuleActionParametersUriArgs{\n\t\t\t\t\t\t\tQuery: \u0026RulesetRuleActionParametersUriQueryArgs{\n\t\t\t\t\t\t\t\tValue: pulumi.String(\"old=new_again\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tDescription: pulumi.String(\"URI transformation query example\"),\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t\tExpression: pulumi.String(\"true\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tZoneId: pulumi.String(\"cb029e245cfdd66dc8d2e570d5dd3322\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudflare.NewRuleset(ctx, \"transformUriHttpHeaders\", \u0026cloudflare.RulesetArgs{\n\t\t\tDescription: pulumi.String(\"modify HTTP headers before reaching origin\"),\n\t\t\tKind: pulumi.String(\"zone\"),\n\t\t\tName: pulumi.String(\"transform rule for HTTP headers\"),\n\t\t\tPhase: pulumi.String(\"http_request_late_transform\"),\n\t\t\tRules: RulesetRuleArray{\n\t\t\t\t\u0026RulesetRuleArgs{\n\t\t\t\t\tAction: pulumi.String(\"rewrite\"),\n\t\t\t\t\tActionParameters: \u0026RulesetRuleActionParametersArgs{\n\t\t\t\t\t\tHeaders: RulesetRuleActionParametersHeaderArray{\n\t\t\t\t\t\t\t\u0026RulesetRuleActionParametersHeaderArgs{\n\t\t\t\t\t\t\t\tName: pulumi.String(\"example-http-header-1\"),\n\t\t\t\t\t\t\t\tOperation: pulumi.String(\"set\"),\n\t\t\t\t\t\t\t\tValue: pulumi.String(\"my-http-header-value-1\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026RulesetRuleActionParametersHeaderArgs{\n\t\t\t\t\t\t\t\tExpression: pulumi.String(\"cf.zone.name\"),\n\t\t\t\t\t\t\t\tName: pulumi.String(\"example-http-header-2\"),\n\t\t\t\t\t\t\t\tOperation: pulumi.String(\"set\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026RulesetRuleActionParametersHeaderArgs{\n\t\t\t\t\t\t\t\tName: pulumi.String(\"example-http-header-3-to-remove\"),\n\t\t\t\t\t\t\t\tOperation: pulumi.String(\"remove\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tDescription: pulumi.String(\"example request header transform rule\"),\n\t\t\t\t\tEnabled: pulumi.Bool(false),\n\t\t\t\t\tExpression: pulumi.String(\"true\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tZoneId: pulumi.String(\"cb029e245cfdd66dc8d2e570d5dd3322\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudflare.NewRuleset(ctx, \"rateLimitingExample\", \u0026cloudflare.RulesetArgs{\n\t\t\tDescription: pulumi.String(\"apply HTTP rate limiting for a route\"),\n\t\t\tKind: pulumi.String(\"zone\"),\n\t\t\tName: pulumi.String(\"restrict API requests count\"),\n\t\t\tPhase: pulumi.String(\"http_ratelimit\"),\n\t\t\tRules: RulesetRuleArray{\n\t\t\t\t\u0026RulesetRuleArgs{\n\t\t\t\t\tAction: pulumi.String(\"block\"),\n\t\t\t\t\tDescription: pulumi.String(\"rate limit for API\"),\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t\tExpression: pulumi.String(\"(http.request.uri.path matches \\\"^/api/\\\")\"),\n\t\t\t\t\tRatelimit: \u0026RulesetRuleRatelimitArgs{\n\t\t\t\t\t\tCharacteristics: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"cf.colo.id\"),\n\t\t\t\t\t\t\tpulumi.String(\"ip.src\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tMitigationTimeout: pulumi.Int(600),\n\t\t\t\t\t\tPeriod: pulumi.Int(60),\n\t\t\t\t\t\tRequestsPerPeriod: pulumi.Int(100),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tZoneId: pulumi.String(\"cb029e245cfdd66dc8d2e570d5dd3322\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudflare.NewRuleset(ctx, \"httpOriginExample\", \u0026cloudflare.RulesetArgs{\n\t\t\tDescription: pulumi.String(\"Change origin for a route\"),\n\t\t\tKind: pulumi.String(\"zone\"),\n\t\t\tName: pulumi.String(\"Change to some origin\"),\n\t\t\tPhase: pulumi.String(\"http_request_origin\"),\n\t\t\tRules: RulesetRuleArray{\n\t\t\t\t\u0026RulesetRuleArgs{\n\t\t\t\t\tAction: pulumi.String(\"route\"),\n\t\t\t\t\tActionParameters: \u0026RulesetRuleActionParametersArgs{\n\t\t\t\t\t\tHostHeader: pulumi.String(\"some.host\"),\n\t\t\t\t\t\tOrigin: \u0026RulesetRuleActionParametersOriginArgs{\n\t\t\t\t\t\t\tHost: pulumi.String(\"some.host\"),\n\t\t\t\t\t\t\tPort: pulumi.Int(80),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tDescription: pulumi.String(\"change origin to some.host\"),\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t\tExpression: pulumi.String(\"(http.request.uri.path matches \\\"^/api/\\\")\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tZoneId: pulumi.String(\"cb029e245cfdd66dc8d2e570d5dd3322\"),\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 java.util.*;\nimport java.io.*;\nimport java.nio.*;\nimport com.pulumi.*;\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 magicTransitExample = new Ruleset(\"magicTransitExample\", RulesetArgs.builder() \n .accountId(\"d41d8cd98f00b204e9800998ecf8427e\")\n .description(\"example magic transit ruleset description\")\n .kind(\"root\")\n .name(\"account magic transit\")\n .phase(\"magic_transit\")\n .rules(RulesetRule.builder()\n .action(\"allow\")\n .description(\"Allow TCP Ephemeral Ports\")\n .expression(\"tcp.dstport in { 32768..65535 }\")\n .build())\n .build());\n\n var zoneLevelManagedWaf = new Ruleset(\"zoneLevelManagedWaf\", RulesetArgs.builder() \n .description(\"managed WAF ruleset description\")\n .kind(\"zone\")\n .name(\"managed WAF\")\n .phase(\"http_request_firewall_managed\")\n .rules(RulesetRule.builder()\n .action(\"execute\")\n .actionParameters(RulesetRuleActionParameters.builder()\n .id(\"efb7b8c949ac4650a09736fc376e9aee\")\n .build())\n .description(\"Execute Cloudflare Managed Ruleset on my zone-level phase entry point ruleset\")\n .enabled(true)\n .expression(\"true\")\n .build())\n .zoneId(\"cb029e245cfdd66dc8d2e570d5dd3322\")\n .build());\n\n var zoneLevelManagedWafWithCategoryBasedOverrides = new Ruleset(\"zoneLevelManagedWafWithCategoryBasedOverrides\", RulesetArgs.builder() \n .description(\"managed WAF with tag-based overrides ruleset description\")\n .kind(\"zone\")\n .name(\"managed WAF with tag-based overrides\")\n .phase(\"http_request_firewall_managed\")\n .rules(RulesetRule.builder()\n .action(\"execute\")\n .actionParameters(RulesetRuleActionParameters.builder()\n .id(\"efb7b8c949ac4650a09736fc376e9aee\")\n .overrides(RulesetRuleActionParametersOverrides.builder()\n .categories( \n RulesetRuleActionParametersOverridesCategory.builder()\n .action(\"block\")\n .category(\"wordpress\")\n .enabled(true)\n .build(),\n RulesetRuleActionParametersOverridesCategory.builder()\n .action(\"block\")\n .category(\"joomla\")\n .enabled(true)\n .build())\n .build())\n .build())\n .description(\"overrides to only enable wordpress rules to block\")\n .enabled(false)\n .expression(\"true\")\n .build())\n .zoneId(\"cb029e245cfdd66dc8d2e570d5dd3322\")\n .build());\n\n var transformUriRulePath = new Ruleset(\"transformUriRulePath\", RulesetArgs.builder() \n .description(\"change the URI path to a new static path\")\n .kind(\"zone\")\n .name(\"transform rule for URI path\")\n .phase(\"http_request_transform\")\n .rules(RulesetRule.builder()\n .action(\"rewrite\")\n .actionParameters(RulesetRuleActionParameters.builder()\n .uri(RulesetRuleActionParametersUri.builder()\n .path(RulesetRuleActionParametersUriPath.builder()\n .value(\"/my-new-route\")\n .build())\n .build())\n .build())\n .description(\"example URI path transform rule\")\n .enabled(true)\n .expression(\"(http.host eq \\\"example.com\\\" and http.request.uri.path eq \\\"/old-path\\\")\")\n .build())\n .zoneId(\"cb029e245cfdd66dc8d2e570d5dd3322\")\n .build());\n\n var transformUriRuleQuery = new Ruleset(\"transformUriRuleQuery\", RulesetArgs.builder() \n .description(\"change the URI query to a new static query\")\n .kind(\"zone\")\n .name(\"transform rule for URI query parameter\")\n .phase(\"http_request_transform\")\n .rules(RulesetRule.builder()\n .action(\"rewrite\")\n .actionParameters(RulesetRuleActionParameters.builder()\n .uri(RulesetRuleActionParametersUri.builder()\n .query(RulesetRuleActionParametersUriQuery.builder()\n .value(\"old=new_again\")\n .build())\n .build())\n .build())\n .description(\"URI transformation query example\")\n .enabled(true)\n .expression(\"true\")\n .build())\n .zoneId(\"cb029e245cfdd66dc8d2e570d5dd3322\")\n .build());\n\n var transformUriHttpHeaders = new Ruleset(\"transformUriHttpHeaders\", RulesetArgs.builder() \n .description(\"modify HTTP headers before reaching origin\")\n .kind(\"zone\")\n .name(\"transform rule for HTTP headers\")\n .phase(\"http_request_late_transform\")\n .rules(RulesetRule.builder()\n .action(\"rewrite\")\n .actionParameters(RulesetRuleActionParameters.builder()\n .headers( \n RulesetRuleActionParametersHeader.builder()\n .name(\"example-http-header-1\")\n .operation(\"set\")\n .value(\"my-http-header-value-1\")\n .build(),\n RulesetRuleActionParametersHeader.builder()\n .expression(\"cf.zone.name\")\n .name(\"example-http-header-2\")\n .operation(\"set\")\n .build(),\n RulesetRuleActionParametersHeader.builder()\n .name(\"example-http-header-3-to-remove\")\n .operation(\"remove\")\n .build())\n .build())\n .description(\"example request header transform rule\")\n .enabled(false)\n .expression(\"true\")\n .build())\n .zoneId(\"cb029e245cfdd66dc8d2e570d5dd3322\")\n .build());\n\n var rateLimitingExample = new Ruleset(\"rateLimitingExample\", RulesetArgs.builder() \n .description(\"apply HTTP rate limiting for a route\")\n .kind(\"zone\")\n .name(\"restrict API requests count\")\n .phase(\"http_ratelimit\")\n .rules(RulesetRule.builder()\n .action(\"block\")\n .description(\"rate limit for API\")\n .enabled(true)\n .expression(\"(http.request.uri.path matches \\\"^/api/\\\")\")\n .ratelimit(RulesetRuleRatelimit.builder()\n .characteristics( \n \"cf.colo.id\",\n \"ip.src\")\n .mitigationTimeout(600)\n .period(60)\n .requestsPerPeriod(100)\n .build())\n .build())\n .zoneId(\"cb029e245cfdd66dc8d2e570d5dd3322\")\n .build());\n\n var httpOriginExample = new Ruleset(\"httpOriginExample\", RulesetArgs.builder() \n .description(\"Change origin for a route\")\n .kind(\"zone\")\n .name(\"Change to some origin\")\n .phase(\"http_request_origin\")\n .rules(RulesetRule.builder()\n .action(\"route\")\n .actionParameters(RulesetRuleActionParameters.builder()\n .hostHeader(\"some.host\")\n .origin(RulesetRuleActionParametersOrigin.builder()\n .host(\"some.host\")\n .port(80)\n .build())\n .build())\n .description(\"change origin to some.host\")\n .enabled(true)\n .expression(\"(http.request.uri.path matches \\\"^/api/\\\")\")\n .build())\n .zoneId(\"cb029e245cfdd66dc8d2e570d5dd3322\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n magicTransitExample:\n type: cloudflare:Ruleset\n properties:\n accountId: d41d8cd98f00b204e9800998ecf8427e\n description: example magic transit ruleset description\n kind: root\n name: account magic transit\n phase: magic_transit\n rules:\n - action: allow\n description: Allow TCP Ephemeral Ports\n expression: tcp.dstport in { 32768..65535 }\n zoneLevelManagedWaf:\n type: cloudflare:Ruleset\n properties:\n description: managed WAF ruleset description\n kind: zone\n name: managed WAF\n phase: http_request_firewall_managed\n rules:\n - action: execute\n actionParameters:\n id: efb7b8c949ac4650a09736fc376e9aee\n description: Execute Cloudflare Managed Ruleset on my zone-level phase entry point ruleset\n enabled: true\n expression: true\n zoneId: cb029e245cfdd66dc8d2e570d5dd3322\n zoneLevelManagedWafWithCategoryBasedOverrides:\n type: cloudflare:Ruleset\n properties:\n description: managed WAF with tag-based overrides ruleset description\n kind: zone\n name: managed WAF with tag-based overrides\n phase: http_request_firewall_managed\n rules:\n - action: execute\n actionParameters:\n id: efb7b8c949ac4650a09736fc376e9aee\n overrides:\n categories:\n - action: block\n category: wordpress\n enabled: true\n - action: block\n category: joomla\n enabled: true\n description: overrides to only enable wordpress rules to block\n enabled: false\n expression: true\n zoneId: cb029e245cfdd66dc8d2e570d5dd3322\n transformUriRulePath:\n type: cloudflare:Ruleset\n properties:\n description: change the URI path to a new static path\n kind: zone\n name: transform rule for URI path\n phase: http_request_transform\n rules:\n - action: rewrite\n actionParameters:\n uri:\n path:\n value: /my-new-route\n description: example URI path transform rule\n enabled: true\n expression: (http.host eq \"example.com\" and http.request.uri.path eq \"/old-path\")\n zoneId: cb029e245cfdd66dc8d2e570d5dd3322\n transformUriRuleQuery:\n type: cloudflare:Ruleset\n properties:\n description: change the URI query to a new static query\n kind: zone\n name: transform rule for URI query parameter\n phase: http_request_transform\n rules:\n - action: rewrite\n actionParameters:\n uri:\n query:\n value: old=new_again\n description: URI transformation query example\n enabled: true\n expression: true\n zoneId: cb029e245cfdd66dc8d2e570d5dd3322\n transformUriHttpHeaders:\n type: cloudflare:Ruleset\n properties:\n description: modify HTTP headers before reaching origin\n kind: zone\n name: transform rule for HTTP headers\n phase: http_request_late_transform\n rules:\n - action: rewrite\n actionParameters:\n headers:\n - name: example-http-header-1\n operation: set\n value: my-http-header-value-1\n - expression: cf.zone.name\n name: example-http-header-2\n operation: set\n - name: example-http-header-3-to-remove\n operation: remove\n description: example request header transform rule\n enabled: false\n expression: true\n zoneId: cb029e245cfdd66dc8d2e570d5dd3322\n rateLimitingExample:\n type: cloudflare:Ruleset\n properties:\n description: apply HTTP rate limiting for a route\n kind: zone\n name: restrict API requests count\n phase: http_ratelimit\n rules:\n - action: block\n description: rate limit for API\n enabled: true\n expression: (http.request.uri.path matches \"^/api/\")\n ratelimit:\n characteristics:\n - cf.colo.id\n - ip.src\n mitigationTimeout: 600\n period: 60\n requestsPerPeriod: 100\n zoneId: cb029e245cfdd66dc8d2e570d5dd3322\n httpOriginExample:\n type: cloudflare:Ruleset\n properties:\n description: Change origin for a route\n kind: zone\n name: Change to some origin\n phase: http_request_origin\n rules:\n - action: route\n actionParameters:\n hostHeader: some.host\n origin:\n host: some.host\n port: 80\n description: change origin to some.host\n enabled: true\n expression: (http.request.uri.path matches \"^/api/\")\n zoneId: cb029e245cfdd66dc8d2e570d5dd3322\n```\n{{% /example %}}\n{{% /examples %}}\n\n## Import\n\nCurrently, you cannot import rulesets. ", + "description": "{{% examples %}}\n## Example Usage\n{{% example %}}\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as cloudflare from \"@pulumi/cloudflare\";\n\n// Magic Transit\nconst magicTransitExample = new cloudflare.Ruleset(\"magic_transit_example\", {\n accountId: \"d41d8cd98f00b204e9800998ecf8427e\",\n description: \"example magic transit ruleset description\",\n kind: \"root\",\n name: \"account magic transit\",\n phase: \"magic_transit\",\n rules: [{\n action: \"allow\",\n description: \"Allow TCP Ephemeral Ports\",\n expression: \"tcp.dstport in { 32768..65535 }\",\n }],\n});\n// Zone-level WAF Managed Ruleset\nconst zoneLevelManagedWaf = new cloudflare.Ruleset(\"zone_level_managed_waf\", {\n description: \"managed WAF ruleset description\",\n kind: \"zone\",\n name: \"managed WAF\",\n phase: \"http_request_firewall_managed\",\n rules: [{\n action: \"execute\",\n actionParameters: {\n id: \"efb7b8c949ac4650a09736fc376e9aee\",\n },\n description: \"Execute Cloudflare Managed Ruleset on my zone-level phase entry point ruleset\",\n enabled: true,\n expression: \"true\",\n }],\n zoneId: \"cb029e245cfdd66dc8d2e570d5dd3322\",\n});\n// Zone-level WAF with tag-based overrides\nconst zoneLevelManagedWafWithCategoryBasedOverrides = new cloudflare.Ruleset(\"zone_level_managed_waf_with_category_based_overrides\", {\n description: \"managed WAF with tag-based overrides ruleset description\",\n kind: \"zone\",\n name: \"managed WAF with tag-based overrides\",\n phase: \"http_request_firewall_managed\",\n rules: [{\n action: \"execute\",\n actionParameters: {\n id: \"efb7b8c949ac4650a09736fc376e9aee\",\n overrides: {\n categories: [\n {\n action: \"block\",\n category: \"wordpress\",\n enabled: true,\n },\n {\n action: \"block\",\n category: \"joomla\",\n enabled: true,\n },\n ],\n },\n },\n description: \"overrides to only enable wordpress rules to block\",\n enabled: false,\n expression: \"true\",\n }],\n zoneId: \"cb029e245cfdd66dc8d2e570d5dd3322\",\n});\n// Rewrite the URI path component to a static path\nconst transformUriRulePath = new cloudflare.Ruleset(\"transform_uri_rule_path\", {\n description: \"change the URI path to a new static path\",\n kind: \"zone\",\n name: \"transform rule for URI path\",\n phase: \"http_request_transform\",\n rules: [{\n action: \"rewrite\",\n actionParameters: {\n uri: {\n path: {\n value: \"/my-new-route\",\n },\n },\n },\n description: \"example URI path transform rule\",\n enabled: true,\n expression: \"(http.host eq \\\"example.com\\\" and http.request.uri.path eq \\\"/old-path\\\")\",\n }],\n zoneId: \"cb029e245cfdd66dc8d2e570d5dd3322\",\n});\n// Rewrite the URI query component to a static query\nconst transformUriRuleQuery = new cloudflare.Ruleset(\"transform_uri_rule_query\", {\n description: \"change the URI query to a new static query\",\n kind: \"zone\",\n name: \"transform rule for URI query parameter\",\n phase: \"http_request_transform\",\n rules: [{\n action: \"rewrite\",\n actionParameters: {\n uri: {\n query: {\n value: \"old=new_again\",\n },\n },\n },\n description: \"URI transformation query example\",\n enabled: true,\n expression: \"true\",\n }],\n zoneId: \"cb029e245cfdd66dc8d2e570d5dd3322\",\n});\n// Rewrite HTTP headers to a modified values\nconst transformUriHttpHeaders = new cloudflare.Ruleset(\"transform_uri_http_headers\", {\n description: \"modify HTTP headers before reaching origin\",\n kind: \"zone\",\n name: \"transform rule for HTTP headers\",\n phase: \"http_request_late_transform\",\n rules: [{\n action: \"rewrite\",\n actionParameters: {\n headers: [\n {\n name: \"example-http-header-1\",\n operation: \"set\",\n value: \"my-http-header-value-1\",\n },\n {\n expression: \"cf.zone.name\",\n name: \"example-http-header-2\",\n operation: \"set\",\n },\n {\n name: \"example-http-header-3-to-remove\",\n operation: \"remove\",\n },\n ],\n },\n description: \"example request header transform rule\",\n enabled: false,\n expression: \"true\",\n }],\n zoneId: \"cb029e245cfdd66dc8d2e570d5dd3322\",\n});\n// HTTP rate limit for an API route\nconst rateLimitingExample = new cloudflare.Ruleset(\"rate_limiting_example\", {\n description: \"apply HTTP rate limiting for a route\",\n kind: \"zone\",\n name: \"restrict API requests count\",\n phase: \"http_ratelimit\",\n rules: [{\n action: \"block\",\n description: \"rate limit for API\",\n enabled: true,\n expression: \"(http.request.uri.path matches \\\"^/api/\\\")\",\n ratelimit: {\n characteristics: [\n \"cf.colo.id\",\n \"ip.src\",\n ],\n mitigationTimeout: 600,\n period: 60,\n requestsPerPeriod: 100,\n },\n }],\n zoneId: \"cb029e245cfdd66dc8d2e570d5dd3322\",\n});\n// Change origin for an API route\nconst httpOriginExample = new cloudflare.Ruleset(\"http_origin_example\", {\n description: \"Change origin for a route\",\n kind: \"zone\",\n name: \"Change to some origin\",\n phase: \"http_request_origin\",\n rules: [{\n action: \"route\",\n actionParameters: {\n hostHeader: \"some.host\",\n origin: {\n host: \"some.host\",\n port: 80,\n },\n },\n description: \"change origin to some.host\",\n enabled: true,\n expression: \"(http.request.uri.path matches \\\"^/api/\\\")\",\n }],\n zoneId: \"cb029e245cfdd66dc8d2e570d5dd3322\",\n});\n// custom fields logging\nconst customFieldsLoggingExample = new cloudflare.Ruleset(\"custom_fields_logging_example\", {\n description: \"add custom fields to logging\",\n kind: \"zone\",\n name: \"log custom fields\",\n phase: \"http_log_custom_fields\",\n rules: [{\n action: \"log_custom_field\",\n actionParameters: {\n cookieFields: [\n \"__ga\",\n \"accountNumber\",\n \"__cfruid\",\n ],\n requestFields: [\n \"content-type\",\n \"x-forwarded-for\",\n \"host\",\n ],\n responseFields: [\n \"server\",\n \"content-type\",\n \"allow\",\n ],\n },\n description: \"log custom fields rule\",\n enabled: true,\n expression: \"true\",\n }],\n zoneId: \"cb029e245cfdd66dc8d2e570d5dd3322\",\n});\n```\n```python\nimport pulumi\nimport pulumi_cloudflare as cloudflare\n\n# Magic Transit\nmagic_transit_example = cloudflare.Ruleset(\"magicTransitExample\",\n account_id=\"d41d8cd98f00b204e9800998ecf8427e\",\n description=\"example magic transit ruleset description\",\n kind=\"root\",\n name=\"account magic transit\",\n phase=\"magic_transit\",\n rules=[cloudflare.RulesetRuleArgs(\n action=\"allow\",\n description=\"Allow TCP Ephemeral Ports\",\n expression=\"tcp.dstport in { 32768..65535 }\",\n )])\n# Zone-level WAF Managed Ruleset\nzone_level_managed_waf = cloudflare.Ruleset(\"zoneLevelManagedWaf\",\n description=\"managed WAF ruleset description\",\n kind=\"zone\",\n name=\"managed WAF\",\n phase=\"http_request_firewall_managed\",\n rules=[cloudflare.RulesetRuleArgs(\n action=\"execute\",\n action_parameters=cloudflare.RulesetRuleActionParametersArgs(\n id=\"efb7b8c949ac4650a09736fc376e9aee\",\n ),\n description=\"Execute Cloudflare Managed Ruleset on my zone-level phase entry point ruleset\",\n enabled=True,\n expression=\"true\",\n )],\n zone_id=\"cb029e245cfdd66dc8d2e570d5dd3322\")\n# Zone-level WAF with tag-based overrides\nzone_level_managed_waf_with_category_based_overrides = cloudflare.Ruleset(\"zoneLevelManagedWafWithCategoryBasedOverrides\",\n description=\"managed WAF with tag-based overrides ruleset description\",\n kind=\"zone\",\n name=\"managed WAF with tag-based overrides\",\n phase=\"http_request_firewall_managed\",\n rules=[cloudflare.RulesetRuleArgs(\n action=\"execute\",\n action_parameters=cloudflare.RulesetRuleActionParametersArgs(\n id=\"efb7b8c949ac4650a09736fc376e9aee\",\n overrides=cloudflare.RulesetRuleActionParametersOverridesArgs(\n categories=[\n cloudflare.RulesetRuleActionParametersOverridesCategoryArgs(\n action=\"block\",\n category=\"wordpress\",\n enabled=True,\n ),\n cloudflare.RulesetRuleActionParametersOverridesCategoryArgs(\n action=\"block\",\n category=\"joomla\",\n enabled=True,\n ),\n ],\n ),\n ),\n description=\"overrides to only enable wordpress rules to block\",\n enabled=False,\n expression=\"true\",\n )],\n zone_id=\"cb029e245cfdd66dc8d2e570d5dd3322\")\n# Rewrite the URI path component to a static path\ntransform_uri_rule_path = cloudflare.Ruleset(\"transformUriRulePath\",\n description=\"change the URI path to a new static path\",\n kind=\"zone\",\n name=\"transform rule for URI path\",\n phase=\"http_request_transform\",\n rules=[cloudflare.RulesetRuleArgs(\n action=\"rewrite\",\n action_parameters=cloudflare.RulesetRuleActionParametersArgs(\n uri=cloudflare.RulesetRuleActionParametersUriArgs(\n path=cloudflare.RulesetRuleActionParametersUriPathArgs(\n value=\"/my-new-route\",\n ),\n ),\n ),\n description=\"example URI path transform rule\",\n enabled=True,\n expression=\"(http.host eq \\\"example.com\\\" and http.request.uri.path eq \\\"/old-path\\\")\",\n )],\n zone_id=\"cb029e245cfdd66dc8d2e570d5dd3322\")\n# Rewrite the URI query component to a static query\ntransform_uri_rule_query = cloudflare.Ruleset(\"transformUriRuleQuery\",\n description=\"change the URI query to a new static query\",\n kind=\"zone\",\n name=\"transform rule for URI query parameter\",\n phase=\"http_request_transform\",\n rules=[cloudflare.RulesetRuleArgs(\n action=\"rewrite\",\n action_parameters=cloudflare.RulesetRuleActionParametersArgs(\n uri=cloudflare.RulesetRuleActionParametersUriArgs(\n query=cloudflare.RulesetRuleActionParametersUriQueryArgs(\n value=\"old=new_again\",\n ),\n ),\n ),\n description=\"URI transformation query example\",\n enabled=True,\n expression=\"true\",\n )],\n zone_id=\"cb029e245cfdd66dc8d2e570d5dd3322\")\n# Rewrite HTTP headers to a modified values\ntransform_uri_http_headers = cloudflare.Ruleset(\"transformUriHttpHeaders\",\n description=\"modify HTTP headers before reaching origin\",\n kind=\"zone\",\n name=\"transform rule for HTTP headers\",\n phase=\"http_request_late_transform\",\n rules=[cloudflare.RulesetRuleArgs(\n action=\"rewrite\",\n action_parameters=cloudflare.RulesetRuleActionParametersArgs(\n headers=[\n cloudflare.RulesetRuleActionParametersHeaderArgs(\n name=\"example-http-header-1\",\n operation=\"set\",\n value=\"my-http-header-value-1\",\n ),\n cloudflare.RulesetRuleActionParametersHeaderArgs(\n expression=\"cf.zone.name\",\n name=\"example-http-header-2\",\n operation=\"set\",\n ),\n cloudflare.RulesetRuleActionParametersHeaderArgs(\n name=\"example-http-header-3-to-remove\",\n operation=\"remove\",\n ),\n ],\n ),\n description=\"example request header transform rule\",\n enabled=False,\n expression=\"true\",\n )],\n zone_id=\"cb029e245cfdd66dc8d2e570d5dd3322\")\n# HTTP rate limit for an API route\nrate_limiting_example = cloudflare.Ruleset(\"rateLimitingExample\",\n description=\"apply HTTP rate limiting for a route\",\n kind=\"zone\",\n name=\"restrict API requests count\",\n phase=\"http_ratelimit\",\n rules=[cloudflare.RulesetRuleArgs(\n action=\"block\",\n description=\"rate limit for API\",\n enabled=True,\n expression=\"(http.request.uri.path matches \\\"^/api/\\\")\",\n ratelimit=cloudflare.RulesetRuleRatelimitArgs(\n characteristics=[\n \"cf.colo.id\",\n \"ip.src\",\n ],\n mitigation_timeout=600,\n period=60,\n requests_per_period=100,\n ),\n )],\n zone_id=\"cb029e245cfdd66dc8d2e570d5dd3322\")\n# Change origin for an API route\nhttp_origin_example = cloudflare.Ruleset(\"httpOriginExample\",\n description=\"Change origin for a route\",\n kind=\"zone\",\n name=\"Change to some origin\",\n phase=\"http_request_origin\",\n rules=[cloudflare.RulesetRuleArgs(\n action=\"route\",\n action_parameters=cloudflare.RulesetRuleActionParametersArgs(\n host_header=\"some.host\",\n origin=cloudflare.RulesetRuleActionParametersOriginArgs(\n host=\"some.host\",\n port=80,\n ),\n ),\n description=\"change origin to some.host\",\n enabled=True,\n expression=\"(http.request.uri.path matches \\\"^/api/\\\")\",\n )],\n zone_id=\"cb029e245cfdd66dc8d2e570d5dd3322\")\n# custom fields logging\ncustom_fields_logging_example = cloudflare.Ruleset(\"customFieldsLoggingExample\",\n description=\"add custom fields to logging\",\n kind=\"zone\",\n name=\"log custom fields\",\n phase=\"http_log_custom_fields\",\n rules=[cloudflare.RulesetRuleArgs(\n action=\"log_custom_field\",\n action_parameters=cloudflare.RulesetRuleActionParametersArgs(\n cookie_fields=[\n \"__ga\",\n \"accountNumber\",\n \"__cfruid\",\n ],\n request_fields=[\n \"content-type\",\n \"x-forwarded-for\",\n \"host\",\n ],\n response_fields=[\n \"server\",\n \"content-type\",\n \"allow\",\n ],\n ),\n description=\"log custom fields rule\",\n enabled=True,\n expression=\"true\",\n )],\n zone_id=\"cb029e245cfdd66dc8d2e570d5dd3322\")\n```\n```csharp\nusing Pulumi;\nusing Cloudflare = Pulumi.Cloudflare;\n\nclass MyStack : Stack\n{\n public MyStack()\n {\n // Magic Transit\n var magicTransitExample = new Cloudflare.Ruleset(\"magicTransitExample\", new Cloudflare.RulesetArgs\n {\n AccountId = \"d41d8cd98f00b204e9800998ecf8427e\",\n Description = \"example magic transit ruleset description\",\n Kind = \"root\",\n Name = \"account magic transit\",\n Phase = \"magic_transit\",\n Rules = \n {\n new Cloudflare.Inputs.RulesetRuleArgs\n {\n Action = \"allow\",\n Description = \"Allow TCP Ephemeral Ports\",\n Expression = \"tcp.dstport in { 32768..65535 }\",\n },\n },\n });\n // Zone-level WAF Managed Ruleset\n var zoneLevelManagedWaf = new Cloudflare.Ruleset(\"zoneLevelManagedWaf\", new Cloudflare.RulesetArgs\n {\n Description = \"managed WAF ruleset description\",\n Kind = \"zone\",\n Name = \"managed WAF\",\n Phase = \"http_request_firewall_managed\",\n Rules = \n {\n new Cloudflare.Inputs.RulesetRuleArgs\n {\n Action = \"execute\",\n ActionParameters = new Cloudflare.Inputs.RulesetRuleActionParametersArgs\n {\n Id = \"efb7b8c949ac4650a09736fc376e9aee\",\n },\n Description = \"Execute Cloudflare Managed Ruleset on my zone-level phase entry point ruleset\",\n Enabled = true,\n Expression = \"true\",\n },\n },\n ZoneId = \"cb029e245cfdd66dc8d2e570d5dd3322\",\n });\n // Zone-level WAF with tag-based overrides\n var zoneLevelManagedWafWithCategoryBasedOverrides = new Cloudflare.Ruleset(\"zoneLevelManagedWafWithCategoryBasedOverrides\", new Cloudflare.RulesetArgs\n {\n Description = \"managed WAF with tag-based overrides ruleset description\",\n Kind = \"zone\",\n Name = \"managed WAF with tag-based overrides\",\n Phase = \"http_request_firewall_managed\",\n Rules = \n {\n new Cloudflare.Inputs.RulesetRuleArgs\n {\n Action = \"execute\",\n ActionParameters = new Cloudflare.Inputs.RulesetRuleActionParametersArgs\n {\n Id = \"efb7b8c949ac4650a09736fc376e9aee\",\n Overrides = new Cloudflare.Inputs.RulesetRuleActionParametersOverridesArgs\n {\n Categories = \n {\n new Cloudflare.Inputs.RulesetRuleActionParametersOverridesCategoryArgs\n {\n Action = \"block\",\n Category = \"wordpress\",\n Enabled = true,\n },\n new Cloudflare.Inputs.RulesetRuleActionParametersOverridesCategoryArgs\n {\n Action = \"block\",\n Category = \"joomla\",\n Enabled = true,\n },\n },\n },\n },\n Description = \"overrides to only enable wordpress rules to block\",\n Enabled = false,\n Expression = \"true\",\n },\n },\n ZoneId = \"cb029e245cfdd66dc8d2e570d5dd3322\",\n });\n // Rewrite the URI path component to a static path\n var transformUriRulePath = new Cloudflare.Ruleset(\"transformUriRulePath\", new Cloudflare.RulesetArgs\n {\n Description = \"change the URI path to a new static path\",\n Kind = \"zone\",\n Name = \"transform rule for URI path\",\n Phase = \"http_request_transform\",\n Rules = \n {\n new Cloudflare.Inputs.RulesetRuleArgs\n {\n Action = \"rewrite\",\n ActionParameters = new Cloudflare.Inputs.RulesetRuleActionParametersArgs\n {\n Uri = new Cloudflare.Inputs.RulesetRuleActionParametersUriArgs\n {\n Path = new Cloudflare.Inputs.RulesetRuleActionParametersUriPathArgs\n {\n Value = \"/my-new-route\",\n },\n },\n },\n Description = \"example URI path transform rule\",\n Enabled = true,\n Expression = \"(http.host eq \\\"example.com\\\" and http.request.uri.path eq \\\"/old-path\\\")\",\n },\n },\n ZoneId = \"cb029e245cfdd66dc8d2e570d5dd3322\",\n });\n // Rewrite the URI query component to a static query\n var transformUriRuleQuery = new Cloudflare.Ruleset(\"transformUriRuleQuery\", new Cloudflare.RulesetArgs\n {\n Description = \"change the URI query to a new static query\",\n Kind = \"zone\",\n Name = \"transform rule for URI query parameter\",\n Phase = \"http_request_transform\",\n Rules = \n {\n new Cloudflare.Inputs.RulesetRuleArgs\n {\n Action = \"rewrite\",\n ActionParameters = new Cloudflare.Inputs.RulesetRuleActionParametersArgs\n {\n Uri = new Cloudflare.Inputs.RulesetRuleActionParametersUriArgs\n {\n Query = new Cloudflare.Inputs.RulesetRuleActionParametersUriQueryArgs\n {\n Value = \"old=new_again\",\n },\n },\n },\n Description = \"URI transformation query example\",\n Enabled = true,\n Expression = \"true\",\n },\n },\n ZoneId = \"cb029e245cfdd66dc8d2e570d5dd3322\",\n });\n // Rewrite HTTP headers to a modified values\n var transformUriHttpHeaders = new Cloudflare.Ruleset(\"transformUriHttpHeaders\", new Cloudflare.RulesetArgs\n {\n Description = \"modify HTTP headers before reaching origin\",\n Kind = \"zone\",\n Name = \"transform rule for HTTP headers\",\n Phase = \"http_request_late_transform\",\n Rules = \n {\n new Cloudflare.Inputs.RulesetRuleArgs\n {\n Action = \"rewrite\",\n ActionParameters = new Cloudflare.Inputs.RulesetRuleActionParametersArgs\n {\n Headers = \n {\n new Cloudflare.Inputs.RulesetRuleActionParametersHeaderArgs\n {\n Name = \"example-http-header-1\",\n Operation = \"set\",\n Value = \"my-http-header-value-1\",\n },\n new Cloudflare.Inputs.RulesetRuleActionParametersHeaderArgs\n {\n Expression = \"cf.zone.name\",\n Name = \"example-http-header-2\",\n Operation = \"set\",\n },\n new Cloudflare.Inputs.RulesetRuleActionParametersHeaderArgs\n {\n Name = \"example-http-header-3-to-remove\",\n Operation = \"remove\",\n },\n },\n },\n Description = \"example request header transform rule\",\n Enabled = false,\n Expression = \"true\",\n },\n },\n ZoneId = \"cb029e245cfdd66dc8d2e570d5dd3322\",\n });\n // HTTP rate limit for an API route\n var rateLimitingExample = new Cloudflare.Ruleset(\"rateLimitingExample\", new Cloudflare.RulesetArgs\n {\n Description = \"apply HTTP rate limiting for a route\",\n Kind = \"zone\",\n Name = \"restrict API requests count\",\n Phase = \"http_ratelimit\",\n Rules = \n {\n new Cloudflare.Inputs.RulesetRuleArgs\n {\n Action = \"block\",\n Description = \"rate limit for API\",\n Enabled = true,\n Expression = \"(http.request.uri.path matches \\\"^/api/\\\")\",\n Ratelimit = new Cloudflare.Inputs.RulesetRuleRatelimitArgs\n {\n Characteristics = \n {\n \"cf.colo.id\",\n \"ip.src\",\n },\n MitigationTimeout = 600,\n Period = 60,\n RequestsPerPeriod = 100,\n },\n },\n },\n ZoneId = \"cb029e245cfdd66dc8d2e570d5dd3322\",\n });\n // Change origin for an API route\n var httpOriginExample = new Cloudflare.Ruleset(\"httpOriginExample\", new Cloudflare.RulesetArgs\n {\n Description = \"Change origin for a route\",\n Kind = \"zone\",\n Name = \"Change to some origin\",\n Phase = \"http_request_origin\",\n Rules = \n {\n new Cloudflare.Inputs.RulesetRuleArgs\n {\n Action = \"route\",\n ActionParameters = new Cloudflare.Inputs.RulesetRuleActionParametersArgs\n {\n HostHeader = \"some.host\",\n Origin = new Cloudflare.Inputs.RulesetRuleActionParametersOriginArgs\n {\n Host = \"some.host\",\n Port = 80,\n },\n },\n Description = \"change origin to some.host\",\n Enabled = true,\n Expression = \"(http.request.uri.path matches \\\"^/api/\\\")\",\n },\n },\n ZoneId = \"cb029e245cfdd66dc8d2e570d5dd3322\",\n });\n // custom fields logging\n var customFieldsLoggingExample = new Cloudflare.Ruleset(\"customFieldsLoggingExample\", new Cloudflare.RulesetArgs\n {\n Description = \"add custom fields to logging\",\n Kind = \"zone\",\n Name = \"log custom fields\",\n Phase = \"http_log_custom_fields\",\n Rules = \n {\n new Cloudflare.Inputs.RulesetRuleArgs\n {\n Action = \"log_custom_field\",\n ActionParameters = new Cloudflare.Inputs.RulesetRuleActionParametersArgs\n {\n CookieFields = \n {\n \"__ga\",\n \"accountNumber\",\n \"__cfruid\",\n },\n RequestFields = \n {\n \"content-type\",\n \"x-forwarded-for\",\n \"host\",\n },\n ResponseFields = \n {\n \"server\",\n \"content-type\",\n \"allow\",\n },\n },\n Description = \"log custom fields rule\",\n Enabled = true,\n Expression = \"true\",\n },\n },\n ZoneId = \"cb029e245cfdd66dc8d2e570d5dd3322\",\n });\n }\n\n}\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-cloudflare/sdk/v4/go/cloudflare\"\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 := cloudflare.NewRuleset(ctx, \"magicTransitExample\", \u0026cloudflare.RulesetArgs{\n\t\t\tAccountId: pulumi.String(\"d41d8cd98f00b204e9800998ecf8427e\"),\n\t\t\tDescription: pulumi.String(\"example magic transit ruleset description\"),\n\t\t\tKind: pulumi.String(\"root\"),\n\t\t\tName: pulumi.String(\"account magic transit\"),\n\t\t\tPhase: pulumi.String(\"magic_transit\"),\n\t\t\tRules: RulesetRuleArray{\n\t\t\t\t\u0026RulesetRuleArgs{\n\t\t\t\t\tAction: pulumi.String(\"allow\"),\n\t\t\t\t\tDescription: pulumi.String(\"Allow TCP Ephemeral Ports\"),\n\t\t\t\t\tExpression: pulumi.String(\"tcp.dstport in { 32768..65535 }\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudflare.NewRuleset(ctx, \"zoneLevelManagedWaf\", \u0026cloudflare.RulesetArgs{\n\t\t\tDescription: pulumi.String(\"managed WAF ruleset description\"),\n\t\t\tKind: pulumi.String(\"zone\"),\n\t\t\tName: pulumi.String(\"managed WAF\"),\n\t\t\tPhase: pulumi.String(\"http_request_firewall_managed\"),\n\t\t\tRules: RulesetRuleArray{\n\t\t\t\t\u0026RulesetRuleArgs{\n\t\t\t\t\tAction: pulumi.String(\"execute\"),\n\t\t\t\t\tActionParameters: \u0026RulesetRuleActionParametersArgs{\n\t\t\t\t\t\tId: pulumi.String(\"efb7b8c949ac4650a09736fc376e9aee\"),\n\t\t\t\t\t},\n\t\t\t\t\tDescription: pulumi.String(\"Execute Cloudflare Managed Ruleset on my zone-level phase entry point ruleset\"),\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t\tExpression: pulumi.String(\"true\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tZoneId: pulumi.String(\"cb029e245cfdd66dc8d2e570d5dd3322\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudflare.NewRuleset(ctx, \"zoneLevelManagedWafWithCategoryBasedOverrides\", \u0026cloudflare.RulesetArgs{\n\t\t\tDescription: pulumi.String(\"managed WAF with tag-based overrides ruleset description\"),\n\t\t\tKind: pulumi.String(\"zone\"),\n\t\t\tName: pulumi.String(\"managed WAF with tag-based overrides\"),\n\t\t\tPhase: pulumi.String(\"http_request_firewall_managed\"),\n\t\t\tRules: RulesetRuleArray{\n\t\t\t\t\u0026RulesetRuleArgs{\n\t\t\t\t\tAction: pulumi.String(\"execute\"),\n\t\t\t\t\tActionParameters: \u0026RulesetRuleActionParametersArgs{\n\t\t\t\t\t\tId: pulumi.String(\"efb7b8c949ac4650a09736fc376e9aee\"),\n\t\t\t\t\t\tOverrides: \u0026RulesetRuleActionParametersOverridesArgs{\n\t\t\t\t\t\t\tCategories: RulesetRuleActionParametersOverridesCategoryArray{\n\t\t\t\t\t\t\t\t\u0026RulesetRuleActionParametersOverridesCategoryArgs{\n\t\t\t\t\t\t\t\t\tAction: pulumi.String(\"block\"),\n\t\t\t\t\t\t\t\t\tCategory: pulumi.String(\"wordpress\"),\n\t\t\t\t\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\u0026RulesetRuleActionParametersOverridesCategoryArgs{\n\t\t\t\t\t\t\t\t\tAction: pulumi.String(\"block\"),\n\t\t\t\t\t\t\t\t\tCategory: pulumi.String(\"joomla\"),\n\t\t\t\t\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tDescription: pulumi.String(\"overrides to only enable wordpress rules to block\"),\n\t\t\t\t\tEnabled: pulumi.Bool(false),\n\t\t\t\t\tExpression: pulumi.String(\"true\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tZoneId: pulumi.String(\"cb029e245cfdd66dc8d2e570d5dd3322\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudflare.NewRuleset(ctx, \"transformUriRulePath\", \u0026cloudflare.RulesetArgs{\n\t\t\tDescription: pulumi.String(\"change the URI path to a new static path\"),\n\t\t\tKind: pulumi.String(\"zone\"),\n\t\t\tName: pulumi.String(\"transform rule for URI path\"),\n\t\t\tPhase: pulumi.String(\"http_request_transform\"),\n\t\t\tRules: RulesetRuleArray{\n\t\t\t\t\u0026RulesetRuleArgs{\n\t\t\t\t\tAction: pulumi.String(\"rewrite\"),\n\t\t\t\t\tActionParameters: \u0026RulesetRuleActionParametersArgs{\n\t\t\t\t\t\tUri: \u0026RulesetRuleActionParametersUriArgs{\n\t\t\t\t\t\t\tPath: \u0026RulesetRuleActionParametersUriPathArgs{\n\t\t\t\t\t\t\t\tValue: pulumi.String(\"/my-new-route\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tDescription: pulumi.String(\"example URI path transform rule\"),\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t\tExpression: pulumi.String(\"(http.host eq \\\"example.com\\\" and http.request.uri.path eq \\\"/old-path\\\")\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tZoneId: pulumi.String(\"cb029e245cfdd66dc8d2e570d5dd3322\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudflare.NewRuleset(ctx, \"transformUriRuleQuery\", \u0026cloudflare.RulesetArgs{\n\t\t\tDescription: pulumi.String(\"change the URI query to a new static query\"),\n\t\t\tKind: pulumi.String(\"zone\"),\n\t\t\tName: pulumi.String(\"transform rule for URI query parameter\"),\n\t\t\tPhase: pulumi.String(\"http_request_transform\"),\n\t\t\tRules: RulesetRuleArray{\n\t\t\t\t\u0026RulesetRuleArgs{\n\t\t\t\t\tAction: pulumi.String(\"rewrite\"),\n\t\t\t\t\tActionParameters: \u0026RulesetRuleActionParametersArgs{\n\t\t\t\t\t\tUri: \u0026RulesetRuleActionParametersUriArgs{\n\t\t\t\t\t\t\tQuery: \u0026RulesetRuleActionParametersUriQueryArgs{\n\t\t\t\t\t\t\t\tValue: pulumi.String(\"old=new_again\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tDescription: pulumi.String(\"URI transformation query example\"),\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t\tExpression: pulumi.String(\"true\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tZoneId: pulumi.String(\"cb029e245cfdd66dc8d2e570d5dd3322\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudflare.NewRuleset(ctx, \"transformUriHttpHeaders\", \u0026cloudflare.RulesetArgs{\n\t\t\tDescription: pulumi.String(\"modify HTTP headers before reaching origin\"),\n\t\t\tKind: pulumi.String(\"zone\"),\n\t\t\tName: pulumi.String(\"transform rule for HTTP headers\"),\n\t\t\tPhase: pulumi.String(\"http_request_late_transform\"),\n\t\t\tRules: RulesetRuleArray{\n\t\t\t\t\u0026RulesetRuleArgs{\n\t\t\t\t\tAction: pulumi.String(\"rewrite\"),\n\t\t\t\t\tActionParameters: \u0026RulesetRuleActionParametersArgs{\n\t\t\t\t\t\tHeaders: RulesetRuleActionParametersHeaderArray{\n\t\t\t\t\t\t\t\u0026RulesetRuleActionParametersHeaderArgs{\n\t\t\t\t\t\t\t\tName: pulumi.String(\"example-http-header-1\"),\n\t\t\t\t\t\t\t\tOperation: pulumi.String(\"set\"),\n\t\t\t\t\t\t\t\tValue: pulumi.String(\"my-http-header-value-1\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026RulesetRuleActionParametersHeaderArgs{\n\t\t\t\t\t\t\t\tExpression: pulumi.String(\"cf.zone.name\"),\n\t\t\t\t\t\t\t\tName: pulumi.String(\"example-http-header-2\"),\n\t\t\t\t\t\t\t\tOperation: pulumi.String(\"set\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026RulesetRuleActionParametersHeaderArgs{\n\t\t\t\t\t\t\t\tName: pulumi.String(\"example-http-header-3-to-remove\"),\n\t\t\t\t\t\t\t\tOperation: pulumi.String(\"remove\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tDescription: pulumi.String(\"example request header transform rule\"),\n\t\t\t\t\tEnabled: pulumi.Bool(false),\n\t\t\t\t\tExpression: pulumi.String(\"true\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tZoneId: pulumi.String(\"cb029e245cfdd66dc8d2e570d5dd3322\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudflare.NewRuleset(ctx, \"rateLimitingExample\", \u0026cloudflare.RulesetArgs{\n\t\t\tDescription: pulumi.String(\"apply HTTP rate limiting for a route\"),\n\t\t\tKind: pulumi.String(\"zone\"),\n\t\t\tName: pulumi.String(\"restrict API requests count\"),\n\t\t\tPhase: pulumi.String(\"http_ratelimit\"),\n\t\t\tRules: RulesetRuleArray{\n\t\t\t\t\u0026RulesetRuleArgs{\n\t\t\t\t\tAction: pulumi.String(\"block\"),\n\t\t\t\t\tDescription: pulumi.String(\"rate limit for API\"),\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t\tExpression: pulumi.String(\"(http.request.uri.path matches \\\"^/api/\\\")\"),\n\t\t\t\t\tRatelimit: \u0026RulesetRuleRatelimitArgs{\n\t\t\t\t\t\tCharacteristics: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"cf.colo.id\"),\n\t\t\t\t\t\t\tpulumi.String(\"ip.src\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tMitigationTimeout: pulumi.Int(600),\n\t\t\t\t\t\tPeriod: pulumi.Int(60),\n\t\t\t\t\t\tRequestsPerPeriod: pulumi.Int(100),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tZoneId: pulumi.String(\"cb029e245cfdd66dc8d2e570d5dd3322\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudflare.NewRuleset(ctx, \"httpOriginExample\", \u0026cloudflare.RulesetArgs{\n\t\t\tDescription: pulumi.String(\"Change origin for a route\"),\n\t\t\tKind: pulumi.String(\"zone\"),\n\t\t\tName: pulumi.String(\"Change to some origin\"),\n\t\t\tPhase: pulumi.String(\"http_request_origin\"),\n\t\t\tRules: RulesetRuleArray{\n\t\t\t\t\u0026RulesetRuleArgs{\n\t\t\t\t\tAction: pulumi.String(\"route\"),\n\t\t\t\t\tActionParameters: \u0026RulesetRuleActionParametersArgs{\n\t\t\t\t\t\tHostHeader: pulumi.String(\"some.host\"),\n\t\t\t\t\t\tOrigin: \u0026RulesetRuleActionParametersOriginArgs{\n\t\t\t\t\t\t\tHost: pulumi.String(\"some.host\"),\n\t\t\t\t\t\t\tPort: pulumi.Int(80),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tDescription: pulumi.String(\"change origin to some.host\"),\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t\tExpression: pulumi.String(\"(http.request.uri.path matches \\\"^/api/\\\")\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tZoneId: pulumi.String(\"cb029e245cfdd66dc8d2e570d5dd3322\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudflare.NewRuleset(ctx, \"customFieldsLoggingExample\", \u0026cloudflare.RulesetArgs{\n\t\t\tDescription: pulumi.String(\"add custom fields to logging\"),\n\t\t\tKind: pulumi.String(\"zone\"),\n\t\t\tName: pulumi.String(\"log custom fields\"),\n\t\t\tPhase: pulumi.String(\"http_log_custom_fields\"),\n\t\t\tRules: RulesetRuleArray{\n\t\t\t\t\u0026RulesetRuleArgs{\n\t\t\t\t\tAction: pulumi.String(\"log_custom_field\"),\n\t\t\t\t\tActionParameters: \u0026RulesetRuleActionParametersArgs{\n\t\t\t\t\t\tCookieFields: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"__ga\"),\n\t\t\t\t\t\t\tpulumi.String(\"accountNumber\"),\n\t\t\t\t\t\t\tpulumi.String(\"__cfruid\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tRequestFields: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"content-type\"),\n\t\t\t\t\t\t\tpulumi.String(\"x-forwarded-for\"),\n\t\t\t\t\t\t\tpulumi.String(\"host\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tResponseFields: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"server\"),\n\t\t\t\t\t\t\tpulumi.String(\"content-type\"),\n\t\t\t\t\t\t\tpulumi.String(\"allow\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tDescription: pulumi.String(\"log custom fields rule\"),\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t\tExpression: pulumi.String(\"true\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tZoneId: pulumi.String(\"cb029e245cfdd66dc8d2e570d5dd3322\"),\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 java.util.*;\nimport java.io.*;\nimport java.nio.*;\nimport com.pulumi.*;\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 magicTransitExample = new Ruleset(\"magicTransitExample\", RulesetArgs.builder() \n .accountId(\"d41d8cd98f00b204e9800998ecf8427e\")\n .description(\"example magic transit ruleset description\")\n .kind(\"root\")\n .name(\"account magic transit\")\n .phase(\"magic_transit\")\n .rules(RulesetRule.builder()\n .action(\"allow\")\n .description(\"Allow TCP Ephemeral Ports\")\n .expression(\"tcp.dstport in { 32768..65535 }\")\n .build())\n .build());\n\n var zoneLevelManagedWaf = new Ruleset(\"zoneLevelManagedWaf\", RulesetArgs.builder() \n .description(\"managed WAF ruleset description\")\n .kind(\"zone\")\n .name(\"managed WAF\")\n .phase(\"http_request_firewall_managed\")\n .rules(RulesetRule.builder()\n .action(\"execute\")\n .actionParameters(RulesetRuleActionParameters.builder()\n .id(\"efb7b8c949ac4650a09736fc376e9aee\")\n .build())\n .description(\"Execute Cloudflare Managed Ruleset on my zone-level phase entry point ruleset\")\n .enabled(true)\n .expression(\"true\")\n .build())\n .zoneId(\"cb029e245cfdd66dc8d2e570d5dd3322\")\n .build());\n\n var zoneLevelManagedWafWithCategoryBasedOverrides = new Ruleset(\"zoneLevelManagedWafWithCategoryBasedOverrides\", RulesetArgs.builder() \n .description(\"managed WAF with tag-based overrides ruleset description\")\n .kind(\"zone\")\n .name(\"managed WAF with tag-based overrides\")\n .phase(\"http_request_firewall_managed\")\n .rules(RulesetRule.builder()\n .action(\"execute\")\n .actionParameters(RulesetRuleActionParameters.builder()\n .id(\"efb7b8c949ac4650a09736fc376e9aee\")\n .overrides(RulesetRuleActionParametersOverrides.builder()\n .categories( \n RulesetRuleActionParametersOverridesCategory.builder()\n .action(\"block\")\n .category(\"wordpress\")\n .enabled(true)\n .build(),\n RulesetRuleActionParametersOverridesCategory.builder()\n .action(\"block\")\n .category(\"joomla\")\n .enabled(true)\n .build())\n .build())\n .build())\n .description(\"overrides to only enable wordpress rules to block\")\n .enabled(false)\n .expression(\"true\")\n .build())\n .zoneId(\"cb029e245cfdd66dc8d2e570d5dd3322\")\n .build());\n\n var transformUriRulePath = new Ruleset(\"transformUriRulePath\", RulesetArgs.builder() \n .description(\"change the URI path to a new static path\")\n .kind(\"zone\")\n .name(\"transform rule for URI path\")\n .phase(\"http_request_transform\")\n .rules(RulesetRule.builder()\n .action(\"rewrite\")\n .actionParameters(RulesetRuleActionParameters.builder()\n .uri(RulesetRuleActionParametersUri.builder()\n .path(RulesetRuleActionParametersUriPath.builder()\n .value(\"/my-new-route\")\n .build())\n .build())\n .build())\n .description(\"example URI path transform rule\")\n .enabled(true)\n .expression(\"(http.host eq \\\"example.com\\\" and http.request.uri.path eq \\\"/old-path\\\")\")\n .build())\n .zoneId(\"cb029e245cfdd66dc8d2e570d5dd3322\")\n .build());\n\n var transformUriRuleQuery = new Ruleset(\"transformUriRuleQuery\", RulesetArgs.builder() \n .description(\"change the URI query to a new static query\")\n .kind(\"zone\")\n .name(\"transform rule for URI query parameter\")\n .phase(\"http_request_transform\")\n .rules(RulesetRule.builder()\n .action(\"rewrite\")\n .actionParameters(RulesetRuleActionParameters.builder()\n .uri(RulesetRuleActionParametersUri.builder()\n .query(RulesetRuleActionParametersUriQuery.builder()\n .value(\"old=new_again\")\n .build())\n .build())\n .build())\n .description(\"URI transformation query example\")\n .enabled(true)\n .expression(\"true\")\n .build())\n .zoneId(\"cb029e245cfdd66dc8d2e570d5dd3322\")\n .build());\n\n var transformUriHttpHeaders = new Ruleset(\"transformUriHttpHeaders\", RulesetArgs.builder() \n .description(\"modify HTTP headers before reaching origin\")\n .kind(\"zone\")\n .name(\"transform rule for HTTP headers\")\n .phase(\"http_request_late_transform\")\n .rules(RulesetRule.builder()\n .action(\"rewrite\")\n .actionParameters(RulesetRuleActionParameters.builder()\n .headers( \n RulesetRuleActionParametersHeader.builder()\n .name(\"example-http-header-1\")\n .operation(\"set\")\n .value(\"my-http-header-value-1\")\n .build(),\n RulesetRuleActionParametersHeader.builder()\n .expression(\"cf.zone.name\")\n .name(\"example-http-header-2\")\n .operation(\"set\")\n .build(),\n RulesetRuleActionParametersHeader.builder()\n .name(\"example-http-header-3-to-remove\")\n .operation(\"remove\")\n .build())\n .build())\n .description(\"example request header transform rule\")\n .enabled(false)\n .expression(\"true\")\n .build())\n .zoneId(\"cb029e245cfdd66dc8d2e570d5dd3322\")\n .build());\n\n var rateLimitingExample = new Ruleset(\"rateLimitingExample\", RulesetArgs.builder() \n .description(\"apply HTTP rate limiting for a route\")\n .kind(\"zone\")\n .name(\"restrict API requests count\")\n .phase(\"http_ratelimit\")\n .rules(RulesetRule.builder()\n .action(\"block\")\n .description(\"rate limit for API\")\n .enabled(true)\n .expression(\"(http.request.uri.path matches \\\"^/api/\\\")\")\n .ratelimit(RulesetRuleRatelimit.builder()\n .characteristics( \n \"cf.colo.id\",\n \"ip.src\")\n .mitigationTimeout(600)\n .period(60)\n .requestsPerPeriod(100)\n .build())\n .build())\n .zoneId(\"cb029e245cfdd66dc8d2e570d5dd3322\")\n .build());\n\n var httpOriginExample = new Ruleset(\"httpOriginExample\", RulesetArgs.builder() \n .description(\"Change origin for a route\")\n .kind(\"zone\")\n .name(\"Change to some origin\")\n .phase(\"http_request_origin\")\n .rules(RulesetRule.builder()\n .action(\"route\")\n .actionParameters(RulesetRuleActionParameters.builder()\n .hostHeader(\"some.host\")\n .origin(RulesetRuleActionParametersOrigin.builder()\n .host(\"some.host\")\n .port(80)\n .build())\n .build())\n .description(\"change origin to some.host\")\n .enabled(true)\n .expression(\"(http.request.uri.path matches \\\"^/api/\\\")\")\n .build())\n .zoneId(\"cb029e245cfdd66dc8d2e570d5dd3322\")\n .build());\n\n var customFieldsLoggingExample = new Ruleset(\"customFieldsLoggingExample\", RulesetArgs.builder() \n .description(\"add custom fields to logging\")\n .kind(\"zone\")\n .name(\"log custom fields\")\n .phase(\"http_log_custom_fields\")\n .rules(RulesetRule.builder()\n .action(\"log_custom_field\")\n .actionParameters(RulesetRuleActionParameters.builder()\n .cookieFields( \n \"__ga\",\n \"accountNumber\",\n \"__cfruid\")\n .requestFields( \n \"content-type\",\n \"x-forwarded-for\",\n \"host\")\n .responseFields( \n \"server\",\n \"content-type\",\n \"allow\")\n .build())\n .description(\"log custom fields rule\")\n .enabled(true)\n .expression(\"true\")\n .build())\n .zoneId(\"cb029e245cfdd66dc8d2e570d5dd3322\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n magicTransitExample:\n type: cloudflare:Ruleset\n properties:\n accountId: d41d8cd98f00b204e9800998ecf8427e\n description: example magic transit ruleset description\n kind: root\n name: account magic transit\n phase: magic_transit\n rules:\n - action: allow\n description: Allow TCP Ephemeral Ports\n expression: tcp.dstport in { 32768..65535 }\n zoneLevelManagedWaf:\n type: cloudflare:Ruleset\n properties:\n description: managed WAF ruleset description\n kind: zone\n name: managed WAF\n phase: http_request_firewall_managed\n rules:\n - action: execute\n actionParameters:\n id: efb7b8c949ac4650a09736fc376e9aee\n description: Execute Cloudflare Managed Ruleset on my zone-level phase entry point ruleset\n enabled: true\n expression: true\n zoneId: cb029e245cfdd66dc8d2e570d5dd3322\n zoneLevelManagedWafWithCategoryBasedOverrides:\n type: cloudflare:Ruleset\n properties:\n description: managed WAF with tag-based overrides ruleset description\n kind: zone\n name: managed WAF with tag-based overrides\n phase: http_request_firewall_managed\n rules:\n - action: execute\n actionParameters:\n id: efb7b8c949ac4650a09736fc376e9aee\n overrides:\n categories:\n - action: block\n category: wordpress\n enabled: true\n - action: block\n category: joomla\n enabled: true\n description: overrides to only enable wordpress rules to block\n enabled: false\n expression: true\n zoneId: cb029e245cfdd66dc8d2e570d5dd3322\n transformUriRulePath:\n type: cloudflare:Ruleset\n properties:\n description: change the URI path to a new static path\n kind: zone\n name: transform rule for URI path\n phase: http_request_transform\n rules:\n - action: rewrite\n actionParameters:\n uri:\n path:\n value: /my-new-route\n description: example URI path transform rule\n enabled: true\n expression: (http.host eq \"example.com\" and http.request.uri.path eq \"/old-path\")\n zoneId: cb029e245cfdd66dc8d2e570d5dd3322\n transformUriRuleQuery:\n type: cloudflare:Ruleset\n properties:\n description: change the URI query to a new static query\n kind: zone\n name: transform rule for URI query parameter\n phase: http_request_transform\n rules:\n - action: rewrite\n actionParameters:\n uri:\n query:\n value: old=new_again\n description: URI transformation query example\n enabled: true\n expression: true\n zoneId: cb029e245cfdd66dc8d2e570d5dd3322\n transformUriHttpHeaders:\n type: cloudflare:Ruleset\n properties:\n description: modify HTTP headers before reaching origin\n kind: zone\n name: transform rule for HTTP headers\n phase: http_request_late_transform\n rules:\n - action: rewrite\n actionParameters:\n headers:\n - name: example-http-header-1\n operation: set\n value: my-http-header-value-1\n - expression: cf.zone.name\n name: example-http-header-2\n operation: set\n - name: example-http-header-3-to-remove\n operation: remove\n description: example request header transform rule\n enabled: false\n expression: true\n zoneId: cb029e245cfdd66dc8d2e570d5dd3322\n rateLimitingExample:\n type: cloudflare:Ruleset\n properties:\n description: apply HTTP rate limiting for a route\n kind: zone\n name: restrict API requests count\n phase: http_ratelimit\n rules:\n - action: block\n description: rate limit for API\n enabled: true\n expression: (http.request.uri.path matches \"^/api/\")\n ratelimit:\n characteristics:\n - cf.colo.id\n - ip.src\n mitigationTimeout: 600\n period: 60\n requestsPerPeriod: 100\n zoneId: cb029e245cfdd66dc8d2e570d5dd3322\n httpOriginExample:\n type: cloudflare:Ruleset\n properties:\n description: Change origin for a route\n kind: zone\n name: Change to some origin\n phase: http_request_origin\n rules:\n - action: route\n actionParameters:\n hostHeader: some.host\n origin:\n host: some.host\n port: 80\n description: change origin to some.host\n enabled: true\n expression: (http.request.uri.path matches \"^/api/\")\n zoneId: cb029e245cfdd66dc8d2e570d5dd3322\n customFieldsLoggingExample:\n type: cloudflare:Ruleset\n properties:\n description: add custom fields to logging\n kind: zone\n name: log custom fields\n phase: http_log_custom_fields\n rules:\n - action: log_custom_field\n actionParameters:\n cookieFields:\n - __ga\n - accountNumber\n - __cfruid\n requestFields:\n - content-type\n - x-forwarded-for\n - host\n responseFields:\n - server\n - content-type\n - allow\n description: log custom fields rule\n enabled: true\n expression: true\n zoneId: cb029e245cfdd66dc8d2e570d5dd3322\n```\n{{% /example %}}\n{{% /examples %}}\n\n## Import\n\nCurrently, you cannot import rulesets. ", "properties": { "accountId": { "type": "string", @@ -14869,7 +15099,7 @@ } }, "cloudflare:index/tunnelRoute:TunnelRoute": { - "description": "Provides a resource, that manages Cloudflare tunnel routes for Zero Trust. Tunnel\nroutes are used to direct IP traffic through Cloudflare Tunnels.\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as cloudflare from \"@pulumi/cloudflare\";\n\nconst example = new cloudflare.TunnelRoute(\"example\", {\n accountId: \"c4a7362d577a6c3019a474fd6f485821\",\n comment: \"New tunnel route for documentation\",\n network: \"192.0.2.24/32\",\n tunnelId: \"f70ff985-a4ef-4643-bbbc-4a0ed4fc8415\",\n});\n```\n```python\nimport pulumi\nimport pulumi_cloudflare as cloudflare\n\nexample = cloudflare.TunnelRoute(\"example\",\n account_id=\"c4a7362d577a6c3019a474fd6f485821\",\n comment=\"New tunnel route for documentation\",\n network=\"192.0.2.24/32\",\n tunnel_id=\"f70ff985-a4ef-4643-bbbc-4a0ed4fc8415\")\n```\n```csharp\nusing Pulumi;\nusing Cloudflare = Pulumi.Cloudflare;\n\nclass MyStack : Stack\n{\n public MyStack()\n {\n var example = new Cloudflare.TunnelRoute(\"example\", new Cloudflare.TunnelRouteArgs\n {\n AccountId = \"c4a7362d577a6c3019a474fd6f485821\",\n Comment = \"New tunnel route for documentation\",\n Network = \"192.0.2.24/32\",\n TunnelId = \"f70ff985-a4ef-4643-bbbc-4a0ed4fc8415\",\n });\n }\n\n}\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-cloudflare/sdk/v4/go/cloudflare\"\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 := cloudflare.NewTunnelRoute(ctx, \"example\", \u0026cloudflare.TunnelRouteArgs{\n\t\t\tAccountId: pulumi.String(\"c4a7362d577a6c3019a474fd6f485821\"),\n\t\t\tComment: pulumi.String(\"New tunnel route for documentation\"),\n\t\t\tNetwork: pulumi.String(\"192.0.2.24/32\"),\n\t\t\tTunnelId: pulumi.String(\"f70ff985-a4ef-4643-bbbc-4a0ed4fc8415\"),\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 java.util.*;\nimport java.io.*;\nimport java.nio.*;\nimport com.pulumi.*;\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 example = new TunnelRoute(\"example\", TunnelRouteArgs.builder() \n .accountId(\"c4a7362d577a6c3019a474fd6f485821\")\n .comment(\"New tunnel route for documentation\")\n .network(\"192.0.2.24/32\")\n .tunnelId(\"f70ff985-a4ef-4643-bbbc-4a0ed4fc8415\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: cloudflare:TunnelRoute\n properties:\n accountId: c4a7362d577a6c3019a474fd6f485821\n comment: New tunnel route for documentation\n network: 192.0.2.24/32\n tunnelId: f70ff985-a4ef-4643-bbbc-4a0ed4fc8415\n```\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as cloudflare from \"@pulumi/cloudflare\";\n\nconst tunnel = new cloudflare.ArgoTunnel(\"tunnel\", {\n accountId: \"c4a7362d577a6c3019a474fd6f485821\",\n name: \"my_tunnel\",\n secret: \"AQIDBAUGBwgBAgMEBQYHCAECAwQFBgcIAQIDBAUGBwg=\",\n});\nconst example = new cloudflare.TunnelRoute(\"example\", {\n accountId: \"c4a7362d577a6c3019a474fd6f485821\",\n tunnelId: tunnel.id,\n network: \"192.0.2.24/32\",\n comment: \"New tunnel route for documentation\",\n});\n```\n```python\nimport pulumi\nimport pulumi_cloudflare as cloudflare\n\ntunnel = cloudflare.ArgoTunnel(\"tunnel\",\n account_id=\"c4a7362d577a6c3019a474fd6f485821\",\n name=\"my_tunnel\",\n secret=\"AQIDBAUGBwgBAgMEBQYHCAECAwQFBgcIAQIDBAUGBwg=\")\nexample = cloudflare.TunnelRoute(\"example\",\n account_id=\"c4a7362d577a6c3019a474fd6f485821\",\n tunnel_id=tunnel.id,\n network=\"192.0.2.24/32\",\n comment=\"New tunnel route for documentation\")\n```\n```csharp\nusing Pulumi;\nusing Cloudflare = Pulumi.Cloudflare;\n\nclass MyStack : Stack\n{\n public MyStack()\n {\n var tunnel = new Cloudflare.ArgoTunnel(\"tunnel\", new Cloudflare.ArgoTunnelArgs\n {\n AccountId = \"c4a7362d577a6c3019a474fd6f485821\",\n Name = \"my_tunnel\",\n Secret = \"AQIDBAUGBwgBAgMEBQYHCAECAwQFBgcIAQIDBAUGBwg=\",\n });\n var example = new Cloudflare.TunnelRoute(\"example\", new Cloudflare.TunnelRouteArgs\n {\n AccountId = \"c4a7362d577a6c3019a474fd6f485821\",\n TunnelId = tunnel.Id,\n Network = \"192.0.2.24/32\",\n Comment = \"New tunnel route for documentation\",\n });\n }\n\n}\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-cloudflare/sdk/v4/go/cloudflare\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttunnel, err := cloudflare.NewArgoTunnel(ctx, \"tunnel\", \u0026cloudflare.ArgoTunnelArgs{\n\t\t\tAccountId: pulumi.String(\"c4a7362d577a6c3019a474fd6f485821\"),\n\t\t\tName: pulumi.String(\"my_tunnel\"),\n\t\t\tSecret: pulumi.String(\"AQIDBAUGBwgBAgMEBQYHCAECAwQFBgcIAQIDBAUGBwg=\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudflare.NewTunnelRoute(ctx, \"example\", \u0026cloudflare.TunnelRouteArgs{\n\t\t\tAccountId: pulumi.String(\"c4a7362d577a6c3019a474fd6f485821\"),\n\t\t\tTunnelId: tunnel.ID(),\n\t\t\tNetwork: pulumi.String(\"192.0.2.24/32\"),\n\t\t\tComment: pulumi.String(\"New tunnel route for documentation\"),\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 java.util.*;\nimport java.io.*;\nimport java.nio.*;\nimport com.pulumi.*;\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 tunnel = new ArgoTunnel(\"tunnel\", ArgoTunnelArgs.builder() \n .accountId(\"c4a7362d577a6c3019a474fd6f485821\")\n .name(\"my_tunnel\")\n .secret(\"AQIDBAUGBwgBAgMEBQYHCAECAwQFBgcIAQIDBAUGBwg=\")\n .build());\n\n var example = new TunnelRoute(\"example\", TunnelRouteArgs.builder() \n .accountId(\"c4a7362d577a6c3019a474fd6f485821\")\n .tunnelId(tunnel.getId())\n .network(\"192.0.2.24/32\")\n .comment(\"New tunnel route for documentation\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n tunnel:\n type: cloudflare:ArgoTunnel\n properties:\n accountId: c4a7362d577a6c3019a474fd6f485821\n name: my_tunnel\n secret: AQIDBAUGBwgBAgMEBQYHCAECAwQFBgcIAQIDBAUGBwg=\n example:\n type: cloudflare:TunnelRoute\n properties:\n accountId: c4a7362d577a6c3019a474fd6f485821\n tunnelId: ${tunnel.id}\n network: 192.0.2.24/32\n comment: New tunnel route for documentation\n```\n{{% /example %}}\n{{% /examples %}}\n\n## Import\n\nAn existing tunnel route can be imported using the account ID and network CIDR.\n\n```sh\n $ pulumi import cloudflare:index/tunnelRoute:TunnelRoute cloudflare_tunnel_route c4a7362d577a6c3019a474fd6f485821/192.0.2.24/32\n```\n\n ", + "description": "Provides a resource, that manages Cloudflare tunnel routes for Zero Trust. Tunnel\nroutes are used to direct IP traffic through Cloudflare Tunnels.\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as cloudflare from \"@pulumi/cloudflare\";\n\nconst example = new cloudflare.TunnelRoute(\"example\", {\n accountId: \"c4a7362d577a6c3019a474fd6f485821\",\n comment: \"New tunnel route for documentation\",\n network: \"192.0.2.24/32\",\n tunnelId: \"f70ff985-a4ef-4643-bbbc-4a0ed4fc8415\",\n virtualNetworkId: \"bdc39a3c-3104-4c23-8ac0-9f455dda691a\",\n});\n```\n```python\nimport pulumi\nimport pulumi_cloudflare as cloudflare\n\nexample = cloudflare.TunnelRoute(\"example\",\n account_id=\"c4a7362d577a6c3019a474fd6f485821\",\n comment=\"New tunnel route for documentation\",\n network=\"192.0.2.24/32\",\n tunnel_id=\"f70ff985-a4ef-4643-bbbc-4a0ed4fc8415\",\n virtual_network_id=\"bdc39a3c-3104-4c23-8ac0-9f455dda691a\")\n```\n```csharp\nusing Pulumi;\nusing Cloudflare = Pulumi.Cloudflare;\n\nclass MyStack : Stack\n{\n public MyStack()\n {\n var example = new Cloudflare.TunnelRoute(\"example\", new Cloudflare.TunnelRouteArgs\n {\n AccountId = \"c4a7362d577a6c3019a474fd6f485821\",\n Comment = \"New tunnel route for documentation\",\n Network = \"192.0.2.24/32\",\n TunnelId = \"f70ff985-a4ef-4643-bbbc-4a0ed4fc8415\",\n VirtualNetworkId = \"bdc39a3c-3104-4c23-8ac0-9f455dda691a\",\n });\n }\n\n}\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-cloudflare/sdk/v4/go/cloudflare\"\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 := cloudflare.NewTunnelRoute(ctx, \"example\", \u0026cloudflare.TunnelRouteArgs{\n\t\t\tAccountId: pulumi.String(\"c4a7362d577a6c3019a474fd6f485821\"),\n\t\t\tComment: pulumi.String(\"New tunnel route for documentation\"),\n\t\t\tNetwork: pulumi.String(\"192.0.2.24/32\"),\n\t\t\tTunnelId: pulumi.String(\"f70ff985-a4ef-4643-bbbc-4a0ed4fc8415\"),\n\t\t\tVirtualNetworkId: pulumi.String(\"bdc39a3c-3104-4c23-8ac0-9f455dda691a\"),\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 java.util.*;\nimport java.io.*;\nimport java.nio.*;\nimport com.pulumi.*;\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 example = new TunnelRoute(\"example\", TunnelRouteArgs.builder() \n .accountId(\"c4a7362d577a6c3019a474fd6f485821\")\n .comment(\"New tunnel route for documentation\")\n .network(\"192.0.2.24/32\")\n .tunnelId(\"f70ff985-a4ef-4643-bbbc-4a0ed4fc8415\")\n .virtualNetworkId(\"bdc39a3c-3104-4c23-8ac0-9f455dda691a\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: cloudflare:TunnelRoute\n properties:\n accountId: c4a7362d577a6c3019a474fd6f485821\n comment: New tunnel route for documentation\n network: 192.0.2.24/32\n tunnelId: f70ff985-a4ef-4643-bbbc-4a0ed4fc8415\n virtualNetworkId: bdc39a3c-3104-4c23-8ac0-9f455dda691a\n```\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as cloudflare from \"@pulumi/cloudflare\";\n\nconst tunnel = new cloudflare.ArgoTunnel(\"tunnel\", {\n accountId: \"c4a7362d577a6c3019a474fd6f485821\",\n name: \"my_tunnel\",\n secret: \"AQIDBAUGBwgBAgMEBQYHCAECAwQFBgcIAQIDBAUGBwg=\",\n});\nconst example = new cloudflare.TunnelRoute(\"example\", {\n accountId: \"c4a7362d577a6c3019a474fd6f485821\",\n tunnelId: tunnel.id,\n network: \"192.0.2.24/32\",\n comment: \"New tunnel route for documentation\",\n virtualNetworkId: \"bdc39a3c-3104-4c23-8ac0-9f455dda691a\",\n});\n```\n```python\nimport pulumi\nimport pulumi_cloudflare as cloudflare\n\ntunnel = cloudflare.ArgoTunnel(\"tunnel\",\n account_id=\"c4a7362d577a6c3019a474fd6f485821\",\n name=\"my_tunnel\",\n secret=\"AQIDBAUGBwgBAgMEBQYHCAECAwQFBgcIAQIDBAUGBwg=\")\nexample = cloudflare.TunnelRoute(\"example\",\n account_id=\"c4a7362d577a6c3019a474fd6f485821\",\n tunnel_id=tunnel.id,\n network=\"192.0.2.24/32\",\n comment=\"New tunnel route for documentation\",\n virtual_network_id=\"bdc39a3c-3104-4c23-8ac0-9f455dda691a\")\n```\n```csharp\nusing Pulumi;\nusing Cloudflare = Pulumi.Cloudflare;\n\nclass MyStack : Stack\n{\n public MyStack()\n {\n var tunnel = new Cloudflare.ArgoTunnel(\"tunnel\", new Cloudflare.ArgoTunnelArgs\n {\n AccountId = \"c4a7362d577a6c3019a474fd6f485821\",\n Name = \"my_tunnel\",\n Secret = \"AQIDBAUGBwgBAgMEBQYHCAECAwQFBgcIAQIDBAUGBwg=\",\n });\n var example = new Cloudflare.TunnelRoute(\"example\", new Cloudflare.TunnelRouteArgs\n {\n AccountId = \"c4a7362d577a6c3019a474fd6f485821\",\n TunnelId = tunnel.Id,\n Network = \"192.0.2.24/32\",\n Comment = \"New tunnel route for documentation\",\n VirtualNetworkId = \"bdc39a3c-3104-4c23-8ac0-9f455dda691a\",\n });\n }\n\n}\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-cloudflare/sdk/v4/go/cloudflare\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttunnel, err := cloudflare.NewArgoTunnel(ctx, \"tunnel\", \u0026cloudflare.ArgoTunnelArgs{\n\t\t\tAccountId: pulumi.String(\"c4a7362d577a6c3019a474fd6f485821\"),\n\t\t\tName: pulumi.String(\"my_tunnel\"),\n\t\t\tSecret: pulumi.String(\"AQIDBAUGBwgBAgMEBQYHCAECAwQFBgcIAQIDBAUGBwg=\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudflare.NewTunnelRoute(ctx, \"example\", \u0026cloudflare.TunnelRouteArgs{\n\t\t\tAccountId: pulumi.String(\"c4a7362d577a6c3019a474fd6f485821\"),\n\t\t\tTunnelId: tunnel.ID(),\n\t\t\tNetwork: pulumi.String(\"192.0.2.24/32\"),\n\t\t\tComment: pulumi.String(\"New tunnel route for documentation\"),\n\t\t\tVirtualNetworkId: pulumi.String(\"bdc39a3c-3104-4c23-8ac0-9f455dda691a\"),\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 java.util.*;\nimport java.io.*;\nimport java.nio.*;\nimport com.pulumi.*;\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 tunnel = new ArgoTunnel(\"tunnel\", ArgoTunnelArgs.builder() \n .accountId(\"c4a7362d577a6c3019a474fd6f485821\")\n .name(\"my_tunnel\")\n .secret(\"AQIDBAUGBwgBAgMEBQYHCAECAwQFBgcIAQIDBAUGBwg=\")\n .build());\n\n var example = new TunnelRoute(\"example\", TunnelRouteArgs.builder() \n .accountId(\"c4a7362d577a6c3019a474fd6f485821\")\n .tunnelId(tunnel.getId())\n .network(\"192.0.2.24/32\")\n .comment(\"New tunnel route for documentation\")\n .virtualNetworkId(\"bdc39a3c-3104-4c23-8ac0-9f455dda691a\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n tunnel:\n type: cloudflare:ArgoTunnel\n properties:\n accountId: c4a7362d577a6c3019a474fd6f485821\n name: my_tunnel\n secret: AQIDBAUGBwgBAgMEBQYHCAECAwQFBgcIAQIDBAUGBwg=\n example:\n type: cloudflare:TunnelRoute\n properties:\n accountId: c4a7362d577a6c3019a474fd6f485821\n tunnelId: ${tunnel.id}\n network: 192.0.2.24/32\n comment: New tunnel route for documentation\n virtualNetworkId: bdc39a3c-3104-4c23-8ac0-9f455dda691a\n```\n{{% /example %}}\n{{% /examples %}}\n\n## Import\n\nAn existing tunnel route can be imported using the account ID and network CIDR\n\n```sh\n $ pulumi import cloudflare:index/tunnelRoute:TunnelRoute cloudflare_tunnel_route c4a7362d577a6c3019a474fd6f485821/192.0.2.24/32\n```\n\n or using account ID, network CIDR and virtual network ID.\n\n```sh\n $ pulumi import cloudflare:index/tunnelRoute:TunnelRoute cloudflare_tunnel_route c4a7362d577a6c3019a474fd6f485821/192.0.2.24/32/bdc39a3c-3104-4c23-8ac0-9f455dda691a\n```\n\n ", "properties": { "accountId": { "type": "string", @@ -14886,6 +15116,10 @@ "tunnelId": { "type": "string", "description": "The ID of the tunnel that will service the tunnel route.\n" + }, + "virtualNetworkId": { + "type": "string", + "description": "The ID of the virtual network for which this route is being added; uses the default virtual network of the account if none is provided.\n" } }, "required": [ @@ -14909,6 +15143,10 @@ "tunnelId": { "type": "string", "description": "The ID of the tunnel that will service the tunnel route.\n" + }, + "virtualNetworkId": { + "type": "string", + "description": "The ID of the virtual network for which this route is being added; uses the default virtual network of the account if none is provided.\n" } }, "requiredInputs": [ @@ -14934,6 +15172,79 @@ "tunnelId": { "type": "string", "description": "The ID of the tunnel that will service the tunnel route.\n" + }, + "virtualNetworkId": { + "type": "string", + "description": "The ID of the virtual network for which this route is being added; uses the default virtual network of the account if none is provided.\n" + } + }, + "type": "object" + } + }, + "cloudflare:index/tunnelVirtualNetwork:TunnelVirtualNetwork": { + "description": "Provides a resource, that manages Cloudflare tunnel virtual networks for Zero Trust. Tunnel\nvirtual networks are used for segregation of Tunnel IP Routes via Virtualized Networks to \nhandle overlapping private IPs in your origins..\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as cloudflare from \"@pulumi/cloudflare\";\n\nconst example = new cloudflare.TunnelVirtualNetwork(\"example\", {\n accountId: \"c4a7362d577a6c3019a474fd6f485821\",\n comment: \"New tunnel virtual network for documentation\",\n name: \"vnet-for-documentation\",\n});\n```\n```python\nimport pulumi\nimport pulumi_cloudflare as cloudflare\n\nexample = cloudflare.TunnelVirtualNetwork(\"example\",\n account_id=\"c4a7362d577a6c3019a474fd6f485821\",\n comment=\"New tunnel virtual network for documentation\",\n name=\"vnet-for-documentation\")\n```\n```csharp\nusing Pulumi;\nusing Cloudflare = Pulumi.Cloudflare;\n\nclass MyStack : Stack\n{\n public MyStack()\n {\n var example = new Cloudflare.TunnelVirtualNetwork(\"example\", new Cloudflare.TunnelVirtualNetworkArgs\n {\n AccountId = \"c4a7362d577a6c3019a474fd6f485821\",\n Comment = \"New tunnel virtual network for documentation\",\n Name = \"vnet-for-documentation\",\n });\n }\n\n}\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-cloudflare/sdk/v4/go/cloudflare\"\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 := cloudflare.NewTunnelVirtualNetwork(ctx, \"example\", \u0026cloudflare.TunnelVirtualNetworkArgs{\n\t\t\tAccountId: pulumi.String(\"c4a7362d577a6c3019a474fd6f485821\"),\n\t\t\tComment: pulumi.String(\"New tunnel virtual network for documentation\"),\n\t\t\tName: pulumi.String(\"vnet-for-documentation\"),\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 java.util.*;\nimport java.io.*;\nimport java.nio.*;\nimport com.pulumi.*;\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 example = new TunnelVirtualNetwork(\"example\", TunnelVirtualNetworkArgs.builder() \n .accountId(\"c4a7362d577a6c3019a474fd6f485821\")\n .comment(\"New tunnel virtual network for documentation\")\n .name(\"vnet-for-documentation\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: cloudflare:TunnelVirtualNetwork\n properties:\n accountId: c4a7362d577a6c3019a474fd6f485821\n comment: New tunnel virtual network for documentation\n name: vnet-for-documentation\n```\n{{% /example %}}\n{{% /examples %}}\n\n## Import\n\nAn existing tunnel virtual networks can be imported using the account ID and virtual network ID.\n\n```sh\n $ pulumi import cloudflare:index/tunnelVirtualNetwork:TunnelVirtualNetwork cloudflare_tunnel_virtual_network c4a7362d577a6c3019a474fd6f485821/3c8ff8af-b487-45bd-89e3-4c85a1532600\n```\n\n ", + "properties": { + "accountId": { + "type": "string", + "description": "The ID of the account where the tunnel virtual network is being created.\n" + }, + "comment": { + "type": "string", + "description": "Description of the tunnel virtual network.\n" + }, + "isDefaultNetwork": { + "type": "boolean", + "description": "Whether this virtual network is the default one for the account. This means IP Routes belong to this virtual network and Teams Clients in the account route through this virtual network, unless specified otherwise for each case.\n" + }, + "name": { + "type": "string", + "description": "A user-friendly name chosen when the virtual network is created.\n" + } + }, + "required": [ + "accountId", + "name" + ], + "inputProperties": { + "accountId": { + "type": "string", + "description": "The ID of the account where the tunnel virtual network is being created.\n" + }, + "comment": { + "type": "string", + "description": "Description of the tunnel virtual network.\n" + }, + "isDefaultNetwork": { + "type": "boolean", + "description": "Whether this virtual network is the default one for the account. This means IP Routes belong to this virtual network and Teams Clients in the account route through this virtual network, unless specified otherwise for each case.\n" + }, + "name": { + "type": "string", + "description": "A user-friendly name chosen when the virtual network is created.\n" + } + }, + "requiredInputs": [ + "accountId", + "name" + ], + "stateInputs": { + "description": "Input properties used for looking up and filtering TunnelVirtualNetwork resources.\n", + "properties": { + "accountId": { + "type": "string", + "description": "The ID of the account where the tunnel virtual network is being created.\n" + }, + "comment": { + "type": "string", + "description": "Description of the tunnel virtual network.\n" + }, + "isDefaultNetwork": { + "type": "boolean", + "description": "Whether this virtual network is the default one for the account. This means IP Routes belong to this virtual network and Teams Clients in the account route through this virtual network, unless specified otherwise for each case.\n" + }, + "name": { + "type": "string", + "description": "A user-friendly name chosen when the virtual network is created.\n" } }, "type": "object" @@ -15326,6 +15637,10 @@ "type": "string", "description": "This a templated html file that will be rendered at the edge.\n" }, + "defaultTemplateLanguage": { + "type": "string", + "description": "The language to use for the default waiting room page (refer to the nested schema).\n" + }, "description": { "type": "string", "description": "A description to let users add more details about the waiting room.\n" @@ -15387,6 +15702,10 @@ "type": "string", "description": "This a templated html file that will be rendered at the edge.\n" }, + "defaultTemplateLanguage": { + "type": "string", + "description": "The language to use for the default waiting room page (refer to the nested schema).\n" + }, "description": { "type": "string", "description": "A description to let users add more details about the waiting room.\n" @@ -15450,6 +15769,10 @@ "type": "string", "description": "This a templated html file that will be rendered at the edge.\n" }, + "defaultTemplateLanguage": { + "type": "string", + "description": "The language to use for the default waiting room page (refer to the nested schema).\n" + }, "description": { "type": "string", "description": "A description to let users add more details about the waiting room.\n" @@ -15503,7 +15826,7 @@ } }, "cloudflare:index/waitingRoomEvent:WaitingRoomEvent": { - "description": "Provides a Cloudflare Waiting Room Event resource.\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as cloudflare from \"@pulumi/cloudflare\";\n\nconst example = new cloudflare.WaitingRoomVent(\"example\", {\n eventEndTime: \"2006-01-02T20:04:05Z\",\n eventStartTime: \"2006-01-02T15:04:05Z\",\n name: \"foo\",\n waitingRoomId: \"d41d8cd98f00b204e9800998ecf8427e\",\n zoneId: \"ae36f999674d196762efcc5abb06b345\",\n});\n```\n{{% /example %}}\n{{% /examples %}}\n\n## Import\n\nWaiting room events can be imported using a composite ID formed of zone ID, waiting room ID, and waiting room event ID, e.g.\n\n```sh\n $ pulumi import cloudflare:index/waitingRoomEvent:WaitingRoomEvent default ae36f999674d196762efcc5abb06b345/d41d8cd98f00b204e9800998ecf8427e/25756b2dfe6e378a06b033b670413757\n```\n\n where* `ae36f999674d196762efcc5abb06b345` - the zone ID * `d41d8cd98f00b204e9800998ecf8427e` - waiting room ID as returned by [API](https://api.cloudflare.com/#waiting-room-list-waiting-rooms) * `25756b2dfe6e378a06b033b670413757` - waiting room event ID as returned by [API](https://api.cloudflare.com/#waiting-room-list-events) ", + "description": "Provides a Cloudflare Waiting Room Event resource.\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as cloudflare from \"@pulumi/cloudflare\";\n\nconst example = new cloudflare.WaitingRoomEvent(\"example\", {\n eventEndTime: \"2006-01-02T20:04:05Z\",\n eventStartTime: \"2006-01-02T15:04:05Z\",\n name: \"foo\",\n waitingRoomId: \"d41d8cd98f00b204e9800998ecf8427e\",\n zoneId: \"ae36f999674d196762efcc5abb06b345\",\n});\n```\n```python\nimport pulumi\nimport pulumi_cloudflare as cloudflare\n\nexample = cloudflare.WaitingRoomEvent(\"example\",\n event_end_time=\"2006-01-02T20:04:05Z\",\n event_start_time=\"2006-01-02T15:04:05Z\",\n name=\"foo\",\n waiting_room_id=\"d41d8cd98f00b204e9800998ecf8427e\",\n zone_id=\"ae36f999674d196762efcc5abb06b345\")\n```\n```csharp\nusing Pulumi;\nusing Cloudflare = Pulumi.Cloudflare;\n\nclass MyStack : Stack\n{\n public MyStack()\n {\n var example = new Cloudflare.WaitingRoomEvent(\"example\", new Cloudflare.WaitingRoomEventArgs\n {\n EventEndTime = \"2006-01-02T20:04:05Z\",\n EventStartTime = \"2006-01-02T15:04:05Z\",\n Name = \"foo\",\n WaitingRoomId = \"d41d8cd98f00b204e9800998ecf8427e\",\n ZoneId = \"ae36f999674d196762efcc5abb06b345\",\n });\n }\n\n}\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-cloudflare/sdk/v4/go/cloudflare\"\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 := cloudflare.NewWaitingRoomEvent(ctx, \"example\", \u0026cloudflare.WaitingRoomEventArgs{\n\t\t\tEventEndTime: pulumi.String(\"2006-01-02T20:04:05Z\"),\n\t\t\tEventStartTime: pulumi.String(\"2006-01-02T15:04:05Z\"),\n\t\t\tName: pulumi.String(\"foo\"),\n\t\t\tWaitingRoomId: pulumi.String(\"d41d8cd98f00b204e9800998ecf8427e\"),\n\t\t\tZoneId: pulumi.String(\"ae36f999674d196762efcc5abb06b345\"),\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 java.util.*;\nimport java.io.*;\nimport java.nio.*;\nimport com.pulumi.*;\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 example = new WaitingRoomEvent(\"example\", WaitingRoomEventArgs.builder() \n .eventEndTime(\"2006-01-02T20:04:05Z\")\n .eventStartTime(\"2006-01-02T15:04:05Z\")\n .name(\"foo\")\n .waitingRoomId(\"d41d8cd98f00b204e9800998ecf8427e\")\n .zoneId(\"ae36f999674d196762efcc5abb06b345\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: cloudflare:WaitingRoomEvent\n properties:\n eventEndTime: 2006-01-02T20:04:05Z\n eventStartTime: 2006-01-02T15:04:05Z\n name: foo\n waitingRoomId: d41d8cd98f00b204e9800998ecf8427e\n zoneId: ae36f999674d196762efcc5abb06b345\n```\n{{% /example %}}\n{{% /examples %}}\n\n## Import\n\nWaiting room events can be imported using a composite ID formed of zone ID, waiting room ID, and waiting room event ID, e.g.\n\n```sh\n $ pulumi import cloudflare:index/waitingRoomEvent:WaitingRoomEvent default ae36f999674d196762efcc5abb06b345/d41d8cd98f00b204e9800998ecf8427e/25756b2dfe6e378a06b033b670413757\n```\n\n where* `ae36f999674d196762efcc5abb06b345` - the zone ID * `d41d8cd98f00b204e9800998ecf8427e` - waiting room ID as returned by [API](https://api.cloudflare.com/#waiting-room-list-waiting-rooms) * `25756b2dfe6e378a06b033b670413757` - waiting room event ID as returned by [API](https://api.cloudflare.com/#waiting-room-list-events) ", "properties": { "createdOn": { "type": "string" diff --git a/provider/go.mod b/provider/go.mod index 29a772dd..bc9b3d09 100644 --- a/provider/go.mod +++ b/provider/go.mod @@ -43,7 +43,7 @@ require ( github.com/cespare/xxhash/v2 v2.1.2 // indirect github.com/cheggaaa/pb v1.0.29 // indirect github.com/cloudflare/cloudflare-go v0.40.1-0.20220602010313-668778596a1c // indirect - github.com/cloudflare/terraform-provider-cloudflare v1.18.2-0.20220531051658-8a97894e0e61 // indirect + github.com/cloudflare/terraform-provider-cloudflare v0.0.0-00010101000000-000000000000 // indirect github.com/cncf/udpa/go v0.0.0-20210930031921-04548b0d99d4 // indirect github.com/cncf/xds/go v0.0.0-20211130200136-a8f946100490 // indirect github.com/davecgh/go-spew v1.1.1 // indirect @@ -205,6 +205,8 @@ require ( replace ( cloud.google.com/go/storage => cloud.google.com/go/storage v1.16.1 + github.com/cloudflare/cloudflare-go => github.com/mapped/cloudflare-go v0.40.1-0.20220603175700-567edc574e2c + github.com/cloudflare/terraform-provider-cloudflare => github.com/mapped/terraform-provider-cloudflare v1.18.2-0.20220604053233-3f7c27d1822c github.com/cloudflare/terraform-provider-cloudflare/shim => ./shim github.com/hashicorp/go-getter v1.5.0 => github.com/hashicorp/go-getter v1.4.0 github.com/hashicorp/terraform-exec => github.com/hashicorp/terraform-exec v0.15.0 diff --git a/provider/go.sum b/provider/go.sum index c812a052..0df46784 100644 --- a/provider/go.sum +++ b/provider/go.sum @@ -190,10 +190,6 @@ github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMn github.com/circonus-labs/circonus-gometrics v2.3.1+incompatible/go.mod h1:nmEj6Dob7S7YxXgwXpfOuvO54S+tGdZdw9fuRZt25Ag= github.com/circonus-labs/circonusllhist v0.1.3/go.mod h1:kMXHVDlOchFAehlya5ePtbp5jckzBHf4XRpQvBOLI+I= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= -github.com/cloudflare/cloudflare-go v0.40.1-0.20220602010313-668778596a1c h1:OQXcMmN4u/nxDH6xVRhFe8CySHvQNMHWGwQpVursIa0= -github.com/cloudflare/cloudflare-go v0.40.1-0.20220602010313-668778596a1c/go.mod h1:MmAqiRfD8rjKEuUe4MYNHfHjYhFWfW7PNe12CCQWqPY= -github.com/cloudflare/terraform-provider-cloudflare v1.18.2-0.20220531051658-8a97894e0e61 h1:yz0PETAxSiCeP4VdH8YdZGV3NQvY0XbJh3h+CaCLKE8= -github.com/cloudflare/terraform-provider-cloudflare v1.18.2-0.20220531051658-8a97894e0e61/go.mod h1:mz5qbedzN7TP3mOaP0CZrBZz/byYYy9Cjr9w2tq4mfk= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= @@ -642,6 +638,10 @@ github.com/lib/pq v1.10.1/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0/go.mod h1:zJYVVT2jmtg6P3p1VtQj7WsuWi/y4VnjVBn7F8KPB3I= github.com/lyft/protoc-gen-star v0.5.3/go.mod h1:V0xaHgaf5oCCqmcxYcWiDfTiKsZsRc87/1qhoTACD8w= github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= +github.com/mapped/cloudflare-go v0.40.1-0.20220603175700-567edc574e2c h1:v0hceaBjJoeUHe6/Vd2SsDfK+EShdmX+Y7GutLYY+zs= +github.com/mapped/cloudflare-go v0.40.1-0.20220603175700-567edc574e2c/go.mod h1:MmAqiRfD8rjKEuUe4MYNHfHjYhFWfW7PNe12CCQWqPY= +github.com/mapped/terraform-provider-cloudflare v1.18.2-0.20220604053233-3f7c27d1822c h1:zw6H/gaLPG//darzfKzZKN+96DE9W5tH2+WBuSx5SSc= +github.com/mapped/terraform-provider-cloudflare v1.18.2-0.20220604053233-3f7c27d1822c/go.mod h1:SbDS8UqK8mQOM50qB6OPIRl96Hq/N6NxzfOUVYLzQvA= github.com/matryer/is v1.2.0/go.mod h1:2fLPjFQM9rhQ15aVEtbuwhJinnOqrmgXPNdZsdwlWXA= github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= github.com/mattn/go-colorable v0.1.1/go.mod h1:FuOcm+DKB9mbwrcAfNl7/TZVBZ6rcnceauSikq3lYCQ= diff --git a/provider/resources.go b/provider/resources.go index da3fcd58..753d990e 100644 --- a/provider/resources.go +++ b/provider/resources.go @@ -108,30 +108,31 @@ func Provider() tfbridge.ProviderInfo { }, }, Resources: map[string]*tfbridge.ResourceInfo{ - "cloudflare_access_application": {Tok: makeResource(mainMod, "AccessApplication")}, - "cloudflare_access_bookmark": {Tok: makeResource(mainMod, "AccessBookmark")}, - "cloudflare_access_policy": {Tok: makeResource(mainMod, "AccessPolicy")}, - "cloudflare_access_rule": {Tok: makeResource(mainMod, "AccessRule")}, - "cloudflare_account_member": {Tok: makeResource(mainMod, "AccountMember")}, - "cloudflare_argo": {Tok: makeResource(mainMod, "Argo")}, - "cloudflare_argo_tunnel": {Tok: makeResource(mainMod, "ArgoTunnel")}, - "cloudflare_custom_pages": {Tok: makeResource(mainMod, "CustomPages")}, - "cloudflare_filter": {Tok: makeResource(mainMod, "Filter")}, - "cloudflare_firewall_rule": {Tok: makeResource(mainMod, "FirewallRule")}, - "cloudflare_load_balancer_monitor": {Tok: makeResource(mainMod, "LoadBalancerMonitor")}, - "cloudflare_load_balancer_pool": {Tok: makeResource(mainMod, "LoadBalancerPool")}, - "cloudflare_load_balancer": {Tok: makeResource(mainMod, "LoadBalancer")}, - "cloudflare_logpush_job": {Tok: makeResource(mainMod, "LogpushJob")}, - "cloudflare_page_rule": {Tok: makeResource(mainMod, "PageRule")}, - "cloudflare_rate_limit": {Tok: makeResource(mainMod, "RateLimit")}, - "cloudflare_record": {Tok: makeResource(mainMod, "Record")}, - "cloudflare_spectrum_application": {Tok: makeResource(mainMod, "SpectrumApplication")}, - "cloudflare_tunnel_route": {Tok: makeResource(mainMod, "TunnelRoute")}, - "cloudflare_waf_rule": {Tok: makeResource(mainMod, "WafRule")}, - "cloudflare_worker_route": {Tok: makeResource(mainMod, "WorkerRoute")}, - "cloudflare_worker_cron_trigger": {Tok: makeResource(mainMod, "WorkerCronTrigger")}, - "cloudflare_worker_script": {Tok: makeResource(mainMod, "WorkerScript")}, - "cloudflare_zone_lockdown": {Tok: makeResource(mainMod, "ZoneLockdown")}, + "cloudflare_access_application": {Tok: makeResource(mainMod, "AccessApplication")}, + "cloudflare_access_bookmark": {Tok: makeResource(mainMod, "AccessBookmark")}, + "cloudflare_access_policy": {Tok: makeResource(mainMod, "AccessPolicy")}, + "cloudflare_access_rule": {Tok: makeResource(mainMod, "AccessRule")}, + "cloudflare_account_member": {Tok: makeResource(mainMod, "AccountMember")}, + "cloudflare_argo": {Tok: makeResource(mainMod, "Argo")}, + "cloudflare_argo_tunnel": {Tok: makeResource(mainMod, "ArgoTunnel")}, + "cloudflare_custom_pages": {Tok: makeResource(mainMod, "CustomPages")}, + "cloudflare_filter": {Tok: makeResource(mainMod, "Filter")}, + "cloudflare_firewall_rule": {Tok: makeResource(mainMod, "FirewallRule")}, + "cloudflare_load_balancer_monitor": {Tok: makeResource(mainMod, "LoadBalancerMonitor")}, + "cloudflare_load_balancer_pool": {Tok: makeResource(mainMod, "LoadBalancerPool")}, + "cloudflare_load_balancer": {Tok: makeResource(mainMod, "LoadBalancer")}, + "cloudflare_logpush_job": {Tok: makeResource(mainMod, "LogpushJob")}, + "cloudflare_page_rule": {Tok: makeResource(mainMod, "PageRule")}, + "cloudflare_rate_limit": {Tok: makeResource(mainMod, "RateLimit")}, + "cloudflare_record": {Tok: makeResource(mainMod, "Record")}, + "cloudflare_spectrum_application": {Tok: makeResource(mainMod, "SpectrumApplication")}, + "cloudflare_tunnel_route": {Tok: makeResource(mainMod, "TunnelRoute")}, + "cloudflare_tunnel_virtual_network": {Tok: makeResource(mainMod, "TunnelVirtualNetwork")}, + "cloudflare_waf_rule": {Tok: makeResource(mainMod, "WafRule")}, + "cloudflare_worker_route": {Tok: makeResource(mainMod, "WorkerRoute")}, + "cloudflare_worker_cron_trigger": {Tok: makeResource(mainMod, "WorkerCronTrigger")}, + "cloudflare_worker_script": {Tok: makeResource(mainMod, "WorkerScript")}, + "cloudflare_zone_lockdown": {Tok: makeResource(mainMod, "ZoneLockdown")}, "cloudflare_zone_settings_override": { Tok: makeResource(mainMod, "ZoneSettingsOverride"), Fields: map[string]*tfbridge.SchemaInfo{ diff --git a/sdk/dotnet/AccessApplication.cs b/sdk/dotnet/AccessApplication.cs index 1abf649e..ab6e23fa 100644 --- a/sdk/dotnet/AccessApplication.cs +++ b/sdk/dotnet/AccessApplication.cs @@ -132,10 +132,10 @@ public partial class AccessApplication : Pulumi.CustomResource public Output EnableBindingCookie { get; private set; } = null!; /// - /// Option to add the `HttpOnly` cookie flag to access tokens. + /// Option to add the `HttpOnly` cookie flag to access tokens. Defaults to `true`. /// [Output("httpOnlyCookieAttribute")] - public Output HttpOnlyCookieAttribute { get; private set; } = null!; + public Output HttpOnlyCookieAttribute { get; private set; } = null!; /// /// Image URL for the logo shown in the app launcher @@ -309,7 +309,7 @@ public InputList CorsHeaders public Input? EnableBindingCookie { get; set; } /// - /// Option to add the `HttpOnly` cookie flag to access tokens. + /// Option to add the `HttpOnly` cookie flag to access tokens. Defaults to `true`. /// [Input("httpOnlyCookieAttribute")] public Input? HttpOnlyCookieAttribute { get; set; } @@ -453,7 +453,7 @@ public InputList CorsHeaders public Input? EnableBindingCookie { get; set; } /// - /// Option to add the `HttpOnly` cookie flag to access tokens. + /// Option to add the `HttpOnly` cookie flag to access tokens. Defaults to `true`. /// [Input("httpOnlyCookieAttribute")] public Input? HttpOnlyCookieAttribute { get; set; } diff --git a/sdk/dotnet/AccessGroup.cs b/sdk/dotnet/AccessGroup.cs index da283878..ab962e64 100644 --- a/sdk/dotnet/AccessGroup.cs +++ b/sdk/dotnet/AccessGroup.cs @@ -101,6 +101,8 @@ namespace Pulumi.Cloudflare /// * `okta` - (Optional) Use Okta as the `include` condition. Example: /// * `saml` - (Optional) Use an external SAML setup as the `include` condition. /// Example: + /// * `external_evaluation` - (Optional) Pass a user's identity to an external URL as the `include` condition. + /// Example: /// /// ## Import /// diff --git a/sdk/dotnet/ArgoTunnel.cs b/sdk/dotnet/ArgoTunnel.cs index 7fffcc8a..5b235a6e 100644 --- a/sdk/dotnet/ArgoTunnel.cs +++ b/sdk/dotnet/ArgoTunnel.cs @@ -70,6 +70,12 @@ public partial class ArgoTunnel : Pulumi.CustomResource [Output("secret")] public Output Secret { get; private set; } = null!; + /// + /// Token used by a connector to authenticate and run the tunnel. + /// + [Output("tunnelToken")] + public Output TunnelToken { get; private set; } = null!; + /// /// Create a ArgoTunnel resource with the given unique name, arguments, and options. @@ -165,6 +171,12 @@ public sealed class ArgoTunnelState : Pulumi.ResourceArgs [Input("secret")] public Input? Secret { get; set; } + /// + /// Token used by a connector to authenticate and run the tunnel. + /// + [Input("tunnelToken")] + public Input? TunnelToken { get; set; } + public ArgoTunnelState() { } diff --git a/sdk/dotnet/Healthcheck.cs b/sdk/dotnet/Healthcheck.cs index 3186a7dc..486ea7d7 100644 --- a/sdk/dotnet/Healthcheck.cs +++ b/sdk/dotnet/Healthcheck.cs @@ -115,6 +115,16 @@ namespace Pulumi.Cloudflare /// /// } /// ``` + /// + /// ## Import + /// + /// Healthchecks can be imported using a composite ID formed of zone ID and healthcheck ID, e.g. + /// + /// ```sh + /// $ pulumi import cloudflare:index/healthcheck:Healthcheck example 9a7806061c88ada191ed06f989cc3dac/699d98642c564d2e855e9661899b7252 + /// ``` + /// + /// where* `9a7806061c88ada191ed06f989cc3dac` - the zone ID * `699d98642c564d2e855e9661899b7252` - healthcheck ID as returned by [API](https://api.cloudflare.com/#health-checks-list-health-checks) /// [CloudflareResourceType("cloudflare:index/healthcheck:Healthcheck")] public partial class Healthcheck : Pulumi.CustomResource diff --git a/sdk/dotnet/Inputs/AccessGroupExcludeArgs.cs b/sdk/dotnet/Inputs/AccessGroupExcludeArgs.cs index 45f06b09..e1bab916 100644 --- a/sdk/dotnet/Inputs/AccessGroupExcludeArgs.cs +++ b/sdk/dotnet/Inputs/AccessGroupExcludeArgs.cs @@ -59,6 +59,9 @@ public InputList Emails [Input("everyone")] public Input? Everyone { get; set; } + [Input("externalEvaluation")] + public Input? ExternalEvaluation { get; set; } + [Input("geos")] private InputList? _geos; public InputList Geos diff --git a/sdk/dotnet/Inputs/AccessGroupExcludeExternalEvaluationArgs.cs b/sdk/dotnet/Inputs/AccessGroupExcludeExternalEvaluationArgs.cs new file mode 100644 index 00000000..5d109e25 --- /dev/null +++ b/sdk/dotnet/Inputs/AccessGroupExcludeExternalEvaluationArgs.cs @@ -0,0 +1,25 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Cloudflare.Inputs +{ + + public sealed class AccessGroupExcludeExternalEvaluationArgs : Pulumi.ResourceArgs + { + [Input("evaluateUrl")] + public Input? EvaluateUrl { get; set; } + + [Input("keysUrl")] + public Input? KeysUrl { get; set; } + + public AccessGroupExcludeExternalEvaluationArgs() + { + } + } +} diff --git a/sdk/dotnet/Inputs/AccessGroupExcludeExternalEvaluationGetArgs.cs b/sdk/dotnet/Inputs/AccessGroupExcludeExternalEvaluationGetArgs.cs new file mode 100644 index 00000000..edefe086 --- /dev/null +++ b/sdk/dotnet/Inputs/AccessGroupExcludeExternalEvaluationGetArgs.cs @@ -0,0 +1,25 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Cloudflare.Inputs +{ + + public sealed class AccessGroupExcludeExternalEvaluationGetArgs : Pulumi.ResourceArgs + { + [Input("evaluateUrl")] + public Input? EvaluateUrl { get; set; } + + [Input("keysUrl")] + public Input? KeysUrl { get; set; } + + public AccessGroupExcludeExternalEvaluationGetArgs() + { + } + } +} diff --git a/sdk/dotnet/Inputs/AccessGroupExcludeGetArgs.cs b/sdk/dotnet/Inputs/AccessGroupExcludeGetArgs.cs index c6146f82..08247105 100644 --- a/sdk/dotnet/Inputs/AccessGroupExcludeGetArgs.cs +++ b/sdk/dotnet/Inputs/AccessGroupExcludeGetArgs.cs @@ -59,6 +59,9 @@ public InputList Emails [Input("everyone")] public Input? Everyone { get; set; } + [Input("externalEvaluation")] + public Input? ExternalEvaluation { get; set; } + [Input("geos")] private InputList? _geos; public InputList Geos diff --git a/sdk/dotnet/Inputs/AccessGroupIncludeArgs.cs b/sdk/dotnet/Inputs/AccessGroupIncludeArgs.cs index 356e70d4..1de86cc5 100644 --- a/sdk/dotnet/Inputs/AccessGroupIncludeArgs.cs +++ b/sdk/dotnet/Inputs/AccessGroupIncludeArgs.cs @@ -59,6 +59,9 @@ public InputList Emails [Input("everyone")] public Input? Everyone { get; set; } + [Input("externalEvaluation")] + public Input? ExternalEvaluation { get; set; } + [Input("geos")] private InputList? _geos; public InputList Geos diff --git a/sdk/dotnet/Inputs/AccessGroupIncludeExternalEvaluationArgs.cs b/sdk/dotnet/Inputs/AccessGroupIncludeExternalEvaluationArgs.cs new file mode 100644 index 00000000..177d0846 --- /dev/null +++ b/sdk/dotnet/Inputs/AccessGroupIncludeExternalEvaluationArgs.cs @@ -0,0 +1,25 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Cloudflare.Inputs +{ + + public sealed class AccessGroupIncludeExternalEvaluationArgs : Pulumi.ResourceArgs + { + [Input("evaluateUrl")] + public Input? EvaluateUrl { get; set; } + + [Input("keysUrl")] + public Input? KeysUrl { get; set; } + + public AccessGroupIncludeExternalEvaluationArgs() + { + } + } +} diff --git a/sdk/dotnet/Inputs/AccessGroupIncludeExternalEvaluationGetArgs.cs b/sdk/dotnet/Inputs/AccessGroupIncludeExternalEvaluationGetArgs.cs new file mode 100644 index 00000000..6be7b1ce --- /dev/null +++ b/sdk/dotnet/Inputs/AccessGroupIncludeExternalEvaluationGetArgs.cs @@ -0,0 +1,25 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Cloudflare.Inputs +{ + + public sealed class AccessGroupIncludeExternalEvaluationGetArgs : Pulumi.ResourceArgs + { + [Input("evaluateUrl")] + public Input? EvaluateUrl { get; set; } + + [Input("keysUrl")] + public Input? KeysUrl { get; set; } + + public AccessGroupIncludeExternalEvaluationGetArgs() + { + } + } +} diff --git a/sdk/dotnet/Inputs/AccessGroupIncludeGetArgs.cs b/sdk/dotnet/Inputs/AccessGroupIncludeGetArgs.cs index 98dea31b..e3f7d97c 100644 --- a/sdk/dotnet/Inputs/AccessGroupIncludeGetArgs.cs +++ b/sdk/dotnet/Inputs/AccessGroupIncludeGetArgs.cs @@ -59,6 +59,9 @@ public InputList Emails [Input("everyone")] public Input? Everyone { get; set; } + [Input("externalEvaluation")] + public Input? ExternalEvaluation { get; set; } + [Input("geos")] private InputList? _geos; public InputList Geos diff --git a/sdk/dotnet/Inputs/AccessGroupRequireArgs.cs b/sdk/dotnet/Inputs/AccessGroupRequireArgs.cs index 11d892ee..36ece84c 100644 --- a/sdk/dotnet/Inputs/AccessGroupRequireArgs.cs +++ b/sdk/dotnet/Inputs/AccessGroupRequireArgs.cs @@ -59,6 +59,9 @@ public InputList Emails [Input("everyone")] public Input? Everyone { get; set; } + [Input("externalEvaluation")] + public Input? ExternalEvaluation { get; set; } + [Input("geos")] private InputList? _geos; public InputList Geos diff --git a/sdk/dotnet/Inputs/AccessGroupRequireExternalEvaluationArgs.cs b/sdk/dotnet/Inputs/AccessGroupRequireExternalEvaluationArgs.cs new file mode 100644 index 00000000..1af2ea83 --- /dev/null +++ b/sdk/dotnet/Inputs/AccessGroupRequireExternalEvaluationArgs.cs @@ -0,0 +1,25 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Cloudflare.Inputs +{ + + public sealed class AccessGroupRequireExternalEvaluationArgs : Pulumi.ResourceArgs + { + [Input("evaluateUrl")] + public Input? EvaluateUrl { get; set; } + + [Input("keysUrl")] + public Input? KeysUrl { get; set; } + + public AccessGroupRequireExternalEvaluationArgs() + { + } + } +} diff --git a/sdk/dotnet/Inputs/AccessGroupRequireExternalEvaluationGetArgs.cs b/sdk/dotnet/Inputs/AccessGroupRequireExternalEvaluationGetArgs.cs new file mode 100644 index 00000000..1f0d193e --- /dev/null +++ b/sdk/dotnet/Inputs/AccessGroupRequireExternalEvaluationGetArgs.cs @@ -0,0 +1,25 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Cloudflare.Inputs +{ + + public sealed class AccessGroupRequireExternalEvaluationGetArgs : Pulumi.ResourceArgs + { + [Input("evaluateUrl")] + public Input? EvaluateUrl { get; set; } + + [Input("keysUrl")] + public Input? KeysUrl { get; set; } + + public AccessGroupRequireExternalEvaluationGetArgs() + { + } + } +} diff --git a/sdk/dotnet/Inputs/AccessGroupRequireGetArgs.cs b/sdk/dotnet/Inputs/AccessGroupRequireGetArgs.cs index 0a51d45f..8a9103a3 100644 --- a/sdk/dotnet/Inputs/AccessGroupRequireGetArgs.cs +++ b/sdk/dotnet/Inputs/AccessGroupRequireGetArgs.cs @@ -59,6 +59,9 @@ public InputList Emails [Input("everyone")] public Input? Everyone { get; set; } + [Input("externalEvaluation")] + public Input? ExternalEvaluation { get; set; } + [Input("geos")] private InputList? _geos; public InputList Geos diff --git a/sdk/dotnet/Inputs/AccessPolicyExcludeArgs.cs b/sdk/dotnet/Inputs/AccessPolicyExcludeArgs.cs index 5ddf4ec7..da0816c3 100644 --- a/sdk/dotnet/Inputs/AccessPolicyExcludeArgs.cs +++ b/sdk/dotnet/Inputs/AccessPolicyExcludeArgs.cs @@ -59,6 +59,9 @@ public InputList Emails [Input("everyone")] public Input? Everyone { get; set; } + [Input("externalEvaluation")] + public Input? ExternalEvaluation { get; set; } + [Input("geos")] private InputList? _geos; public InputList Geos diff --git a/sdk/dotnet/Inputs/AccessPolicyExcludeExternalEvaluationArgs.cs b/sdk/dotnet/Inputs/AccessPolicyExcludeExternalEvaluationArgs.cs new file mode 100644 index 00000000..2f789280 --- /dev/null +++ b/sdk/dotnet/Inputs/AccessPolicyExcludeExternalEvaluationArgs.cs @@ -0,0 +1,25 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Cloudflare.Inputs +{ + + public sealed class AccessPolicyExcludeExternalEvaluationArgs : Pulumi.ResourceArgs + { + [Input("evaluateUrl")] + public Input? EvaluateUrl { get; set; } + + [Input("keysUrl")] + public Input? KeysUrl { get; set; } + + public AccessPolicyExcludeExternalEvaluationArgs() + { + } + } +} diff --git a/sdk/dotnet/Inputs/AccessPolicyExcludeExternalEvaluationGetArgs.cs b/sdk/dotnet/Inputs/AccessPolicyExcludeExternalEvaluationGetArgs.cs new file mode 100644 index 00000000..4a59fc71 --- /dev/null +++ b/sdk/dotnet/Inputs/AccessPolicyExcludeExternalEvaluationGetArgs.cs @@ -0,0 +1,25 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Cloudflare.Inputs +{ + + public sealed class AccessPolicyExcludeExternalEvaluationGetArgs : Pulumi.ResourceArgs + { + [Input("evaluateUrl")] + public Input? EvaluateUrl { get; set; } + + [Input("keysUrl")] + public Input? KeysUrl { get; set; } + + public AccessPolicyExcludeExternalEvaluationGetArgs() + { + } + } +} diff --git a/sdk/dotnet/Inputs/AccessPolicyExcludeGetArgs.cs b/sdk/dotnet/Inputs/AccessPolicyExcludeGetArgs.cs index 289572de..ec8dd4a1 100644 --- a/sdk/dotnet/Inputs/AccessPolicyExcludeGetArgs.cs +++ b/sdk/dotnet/Inputs/AccessPolicyExcludeGetArgs.cs @@ -59,6 +59,9 @@ public InputList Emails [Input("everyone")] public Input? Everyone { get; set; } + [Input("externalEvaluation")] + public Input? ExternalEvaluation { get; set; } + [Input("geos")] private InputList? _geos; public InputList Geos diff --git a/sdk/dotnet/Inputs/AccessPolicyIncludeArgs.cs b/sdk/dotnet/Inputs/AccessPolicyIncludeArgs.cs index e75a13ec..f721bd62 100644 --- a/sdk/dotnet/Inputs/AccessPolicyIncludeArgs.cs +++ b/sdk/dotnet/Inputs/AccessPolicyIncludeArgs.cs @@ -59,6 +59,9 @@ public InputList Emails [Input("everyone")] public Input? Everyone { get; set; } + [Input("externalEvaluation")] + public Input? ExternalEvaluation { get; set; } + [Input("geos")] private InputList? _geos; public InputList Geos diff --git a/sdk/dotnet/Inputs/AccessPolicyIncludeExternalEvaluationArgs.cs b/sdk/dotnet/Inputs/AccessPolicyIncludeExternalEvaluationArgs.cs new file mode 100644 index 00000000..65a84ba7 --- /dev/null +++ b/sdk/dotnet/Inputs/AccessPolicyIncludeExternalEvaluationArgs.cs @@ -0,0 +1,25 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Cloudflare.Inputs +{ + + public sealed class AccessPolicyIncludeExternalEvaluationArgs : Pulumi.ResourceArgs + { + [Input("evaluateUrl")] + public Input? EvaluateUrl { get; set; } + + [Input("keysUrl")] + public Input? KeysUrl { get; set; } + + public AccessPolicyIncludeExternalEvaluationArgs() + { + } + } +} diff --git a/sdk/dotnet/Inputs/AccessPolicyIncludeExternalEvaluationGetArgs.cs b/sdk/dotnet/Inputs/AccessPolicyIncludeExternalEvaluationGetArgs.cs new file mode 100644 index 00000000..4f1c52bd --- /dev/null +++ b/sdk/dotnet/Inputs/AccessPolicyIncludeExternalEvaluationGetArgs.cs @@ -0,0 +1,25 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Cloudflare.Inputs +{ + + public sealed class AccessPolicyIncludeExternalEvaluationGetArgs : Pulumi.ResourceArgs + { + [Input("evaluateUrl")] + public Input? EvaluateUrl { get; set; } + + [Input("keysUrl")] + public Input? KeysUrl { get; set; } + + public AccessPolicyIncludeExternalEvaluationGetArgs() + { + } + } +} diff --git a/sdk/dotnet/Inputs/AccessPolicyIncludeGetArgs.cs b/sdk/dotnet/Inputs/AccessPolicyIncludeGetArgs.cs index 0bc6bc23..a9a24dde 100644 --- a/sdk/dotnet/Inputs/AccessPolicyIncludeGetArgs.cs +++ b/sdk/dotnet/Inputs/AccessPolicyIncludeGetArgs.cs @@ -59,6 +59,9 @@ public InputList Emails [Input("everyone")] public Input? Everyone { get; set; } + [Input("externalEvaluation")] + public Input? ExternalEvaluation { get; set; } + [Input("geos")] private InputList? _geos; public InputList Geos diff --git a/sdk/dotnet/Inputs/AccessPolicyRequireArgs.cs b/sdk/dotnet/Inputs/AccessPolicyRequireArgs.cs index 67b4b690..34b11114 100644 --- a/sdk/dotnet/Inputs/AccessPolicyRequireArgs.cs +++ b/sdk/dotnet/Inputs/AccessPolicyRequireArgs.cs @@ -59,6 +59,9 @@ public InputList Emails [Input("everyone")] public Input? Everyone { get; set; } + [Input("externalEvaluation")] + public Input? ExternalEvaluation { get; set; } + [Input("geos")] private InputList? _geos; public InputList Geos diff --git a/sdk/dotnet/Inputs/AccessPolicyRequireExternalEvaluationArgs.cs b/sdk/dotnet/Inputs/AccessPolicyRequireExternalEvaluationArgs.cs new file mode 100644 index 00000000..169a4ea9 --- /dev/null +++ b/sdk/dotnet/Inputs/AccessPolicyRequireExternalEvaluationArgs.cs @@ -0,0 +1,25 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Cloudflare.Inputs +{ + + public sealed class AccessPolicyRequireExternalEvaluationArgs : Pulumi.ResourceArgs + { + [Input("evaluateUrl")] + public Input? EvaluateUrl { get; set; } + + [Input("keysUrl")] + public Input? KeysUrl { get; set; } + + public AccessPolicyRequireExternalEvaluationArgs() + { + } + } +} diff --git a/sdk/dotnet/Inputs/AccessPolicyRequireExternalEvaluationGetArgs.cs b/sdk/dotnet/Inputs/AccessPolicyRequireExternalEvaluationGetArgs.cs new file mode 100644 index 00000000..a8cfd76a --- /dev/null +++ b/sdk/dotnet/Inputs/AccessPolicyRequireExternalEvaluationGetArgs.cs @@ -0,0 +1,25 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Cloudflare.Inputs +{ + + public sealed class AccessPolicyRequireExternalEvaluationGetArgs : Pulumi.ResourceArgs + { + [Input("evaluateUrl")] + public Input? EvaluateUrl { get; set; } + + [Input("keysUrl")] + public Input? KeysUrl { get; set; } + + public AccessPolicyRequireExternalEvaluationGetArgs() + { + } + } +} diff --git a/sdk/dotnet/Inputs/AccessPolicyRequireGetArgs.cs b/sdk/dotnet/Inputs/AccessPolicyRequireGetArgs.cs index 2374f641..0a6b2bb2 100644 --- a/sdk/dotnet/Inputs/AccessPolicyRequireGetArgs.cs +++ b/sdk/dotnet/Inputs/AccessPolicyRequireGetArgs.cs @@ -59,6 +59,9 @@ public InputList Emails [Input("everyone")] public Input? Everyone { get; set; } + [Input("externalEvaluation")] + public Input? ExternalEvaluation { get; set; } + [Input("geos")] private InputList? _geos; public InputList Geos diff --git a/sdk/dotnet/Inputs/RulesetRuleActionParametersArgs.cs b/sdk/dotnet/Inputs/RulesetRuleActionParametersArgs.cs index 6ceaf4c1..d4af5b58 100644 --- a/sdk/dotnet/Inputs/RulesetRuleActionParametersArgs.cs +++ b/sdk/dotnet/Inputs/RulesetRuleActionParametersArgs.cs @@ -12,6 +12,18 @@ namespace Pulumi.Cloudflare.Inputs public sealed class RulesetRuleActionParametersArgs : Pulumi.ResourceArgs { + [Input("cookieFields")] + private InputList? _cookieFields; + + /// + /// List of cookie values to include as part of custom fields logging. + /// + public InputList CookieFields + { + get => _cookieFields ?? (_cookieFields = new InputList()); + set => _cookieFields = value; + } + [Input("headers")] private InputList? _headers; @@ -77,6 +89,30 @@ public InputList Products set => _products = value; } + [Input("requestFields")] + private InputList? _requestFields; + + /// + /// List of request headers to include as part of custom fields logging, in lowercase. + /// + public InputList RequestFields + { + get => _requestFields ?? (_requestFields = new InputList()); + set => _requestFields = value; + } + + [Input("responseFields")] + private InputList? _responseFields; + + /// + /// List of response headers to include as part of custom fields logging, in lowercase. + /// + public InputList ResponseFields + { + get => _responseFields ?? (_responseFields = new InputList()); + set => _responseFields = value; + } + [Input("responses")] private InputList? _responses; diff --git a/sdk/dotnet/Inputs/RulesetRuleActionParametersGetArgs.cs b/sdk/dotnet/Inputs/RulesetRuleActionParametersGetArgs.cs index e646c714..f5d59641 100644 --- a/sdk/dotnet/Inputs/RulesetRuleActionParametersGetArgs.cs +++ b/sdk/dotnet/Inputs/RulesetRuleActionParametersGetArgs.cs @@ -12,6 +12,18 @@ namespace Pulumi.Cloudflare.Inputs public sealed class RulesetRuleActionParametersGetArgs : Pulumi.ResourceArgs { + [Input("cookieFields")] + private InputList? _cookieFields; + + /// + /// List of cookie values to include as part of custom fields logging. + /// + public InputList CookieFields + { + get => _cookieFields ?? (_cookieFields = new InputList()); + set => _cookieFields = value; + } + [Input("headers")] private InputList? _headers; @@ -77,6 +89,30 @@ public InputList Products set => _products = value; } + [Input("requestFields")] + private InputList? _requestFields; + + /// + /// List of request headers to include as part of custom fields logging, in lowercase. + /// + public InputList RequestFields + { + get => _requestFields ?? (_requestFields = new InputList()); + set => _requestFields = value; + } + + [Input("responseFields")] + private InputList? _responseFields; + + /// + /// List of response headers to include as part of custom fields logging, in lowercase. + /// + public InputList ResponseFields + { + get => _responseFields ?? (_responseFields = new InputList()); + set => _responseFields = value; + } + [Input("responses")] private InputList? _responses; diff --git a/sdk/dotnet/LogpushJob.cs b/sdk/dotnet/LogpushJob.cs index 643c3ae8..a0719278 100644 --- a/sdk/dotnet/LogpushJob.cs +++ b/sdk/dotnet/LogpushJob.cs @@ -49,6 +49,7 @@ namespace Pulumi.Cloudflare /// Dataset = "http_requests", /// DestinationConf = "s3://my-bucket-path?region=us-west-2", /// Enabled = true, + /// Frequency = "high", /// LogpullOptions = "fields=RayID,ClientIP,EdgeStartTimestamp&timestamps=rfc3339", /// Name = "My-logpush-job", /// OwnershipChallenge = "0000000000000", @@ -102,6 +103,12 @@ public partial class LogpushJob : Pulumi.CustomResource [Output("enabled")] public Output Enabled { get; private set; } = null!; + /// + /// `"high"` or `"low"`. A higher frequency will result in logs being pushed on faster with smaller files. `"low"` frequency will push logs less often with larger files. + /// + [Output("frequency")] + public Output Frequency { get; private set; } = null!; + /// /// Configuration string for the Logshare API. It specifies things like requested fields and timestamp formats. See [Logpull options documentation](https://developers.cloudflare.com/logs/logpush/logpush-configuration-api/understanding-logpush-api/#options). /// @@ -199,6 +206,12 @@ public sealed class LogpushJobArgs : Pulumi.ResourceArgs [Input("enabled")] public Input? Enabled { get; set; } + /// + /// `"high"` or `"low"`. A higher frequency will result in logs being pushed on faster with smaller files. `"low"` frequency will push logs less often with larger files. + /// + [Input("frequency")] + public Input? Frequency { get; set; } + /// /// Configuration string for the Logshare API. It specifies things like requested fields and timestamp formats. See [Logpull options documentation](https://developers.cloudflare.com/logs/logpush/logpush-configuration-api/understanding-logpush-api/#options). /// @@ -257,6 +270,12 @@ public sealed class LogpushJobState : Pulumi.ResourceArgs [Input("enabled")] public Input? Enabled { get; set; } + /// + /// `"high"` or `"low"`. A higher frequency will result in logs being pushed on faster with smaller files. `"low"` frequency will push logs less often with larger files. + /// + [Input("frequency")] + public Input? Frequency { get; set; } + /// /// Configuration string for the Logshare API. It specifies things like requested fields and timestamp formats. See [Logpull options documentation](https://developers.cloudflare.com/logs/logpush/logpush-configuration-api/understanding-logpush-api/#options). /// diff --git a/sdk/dotnet/Outputs/AccessGroupExclude.cs b/sdk/dotnet/Outputs/AccessGroupExclude.cs index fec802c0..3321243f 100644 --- a/sdk/dotnet/Outputs/AccessGroupExclude.cs +++ b/sdk/dotnet/Outputs/AccessGroupExclude.cs @@ -22,6 +22,7 @@ public sealed class AccessGroupExclude public readonly ImmutableArray EmailDomains; public readonly ImmutableArray Emails; public readonly bool? Everyone; + public readonly Outputs.AccessGroupExcludeExternalEvaluation? ExternalEvaluation; public readonly ImmutableArray Geos; public readonly ImmutableArray Githubs; public readonly ImmutableArray Groups; @@ -52,6 +53,8 @@ private AccessGroupExclude( bool? everyone, + Outputs.AccessGroupExcludeExternalEvaluation? externalEvaluation, + ImmutableArray geos, ImmutableArray githubs, @@ -79,6 +82,7 @@ private AccessGroupExclude( EmailDomains = emailDomains; Emails = emails; Everyone = everyone; + ExternalEvaluation = externalEvaluation; Geos = geos; Githubs = githubs; Groups = groups; diff --git a/sdk/dotnet/Outputs/AccessGroupExcludeExternalEvaluation.cs b/sdk/dotnet/Outputs/AccessGroupExcludeExternalEvaluation.cs new file mode 100644 index 00000000..848f351a --- /dev/null +++ b/sdk/dotnet/Outputs/AccessGroupExcludeExternalEvaluation.cs @@ -0,0 +1,29 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Cloudflare.Outputs +{ + + [OutputType] + public sealed class AccessGroupExcludeExternalEvaluation + { + public readonly string? EvaluateUrl; + public readonly string? KeysUrl; + + [OutputConstructor] + private AccessGroupExcludeExternalEvaluation( + string? evaluateUrl, + + string? keysUrl) + { + EvaluateUrl = evaluateUrl; + KeysUrl = keysUrl; + } + } +} diff --git a/sdk/dotnet/Outputs/AccessGroupInclude.cs b/sdk/dotnet/Outputs/AccessGroupInclude.cs index 8296896f..7c333574 100644 --- a/sdk/dotnet/Outputs/AccessGroupInclude.cs +++ b/sdk/dotnet/Outputs/AccessGroupInclude.cs @@ -22,6 +22,7 @@ public sealed class AccessGroupInclude public readonly ImmutableArray EmailDomains; public readonly ImmutableArray Emails; public readonly bool? Everyone; + public readonly Outputs.AccessGroupIncludeExternalEvaluation? ExternalEvaluation; public readonly ImmutableArray Geos; public readonly ImmutableArray Githubs; public readonly ImmutableArray Groups; @@ -52,6 +53,8 @@ private AccessGroupInclude( bool? everyone, + Outputs.AccessGroupIncludeExternalEvaluation? externalEvaluation, + ImmutableArray geos, ImmutableArray githubs, @@ -79,6 +82,7 @@ private AccessGroupInclude( EmailDomains = emailDomains; Emails = emails; Everyone = everyone; + ExternalEvaluation = externalEvaluation; Geos = geos; Githubs = githubs; Groups = groups; diff --git a/sdk/dotnet/Outputs/AccessGroupIncludeExternalEvaluation.cs b/sdk/dotnet/Outputs/AccessGroupIncludeExternalEvaluation.cs new file mode 100644 index 00000000..dce655b7 --- /dev/null +++ b/sdk/dotnet/Outputs/AccessGroupIncludeExternalEvaluation.cs @@ -0,0 +1,29 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Cloudflare.Outputs +{ + + [OutputType] + public sealed class AccessGroupIncludeExternalEvaluation + { + public readonly string? EvaluateUrl; + public readonly string? KeysUrl; + + [OutputConstructor] + private AccessGroupIncludeExternalEvaluation( + string? evaluateUrl, + + string? keysUrl) + { + EvaluateUrl = evaluateUrl; + KeysUrl = keysUrl; + } + } +} diff --git a/sdk/dotnet/Outputs/AccessGroupRequire.cs b/sdk/dotnet/Outputs/AccessGroupRequire.cs index 44e3af92..33cadd3f 100644 --- a/sdk/dotnet/Outputs/AccessGroupRequire.cs +++ b/sdk/dotnet/Outputs/AccessGroupRequire.cs @@ -22,6 +22,7 @@ public sealed class AccessGroupRequire public readonly ImmutableArray EmailDomains; public readonly ImmutableArray Emails; public readonly bool? Everyone; + public readonly Outputs.AccessGroupRequireExternalEvaluation? ExternalEvaluation; public readonly ImmutableArray Geos; public readonly ImmutableArray Githubs; public readonly ImmutableArray Groups; @@ -52,6 +53,8 @@ private AccessGroupRequire( bool? everyone, + Outputs.AccessGroupRequireExternalEvaluation? externalEvaluation, + ImmutableArray geos, ImmutableArray githubs, @@ -79,6 +82,7 @@ private AccessGroupRequire( EmailDomains = emailDomains; Emails = emails; Everyone = everyone; + ExternalEvaluation = externalEvaluation; Geos = geos; Githubs = githubs; Groups = groups; diff --git a/sdk/dotnet/Outputs/AccessGroupRequireExternalEvaluation.cs b/sdk/dotnet/Outputs/AccessGroupRequireExternalEvaluation.cs new file mode 100644 index 00000000..347f408f --- /dev/null +++ b/sdk/dotnet/Outputs/AccessGroupRequireExternalEvaluation.cs @@ -0,0 +1,29 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Cloudflare.Outputs +{ + + [OutputType] + public sealed class AccessGroupRequireExternalEvaluation + { + public readonly string? EvaluateUrl; + public readonly string? KeysUrl; + + [OutputConstructor] + private AccessGroupRequireExternalEvaluation( + string? evaluateUrl, + + string? keysUrl) + { + EvaluateUrl = evaluateUrl; + KeysUrl = keysUrl; + } + } +} diff --git a/sdk/dotnet/Outputs/AccessPolicyExclude.cs b/sdk/dotnet/Outputs/AccessPolicyExclude.cs index 02228b8a..0b4d5278 100644 --- a/sdk/dotnet/Outputs/AccessPolicyExclude.cs +++ b/sdk/dotnet/Outputs/AccessPolicyExclude.cs @@ -22,6 +22,7 @@ public sealed class AccessPolicyExclude public readonly ImmutableArray EmailDomains; public readonly ImmutableArray Emails; public readonly bool? Everyone; + public readonly Outputs.AccessPolicyExcludeExternalEvaluation? ExternalEvaluation; public readonly ImmutableArray Geos; public readonly ImmutableArray Githubs; public readonly ImmutableArray Groups; @@ -52,6 +53,8 @@ private AccessPolicyExclude( bool? everyone, + Outputs.AccessPolicyExcludeExternalEvaluation? externalEvaluation, + ImmutableArray geos, ImmutableArray githubs, @@ -79,6 +82,7 @@ private AccessPolicyExclude( EmailDomains = emailDomains; Emails = emails; Everyone = everyone; + ExternalEvaluation = externalEvaluation; Geos = geos; Githubs = githubs; Groups = groups; diff --git a/sdk/dotnet/Outputs/AccessPolicyExcludeExternalEvaluation.cs b/sdk/dotnet/Outputs/AccessPolicyExcludeExternalEvaluation.cs new file mode 100644 index 00000000..8349271e --- /dev/null +++ b/sdk/dotnet/Outputs/AccessPolicyExcludeExternalEvaluation.cs @@ -0,0 +1,29 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Cloudflare.Outputs +{ + + [OutputType] + public sealed class AccessPolicyExcludeExternalEvaluation + { + public readonly string? EvaluateUrl; + public readonly string? KeysUrl; + + [OutputConstructor] + private AccessPolicyExcludeExternalEvaluation( + string? evaluateUrl, + + string? keysUrl) + { + EvaluateUrl = evaluateUrl; + KeysUrl = keysUrl; + } + } +} diff --git a/sdk/dotnet/Outputs/AccessPolicyInclude.cs b/sdk/dotnet/Outputs/AccessPolicyInclude.cs index 23cff8a9..a23dd89e 100644 --- a/sdk/dotnet/Outputs/AccessPolicyInclude.cs +++ b/sdk/dotnet/Outputs/AccessPolicyInclude.cs @@ -22,6 +22,7 @@ public sealed class AccessPolicyInclude public readonly ImmutableArray EmailDomains; public readonly ImmutableArray Emails; public readonly bool? Everyone; + public readonly Outputs.AccessPolicyIncludeExternalEvaluation? ExternalEvaluation; public readonly ImmutableArray Geos; public readonly ImmutableArray Githubs; public readonly ImmutableArray Groups; @@ -52,6 +53,8 @@ private AccessPolicyInclude( bool? everyone, + Outputs.AccessPolicyIncludeExternalEvaluation? externalEvaluation, + ImmutableArray geos, ImmutableArray githubs, @@ -79,6 +82,7 @@ private AccessPolicyInclude( EmailDomains = emailDomains; Emails = emails; Everyone = everyone; + ExternalEvaluation = externalEvaluation; Geos = geos; Githubs = githubs; Groups = groups; diff --git a/sdk/dotnet/Outputs/AccessPolicyIncludeExternalEvaluation.cs b/sdk/dotnet/Outputs/AccessPolicyIncludeExternalEvaluation.cs new file mode 100644 index 00000000..bc9965c6 --- /dev/null +++ b/sdk/dotnet/Outputs/AccessPolicyIncludeExternalEvaluation.cs @@ -0,0 +1,29 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Cloudflare.Outputs +{ + + [OutputType] + public sealed class AccessPolicyIncludeExternalEvaluation + { + public readonly string? EvaluateUrl; + public readonly string? KeysUrl; + + [OutputConstructor] + private AccessPolicyIncludeExternalEvaluation( + string? evaluateUrl, + + string? keysUrl) + { + EvaluateUrl = evaluateUrl; + KeysUrl = keysUrl; + } + } +} diff --git a/sdk/dotnet/Outputs/AccessPolicyRequire.cs b/sdk/dotnet/Outputs/AccessPolicyRequire.cs index 5b660e3a..4936a433 100644 --- a/sdk/dotnet/Outputs/AccessPolicyRequire.cs +++ b/sdk/dotnet/Outputs/AccessPolicyRequire.cs @@ -22,6 +22,7 @@ public sealed class AccessPolicyRequire public readonly ImmutableArray EmailDomains; public readonly ImmutableArray Emails; public readonly bool? Everyone; + public readonly Outputs.AccessPolicyRequireExternalEvaluation? ExternalEvaluation; public readonly ImmutableArray Geos; public readonly ImmutableArray Githubs; public readonly ImmutableArray Groups; @@ -52,6 +53,8 @@ private AccessPolicyRequire( bool? everyone, + Outputs.AccessPolicyRequireExternalEvaluation? externalEvaluation, + ImmutableArray geos, ImmutableArray githubs, @@ -79,6 +82,7 @@ private AccessPolicyRequire( EmailDomains = emailDomains; Emails = emails; Everyone = everyone; + ExternalEvaluation = externalEvaluation; Geos = geos; Githubs = githubs; Groups = groups; diff --git a/sdk/dotnet/Outputs/AccessPolicyRequireExternalEvaluation.cs b/sdk/dotnet/Outputs/AccessPolicyRequireExternalEvaluation.cs new file mode 100644 index 00000000..3293220a --- /dev/null +++ b/sdk/dotnet/Outputs/AccessPolicyRequireExternalEvaluation.cs @@ -0,0 +1,29 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Cloudflare.Outputs +{ + + [OutputType] + public sealed class AccessPolicyRequireExternalEvaluation + { + public readonly string? EvaluateUrl; + public readonly string? KeysUrl; + + [OutputConstructor] + private AccessPolicyRequireExternalEvaluation( + string? evaluateUrl, + + string? keysUrl) + { + EvaluateUrl = evaluateUrl; + KeysUrl = keysUrl; + } + } +} diff --git a/sdk/dotnet/Outputs/RulesetRuleActionParameters.cs b/sdk/dotnet/Outputs/RulesetRuleActionParameters.cs index d090bc3d..1d64d168 100644 --- a/sdk/dotnet/Outputs/RulesetRuleActionParameters.cs +++ b/sdk/dotnet/Outputs/RulesetRuleActionParameters.cs @@ -13,6 +13,10 @@ namespace Pulumi.Cloudflare.Outputs [OutputType] public sealed class RulesetRuleActionParameters { + /// + /// List of cookie values to include as part of custom fields logging. + /// + public readonly ImmutableArray CookieFields; /// /// List of HTTP header modifications to perform in the ruleset rule (refer to the nested schema). /// @@ -44,6 +48,14 @@ public sealed class RulesetRuleActionParameters /// public readonly ImmutableArray Products; /// + /// List of request headers to include as part of custom fields logging, in lowercase. + /// + public readonly ImmutableArray RequestFields; + /// + /// List of response headers to include as part of custom fields logging, in lowercase. + /// + public readonly ImmutableArray ResponseFields; + /// /// List of parameters that configure the response given to end users (refer to the nested schema). /// public readonly ImmutableArray Responses; @@ -67,6 +79,8 @@ public sealed class RulesetRuleActionParameters [OutputConstructor] private RulesetRuleActionParameters( + ImmutableArray cookieFields, + ImmutableArray headers, string? hostHeader, @@ -85,6 +99,10 @@ private RulesetRuleActionParameters( ImmutableArray products, + ImmutableArray requestFields, + + ImmutableArray responseFields, + ImmutableArray responses, ImmutableDictionary? rules, @@ -97,6 +115,7 @@ private RulesetRuleActionParameters( string? version) { + CookieFields = cookieFields; Headers = headers; HostHeader = hostHeader; Id = id; @@ -106,6 +125,8 @@ private RulesetRuleActionParameters( Overrides = overrides; Phases = phases; Products = products; + RequestFields = requestFields; + ResponseFields = responseFields; Responses = responses; Rules = rules; Ruleset = ruleset; diff --git a/sdk/dotnet/Ruleset.cs b/sdk/dotnet/Ruleset.cs index 8ee5c7c5..a228badb 100644 --- a/sdk/dotnet/Ruleset.cs +++ b/sdk/dotnet/Ruleset.cs @@ -260,6 +260,46 @@ namespace Pulumi.Cloudflare /// }, /// ZoneId = "cb029e245cfdd66dc8d2e570d5dd3322", /// }); + /// // custom fields logging + /// var customFieldsLoggingExample = new Cloudflare.Ruleset("customFieldsLoggingExample", new Cloudflare.RulesetArgs + /// { + /// Description = "add custom fields to logging", + /// Kind = "zone", + /// Name = "log custom fields", + /// Phase = "http_log_custom_fields", + /// Rules = + /// { + /// new Cloudflare.Inputs.RulesetRuleArgs + /// { + /// Action = "log_custom_field", + /// ActionParameters = new Cloudflare.Inputs.RulesetRuleActionParametersArgs + /// { + /// CookieFields = + /// { + /// "__ga", + /// "accountNumber", + /// "__cfruid", + /// }, + /// RequestFields = + /// { + /// "content-type", + /// "x-forwarded-for", + /// "host", + /// }, + /// ResponseFields = + /// { + /// "server", + /// "content-type", + /// "allow", + /// }, + /// }, + /// Description = "log custom fields rule", + /// Enabled = true, + /// Expression = "true", + /// }, + /// }, + /// ZoneId = "cb029e245cfdd66dc8d2e570d5dd3322", + /// }); /// } /// /// } diff --git a/sdk/dotnet/TunnelRoute.cs b/sdk/dotnet/TunnelRoute.cs index 2ee27066..01b2ac26 100644 --- a/sdk/dotnet/TunnelRoute.cs +++ b/sdk/dotnet/TunnelRoute.cs @@ -29,6 +29,7 @@ namespace Pulumi.Cloudflare /// Comment = "New tunnel route for documentation", /// Network = "192.0.2.24/32", /// TunnelId = "f70ff985-a4ef-4643-bbbc-4a0ed4fc8415", + /// VirtualNetworkId = "bdc39a3c-3104-4c23-8ac0-9f455dda691a", /// }); /// } /// @@ -55,6 +56,7 @@ namespace Pulumi.Cloudflare /// TunnelId = tunnel.Id, /// Network = "192.0.2.24/32", /// Comment = "New tunnel route for documentation", + /// VirtualNetworkId = "bdc39a3c-3104-4c23-8ac0-9f455dda691a", /// }); /// } /// @@ -63,11 +65,17 @@ namespace Pulumi.Cloudflare /// /// ## Import /// - /// An existing tunnel route can be imported using the account ID and network CIDR. + /// An existing tunnel route can be imported using the account ID and network CIDR /// /// ```sh /// $ pulumi import cloudflare:index/tunnelRoute:TunnelRoute cloudflare_tunnel_route c4a7362d577a6c3019a474fd6f485821/192.0.2.24/32 /// ``` + /// + /// or using account ID, network CIDR and virtual network ID. + /// + /// ```sh + /// $ pulumi import cloudflare:index/tunnelRoute:TunnelRoute cloudflare_tunnel_route c4a7362d577a6c3019a474fd6f485821/192.0.2.24/32/bdc39a3c-3104-4c23-8ac0-9f455dda691a + /// ``` /// [CloudflareResourceType("cloudflare:index/tunnelRoute:TunnelRoute")] public partial class TunnelRoute : Pulumi.CustomResource @@ -96,6 +104,12 @@ public partial class TunnelRoute : Pulumi.CustomResource [Output("tunnelId")] public Output TunnelId { get; private set; } = null!; + /// + /// The ID of the virtual network for which this route is being added; uses the default virtual network of the account if none is provided. + /// + [Output("virtualNetworkId")] + public Output VirtualNetworkId { get; private set; } = null!; + /// /// Create a TunnelRoute resource with the given unique name, arguments, and options. @@ -166,6 +180,12 @@ public sealed class TunnelRouteArgs : Pulumi.ResourceArgs [Input("tunnelId", required: true)] public Input TunnelId { get; set; } = null!; + /// + /// The ID of the virtual network for which this route is being added; uses the default virtual network of the account if none is provided. + /// + [Input("virtualNetworkId")] + public Input? VirtualNetworkId { get; set; } + public TunnelRouteArgs() { } @@ -197,6 +217,12 @@ public sealed class TunnelRouteState : Pulumi.ResourceArgs [Input("tunnelId")] public Input? TunnelId { get; set; } + /// + /// The ID of the virtual network for which this route is being added; uses the default virtual network of the account if none is provided. + /// + [Input("virtualNetworkId")] + public Input? VirtualNetworkId { get; set; } + public TunnelRouteState() { } diff --git a/sdk/dotnet/TunnelVirtualNetwork.cs b/sdk/dotnet/TunnelVirtualNetwork.cs new file mode 100644 index 00000000..63932914 --- /dev/null +++ b/sdk/dotnet/TunnelVirtualNetwork.cs @@ -0,0 +1,178 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +using System; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading.Tasks; +using Pulumi.Serialization; + +namespace Pulumi.Cloudflare +{ + /// + /// Provides a resource, that manages Cloudflare tunnel virtual networks for Zero Trust. Tunnel + /// virtual networks are used for segregation of Tunnel IP Routes via Virtualized Networks to + /// handle overlapping private IPs in your origins.. + /// + /// ## Example Usage + /// + /// ```csharp + /// using Pulumi; + /// using Cloudflare = Pulumi.Cloudflare; + /// + /// class MyStack : Stack + /// { + /// public MyStack() + /// { + /// var example = new Cloudflare.TunnelVirtualNetwork("example", new Cloudflare.TunnelVirtualNetworkArgs + /// { + /// AccountId = "c4a7362d577a6c3019a474fd6f485821", + /// Comment = "New tunnel virtual network for documentation", + /// Name = "vnet-for-documentation", + /// }); + /// } + /// + /// } + /// ``` + /// + /// ## Import + /// + /// An existing tunnel virtual networks can be imported using the account ID and virtual network ID. + /// + /// ```sh + /// $ pulumi import cloudflare:index/tunnelVirtualNetwork:TunnelVirtualNetwork cloudflare_tunnel_virtual_network c4a7362d577a6c3019a474fd6f485821/3c8ff8af-b487-45bd-89e3-4c85a1532600 + /// ``` + /// + [CloudflareResourceType("cloudflare:index/tunnelVirtualNetwork:TunnelVirtualNetwork")] + public partial class TunnelVirtualNetwork : Pulumi.CustomResource + { + /// + /// The ID of the account where the tunnel virtual network is being created. + /// + [Output("accountId")] + public Output AccountId { get; private set; } = null!; + + /// + /// Description of the tunnel virtual network. + /// + [Output("comment")] + public Output Comment { get; private set; } = null!; + + /// + /// Whether this virtual network is the default one for the account. This means IP Routes belong to this virtual network and Teams Clients in the account route through this virtual network, unless specified otherwise for each case. + /// + [Output("isDefaultNetwork")] + public Output IsDefaultNetwork { get; private set; } = null!; + + /// + /// A user-friendly name chosen when the virtual network is created. + /// + [Output("name")] + public Output Name { get; private set; } = null!; + + + /// + /// Create a TunnelVirtualNetwork resource with the given unique name, arguments, and options. + /// + /// + /// The unique name of the resource + /// The arguments used to populate this resource's properties + /// A bag of options that control this resource's behavior + public TunnelVirtualNetwork(string name, TunnelVirtualNetworkArgs args, CustomResourceOptions? options = null) + : base("cloudflare:index/tunnelVirtualNetwork:TunnelVirtualNetwork", name, args ?? new TunnelVirtualNetworkArgs(), MakeResourceOptions(options, "")) + { + } + + private TunnelVirtualNetwork(string name, Input id, TunnelVirtualNetworkState? state = null, CustomResourceOptions? options = null) + : base("cloudflare:index/tunnelVirtualNetwork:TunnelVirtualNetwork", name, state, MakeResourceOptions(options, id)) + { + } + + private static CustomResourceOptions MakeResourceOptions(CustomResourceOptions? options, Input? id) + { + var defaultOptions = new CustomResourceOptions + { + Version = Utilities.Version, + }; + var merged = CustomResourceOptions.Merge(defaultOptions, options); + // Override the ID if one was specified for consistency with other language SDKs. + merged.Id = id ?? merged.Id; + return merged; + } + /// + /// Get an existing TunnelVirtualNetwork resource's state with the given name, ID, and optional extra + /// properties used to qualify the lookup. + /// + /// + /// The unique name of the resulting resource. + /// The unique provider ID of the resource to lookup. + /// Any extra arguments used during the lookup. + /// A bag of options that control this resource's behavior + public static TunnelVirtualNetwork Get(string name, Input id, TunnelVirtualNetworkState? state = null, CustomResourceOptions? options = null) + { + return new TunnelVirtualNetwork(name, id, state, options); + } + } + + public sealed class TunnelVirtualNetworkArgs : Pulumi.ResourceArgs + { + /// + /// The ID of the account where the tunnel virtual network is being created. + /// + [Input("accountId", required: true)] + public Input AccountId { get; set; } = null!; + + /// + /// Description of the tunnel virtual network. + /// + [Input("comment")] + public Input? Comment { get; set; } + + /// + /// Whether this virtual network is the default one for the account. This means IP Routes belong to this virtual network and Teams Clients in the account route through this virtual network, unless specified otherwise for each case. + /// + [Input("isDefaultNetwork")] + public Input? IsDefaultNetwork { get; set; } + + /// + /// A user-friendly name chosen when the virtual network is created. + /// + [Input("name", required: true)] + public Input Name { get; set; } = null!; + + public TunnelVirtualNetworkArgs() + { + } + } + + public sealed class TunnelVirtualNetworkState : Pulumi.ResourceArgs + { + /// + /// The ID of the account where the tunnel virtual network is being created. + /// + [Input("accountId")] + public Input? AccountId { get; set; } + + /// + /// Description of the tunnel virtual network. + /// + [Input("comment")] + public Input? Comment { get; set; } + + /// + /// Whether this virtual network is the default one for the account. This means IP Routes belong to this virtual network and Teams Clients in the account route through this virtual network, unless specified otherwise for each case. + /// + [Input("isDefaultNetwork")] + public Input? IsDefaultNetwork { get; set; } + + /// + /// A user-friendly name chosen when the virtual network is created. + /// + [Input("name")] + public Input? Name { get; set; } + + public TunnelVirtualNetworkState() + { + } + } +} diff --git a/sdk/dotnet/WaitingRoom.cs b/sdk/dotnet/WaitingRoom.cs index 1c0efd80..faf00dfb 100644 --- a/sdk/dotnet/WaitingRoom.cs +++ b/sdk/dotnet/WaitingRoom.cs @@ -55,6 +55,12 @@ public partial class WaitingRoom : Pulumi.CustomResource [Output("customPageHtml")] public Output CustomPageHtml { get; private set; } = null!; + /// + /// The language to use for the default waiting room page (refer to the nested schema). + /// + [Output("defaultTemplateLanguage")] + public Output DefaultTemplateLanguage { get; private set; } = null!; + /// /// A description to let users add more details about the waiting room. /// @@ -179,6 +185,12 @@ public sealed class WaitingRoomArgs : Pulumi.ResourceArgs [Input("customPageHtml")] public Input? CustomPageHtml { get; set; } + /// + /// The language to use for the default waiting room page (refer to the nested schema). + /// + [Input("defaultTemplateLanguage")] + public Input? DefaultTemplateLanguage { get; set; } + /// /// A description to let users add more details about the waiting room. /// @@ -264,6 +276,12 @@ public sealed class WaitingRoomState : Pulumi.ResourceArgs [Input("customPageHtml")] public Input? CustomPageHtml { get; set; } + /// + /// The language to use for the default waiting room page (refer to the nested schema). + /// + [Input("defaultTemplateLanguage")] + public Input? DefaultTemplateLanguage { get; set; } + /// /// A description to let users add more details about the waiting room. /// diff --git a/sdk/dotnet/WaitingRoomEvent.cs b/sdk/dotnet/WaitingRoomEvent.cs index fe18d557..d5108a42 100644 --- a/sdk/dotnet/WaitingRoomEvent.cs +++ b/sdk/dotnet/WaitingRoomEvent.cs @@ -12,6 +12,29 @@ namespace Pulumi.Cloudflare /// /// Provides a Cloudflare Waiting Room Event resource. /// + /// ## Example Usage + /// + /// ```csharp + /// using Pulumi; + /// using Cloudflare = Pulumi.Cloudflare; + /// + /// class MyStack : Stack + /// { + /// public MyStack() + /// { + /// var example = new Cloudflare.WaitingRoomEvent("example", new Cloudflare.WaitingRoomEventArgs + /// { + /// EventEndTime = "2006-01-02T20:04:05Z", + /// EventStartTime = "2006-01-02T15:04:05Z", + /// Name = "foo", + /// WaitingRoomId = "d41d8cd98f00b204e9800998ecf8427e", + /// ZoneId = "ae36f999674d196762efcc5abb06b345", + /// }); + /// } + /// + /// } + /// ``` + /// /// ## Import /// /// Waiting room events can be imported using a composite ID formed of zone ID, waiting room ID, and waiting room event ID, e.g. diff --git a/sdk/dotnet/go.mod b/sdk/dotnet/go.mod new file mode 100644 index 00000000..522baad6 --- /dev/null +++ b/sdk/dotnet/go.mod @@ -0,0 +1,3 @@ +module fake_dotnet_module // Exclude this directory from Go tools + +go 1.16 diff --git a/sdk/go/cloudflare/accessApplication.go b/sdk/go/cloudflare/accessApplication.go index f953d808..5ef9d75b 100644 --- a/sdk/go/cloudflare/accessApplication.go +++ b/sdk/go/cloudflare/accessApplication.go @@ -90,8 +90,8 @@ type AccessApplication struct { Domain pulumi.StringOutput `pulumi:"domain"` // Option to provide increased security against compromised authorization tokens and CSRF attacks by requiring an additional "binding" cookie on requests. Defaults to `false`. EnableBindingCookie pulumi.BoolPtrOutput `pulumi:"enableBindingCookie"` - // Option to add the `HttpOnly` cookie flag to access tokens. - HttpOnlyCookieAttribute pulumi.BoolOutput `pulumi:"httpOnlyCookieAttribute"` + // Option to add the `HttpOnly` cookie flag to access tokens. Defaults to `true`. + HttpOnlyCookieAttribute pulumi.BoolPtrOutput `pulumi:"httpOnlyCookieAttribute"` // Image URL for the logo shown in the app launcher // dashboard. LogoUrl pulumi.StringPtrOutput `pulumi:"logoUrl"` @@ -176,7 +176,7 @@ type accessApplicationState struct { Domain *string `pulumi:"domain"` // Option to provide increased security against compromised authorization tokens and CSRF attacks by requiring an additional "binding" cookie on requests. Defaults to `false`. EnableBindingCookie *bool `pulumi:"enableBindingCookie"` - // Option to add the `HttpOnly` cookie flag to access tokens. + // Option to add the `HttpOnly` cookie flag to access tokens. Defaults to `true`. HttpOnlyCookieAttribute *bool `pulumi:"httpOnlyCookieAttribute"` // Image URL for the logo shown in the app launcher // dashboard. @@ -228,7 +228,7 @@ type AccessApplicationState struct { Domain pulumi.StringPtrInput // Option to provide increased security against compromised authorization tokens and CSRF attacks by requiring an additional "binding" cookie on requests. Defaults to `false`. EnableBindingCookie pulumi.BoolPtrInput - // Option to add the `HttpOnly` cookie flag to access tokens. + // Option to add the `HttpOnly` cookie flag to access tokens. Defaults to `true`. HttpOnlyCookieAttribute pulumi.BoolPtrInput // Image URL for the logo shown in the app launcher // dashboard. @@ -282,7 +282,7 @@ type accessApplicationArgs struct { Domain string `pulumi:"domain"` // Option to provide increased security against compromised authorization tokens and CSRF attacks by requiring an additional "binding" cookie on requests. Defaults to `false`. EnableBindingCookie *bool `pulumi:"enableBindingCookie"` - // Option to add the `HttpOnly` cookie flag to access tokens. + // Option to add the `HttpOnly` cookie flag to access tokens. Defaults to `true`. HttpOnlyCookieAttribute *bool `pulumi:"httpOnlyCookieAttribute"` // Image URL for the logo shown in the app launcher // dashboard. @@ -333,7 +333,7 @@ type AccessApplicationArgs struct { Domain pulumi.StringInput // Option to provide increased security against compromised authorization tokens and CSRF attacks by requiring an additional "binding" cookie on requests. Defaults to `false`. EnableBindingCookie pulumi.BoolPtrInput - // Option to add the `HttpOnly` cookie flag to access tokens. + // Option to add the `HttpOnly` cookie flag to access tokens. Defaults to `true`. HttpOnlyCookieAttribute pulumi.BoolPtrInput // Image URL for the logo shown in the app launcher // dashboard. @@ -501,9 +501,9 @@ func (o AccessApplicationOutput) EnableBindingCookie() pulumi.BoolPtrOutput { return o.ApplyT(func(v *AccessApplication) pulumi.BoolPtrOutput { return v.EnableBindingCookie }).(pulumi.BoolPtrOutput) } -// Option to add the `HttpOnly` cookie flag to access tokens. -func (o AccessApplicationOutput) HttpOnlyCookieAttribute() pulumi.BoolOutput { - return o.ApplyT(func(v *AccessApplication) pulumi.BoolOutput { return v.HttpOnlyCookieAttribute }).(pulumi.BoolOutput) +// Option to add the `HttpOnly` cookie flag to access tokens. Defaults to `true`. +func (o AccessApplicationOutput) HttpOnlyCookieAttribute() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *AccessApplication) pulumi.BoolPtrOutput { return v.HttpOnlyCookieAttribute }).(pulumi.BoolPtrOutput) } // Image URL for the logo shown in the app launcher diff --git a/sdk/go/cloudflare/accessGroup.go b/sdk/go/cloudflare/accessGroup.go index 70d59df4..05663805 100644 --- a/sdk/go/cloudflare/accessGroup.go +++ b/sdk/go/cloudflare/accessGroup.go @@ -97,6 +97,8 @@ import ( // * `okta` - (Optional) Use Okta as the `include` condition. Example: // * `saml` - (Optional) Use an external SAML setup as the `include` condition. // Example: +// * `externalEvaluation` - (Optional) Pass a user's identity to an external URL as the `include` condition. +// Example: // // ## Import // diff --git a/sdk/go/cloudflare/argoTunnel.go b/sdk/go/cloudflare/argoTunnel.go index b8364f9b..e9418848 100644 --- a/sdk/go/cloudflare/argoTunnel.go +++ b/sdk/go/cloudflare/argoTunnel.go @@ -58,6 +58,8 @@ type ArgoTunnel struct { Name pulumi.StringOutput `pulumi:"name"` // 32 or more bytes, encoded as a base64 string. The Create Argo Tunnel endpoint sets this as the tunnel's password. Anyone wishing to run the tunnel needs this password. Secret pulumi.StringOutput `pulumi:"secret"` + // Token used by a connector to authenticate and run the tunnel. + TunnelToken pulumi.StringOutput `pulumi:"tunnelToken"` } // NewArgoTunnel registers a new resource with the given unique name, arguments, and options. @@ -106,6 +108,8 @@ type argoTunnelState struct { Name *string `pulumi:"name"` // 32 or more bytes, encoded as a base64 string. The Create Argo Tunnel endpoint sets this as the tunnel's password. Anyone wishing to run the tunnel needs this password. Secret *string `pulumi:"secret"` + // Token used by a connector to authenticate and run the tunnel. + TunnelToken *string `pulumi:"tunnelToken"` } type ArgoTunnelState struct { @@ -117,6 +121,8 @@ type ArgoTunnelState struct { Name pulumi.StringPtrInput // 32 or more bytes, encoded as a base64 string. The Create Argo Tunnel endpoint sets this as the tunnel's password. Anyone wishing to run the tunnel needs this password. Secret pulumi.StringPtrInput + // Token used by a connector to authenticate and run the tunnel. + TunnelToken pulumi.StringPtrInput } func (ArgoTunnelState) ElementType() reflect.Type { @@ -249,6 +255,11 @@ func (o ArgoTunnelOutput) Secret() pulumi.StringOutput { return o.ApplyT(func(v *ArgoTunnel) pulumi.StringOutput { return v.Secret }).(pulumi.StringOutput) } +// Token used by a connector to authenticate and run the tunnel. +func (o ArgoTunnelOutput) TunnelToken() pulumi.StringOutput { + return o.ApplyT(func(v *ArgoTunnel) pulumi.StringOutput { return v.TunnelToken }).(pulumi.StringOutput) +} + type ArgoTunnelArrayOutput struct{ *pulumi.OutputState } func (ArgoTunnelArrayOutput) ElementType() reflect.Type { diff --git a/sdk/go/cloudflare/healthcheck.go b/sdk/go/cloudflare/healthcheck.go index d0942227..41d77300 100644 --- a/sdk/go/cloudflare/healthcheck.go +++ b/sdk/go/cloudflare/healthcheck.go @@ -116,6 +116,16 @@ import ( // }) // } // ``` +// +// ## Import +// +// Healthchecks can be imported using a composite ID formed of zone ID and healthcheck ID, e.g. +// +// ```sh +// $ pulumi import cloudflare:index/healthcheck:Healthcheck example 9a7806061c88ada191ed06f989cc3dac/699d98642c564d2e855e9661899b7252 +// ``` +// +// where* `9a7806061c88ada191ed06f989cc3dac` - the zone ID * `699d98642c564d2e855e9661899b7252` - healthcheck ID as returned by [API](https://api.cloudflare.com/#health-checks-list-health-checks) type Healthcheck struct { pulumi.CustomResourceState diff --git a/sdk/go/cloudflare/init.go b/sdk/go/cloudflare/init.go index 5e204885..b01854c3 100644 --- a/sdk/go/cloudflare/init.go +++ b/sdk/go/cloudflare/init.go @@ -130,6 +130,8 @@ func (m *module) Construct(ctx *pulumi.Context, name, typ, urn string) (r pulumi r = &TeamsRule{} case "cloudflare:index/tunnelRoute:TunnelRoute": r = &TunnelRoute{} + case "cloudflare:index/tunnelVirtualNetwork:TunnelVirtualNetwork": + r = &TunnelVirtualNetwork{} case "cloudflare:index/wafGroup:WafGroup": r = &WafGroup{} case "cloudflare:index/wafOverride:WafOverride": @@ -465,6 +467,11 @@ func init() { "index/tunnelRoute", &module{version}, ) + pulumi.RegisterResourceModule( + "cloudflare", + "index/tunnelVirtualNetwork", + &module{version}, + ) pulumi.RegisterResourceModule( "cloudflare", "index/wafGroup", diff --git a/sdk/go/cloudflare/logpushJob.go b/sdk/go/cloudflare/logpushJob.go index 3cfbaf5d..7986171a 100644 --- a/sdk/go/cloudflare/logpushJob.go +++ b/sdk/go/cloudflare/logpushJob.go @@ -55,6 +55,7 @@ import ( // Dataset: pulumi.String("http_requests"), // DestinationConf: pulumi.String("s3://my-bucket-path?region=us-west-2"), // Enabled: pulumi.Bool(true), +// Frequency: pulumi.String("high"), // LogpullOptions: pulumi.String("fields=RayID,ClientIP,EdgeStartTimestamp×tamps=rfc3339"), // Name: pulumi.String("My-logpush-job"), // OwnershipChallenge: pulumi.String("0000000000000"), @@ -94,6 +95,8 @@ type LogpushJob struct { DestinationConf pulumi.StringOutput `pulumi:"destinationConf"` // Whether to enable the job. Enabled pulumi.BoolPtrOutput `pulumi:"enabled"` + // `"high"` or `"low"`. A higher frequency will result in logs being pushed on faster with smaller files. `"low"` frequency will push logs less often with larger files. + Frequency pulumi.StringPtrOutput `pulumi:"frequency"` // Configuration string for the Logshare API. It specifies things like requested fields and timestamp formats. See [Logpull options documentation](https://developers.cloudflare.com/logs/logpush/logpush-configuration-api/understanding-logpush-api/#options). LogpullOptions pulumi.StringPtrOutput `pulumi:"logpullOptions"` // The name of the logpush job to create. Must match the regular expression `^[a-zA-Z0-9\-\.]*$`. @@ -150,6 +153,8 @@ type logpushJobState struct { DestinationConf *string `pulumi:"destinationConf"` // Whether to enable the job. Enabled *bool `pulumi:"enabled"` + // `"high"` or `"low"`. A higher frequency will result in logs being pushed on faster with smaller files. `"low"` frequency will push logs less often with larger files. + Frequency *string `pulumi:"frequency"` // Configuration string for the Logshare API. It specifies things like requested fields and timestamp formats. See [Logpull options documentation](https://developers.cloudflare.com/logs/logpush/logpush-configuration-api/understanding-logpush-api/#options). LogpullOptions *string `pulumi:"logpullOptions"` // The name of the logpush job to create. Must match the regular expression `^[a-zA-Z0-9\-\.]*$`. @@ -172,6 +177,8 @@ type LogpushJobState struct { DestinationConf pulumi.StringPtrInput // Whether to enable the job. Enabled pulumi.BoolPtrInput + // `"high"` or `"low"`. A higher frequency will result in logs being pushed on faster with smaller files. `"low"` frequency will push logs less often with larger files. + Frequency pulumi.StringPtrInput // Configuration string for the Logshare API. It specifies things like requested fields and timestamp formats. See [Logpull options documentation](https://developers.cloudflare.com/logs/logpush/logpush-configuration-api/understanding-logpush-api/#options). LogpullOptions pulumi.StringPtrInput // The name of the logpush job to create. Must match the regular expression `^[a-zA-Z0-9\-\.]*$`. @@ -198,6 +205,8 @@ type logpushJobArgs struct { DestinationConf string `pulumi:"destinationConf"` // Whether to enable the job. Enabled *bool `pulumi:"enabled"` + // `"high"` or `"low"`. A higher frequency will result in logs being pushed on faster with smaller files. `"low"` frequency will push logs less often with larger files. + Frequency *string `pulumi:"frequency"` // Configuration string for the Logshare API. It specifies things like requested fields and timestamp formats. See [Logpull options documentation](https://developers.cloudflare.com/logs/logpush/logpush-configuration-api/understanding-logpush-api/#options). LogpullOptions *string `pulumi:"logpullOptions"` // The name of the logpush job to create. Must match the regular expression `^[a-zA-Z0-9\-\.]*$`. @@ -221,6 +230,8 @@ type LogpushJobArgs struct { DestinationConf pulumi.StringInput // Whether to enable the job. Enabled pulumi.BoolPtrInput + // `"high"` or `"low"`. A higher frequency will result in logs being pushed on faster with smaller files. `"low"` frequency will push logs less often with larger files. + Frequency pulumi.StringPtrInput // Configuration string for the Logshare API. It specifies things like requested fields and timestamp formats. See [Logpull options documentation](https://developers.cloudflare.com/logs/logpush/logpush-configuration-api/understanding-logpush-api/#options). LogpullOptions pulumi.StringPtrInput // The name of the logpush job to create. Must match the regular expression `^[a-zA-Z0-9\-\.]*$`. @@ -341,6 +352,11 @@ func (o LogpushJobOutput) Enabled() pulumi.BoolPtrOutput { return o.ApplyT(func(v *LogpushJob) pulumi.BoolPtrOutput { return v.Enabled }).(pulumi.BoolPtrOutput) } +// `"high"` or `"low"`. A higher frequency will result in logs being pushed on faster with smaller files. `"low"` frequency will push logs less often with larger files. +func (o LogpushJobOutput) Frequency() pulumi.StringPtrOutput { + return o.ApplyT(func(v *LogpushJob) pulumi.StringPtrOutput { return v.Frequency }).(pulumi.StringPtrOutput) +} + // Configuration string for the Logshare API. It specifies things like requested fields and timestamp formats. See [Logpull options documentation](https://developers.cloudflare.com/logs/logpush/logpush-configuration-api/understanding-logpush-api/#options). func (o LogpushJobOutput) LogpullOptions() pulumi.StringPtrOutput { return o.ApplyT(func(v *LogpushJob) pulumi.StringPtrOutput { return v.LogpullOptions }).(pulumi.StringPtrOutput) diff --git a/sdk/go/cloudflare/pulumiTypes.go b/sdk/go/cloudflare/pulumiTypes.go index a20bee09..d72d8796 100644 --- a/sdk/go/cloudflare/pulumiTypes.go +++ b/sdk/go/cloudflare/pulumiTypes.go @@ -189,24 +189,25 @@ func (o AccessApplicationCorsHeaderArrayOutput) Index(i pulumi.IntInput) AccessA } type AccessGroupExclude struct { - AnyValidServiceToken *bool `pulumi:"anyValidServiceToken"` - AuthMethod *string `pulumi:"authMethod"` - Azures []AccessGroupExcludeAzure `pulumi:"azures"` - Certificate *bool `pulumi:"certificate"` - CommonName *string `pulumi:"commonName"` - DevicePostures []string `pulumi:"devicePostures"` - EmailDomains []string `pulumi:"emailDomains"` - Emails []string `pulumi:"emails"` - Everyone *bool `pulumi:"everyone"` - Geos []string `pulumi:"geos"` - Githubs []AccessGroupExcludeGithub `pulumi:"githubs"` - Groups []string `pulumi:"groups"` - Gsuites []AccessGroupExcludeGsuite `pulumi:"gsuites"` - Ips []string `pulumi:"ips"` - LoginMethods []string `pulumi:"loginMethods"` - Oktas []AccessGroupExcludeOkta `pulumi:"oktas"` - Samls []AccessGroupExcludeSaml `pulumi:"samls"` - ServiceTokens []string `pulumi:"serviceTokens"` + AnyValidServiceToken *bool `pulumi:"anyValidServiceToken"` + AuthMethod *string `pulumi:"authMethod"` + Azures []AccessGroupExcludeAzure `pulumi:"azures"` + Certificate *bool `pulumi:"certificate"` + CommonName *string `pulumi:"commonName"` + DevicePostures []string `pulumi:"devicePostures"` + EmailDomains []string `pulumi:"emailDomains"` + Emails []string `pulumi:"emails"` + Everyone *bool `pulumi:"everyone"` + ExternalEvaluation *AccessGroupExcludeExternalEvaluation `pulumi:"externalEvaluation"` + Geos []string `pulumi:"geos"` + Githubs []AccessGroupExcludeGithub `pulumi:"githubs"` + Groups []string `pulumi:"groups"` + Gsuites []AccessGroupExcludeGsuite `pulumi:"gsuites"` + Ips []string `pulumi:"ips"` + LoginMethods []string `pulumi:"loginMethods"` + Oktas []AccessGroupExcludeOkta `pulumi:"oktas"` + Samls []AccessGroupExcludeSaml `pulumi:"samls"` + ServiceTokens []string `pulumi:"serviceTokens"` } // AccessGroupExcludeInput is an input type that accepts AccessGroupExcludeArgs and AccessGroupExcludeOutput values. @@ -221,24 +222,25 @@ type AccessGroupExcludeInput interface { } type AccessGroupExcludeArgs struct { - AnyValidServiceToken pulumi.BoolPtrInput `pulumi:"anyValidServiceToken"` - AuthMethod pulumi.StringPtrInput `pulumi:"authMethod"` - Azures AccessGroupExcludeAzureArrayInput `pulumi:"azures"` - Certificate pulumi.BoolPtrInput `pulumi:"certificate"` - CommonName pulumi.StringPtrInput `pulumi:"commonName"` - DevicePostures pulumi.StringArrayInput `pulumi:"devicePostures"` - EmailDomains pulumi.StringArrayInput `pulumi:"emailDomains"` - Emails pulumi.StringArrayInput `pulumi:"emails"` - Everyone pulumi.BoolPtrInput `pulumi:"everyone"` - Geos pulumi.StringArrayInput `pulumi:"geos"` - Githubs AccessGroupExcludeGithubArrayInput `pulumi:"githubs"` - Groups pulumi.StringArrayInput `pulumi:"groups"` - Gsuites AccessGroupExcludeGsuiteArrayInput `pulumi:"gsuites"` - Ips pulumi.StringArrayInput `pulumi:"ips"` - LoginMethods pulumi.StringArrayInput `pulumi:"loginMethods"` - Oktas AccessGroupExcludeOktaArrayInput `pulumi:"oktas"` - Samls AccessGroupExcludeSamlArrayInput `pulumi:"samls"` - ServiceTokens pulumi.StringArrayInput `pulumi:"serviceTokens"` + AnyValidServiceToken pulumi.BoolPtrInput `pulumi:"anyValidServiceToken"` + AuthMethod pulumi.StringPtrInput `pulumi:"authMethod"` + Azures AccessGroupExcludeAzureArrayInput `pulumi:"azures"` + Certificate pulumi.BoolPtrInput `pulumi:"certificate"` + CommonName pulumi.StringPtrInput `pulumi:"commonName"` + DevicePostures pulumi.StringArrayInput `pulumi:"devicePostures"` + EmailDomains pulumi.StringArrayInput `pulumi:"emailDomains"` + Emails pulumi.StringArrayInput `pulumi:"emails"` + Everyone pulumi.BoolPtrInput `pulumi:"everyone"` + ExternalEvaluation AccessGroupExcludeExternalEvaluationPtrInput `pulumi:"externalEvaluation"` + Geos pulumi.StringArrayInput `pulumi:"geos"` + Githubs AccessGroupExcludeGithubArrayInput `pulumi:"githubs"` + Groups pulumi.StringArrayInput `pulumi:"groups"` + Gsuites AccessGroupExcludeGsuiteArrayInput `pulumi:"gsuites"` + Ips pulumi.StringArrayInput `pulumi:"ips"` + LoginMethods pulumi.StringArrayInput `pulumi:"loginMethods"` + Oktas AccessGroupExcludeOktaArrayInput `pulumi:"oktas"` + Samls AccessGroupExcludeSamlArrayInput `pulumi:"samls"` + ServiceTokens pulumi.StringArrayInput `pulumi:"serviceTokens"` } func (AccessGroupExcludeArgs) ElementType() reflect.Type { @@ -328,6 +330,10 @@ func (o AccessGroupExcludeOutput) Everyone() pulumi.BoolPtrOutput { return o.ApplyT(func(v AccessGroupExclude) *bool { return v.Everyone }).(pulumi.BoolPtrOutput) } +func (o AccessGroupExcludeOutput) ExternalEvaluation() AccessGroupExcludeExternalEvaluationPtrOutput { + return o.ApplyT(func(v AccessGroupExclude) *AccessGroupExcludeExternalEvaluation { return v.ExternalEvaluation }).(AccessGroupExcludeExternalEvaluationPtrOutput) +} + func (o AccessGroupExcludeOutput) Geos() pulumi.StringArrayOutput { return o.ApplyT(func(v AccessGroupExclude) []string { return v.Geos }).(pulumi.StringArrayOutput) } @@ -484,6 +490,154 @@ func (o AccessGroupExcludeAzureArrayOutput) Index(i pulumi.IntInput) AccessGroup }).(AccessGroupExcludeAzureOutput) } +type AccessGroupExcludeExternalEvaluation struct { + EvaluateUrl *string `pulumi:"evaluateUrl"` + KeysUrl *string `pulumi:"keysUrl"` +} + +// AccessGroupExcludeExternalEvaluationInput is an input type that accepts AccessGroupExcludeExternalEvaluationArgs and AccessGroupExcludeExternalEvaluationOutput values. +// You can construct a concrete instance of `AccessGroupExcludeExternalEvaluationInput` via: +// +// AccessGroupExcludeExternalEvaluationArgs{...} +type AccessGroupExcludeExternalEvaluationInput interface { + pulumi.Input + + ToAccessGroupExcludeExternalEvaluationOutput() AccessGroupExcludeExternalEvaluationOutput + ToAccessGroupExcludeExternalEvaluationOutputWithContext(context.Context) AccessGroupExcludeExternalEvaluationOutput +} + +type AccessGroupExcludeExternalEvaluationArgs struct { + EvaluateUrl pulumi.StringPtrInput `pulumi:"evaluateUrl"` + KeysUrl pulumi.StringPtrInput `pulumi:"keysUrl"` +} + +func (AccessGroupExcludeExternalEvaluationArgs) ElementType() reflect.Type { + return reflect.TypeOf((*AccessGroupExcludeExternalEvaluation)(nil)).Elem() +} + +func (i AccessGroupExcludeExternalEvaluationArgs) ToAccessGroupExcludeExternalEvaluationOutput() AccessGroupExcludeExternalEvaluationOutput { + return i.ToAccessGroupExcludeExternalEvaluationOutputWithContext(context.Background()) +} + +func (i AccessGroupExcludeExternalEvaluationArgs) ToAccessGroupExcludeExternalEvaluationOutputWithContext(ctx context.Context) AccessGroupExcludeExternalEvaluationOutput { + return pulumi.ToOutputWithContext(ctx, i).(AccessGroupExcludeExternalEvaluationOutput) +} + +func (i AccessGroupExcludeExternalEvaluationArgs) ToAccessGroupExcludeExternalEvaluationPtrOutput() AccessGroupExcludeExternalEvaluationPtrOutput { + return i.ToAccessGroupExcludeExternalEvaluationPtrOutputWithContext(context.Background()) +} + +func (i AccessGroupExcludeExternalEvaluationArgs) ToAccessGroupExcludeExternalEvaluationPtrOutputWithContext(ctx context.Context) AccessGroupExcludeExternalEvaluationPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(AccessGroupExcludeExternalEvaluationOutput).ToAccessGroupExcludeExternalEvaluationPtrOutputWithContext(ctx) +} + +// AccessGroupExcludeExternalEvaluationPtrInput is an input type that accepts AccessGroupExcludeExternalEvaluationArgs, AccessGroupExcludeExternalEvaluationPtr and AccessGroupExcludeExternalEvaluationPtrOutput values. +// You can construct a concrete instance of `AccessGroupExcludeExternalEvaluationPtrInput` via: +// +// AccessGroupExcludeExternalEvaluationArgs{...} +// +// or: +// +// nil +type AccessGroupExcludeExternalEvaluationPtrInput interface { + pulumi.Input + + ToAccessGroupExcludeExternalEvaluationPtrOutput() AccessGroupExcludeExternalEvaluationPtrOutput + ToAccessGroupExcludeExternalEvaluationPtrOutputWithContext(context.Context) AccessGroupExcludeExternalEvaluationPtrOutput +} + +type accessGroupExcludeExternalEvaluationPtrType AccessGroupExcludeExternalEvaluationArgs + +func AccessGroupExcludeExternalEvaluationPtr(v *AccessGroupExcludeExternalEvaluationArgs) AccessGroupExcludeExternalEvaluationPtrInput { + return (*accessGroupExcludeExternalEvaluationPtrType)(v) +} + +func (*accessGroupExcludeExternalEvaluationPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**AccessGroupExcludeExternalEvaluation)(nil)).Elem() +} + +func (i *accessGroupExcludeExternalEvaluationPtrType) ToAccessGroupExcludeExternalEvaluationPtrOutput() AccessGroupExcludeExternalEvaluationPtrOutput { + return i.ToAccessGroupExcludeExternalEvaluationPtrOutputWithContext(context.Background()) +} + +func (i *accessGroupExcludeExternalEvaluationPtrType) ToAccessGroupExcludeExternalEvaluationPtrOutputWithContext(ctx context.Context) AccessGroupExcludeExternalEvaluationPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(AccessGroupExcludeExternalEvaluationPtrOutput) +} + +type AccessGroupExcludeExternalEvaluationOutput struct{ *pulumi.OutputState } + +func (AccessGroupExcludeExternalEvaluationOutput) ElementType() reflect.Type { + return reflect.TypeOf((*AccessGroupExcludeExternalEvaluation)(nil)).Elem() +} + +func (o AccessGroupExcludeExternalEvaluationOutput) ToAccessGroupExcludeExternalEvaluationOutput() AccessGroupExcludeExternalEvaluationOutput { + return o +} + +func (o AccessGroupExcludeExternalEvaluationOutput) ToAccessGroupExcludeExternalEvaluationOutputWithContext(ctx context.Context) AccessGroupExcludeExternalEvaluationOutput { + return o +} + +func (o AccessGroupExcludeExternalEvaluationOutput) ToAccessGroupExcludeExternalEvaluationPtrOutput() AccessGroupExcludeExternalEvaluationPtrOutput { + return o.ToAccessGroupExcludeExternalEvaluationPtrOutputWithContext(context.Background()) +} + +func (o AccessGroupExcludeExternalEvaluationOutput) ToAccessGroupExcludeExternalEvaluationPtrOutputWithContext(ctx context.Context) AccessGroupExcludeExternalEvaluationPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v AccessGroupExcludeExternalEvaluation) *AccessGroupExcludeExternalEvaluation { + return &v + }).(AccessGroupExcludeExternalEvaluationPtrOutput) +} + +func (o AccessGroupExcludeExternalEvaluationOutput) EvaluateUrl() pulumi.StringPtrOutput { + return o.ApplyT(func(v AccessGroupExcludeExternalEvaluation) *string { return v.EvaluateUrl }).(pulumi.StringPtrOutput) +} + +func (o AccessGroupExcludeExternalEvaluationOutput) KeysUrl() pulumi.StringPtrOutput { + return o.ApplyT(func(v AccessGroupExcludeExternalEvaluation) *string { return v.KeysUrl }).(pulumi.StringPtrOutput) +} + +type AccessGroupExcludeExternalEvaluationPtrOutput struct{ *pulumi.OutputState } + +func (AccessGroupExcludeExternalEvaluationPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**AccessGroupExcludeExternalEvaluation)(nil)).Elem() +} + +func (o AccessGroupExcludeExternalEvaluationPtrOutput) ToAccessGroupExcludeExternalEvaluationPtrOutput() AccessGroupExcludeExternalEvaluationPtrOutput { + return o +} + +func (o AccessGroupExcludeExternalEvaluationPtrOutput) ToAccessGroupExcludeExternalEvaluationPtrOutputWithContext(ctx context.Context) AccessGroupExcludeExternalEvaluationPtrOutput { + return o +} + +func (o AccessGroupExcludeExternalEvaluationPtrOutput) Elem() AccessGroupExcludeExternalEvaluationOutput { + return o.ApplyT(func(v *AccessGroupExcludeExternalEvaluation) AccessGroupExcludeExternalEvaluation { + if v != nil { + return *v + } + var ret AccessGroupExcludeExternalEvaluation + return ret + }).(AccessGroupExcludeExternalEvaluationOutput) +} + +func (o AccessGroupExcludeExternalEvaluationPtrOutput) EvaluateUrl() pulumi.StringPtrOutput { + return o.ApplyT(func(v *AccessGroupExcludeExternalEvaluation) *string { + if v == nil { + return nil + } + return v.EvaluateUrl + }).(pulumi.StringPtrOutput) +} + +func (o AccessGroupExcludeExternalEvaluationPtrOutput) KeysUrl() pulumi.StringPtrOutput { + return o.ApplyT(func(v *AccessGroupExcludeExternalEvaluation) *string { + if v == nil { + return nil + } + return v.KeysUrl + }).(pulumi.StringPtrOutput) +} + type AccessGroupExcludeGithub struct { IdentityProviderId *string `pulumi:"identityProviderId"` // Friendly name of the Access Group. @@ -903,24 +1057,25 @@ func (o AccessGroupExcludeSamlArrayOutput) Index(i pulumi.IntInput) AccessGroupE } type AccessGroupInclude struct { - AnyValidServiceToken *bool `pulumi:"anyValidServiceToken"` - AuthMethod *string `pulumi:"authMethod"` - Azures []AccessGroupIncludeAzure `pulumi:"azures"` - Certificate *bool `pulumi:"certificate"` - CommonName *string `pulumi:"commonName"` - DevicePostures []string `pulumi:"devicePostures"` - EmailDomains []string `pulumi:"emailDomains"` - Emails []string `pulumi:"emails"` - Everyone *bool `pulumi:"everyone"` - Geos []string `pulumi:"geos"` - Githubs []AccessGroupIncludeGithub `pulumi:"githubs"` - Groups []string `pulumi:"groups"` - Gsuites []AccessGroupIncludeGsuite `pulumi:"gsuites"` - Ips []string `pulumi:"ips"` - LoginMethods []string `pulumi:"loginMethods"` - Oktas []AccessGroupIncludeOkta `pulumi:"oktas"` - Samls []AccessGroupIncludeSaml `pulumi:"samls"` - ServiceTokens []string `pulumi:"serviceTokens"` + AnyValidServiceToken *bool `pulumi:"anyValidServiceToken"` + AuthMethod *string `pulumi:"authMethod"` + Azures []AccessGroupIncludeAzure `pulumi:"azures"` + Certificate *bool `pulumi:"certificate"` + CommonName *string `pulumi:"commonName"` + DevicePostures []string `pulumi:"devicePostures"` + EmailDomains []string `pulumi:"emailDomains"` + Emails []string `pulumi:"emails"` + Everyone *bool `pulumi:"everyone"` + ExternalEvaluation *AccessGroupIncludeExternalEvaluation `pulumi:"externalEvaluation"` + Geos []string `pulumi:"geos"` + Githubs []AccessGroupIncludeGithub `pulumi:"githubs"` + Groups []string `pulumi:"groups"` + Gsuites []AccessGroupIncludeGsuite `pulumi:"gsuites"` + Ips []string `pulumi:"ips"` + LoginMethods []string `pulumi:"loginMethods"` + Oktas []AccessGroupIncludeOkta `pulumi:"oktas"` + Samls []AccessGroupIncludeSaml `pulumi:"samls"` + ServiceTokens []string `pulumi:"serviceTokens"` } // AccessGroupIncludeInput is an input type that accepts AccessGroupIncludeArgs and AccessGroupIncludeOutput values. @@ -935,24 +1090,25 @@ type AccessGroupIncludeInput interface { } type AccessGroupIncludeArgs struct { - AnyValidServiceToken pulumi.BoolPtrInput `pulumi:"anyValidServiceToken"` - AuthMethod pulumi.StringPtrInput `pulumi:"authMethod"` - Azures AccessGroupIncludeAzureArrayInput `pulumi:"azures"` - Certificate pulumi.BoolPtrInput `pulumi:"certificate"` - CommonName pulumi.StringPtrInput `pulumi:"commonName"` - DevicePostures pulumi.StringArrayInput `pulumi:"devicePostures"` - EmailDomains pulumi.StringArrayInput `pulumi:"emailDomains"` - Emails pulumi.StringArrayInput `pulumi:"emails"` - Everyone pulumi.BoolPtrInput `pulumi:"everyone"` - Geos pulumi.StringArrayInput `pulumi:"geos"` - Githubs AccessGroupIncludeGithubArrayInput `pulumi:"githubs"` - Groups pulumi.StringArrayInput `pulumi:"groups"` - Gsuites AccessGroupIncludeGsuiteArrayInput `pulumi:"gsuites"` - Ips pulumi.StringArrayInput `pulumi:"ips"` - LoginMethods pulumi.StringArrayInput `pulumi:"loginMethods"` - Oktas AccessGroupIncludeOktaArrayInput `pulumi:"oktas"` - Samls AccessGroupIncludeSamlArrayInput `pulumi:"samls"` - ServiceTokens pulumi.StringArrayInput `pulumi:"serviceTokens"` + AnyValidServiceToken pulumi.BoolPtrInput `pulumi:"anyValidServiceToken"` + AuthMethod pulumi.StringPtrInput `pulumi:"authMethod"` + Azures AccessGroupIncludeAzureArrayInput `pulumi:"azures"` + Certificate pulumi.BoolPtrInput `pulumi:"certificate"` + CommonName pulumi.StringPtrInput `pulumi:"commonName"` + DevicePostures pulumi.StringArrayInput `pulumi:"devicePostures"` + EmailDomains pulumi.StringArrayInput `pulumi:"emailDomains"` + Emails pulumi.StringArrayInput `pulumi:"emails"` + Everyone pulumi.BoolPtrInput `pulumi:"everyone"` + ExternalEvaluation AccessGroupIncludeExternalEvaluationPtrInput `pulumi:"externalEvaluation"` + Geos pulumi.StringArrayInput `pulumi:"geos"` + Githubs AccessGroupIncludeGithubArrayInput `pulumi:"githubs"` + Groups pulumi.StringArrayInput `pulumi:"groups"` + Gsuites AccessGroupIncludeGsuiteArrayInput `pulumi:"gsuites"` + Ips pulumi.StringArrayInput `pulumi:"ips"` + LoginMethods pulumi.StringArrayInput `pulumi:"loginMethods"` + Oktas AccessGroupIncludeOktaArrayInput `pulumi:"oktas"` + Samls AccessGroupIncludeSamlArrayInput `pulumi:"samls"` + ServiceTokens pulumi.StringArrayInput `pulumi:"serviceTokens"` } func (AccessGroupIncludeArgs) ElementType() reflect.Type { @@ -1042,6 +1198,10 @@ func (o AccessGroupIncludeOutput) Everyone() pulumi.BoolPtrOutput { return o.ApplyT(func(v AccessGroupInclude) *bool { return v.Everyone }).(pulumi.BoolPtrOutput) } +func (o AccessGroupIncludeOutput) ExternalEvaluation() AccessGroupIncludeExternalEvaluationPtrOutput { + return o.ApplyT(func(v AccessGroupInclude) *AccessGroupIncludeExternalEvaluation { return v.ExternalEvaluation }).(AccessGroupIncludeExternalEvaluationPtrOutput) +} + func (o AccessGroupIncludeOutput) Geos() pulumi.StringArrayOutput { return o.ApplyT(func(v AccessGroupInclude) []string { return v.Geos }).(pulumi.StringArrayOutput) } @@ -1198,6 +1358,154 @@ func (o AccessGroupIncludeAzureArrayOutput) Index(i pulumi.IntInput) AccessGroup }).(AccessGroupIncludeAzureOutput) } +type AccessGroupIncludeExternalEvaluation struct { + EvaluateUrl *string `pulumi:"evaluateUrl"` + KeysUrl *string `pulumi:"keysUrl"` +} + +// AccessGroupIncludeExternalEvaluationInput is an input type that accepts AccessGroupIncludeExternalEvaluationArgs and AccessGroupIncludeExternalEvaluationOutput values. +// You can construct a concrete instance of `AccessGroupIncludeExternalEvaluationInput` via: +// +// AccessGroupIncludeExternalEvaluationArgs{...} +type AccessGroupIncludeExternalEvaluationInput interface { + pulumi.Input + + ToAccessGroupIncludeExternalEvaluationOutput() AccessGroupIncludeExternalEvaluationOutput + ToAccessGroupIncludeExternalEvaluationOutputWithContext(context.Context) AccessGroupIncludeExternalEvaluationOutput +} + +type AccessGroupIncludeExternalEvaluationArgs struct { + EvaluateUrl pulumi.StringPtrInput `pulumi:"evaluateUrl"` + KeysUrl pulumi.StringPtrInput `pulumi:"keysUrl"` +} + +func (AccessGroupIncludeExternalEvaluationArgs) ElementType() reflect.Type { + return reflect.TypeOf((*AccessGroupIncludeExternalEvaluation)(nil)).Elem() +} + +func (i AccessGroupIncludeExternalEvaluationArgs) ToAccessGroupIncludeExternalEvaluationOutput() AccessGroupIncludeExternalEvaluationOutput { + return i.ToAccessGroupIncludeExternalEvaluationOutputWithContext(context.Background()) +} + +func (i AccessGroupIncludeExternalEvaluationArgs) ToAccessGroupIncludeExternalEvaluationOutputWithContext(ctx context.Context) AccessGroupIncludeExternalEvaluationOutput { + return pulumi.ToOutputWithContext(ctx, i).(AccessGroupIncludeExternalEvaluationOutput) +} + +func (i AccessGroupIncludeExternalEvaluationArgs) ToAccessGroupIncludeExternalEvaluationPtrOutput() AccessGroupIncludeExternalEvaluationPtrOutput { + return i.ToAccessGroupIncludeExternalEvaluationPtrOutputWithContext(context.Background()) +} + +func (i AccessGroupIncludeExternalEvaluationArgs) ToAccessGroupIncludeExternalEvaluationPtrOutputWithContext(ctx context.Context) AccessGroupIncludeExternalEvaluationPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(AccessGroupIncludeExternalEvaluationOutput).ToAccessGroupIncludeExternalEvaluationPtrOutputWithContext(ctx) +} + +// AccessGroupIncludeExternalEvaluationPtrInput is an input type that accepts AccessGroupIncludeExternalEvaluationArgs, AccessGroupIncludeExternalEvaluationPtr and AccessGroupIncludeExternalEvaluationPtrOutput values. +// You can construct a concrete instance of `AccessGroupIncludeExternalEvaluationPtrInput` via: +// +// AccessGroupIncludeExternalEvaluationArgs{...} +// +// or: +// +// nil +type AccessGroupIncludeExternalEvaluationPtrInput interface { + pulumi.Input + + ToAccessGroupIncludeExternalEvaluationPtrOutput() AccessGroupIncludeExternalEvaluationPtrOutput + ToAccessGroupIncludeExternalEvaluationPtrOutputWithContext(context.Context) AccessGroupIncludeExternalEvaluationPtrOutput +} + +type accessGroupIncludeExternalEvaluationPtrType AccessGroupIncludeExternalEvaluationArgs + +func AccessGroupIncludeExternalEvaluationPtr(v *AccessGroupIncludeExternalEvaluationArgs) AccessGroupIncludeExternalEvaluationPtrInput { + return (*accessGroupIncludeExternalEvaluationPtrType)(v) +} + +func (*accessGroupIncludeExternalEvaluationPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**AccessGroupIncludeExternalEvaluation)(nil)).Elem() +} + +func (i *accessGroupIncludeExternalEvaluationPtrType) ToAccessGroupIncludeExternalEvaluationPtrOutput() AccessGroupIncludeExternalEvaluationPtrOutput { + return i.ToAccessGroupIncludeExternalEvaluationPtrOutputWithContext(context.Background()) +} + +func (i *accessGroupIncludeExternalEvaluationPtrType) ToAccessGroupIncludeExternalEvaluationPtrOutputWithContext(ctx context.Context) AccessGroupIncludeExternalEvaluationPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(AccessGroupIncludeExternalEvaluationPtrOutput) +} + +type AccessGroupIncludeExternalEvaluationOutput struct{ *pulumi.OutputState } + +func (AccessGroupIncludeExternalEvaluationOutput) ElementType() reflect.Type { + return reflect.TypeOf((*AccessGroupIncludeExternalEvaluation)(nil)).Elem() +} + +func (o AccessGroupIncludeExternalEvaluationOutput) ToAccessGroupIncludeExternalEvaluationOutput() AccessGroupIncludeExternalEvaluationOutput { + return o +} + +func (o AccessGroupIncludeExternalEvaluationOutput) ToAccessGroupIncludeExternalEvaluationOutputWithContext(ctx context.Context) AccessGroupIncludeExternalEvaluationOutput { + return o +} + +func (o AccessGroupIncludeExternalEvaluationOutput) ToAccessGroupIncludeExternalEvaluationPtrOutput() AccessGroupIncludeExternalEvaluationPtrOutput { + return o.ToAccessGroupIncludeExternalEvaluationPtrOutputWithContext(context.Background()) +} + +func (o AccessGroupIncludeExternalEvaluationOutput) ToAccessGroupIncludeExternalEvaluationPtrOutputWithContext(ctx context.Context) AccessGroupIncludeExternalEvaluationPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v AccessGroupIncludeExternalEvaluation) *AccessGroupIncludeExternalEvaluation { + return &v + }).(AccessGroupIncludeExternalEvaluationPtrOutput) +} + +func (o AccessGroupIncludeExternalEvaluationOutput) EvaluateUrl() pulumi.StringPtrOutput { + return o.ApplyT(func(v AccessGroupIncludeExternalEvaluation) *string { return v.EvaluateUrl }).(pulumi.StringPtrOutput) +} + +func (o AccessGroupIncludeExternalEvaluationOutput) KeysUrl() pulumi.StringPtrOutput { + return o.ApplyT(func(v AccessGroupIncludeExternalEvaluation) *string { return v.KeysUrl }).(pulumi.StringPtrOutput) +} + +type AccessGroupIncludeExternalEvaluationPtrOutput struct{ *pulumi.OutputState } + +func (AccessGroupIncludeExternalEvaluationPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**AccessGroupIncludeExternalEvaluation)(nil)).Elem() +} + +func (o AccessGroupIncludeExternalEvaluationPtrOutput) ToAccessGroupIncludeExternalEvaluationPtrOutput() AccessGroupIncludeExternalEvaluationPtrOutput { + return o +} + +func (o AccessGroupIncludeExternalEvaluationPtrOutput) ToAccessGroupIncludeExternalEvaluationPtrOutputWithContext(ctx context.Context) AccessGroupIncludeExternalEvaluationPtrOutput { + return o +} + +func (o AccessGroupIncludeExternalEvaluationPtrOutput) Elem() AccessGroupIncludeExternalEvaluationOutput { + return o.ApplyT(func(v *AccessGroupIncludeExternalEvaluation) AccessGroupIncludeExternalEvaluation { + if v != nil { + return *v + } + var ret AccessGroupIncludeExternalEvaluation + return ret + }).(AccessGroupIncludeExternalEvaluationOutput) +} + +func (o AccessGroupIncludeExternalEvaluationPtrOutput) EvaluateUrl() pulumi.StringPtrOutput { + return o.ApplyT(func(v *AccessGroupIncludeExternalEvaluation) *string { + if v == nil { + return nil + } + return v.EvaluateUrl + }).(pulumi.StringPtrOutput) +} + +func (o AccessGroupIncludeExternalEvaluationPtrOutput) KeysUrl() pulumi.StringPtrOutput { + return o.ApplyT(func(v *AccessGroupIncludeExternalEvaluation) *string { + if v == nil { + return nil + } + return v.KeysUrl + }).(pulumi.StringPtrOutput) +} + type AccessGroupIncludeGithub struct { IdentityProviderId *string `pulumi:"identityProviderId"` // Friendly name of the Access Group. @@ -1617,24 +1925,25 @@ func (o AccessGroupIncludeSamlArrayOutput) Index(i pulumi.IntInput) AccessGroupI } type AccessGroupRequire struct { - AnyValidServiceToken *bool `pulumi:"anyValidServiceToken"` - AuthMethod *string `pulumi:"authMethod"` - Azures []AccessGroupRequireAzure `pulumi:"azures"` - Certificate *bool `pulumi:"certificate"` - CommonName *string `pulumi:"commonName"` - DevicePostures []string `pulumi:"devicePostures"` - EmailDomains []string `pulumi:"emailDomains"` - Emails []string `pulumi:"emails"` - Everyone *bool `pulumi:"everyone"` - Geos []string `pulumi:"geos"` - Githubs []AccessGroupRequireGithub `pulumi:"githubs"` - Groups []string `pulumi:"groups"` - Gsuites []AccessGroupRequireGsuite `pulumi:"gsuites"` - Ips []string `pulumi:"ips"` - LoginMethods []string `pulumi:"loginMethods"` - Oktas []AccessGroupRequireOkta `pulumi:"oktas"` - Samls []AccessGroupRequireSaml `pulumi:"samls"` - ServiceTokens []string `pulumi:"serviceTokens"` + AnyValidServiceToken *bool `pulumi:"anyValidServiceToken"` + AuthMethod *string `pulumi:"authMethod"` + Azures []AccessGroupRequireAzure `pulumi:"azures"` + Certificate *bool `pulumi:"certificate"` + CommonName *string `pulumi:"commonName"` + DevicePostures []string `pulumi:"devicePostures"` + EmailDomains []string `pulumi:"emailDomains"` + Emails []string `pulumi:"emails"` + Everyone *bool `pulumi:"everyone"` + ExternalEvaluation *AccessGroupRequireExternalEvaluation `pulumi:"externalEvaluation"` + Geos []string `pulumi:"geos"` + Githubs []AccessGroupRequireGithub `pulumi:"githubs"` + Groups []string `pulumi:"groups"` + Gsuites []AccessGroupRequireGsuite `pulumi:"gsuites"` + Ips []string `pulumi:"ips"` + LoginMethods []string `pulumi:"loginMethods"` + Oktas []AccessGroupRequireOkta `pulumi:"oktas"` + Samls []AccessGroupRequireSaml `pulumi:"samls"` + ServiceTokens []string `pulumi:"serviceTokens"` } // AccessGroupRequireInput is an input type that accepts AccessGroupRequireArgs and AccessGroupRequireOutput values. @@ -1649,24 +1958,25 @@ type AccessGroupRequireInput interface { } type AccessGroupRequireArgs struct { - AnyValidServiceToken pulumi.BoolPtrInput `pulumi:"anyValidServiceToken"` - AuthMethod pulumi.StringPtrInput `pulumi:"authMethod"` - Azures AccessGroupRequireAzureArrayInput `pulumi:"azures"` - Certificate pulumi.BoolPtrInput `pulumi:"certificate"` - CommonName pulumi.StringPtrInput `pulumi:"commonName"` - DevicePostures pulumi.StringArrayInput `pulumi:"devicePostures"` - EmailDomains pulumi.StringArrayInput `pulumi:"emailDomains"` - Emails pulumi.StringArrayInput `pulumi:"emails"` - Everyone pulumi.BoolPtrInput `pulumi:"everyone"` - Geos pulumi.StringArrayInput `pulumi:"geos"` - Githubs AccessGroupRequireGithubArrayInput `pulumi:"githubs"` - Groups pulumi.StringArrayInput `pulumi:"groups"` - Gsuites AccessGroupRequireGsuiteArrayInput `pulumi:"gsuites"` - Ips pulumi.StringArrayInput `pulumi:"ips"` - LoginMethods pulumi.StringArrayInput `pulumi:"loginMethods"` - Oktas AccessGroupRequireOktaArrayInput `pulumi:"oktas"` - Samls AccessGroupRequireSamlArrayInput `pulumi:"samls"` - ServiceTokens pulumi.StringArrayInput `pulumi:"serviceTokens"` + AnyValidServiceToken pulumi.BoolPtrInput `pulumi:"anyValidServiceToken"` + AuthMethod pulumi.StringPtrInput `pulumi:"authMethod"` + Azures AccessGroupRequireAzureArrayInput `pulumi:"azures"` + Certificate pulumi.BoolPtrInput `pulumi:"certificate"` + CommonName pulumi.StringPtrInput `pulumi:"commonName"` + DevicePostures pulumi.StringArrayInput `pulumi:"devicePostures"` + EmailDomains pulumi.StringArrayInput `pulumi:"emailDomains"` + Emails pulumi.StringArrayInput `pulumi:"emails"` + Everyone pulumi.BoolPtrInput `pulumi:"everyone"` + ExternalEvaluation AccessGroupRequireExternalEvaluationPtrInput `pulumi:"externalEvaluation"` + Geos pulumi.StringArrayInput `pulumi:"geos"` + Githubs AccessGroupRequireGithubArrayInput `pulumi:"githubs"` + Groups pulumi.StringArrayInput `pulumi:"groups"` + Gsuites AccessGroupRequireGsuiteArrayInput `pulumi:"gsuites"` + Ips pulumi.StringArrayInput `pulumi:"ips"` + LoginMethods pulumi.StringArrayInput `pulumi:"loginMethods"` + Oktas AccessGroupRequireOktaArrayInput `pulumi:"oktas"` + Samls AccessGroupRequireSamlArrayInput `pulumi:"samls"` + ServiceTokens pulumi.StringArrayInput `pulumi:"serviceTokens"` } func (AccessGroupRequireArgs) ElementType() reflect.Type { @@ -1756,6 +2066,10 @@ func (o AccessGroupRequireOutput) Everyone() pulumi.BoolPtrOutput { return o.ApplyT(func(v AccessGroupRequire) *bool { return v.Everyone }).(pulumi.BoolPtrOutput) } +func (o AccessGroupRequireOutput) ExternalEvaluation() AccessGroupRequireExternalEvaluationPtrOutput { + return o.ApplyT(func(v AccessGroupRequire) *AccessGroupRequireExternalEvaluation { return v.ExternalEvaluation }).(AccessGroupRequireExternalEvaluationPtrOutput) +} + func (o AccessGroupRequireOutput) Geos() pulumi.StringArrayOutput { return o.ApplyT(func(v AccessGroupRequire) []string { return v.Geos }).(pulumi.StringArrayOutput) } @@ -1912,6 +2226,154 @@ func (o AccessGroupRequireAzureArrayOutput) Index(i pulumi.IntInput) AccessGroup }).(AccessGroupRequireAzureOutput) } +type AccessGroupRequireExternalEvaluation struct { + EvaluateUrl *string `pulumi:"evaluateUrl"` + KeysUrl *string `pulumi:"keysUrl"` +} + +// AccessGroupRequireExternalEvaluationInput is an input type that accepts AccessGroupRequireExternalEvaluationArgs and AccessGroupRequireExternalEvaluationOutput values. +// You can construct a concrete instance of `AccessGroupRequireExternalEvaluationInput` via: +// +// AccessGroupRequireExternalEvaluationArgs{...} +type AccessGroupRequireExternalEvaluationInput interface { + pulumi.Input + + ToAccessGroupRequireExternalEvaluationOutput() AccessGroupRequireExternalEvaluationOutput + ToAccessGroupRequireExternalEvaluationOutputWithContext(context.Context) AccessGroupRequireExternalEvaluationOutput +} + +type AccessGroupRequireExternalEvaluationArgs struct { + EvaluateUrl pulumi.StringPtrInput `pulumi:"evaluateUrl"` + KeysUrl pulumi.StringPtrInput `pulumi:"keysUrl"` +} + +func (AccessGroupRequireExternalEvaluationArgs) ElementType() reflect.Type { + return reflect.TypeOf((*AccessGroupRequireExternalEvaluation)(nil)).Elem() +} + +func (i AccessGroupRequireExternalEvaluationArgs) ToAccessGroupRequireExternalEvaluationOutput() AccessGroupRequireExternalEvaluationOutput { + return i.ToAccessGroupRequireExternalEvaluationOutputWithContext(context.Background()) +} + +func (i AccessGroupRequireExternalEvaluationArgs) ToAccessGroupRequireExternalEvaluationOutputWithContext(ctx context.Context) AccessGroupRequireExternalEvaluationOutput { + return pulumi.ToOutputWithContext(ctx, i).(AccessGroupRequireExternalEvaluationOutput) +} + +func (i AccessGroupRequireExternalEvaluationArgs) ToAccessGroupRequireExternalEvaluationPtrOutput() AccessGroupRequireExternalEvaluationPtrOutput { + return i.ToAccessGroupRequireExternalEvaluationPtrOutputWithContext(context.Background()) +} + +func (i AccessGroupRequireExternalEvaluationArgs) ToAccessGroupRequireExternalEvaluationPtrOutputWithContext(ctx context.Context) AccessGroupRequireExternalEvaluationPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(AccessGroupRequireExternalEvaluationOutput).ToAccessGroupRequireExternalEvaluationPtrOutputWithContext(ctx) +} + +// AccessGroupRequireExternalEvaluationPtrInput is an input type that accepts AccessGroupRequireExternalEvaluationArgs, AccessGroupRequireExternalEvaluationPtr and AccessGroupRequireExternalEvaluationPtrOutput values. +// You can construct a concrete instance of `AccessGroupRequireExternalEvaluationPtrInput` via: +// +// AccessGroupRequireExternalEvaluationArgs{...} +// +// or: +// +// nil +type AccessGroupRequireExternalEvaluationPtrInput interface { + pulumi.Input + + ToAccessGroupRequireExternalEvaluationPtrOutput() AccessGroupRequireExternalEvaluationPtrOutput + ToAccessGroupRequireExternalEvaluationPtrOutputWithContext(context.Context) AccessGroupRequireExternalEvaluationPtrOutput +} + +type accessGroupRequireExternalEvaluationPtrType AccessGroupRequireExternalEvaluationArgs + +func AccessGroupRequireExternalEvaluationPtr(v *AccessGroupRequireExternalEvaluationArgs) AccessGroupRequireExternalEvaluationPtrInput { + return (*accessGroupRequireExternalEvaluationPtrType)(v) +} + +func (*accessGroupRequireExternalEvaluationPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**AccessGroupRequireExternalEvaluation)(nil)).Elem() +} + +func (i *accessGroupRequireExternalEvaluationPtrType) ToAccessGroupRequireExternalEvaluationPtrOutput() AccessGroupRequireExternalEvaluationPtrOutput { + return i.ToAccessGroupRequireExternalEvaluationPtrOutputWithContext(context.Background()) +} + +func (i *accessGroupRequireExternalEvaluationPtrType) ToAccessGroupRequireExternalEvaluationPtrOutputWithContext(ctx context.Context) AccessGroupRequireExternalEvaluationPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(AccessGroupRequireExternalEvaluationPtrOutput) +} + +type AccessGroupRequireExternalEvaluationOutput struct{ *pulumi.OutputState } + +func (AccessGroupRequireExternalEvaluationOutput) ElementType() reflect.Type { + return reflect.TypeOf((*AccessGroupRequireExternalEvaluation)(nil)).Elem() +} + +func (o AccessGroupRequireExternalEvaluationOutput) ToAccessGroupRequireExternalEvaluationOutput() AccessGroupRequireExternalEvaluationOutput { + return o +} + +func (o AccessGroupRequireExternalEvaluationOutput) ToAccessGroupRequireExternalEvaluationOutputWithContext(ctx context.Context) AccessGroupRequireExternalEvaluationOutput { + return o +} + +func (o AccessGroupRequireExternalEvaluationOutput) ToAccessGroupRequireExternalEvaluationPtrOutput() AccessGroupRequireExternalEvaluationPtrOutput { + return o.ToAccessGroupRequireExternalEvaluationPtrOutputWithContext(context.Background()) +} + +func (o AccessGroupRequireExternalEvaluationOutput) ToAccessGroupRequireExternalEvaluationPtrOutputWithContext(ctx context.Context) AccessGroupRequireExternalEvaluationPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v AccessGroupRequireExternalEvaluation) *AccessGroupRequireExternalEvaluation { + return &v + }).(AccessGroupRequireExternalEvaluationPtrOutput) +} + +func (o AccessGroupRequireExternalEvaluationOutput) EvaluateUrl() pulumi.StringPtrOutput { + return o.ApplyT(func(v AccessGroupRequireExternalEvaluation) *string { return v.EvaluateUrl }).(pulumi.StringPtrOutput) +} + +func (o AccessGroupRequireExternalEvaluationOutput) KeysUrl() pulumi.StringPtrOutput { + return o.ApplyT(func(v AccessGroupRequireExternalEvaluation) *string { return v.KeysUrl }).(pulumi.StringPtrOutput) +} + +type AccessGroupRequireExternalEvaluationPtrOutput struct{ *pulumi.OutputState } + +func (AccessGroupRequireExternalEvaluationPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**AccessGroupRequireExternalEvaluation)(nil)).Elem() +} + +func (o AccessGroupRequireExternalEvaluationPtrOutput) ToAccessGroupRequireExternalEvaluationPtrOutput() AccessGroupRequireExternalEvaluationPtrOutput { + return o +} + +func (o AccessGroupRequireExternalEvaluationPtrOutput) ToAccessGroupRequireExternalEvaluationPtrOutputWithContext(ctx context.Context) AccessGroupRequireExternalEvaluationPtrOutput { + return o +} + +func (o AccessGroupRequireExternalEvaluationPtrOutput) Elem() AccessGroupRequireExternalEvaluationOutput { + return o.ApplyT(func(v *AccessGroupRequireExternalEvaluation) AccessGroupRequireExternalEvaluation { + if v != nil { + return *v + } + var ret AccessGroupRequireExternalEvaluation + return ret + }).(AccessGroupRequireExternalEvaluationOutput) +} + +func (o AccessGroupRequireExternalEvaluationPtrOutput) EvaluateUrl() pulumi.StringPtrOutput { + return o.ApplyT(func(v *AccessGroupRequireExternalEvaluation) *string { + if v == nil { + return nil + } + return v.EvaluateUrl + }).(pulumi.StringPtrOutput) +} + +func (o AccessGroupRequireExternalEvaluationPtrOutput) KeysUrl() pulumi.StringPtrOutput { + return o.ApplyT(func(v *AccessGroupRequireExternalEvaluation) *string { + if v == nil { + return nil + } + return v.KeysUrl + }).(pulumi.StringPtrOutput) +} + type AccessGroupRequireGithub struct { IdentityProviderId *string `pulumi:"identityProviderId"` // Friendly name of the Access Group. @@ -2651,24 +3113,25 @@ func (o AccessPolicyApprovalGroupArrayOutput) Index(i pulumi.IntInput) AccessPol } type AccessPolicyExclude struct { - AnyValidServiceToken *bool `pulumi:"anyValidServiceToken"` - AuthMethod *string `pulumi:"authMethod"` - Azures []AccessPolicyExcludeAzure `pulumi:"azures"` - Certificate *bool `pulumi:"certificate"` - CommonName *string `pulumi:"commonName"` - DevicePostures []string `pulumi:"devicePostures"` - EmailDomains []string `pulumi:"emailDomains"` - Emails []string `pulumi:"emails"` - Everyone *bool `pulumi:"everyone"` - Geos []string `pulumi:"geos"` - Githubs []AccessPolicyExcludeGithub `pulumi:"githubs"` - Groups []string `pulumi:"groups"` - Gsuites []AccessPolicyExcludeGsuite `pulumi:"gsuites"` - Ips []string `pulumi:"ips"` - LoginMethods []string `pulumi:"loginMethods"` - Oktas []AccessPolicyExcludeOkta `pulumi:"oktas"` - Samls []AccessPolicyExcludeSaml `pulumi:"samls"` - ServiceTokens []string `pulumi:"serviceTokens"` + AnyValidServiceToken *bool `pulumi:"anyValidServiceToken"` + AuthMethod *string `pulumi:"authMethod"` + Azures []AccessPolicyExcludeAzure `pulumi:"azures"` + Certificate *bool `pulumi:"certificate"` + CommonName *string `pulumi:"commonName"` + DevicePostures []string `pulumi:"devicePostures"` + EmailDomains []string `pulumi:"emailDomains"` + Emails []string `pulumi:"emails"` + Everyone *bool `pulumi:"everyone"` + ExternalEvaluation *AccessPolicyExcludeExternalEvaluation `pulumi:"externalEvaluation"` + Geos []string `pulumi:"geos"` + Githubs []AccessPolicyExcludeGithub `pulumi:"githubs"` + Groups []string `pulumi:"groups"` + Gsuites []AccessPolicyExcludeGsuite `pulumi:"gsuites"` + Ips []string `pulumi:"ips"` + LoginMethods []string `pulumi:"loginMethods"` + Oktas []AccessPolicyExcludeOkta `pulumi:"oktas"` + Samls []AccessPolicyExcludeSaml `pulumi:"samls"` + ServiceTokens []string `pulumi:"serviceTokens"` } // AccessPolicyExcludeInput is an input type that accepts AccessPolicyExcludeArgs and AccessPolicyExcludeOutput values. @@ -2683,24 +3146,25 @@ type AccessPolicyExcludeInput interface { } type AccessPolicyExcludeArgs struct { - AnyValidServiceToken pulumi.BoolPtrInput `pulumi:"anyValidServiceToken"` - AuthMethod pulumi.StringPtrInput `pulumi:"authMethod"` - Azures AccessPolicyExcludeAzureArrayInput `pulumi:"azures"` - Certificate pulumi.BoolPtrInput `pulumi:"certificate"` - CommonName pulumi.StringPtrInput `pulumi:"commonName"` - DevicePostures pulumi.StringArrayInput `pulumi:"devicePostures"` - EmailDomains pulumi.StringArrayInput `pulumi:"emailDomains"` - Emails pulumi.StringArrayInput `pulumi:"emails"` - Everyone pulumi.BoolPtrInput `pulumi:"everyone"` - Geos pulumi.StringArrayInput `pulumi:"geos"` - Githubs AccessPolicyExcludeGithubArrayInput `pulumi:"githubs"` - Groups pulumi.StringArrayInput `pulumi:"groups"` - Gsuites AccessPolicyExcludeGsuiteArrayInput `pulumi:"gsuites"` - Ips pulumi.StringArrayInput `pulumi:"ips"` - LoginMethods pulumi.StringArrayInput `pulumi:"loginMethods"` - Oktas AccessPolicyExcludeOktaArrayInput `pulumi:"oktas"` - Samls AccessPolicyExcludeSamlArrayInput `pulumi:"samls"` - ServiceTokens pulumi.StringArrayInput `pulumi:"serviceTokens"` + AnyValidServiceToken pulumi.BoolPtrInput `pulumi:"anyValidServiceToken"` + AuthMethod pulumi.StringPtrInput `pulumi:"authMethod"` + Azures AccessPolicyExcludeAzureArrayInput `pulumi:"azures"` + Certificate pulumi.BoolPtrInput `pulumi:"certificate"` + CommonName pulumi.StringPtrInput `pulumi:"commonName"` + DevicePostures pulumi.StringArrayInput `pulumi:"devicePostures"` + EmailDomains pulumi.StringArrayInput `pulumi:"emailDomains"` + Emails pulumi.StringArrayInput `pulumi:"emails"` + Everyone pulumi.BoolPtrInput `pulumi:"everyone"` + ExternalEvaluation AccessPolicyExcludeExternalEvaluationPtrInput `pulumi:"externalEvaluation"` + Geos pulumi.StringArrayInput `pulumi:"geos"` + Githubs AccessPolicyExcludeGithubArrayInput `pulumi:"githubs"` + Groups pulumi.StringArrayInput `pulumi:"groups"` + Gsuites AccessPolicyExcludeGsuiteArrayInput `pulumi:"gsuites"` + Ips pulumi.StringArrayInput `pulumi:"ips"` + LoginMethods pulumi.StringArrayInput `pulumi:"loginMethods"` + Oktas AccessPolicyExcludeOktaArrayInput `pulumi:"oktas"` + Samls AccessPolicyExcludeSamlArrayInput `pulumi:"samls"` + ServiceTokens pulumi.StringArrayInput `pulumi:"serviceTokens"` } func (AccessPolicyExcludeArgs) ElementType() reflect.Type { @@ -2790,6 +3254,10 @@ func (o AccessPolicyExcludeOutput) Everyone() pulumi.BoolPtrOutput { return o.ApplyT(func(v AccessPolicyExclude) *bool { return v.Everyone }).(pulumi.BoolPtrOutput) } +func (o AccessPolicyExcludeOutput) ExternalEvaluation() AccessPolicyExcludeExternalEvaluationPtrOutput { + return o.ApplyT(func(v AccessPolicyExclude) *AccessPolicyExcludeExternalEvaluation { return v.ExternalEvaluation }).(AccessPolicyExcludeExternalEvaluationPtrOutput) +} + func (o AccessPolicyExcludeOutput) Geos() pulumi.StringArrayOutput { return o.ApplyT(func(v AccessPolicyExclude) []string { return v.Geos }).(pulumi.StringArrayOutput) } @@ -2875,75 +3343,223 @@ func (i AccessPolicyExcludeAzureArgs) ToAccessPolicyExcludeAzureOutput() AccessP return i.ToAccessPolicyExcludeAzureOutputWithContext(context.Background()) } -func (i AccessPolicyExcludeAzureArgs) ToAccessPolicyExcludeAzureOutputWithContext(ctx context.Context) AccessPolicyExcludeAzureOutput { - return pulumi.ToOutputWithContext(ctx, i).(AccessPolicyExcludeAzureOutput) +func (i AccessPolicyExcludeAzureArgs) ToAccessPolicyExcludeAzureOutputWithContext(ctx context.Context) AccessPolicyExcludeAzureOutput { + return pulumi.ToOutputWithContext(ctx, i).(AccessPolicyExcludeAzureOutput) +} + +// AccessPolicyExcludeAzureArrayInput is an input type that accepts AccessPolicyExcludeAzureArray and AccessPolicyExcludeAzureArrayOutput values. +// You can construct a concrete instance of `AccessPolicyExcludeAzureArrayInput` via: +// +// AccessPolicyExcludeAzureArray{ AccessPolicyExcludeAzureArgs{...} } +type AccessPolicyExcludeAzureArrayInput interface { + pulumi.Input + + ToAccessPolicyExcludeAzureArrayOutput() AccessPolicyExcludeAzureArrayOutput + ToAccessPolicyExcludeAzureArrayOutputWithContext(context.Context) AccessPolicyExcludeAzureArrayOutput +} + +type AccessPolicyExcludeAzureArray []AccessPolicyExcludeAzureInput + +func (AccessPolicyExcludeAzureArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]AccessPolicyExcludeAzure)(nil)).Elem() +} + +func (i AccessPolicyExcludeAzureArray) ToAccessPolicyExcludeAzureArrayOutput() AccessPolicyExcludeAzureArrayOutput { + return i.ToAccessPolicyExcludeAzureArrayOutputWithContext(context.Background()) +} + +func (i AccessPolicyExcludeAzureArray) ToAccessPolicyExcludeAzureArrayOutputWithContext(ctx context.Context) AccessPolicyExcludeAzureArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(AccessPolicyExcludeAzureArrayOutput) +} + +type AccessPolicyExcludeAzureOutput struct{ *pulumi.OutputState } + +func (AccessPolicyExcludeAzureOutput) ElementType() reflect.Type { + return reflect.TypeOf((*AccessPolicyExcludeAzure)(nil)).Elem() +} + +func (o AccessPolicyExcludeAzureOutput) ToAccessPolicyExcludeAzureOutput() AccessPolicyExcludeAzureOutput { + return o +} + +func (o AccessPolicyExcludeAzureOutput) ToAccessPolicyExcludeAzureOutputWithContext(ctx context.Context) AccessPolicyExcludeAzureOutput { + return o +} + +func (o AccessPolicyExcludeAzureOutput) IdentityProviderId() pulumi.StringPtrOutput { + return o.ApplyT(func(v AccessPolicyExcludeAzure) *string { return v.IdentityProviderId }).(pulumi.StringPtrOutput) +} + +func (o AccessPolicyExcludeAzureOutput) Ids() pulumi.StringArrayOutput { + return o.ApplyT(func(v AccessPolicyExcludeAzure) []string { return v.Ids }).(pulumi.StringArrayOutput) +} + +type AccessPolicyExcludeAzureArrayOutput struct{ *pulumi.OutputState } + +func (AccessPolicyExcludeAzureArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]AccessPolicyExcludeAzure)(nil)).Elem() +} + +func (o AccessPolicyExcludeAzureArrayOutput) ToAccessPolicyExcludeAzureArrayOutput() AccessPolicyExcludeAzureArrayOutput { + return o +} + +func (o AccessPolicyExcludeAzureArrayOutput) ToAccessPolicyExcludeAzureArrayOutputWithContext(ctx context.Context) AccessPolicyExcludeAzureArrayOutput { + return o +} + +func (o AccessPolicyExcludeAzureArrayOutput) Index(i pulumi.IntInput) AccessPolicyExcludeAzureOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) AccessPolicyExcludeAzure { + return vs[0].([]AccessPolicyExcludeAzure)[vs[1].(int)] + }).(AccessPolicyExcludeAzureOutput) +} + +type AccessPolicyExcludeExternalEvaluation struct { + EvaluateUrl *string `pulumi:"evaluateUrl"` + KeysUrl *string `pulumi:"keysUrl"` +} + +// AccessPolicyExcludeExternalEvaluationInput is an input type that accepts AccessPolicyExcludeExternalEvaluationArgs and AccessPolicyExcludeExternalEvaluationOutput values. +// You can construct a concrete instance of `AccessPolicyExcludeExternalEvaluationInput` via: +// +// AccessPolicyExcludeExternalEvaluationArgs{...} +type AccessPolicyExcludeExternalEvaluationInput interface { + pulumi.Input + + ToAccessPolicyExcludeExternalEvaluationOutput() AccessPolicyExcludeExternalEvaluationOutput + ToAccessPolicyExcludeExternalEvaluationOutputWithContext(context.Context) AccessPolicyExcludeExternalEvaluationOutput +} + +type AccessPolicyExcludeExternalEvaluationArgs struct { + EvaluateUrl pulumi.StringPtrInput `pulumi:"evaluateUrl"` + KeysUrl pulumi.StringPtrInput `pulumi:"keysUrl"` +} + +func (AccessPolicyExcludeExternalEvaluationArgs) ElementType() reflect.Type { + return reflect.TypeOf((*AccessPolicyExcludeExternalEvaluation)(nil)).Elem() +} + +func (i AccessPolicyExcludeExternalEvaluationArgs) ToAccessPolicyExcludeExternalEvaluationOutput() AccessPolicyExcludeExternalEvaluationOutput { + return i.ToAccessPolicyExcludeExternalEvaluationOutputWithContext(context.Background()) +} + +func (i AccessPolicyExcludeExternalEvaluationArgs) ToAccessPolicyExcludeExternalEvaluationOutputWithContext(ctx context.Context) AccessPolicyExcludeExternalEvaluationOutput { + return pulumi.ToOutputWithContext(ctx, i).(AccessPolicyExcludeExternalEvaluationOutput) +} + +func (i AccessPolicyExcludeExternalEvaluationArgs) ToAccessPolicyExcludeExternalEvaluationPtrOutput() AccessPolicyExcludeExternalEvaluationPtrOutput { + return i.ToAccessPolicyExcludeExternalEvaluationPtrOutputWithContext(context.Background()) +} + +func (i AccessPolicyExcludeExternalEvaluationArgs) ToAccessPolicyExcludeExternalEvaluationPtrOutputWithContext(ctx context.Context) AccessPolicyExcludeExternalEvaluationPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(AccessPolicyExcludeExternalEvaluationOutput).ToAccessPolicyExcludeExternalEvaluationPtrOutputWithContext(ctx) } -// AccessPolicyExcludeAzureArrayInput is an input type that accepts AccessPolicyExcludeAzureArray and AccessPolicyExcludeAzureArrayOutput values. -// You can construct a concrete instance of `AccessPolicyExcludeAzureArrayInput` via: +// AccessPolicyExcludeExternalEvaluationPtrInput is an input type that accepts AccessPolicyExcludeExternalEvaluationArgs, AccessPolicyExcludeExternalEvaluationPtr and AccessPolicyExcludeExternalEvaluationPtrOutput values. +// You can construct a concrete instance of `AccessPolicyExcludeExternalEvaluationPtrInput` via: // -// AccessPolicyExcludeAzureArray{ AccessPolicyExcludeAzureArgs{...} } -type AccessPolicyExcludeAzureArrayInput interface { +// AccessPolicyExcludeExternalEvaluationArgs{...} +// +// or: +// +// nil +type AccessPolicyExcludeExternalEvaluationPtrInput interface { pulumi.Input - ToAccessPolicyExcludeAzureArrayOutput() AccessPolicyExcludeAzureArrayOutput - ToAccessPolicyExcludeAzureArrayOutputWithContext(context.Context) AccessPolicyExcludeAzureArrayOutput + ToAccessPolicyExcludeExternalEvaluationPtrOutput() AccessPolicyExcludeExternalEvaluationPtrOutput + ToAccessPolicyExcludeExternalEvaluationPtrOutputWithContext(context.Context) AccessPolicyExcludeExternalEvaluationPtrOutput } -type AccessPolicyExcludeAzureArray []AccessPolicyExcludeAzureInput +type accessPolicyExcludeExternalEvaluationPtrType AccessPolicyExcludeExternalEvaluationArgs -func (AccessPolicyExcludeAzureArray) ElementType() reflect.Type { - return reflect.TypeOf((*[]AccessPolicyExcludeAzure)(nil)).Elem() +func AccessPolicyExcludeExternalEvaluationPtr(v *AccessPolicyExcludeExternalEvaluationArgs) AccessPolicyExcludeExternalEvaluationPtrInput { + return (*accessPolicyExcludeExternalEvaluationPtrType)(v) } -func (i AccessPolicyExcludeAzureArray) ToAccessPolicyExcludeAzureArrayOutput() AccessPolicyExcludeAzureArrayOutput { - return i.ToAccessPolicyExcludeAzureArrayOutputWithContext(context.Background()) +func (*accessPolicyExcludeExternalEvaluationPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**AccessPolicyExcludeExternalEvaluation)(nil)).Elem() } -func (i AccessPolicyExcludeAzureArray) ToAccessPolicyExcludeAzureArrayOutputWithContext(ctx context.Context) AccessPolicyExcludeAzureArrayOutput { - return pulumi.ToOutputWithContext(ctx, i).(AccessPolicyExcludeAzureArrayOutput) +func (i *accessPolicyExcludeExternalEvaluationPtrType) ToAccessPolicyExcludeExternalEvaluationPtrOutput() AccessPolicyExcludeExternalEvaluationPtrOutput { + return i.ToAccessPolicyExcludeExternalEvaluationPtrOutputWithContext(context.Background()) } -type AccessPolicyExcludeAzureOutput struct{ *pulumi.OutputState } +func (i *accessPolicyExcludeExternalEvaluationPtrType) ToAccessPolicyExcludeExternalEvaluationPtrOutputWithContext(ctx context.Context) AccessPolicyExcludeExternalEvaluationPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(AccessPolicyExcludeExternalEvaluationPtrOutput) +} -func (AccessPolicyExcludeAzureOutput) ElementType() reflect.Type { - return reflect.TypeOf((*AccessPolicyExcludeAzure)(nil)).Elem() +type AccessPolicyExcludeExternalEvaluationOutput struct{ *pulumi.OutputState } + +func (AccessPolicyExcludeExternalEvaluationOutput) ElementType() reflect.Type { + return reflect.TypeOf((*AccessPolicyExcludeExternalEvaluation)(nil)).Elem() } -func (o AccessPolicyExcludeAzureOutput) ToAccessPolicyExcludeAzureOutput() AccessPolicyExcludeAzureOutput { +func (o AccessPolicyExcludeExternalEvaluationOutput) ToAccessPolicyExcludeExternalEvaluationOutput() AccessPolicyExcludeExternalEvaluationOutput { return o } -func (o AccessPolicyExcludeAzureOutput) ToAccessPolicyExcludeAzureOutputWithContext(ctx context.Context) AccessPolicyExcludeAzureOutput { +func (o AccessPolicyExcludeExternalEvaluationOutput) ToAccessPolicyExcludeExternalEvaluationOutputWithContext(ctx context.Context) AccessPolicyExcludeExternalEvaluationOutput { return o } -func (o AccessPolicyExcludeAzureOutput) IdentityProviderId() pulumi.StringPtrOutput { - return o.ApplyT(func(v AccessPolicyExcludeAzure) *string { return v.IdentityProviderId }).(pulumi.StringPtrOutput) +func (o AccessPolicyExcludeExternalEvaluationOutput) ToAccessPolicyExcludeExternalEvaluationPtrOutput() AccessPolicyExcludeExternalEvaluationPtrOutput { + return o.ToAccessPolicyExcludeExternalEvaluationPtrOutputWithContext(context.Background()) } -func (o AccessPolicyExcludeAzureOutput) Ids() pulumi.StringArrayOutput { - return o.ApplyT(func(v AccessPolicyExcludeAzure) []string { return v.Ids }).(pulumi.StringArrayOutput) +func (o AccessPolicyExcludeExternalEvaluationOutput) ToAccessPolicyExcludeExternalEvaluationPtrOutputWithContext(ctx context.Context) AccessPolicyExcludeExternalEvaluationPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v AccessPolicyExcludeExternalEvaluation) *AccessPolicyExcludeExternalEvaluation { + return &v + }).(AccessPolicyExcludeExternalEvaluationPtrOutput) } -type AccessPolicyExcludeAzureArrayOutput struct{ *pulumi.OutputState } +func (o AccessPolicyExcludeExternalEvaluationOutput) EvaluateUrl() pulumi.StringPtrOutput { + return o.ApplyT(func(v AccessPolicyExcludeExternalEvaluation) *string { return v.EvaluateUrl }).(pulumi.StringPtrOutput) +} -func (AccessPolicyExcludeAzureArrayOutput) ElementType() reflect.Type { - return reflect.TypeOf((*[]AccessPolicyExcludeAzure)(nil)).Elem() +func (o AccessPolicyExcludeExternalEvaluationOutput) KeysUrl() pulumi.StringPtrOutput { + return o.ApplyT(func(v AccessPolicyExcludeExternalEvaluation) *string { return v.KeysUrl }).(pulumi.StringPtrOutput) } -func (o AccessPolicyExcludeAzureArrayOutput) ToAccessPolicyExcludeAzureArrayOutput() AccessPolicyExcludeAzureArrayOutput { +type AccessPolicyExcludeExternalEvaluationPtrOutput struct{ *pulumi.OutputState } + +func (AccessPolicyExcludeExternalEvaluationPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**AccessPolicyExcludeExternalEvaluation)(nil)).Elem() +} + +func (o AccessPolicyExcludeExternalEvaluationPtrOutput) ToAccessPolicyExcludeExternalEvaluationPtrOutput() AccessPolicyExcludeExternalEvaluationPtrOutput { return o } -func (o AccessPolicyExcludeAzureArrayOutput) ToAccessPolicyExcludeAzureArrayOutputWithContext(ctx context.Context) AccessPolicyExcludeAzureArrayOutput { +func (o AccessPolicyExcludeExternalEvaluationPtrOutput) ToAccessPolicyExcludeExternalEvaluationPtrOutputWithContext(ctx context.Context) AccessPolicyExcludeExternalEvaluationPtrOutput { return o } -func (o AccessPolicyExcludeAzureArrayOutput) Index(i pulumi.IntInput) AccessPolicyExcludeAzureOutput { - return pulumi.All(o, i).ApplyT(func(vs []interface{}) AccessPolicyExcludeAzure { - return vs[0].([]AccessPolicyExcludeAzure)[vs[1].(int)] - }).(AccessPolicyExcludeAzureOutput) +func (o AccessPolicyExcludeExternalEvaluationPtrOutput) Elem() AccessPolicyExcludeExternalEvaluationOutput { + return o.ApplyT(func(v *AccessPolicyExcludeExternalEvaluation) AccessPolicyExcludeExternalEvaluation { + if v != nil { + return *v + } + var ret AccessPolicyExcludeExternalEvaluation + return ret + }).(AccessPolicyExcludeExternalEvaluationOutput) +} + +func (o AccessPolicyExcludeExternalEvaluationPtrOutput) EvaluateUrl() pulumi.StringPtrOutput { + return o.ApplyT(func(v *AccessPolicyExcludeExternalEvaluation) *string { + if v == nil { + return nil + } + return v.EvaluateUrl + }).(pulumi.StringPtrOutput) +} + +func (o AccessPolicyExcludeExternalEvaluationPtrOutput) KeysUrl() pulumi.StringPtrOutput { + return o.ApplyT(func(v *AccessPolicyExcludeExternalEvaluation) *string { + if v == nil { + return nil + } + return v.KeysUrl + }).(pulumi.StringPtrOutput) } type AccessPolicyExcludeGithub struct { @@ -3365,24 +3981,25 @@ func (o AccessPolicyExcludeSamlArrayOutput) Index(i pulumi.IntInput) AccessPolic } type AccessPolicyInclude struct { - AnyValidServiceToken *bool `pulumi:"anyValidServiceToken"` - AuthMethod *string `pulumi:"authMethod"` - Azures []AccessPolicyIncludeAzure `pulumi:"azures"` - Certificate *bool `pulumi:"certificate"` - CommonName *string `pulumi:"commonName"` - DevicePostures []string `pulumi:"devicePostures"` - EmailDomains []string `pulumi:"emailDomains"` - Emails []string `pulumi:"emails"` - Everyone *bool `pulumi:"everyone"` - Geos []string `pulumi:"geos"` - Githubs []AccessPolicyIncludeGithub `pulumi:"githubs"` - Groups []string `pulumi:"groups"` - Gsuites []AccessPolicyIncludeGsuite `pulumi:"gsuites"` - Ips []string `pulumi:"ips"` - LoginMethods []string `pulumi:"loginMethods"` - Oktas []AccessPolicyIncludeOkta `pulumi:"oktas"` - Samls []AccessPolicyIncludeSaml `pulumi:"samls"` - ServiceTokens []string `pulumi:"serviceTokens"` + AnyValidServiceToken *bool `pulumi:"anyValidServiceToken"` + AuthMethod *string `pulumi:"authMethod"` + Azures []AccessPolicyIncludeAzure `pulumi:"azures"` + Certificate *bool `pulumi:"certificate"` + CommonName *string `pulumi:"commonName"` + DevicePostures []string `pulumi:"devicePostures"` + EmailDomains []string `pulumi:"emailDomains"` + Emails []string `pulumi:"emails"` + Everyone *bool `pulumi:"everyone"` + ExternalEvaluation *AccessPolicyIncludeExternalEvaluation `pulumi:"externalEvaluation"` + Geos []string `pulumi:"geos"` + Githubs []AccessPolicyIncludeGithub `pulumi:"githubs"` + Groups []string `pulumi:"groups"` + Gsuites []AccessPolicyIncludeGsuite `pulumi:"gsuites"` + Ips []string `pulumi:"ips"` + LoginMethods []string `pulumi:"loginMethods"` + Oktas []AccessPolicyIncludeOkta `pulumi:"oktas"` + Samls []AccessPolicyIncludeSaml `pulumi:"samls"` + ServiceTokens []string `pulumi:"serviceTokens"` } // AccessPolicyIncludeInput is an input type that accepts AccessPolicyIncludeArgs and AccessPolicyIncludeOutput values. @@ -3397,24 +4014,25 @@ type AccessPolicyIncludeInput interface { } type AccessPolicyIncludeArgs struct { - AnyValidServiceToken pulumi.BoolPtrInput `pulumi:"anyValidServiceToken"` - AuthMethod pulumi.StringPtrInput `pulumi:"authMethod"` - Azures AccessPolicyIncludeAzureArrayInput `pulumi:"azures"` - Certificate pulumi.BoolPtrInput `pulumi:"certificate"` - CommonName pulumi.StringPtrInput `pulumi:"commonName"` - DevicePostures pulumi.StringArrayInput `pulumi:"devicePostures"` - EmailDomains pulumi.StringArrayInput `pulumi:"emailDomains"` - Emails pulumi.StringArrayInput `pulumi:"emails"` - Everyone pulumi.BoolPtrInput `pulumi:"everyone"` - Geos pulumi.StringArrayInput `pulumi:"geos"` - Githubs AccessPolicyIncludeGithubArrayInput `pulumi:"githubs"` - Groups pulumi.StringArrayInput `pulumi:"groups"` - Gsuites AccessPolicyIncludeGsuiteArrayInput `pulumi:"gsuites"` - Ips pulumi.StringArrayInput `pulumi:"ips"` - LoginMethods pulumi.StringArrayInput `pulumi:"loginMethods"` - Oktas AccessPolicyIncludeOktaArrayInput `pulumi:"oktas"` - Samls AccessPolicyIncludeSamlArrayInput `pulumi:"samls"` - ServiceTokens pulumi.StringArrayInput `pulumi:"serviceTokens"` + AnyValidServiceToken pulumi.BoolPtrInput `pulumi:"anyValidServiceToken"` + AuthMethod pulumi.StringPtrInput `pulumi:"authMethod"` + Azures AccessPolicyIncludeAzureArrayInput `pulumi:"azures"` + Certificate pulumi.BoolPtrInput `pulumi:"certificate"` + CommonName pulumi.StringPtrInput `pulumi:"commonName"` + DevicePostures pulumi.StringArrayInput `pulumi:"devicePostures"` + EmailDomains pulumi.StringArrayInput `pulumi:"emailDomains"` + Emails pulumi.StringArrayInput `pulumi:"emails"` + Everyone pulumi.BoolPtrInput `pulumi:"everyone"` + ExternalEvaluation AccessPolicyIncludeExternalEvaluationPtrInput `pulumi:"externalEvaluation"` + Geos pulumi.StringArrayInput `pulumi:"geos"` + Githubs AccessPolicyIncludeGithubArrayInput `pulumi:"githubs"` + Groups pulumi.StringArrayInput `pulumi:"groups"` + Gsuites AccessPolicyIncludeGsuiteArrayInput `pulumi:"gsuites"` + Ips pulumi.StringArrayInput `pulumi:"ips"` + LoginMethods pulumi.StringArrayInput `pulumi:"loginMethods"` + Oktas AccessPolicyIncludeOktaArrayInput `pulumi:"oktas"` + Samls AccessPolicyIncludeSamlArrayInput `pulumi:"samls"` + ServiceTokens pulumi.StringArrayInput `pulumi:"serviceTokens"` } func (AccessPolicyIncludeArgs) ElementType() reflect.Type { @@ -3504,6 +4122,10 @@ func (o AccessPolicyIncludeOutput) Everyone() pulumi.BoolPtrOutput { return o.ApplyT(func(v AccessPolicyInclude) *bool { return v.Everyone }).(pulumi.BoolPtrOutput) } +func (o AccessPolicyIncludeOutput) ExternalEvaluation() AccessPolicyIncludeExternalEvaluationPtrOutput { + return o.ApplyT(func(v AccessPolicyInclude) *AccessPolicyIncludeExternalEvaluation { return v.ExternalEvaluation }).(AccessPolicyIncludeExternalEvaluationPtrOutput) +} + func (o AccessPolicyIncludeOutput) Geos() pulumi.StringArrayOutput { return o.ApplyT(func(v AccessPolicyInclude) []string { return v.Geos }).(pulumi.StringArrayOutput) } @@ -3660,6 +4282,154 @@ func (o AccessPolicyIncludeAzureArrayOutput) Index(i pulumi.IntInput) AccessPoli }).(AccessPolicyIncludeAzureOutput) } +type AccessPolicyIncludeExternalEvaluation struct { + EvaluateUrl *string `pulumi:"evaluateUrl"` + KeysUrl *string `pulumi:"keysUrl"` +} + +// AccessPolicyIncludeExternalEvaluationInput is an input type that accepts AccessPolicyIncludeExternalEvaluationArgs and AccessPolicyIncludeExternalEvaluationOutput values. +// You can construct a concrete instance of `AccessPolicyIncludeExternalEvaluationInput` via: +// +// AccessPolicyIncludeExternalEvaluationArgs{...} +type AccessPolicyIncludeExternalEvaluationInput interface { + pulumi.Input + + ToAccessPolicyIncludeExternalEvaluationOutput() AccessPolicyIncludeExternalEvaluationOutput + ToAccessPolicyIncludeExternalEvaluationOutputWithContext(context.Context) AccessPolicyIncludeExternalEvaluationOutput +} + +type AccessPolicyIncludeExternalEvaluationArgs struct { + EvaluateUrl pulumi.StringPtrInput `pulumi:"evaluateUrl"` + KeysUrl pulumi.StringPtrInput `pulumi:"keysUrl"` +} + +func (AccessPolicyIncludeExternalEvaluationArgs) ElementType() reflect.Type { + return reflect.TypeOf((*AccessPolicyIncludeExternalEvaluation)(nil)).Elem() +} + +func (i AccessPolicyIncludeExternalEvaluationArgs) ToAccessPolicyIncludeExternalEvaluationOutput() AccessPolicyIncludeExternalEvaluationOutput { + return i.ToAccessPolicyIncludeExternalEvaluationOutputWithContext(context.Background()) +} + +func (i AccessPolicyIncludeExternalEvaluationArgs) ToAccessPolicyIncludeExternalEvaluationOutputWithContext(ctx context.Context) AccessPolicyIncludeExternalEvaluationOutput { + return pulumi.ToOutputWithContext(ctx, i).(AccessPolicyIncludeExternalEvaluationOutput) +} + +func (i AccessPolicyIncludeExternalEvaluationArgs) ToAccessPolicyIncludeExternalEvaluationPtrOutput() AccessPolicyIncludeExternalEvaluationPtrOutput { + return i.ToAccessPolicyIncludeExternalEvaluationPtrOutputWithContext(context.Background()) +} + +func (i AccessPolicyIncludeExternalEvaluationArgs) ToAccessPolicyIncludeExternalEvaluationPtrOutputWithContext(ctx context.Context) AccessPolicyIncludeExternalEvaluationPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(AccessPolicyIncludeExternalEvaluationOutput).ToAccessPolicyIncludeExternalEvaluationPtrOutputWithContext(ctx) +} + +// AccessPolicyIncludeExternalEvaluationPtrInput is an input type that accepts AccessPolicyIncludeExternalEvaluationArgs, AccessPolicyIncludeExternalEvaluationPtr and AccessPolicyIncludeExternalEvaluationPtrOutput values. +// You can construct a concrete instance of `AccessPolicyIncludeExternalEvaluationPtrInput` via: +// +// AccessPolicyIncludeExternalEvaluationArgs{...} +// +// or: +// +// nil +type AccessPolicyIncludeExternalEvaluationPtrInput interface { + pulumi.Input + + ToAccessPolicyIncludeExternalEvaluationPtrOutput() AccessPolicyIncludeExternalEvaluationPtrOutput + ToAccessPolicyIncludeExternalEvaluationPtrOutputWithContext(context.Context) AccessPolicyIncludeExternalEvaluationPtrOutput +} + +type accessPolicyIncludeExternalEvaluationPtrType AccessPolicyIncludeExternalEvaluationArgs + +func AccessPolicyIncludeExternalEvaluationPtr(v *AccessPolicyIncludeExternalEvaluationArgs) AccessPolicyIncludeExternalEvaluationPtrInput { + return (*accessPolicyIncludeExternalEvaluationPtrType)(v) +} + +func (*accessPolicyIncludeExternalEvaluationPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**AccessPolicyIncludeExternalEvaluation)(nil)).Elem() +} + +func (i *accessPolicyIncludeExternalEvaluationPtrType) ToAccessPolicyIncludeExternalEvaluationPtrOutput() AccessPolicyIncludeExternalEvaluationPtrOutput { + return i.ToAccessPolicyIncludeExternalEvaluationPtrOutputWithContext(context.Background()) +} + +func (i *accessPolicyIncludeExternalEvaluationPtrType) ToAccessPolicyIncludeExternalEvaluationPtrOutputWithContext(ctx context.Context) AccessPolicyIncludeExternalEvaluationPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(AccessPolicyIncludeExternalEvaluationPtrOutput) +} + +type AccessPolicyIncludeExternalEvaluationOutput struct{ *pulumi.OutputState } + +func (AccessPolicyIncludeExternalEvaluationOutput) ElementType() reflect.Type { + return reflect.TypeOf((*AccessPolicyIncludeExternalEvaluation)(nil)).Elem() +} + +func (o AccessPolicyIncludeExternalEvaluationOutput) ToAccessPolicyIncludeExternalEvaluationOutput() AccessPolicyIncludeExternalEvaluationOutput { + return o +} + +func (o AccessPolicyIncludeExternalEvaluationOutput) ToAccessPolicyIncludeExternalEvaluationOutputWithContext(ctx context.Context) AccessPolicyIncludeExternalEvaluationOutput { + return o +} + +func (o AccessPolicyIncludeExternalEvaluationOutput) ToAccessPolicyIncludeExternalEvaluationPtrOutput() AccessPolicyIncludeExternalEvaluationPtrOutput { + return o.ToAccessPolicyIncludeExternalEvaluationPtrOutputWithContext(context.Background()) +} + +func (o AccessPolicyIncludeExternalEvaluationOutput) ToAccessPolicyIncludeExternalEvaluationPtrOutputWithContext(ctx context.Context) AccessPolicyIncludeExternalEvaluationPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v AccessPolicyIncludeExternalEvaluation) *AccessPolicyIncludeExternalEvaluation { + return &v + }).(AccessPolicyIncludeExternalEvaluationPtrOutput) +} + +func (o AccessPolicyIncludeExternalEvaluationOutput) EvaluateUrl() pulumi.StringPtrOutput { + return o.ApplyT(func(v AccessPolicyIncludeExternalEvaluation) *string { return v.EvaluateUrl }).(pulumi.StringPtrOutput) +} + +func (o AccessPolicyIncludeExternalEvaluationOutput) KeysUrl() pulumi.StringPtrOutput { + return o.ApplyT(func(v AccessPolicyIncludeExternalEvaluation) *string { return v.KeysUrl }).(pulumi.StringPtrOutput) +} + +type AccessPolicyIncludeExternalEvaluationPtrOutput struct{ *pulumi.OutputState } + +func (AccessPolicyIncludeExternalEvaluationPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**AccessPolicyIncludeExternalEvaluation)(nil)).Elem() +} + +func (o AccessPolicyIncludeExternalEvaluationPtrOutput) ToAccessPolicyIncludeExternalEvaluationPtrOutput() AccessPolicyIncludeExternalEvaluationPtrOutput { + return o +} + +func (o AccessPolicyIncludeExternalEvaluationPtrOutput) ToAccessPolicyIncludeExternalEvaluationPtrOutputWithContext(ctx context.Context) AccessPolicyIncludeExternalEvaluationPtrOutput { + return o +} + +func (o AccessPolicyIncludeExternalEvaluationPtrOutput) Elem() AccessPolicyIncludeExternalEvaluationOutput { + return o.ApplyT(func(v *AccessPolicyIncludeExternalEvaluation) AccessPolicyIncludeExternalEvaluation { + if v != nil { + return *v + } + var ret AccessPolicyIncludeExternalEvaluation + return ret + }).(AccessPolicyIncludeExternalEvaluationOutput) +} + +func (o AccessPolicyIncludeExternalEvaluationPtrOutput) EvaluateUrl() pulumi.StringPtrOutput { + return o.ApplyT(func(v *AccessPolicyIncludeExternalEvaluation) *string { + if v == nil { + return nil + } + return v.EvaluateUrl + }).(pulumi.StringPtrOutput) +} + +func (o AccessPolicyIncludeExternalEvaluationPtrOutput) KeysUrl() pulumi.StringPtrOutput { + return o.ApplyT(func(v *AccessPolicyIncludeExternalEvaluation) *string { + if v == nil { + return nil + } + return v.KeysUrl + }).(pulumi.StringPtrOutput) +} + type AccessPolicyIncludeGithub struct { IdentityProviderId *string `pulumi:"identityProviderId"` // Friendly name of the Access Application. @@ -4079,24 +4849,25 @@ func (o AccessPolicyIncludeSamlArrayOutput) Index(i pulumi.IntInput) AccessPolic } type AccessPolicyRequire struct { - AnyValidServiceToken *bool `pulumi:"anyValidServiceToken"` - AuthMethod *string `pulumi:"authMethod"` - Azures []AccessPolicyRequireAzure `pulumi:"azures"` - Certificate *bool `pulumi:"certificate"` - CommonName *string `pulumi:"commonName"` - DevicePostures []string `pulumi:"devicePostures"` - EmailDomains []string `pulumi:"emailDomains"` - Emails []string `pulumi:"emails"` - Everyone *bool `pulumi:"everyone"` - Geos []string `pulumi:"geos"` - Githubs []AccessPolicyRequireGithub `pulumi:"githubs"` - Groups []string `pulumi:"groups"` - Gsuites []AccessPolicyRequireGsuite `pulumi:"gsuites"` - Ips []string `pulumi:"ips"` - LoginMethods []string `pulumi:"loginMethods"` - Oktas []AccessPolicyRequireOkta `pulumi:"oktas"` - Samls []AccessPolicyRequireSaml `pulumi:"samls"` - ServiceTokens []string `pulumi:"serviceTokens"` + AnyValidServiceToken *bool `pulumi:"anyValidServiceToken"` + AuthMethod *string `pulumi:"authMethod"` + Azures []AccessPolicyRequireAzure `pulumi:"azures"` + Certificate *bool `pulumi:"certificate"` + CommonName *string `pulumi:"commonName"` + DevicePostures []string `pulumi:"devicePostures"` + EmailDomains []string `pulumi:"emailDomains"` + Emails []string `pulumi:"emails"` + Everyone *bool `pulumi:"everyone"` + ExternalEvaluation *AccessPolicyRequireExternalEvaluation `pulumi:"externalEvaluation"` + Geos []string `pulumi:"geos"` + Githubs []AccessPolicyRequireGithub `pulumi:"githubs"` + Groups []string `pulumi:"groups"` + Gsuites []AccessPolicyRequireGsuite `pulumi:"gsuites"` + Ips []string `pulumi:"ips"` + LoginMethods []string `pulumi:"loginMethods"` + Oktas []AccessPolicyRequireOkta `pulumi:"oktas"` + Samls []AccessPolicyRequireSaml `pulumi:"samls"` + ServiceTokens []string `pulumi:"serviceTokens"` } // AccessPolicyRequireInput is an input type that accepts AccessPolicyRequireArgs and AccessPolicyRequireOutput values. @@ -4111,24 +4882,25 @@ type AccessPolicyRequireInput interface { } type AccessPolicyRequireArgs struct { - AnyValidServiceToken pulumi.BoolPtrInput `pulumi:"anyValidServiceToken"` - AuthMethod pulumi.StringPtrInput `pulumi:"authMethod"` - Azures AccessPolicyRequireAzureArrayInput `pulumi:"azures"` - Certificate pulumi.BoolPtrInput `pulumi:"certificate"` - CommonName pulumi.StringPtrInput `pulumi:"commonName"` - DevicePostures pulumi.StringArrayInput `pulumi:"devicePostures"` - EmailDomains pulumi.StringArrayInput `pulumi:"emailDomains"` - Emails pulumi.StringArrayInput `pulumi:"emails"` - Everyone pulumi.BoolPtrInput `pulumi:"everyone"` - Geos pulumi.StringArrayInput `pulumi:"geos"` - Githubs AccessPolicyRequireGithubArrayInput `pulumi:"githubs"` - Groups pulumi.StringArrayInput `pulumi:"groups"` - Gsuites AccessPolicyRequireGsuiteArrayInput `pulumi:"gsuites"` - Ips pulumi.StringArrayInput `pulumi:"ips"` - LoginMethods pulumi.StringArrayInput `pulumi:"loginMethods"` - Oktas AccessPolicyRequireOktaArrayInput `pulumi:"oktas"` - Samls AccessPolicyRequireSamlArrayInput `pulumi:"samls"` - ServiceTokens pulumi.StringArrayInput `pulumi:"serviceTokens"` + AnyValidServiceToken pulumi.BoolPtrInput `pulumi:"anyValidServiceToken"` + AuthMethod pulumi.StringPtrInput `pulumi:"authMethod"` + Azures AccessPolicyRequireAzureArrayInput `pulumi:"azures"` + Certificate pulumi.BoolPtrInput `pulumi:"certificate"` + CommonName pulumi.StringPtrInput `pulumi:"commonName"` + DevicePostures pulumi.StringArrayInput `pulumi:"devicePostures"` + EmailDomains pulumi.StringArrayInput `pulumi:"emailDomains"` + Emails pulumi.StringArrayInput `pulumi:"emails"` + Everyone pulumi.BoolPtrInput `pulumi:"everyone"` + ExternalEvaluation AccessPolicyRequireExternalEvaluationPtrInput `pulumi:"externalEvaluation"` + Geos pulumi.StringArrayInput `pulumi:"geos"` + Githubs AccessPolicyRequireGithubArrayInput `pulumi:"githubs"` + Groups pulumi.StringArrayInput `pulumi:"groups"` + Gsuites AccessPolicyRequireGsuiteArrayInput `pulumi:"gsuites"` + Ips pulumi.StringArrayInput `pulumi:"ips"` + LoginMethods pulumi.StringArrayInput `pulumi:"loginMethods"` + Oktas AccessPolicyRequireOktaArrayInput `pulumi:"oktas"` + Samls AccessPolicyRequireSamlArrayInput `pulumi:"samls"` + ServiceTokens pulumi.StringArrayInput `pulumi:"serviceTokens"` } func (AccessPolicyRequireArgs) ElementType() reflect.Type { @@ -4218,6 +4990,10 @@ func (o AccessPolicyRequireOutput) Everyone() pulumi.BoolPtrOutput { return o.ApplyT(func(v AccessPolicyRequire) *bool { return v.Everyone }).(pulumi.BoolPtrOutput) } +func (o AccessPolicyRequireOutput) ExternalEvaluation() AccessPolicyRequireExternalEvaluationPtrOutput { + return o.ApplyT(func(v AccessPolicyRequire) *AccessPolicyRequireExternalEvaluation { return v.ExternalEvaluation }).(AccessPolicyRequireExternalEvaluationPtrOutput) +} + func (o AccessPolicyRequireOutput) Geos() pulumi.StringArrayOutput { return o.ApplyT(func(v AccessPolicyRequire) []string { return v.Geos }).(pulumi.StringArrayOutput) } @@ -4374,6 +5150,154 @@ func (o AccessPolicyRequireAzureArrayOutput) Index(i pulumi.IntInput) AccessPoli }).(AccessPolicyRequireAzureOutput) } +type AccessPolicyRequireExternalEvaluation struct { + EvaluateUrl *string `pulumi:"evaluateUrl"` + KeysUrl *string `pulumi:"keysUrl"` +} + +// AccessPolicyRequireExternalEvaluationInput is an input type that accepts AccessPolicyRequireExternalEvaluationArgs and AccessPolicyRequireExternalEvaluationOutput values. +// You can construct a concrete instance of `AccessPolicyRequireExternalEvaluationInput` via: +// +// AccessPolicyRequireExternalEvaluationArgs{...} +type AccessPolicyRequireExternalEvaluationInput interface { + pulumi.Input + + ToAccessPolicyRequireExternalEvaluationOutput() AccessPolicyRequireExternalEvaluationOutput + ToAccessPolicyRequireExternalEvaluationOutputWithContext(context.Context) AccessPolicyRequireExternalEvaluationOutput +} + +type AccessPolicyRequireExternalEvaluationArgs struct { + EvaluateUrl pulumi.StringPtrInput `pulumi:"evaluateUrl"` + KeysUrl pulumi.StringPtrInput `pulumi:"keysUrl"` +} + +func (AccessPolicyRequireExternalEvaluationArgs) ElementType() reflect.Type { + return reflect.TypeOf((*AccessPolicyRequireExternalEvaluation)(nil)).Elem() +} + +func (i AccessPolicyRequireExternalEvaluationArgs) ToAccessPolicyRequireExternalEvaluationOutput() AccessPolicyRequireExternalEvaluationOutput { + return i.ToAccessPolicyRequireExternalEvaluationOutputWithContext(context.Background()) +} + +func (i AccessPolicyRequireExternalEvaluationArgs) ToAccessPolicyRequireExternalEvaluationOutputWithContext(ctx context.Context) AccessPolicyRequireExternalEvaluationOutput { + return pulumi.ToOutputWithContext(ctx, i).(AccessPolicyRequireExternalEvaluationOutput) +} + +func (i AccessPolicyRequireExternalEvaluationArgs) ToAccessPolicyRequireExternalEvaluationPtrOutput() AccessPolicyRequireExternalEvaluationPtrOutput { + return i.ToAccessPolicyRequireExternalEvaluationPtrOutputWithContext(context.Background()) +} + +func (i AccessPolicyRequireExternalEvaluationArgs) ToAccessPolicyRequireExternalEvaluationPtrOutputWithContext(ctx context.Context) AccessPolicyRequireExternalEvaluationPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(AccessPolicyRequireExternalEvaluationOutput).ToAccessPolicyRequireExternalEvaluationPtrOutputWithContext(ctx) +} + +// AccessPolicyRequireExternalEvaluationPtrInput is an input type that accepts AccessPolicyRequireExternalEvaluationArgs, AccessPolicyRequireExternalEvaluationPtr and AccessPolicyRequireExternalEvaluationPtrOutput values. +// You can construct a concrete instance of `AccessPolicyRequireExternalEvaluationPtrInput` via: +// +// AccessPolicyRequireExternalEvaluationArgs{...} +// +// or: +// +// nil +type AccessPolicyRequireExternalEvaluationPtrInput interface { + pulumi.Input + + ToAccessPolicyRequireExternalEvaluationPtrOutput() AccessPolicyRequireExternalEvaluationPtrOutput + ToAccessPolicyRequireExternalEvaluationPtrOutputWithContext(context.Context) AccessPolicyRequireExternalEvaluationPtrOutput +} + +type accessPolicyRequireExternalEvaluationPtrType AccessPolicyRequireExternalEvaluationArgs + +func AccessPolicyRequireExternalEvaluationPtr(v *AccessPolicyRequireExternalEvaluationArgs) AccessPolicyRequireExternalEvaluationPtrInput { + return (*accessPolicyRequireExternalEvaluationPtrType)(v) +} + +func (*accessPolicyRequireExternalEvaluationPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**AccessPolicyRequireExternalEvaluation)(nil)).Elem() +} + +func (i *accessPolicyRequireExternalEvaluationPtrType) ToAccessPolicyRequireExternalEvaluationPtrOutput() AccessPolicyRequireExternalEvaluationPtrOutput { + return i.ToAccessPolicyRequireExternalEvaluationPtrOutputWithContext(context.Background()) +} + +func (i *accessPolicyRequireExternalEvaluationPtrType) ToAccessPolicyRequireExternalEvaluationPtrOutputWithContext(ctx context.Context) AccessPolicyRequireExternalEvaluationPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(AccessPolicyRequireExternalEvaluationPtrOutput) +} + +type AccessPolicyRequireExternalEvaluationOutput struct{ *pulumi.OutputState } + +func (AccessPolicyRequireExternalEvaluationOutput) ElementType() reflect.Type { + return reflect.TypeOf((*AccessPolicyRequireExternalEvaluation)(nil)).Elem() +} + +func (o AccessPolicyRequireExternalEvaluationOutput) ToAccessPolicyRequireExternalEvaluationOutput() AccessPolicyRequireExternalEvaluationOutput { + return o +} + +func (o AccessPolicyRequireExternalEvaluationOutput) ToAccessPolicyRequireExternalEvaluationOutputWithContext(ctx context.Context) AccessPolicyRequireExternalEvaluationOutput { + return o +} + +func (o AccessPolicyRequireExternalEvaluationOutput) ToAccessPolicyRequireExternalEvaluationPtrOutput() AccessPolicyRequireExternalEvaluationPtrOutput { + return o.ToAccessPolicyRequireExternalEvaluationPtrOutputWithContext(context.Background()) +} + +func (o AccessPolicyRequireExternalEvaluationOutput) ToAccessPolicyRequireExternalEvaluationPtrOutputWithContext(ctx context.Context) AccessPolicyRequireExternalEvaluationPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v AccessPolicyRequireExternalEvaluation) *AccessPolicyRequireExternalEvaluation { + return &v + }).(AccessPolicyRequireExternalEvaluationPtrOutput) +} + +func (o AccessPolicyRequireExternalEvaluationOutput) EvaluateUrl() pulumi.StringPtrOutput { + return o.ApplyT(func(v AccessPolicyRequireExternalEvaluation) *string { return v.EvaluateUrl }).(pulumi.StringPtrOutput) +} + +func (o AccessPolicyRequireExternalEvaluationOutput) KeysUrl() pulumi.StringPtrOutput { + return o.ApplyT(func(v AccessPolicyRequireExternalEvaluation) *string { return v.KeysUrl }).(pulumi.StringPtrOutput) +} + +type AccessPolicyRequireExternalEvaluationPtrOutput struct{ *pulumi.OutputState } + +func (AccessPolicyRequireExternalEvaluationPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**AccessPolicyRequireExternalEvaluation)(nil)).Elem() +} + +func (o AccessPolicyRequireExternalEvaluationPtrOutput) ToAccessPolicyRequireExternalEvaluationPtrOutput() AccessPolicyRequireExternalEvaluationPtrOutput { + return o +} + +func (o AccessPolicyRequireExternalEvaluationPtrOutput) ToAccessPolicyRequireExternalEvaluationPtrOutputWithContext(ctx context.Context) AccessPolicyRequireExternalEvaluationPtrOutput { + return o +} + +func (o AccessPolicyRequireExternalEvaluationPtrOutput) Elem() AccessPolicyRequireExternalEvaluationOutput { + return o.ApplyT(func(v *AccessPolicyRequireExternalEvaluation) AccessPolicyRequireExternalEvaluation { + if v != nil { + return *v + } + var ret AccessPolicyRequireExternalEvaluation + return ret + }).(AccessPolicyRequireExternalEvaluationOutput) +} + +func (o AccessPolicyRequireExternalEvaluationPtrOutput) EvaluateUrl() pulumi.StringPtrOutput { + return o.ApplyT(func(v *AccessPolicyRequireExternalEvaluation) *string { + if v == nil { + return nil + } + return v.EvaluateUrl + }).(pulumi.StringPtrOutput) +} + +func (o AccessPolicyRequireExternalEvaluationPtrOutput) KeysUrl() pulumi.StringPtrOutput { + return o.ApplyT(func(v *AccessPolicyRequireExternalEvaluation) *string { + if v == nil { + return nil + } + return v.KeysUrl + }).(pulumi.StringPtrOutput) +} + type AccessPolicyRequireGithub struct { IdentityProviderId *string `pulumi:"identityProviderId"` // Friendly name of the Access Application. @@ -13413,6 +14337,8 @@ func (o RulesetRuleArrayOutput) Index(i pulumi.IntInput) RulesetRuleOutput { } type RulesetRuleActionParameters struct { + // List of cookie values to include as part of custom fields logging. + CookieFields []string `pulumi:"cookieFields"` // List of HTTP header modifications to perform in the ruleset rule (refer to the nested schema). Headers []RulesetRuleActionParametersHeader `pulumi:"headers"` // Host Header that request origin receives. @@ -13429,6 +14355,10 @@ type RulesetRuleActionParameters struct { Phases []string `pulumi:"phases"` // Products to target with the actions. Valid values are `"bic"`, `"hot"`, `"ratelimit"`, `"securityLevel"`, `"uablock"`, `"waf"` or `"zonelockdown"`. Products []string `pulumi:"products"` + // List of request headers to include as part of custom fields logging, in lowercase. + RequestFields []string `pulumi:"requestFields"` + // List of response headers to include as part of custom fields logging, in lowercase. + ResponseFields []string `pulumi:"responseFields"` // List of parameters that configure the response given to end users (refer to the nested schema). Responses []RulesetRuleActionParametersResponse `pulumi:"responses"` // List of rule-based overrides (refer to the nested schema). @@ -13454,6 +14384,8 @@ type RulesetRuleActionParametersInput interface { } type RulesetRuleActionParametersArgs struct { + // List of cookie values to include as part of custom fields logging. + CookieFields pulumi.StringArrayInput `pulumi:"cookieFields"` // List of HTTP header modifications to perform in the ruleset rule (refer to the nested schema). Headers RulesetRuleActionParametersHeaderArrayInput `pulumi:"headers"` // Host Header that request origin receives. @@ -13470,6 +14402,10 @@ type RulesetRuleActionParametersArgs struct { Phases pulumi.StringArrayInput `pulumi:"phases"` // Products to target with the actions. Valid values are `"bic"`, `"hot"`, `"ratelimit"`, `"securityLevel"`, `"uablock"`, `"waf"` or `"zonelockdown"`. Products pulumi.StringArrayInput `pulumi:"products"` + // List of request headers to include as part of custom fields logging, in lowercase. + RequestFields pulumi.StringArrayInput `pulumi:"requestFields"` + // List of response headers to include as part of custom fields logging, in lowercase. + ResponseFields pulumi.StringArrayInput `pulumi:"responseFields"` // List of parameters that configure the response given to end users (refer to the nested schema). Responses RulesetRuleActionParametersResponseArrayInput `pulumi:"responses"` // List of rule-based overrides (refer to the nested schema). @@ -13560,6 +14496,11 @@ func (o RulesetRuleActionParametersOutput) ToRulesetRuleActionParametersPtrOutpu }).(RulesetRuleActionParametersPtrOutput) } +// List of cookie values to include as part of custom fields logging. +func (o RulesetRuleActionParametersOutput) CookieFields() pulumi.StringArrayOutput { + return o.ApplyT(func(v RulesetRuleActionParameters) []string { return v.CookieFields }).(pulumi.StringArrayOutput) +} + // List of HTTP header modifications to perform in the ruleset rule (refer to the nested schema). func (o RulesetRuleActionParametersOutput) Headers() RulesetRuleActionParametersHeaderArrayOutput { return o.ApplyT(func(v RulesetRuleActionParameters) []RulesetRuleActionParametersHeader { return v.Headers }).(RulesetRuleActionParametersHeaderArrayOutput) @@ -13603,6 +14544,16 @@ func (o RulesetRuleActionParametersOutput) Products() pulumi.StringArrayOutput { return o.ApplyT(func(v RulesetRuleActionParameters) []string { return v.Products }).(pulumi.StringArrayOutput) } +// List of request headers to include as part of custom fields logging, in lowercase. +func (o RulesetRuleActionParametersOutput) RequestFields() pulumi.StringArrayOutput { + return o.ApplyT(func(v RulesetRuleActionParameters) []string { return v.RequestFields }).(pulumi.StringArrayOutput) +} + +// List of response headers to include as part of custom fields logging, in lowercase. +func (o RulesetRuleActionParametersOutput) ResponseFields() pulumi.StringArrayOutput { + return o.ApplyT(func(v RulesetRuleActionParameters) []string { return v.ResponseFields }).(pulumi.StringArrayOutput) +} + // List of parameters that configure the response given to end users (refer to the nested schema). func (o RulesetRuleActionParametersOutput) Responses() RulesetRuleActionParametersResponseArrayOutput { return o.ApplyT(func(v RulesetRuleActionParameters) []RulesetRuleActionParametersResponse { return v.Responses }).(RulesetRuleActionParametersResponseArrayOutput) @@ -13656,6 +14607,16 @@ func (o RulesetRuleActionParametersPtrOutput) Elem() RulesetRuleActionParameters }).(RulesetRuleActionParametersOutput) } +// List of cookie values to include as part of custom fields logging. +func (o RulesetRuleActionParametersPtrOutput) CookieFields() pulumi.StringArrayOutput { + return o.ApplyT(func(v *RulesetRuleActionParameters) []string { + if v == nil { + return nil + } + return v.CookieFields + }).(pulumi.StringArrayOutput) +} + // List of HTTP header modifications to perform in the ruleset rule (refer to the nested schema). func (o RulesetRuleActionParametersPtrOutput) Headers() RulesetRuleActionParametersHeaderArrayOutput { return o.ApplyT(func(v *RulesetRuleActionParameters) []RulesetRuleActionParametersHeader { @@ -13744,6 +14705,26 @@ func (o RulesetRuleActionParametersPtrOutput) Products() pulumi.StringArrayOutpu }).(pulumi.StringArrayOutput) } +// List of request headers to include as part of custom fields logging, in lowercase. +func (o RulesetRuleActionParametersPtrOutput) RequestFields() pulumi.StringArrayOutput { + return o.ApplyT(func(v *RulesetRuleActionParameters) []string { + if v == nil { + return nil + } + return v.RequestFields + }).(pulumi.StringArrayOutput) +} + +// List of response headers to include as part of custom fields logging, in lowercase. +func (o RulesetRuleActionParametersPtrOutput) ResponseFields() pulumi.StringArrayOutput { + return o.ApplyT(func(v *RulesetRuleActionParameters) []string { + if v == nil { + return nil + } + return v.ResponseFields + }).(pulumi.StringArrayOutput) +} + // List of parameters that configure the response given to end users (refer to the nested schema). func (o RulesetRuleActionParametersPtrOutput) Responses() RulesetRuleActionParametersResponseArrayOutput { return o.ApplyT(func(v *RulesetRuleActionParameters) []RulesetRuleActionParametersResponse { @@ -23384,6 +24365,8 @@ func init() { pulumi.RegisterInputType(reflect.TypeOf((*AccessGroupExcludeArrayInput)(nil)).Elem(), AccessGroupExcludeArray{}) pulumi.RegisterInputType(reflect.TypeOf((*AccessGroupExcludeAzureInput)(nil)).Elem(), AccessGroupExcludeAzureArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*AccessGroupExcludeAzureArrayInput)(nil)).Elem(), AccessGroupExcludeAzureArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*AccessGroupExcludeExternalEvaluationInput)(nil)).Elem(), AccessGroupExcludeExternalEvaluationArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*AccessGroupExcludeExternalEvaluationPtrInput)(nil)).Elem(), AccessGroupExcludeExternalEvaluationArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*AccessGroupExcludeGithubInput)(nil)).Elem(), AccessGroupExcludeGithubArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*AccessGroupExcludeGithubArrayInput)(nil)).Elem(), AccessGroupExcludeGithubArray{}) pulumi.RegisterInputType(reflect.TypeOf((*AccessGroupExcludeGsuiteInput)(nil)).Elem(), AccessGroupExcludeGsuiteArgs{}) @@ -23396,6 +24379,8 @@ func init() { pulumi.RegisterInputType(reflect.TypeOf((*AccessGroupIncludeArrayInput)(nil)).Elem(), AccessGroupIncludeArray{}) pulumi.RegisterInputType(reflect.TypeOf((*AccessGroupIncludeAzureInput)(nil)).Elem(), AccessGroupIncludeAzureArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*AccessGroupIncludeAzureArrayInput)(nil)).Elem(), AccessGroupIncludeAzureArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*AccessGroupIncludeExternalEvaluationInput)(nil)).Elem(), AccessGroupIncludeExternalEvaluationArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*AccessGroupIncludeExternalEvaluationPtrInput)(nil)).Elem(), AccessGroupIncludeExternalEvaluationArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*AccessGroupIncludeGithubInput)(nil)).Elem(), AccessGroupIncludeGithubArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*AccessGroupIncludeGithubArrayInput)(nil)).Elem(), AccessGroupIncludeGithubArray{}) pulumi.RegisterInputType(reflect.TypeOf((*AccessGroupIncludeGsuiteInput)(nil)).Elem(), AccessGroupIncludeGsuiteArgs{}) @@ -23408,6 +24393,8 @@ func init() { pulumi.RegisterInputType(reflect.TypeOf((*AccessGroupRequireArrayInput)(nil)).Elem(), AccessGroupRequireArray{}) pulumi.RegisterInputType(reflect.TypeOf((*AccessGroupRequireAzureInput)(nil)).Elem(), AccessGroupRequireAzureArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*AccessGroupRequireAzureArrayInput)(nil)).Elem(), AccessGroupRequireAzureArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*AccessGroupRequireExternalEvaluationInput)(nil)).Elem(), AccessGroupRequireExternalEvaluationArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*AccessGroupRequireExternalEvaluationPtrInput)(nil)).Elem(), AccessGroupRequireExternalEvaluationArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*AccessGroupRequireGithubInput)(nil)).Elem(), AccessGroupRequireGithubArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*AccessGroupRequireGithubArrayInput)(nil)).Elem(), AccessGroupRequireGithubArray{}) pulumi.RegisterInputType(reflect.TypeOf((*AccessGroupRequireGsuiteInput)(nil)).Elem(), AccessGroupRequireGsuiteArgs{}) @@ -23424,6 +24411,8 @@ func init() { pulumi.RegisterInputType(reflect.TypeOf((*AccessPolicyExcludeArrayInput)(nil)).Elem(), AccessPolicyExcludeArray{}) pulumi.RegisterInputType(reflect.TypeOf((*AccessPolicyExcludeAzureInput)(nil)).Elem(), AccessPolicyExcludeAzureArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*AccessPolicyExcludeAzureArrayInput)(nil)).Elem(), AccessPolicyExcludeAzureArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*AccessPolicyExcludeExternalEvaluationInput)(nil)).Elem(), AccessPolicyExcludeExternalEvaluationArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*AccessPolicyExcludeExternalEvaluationPtrInput)(nil)).Elem(), AccessPolicyExcludeExternalEvaluationArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*AccessPolicyExcludeGithubInput)(nil)).Elem(), AccessPolicyExcludeGithubArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*AccessPolicyExcludeGithubArrayInput)(nil)).Elem(), AccessPolicyExcludeGithubArray{}) pulumi.RegisterInputType(reflect.TypeOf((*AccessPolicyExcludeGsuiteInput)(nil)).Elem(), AccessPolicyExcludeGsuiteArgs{}) @@ -23436,6 +24425,8 @@ func init() { pulumi.RegisterInputType(reflect.TypeOf((*AccessPolicyIncludeArrayInput)(nil)).Elem(), AccessPolicyIncludeArray{}) pulumi.RegisterInputType(reflect.TypeOf((*AccessPolicyIncludeAzureInput)(nil)).Elem(), AccessPolicyIncludeAzureArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*AccessPolicyIncludeAzureArrayInput)(nil)).Elem(), AccessPolicyIncludeAzureArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*AccessPolicyIncludeExternalEvaluationInput)(nil)).Elem(), AccessPolicyIncludeExternalEvaluationArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*AccessPolicyIncludeExternalEvaluationPtrInput)(nil)).Elem(), AccessPolicyIncludeExternalEvaluationArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*AccessPolicyIncludeGithubInput)(nil)).Elem(), AccessPolicyIncludeGithubArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*AccessPolicyIncludeGithubArrayInput)(nil)).Elem(), AccessPolicyIncludeGithubArray{}) pulumi.RegisterInputType(reflect.TypeOf((*AccessPolicyIncludeGsuiteInput)(nil)).Elem(), AccessPolicyIncludeGsuiteArgs{}) @@ -23448,6 +24439,8 @@ func init() { pulumi.RegisterInputType(reflect.TypeOf((*AccessPolicyRequireArrayInput)(nil)).Elem(), AccessPolicyRequireArray{}) pulumi.RegisterInputType(reflect.TypeOf((*AccessPolicyRequireAzureInput)(nil)).Elem(), AccessPolicyRequireAzureArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*AccessPolicyRequireAzureArrayInput)(nil)).Elem(), AccessPolicyRequireAzureArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*AccessPolicyRequireExternalEvaluationInput)(nil)).Elem(), AccessPolicyRequireExternalEvaluationArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*AccessPolicyRequireExternalEvaluationPtrInput)(nil)).Elem(), AccessPolicyRequireExternalEvaluationArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*AccessPolicyRequireGithubInput)(nil)).Elem(), AccessPolicyRequireGithubArgs{}) pulumi.RegisterInputType(reflect.TypeOf((*AccessPolicyRequireGithubArrayInput)(nil)).Elem(), AccessPolicyRequireGithubArray{}) pulumi.RegisterInputType(reflect.TypeOf((*AccessPolicyRequireGsuiteInput)(nil)).Elem(), AccessPolicyRequireGsuiteArgs{}) @@ -23675,6 +24668,8 @@ func init() { pulumi.RegisterOutputType(AccessGroupExcludeArrayOutput{}) pulumi.RegisterOutputType(AccessGroupExcludeAzureOutput{}) pulumi.RegisterOutputType(AccessGroupExcludeAzureArrayOutput{}) + pulumi.RegisterOutputType(AccessGroupExcludeExternalEvaluationOutput{}) + pulumi.RegisterOutputType(AccessGroupExcludeExternalEvaluationPtrOutput{}) pulumi.RegisterOutputType(AccessGroupExcludeGithubOutput{}) pulumi.RegisterOutputType(AccessGroupExcludeGithubArrayOutput{}) pulumi.RegisterOutputType(AccessGroupExcludeGsuiteOutput{}) @@ -23687,6 +24682,8 @@ func init() { pulumi.RegisterOutputType(AccessGroupIncludeArrayOutput{}) pulumi.RegisterOutputType(AccessGroupIncludeAzureOutput{}) pulumi.RegisterOutputType(AccessGroupIncludeAzureArrayOutput{}) + pulumi.RegisterOutputType(AccessGroupIncludeExternalEvaluationOutput{}) + pulumi.RegisterOutputType(AccessGroupIncludeExternalEvaluationPtrOutput{}) pulumi.RegisterOutputType(AccessGroupIncludeGithubOutput{}) pulumi.RegisterOutputType(AccessGroupIncludeGithubArrayOutput{}) pulumi.RegisterOutputType(AccessGroupIncludeGsuiteOutput{}) @@ -23699,6 +24696,8 @@ func init() { pulumi.RegisterOutputType(AccessGroupRequireArrayOutput{}) pulumi.RegisterOutputType(AccessGroupRequireAzureOutput{}) pulumi.RegisterOutputType(AccessGroupRequireAzureArrayOutput{}) + pulumi.RegisterOutputType(AccessGroupRequireExternalEvaluationOutput{}) + pulumi.RegisterOutputType(AccessGroupRequireExternalEvaluationPtrOutput{}) pulumi.RegisterOutputType(AccessGroupRequireGithubOutput{}) pulumi.RegisterOutputType(AccessGroupRequireGithubArrayOutput{}) pulumi.RegisterOutputType(AccessGroupRequireGsuiteOutput{}) @@ -23715,6 +24714,8 @@ func init() { pulumi.RegisterOutputType(AccessPolicyExcludeArrayOutput{}) pulumi.RegisterOutputType(AccessPolicyExcludeAzureOutput{}) pulumi.RegisterOutputType(AccessPolicyExcludeAzureArrayOutput{}) + pulumi.RegisterOutputType(AccessPolicyExcludeExternalEvaluationOutput{}) + pulumi.RegisterOutputType(AccessPolicyExcludeExternalEvaluationPtrOutput{}) pulumi.RegisterOutputType(AccessPolicyExcludeGithubOutput{}) pulumi.RegisterOutputType(AccessPolicyExcludeGithubArrayOutput{}) pulumi.RegisterOutputType(AccessPolicyExcludeGsuiteOutput{}) @@ -23727,6 +24728,8 @@ func init() { pulumi.RegisterOutputType(AccessPolicyIncludeArrayOutput{}) pulumi.RegisterOutputType(AccessPolicyIncludeAzureOutput{}) pulumi.RegisterOutputType(AccessPolicyIncludeAzureArrayOutput{}) + pulumi.RegisterOutputType(AccessPolicyIncludeExternalEvaluationOutput{}) + pulumi.RegisterOutputType(AccessPolicyIncludeExternalEvaluationPtrOutput{}) pulumi.RegisterOutputType(AccessPolicyIncludeGithubOutput{}) pulumi.RegisterOutputType(AccessPolicyIncludeGithubArrayOutput{}) pulumi.RegisterOutputType(AccessPolicyIncludeGsuiteOutput{}) @@ -23739,6 +24742,8 @@ func init() { pulumi.RegisterOutputType(AccessPolicyRequireArrayOutput{}) pulumi.RegisterOutputType(AccessPolicyRequireAzureOutput{}) pulumi.RegisterOutputType(AccessPolicyRequireAzureArrayOutput{}) + pulumi.RegisterOutputType(AccessPolicyRequireExternalEvaluationOutput{}) + pulumi.RegisterOutputType(AccessPolicyRequireExternalEvaluationPtrOutput{}) pulumi.RegisterOutputType(AccessPolicyRequireGithubOutput{}) pulumi.RegisterOutputType(AccessPolicyRequireGithubArrayOutput{}) pulumi.RegisterOutputType(AccessPolicyRequireGsuiteOutput{}) diff --git a/sdk/go/cloudflare/ruleset.go b/sdk/go/cloudflare/ruleset.go index 2cf54463..64cdf22b 100644 --- a/sdk/go/cloudflare/ruleset.go +++ b/sdk/go/cloudflare/ruleset.go @@ -234,6 +234,41 @@ import ( // if err != nil { // return err // } +// _, err = cloudflare.NewRuleset(ctx, "customFieldsLoggingExample", &cloudflare.RulesetArgs{ +// Description: pulumi.String("add custom fields to logging"), +// Kind: pulumi.String("zone"), +// Name: pulumi.String("log custom fields"), +// Phase: pulumi.String("http_log_custom_fields"), +// Rules: RulesetRuleArray{ +// &RulesetRuleArgs{ +// Action: pulumi.String("log_custom_field"), +// ActionParameters: &RulesetRuleActionParametersArgs{ +// CookieFields: pulumi.StringArray{ +// pulumi.String("__ga"), +// pulumi.String("accountNumber"), +// pulumi.String("__cfruid"), +// }, +// RequestFields: pulumi.StringArray{ +// pulumi.String("content-type"), +// pulumi.String("x-forwarded-for"), +// pulumi.String("host"), +// }, +// ResponseFields: pulumi.StringArray{ +// pulumi.String("server"), +// pulumi.String("content-type"), +// pulumi.String("allow"), +// }, +// }, +// Description: pulumi.String("log custom fields rule"), +// Enabled: pulumi.Bool(true), +// Expression: pulumi.String("true"), +// }, +// }, +// ZoneId: pulumi.String("cb029e245cfdd66dc8d2e570d5dd3322"), +// }) +// if err != nil { +// return err +// } // return nil // }) // } diff --git a/sdk/go/cloudflare/tunnelRoute.go b/sdk/go/cloudflare/tunnelRoute.go index 2ab03bbe..d65c4fe6 100644 --- a/sdk/go/cloudflare/tunnelRoute.go +++ b/sdk/go/cloudflare/tunnelRoute.go @@ -27,10 +27,11 @@ import ( // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { // _, err := cloudflare.NewTunnelRoute(ctx, "example", &cloudflare.TunnelRouteArgs{ -// AccountId: pulumi.String("c4a7362d577a6c3019a474fd6f485821"), -// Comment: pulumi.String("New tunnel route for documentation"), -// Network: pulumi.String("192.0.2.24/32"), -// TunnelId: pulumi.String("f70ff985-a4ef-4643-bbbc-4a0ed4fc8415"), +// AccountId: pulumi.String("c4a7362d577a6c3019a474fd6f485821"), +// Comment: pulumi.String("New tunnel route for documentation"), +// Network: pulumi.String("192.0.2.24/32"), +// TunnelId: pulumi.String("f70ff985-a4ef-4643-bbbc-4a0ed4fc8415"), +// VirtualNetworkId: pulumi.String("bdc39a3c-3104-4c23-8ac0-9f455dda691a"), // }) // if err != nil { // return err @@ -59,10 +60,11 @@ import ( // return err // } // _, err = cloudflare.NewTunnelRoute(ctx, "example", &cloudflare.TunnelRouteArgs{ -// AccountId: pulumi.String("c4a7362d577a6c3019a474fd6f485821"), -// TunnelId: tunnel.ID(), -// Network: pulumi.String("192.0.2.24/32"), -// Comment: pulumi.String("New tunnel route for documentation"), +// AccountId: pulumi.String("c4a7362d577a6c3019a474fd6f485821"), +// TunnelId: tunnel.ID(), +// Network: pulumi.String("192.0.2.24/32"), +// Comment: pulumi.String("New tunnel route for documentation"), +// VirtualNetworkId: pulumi.String("bdc39a3c-3104-4c23-8ac0-9f455dda691a"), // }) // if err != nil { // return err @@ -74,11 +76,17 @@ import ( // // ## Import // -// An existing tunnel route can be imported using the account ID and network CIDR. +// An existing tunnel route can be imported using the account ID and network CIDR // // ```sh // $ pulumi import cloudflare:index/tunnelRoute:TunnelRoute cloudflare_tunnel_route c4a7362d577a6c3019a474fd6f485821/192.0.2.24/32 // ``` +// +// or using account ID, network CIDR and virtual network ID. +// +// ```sh +// $ pulumi import cloudflare:index/tunnelRoute:TunnelRoute cloudflare_tunnel_route c4a7362d577a6c3019a474fd6f485821/192.0.2.24/32/bdc39a3c-3104-4c23-8ac0-9f455dda691a +// ``` type TunnelRoute struct { pulumi.CustomResourceState @@ -90,6 +98,8 @@ type TunnelRoute struct { Network pulumi.StringOutput `pulumi:"network"` // The ID of the tunnel that will service the tunnel route. TunnelId pulumi.StringOutput `pulumi:"tunnelId"` + // The ID of the virtual network for which this route is being added; uses the default virtual network of the account if none is provided. + VirtualNetworkId pulumi.StringPtrOutput `pulumi:"virtualNetworkId"` } // NewTunnelRoute registers a new resource with the given unique name, arguments, and options. @@ -138,6 +148,8 @@ type tunnelRouteState struct { Network *string `pulumi:"network"` // The ID of the tunnel that will service the tunnel route. TunnelId *string `pulumi:"tunnelId"` + // The ID of the virtual network for which this route is being added; uses the default virtual network of the account if none is provided. + VirtualNetworkId *string `pulumi:"virtualNetworkId"` } type TunnelRouteState struct { @@ -149,6 +161,8 @@ type TunnelRouteState struct { Network pulumi.StringPtrInput // The ID of the tunnel that will service the tunnel route. TunnelId pulumi.StringPtrInput + // The ID of the virtual network for which this route is being added; uses the default virtual network of the account if none is provided. + VirtualNetworkId pulumi.StringPtrInput } func (TunnelRouteState) ElementType() reflect.Type { @@ -164,6 +178,8 @@ type tunnelRouteArgs struct { Network string `pulumi:"network"` // The ID of the tunnel that will service the tunnel route. TunnelId string `pulumi:"tunnelId"` + // The ID of the virtual network for which this route is being added; uses the default virtual network of the account if none is provided. + VirtualNetworkId *string `pulumi:"virtualNetworkId"` } // The set of arguments for constructing a TunnelRoute resource. @@ -176,6 +192,8 @@ type TunnelRouteArgs struct { Network pulumi.StringInput // The ID of the tunnel that will service the tunnel route. TunnelId pulumi.StringInput + // The ID of the virtual network for which this route is being added; uses the default virtual network of the account if none is provided. + VirtualNetworkId pulumi.StringPtrInput } func (TunnelRouteArgs) ElementType() reflect.Type { @@ -285,6 +303,11 @@ func (o TunnelRouteOutput) TunnelId() pulumi.StringOutput { return o.ApplyT(func(v *TunnelRoute) pulumi.StringOutput { return v.TunnelId }).(pulumi.StringOutput) } +// The ID of the virtual network for which this route is being added; uses the default virtual network of the account if none is provided. +func (o TunnelRouteOutput) VirtualNetworkId() pulumi.StringPtrOutput { + return o.ApplyT(func(v *TunnelRoute) pulumi.StringPtrOutput { return v.VirtualNetworkId }).(pulumi.StringPtrOutput) +} + type TunnelRouteArrayOutput struct{ *pulumi.OutputState } func (TunnelRouteArrayOutput) ElementType() reflect.Type { diff --git a/sdk/go/cloudflare/tunnelVirtualNetwork.go b/sdk/go/cloudflare/tunnelVirtualNetwork.go new file mode 100644 index 00000000..a56c2579 --- /dev/null +++ b/sdk/go/cloudflare/tunnelVirtualNetwork.go @@ -0,0 +1,300 @@ +// Code generated by the Pulumi Terraform Bridge (tfgen) Tool DO NOT EDIT. +// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** + +package cloudflare + +import ( + "context" + "reflect" + + "github.com/pkg/errors" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// Provides a resource, that manages Cloudflare tunnel virtual networks for Zero Trust. Tunnel +// virtual networks are used for segregation of Tunnel IP Routes via Virtualized Networks to +// handle overlapping private IPs in your origins.. +// +// ## Example Usage +// +// ```go +// package main +// +// import ( +// "github.com/pulumi/pulumi-cloudflare/sdk/v4/go/cloudflare" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// _, err := cloudflare.NewTunnelVirtualNetwork(ctx, "example", &cloudflare.TunnelVirtualNetworkArgs{ +// AccountId: pulumi.String("c4a7362d577a6c3019a474fd6f485821"), +// Comment: pulumi.String("New tunnel virtual network for documentation"), +// Name: pulumi.String("vnet-for-documentation"), +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// ``` +// +// ## Import +// +// An existing tunnel virtual networks can be imported using the account ID and virtual network ID. +// +// ```sh +// $ pulumi import cloudflare:index/tunnelVirtualNetwork:TunnelVirtualNetwork cloudflare_tunnel_virtual_network c4a7362d577a6c3019a474fd6f485821/3c8ff8af-b487-45bd-89e3-4c85a1532600 +// ``` +type TunnelVirtualNetwork struct { + pulumi.CustomResourceState + + // The ID of the account where the tunnel virtual network is being created. + AccountId pulumi.StringOutput `pulumi:"accountId"` + // Description of the tunnel virtual network. + Comment pulumi.StringPtrOutput `pulumi:"comment"` + // Whether this virtual network is the default one for the account. This means IP Routes belong to this virtual network and Teams Clients in the account route through this virtual network, unless specified otherwise for each case. + IsDefaultNetwork pulumi.BoolPtrOutput `pulumi:"isDefaultNetwork"` + // A user-friendly name chosen when the virtual network is created. + Name pulumi.StringOutput `pulumi:"name"` +} + +// NewTunnelVirtualNetwork registers a new resource with the given unique name, arguments, and options. +func NewTunnelVirtualNetwork(ctx *pulumi.Context, + name string, args *TunnelVirtualNetworkArgs, opts ...pulumi.ResourceOption) (*TunnelVirtualNetwork, error) { + if args == nil { + return nil, errors.New("missing one or more required arguments") + } + + if args.AccountId == nil { + return nil, errors.New("invalid value for required argument 'AccountId'") + } + if args.Name == nil { + return nil, errors.New("invalid value for required argument 'Name'") + } + var resource TunnelVirtualNetwork + err := ctx.RegisterResource("cloudflare:index/tunnelVirtualNetwork:TunnelVirtualNetwork", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetTunnelVirtualNetwork gets an existing TunnelVirtualNetwork resource's state with the given name, ID, and optional +// state properties that are used to uniquely qualify the lookup (nil if not required). +func GetTunnelVirtualNetwork(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *TunnelVirtualNetworkState, opts ...pulumi.ResourceOption) (*TunnelVirtualNetwork, error) { + var resource TunnelVirtualNetwork + err := ctx.ReadResource("cloudflare:index/tunnelVirtualNetwork:TunnelVirtualNetwork", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering TunnelVirtualNetwork resources. +type tunnelVirtualNetworkState struct { + // The ID of the account where the tunnel virtual network is being created. + AccountId *string `pulumi:"accountId"` + // Description of the tunnel virtual network. + Comment *string `pulumi:"comment"` + // Whether this virtual network is the default one for the account. This means IP Routes belong to this virtual network and Teams Clients in the account route through this virtual network, unless specified otherwise for each case. + IsDefaultNetwork *bool `pulumi:"isDefaultNetwork"` + // A user-friendly name chosen when the virtual network is created. + Name *string `pulumi:"name"` +} + +type TunnelVirtualNetworkState struct { + // The ID of the account where the tunnel virtual network is being created. + AccountId pulumi.StringPtrInput + // Description of the tunnel virtual network. + Comment pulumi.StringPtrInput + // Whether this virtual network is the default one for the account. This means IP Routes belong to this virtual network and Teams Clients in the account route through this virtual network, unless specified otherwise for each case. + IsDefaultNetwork pulumi.BoolPtrInput + // A user-friendly name chosen when the virtual network is created. + Name pulumi.StringPtrInput +} + +func (TunnelVirtualNetworkState) ElementType() reflect.Type { + return reflect.TypeOf((*tunnelVirtualNetworkState)(nil)).Elem() +} + +type tunnelVirtualNetworkArgs struct { + // The ID of the account where the tunnel virtual network is being created. + AccountId string `pulumi:"accountId"` + // Description of the tunnel virtual network. + Comment *string `pulumi:"comment"` + // Whether this virtual network is the default one for the account. This means IP Routes belong to this virtual network and Teams Clients in the account route through this virtual network, unless specified otherwise for each case. + IsDefaultNetwork *bool `pulumi:"isDefaultNetwork"` + // A user-friendly name chosen when the virtual network is created. + Name string `pulumi:"name"` +} + +// The set of arguments for constructing a TunnelVirtualNetwork resource. +type TunnelVirtualNetworkArgs struct { + // The ID of the account where the tunnel virtual network is being created. + AccountId pulumi.StringInput + // Description of the tunnel virtual network. + Comment pulumi.StringPtrInput + // Whether this virtual network is the default one for the account. This means IP Routes belong to this virtual network and Teams Clients in the account route through this virtual network, unless specified otherwise for each case. + IsDefaultNetwork pulumi.BoolPtrInput + // A user-friendly name chosen when the virtual network is created. + Name pulumi.StringInput +} + +func (TunnelVirtualNetworkArgs) ElementType() reflect.Type { + return reflect.TypeOf((*tunnelVirtualNetworkArgs)(nil)).Elem() +} + +type TunnelVirtualNetworkInput interface { + pulumi.Input + + ToTunnelVirtualNetworkOutput() TunnelVirtualNetworkOutput + ToTunnelVirtualNetworkOutputWithContext(ctx context.Context) TunnelVirtualNetworkOutput +} + +func (*TunnelVirtualNetwork) ElementType() reflect.Type { + return reflect.TypeOf((**TunnelVirtualNetwork)(nil)).Elem() +} + +func (i *TunnelVirtualNetwork) ToTunnelVirtualNetworkOutput() TunnelVirtualNetworkOutput { + return i.ToTunnelVirtualNetworkOutputWithContext(context.Background()) +} + +func (i *TunnelVirtualNetwork) ToTunnelVirtualNetworkOutputWithContext(ctx context.Context) TunnelVirtualNetworkOutput { + return pulumi.ToOutputWithContext(ctx, i).(TunnelVirtualNetworkOutput) +} + +// TunnelVirtualNetworkArrayInput is an input type that accepts TunnelVirtualNetworkArray and TunnelVirtualNetworkArrayOutput values. +// You can construct a concrete instance of `TunnelVirtualNetworkArrayInput` via: +// +// TunnelVirtualNetworkArray{ TunnelVirtualNetworkArgs{...} } +type TunnelVirtualNetworkArrayInput interface { + pulumi.Input + + ToTunnelVirtualNetworkArrayOutput() TunnelVirtualNetworkArrayOutput + ToTunnelVirtualNetworkArrayOutputWithContext(context.Context) TunnelVirtualNetworkArrayOutput +} + +type TunnelVirtualNetworkArray []TunnelVirtualNetworkInput + +func (TunnelVirtualNetworkArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]*TunnelVirtualNetwork)(nil)).Elem() +} + +func (i TunnelVirtualNetworkArray) ToTunnelVirtualNetworkArrayOutput() TunnelVirtualNetworkArrayOutput { + return i.ToTunnelVirtualNetworkArrayOutputWithContext(context.Background()) +} + +func (i TunnelVirtualNetworkArray) ToTunnelVirtualNetworkArrayOutputWithContext(ctx context.Context) TunnelVirtualNetworkArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(TunnelVirtualNetworkArrayOutput) +} + +// TunnelVirtualNetworkMapInput is an input type that accepts TunnelVirtualNetworkMap and TunnelVirtualNetworkMapOutput values. +// You can construct a concrete instance of `TunnelVirtualNetworkMapInput` via: +// +// TunnelVirtualNetworkMap{ "key": TunnelVirtualNetworkArgs{...} } +type TunnelVirtualNetworkMapInput interface { + pulumi.Input + + ToTunnelVirtualNetworkMapOutput() TunnelVirtualNetworkMapOutput + ToTunnelVirtualNetworkMapOutputWithContext(context.Context) TunnelVirtualNetworkMapOutput +} + +type TunnelVirtualNetworkMap map[string]TunnelVirtualNetworkInput + +func (TunnelVirtualNetworkMap) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*TunnelVirtualNetwork)(nil)).Elem() +} + +func (i TunnelVirtualNetworkMap) ToTunnelVirtualNetworkMapOutput() TunnelVirtualNetworkMapOutput { + return i.ToTunnelVirtualNetworkMapOutputWithContext(context.Background()) +} + +func (i TunnelVirtualNetworkMap) ToTunnelVirtualNetworkMapOutputWithContext(ctx context.Context) TunnelVirtualNetworkMapOutput { + return pulumi.ToOutputWithContext(ctx, i).(TunnelVirtualNetworkMapOutput) +} + +type TunnelVirtualNetworkOutput struct{ *pulumi.OutputState } + +func (TunnelVirtualNetworkOutput) ElementType() reflect.Type { + return reflect.TypeOf((**TunnelVirtualNetwork)(nil)).Elem() +} + +func (o TunnelVirtualNetworkOutput) ToTunnelVirtualNetworkOutput() TunnelVirtualNetworkOutput { + return o +} + +func (o TunnelVirtualNetworkOutput) ToTunnelVirtualNetworkOutputWithContext(ctx context.Context) TunnelVirtualNetworkOutput { + return o +} + +// The ID of the account where the tunnel virtual network is being created. +func (o TunnelVirtualNetworkOutput) AccountId() pulumi.StringOutput { + return o.ApplyT(func(v *TunnelVirtualNetwork) pulumi.StringOutput { return v.AccountId }).(pulumi.StringOutput) +} + +// Description of the tunnel virtual network. +func (o TunnelVirtualNetworkOutput) Comment() pulumi.StringPtrOutput { + return o.ApplyT(func(v *TunnelVirtualNetwork) pulumi.StringPtrOutput { return v.Comment }).(pulumi.StringPtrOutput) +} + +// Whether this virtual network is the default one for the account. This means IP Routes belong to this virtual network and Teams Clients in the account route through this virtual network, unless specified otherwise for each case. +func (o TunnelVirtualNetworkOutput) IsDefaultNetwork() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *TunnelVirtualNetwork) pulumi.BoolPtrOutput { return v.IsDefaultNetwork }).(pulumi.BoolPtrOutput) +} + +// A user-friendly name chosen when the virtual network is created. +func (o TunnelVirtualNetworkOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v *TunnelVirtualNetwork) pulumi.StringOutput { return v.Name }).(pulumi.StringOutput) +} + +type TunnelVirtualNetworkArrayOutput struct{ *pulumi.OutputState } + +func (TunnelVirtualNetworkArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*TunnelVirtualNetwork)(nil)).Elem() +} + +func (o TunnelVirtualNetworkArrayOutput) ToTunnelVirtualNetworkArrayOutput() TunnelVirtualNetworkArrayOutput { + return o +} + +func (o TunnelVirtualNetworkArrayOutput) ToTunnelVirtualNetworkArrayOutputWithContext(ctx context.Context) TunnelVirtualNetworkArrayOutput { + return o +} + +func (o TunnelVirtualNetworkArrayOutput) Index(i pulumi.IntInput) TunnelVirtualNetworkOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *TunnelVirtualNetwork { + return vs[0].([]*TunnelVirtualNetwork)[vs[1].(int)] + }).(TunnelVirtualNetworkOutput) +} + +type TunnelVirtualNetworkMapOutput struct{ *pulumi.OutputState } + +func (TunnelVirtualNetworkMapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*TunnelVirtualNetwork)(nil)).Elem() +} + +func (o TunnelVirtualNetworkMapOutput) ToTunnelVirtualNetworkMapOutput() TunnelVirtualNetworkMapOutput { + return o +} + +func (o TunnelVirtualNetworkMapOutput) ToTunnelVirtualNetworkMapOutputWithContext(ctx context.Context) TunnelVirtualNetworkMapOutput { + return o +} + +func (o TunnelVirtualNetworkMapOutput) MapIndex(k pulumi.StringInput) TunnelVirtualNetworkOutput { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *TunnelVirtualNetwork { + return vs[0].(map[string]*TunnelVirtualNetwork)[vs[1].(string)] + }).(TunnelVirtualNetworkOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*TunnelVirtualNetworkInput)(nil)).Elem(), &TunnelVirtualNetwork{}) + pulumi.RegisterInputType(reflect.TypeOf((*TunnelVirtualNetworkArrayInput)(nil)).Elem(), TunnelVirtualNetworkArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*TunnelVirtualNetworkMapInput)(nil)).Elem(), TunnelVirtualNetworkMap{}) + pulumi.RegisterOutputType(TunnelVirtualNetworkOutput{}) + pulumi.RegisterOutputType(TunnelVirtualNetworkArrayOutput{}) + pulumi.RegisterOutputType(TunnelVirtualNetworkMapOutput{}) +} diff --git a/sdk/go/cloudflare/waitingRoom.go b/sdk/go/cloudflare/waitingRoom.go index c9863bfe..faf0b6d7 100644 --- a/sdk/go/cloudflare/waitingRoom.go +++ b/sdk/go/cloudflare/waitingRoom.go @@ -55,6 +55,8 @@ type WaitingRoom struct { // This a templated html file that will be rendered at the edge. CustomPageHtml pulumi.StringPtrOutput `pulumi:"customPageHtml"` + // The language to use for the default waiting room page (refer to the nested schema). + DefaultTemplateLanguage pulumi.StringPtrOutput `pulumi:"defaultTemplateLanguage"` // A description to let users add more details about the waiting room. Description pulumi.StringPtrOutput `pulumi:"description"` // Disables automatic renewal of session cookies. Default: false. @@ -127,6 +129,8 @@ func GetWaitingRoom(ctx *pulumi.Context, type waitingRoomState struct { // This a templated html file that will be rendered at the edge. CustomPageHtml *string `pulumi:"customPageHtml"` + // The language to use for the default waiting room page (refer to the nested schema). + DefaultTemplateLanguage *string `pulumi:"defaultTemplateLanguage"` // A description to let users add more details about the waiting room. Description *string `pulumi:"description"` // Disables automatic renewal of session cookies. Default: false. @@ -156,6 +160,8 @@ type waitingRoomState struct { type WaitingRoomState struct { // This a templated html file that will be rendered at the edge. CustomPageHtml pulumi.StringPtrInput + // The language to use for the default waiting room page (refer to the nested schema). + DefaultTemplateLanguage pulumi.StringPtrInput // A description to let users add more details about the waiting room. Description pulumi.StringPtrInput // Disables automatic renewal of session cookies. Default: false. @@ -189,6 +195,8 @@ func (WaitingRoomState) ElementType() reflect.Type { type waitingRoomArgs struct { // This a templated html file that will be rendered at the edge. CustomPageHtml *string `pulumi:"customPageHtml"` + // The language to use for the default waiting room page (refer to the nested schema). + DefaultTemplateLanguage *string `pulumi:"defaultTemplateLanguage"` // A description to let users add more details about the waiting room. Description *string `pulumi:"description"` // Disables automatic renewal of session cookies. Default: false. @@ -219,6 +227,8 @@ type waitingRoomArgs struct { type WaitingRoomArgs struct { // This a templated html file that will be rendered at the edge. CustomPageHtml pulumi.StringPtrInput + // The language to use for the default waiting room page (refer to the nested schema). + DefaultTemplateLanguage pulumi.StringPtrInput // A description to let users add more details about the waiting room. Description pulumi.StringPtrInput // Disables automatic renewal of session cookies. Default: false. @@ -337,6 +347,11 @@ func (o WaitingRoomOutput) CustomPageHtml() pulumi.StringPtrOutput { return o.ApplyT(func(v *WaitingRoom) pulumi.StringPtrOutput { return v.CustomPageHtml }).(pulumi.StringPtrOutput) } +// The language to use for the default waiting room page (refer to the nested schema). +func (o WaitingRoomOutput) DefaultTemplateLanguage() pulumi.StringPtrOutput { + return o.ApplyT(func(v *WaitingRoom) pulumi.StringPtrOutput { return v.DefaultTemplateLanguage }).(pulumi.StringPtrOutput) +} + // A description to let users add more details about the waiting room. func (o WaitingRoomOutput) Description() pulumi.StringPtrOutput { return o.ApplyT(func(v *WaitingRoom) pulumi.StringPtrOutput { return v.Description }).(pulumi.StringPtrOutput) diff --git a/sdk/go/cloudflare/waitingRoomEvent.go b/sdk/go/cloudflare/waitingRoomEvent.go index fb62cc27..89bc243d 100644 --- a/sdk/go/cloudflare/waitingRoomEvent.go +++ b/sdk/go/cloudflare/waitingRoomEvent.go @@ -13,6 +13,33 @@ import ( // Provides a Cloudflare Waiting Room Event resource. // +// ## Example Usage +// +// ```go +// package main +// +// import ( +// "github.com/pulumi/pulumi-cloudflare/sdk/v4/go/cloudflare" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// _, err := cloudflare.NewWaitingRoomEvent(ctx, "example", &cloudflare.WaitingRoomEventArgs{ +// EventEndTime: pulumi.String("2006-01-02T20:04:05Z"), +// EventStartTime: pulumi.String("2006-01-02T15:04:05Z"), +// Name: pulumi.String("foo"), +// WaitingRoomId: pulumi.String("d41d8cd98f00b204e9800998ecf8427e"), +// ZoneId: pulumi.String("ae36f999674d196762efcc5abb06b345"), +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// ``` +// // ## Import // // Waiting room events can be imported using a composite ID formed of zone ID, waiting room ID, and waiting room event ID, e.g. diff --git a/sdk/nodejs/accessApplication.ts b/sdk/nodejs/accessApplication.ts index 527bd34b..c8aabeb3 100644 --- a/sdk/nodejs/accessApplication.ts +++ b/sdk/nodejs/accessApplication.ts @@ -117,9 +117,9 @@ export class AccessApplication extends pulumi.CustomResource { */ public readonly enableBindingCookie!: pulumi.Output; /** - * Option to add the `HttpOnly` cookie flag to access tokens. + * Option to add the `HttpOnly` cookie flag to access tokens. Defaults to `true`. */ - public readonly httpOnlyCookieAttribute!: pulumi.Output; + public readonly httpOnlyCookieAttribute!: pulumi.Output; /** * Image URL for the logo shown in the app launcher * dashboard. @@ -274,7 +274,7 @@ export interface AccessApplicationState { */ enableBindingCookie?: pulumi.Input; /** - * Option to add the `HttpOnly` cookie flag to access tokens. + * Option to add the `HttpOnly` cookie flag to access tokens. Defaults to `true`. */ httpOnlyCookieAttribute?: pulumi.Input; /** @@ -363,7 +363,7 @@ export interface AccessApplicationArgs { */ enableBindingCookie?: pulumi.Input; /** - * Option to add the `HttpOnly` cookie flag to access tokens. + * Option to add the `HttpOnly` cookie flag to access tokens. Defaults to `true`. */ httpOnlyCookieAttribute?: pulumi.Input; /** diff --git a/sdk/nodejs/accessGroup.ts b/sdk/nodejs/accessGroup.ts index f0dad039..6969eec2 100644 --- a/sdk/nodejs/accessGroup.ts +++ b/sdk/nodejs/accessGroup.ts @@ -70,6 +70,8 @@ import * as utilities from "./utilities"; * * `okta` - (Optional) Use Okta as the `include` condition. Example: * * `saml` - (Optional) Use an external SAML setup as the `include` condition. * Example: + * * `externalEvaluation` - (Optional) Pass a user's identity to an external URL as the `include` condition. + * Example: * * ## Import * diff --git a/sdk/nodejs/argoTunnel.ts b/sdk/nodejs/argoTunnel.ts index 67a15bcd..f2d44d06 100644 --- a/sdk/nodejs/argoTunnel.ts +++ b/sdk/nodejs/argoTunnel.ts @@ -74,6 +74,10 @@ export class ArgoTunnel extends pulumi.CustomResource { * 32 or more bytes, encoded as a base64 string. The Create Argo Tunnel endpoint sets this as the tunnel's password. Anyone wishing to run the tunnel needs this password. */ public readonly secret!: pulumi.Output; + /** + * Token used by a connector to authenticate and run the tunnel. + */ + public /*out*/ readonly tunnelToken!: pulumi.Output; /** * Create a ArgoTunnel resource with the given unique name, arguments, and options. @@ -92,6 +96,7 @@ export class ArgoTunnel extends pulumi.CustomResource { resourceInputs["cname"] = state ? state.cname : undefined; resourceInputs["name"] = state ? state.name : undefined; resourceInputs["secret"] = state ? state.secret : undefined; + resourceInputs["tunnelToken"] = state ? state.tunnelToken : undefined; } else { const args = argsOrState as ArgoTunnelArgs | undefined; if ((!args || args.accountId === undefined) && !opts.urn) { @@ -107,6 +112,7 @@ export class ArgoTunnel extends pulumi.CustomResource { resourceInputs["name"] = args ? args.name : undefined; resourceInputs["secret"] = args ? args.secret : undefined; resourceInputs["cname"] = undefined /*out*/; + resourceInputs["tunnelToken"] = undefined /*out*/; } opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts); super(ArgoTunnel.__pulumiType, name, resourceInputs, opts); @@ -133,6 +139,10 @@ export interface ArgoTunnelState { * 32 or more bytes, encoded as a base64 string. The Create Argo Tunnel endpoint sets this as the tunnel's password. Anyone wishing to run the tunnel needs this password. */ secret?: pulumi.Input; + /** + * Token used by a connector to authenticate and run the tunnel. + */ + tunnelToken?: pulumi.Input; } /** diff --git a/sdk/nodejs/go.mod b/sdk/nodejs/go.mod new file mode 100644 index 00000000..4e2f58f3 --- /dev/null +++ b/sdk/nodejs/go.mod @@ -0,0 +1,3 @@ +module fake_nodejs_module // Exclude this directory from Go tools + +go 1.16 diff --git a/sdk/nodejs/healthcheck.ts b/sdk/nodejs/healthcheck.ts index 2eb066cd..3cbf59ac 100644 --- a/sdk/nodejs/healthcheck.ts +++ b/sdk/nodejs/healthcheck.ts @@ -79,6 +79,16 @@ import * as utilities from "./utilities"; * consecutiveSuccesses: 2, * }); * ``` + * + * ## Import + * + * Healthchecks can be imported using a composite ID formed of zone ID and healthcheck ID, e.g. + * + * ```sh + * $ pulumi import cloudflare:index/healthcheck:Healthcheck example 9a7806061c88ada191ed06f989cc3dac/699d98642c564d2e855e9661899b7252 + * ``` + * + * where* `9a7806061c88ada191ed06f989cc3dac` - the zone ID * `699d98642c564d2e855e9661899b7252` - healthcheck ID as returned by [API](https://api.cloudflare.com/#health-checks-list-health-checks) */ export class Healthcheck extends pulumi.CustomResource { /** diff --git a/sdk/nodejs/index.ts b/sdk/nodejs/index.ts index d84742d0..1ac31ee5 100644 --- a/sdk/nodejs/index.ts +++ b/sdk/nodejs/index.ts @@ -73,6 +73,7 @@ export * from "./teamsLocation"; export * from "./teamsProxyEndpoint"; export * from "./teamsRule"; export * from "./tunnelRoute"; +export * from "./tunnelVirtualNetwork"; export * from "./wafGroup"; export * from "./wafOverride"; export * from "./wafPackage"; @@ -155,6 +156,7 @@ import { TeamsLocation } from "./teamsLocation"; import { TeamsProxyEndpoint } from "./teamsProxyEndpoint"; import { TeamsRule } from "./teamsRule"; import { TunnelRoute } from "./tunnelRoute"; +import { TunnelVirtualNetwork } from "./tunnelVirtualNetwork"; import { WafGroup } from "./wafGroup"; import { WafOverride } from "./wafOverride"; import { WafPackage } from "./wafPackage"; @@ -286,6 +288,8 @@ const _module = { return new TeamsRule(name, undefined, { urn }) case "cloudflare:index/tunnelRoute:TunnelRoute": return new TunnelRoute(name, undefined, { urn }) + case "cloudflare:index/tunnelVirtualNetwork:TunnelVirtualNetwork": + return new TunnelVirtualNetwork(name, undefined, { urn }) case "cloudflare:index/wafGroup:WafGroup": return new WafGroup(name, undefined, { urn }) case "cloudflare:index/wafOverride:WafOverride": @@ -378,6 +382,7 @@ pulumi.runtime.registerResourceModule("cloudflare", "index/teamsLocation", _modu pulumi.runtime.registerResourceModule("cloudflare", "index/teamsProxyEndpoint", _module) pulumi.runtime.registerResourceModule("cloudflare", "index/teamsRule", _module) pulumi.runtime.registerResourceModule("cloudflare", "index/tunnelRoute", _module) +pulumi.runtime.registerResourceModule("cloudflare", "index/tunnelVirtualNetwork", _module) pulumi.runtime.registerResourceModule("cloudflare", "index/wafGroup", _module) pulumi.runtime.registerResourceModule("cloudflare", "index/wafOverride", _module) pulumi.runtime.registerResourceModule("cloudflare", "index/wafPackage", _module) diff --git a/sdk/nodejs/logpushJob.ts b/sdk/nodejs/logpushJob.ts index f21cbb90..79da0bbf 100644 --- a/sdk/nodejs/logpushJob.ts +++ b/sdk/nodejs/logpushJob.ts @@ -31,6 +31,7 @@ import * as utilities from "./utilities"; * dataset: "http_requests", * destinationConf: "s3://my-bucket-path?region=us-west-2", * enabled: true, + * frequency: "high", * logpullOptions: "fields=RayID,ClientIP,EdgeStartTimestamp×tamps=rfc3339", * name: "My-logpush-job", * ownershipChallenge: "0000000000000", @@ -98,6 +99,10 @@ export class LogpushJob extends pulumi.CustomResource { * Whether to enable the job. */ public readonly enabled!: pulumi.Output; + /** + * `"high"` or `"low"`. A higher frequency will result in logs being pushed on faster with smaller files. `"low"` frequency will push logs less often with larger files. + */ + public readonly frequency!: pulumi.Output; /** * Configuration string for the Logshare API. It specifies things like requested fields and timestamp formats. See [Logpull options documentation](https://developers.cloudflare.com/logs/logpush/logpush-configuration-api/understanding-logpush-api/#options). */ @@ -133,6 +138,7 @@ export class LogpushJob extends pulumi.CustomResource { resourceInputs["dataset"] = state ? state.dataset : undefined; resourceInputs["destinationConf"] = state ? state.destinationConf : undefined; resourceInputs["enabled"] = state ? state.enabled : undefined; + resourceInputs["frequency"] = state ? state.frequency : undefined; resourceInputs["logpullOptions"] = state ? state.logpullOptions : undefined; resourceInputs["name"] = state ? state.name : undefined; resourceInputs["ownershipChallenge"] = state ? state.ownershipChallenge : undefined; @@ -149,6 +155,7 @@ export class LogpushJob extends pulumi.CustomResource { resourceInputs["dataset"] = args ? args.dataset : undefined; resourceInputs["destinationConf"] = args ? args.destinationConf : undefined; resourceInputs["enabled"] = args ? args.enabled : undefined; + resourceInputs["frequency"] = args ? args.frequency : undefined; resourceInputs["logpullOptions"] = args ? args.logpullOptions : undefined; resourceInputs["name"] = args ? args.name : undefined; resourceInputs["ownershipChallenge"] = args ? args.ownershipChallenge : undefined; @@ -181,6 +188,10 @@ export interface LogpushJobState { * Whether to enable the job. */ enabled?: pulumi.Input; + /** + * `"high"` or `"low"`. A higher frequency will result in logs being pushed on faster with smaller files. `"low"` frequency will push logs less often with larger files. + */ + frequency?: pulumi.Input; /** * Configuration string for the Logshare API. It specifies things like requested fields and timestamp formats. See [Logpull options documentation](https://developers.cloudflare.com/logs/logpush/logpush-configuration-api/understanding-logpush-api/#options). */ @@ -222,6 +233,10 @@ export interface LogpushJobArgs { * Whether to enable the job. */ enabled?: pulumi.Input; + /** + * `"high"` or `"low"`. A higher frequency will result in logs being pushed on faster with smaller files. `"low"` frequency will push logs less often with larger files. + */ + frequency?: pulumi.Input; /** * Configuration string for the Logshare API. It specifies things like requested fields and timestamp formats. See [Logpull options documentation](https://developers.cloudflare.com/logs/logpush/logpush-configuration-api/understanding-logpush-api/#options). */ diff --git a/sdk/nodejs/ruleset.ts b/sdk/nodejs/ruleset.ts index fdb16af2..b4a7d568 100644 --- a/sdk/nodejs/ruleset.ts +++ b/sdk/nodejs/ruleset.ts @@ -191,6 +191,37 @@ import * as utilities from "./utilities"; * }], * zoneId: "cb029e245cfdd66dc8d2e570d5dd3322", * }); + * // custom fields logging + * const customFieldsLoggingExample = new cloudflare.Ruleset("custom_fields_logging_example", { + * description: "add custom fields to logging", + * kind: "zone", + * name: "log custom fields", + * phase: "http_log_custom_fields", + * rules: [{ + * action: "log_custom_field", + * actionParameters: { + * cookieFields: [ + * "__ga", + * "accountNumber", + * "__cfruid", + * ], + * requestFields: [ + * "content-type", + * "x-forwarded-for", + * "host", + * ], + * responseFields: [ + * "server", + * "content-type", + * "allow", + * ], + * }, + * description: "log custom fields rule", + * enabled: true, + * expression: "true", + * }], + * zoneId: "cb029e245cfdd66dc8d2e570d5dd3322", + * }); * ``` * * ## Import diff --git a/sdk/nodejs/tsconfig.json b/sdk/nodejs/tsconfig.json index 27434d2c..fbc380c0 100644 --- a/sdk/nodejs/tsconfig.json +++ b/sdk/nodejs/tsconfig.json @@ -84,6 +84,7 @@ "teamsProxyEndpoint.ts", "teamsRule.ts", "tunnelRoute.ts", + "tunnelVirtualNetwork.ts", "types/index.ts", "types/input.ts", "types/output.ts", diff --git a/sdk/nodejs/tunnelRoute.ts b/sdk/nodejs/tunnelRoute.ts index 419779ae..46211500 100644 --- a/sdk/nodejs/tunnelRoute.ts +++ b/sdk/nodejs/tunnelRoute.ts @@ -19,6 +19,7 @@ import * as utilities from "./utilities"; * comment: "New tunnel route for documentation", * network: "192.0.2.24/32", * tunnelId: "f70ff985-a4ef-4643-bbbc-4a0ed4fc8415", + * virtualNetworkId: "bdc39a3c-3104-4c23-8ac0-9f455dda691a", * }); * ``` * @@ -36,16 +37,23 @@ import * as utilities from "./utilities"; * tunnelId: tunnel.id, * network: "192.0.2.24/32", * comment: "New tunnel route for documentation", + * virtualNetworkId: "bdc39a3c-3104-4c23-8ac0-9f455dda691a", * }); * ``` * * ## Import * - * An existing tunnel route can be imported using the account ID and network CIDR. + * An existing tunnel route can be imported using the account ID and network CIDR * * ```sh * $ pulumi import cloudflare:index/tunnelRoute:TunnelRoute cloudflare_tunnel_route c4a7362d577a6c3019a474fd6f485821/192.0.2.24/32 * ``` + * + * or using account ID, network CIDR and virtual network ID. + * + * ```sh + * $ pulumi import cloudflare:index/tunnelRoute:TunnelRoute cloudflare_tunnel_route c4a7362d577a6c3019a474fd6f485821/192.0.2.24/32/bdc39a3c-3104-4c23-8ac0-9f455dda691a + * ``` */ export class TunnelRoute extends pulumi.CustomResource { /** @@ -91,6 +99,10 @@ export class TunnelRoute extends pulumi.CustomResource { * The ID of the tunnel that will service the tunnel route. */ public readonly tunnelId!: pulumi.Output; + /** + * The ID of the virtual network for which this route is being added; uses the default virtual network of the account if none is provided. + */ + public readonly virtualNetworkId!: pulumi.Output; /** * Create a TunnelRoute resource with the given unique name, arguments, and options. @@ -109,6 +121,7 @@ export class TunnelRoute extends pulumi.CustomResource { resourceInputs["comment"] = state ? state.comment : undefined; resourceInputs["network"] = state ? state.network : undefined; resourceInputs["tunnelId"] = state ? state.tunnelId : undefined; + resourceInputs["virtualNetworkId"] = state ? state.virtualNetworkId : undefined; } else { const args = argsOrState as TunnelRouteArgs | undefined; if ((!args || args.accountId === undefined) && !opts.urn) { @@ -124,6 +137,7 @@ export class TunnelRoute extends pulumi.CustomResource { resourceInputs["comment"] = args ? args.comment : undefined; resourceInputs["network"] = args ? args.network : undefined; resourceInputs["tunnelId"] = args ? args.tunnelId : undefined; + resourceInputs["virtualNetworkId"] = args ? args.virtualNetworkId : undefined; } opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts); super(TunnelRoute.__pulumiType, name, resourceInputs, opts); @@ -150,6 +164,10 @@ export interface TunnelRouteState { * The ID of the tunnel that will service the tunnel route. */ tunnelId?: pulumi.Input; + /** + * The ID of the virtual network for which this route is being added; uses the default virtual network of the account if none is provided. + */ + virtualNetworkId?: pulumi.Input; } /** @@ -172,4 +190,8 @@ export interface TunnelRouteArgs { * The ID of the tunnel that will service the tunnel route. */ tunnelId: pulumi.Input; + /** + * The ID of the virtual network for which this route is being added; uses the default virtual network of the account if none is provided. + */ + virtualNetworkId?: pulumi.Input; } diff --git a/sdk/nodejs/tunnelVirtualNetwork.ts b/sdk/nodejs/tunnelVirtualNetwork.ts new file mode 100644 index 00000000..845547bd --- /dev/null +++ b/sdk/nodejs/tunnelVirtualNetwork.ts @@ -0,0 +1,155 @@ +// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +import * as pulumi from "@pulumi/pulumi"; +import * as utilities from "./utilities"; + +/** + * Provides a resource, that manages Cloudflare tunnel virtual networks for Zero Trust. Tunnel + * virtual networks are used for segregation of Tunnel IP Routes via Virtualized Networks to + * handle overlapping private IPs in your origins.. + * + * ## Example Usage + * + * ```typescript + * import * as pulumi from "@pulumi/pulumi"; + * import * as cloudflare from "@pulumi/cloudflare"; + * + * const example = new cloudflare.TunnelVirtualNetwork("example", { + * accountId: "c4a7362d577a6c3019a474fd6f485821", + * comment: "New tunnel virtual network for documentation", + * name: "vnet-for-documentation", + * }); + * ``` + * + * ## Import + * + * An existing tunnel virtual networks can be imported using the account ID and virtual network ID. + * + * ```sh + * $ pulumi import cloudflare:index/tunnelVirtualNetwork:TunnelVirtualNetwork cloudflare_tunnel_virtual_network c4a7362d577a6c3019a474fd6f485821/3c8ff8af-b487-45bd-89e3-4c85a1532600 + * ``` + */ +export class TunnelVirtualNetwork extends pulumi.CustomResource { + /** + * Get an existing TunnelVirtualNetwork resource's state with the given name, ID, and optional extra + * properties used to qualify the lookup. + * + * @param name The _unique_ name of the resulting resource. + * @param id The _unique_ provider ID of the resource to lookup. + * @param state Any extra arguments used during the lookup. + * @param opts Optional settings to control the behavior of the CustomResource. + */ + public static get(name: string, id: pulumi.Input, state?: TunnelVirtualNetworkState, opts?: pulumi.CustomResourceOptions): TunnelVirtualNetwork { + return new TunnelVirtualNetwork(name, state, { ...opts, id: id }); + } + + /** @internal */ + public static readonly __pulumiType = 'cloudflare:index/tunnelVirtualNetwork:TunnelVirtualNetwork'; + + /** + * Returns true if the given object is an instance of TunnelVirtualNetwork. This is designed to work even + * when multiple copies of the Pulumi SDK have been loaded into the same process. + */ + public static isInstance(obj: any): obj is TunnelVirtualNetwork { + if (obj === undefined || obj === null) { + return false; + } + return obj['__pulumiType'] === TunnelVirtualNetwork.__pulumiType; + } + + /** + * The ID of the account where the tunnel virtual network is being created. + */ + public readonly accountId!: pulumi.Output; + /** + * Description of the tunnel virtual network. + */ + public readonly comment!: pulumi.Output; + /** + * Whether this virtual network is the default one for the account. This means IP Routes belong to this virtual network and Teams Clients in the account route through this virtual network, unless specified otherwise for each case. + */ + public readonly isDefaultNetwork!: pulumi.Output; + /** + * A user-friendly name chosen when the virtual network is created. + */ + public readonly name!: pulumi.Output; + + /** + * Create a TunnelVirtualNetwork resource with the given unique name, arguments, and options. + * + * @param name The _unique_ name of the resource. + * @param args The arguments to use to populate this resource's properties. + * @param opts A bag of options that control this resource's behavior. + */ + constructor(name: string, args: TunnelVirtualNetworkArgs, opts?: pulumi.CustomResourceOptions) + constructor(name: string, argsOrState?: TunnelVirtualNetworkArgs | TunnelVirtualNetworkState, opts?: pulumi.CustomResourceOptions) { + let resourceInputs: pulumi.Inputs = {}; + opts = opts || {}; + if (opts.id) { + const state = argsOrState as TunnelVirtualNetworkState | undefined; + resourceInputs["accountId"] = state ? state.accountId : undefined; + resourceInputs["comment"] = state ? state.comment : undefined; + resourceInputs["isDefaultNetwork"] = state ? state.isDefaultNetwork : undefined; + resourceInputs["name"] = state ? state.name : undefined; + } else { + const args = argsOrState as TunnelVirtualNetworkArgs | undefined; + if ((!args || args.accountId === undefined) && !opts.urn) { + throw new Error("Missing required property 'accountId'"); + } + if ((!args || args.name === undefined) && !opts.urn) { + throw new Error("Missing required property 'name'"); + } + resourceInputs["accountId"] = args ? args.accountId : undefined; + resourceInputs["comment"] = args ? args.comment : undefined; + resourceInputs["isDefaultNetwork"] = args ? args.isDefaultNetwork : undefined; + resourceInputs["name"] = args ? args.name : undefined; + } + opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts); + super(TunnelVirtualNetwork.__pulumiType, name, resourceInputs, opts); + } +} + +/** + * Input properties used for looking up and filtering TunnelVirtualNetwork resources. + */ +export interface TunnelVirtualNetworkState { + /** + * The ID of the account where the tunnel virtual network is being created. + */ + accountId?: pulumi.Input; + /** + * Description of the tunnel virtual network. + */ + comment?: pulumi.Input; + /** + * Whether this virtual network is the default one for the account. This means IP Routes belong to this virtual network and Teams Clients in the account route through this virtual network, unless specified otherwise for each case. + */ + isDefaultNetwork?: pulumi.Input; + /** + * A user-friendly name chosen when the virtual network is created. + */ + name?: pulumi.Input; +} + +/** + * The set of arguments for constructing a TunnelVirtualNetwork resource. + */ +export interface TunnelVirtualNetworkArgs { + /** + * The ID of the account where the tunnel virtual network is being created. + */ + accountId: pulumi.Input; + /** + * Description of the tunnel virtual network. + */ + comment?: pulumi.Input; + /** + * Whether this virtual network is the default one for the account. This means IP Routes belong to this virtual network and Teams Clients in the account route through this virtual network, unless specified otherwise for each case. + */ + isDefaultNetwork?: pulumi.Input; + /** + * A user-friendly name chosen when the virtual network is created. + */ + name: pulumi.Input; +} diff --git a/sdk/nodejs/types/input.ts b/sdk/nodejs/types/input.ts index 36e0ed89..be475bbc 100644 --- a/sdk/nodejs/types/input.ts +++ b/sdk/nodejs/types/input.ts @@ -55,6 +55,7 @@ export interface AccessGroupExclude { emailDomains?: pulumi.Input[]>; emails?: pulumi.Input[]>; everyone?: pulumi.Input; + externalEvaluation?: pulumi.Input; geos?: pulumi.Input[]>; githubs?: pulumi.Input[]>; groups?: pulumi.Input[]>; @@ -71,6 +72,11 @@ export interface AccessGroupExcludeAzure { ids?: pulumi.Input[]>; } +export interface AccessGroupExcludeExternalEvaluation { + evaluateUrl?: pulumi.Input; + keysUrl?: pulumi.Input; +} + export interface AccessGroupExcludeGithub { identityProviderId?: pulumi.Input; /** @@ -109,6 +115,7 @@ export interface AccessGroupInclude { emailDomains?: pulumi.Input[]>; emails?: pulumi.Input[]>; everyone?: pulumi.Input; + externalEvaluation?: pulumi.Input; geos?: pulumi.Input[]>; githubs?: pulumi.Input[]>; groups?: pulumi.Input[]>; @@ -125,6 +132,11 @@ export interface AccessGroupIncludeAzure { ids?: pulumi.Input[]>; } +export interface AccessGroupIncludeExternalEvaluation { + evaluateUrl?: pulumi.Input; + keysUrl?: pulumi.Input; +} + export interface AccessGroupIncludeGithub { identityProviderId?: pulumi.Input; /** @@ -163,6 +175,7 @@ export interface AccessGroupRequire { emailDomains?: pulumi.Input[]>; emails?: pulumi.Input[]>; everyone?: pulumi.Input; + externalEvaluation?: pulumi.Input; geos?: pulumi.Input[]>; githubs?: pulumi.Input[]>; groups?: pulumi.Input[]>; @@ -179,6 +192,11 @@ export interface AccessGroupRequireAzure { ids?: pulumi.Input[]>; } +export interface AccessGroupRequireExternalEvaluation { + evaluateUrl?: pulumi.Input; + keysUrl?: pulumi.Input; +} + export interface AccessGroupRequireGithub { identityProviderId?: pulumi.Input; /** @@ -252,6 +270,7 @@ export interface AccessPolicyExclude { emailDomains?: pulumi.Input[]>; emails?: pulumi.Input[]>; everyone?: pulumi.Input; + externalEvaluation?: pulumi.Input; geos?: pulumi.Input[]>; githubs?: pulumi.Input[]>; groups?: pulumi.Input[]>; @@ -268,6 +287,11 @@ export interface AccessPolicyExcludeAzure { ids?: pulumi.Input[]>; } +export interface AccessPolicyExcludeExternalEvaluation { + evaluateUrl?: pulumi.Input; + keysUrl?: pulumi.Input; +} + export interface AccessPolicyExcludeGithub { identityProviderId?: pulumi.Input; /** @@ -306,6 +330,7 @@ export interface AccessPolicyInclude { emailDomains?: pulumi.Input[]>; emails?: pulumi.Input[]>; everyone?: pulumi.Input; + externalEvaluation?: pulumi.Input; geos?: pulumi.Input[]>; githubs?: pulumi.Input[]>; groups?: pulumi.Input[]>; @@ -322,6 +347,11 @@ export interface AccessPolicyIncludeAzure { ids?: pulumi.Input[]>; } +export interface AccessPolicyIncludeExternalEvaluation { + evaluateUrl?: pulumi.Input; + keysUrl?: pulumi.Input; +} + export interface AccessPolicyIncludeGithub { identityProviderId?: pulumi.Input; /** @@ -360,6 +390,7 @@ export interface AccessPolicyRequire { emailDomains?: pulumi.Input[]>; emails?: pulumi.Input[]>; everyone?: pulumi.Input; + externalEvaluation?: pulumi.Input; geos?: pulumi.Input[]>; githubs?: pulumi.Input[]>; groups?: pulumi.Input[]>; @@ -376,6 +407,11 @@ export interface AccessPolicyRequireAzure { ids?: pulumi.Input[]>; } +export interface AccessPolicyRequireExternalEvaluation { + evaluateUrl?: pulumi.Input; + keysUrl?: pulumi.Input; +} + export interface AccessPolicyRequireGithub { identityProviderId?: pulumi.Input; /** @@ -655,26 +691,26 @@ export interface FallbackDomainDomain { suffix?: pulumi.Input; } -export interface GetWafGroupsFilterArgs { +export interface GetWafGroupsFilter { /** * Mode of the WAF Rule Groups to lookup. Valid values: on and off. */ - mode?: pulumi.Input; + mode?: string; /** * A regular expression matching the name of the WAF Rule Groups to lookup. */ - name?: pulumi.Input; + name?: string; } -export interface GetWafGroupsFilter { +export interface GetWafGroupsFilterArgs { /** * Mode of the WAF Rule Groups to lookup. Valid values: on and off. */ - mode?: string; + mode?: pulumi.Input; /** * A regular expression matching the name of the WAF Rule Groups to lookup. */ - name?: string; + name?: pulumi.Input; } export interface GetWafPackagesFilter { @@ -715,102 +751,102 @@ export interface GetWafPackagesFilterArgs { sensitivity?: pulumi.Input; } -export interface GetWafRulesFilterArgs { +export interface GetWafRulesFilter { /** * A regular expression matching the description of the WAF Rules to lookup. */ - description?: pulumi.Input; + description?: string; /** * The ID of the WAF Rule Group in which the WAF Rules to lookup have to be. */ - groupId?: pulumi.Input; + groupId?: string; /** * Mode of the WAF Rules to lookup. Valid values: one of ["block", "challenge", "default", "disable", "simulate"] or ["on", "off"] depending on the WAF Rule type. */ - mode?: pulumi.Input; + mode?: string; } -export interface GetWafRulesFilter { +export interface GetWafRulesFilterArgs { /** * A regular expression matching the description of the WAF Rules to lookup. */ - description?: string; + description?: pulumi.Input; /** * The ID of the WAF Rule Group in which the WAF Rules to lookup have to be. */ - groupId?: string; + groupId?: pulumi.Input; /** * Mode of the WAF Rules to lookup. Valid values: one of ["block", "challenge", "default", "disable", "simulate"] or ["on", "off"] depending on the WAF Rule type. */ - mode?: string; + mode?: pulumi.Input; } -export interface GetZonesFilterArgs { +export interface GetZonesFilter { /** * Only search for zones in this account. */ - accountId?: pulumi.Input; + accountId?: string; /** * The type of search to perform for the `name` value * when querying the zone API. Valid values: `"exact"` and `"contains"`. Defaults * to `"exact"`. */ - lookupType?: pulumi.Input; + lookupType?: string; /** * A RE2 compatible regular expression to filter the * results. This is performed client side whereas the `name` and `lookupType` * are performed on the Cloudflare server side. */ - match?: pulumi.Input; + match?: string; /** * A string value to search for. */ - name?: pulumi.Input; + name?: string; /** * Paused status of the zone to lookup. Valid values are * `true` or `false`. */ - paused?: pulumi.Input; + paused?: boolean; /** * Status of the zone to lookup. Valid values: `"active"`, * `"pending"`, `"initializing"`, `"moved"`, `"deleted"`, `"deactivated"` and * `"read only"`. */ - status?: pulumi.Input; + status?: string; } -export interface GetZonesFilter { +export interface GetZonesFilterArgs { /** * Only search for zones in this account. */ - accountId?: string; + accountId?: pulumi.Input; /** * The type of search to perform for the `name` value * when querying the zone API. Valid values: `"exact"` and `"contains"`. Defaults * to `"exact"`. */ - lookupType?: string; + lookupType?: pulumi.Input; /** * A RE2 compatible regular expression to filter the * results. This is performed client side whereas the `name` and `lookupType` * are performed on the Cloudflare server side. */ - match?: string; + match?: pulumi.Input; /** * A string value to search for. */ - name?: string; + name?: pulumi.Input; /** * Paused status of the zone to lookup. Valid values are * `true` or `false`. */ - paused?: boolean; + paused?: pulumi.Input; /** * Status of the zone to lookup. Valid values: `"active"`, * `"pending"`, `"initializing"`, `"moved"`, `"deleted"`, `"deactivated"` and * `"read only"`. */ - status?: string; + status?: pulumi.Input; } export interface HealthcheckHeader { @@ -1551,6 +1587,10 @@ export interface RulesetRule { } export interface RulesetRuleActionParameters { + /** + * List of cookie values to include as part of custom fields logging. + */ + cookieFields?: pulumi.Input[]>; /** * List of HTTP header modifications to perform in the ruleset rule (refer to the nested schema). */ @@ -1581,6 +1621,14 @@ export interface RulesetRuleActionParameters { * Products to target with the actions. Valid values are `"bic"`, `"hot"`, `"ratelimit"`, `"securityLevel"`, `"uablock"`, `"waf"` or `"zonelockdown"`. */ products?: pulumi.Input[]>; + /** + * List of request headers to include as part of custom fields logging, in lowercase. + */ + requestFields?: pulumi.Input[]>; + /** + * List of response headers to include as part of custom fields logging, in lowercase. + */ + responseFields?: pulumi.Input[]>; /** * List of parameters that configure the response given to end users (refer to the nested schema). */ diff --git a/sdk/nodejs/types/output.ts b/sdk/nodejs/types/output.ts index 948667ae..deef7a24 100644 --- a/sdk/nodejs/types/output.ts +++ b/sdk/nodejs/types/output.ts @@ -55,6 +55,7 @@ export interface AccessGroupExclude { emailDomains?: string[]; emails?: string[]; everyone?: boolean; + externalEvaluation?: outputs.AccessGroupExcludeExternalEvaluation; geos?: string[]; githubs?: outputs.AccessGroupExcludeGithub[]; groups?: string[]; @@ -71,6 +72,11 @@ export interface AccessGroupExcludeAzure { ids?: string[]; } +export interface AccessGroupExcludeExternalEvaluation { + evaluateUrl?: string; + keysUrl?: string; +} + export interface AccessGroupExcludeGithub { identityProviderId?: string; /** @@ -109,6 +115,7 @@ export interface AccessGroupInclude { emailDomains?: string[]; emails?: string[]; everyone?: boolean; + externalEvaluation?: outputs.AccessGroupIncludeExternalEvaluation; geos?: string[]; githubs?: outputs.AccessGroupIncludeGithub[]; groups?: string[]; @@ -125,6 +132,11 @@ export interface AccessGroupIncludeAzure { ids?: string[]; } +export interface AccessGroupIncludeExternalEvaluation { + evaluateUrl?: string; + keysUrl?: string; +} + export interface AccessGroupIncludeGithub { identityProviderId?: string; /** @@ -163,6 +175,7 @@ export interface AccessGroupRequire { emailDomains?: string[]; emails?: string[]; everyone?: boolean; + externalEvaluation?: outputs.AccessGroupRequireExternalEvaluation; geos?: string[]; githubs?: outputs.AccessGroupRequireGithub[]; groups?: string[]; @@ -179,6 +192,11 @@ export interface AccessGroupRequireAzure { ids?: string[]; } +export interface AccessGroupRequireExternalEvaluation { + evaluateUrl?: string; + keysUrl?: string; +} + export interface AccessGroupRequireGithub { identityProviderId?: string; /** @@ -252,6 +270,7 @@ export interface AccessPolicyExclude { emailDomains?: string[]; emails?: string[]; everyone?: boolean; + externalEvaluation?: outputs.AccessPolicyExcludeExternalEvaluation; geos?: string[]; githubs?: outputs.AccessPolicyExcludeGithub[]; groups?: string[]; @@ -268,6 +287,11 @@ export interface AccessPolicyExcludeAzure { ids?: string[]; } +export interface AccessPolicyExcludeExternalEvaluation { + evaluateUrl?: string; + keysUrl?: string; +} + export interface AccessPolicyExcludeGithub { identityProviderId?: string; /** @@ -306,6 +330,7 @@ export interface AccessPolicyInclude { emailDomains?: string[]; emails?: string[]; everyone?: boolean; + externalEvaluation?: outputs.AccessPolicyIncludeExternalEvaluation; geos?: string[]; githubs?: outputs.AccessPolicyIncludeGithub[]; groups?: string[]; @@ -322,6 +347,11 @@ export interface AccessPolicyIncludeAzure { ids?: string[]; } +export interface AccessPolicyIncludeExternalEvaluation { + evaluateUrl?: string; + keysUrl?: string; +} + export interface AccessPolicyIncludeGithub { identityProviderId?: string; /** @@ -360,6 +390,7 @@ export interface AccessPolicyRequire { emailDomains?: string[]; emails?: string[]; everyone?: boolean; + externalEvaluation?: outputs.AccessPolicyRequireExternalEvaluation; geos?: string[]; githubs?: outputs.AccessPolicyRequireGithub[]; groups?: string[]; @@ -376,6 +407,11 @@ export interface AccessPolicyRequireAzure { ids?: string[]; } +export interface AccessPolicyRequireExternalEvaluation { + evaluateUrl?: string; + keysUrl?: string; +} + export interface AccessPolicyRequireGithub { identityProviderId?: string; /** @@ -1654,6 +1690,10 @@ export interface RulesetRule { } export interface RulesetRuleActionParameters { + /** + * List of cookie values to include as part of custom fields logging. + */ + cookieFields?: string[]; /** * List of HTTP header modifications to perform in the ruleset rule (refer to the nested schema). */ @@ -1684,6 +1724,14 @@ export interface RulesetRuleActionParameters { * Products to target with the actions. Valid values are `"bic"`, `"hot"`, `"ratelimit"`, `"securityLevel"`, `"uablock"`, `"waf"` or `"zonelockdown"`. */ products?: string[]; + /** + * List of request headers to include as part of custom fields logging, in lowercase. + */ + requestFields?: string[]; + /** + * List of response headers to include as part of custom fields logging, in lowercase. + */ + responseFields?: string[]; /** * List of parameters that configure the response given to end users (refer to the nested schema). */ diff --git a/sdk/nodejs/waitingRoom.ts b/sdk/nodejs/waitingRoom.ts index bb3fe30b..b908b858 100644 --- a/sdk/nodejs/waitingRoom.ts +++ b/sdk/nodejs/waitingRoom.ts @@ -65,6 +65,10 @@ export class WaitingRoom extends pulumi.CustomResource { * This a templated html file that will be rendered at the edge. */ public readonly customPageHtml!: pulumi.Output; + /** + * The language to use for the default waiting room page (refer to the nested schema). + */ + public readonly defaultTemplateLanguage!: pulumi.Output; /** * A description to let users add more details about the waiting room. */ @@ -128,6 +132,7 @@ export class WaitingRoom extends pulumi.CustomResource { if (opts.id) { const state = argsOrState as WaitingRoomState | undefined; resourceInputs["customPageHtml"] = state ? state.customPageHtml : undefined; + resourceInputs["defaultTemplateLanguage"] = state ? state.defaultTemplateLanguage : undefined; resourceInputs["description"] = state ? state.description : undefined; resourceInputs["disableSessionRenewal"] = state ? state.disableSessionRenewal : undefined; resourceInputs["host"] = state ? state.host : undefined; @@ -158,6 +163,7 @@ export class WaitingRoom extends pulumi.CustomResource { throw new Error("Missing required property 'zoneId'"); } resourceInputs["customPageHtml"] = args ? args.customPageHtml : undefined; + resourceInputs["defaultTemplateLanguage"] = args ? args.defaultTemplateLanguage : undefined; resourceInputs["description"] = args ? args.description : undefined; resourceInputs["disableSessionRenewal"] = args ? args.disableSessionRenewal : undefined; resourceInputs["host"] = args ? args.host : undefined; @@ -184,6 +190,10 @@ export interface WaitingRoomState { * This a templated html file that will be rendered at the edge. */ customPageHtml?: pulumi.Input; + /** + * The language to use for the default waiting room page (refer to the nested schema). + */ + defaultTemplateLanguage?: pulumi.Input; /** * A description to let users add more details about the waiting room. */ @@ -242,6 +252,10 @@ export interface WaitingRoomArgs { * This a templated html file that will be rendered at the edge. */ customPageHtml?: pulumi.Input; + /** + * The language to use for the default waiting room page (refer to the nested schema). + */ + defaultTemplateLanguage?: pulumi.Input; /** * A description to let users add more details about the waiting room. */ diff --git a/sdk/nodejs/waitingRoomEvent.ts b/sdk/nodejs/waitingRoomEvent.ts index 64492388..82192571 100644 --- a/sdk/nodejs/waitingRoomEvent.ts +++ b/sdk/nodejs/waitingRoomEvent.ts @@ -13,7 +13,7 @@ import * as utilities from "./utilities"; * import * as pulumi from "@pulumi/pulumi"; * import * as cloudflare from "@pulumi/cloudflare"; * - * const example = new cloudflare.WaitingRoomVent("example", { + * const example = new cloudflare.WaitingRoomEvent("example", { * eventEndTime: "2006-01-02T20:04:05Z", * eventStartTime: "2006-01-02T15:04:05Z", * name: "foo", diff --git a/sdk/python/go.mod b/sdk/python/go.mod new file mode 100644 index 00000000..08d8d679 --- /dev/null +++ b/sdk/python/go.mod @@ -0,0 +1,3 @@ +module fake_python_module // Exclude this directory from Go tools + +go 1.16 diff --git a/sdk/python/pulumi_cloudflare/__init__.py b/sdk/python/pulumi_cloudflare/__init__.py index 421f66c8..a15162af 100644 --- a/sdk/python/pulumi_cloudflare/__init__.py +++ b/sdk/python/pulumi_cloudflare/__init__.py @@ -73,6 +73,7 @@ from .teams_proxy_endpoint import * from .teams_rule import * from .tunnel_route import * +from .tunnel_virtual_network import * from .waf_group import * from .waf_override import * from .waf_package import * @@ -542,6 +543,14 @@ "cloudflare:index/tunnelRoute:TunnelRoute": "TunnelRoute" } }, + { + "pkg": "cloudflare", + "mod": "index/tunnelVirtualNetwork", + "fqn": "pulumi_cloudflare", + "classes": { + "cloudflare:index/tunnelVirtualNetwork:TunnelVirtualNetwork": "TunnelVirtualNetwork" + } + }, { "pkg": "cloudflare", "mod": "index/wafGroup", diff --git a/sdk/python/pulumi_cloudflare/_inputs.py b/sdk/python/pulumi_cloudflare/_inputs.py index 877535d8..ae919129 100644 --- a/sdk/python/pulumi_cloudflare/_inputs.py +++ b/sdk/python/pulumi_cloudflare/_inputs.py @@ -12,18 +12,21 @@ 'AccessApplicationCorsHeaderArgs', 'AccessGroupExcludeArgs', 'AccessGroupExcludeAzureArgs', + 'AccessGroupExcludeExternalEvaluationArgs', 'AccessGroupExcludeGithubArgs', 'AccessGroupExcludeGsuiteArgs', 'AccessGroupExcludeOktaArgs', 'AccessGroupExcludeSamlArgs', 'AccessGroupIncludeArgs', 'AccessGroupIncludeAzureArgs', + 'AccessGroupIncludeExternalEvaluationArgs', 'AccessGroupIncludeGithubArgs', 'AccessGroupIncludeGsuiteArgs', 'AccessGroupIncludeOktaArgs', 'AccessGroupIncludeSamlArgs', 'AccessGroupRequireArgs', 'AccessGroupRequireAzureArgs', + 'AccessGroupRequireExternalEvaluationArgs', 'AccessGroupRequireGithubArgs', 'AccessGroupRequireGsuiteArgs', 'AccessGroupRequireOktaArgs', @@ -32,18 +35,21 @@ 'AccessPolicyApprovalGroupArgs', 'AccessPolicyExcludeArgs', 'AccessPolicyExcludeAzureArgs', + 'AccessPolicyExcludeExternalEvaluationArgs', 'AccessPolicyExcludeGithubArgs', 'AccessPolicyExcludeGsuiteArgs', 'AccessPolicyExcludeOktaArgs', 'AccessPolicyExcludeSamlArgs', 'AccessPolicyIncludeArgs', 'AccessPolicyIncludeAzureArgs', + 'AccessPolicyIncludeExternalEvaluationArgs', 'AccessPolicyIncludeGithubArgs', 'AccessPolicyIncludeGsuiteArgs', 'AccessPolicyIncludeOktaArgs', 'AccessPolicyIncludeSamlArgs', 'AccessPolicyRequireArgs', 'AccessPolicyRequireAzureArgs', + 'AccessPolicyRequireExternalEvaluationArgs', 'AccessPolicyRequireGithubArgs', 'AccessPolicyRequireGsuiteArgs', 'AccessPolicyRequireOktaArgs', @@ -310,6 +316,7 @@ def __init__(__self__, *, email_domains: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None, emails: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None, everyone: Optional[pulumi.Input[bool]] = None, + external_evaluation: Optional[pulumi.Input['AccessGroupExcludeExternalEvaluationArgs']] = None, geos: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None, githubs: Optional[pulumi.Input[Sequence[pulumi.Input['AccessGroupExcludeGithubArgs']]]] = None, groups: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None, @@ -337,6 +344,8 @@ def __init__(__self__, *, pulumi.set(__self__, "emails", emails) if everyone is not None: pulumi.set(__self__, "everyone", everyone) + if external_evaluation is not None: + pulumi.set(__self__, "external_evaluation", external_evaluation) if geos is not None: pulumi.set(__self__, "geos", geos) if githubs is not None: @@ -437,6 +446,15 @@ def everyone(self) -> Optional[pulumi.Input[bool]]: def everyone(self, value: Optional[pulumi.Input[bool]]): pulumi.set(self, "everyone", value) + @property + @pulumi.getter(name="externalEvaluation") + def external_evaluation(self) -> Optional[pulumi.Input['AccessGroupExcludeExternalEvaluationArgs']]: + return pulumi.get(self, "external_evaluation") + + @external_evaluation.setter + def external_evaluation(self, value: Optional[pulumi.Input['AccessGroupExcludeExternalEvaluationArgs']]): + pulumi.set(self, "external_evaluation", value) + @property @pulumi.getter def geos(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]: @@ -548,6 +566,35 @@ def ids(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]): pulumi.set(self, "ids", value) +@pulumi.input_type +class AccessGroupExcludeExternalEvaluationArgs: + def __init__(__self__, *, + evaluate_url: Optional[pulumi.Input[str]] = None, + keys_url: Optional[pulumi.Input[str]] = None): + if evaluate_url is not None: + pulumi.set(__self__, "evaluate_url", evaluate_url) + if keys_url is not None: + pulumi.set(__self__, "keys_url", keys_url) + + @property + @pulumi.getter(name="evaluateUrl") + def evaluate_url(self) -> Optional[pulumi.Input[str]]: + return pulumi.get(self, "evaluate_url") + + @evaluate_url.setter + def evaluate_url(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "evaluate_url", value) + + @property + @pulumi.getter(name="keysUrl") + def keys_url(self) -> Optional[pulumi.Input[str]]: + return pulumi.get(self, "keys_url") + + @keys_url.setter + def keys_url(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "keys_url", value) + + @pulumi.input_type class AccessGroupExcludeGithubArgs: def __init__(__self__, *, @@ -712,6 +759,7 @@ def __init__(__self__, *, email_domains: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None, emails: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None, everyone: Optional[pulumi.Input[bool]] = None, + external_evaluation: Optional[pulumi.Input['AccessGroupIncludeExternalEvaluationArgs']] = None, geos: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None, githubs: Optional[pulumi.Input[Sequence[pulumi.Input['AccessGroupIncludeGithubArgs']]]] = None, groups: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None, @@ -739,6 +787,8 @@ def __init__(__self__, *, pulumi.set(__self__, "emails", emails) if everyone is not None: pulumi.set(__self__, "everyone", everyone) + if external_evaluation is not None: + pulumi.set(__self__, "external_evaluation", external_evaluation) if geos is not None: pulumi.set(__self__, "geos", geos) if githubs is not None: @@ -839,6 +889,15 @@ def everyone(self) -> Optional[pulumi.Input[bool]]: def everyone(self, value: Optional[pulumi.Input[bool]]): pulumi.set(self, "everyone", value) + @property + @pulumi.getter(name="externalEvaluation") + def external_evaluation(self) -> Optional[pulumi.Input['AccessGroupIncludeExternalEvaluationArgs']]: + return pulumi.get(self, "external_evaluation") + + @external_evaluation.setter + def external_evaluation(self, value: Optional[pulumi.Input['AccessGroupIncludeExternalEvaluationArgs']]): + pulumi.set(self, "external_evaluation", value) + @property @pulumi.getter def geos(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]: @@ -950,6 +1009,35 @@ def ids(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]): pulumi.set(self, "ids", value) +@pulumi.input_type +class AccessGroupIncludeExternalEvaluationArgs: + def __init__(__self__, *, + evaluate_url: Optional[pulumi.Input[str]] = None, + keys_url: Optional[pulumi.Input[str]] = None): + if evaluate_url is not None: + pulumi.set(__self__, "evaluate_url", evaluate_url) + if keys_url is not None: + pulumi.set(__self__, "keys_url", keys_url) + + @property + @pulumi.getter(name="evaluateUrl") + def evaluate_url(self) -> Optional[pulumi.Input[str]]: + return pulumi.get(self, "evaluate_url") + + @evaluate_url.setter + def evaluate_url(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "evaluate_url", value) + + @property + @pulumi.getter(name="keysUrl") + def keys_url(self) -> Optional[pulumi.Input[str]]: + return pulumi.get(self, "keys_url") + + @keys_url.setter + def keys_url(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "keys_url", value) + + @pulumi.input_type class AccessGroupIncludeGithubArgs: def __init__(__self__, *, @@ -1114,6 +1202,7 @@ def __init__(__self__, *, email_domains: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None, emails: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None, everyone: Optional[pulumi.Input[bool]] = None, + external_evaluation: Optional[pulumi.Input['AccessGroupRequireExternalEvaluationArgs']] = None, geos: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None, githubs: Optional[pulumi.Input[Sequence[pulumi.Input['AccessGroupRequireGithubArgs']]]] = None, groups: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None, @@ -1141,6 +1230,8 @@ def __init__(__self__, *, pulumi.set(__self__, "emails", emails) if everyone is not None: pulumi.set(__self__, "everyone", everyone) + if external_evaluation is not None: + pulumi.set(__self__, "external_evaluation", external_evaluation) if geos is not None: pulumi.set(__self__, "geos", geos) if githubs is not None: @@ -1241,6 +1332,15 @@ def everyone(self) -> Optional[pulumi.Input[bool]]: def everyone(self, value: Optional[pulumi.Input[bool]]): pulumi.set(self, "everyone", value) + @property + @pulumi.getter(name="externalEvaluation") + def external_evaluation(self) -> Optional[pulumi.Input['AccessGroupRequireExternalEvaluationArgs']]: + return pulumi.get(self, "external_evaluation") + + @external_evaluation.setter + def external_evaluation(self, value: Optional[pulumi.Input['AccessGroupRequireExternalEvaluationArgs']]): + pulumi.set(self, "external_evaluation", value) + @property @pulumi.getter def geos(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]: @@ -1352,6 +1452,35 @@ def ids(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]): pulumi.set(self, "ids", value) +@pulumi.input_type +class AccessGroupRequireExternalEvaluationArgs: + def __init__(__self__, *, + evaluate_url: Optional[pulumi.Input[str]] = None, + keys_url: Optional[pulumi.Input[str]] = None): + if evaluate_url is not None: + pulumi.set(__self__, "evaluate_url", evaluate_url) + if keys_url is not None: + pulumi.set(__self__, "keys_url", keys_url) + + @property + @pulumi.getter(name="evaluateUrl") + def evaluate_url(self) -> Optional[pulumi.Input[str]]: + return pulumi.get(self, "evaluate_url") + + @evaluate_url.setter + def evaluate_url(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "evaluate_url", value) + + @property + @pulumi.getter(name="keysUrl") + def keys_url(self) -> Optional[pulumi.Input[str]]: + return pulumi.get(self, "keys_url") + + @keys_url.setter + def keys_url(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "keys_url", value) + + @pulumi.input_type class AccessGroupRequireGithubArgs: def __init__(__self__, *, @@ -1811,6 +1940,7 @@ def __init__(__self__, *, email_domains: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None, emails: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None, everyone: Optional[pulumi.Input[bool]] = None, + external_evaluation: Optional[pulumi.Input['AccessPolicyExcludeExternalEvaluationArgs']] = None, geos: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None, githubs: Optional[pulumi.Input[Sequence[pulumi.Input['AccessPolicyExcludeGithubArgs']]]] = None, groups: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None, @@ -1838,6 +1968,8 @@ def __init__(__self__, *, pulumi.set(__self__, "emails", emails) if everyone is not None: pulumi.set(__self__, "everyone", everyone) + if external_evaluation is not None: + pulumi.set(__self__, "external_evaluation", external_evaluation) if geos is not None: pulumi.set(__self__, "geos", geos) if githubs is not None: @@ -1938,6 +2070,15 @@ def everyone(self) -> Optional[pulumi.Input[bool]]: def everyone(self, value: Optional[pulumi.Input[bool]]): pulumi.set(self, "everyone", value) + @property + @pulumi.getter(name="externalEvaluation") + def external_evaluation(self) -> Optional[pulumi.Input['AccessPolicyExcludeExternalEvaluationArgs']]: + return pulumi.get(self, "external_evaluation") + + @external_evaluation.setter + def external_evaluation(self, value: Optional[pulumi.Input['AccessPolicyExcludeExternalEvaluationArgs']]): + pulumi.set(self, "external_evaluation", value) + @property @pulumi.getter def geos(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]: @@ -2049,6 +2190,35 @@ def ids(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]): pulumi.set(self, "ids", value) +@pulumi.input_type +class AccessPolicyExcludeExternalEvaluationArgs: + def __init__(__self__, *, + evaluate_url: Optional[pulumi.Input[str]] = None, + keys_url: Optional[pulumi.Input[str]] = None): + if evaluate_url is not None: + pulumi.set(__self__, "evaluate_url", evaluate_url) + if keys_url is not None: + pulumi.set(__self__, "keys_url", keys_url) + + @property + @pulumi.getter(name="evaluateUrl") + def evaluate_url(self) -> Optional[pulumi.Input[str]]: + return pulumi.get(self, "evaluate_url") + + @evaluate_url.setter + def evaluate_url(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "evaluate_url", value) + + @property + @pulumi.getter(name="keysUrl") + def keys_url(self) -> Optional[pulumi.Input[str]]: + return pulumi.get(self, "keys_url") + + @keys_url.setter + def keys_url(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "keys_url", value) + + @pulumi.input_type class AccessPolicyExcludeGithubArgs: def __init__(__self__, *, @@ -2213,6 +2383,7 @@ def __init__(__self__, *, email_domains: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None, emails: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None, everyone: Optional[pulumi.Input[bool]] = None, + external_evaluation: Optional[pulumi.Input['AccessPolicyIncludeExternalEvaluationArgs']] = None, geos: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None, githubs: Optional[pulumi.Input[Sequence[pulumi.Input['AccessPolicyIncludeGithubArgs']]]] = None, groups: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None, @@ -2240,6 +2411,8 @@ def __init__(__self__, *, pulumi.set(__self__, "emails", emails) if everyone is not None: pulumi.set(__self__, "everyone", everyone) + if external_evaluation is not None: + pulumi.set(__self__, "external_evaluation", external_evaluation) if geos is not None: pulumi.set(__self__, "geos", geos) if githubs is not None: @@ -2340,6 +2513,15 @@ def everyone(self) -> Optional[pulumi.Input[bool]]: def everyone(self, value: Optional[pulumi.Input[bool]]): pulumi.set(self, "everyone", value) + @property + @pulumi.getter(name="externalEvaluation") + def external_evaluation(self) -> Optional[pulumi.Input['AccessPolicyIncludeExternalEvaluationArgs']]: + return pulumi.get(self, "external_evaluation") + + @external_evaluation.setter + def external_evaluation(self, value: Optional[pulumi.Input['AccessPolicyIncludeExternalEvaluationArgs']]): + pulumi.set(self, "external_evaluation", value) + @property @pulumi.getter def geos(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]: @@ -2451,6 +2633,35 @@ def ids(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]): pulumi.set(self, "ids", value) +@pulumi.input_type +class AccessPolicyIncludeExternalEvaluationArgs: + def __init__(__self__, *, + evaluate_url: Optional[pulumi.Input[str]] = None, + keys_url: Optional[pulumi.Input[str]] = None): + if evaluate_url is not None: + pulumi.set(__self__, "evaluate_url", evaluate_url) + if keys_url is not None: + pulumi.set(__self__, "keys_url", keys_url) + + @property + @pulumi.getter(name="evaluateUrl") + def evaluate_url(self) -> Optional[pulumi.Input[str]]: + return pulumi.get(self, "evaluate_url") + + @evaluate_url.setter + def evaluate_url(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "evaluate_url", value) + + @property + @pulumi.getter(name="keysUrl") + def keys_url(self) -> Optional[pulumi.Input[str]]: + return pulumi.get(self, "keys_url") + + @keys_url.setter + def keys_url(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "keys_url", value) + + @pulumi.input_type class AccessPolicyIncludeGithubArgs: def __init__(__self__, *, @@ -2615,6 +2826,7 @@ def __init__(__self__, *, email_domains: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None, emails: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None, everyone: Optional[pulumi.Input[bool]] = None, + external_evaluation: Optional[pulumi.Input['AccessPolicyRequireExternalEvaluationArgs']] = None, geos: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None, githubs: Optional[pulumi.Input[Sequence[pulumi.Input['AccessPolicyRequireGithubArgs']]]] = None, groups: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None, @@ -2642,6 +2854,8 @@ def __init__(__self__, *, pulumi.set(__self__, "emails", emails) if everyone is not None: pulumi.set(__self__, "everyone", everyone) + if external_evaluation is not None: + pulumi.set(__self__, "external_evaluation", external_evaluation) if geos is not None: pulumi.set(__self__, "geos", geos) if githubs is not None: @@ -2742,6 +2956,15 @@ def everyone(self) -> Optional[pulumi.Input[bool]]: def everyone(self, value: Optional[pulumi.Input[bool]]): pulumi.set(self, "everyone", value) + @property + @pulumi.getter(name="externalEvaluation") + def external_evaluation(self) -> Optional[pulumi.Input['AccessPolicyRequireExternalEvaluationArgs']]: + return pulumi.get(self, "external_evaluation") + + @external_evaluation.setter + def external_evaluation(self, value: Optional[pulumi.Input['AccessPolicyRequireExternalEvaluationArgs']]): + pulumi.set(self, "external_evaluation", value) + @property @pulumi.getter def geos(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]: @@ -2853,6 +3076,35 @@ def ids(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]): pulumi.set(self, "ids", value) +@pulumi.input_type +class AccessPolicyRequireExternalEvaluationArgs: + def __init__(__self__, *, + evaluate_url: Optional[pulumi.Input[str]] = None, + keys_url: Optional[pulumi.Input[str]] = None): + if evaluate_url is not None: + pulumi.set(__self__, "evaluate_url", evaluate_url) + if keys_url is not None: + pulumi.set(__self__, "keys_url", keys_url) + + @property + @pulumi.getter(name="evaluateUrl") + def evaluate_url(self) -> Optional[pulumi.Input[str]]: + return pulumi.get(self, "evaluate_url") + + @evaluate_url.setter + def evaluate_url(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "evaluate_url", value) + + @property + @pulumi.getter(name="keysUrl") + def keys_url(self) -> Optional[pulumi.Input[str]]: + return pulumi.get(self, "keys_url") + + @keys_url.setter + def keys_url(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "keys_url", value) + + @pulumi.input_type class AccessPolicyRequireGithubArgs: def __init__(__self__, *, @@ -7145,6 +7397,7 @@ def version(self, value: Optional[pulumi.Input[str]]): @pulumi.input_type class RulesetRuleActionParametersArgs: def __init__(__self__, *, + cookie_fields: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None, headers: Optional[pulumi.Input[Sequence[pulumi.Input['RulesetRuleActionParametersHeaderArgs']]]] = None, host_header: Optional[pulumi.Input[str]] = None, id: Optional[pulumi.Input[str]] = None, @@ -7154,6 +7407,8 @@ def __init__(__self__, *, overrides: Optional[pulumi.Input['RulesetRuleActionParametersOverridesArgs']] = None, phases: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None, products: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None, + request_fields: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None, + response_fields: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None, responses: Optional[pulumi.Input[Sequence[pulumi.Input['RulesetRuleActionParametersResponseArgs']]]] = None, rules: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None, ruleset: Optional[pulumi.Input[str]] = None, @@ -7161,6 +7416,7 @@ def __init__(__self__, *, uri: Optional[pulumi.Input['RulesetRuleActionParametersUriArgs']] = None, version: Optional[pulumi.Input[str]] = None): """ + :param pulumi.Input[Sequence[pulumi.Input[str]]] cookie_fields: List of cookie values to include as part of custom fields logging. :param pulumi.Input[Sequence[pulumi.Input['RulesetRuleActionParametersHeaderArgs']]] headers: List of HTTP header modifications to perform in the ruleset rule (refer to the nested schema). :param pulumi.Input[str] host_header: Host Header that request origin receives. :param pulumi.Input[str] id: Rule ID to apply the override to. @@ -7168,12 +7424,16 @@ def __init__(__self__, *, :param pulumi.Input['RulesetRuleActionParametersOriginArgs'] origin: List of properties to change request origin (refer to the nested schema). :param pulumi.Input['RulesetRuleActionParametersOverridesArgs'] overrides: List of override configurations to apply to the ruleset (refer to the nested schema). :param pulumi.Input[Sequence[pulumi.Input[str]]] products: Products to target with the actions. Valid values are `"bic"`, `"hot"`, `"ratelimit"`, `"securityLevel"`, `"uablock"`, `"waf"` or `"zonelockdown"`. + :param pulumi.Input[Sequence[pulumi.Input[str]]] request_fields: List of request headers to include as part of custom fields logging, in lowercase. + :param pulumi.Input[Sequence[pulumi.Input[str]]] response_fields: List of response headers to include as part of custom fields logging, in lowercase. :param pulumi.Input[Sequence[pulumi.Input['RulesetRuleActionParametersResponseArgs']]] responses: List of parameters that configure the response given to end users (refer to the nested schema). :param pulumi.Input[Mapping[str, pulumi.Input[str]]] rules: List of rule-based overrides (refer to the nested schema). :param pulumi.Input[str] ruleset: Which ruleset ID to target. :param pulumi.Input[Sequence[pulumi.Input[str]]] rulesets: List of managed WAF rule IDs to target. Only valid when the "action" is set to skip. :param pulumi.Input['RulesetRuleActionParametersUriArgs'] uri: List of URI properties to configure for the ruleset rule when performing URL rewrite transformations (refer to the nested schema). """ + if cookie_fields is not None: + pulumi.set(__self__, "cookie_fields", cookie_fields) if headers is not None: pulumi.set(__self__, "headers", headers) if host_header is not None: @@ -7192,6 +7452,10 @@ def __init__(__self__, *, pulumi.set(__self__, "phases", phases) if products is not None: pulumi.set(__self__, "products", products) + if request_fields is not None: + pulumi.set(__self__, "request_fields", request_fields) + if response_fields is not None: + pulumi.set(__self__, "response_fields", response_fields) if responses is not None: pulumi.set(__self__, "responses", responses) if rules is not None: @@ -7205,6 +7469,18 @@ def __init__(__self__, *, if version is not None: pulumi.set(__self__, "version", version) + @property + @pulumi.getter(name="cookieFields") + def cookie_fields(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]: + """ + List of cookie values to include as part of custom fields logging. + """ + return pulumi.get(self, "cookie_fields") + + @cookie_fields.setter + def cookie_fields(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]): + pulumi.set(self, "cookie_fields", value) + @property @pulumi.getter def headers(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['RulesetRuleActionParametersHeaderArgs']]]]: @@ -7307,6 +7583,30 @@ def products(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]: def products(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]): pulumi.set(self, "products", value) + @property + @pulumi.getter(name="requestFields") + def request_fields(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]: + """ + List of request headers to include as part of custom fields logging, in lowercase. + """ + return pulumi.get(self, "request_fields") + + @request_fields.setter + def request_fields(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]): + pulumi.set(self, "request_fields", value) + + @property + @pulumi.getter(name="responseFields") + def response_fields(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]: + """ + List of response headers to include as part of custom fields logging, in lowercase. + """ + return pulumi.get(self, "response_fields") + + @response_fields.setter + def response_fields(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]): + pulumi.set(self, "response_fields", value) + @property @pulumi.getter def responses(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['RulesetRuleActionParametersResponseArgs']]]]: diff --git a/sdk/python/pulumi_cloudflare/access_application.py b/sdk/python/pulumi_cloudflare/access_application.py index 961de262..d576448e 100644 --- a/sdk/python/pulumi_cloudflare/access_application.py +++ b/sdk/python/pulumi_cloudflare/access_application.py @@ -49,7 +49,7 @@ def __init__(__self__, *, :param pulumi.Input[str] custom_deny_message: Option that returns a custom error message when a user is denied access to the application. :param pulumi.Input[str] custom_deny_url: Option that redirects to a custom URL when a user is denied access to the application. :param pulumi.Input[bool] enable_binding_cookie: Option to provide increased security against compromised authorization tokens and CSRF attacks by requiring an additional "binding" cookie on requests. Defaults to `false`. - :param pulumi.Input[bool] http_only_cookie_attribute: Option to add the `HttpOnly` cookie flag to access tokens. + :param pulumi.Input[bool] http_only_cookie_attribute: Option to add the `HttpOnly` cookie flag to access tokens. Defaults to `true`. :param pulumi.Input[str] logo_url: Image URL for the logo shown in the app launcher dashboard. :param pulumi.Input[str] same_site_cookie_attribute: Defines the same-site cookie setting @@ -228,7 +228,7 @@ def enable_binding_cookie(self, value: Optional[pulumi.Input[bool]]): @pulumi.getter(name="httpOnlyCookieAttribute") def http_only_cookie_attribute(self) -> Optional[pulumi.Input[bool]]: """ - Option to add the `HttpOnly` cookie flag to access tokens. + Option to add the `HttpOnly` cookie flag to access tokens. Defaults to `true`. """ return pulumi.get(self, "http_only_cookie_attribute") @@ -366,7 +366,7 @@ def __init__(__self__, *, :param pulumi.Input[str] domain: The complete URL of the asset you wish to put Cloudflare Access in front of. Can include subdomains or paths. Or both. :param pulumi.Input[bool] enable_binding_cookie: Option to provide increased security against compromised authorization tokens and CSRF attacks by requiring an additional "binding" cookie on requests. Defaults to `false`. - :param pulumi.Input[bool] http_only_cookie_attribute: Option to add the `HttpOnly` cookie flag to access tokens. + :param pulumi.Input[bool] http_only_cookie_attribute: Option to add the `HttpOnly` cookie flag to access tokens. Defaults to `true`. :param pulumi.Input[str] logo_url: Image URL for the logo shown in the app launcher dashboard. :param pulumi.Input[str] name: Friendly name of the Access Application. @@ -550,7 +550,7 @@ def enable_binding_cookie(self, value: Optional[pulumi.Input[bool]]): @pulumi.getter(name="httpOnlyCookieAttribute") def http_only_cookie_attribute(self) -> Optional[pulumi.Input[bool]]: """ - Option to add the `HttpOnly` cookie flag to access tokens. + Option to add the `HttpOnly` cookie flag to access tokens. Defaults to `true`. """ return pulumi.get(self, "http_only_cookie_attribute") @@ -739,7 +739,7 @@ def __init__(__self__, :param pulumi.Input[str] domain: The complete URL of the asset you wish to put Cloudflare Access in front of. Can include subdomains or paths. Or both. :param pulumi.Input[bool] enable_binding_cookie: Option to provide increased security against compromised authorization tokens and CSRF attacks by requiring an additional "binding" cookie on requests. Defaults to `false`. - :param pulumi.Input[bool] http_only_cookie_attribute: Option to add the `HttpOnly` cookie flag to access tokens. + :param pulumi.Input[bool] http_only_cookie_attribute: Option to add the `HttpOnly` cookie flag to access tokens. Defaults to `true`. :param pulumi.Input[str] logo_url: Image URL for the logo shown in the app launcher dashboard. :param pulumi.Input[str] name: Friendly name of the Access Application. @@ -918,7 +918,7 @@ def get(resource_name: str, :param pulumi.Input[str] domain: The complete URL of the asset you wish to put Cloudflare Access in front of. Can include subdomains or paths. Or both. :param pulumi.Input[bool] enable_binding_cookie: Option to provide increased security against compromised authorization tokens and CSRF attacks by requiring an additional "binding" cookie on requests. Defaults to `false`. - :param pulumi.Input[bool] http_only_cookie_attribute: Option to add the `HttpOnly` cookie flag to access tokens. + :param pulumi.Input[bool] http_only_cookie_attribute: Option to add the `HttpOnly` cookie flag to access tokens. Defaults to `true`. :param pulumi.Input[str] logo_url: Image URL for the logo shown in the app launcher dashboard. :param pulumi.Input[str] name: Friendly name of the Access Application. @@ -1046,9 +1046,9 @@ def enable_binding_cookie(self) -> pulumi.Output[Optional[bool]]: @property @pulumi.getter(name="httpOnlyCookieAttribute") - def http_only_cookie_attribute(self) -> pulumi.Output[bool]: + def http_only_cookie_attribute(self) -> pulumi.Output[Optional[bool]]: """ - Option to add the `HttpOnly` cookie flag to access tokens. + Option to add the `HttpOnly` cookie flag to access tokens. Defaults to `true`. """ return pulumi.get(self, "http_only_cookie_attribute") diff --git a/sdk/python/pulumi_cloudflare/access_group.py b/sdk/python/pulumi_cloudflare/access_group.py index 2fdcd025..c3a5c10d 100644 --- a/sdk/python/pulumi_cloudflare/access_group.py +++ b/sdk/python/pulumi_cloudflare/access_group.py @@ -305,6 +305,8 @@ def __init__(__self__, * `okta` - (Optional) Use Okta as the `include` condition. Example: * `saml` - (Optional) Use an external SAML setup as the `include` condition. Example: + * `external_evaluation` - (Optional) Pass a user's identity to an external URL as the `include` condition. + Example: ## Import @@ -397,6 +399,8 @@ def __init__(__self__, * `okta` - (Optional) Use Okta as the `include` condition. Example: * `saml` - (Optional) Use an external SAML setup as the `include` condition. Example: + * `external_evaluation` - (Optional) Pass a user's identity to an external URL as the `include` condition. + Example: ## Import diff --git a/sdk/python/pulumi_cloudflare/argo_tunnel.py b/sdk/python/pulumi_cloudflare/argo_tunnel.py index acdab20c..e1d47429 100644 --- a/sdk/python/pulumi_cloudflare/argo_tunnel.py +++ b/sdk/python/pulumi_cloudflare/argo_tunnel.py @@ -69,13 +69,15 @@ def __init__(__self__, *, account_id: Optional[pulumi.Input[str]] = None, cname: Optional[pulumi.Input[str]] = None, name: Optional[pulumi.Input[str]] = None, - secret: Optional[pulumi.Input[str]] = None): + secret: Optional[pulumi.Input[str]] = None, + tunnel_token: Optional[pulumi.Input[str]] = None): """ Input properties used for looking up and filtering ArgoTunnel resources. :param pulumi.Input[str] account_id: The Cloudflare account ID that you wish to manage the Argo Tunnel on. :param pulumi.Input[str] cname: Usable CNAME for accessing the Argo Tunnel. :param pulumi.Input[str] name: A user-friendly name chosen when the tunnel is created. Cannot be empty. :param pulumi.Input[str] secret: 32 or more bytes, encoded as a base64 string. The Create Argo Tunnel endpoint sets this as the tunnel's password. Anyone wishing to run the tunnel needs this password. + :param pulumi.Input[str] tunnel_token: Token used by a connector to authenticate and run the tunnel. """ if account_id is not None: pulumi.set(__self__, "account_id", account_id) @@ -85,6 +87,8 @@ def __init__(__self__, *, pulumi.set(__self__, "name", name) if secret is not None: pulumi.set(__self__, "secret", secret) + if tunnel_token is not None: + pulumi.set(__self__, "tunnel_token", tunnel_token) @property @pulumi.getter(name="accountId") @@ -134,6 +138,18 @@ def secret(self) -> Optional[pulumi.Input[str]]: def secret(self, value: Optional[pulumi.Input[str]]): pulumi.set(self, "secret", value) + @property + @pulumi.getter(name="tunnelToken") + def tunnel_token(self) -> Optional[pulumi.Input[str]]: + """ + Token used by a connector to authenticate and run the tunnel. + """ + return pulumi.get(self, "tunnel_token") + + @tunnel_token.setter + def tunnel_token(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "tunnel_token", value) + class ArgoTunnel(pulumi.CustomResource): @overload @@ -246,6 +262,7 @@ def _internal_init(__self__, raise TypeError("Missing required property 'secret'") __props__.__dict__["secret"] = secret __props__.__dict__["cname"] = None + __props__.__dict__["tunnel_token"] = None super(ArgoTunnel, __self__).__init__( 'cloudflare:index/argoTunnel:ArgoTunnel', resource_name, @@ -259,7 +276,8 @@ def get(resource_name: str, account_id: Optional[pulumi.Input[str]] = None, cname: Optional[pulumi.Input[str]] = None, name: Optional[pulumi.Input[str]] = None, - secret: Optional[pulumi.Input[str]] = None) -> 'ArgoTunnel': + secret: Optional[pulumi.Input[str]] = None, + tunnel_token: Optional[pulumi.Input[str]] = None) -> 'ArgoTunnel': """ Get an existing ArgoTunnel resource's state with the given name, id, and optional extra properties used to qualify the lookup. @@ -271,6 +289,7 @@ def get(resource_name: str, :param pulumi.Input[str] cname: Usable CNAME for accessing the Argo Tunnel. :param pulumi.Input[str] name: A user-friendly name chosen when the tunnel is created. Cannot be empty. :param pulumi.Input[str] secret: 32 or more bytes, encoded as a base64 string. The Create Argo Tunnel endpoint sets this as the tunnel's password. Anyone wishing to run the tunnel needs this password. + :param pulumi.Input[str] tunnel_token: Token used by a connector to authenticate and run the tunnel. """ opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id)) @@ -280,6 +299,7 @@ def get(resource_name: str, __props__.__dict__["cname"] = cname __props__.__dict__["name"] = name __props__.__dict__["secret"] = secret + __props__.__dict__["tunnel_token"] = tunnel_token return ArgoTunnel(resource_name, opts=opts, __props__=__props__) @property @@ -314,3 +334,11 @@ def secret(self) -> pulumi.Output[str]: """ return pulumi.get(self, "secret") + @property + @pulumi.getter(name="tunnelToken") + def tunnel_token(self) -> pulumi.Output[str]: + """ + Token used by a connector to authenticate and run the tunnel. + """ + return pulumi.get(self, "tunnel_token") + diff --git a/sdk/python/pulumi_cloudflare/healthcheck.py b/sdk/python/pulumi_cloudflare/healthcheck.py index 04b76205..a9dba7ef 100644 --- a/sdk/python/pulumi_cloudflare/healthcheck.py +++ b/sdk/python/pulumi_cloudflare/healthcheck.py @@ -865,6 +865,16 @@ def __init__(__self__, consecutive_successes=2) ``` + ## Import + + Healthchecks can be imported using a composite ID formed of zone ID and healthcheck ID, e.g. + + ```sh + $ pulumi import cloudflare:index/healthcheck:Healthcheck example 9a7806061c88ada191ed06f989cc3dac/699d98642c564d2e855e9661899b7252 + ``` + + where* `9a7806061c88ada191ed06f989cc3dac` - the zone ID * `699d98642c564d2e855e9661899b7252` - healthcheck ID as returned by [API](https://api.cloudflare.com/#health-checks-list-health-checks) + :param str resource_name: The name of the resource. :param pulumi.ResourceOptions opts: Options for the resource. :param pulumi.Input[str] address: The hostname or IP address of the origin server to run health checks on. @@ -969,6 +979,16 @@ def __init__(__self__, consecutive_successes=2) ``` + ## Import + + Healthchecks can be imported using a composite ID formed of zone ID and healthcheck ID, e.g. + + ```sh + $ pulumi import cloudflare:index/healthcheck:Healthcheck example 9a7806061c88ada191ed06f989cc3dac/699d98642c564d2e855e9661899b7252 + ``` + + where* `9a7806061c88ada191ed06f989cc3dac` - the zone ID * `699d98642c564d2e855e9661899b7252` - healthcheck ID as returned by [API](https://api.cloudflare.com/#health-checks-list-health-checks) + :param str resource_name: The name of the resource. :param HealthcheckArgs args: The arguments to use to populate this resource's properties. :param pulumi.ResourceOptions opts: Options for the resource. diff --git a/sdk/python/pulumi_cloudflare/logpush_job.py b/sdk/python/pulumi_cloudflare/logpush_job.py index ef7034ff..f6abef1e 100644 --- a/sdk/python/pulumi_cloudflare/logpush_job.py +++ b/sdk/python/pulumi_cloudflare/logpush_job.py @@ -17,6 +17,7 @@ def __init__(__self__, *, destination_conf: pulumi.Input[str], account_id: Optional[pulumi.Input[str]] = None, enabled: Optional[pulumi.Input[bool]] = None, + frequency: Optional[pulumi.Input[str]] = None, logpull_options: Optional[pulumi.Input[str]] = None, name: Optional[pulumi.Input[str]] = None, ownership_challenge: Optional[pulumi.Input[str]] = None, @@ -29,6 +30,7 @@ def __init__(__self__, *, :param pulumi.Input[str] destination_conf: Uniquely identifies a resource (such as an s3 bucket) where data will be pushed. Additional configuration parameters supported by the destination may be included. See [Logpush destination documentation](https://developers.cloudflare.com/logs/reference/logpush-api-configuration#destination). :param pulumi.Input[str] account_id: The account ID where the logpush job should be created. Either `account_id` or `zone_id` are required. :param pulumi.Input[bool] enabled: Whether to enable the job. + :param pulumi.Input[str] frequency: `"high"` or `"low"`. A higher frequency will result in logs being pushed on faster with smaller files. `"low"` frequency will push logs less often with larger files. :param pulumi.Input[str] logpull_options: Configuration string for the Logshare API. It specifies things like requested fields and timestamp formats. See [Logpull options documentation](https://developers.cloudflare.com/logs/logpush/logpush-configuration-api/understanding-logpush-api/#options). :param pulumi.Input[str] name: The name of the logpush job to create. Must match the regular expression `^[a-zA-Z0-9\-\.]*$`. :param pulumi.Input[str] ownership_challenge: Ownership challenge token to prove destination ownership, required when destination is Amazon S3, Google Cloud Storage, @@ -41,6 +43,8 @@ def __init__(__self__, *, pulumi.set(__self__, "account_id", account_id) if enabled is not None: pulumi.set(__self__, "enabled", enabled) + if frequency is not None: + pulumi.set(__self__, "frequency", frequency) if logpull_options is not None: pulumi.set(__self__, "logpull_options", logpull_options) if name is not None: @@ -100,6 +104,18 @@ def enabled(self) -> Optional[pulumi.Input[bool]]: def enabled(self, value: Optional[pulumi.Input[bool]]): pulumi.set(self, "enabled", value) + @property + @pulumi.getter + def frequency(self) -> Optional[pulumi.Input[str]]: + """ + `"high"` or `"low"`. A higher frequency will result in logs being pushed on faster with smaller files. `"low"` frequency will push logs less often with larger files. + """ + return pulumi.get(self, "frequency") + + @frequency.setter + def frequency(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "frequency", value) + @property @pulumi.getter(name="logpullOptions") def logpull_options(self) -> Optional[pulumi.Input[str]]: @@ -157,6 +173,7 @@ def __init__(__self__, *, dataset: Optional[pulumi.Input[str]] = None, destination_conf: Optional[pulumi.Input[str]] = None, enabled: Optional[pulumi.Input[bool]] = None, + frequency: Optional[pulumi.Input[str]] = None, logpull_options: Optional[pulumi.Input[str]] = None, name: Optional[pulumi.Input[str]] = None, ownership_challenge: Optional[pulumi.Input[str]] = None, @@ -169,6 +186,7 @@ def __init__(__self__, *, - [zone-scoped](https://developers.cloudflare.com/logs/reference/log-fields/zone): `"firewall_events"`, `"http_requests"`, `"spectrum_events"`, `"nel_reports", "dns_logs"` :param pulumi.Input[str] destination_conf: Uniquely identifies a resource (such as an s3 bucket) where data will be pushed. Additional configuration parameters supported by the destination may be included. See [Logpush destination documentation](https://developers.cloudflare.com/logs/reference/logpush-api-configuration#destination). :param pulumi.Input[bool] enabled: Whether to enable the job. + :param pulumi.Input[str] frequency: `"high"` or `"low"`. A higher frequency will result in logs being pushed on faster with smaller files. `"low"` frequency will push logs less often with larger files. :param pulumi.Input[str] logpull_options: Configuration string for the Logshare API. It specifies things like requested fields and timestamp formats. See [Logpull options documentation](https://developers.cloudflare.com/logs/logpush/logpush-configuration-api/understanding-logpush-api/#options). :param pulumi.Input[str] name: The name of the logpush job to create. Must match the regular expression `^[a-zA-Z0-9\-\.]*$`. :param pulumi.Input[str] ownership_challenge: Ownership challenge token to prove destination ownership, required when destination is Amazon S3, Google Cloud Storage, @@ -183,6 +201,8 @@ def __init__(__self__, *, pulumi.set(__self__, "destination_conf", destination_conf) if enabled is not None: pulumi.set(__self__, "enabled", enabled) + if frequency is not None: + pulumi.set(__self__, "frequency", frequency) if logpull_options is not None: pulumi.set(__self__, "logpull_options", logpull_options) if name is not None: @@ -242,6 +262,18 @@ def enabled(self) -> Optional[pulumi.Input[bool]]: def enabled(self, value: Optional[pulumi.Input[bool]]): pulumi.set(self, "enabled", value) + @property + @pulumi.getter + def frequency(self) -> Optional[pulumi.Input[str]]: + """ + `"high"` or `"low"`. A higher frequency will result in logs being pushed on faster with smaller files. `"low"` frequency will push logs less often with larger files. + """ + return pulumi.get(self, "frequency") + + @frequency.setter + def frequency(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "frequency", value) + @property @pulumi.getter(name="logpullOptions") def logpull_options(self) -> Optional[pulumi.Input[str]]: @@ -301,6 +333,7 @@ def __init__(__self__, dataset: Optional[pulumi.Input[str]] = None, destination_conf: Optional[pulumi.Input[str]] = None, enabled: Optional[pulumi.Input[bool]] = None, + frequency: Optional[pulumi.Input[str]] = None, logpull_options: Optional[pulumi.Input[str]] = None, name: Optional[pulumi.Input[str]] = None, ownership_challenge: Optional[pulumi.Input[str]] = None, @@ -332,6 +365,7 @@ def __init__(__self__, dataset="http_requests", destination_conf="s3://my-bucket-path?region=us-west-2", enabled=True, + frequency="high", logpull_options="fields=RayID,ClientIP,EdgeStartTimestamp×tamps=rfc3339", name="My-logpush-job", ownership_challenge="0000000000000", @@ -360,6 +394,7 @@ def __init__(__self__, - [zone-scoped](https://developers.cloudflare.com/logs/reference/log-fields/zone): `"firewall_events"`, `"http_requests"`, `"spectrum_events"`, `"nel_reports", "dns_logs"` :param pulumi.Input[str] destination_conf: Uniquely identifies a resource (such as an s3 bucket) where data will be pushed. Additional configuration parameters supported by the destination may be included. See [Logpush destination documentation](https://developers.cloudflare.com/logs/reference/logpush-api-configuration#destination). :param pulumi.Input[bool] enabled: Whether to enable the job. + :param pulumi.Input[str] frequency: `"high"` or `"low"`. A higher frequency will result in logs being pushed on faster with smaller files. `"low"` frequency will push logs less often with larger files. :param pulumi.Input[str] logpull_options: Configuration string for the Logshare API. It specifies things like requested fields and timestamp formats. See [Logpull options documentation](https://developers.cloudflare.com/logs/logpush/logpush-configuration-api/understanding-logpush-api/#options). :param pulumi.Input[str] name: The name of the logpush job to create. Must match the regular expression `^[a-zA-Z0-9\-\.]*$`. :param pulumi.Input[str] ownership_challenge: Ownership challenge token to prove destination ownership, required when destination is Amazon S3, Google Cloud Storage, @@ -398,6 +433,7 @@ def __init__(__self__, dataset="http_requests", destination_conf="s3://my-bucket-path?region=us-west-2", enabled=True, + frequency="high", logpull_options="fields=RayID,ClientIP,EdgeStartTimestamp×tamps=rfc3339", name="My-logpush-job", ownership_challenge="0000000000000", @@ -437,6 +473,7 @@ def _internal_init(__self__, dataset: Optional[pulumi.Input[str]] = None, destination_conf: Optional[pulumi.Input[str]] = None, enabled: Optional[pulumi.Input[bool]] = None, + frequency: Optional[pulumi.Input[str]] = None, logpull_options: Optional[pulumi.Input[str]] = None, name: Optional[pulumi.Input[str]] = None, ownership_challenge: Optional[pulumi.Input[str]] = None, @@ -461,6 +498,7 @@ def _internal_init(__self__, raise TypeError("Missing required property 'destination_conf'") __props__.__dict__["destination_conf"] = destination_conf __props__.__dict__["enabled"] = enabled + __props__.__dict__["frequency"] = frequency __props__.__dict__["logpull_options"] = logpull_options __props__.__dict__["name"] = name __props__.__dict__["ownership_challenge"] = ownership_challenge @@ -479,6 +517,7 @@ def get(resource_name: str, dataset: Optional[pulumi.Input[str]] = None, destination_conf: Optional[pulumi.Input[str]] = None, enabled: Optional[pulumi.Input[bool]] = None, + frequency: Optional[pulumi.Input[str]] = None, logpull_options: Optional[pulumi.Input[str]] = None, name: Optional[pulumi.Input[str]] = None, ownership_challenge: Optional[pulumi.Input[str]] = None, @@ -496,6 +535,7 @@ def get(resource_name: str, - [zone-scoped](https://developers.cloudflare.com/logs/reference/log-fields/zone): `"firewall_events"`, `"http_requests"`, `"spectrum_events"`, `"nel_reports", "dns_logs"` :param pulumi.Input[str] destination_conf: Uniquely identifies a resource (such as an s3 bucket) where data will be pushed. Additional configuration parameters supported by the destination may be included. See [Logpush destination documentation](https://developers.cloudflare.com/logs/reference/logpush-api-configuration#destination). :param pulumi.Input[bool] enabled: Whether to enable the job. + :param pulumi.Input[str] frequency: `"high"` or `"low"`. A higher frequency will result in logs being pushed on faster with smaller files. `"low"` frequency will push logs less often with larger files. :param pulumi.Input[str] logpull_options: Configuration string for the Logshare API. It specifies things like requested fields and timestamp formats. See [Logpull options documentation](https://developers.cloudflare.com/logs/logpush/logpush-configuration-api/understanding-logpush-api/#options). :param pulumi.Input[str] name: The name of the logpush job to create. Must match the regular expression `^[a-zA-Z0-9\-\.]*$`. :param pulumi.Input[str] ownership_challenge: Ownership challenge token to prove destination ownership, required when destination is Amazon S3, Google Cloud Storage, @@ -510,6 +550,7 @@ def get(resource_name: str, __props__.__dict__["dataset"] = dataset __props__.__dict__["destination_conf"] = destination_conf __props__.__dict__["enabled"] = enabled + __props__.__dict__["frequency"] = frequency __props__.__dict__["logpull_options"] = logpull_options __props__.__dict__["name"] = name __props__.__dict__["ownership_challenge"] = ownership_challenge @@ -550,6 +591,14 @@ def enabled(self) -> pulumi.Output[Optional[bool]]: """ return pulumi.get(self, "enabled") + @property + @pulumi.getter + def frequency(self) -> pulumi.Output[Optional[str]]: + """ + `"high"` or `"low"`. A higher frequency will result in logs being pushed on faster with smaller files. `"low"` frequency will push logs less often with larger files. + """ + return pulumi.get(self, "frequency") + @property @pulumi.getter(name="logpullOptions") def logpull_options(self) -> pulumi.Output[Optional[str]]: diff --git a/sdk/python/pulumi_cloudflare/outputs.py b/sdk/python/pulumi_cloudflare/outputs.py index 548eed8b..5184364a 100644 --- a/sdk/python/pulumi_cloudflare/outputs.py +++ b/sdk/python/pulumi_cloudflare/outputs.py @@ -13,18 +13,21 @@ 'AccessApplicationCorsHeader', 'AccessGroupExclude', 'AccessGroupExcludeAzure', + 'AccessGroupExcludeExternalEvaluation', 'AccessGroupExcludeGithub', 'AccessGroupExcludeGsuite', 'AccessGroupExcludeOkta', 'AccessGroupExcludeSaml', 'AccessGroupInclude', 'AccessGroupIncludeAzure', + 'AccessGroupIncludeExternalEvaluation', 'AccessGroupIncludeGithub', 'AccessGroupIncludeGsuite', 'AccessGroupIncludeOkta', 'AccessGroupIncludeSaml', 'AccessGroupRequire', 'AccessGroupRequireAzure', + 'AccessGroupRequireExternalEvaluation', 'AccessGroupRequireGithub', 'AccessGroupRequireGsuite', 'AccessGroupRequireOkta', @@ -33,18 +36,21 @@ 'AccessPolicyApprovalGroup', 'AccessPolicyExclude', 'AccessPolicyExcludeAzure', + 'AccessPolicyExcludeExternalEvaluation', 'AccessPolicyExcludeGithub', 'AccessPolicyExcludeGsuite', 'AccessPolicyExcludeOkta', 'AccessPolicyExcludeSaml', 'AccessPolicyInclude', 'AccessPolicyIncludeAzure', + 'AccessPolicyIncludeExternalEvaluation', 'AccessPolicyIncludeGithub', 'AccessPolicyIncludeGsuite', 'AccessPolicyIncludeOkta', 'AccessPolicyIncludeSaml', 'AccessPolicyRequire', 'AccessPolicyRequireAzure', + 'AccessPolicyRequireExternalEvaluation', 'AccessPolicyRequireGithub', 'AccessPolicyRequireGsuite', 'AccessPolicyRequireOkta', @@ -319,6 +325,8 @@ def __key_warning(key: str): suggest = "device_postures" elif key == "emailDomains": suggest = "email_domains" + elif key == "externalEvaluation": + suggest = "external_evaluation" elif key == "loginMethods": suggest = "login_methods" elif key == "serviceTokens": @@ -345,6 +353,7 @@ def __init__(__self__, *, email_domains: Optional[Sequence[str]] = None, emails: Optional[Sequence[str]] = None, everyone: Optional[bool] = None, + external_evaluation: Optional['outputs.AccessGroupExcludeExternalEvaluation'] = None, geos: Optional[Sequence[str]] = None, githubs: Optional[Sequence['outputs.AccessGroupExcludeGithub']] = None, groups: Optional[Sequence[str]] = None, @@ -372,6 +381,8 @@ def __init__(__self__, *, pulumi.set(__self__, "emails", emails) if everyone is not None: pulumi.set(__self__, "everyone", everyone) + if external_evaluation is not None: + pulumi.set(__self__, "external_evaluation", external_evaluation) if geos is not None: pulumi.set(__self__, "geos", geos) if githubs is not None: @@ -436,6 +447,11 @@ def emails(self) -> Optional[Sequence[str]]: def everyone(self) -> Optional[bool]: return pulumi.get(self, "everyone") + @property + @pulumi.getter(name="externalEvaluation") + def external_evaluation(self) -> Optional['outputs.AccessGroupExcludeExternalEvaluation']: + return pulumi.get(self, "external_evaluation") + @property @pulumi.getter def geos(self) -> Optional[Sequence[str]]: @@ -520,6 +536,46 @@ def ids(self) -> Optional[Sequence[str]]: return pulumi.get(self, "ids") +@pulumi.output_type +class AccessGroupExcludeExternalEvaluation(dict): + @staticmethod + def __key_warning(key: str): + suggest = None + if key == "evaluateUrl": + suggest = "evaluate_url" + elif key == "keysUrl": + suggest = "keys_url" + + if suggest: + pulumi.log.warn(f"Key '{key}' not found in AccessGroupExcludeExternalEvaluation. Access the value via the '{suggest}' property getter instead.") + + def __getitem__(self, key: str) -> Any: + AccessGroupExcludeExternalEvaluation.__key_warning(key) + return super().__getitem__(key) + + def get(self, key: str, default = None) -> Any: + AccessGroupExcludeExternalEvaluation.__key_warning(key) + return super().get(key, default) + + def __init__(__self__, *, + evaluate_url: Optional[str] = None, + keys_url: Optional[str] = None): + if evaluate_url is not None: + pulumi.set(__self__, "evaluate_url", evaluate_url) + if keys_url is not None: + pulumi.set(__self__, "keys_url", keys_url) + + @property + @pulumi.getter(name="evaluateUrl") + def evaluate_url(self) -> Optional[str]: + return pulumi.get(self, "evaluate_url") + + @property + @pulumi.getter(name="keysUrl") + def keys_url(self) -> Optional[str]: + return pulumi.get(self, "keys_url") + + @pulumi.output_type class AccessGroupExcludeGithub(dict): @staticmethod @@ -719,6 +775,8 @@ def __key_warning(key: str): suggest = "device_postures" elif key == "emailDomains": suggest = "email_domains" + elif key == "externalEvaluation": + suggest = "external_evaluation" elif key == "loginMethods": suggest = "login_methods" elif key == "serviceTokens": @@ -745,6 +803,7 @@ def __init__(__self__, *, email_domains: Optional[Sequence[str]] = None, emails: Optional[Sequence[str]] = None, everyone: Optional[bool] = None, + external_evaluation: Optional['outputs.AccessGroupIncludeExternalEvaluation'] = None, geos: Optional[Sequence[str]] = None, githubs: Optional[Sequence['outputs.AccessGroupIncludeGithub']] = None, groups: Optional[Sequence[str]] = None, @@ -772,6 +831,8 @@ def __init__(__self__, *, pulumi.set(__self__, "emails", emails) if everyone is not None: pulumi.set(__self__, "everyone", everyone) + if external_evaluation is not None: + pulumi.set(__self__, "external_evaluation", external_evaluation) if geos is not None: pulumi.set(__self__, "geos", geos) if githubs is not None: @@ -836,6 +897,11 @@ def emails(self) -> Optional[Sequence[str]]: def everyone(self) -> Optional[bool]: return pulumi.get(self, "everyone") + @property + @pulumi.getter(name="externalEvaluation") + def external_evaluation(self) -> Optional['outputs.AccessGroupIncludeExternalEvaluation']: + return pulumi.get(self, "external_evaluation") + @property @pulumi.getter def geos(self) -> Optional[Sequence[str]]: @@ -920,6 +986,46 @@ def ids(self) -> Optional[Sequence[str]]: return pulumi.get(self, "ids") +@pulumi.output_type +class AccessGroupIncludeExternalEvaluation(dict): + @staticmethod + def __key_warning(key: str): + suggest = None + if key == "evaluateUrl": + suggest = "evaluate_url" + elif key == "keysUrl": + suggest = "keys_url" + + if suggest: + pulumi.log.warn(f"Key '{key}' not found in AccessGroupIncludeExternalEvaluation. Access the value via the '{suggest}' property getter instead.") + + def __getitem__(self, key: str) -> Any: + AccessGroupIncludeExternalEvaluation.__key_warning(key) + return super().__getitem__(key) + + def get(self, key: str, default = None) -> Any: + AccessGroupIncludeExternalEvaluation.__key_warning(key) + return super().get(key, default) + + def __init__(__self__, *, + evaluate_url: Optional[str] = None, + keys_url: Optional[str] = None): + if evaluate_url is not None: + pulumi.set(__self__, "evaluate_url", evaluate_url) + if keys_url is not None: + pulumi.set(__self__, "keys_url", keys_url) + + @property + @pulumi.getter(name="evaluateUrl") + def evaluate_url(self) -> Optional[str]: + return pulumi.get(self, "evaluate_url") + + @property + @pulumi.getter(name="keysUrl") + def keys_url(self) -> Optional[str]: + return pulumi.get(self, "keys_url") + + @pulumi.output_type class AccessGroupIncludeGithub(dict): @staticmethod @@ -1119,6 +1225,8 @@ def __key_warning(key: str): suggest = "device_postures" elif key == "emailDomains": suggest = "email_domains" + elif key == "externalEvaluation": + suggest = "external_evaluation" elif key == "loginMethods": suggest = "login_methods" elif key == "serviceTokens": @@ -1145,6 +1253,7 @@ def __init__(__self__, *, email_domains: Optional[Sequence[str]] = None, emails: Optional[Sequence[str]] = None, everyone: Optional[bool] = None, + external_evaluation: Optional['outputs.AccessGroupRequireExternalEvaluation'] = None, geos: Optional[Sequence[str]] = None, githubs: Optional[Sequence['outputs.AccessGroupRequireGithub']] = None, groups: Optional[Sequence[str]] = None, @@ -1172,6 +1281,8 @@ def __init__(__self__, *, pulumi.set(__self__, "emails", emails) if everyone is not None: pulumi.set(__self__, "everyone", everyone) + if external_evaluation is not None: + pulumi.set(__self__, "external_evaluation", external_evaluation) if geos is not None: pulumi.set(__self__, "geos", geos) if githubs is not None: @@ -1236,6 +1347,11 @@ def emails(self) -> Optional[Sequence[str]]: def everyone(self) -> Optional[bool]: return pulumi.get(self, "everyone") + @property + @pulumi.getter(name="externalEvaluation") + def external_evaluation(self) -> Optional['outputs.AccessGroupRequireExternalEvaluation']: + return pulumi.get(self, "external_evaluation") + @property @pulumi.getter def geos(self) -> Optional[Sequence[str]]: @@ -1320,6 +1436,46 @@ def ids(self) -> Optional[Sequence[str]]: return pulumi.get(self, "ids") +@pulumi.output_type +class AccessGroupRequireExternalEvaluation(dict): + @staticmethod + def __key_warning(key: str): + suggest = None + if key == "evaluateUrl": + suggest = "evaluate_url" + elif key == "keysUrl": + suggest = "keys_url" + + if suggest: + pulumi.log.warn(f"Key '{key}' not found in AccessGroupRequireExternalEvaluation. Access the value via the '{suggest}' property getter instead.") + + def __getitem__(self, key: str) -> Any: + AccessGroupRequireExternalEvaluation.__key_warning(key) + return super().__getitem__(key) + + def get(self, key: str, default = None) -> Any: + AccessGroupRequireExternalEvaluation.__key_warning(key) + return super().get(key, default) + + def __init__(__self__, *, + evaluate_url: Optional[str] = None, + keys_url: Optional[str] = None): + if evaluate_url is not None: + pulumi.set(__self__, "evaluate_url", evaluate_url) + if keys_url is not None: + pulumi.set(__self__, "keys_url", keys_url) + + @property + @pulumi.getter(name="evaluateUrl") + def evaluate_url(self) -> Optional[str]: + return pulumi.get(self, "evaluate_url") + + @property + @pulumi.getter(name="keysUrl") + def keys_url(self) -> Optional[str]: + return pulumi.get(self, "keys_url") + + @pulumi.output_type class AccessGroupRequireGithub(dict): @staticmethod @@ -1796,6 +1952,8 @@ def __key_warning(key: str): suggest = "device_postures" elif key == "emailDomains": suggest = "email_domains" + elif key == "externalEvaluation": + suggest = "external_evaluation" elif key == "loginMethods": suggest = "login_methods" elif key == "serviceTokens": @@ -1822,6 +1980,7 @@ def __init__(__self__, *, email_domains: Optional[Sequence[str]] = None, emails: Optional[Sequence[str]] = None, everyone: Optional[bool] = None, + external_evaluation: Optional['outputs.AccessPolicyExcludeExternalEvaluation'] = None, geos: Optional[Sequence[str]] = None, githubs: Optional[Sequence['outputs.AccessPolicyExcludeGithub']] = None, groups: Optional[Sequence[str]] = None, @@ -1849,6 +2008,8 @@ def __init__(__self__, *, pulumi.set(__self__, "emails", emails) if everyone is not None: pulumi.set(__self__, "everyone", everyone) + if external_evaluation is not None: + pulumi.set(__self__, "external_evaluation", external_evaluation) if geos is not None: pulumi.set(__self__, "geos", geos) if githubs is not None: @@ -1913,6 +2074,11 @@ def emails(self) -> Optional[Sequence[str]]: def everyone(self) -> Optional[bool]: return pulumi.get(self, "everyone") + @property + @pulumi.getter(name="externalEvaluation") + def external_evaluation(self) -> Optional['outputs.AccessPolicyExcludeExternalEvaluation']: + return pulumi.get(self, "external_evaluation") + @property @pulumi.getter def geos(self) -> Optional[Sequence[str]]: @@ -1997,6 +2163,46 @@ def ids(self) -> Optional[Sequence[str]]: return pulumi.get(self, "ids") +@pulumi.output_type +class AccessPolicyExcludeExternalEvaluation(dict): + @staticmethod + def __key_warning(key: str): + suggest = None + if key == "evaluateUrl": + suggest = "evaluate_url" + elif key == "keysUrl": + suggest = "keys_url" + + if suggest: + pulumi.log.warn(f"Key '{key}' not found in AccessPolicyExcludeExternalEvaluation. Access the value via the '{suggest}' property getter instead.") + + def __getitem__(self, key: str) -> Any: + AccessPolicyExcludeExternalEvaluation.__key_warning(key) + return super().__getitem__(key) + + def get(self, key: str, default = None) -> Any: + AccessPolicyExcludeExternalEvaluation.__key_warning(key) + return super().get(key, default) + + def __init__(__self__, *, + evaluate_url: Optional[str] = None, + keys_url: Optional[str] = None): + if evaluate_url is not None: + pulumi.set(__self__, "evaluate_url", evaluate_url) + if keys_url is not None: + pulumi.set(__self__, "keys_url", keys_url) + + @property + @pulumi.getter(name="evaluateUrl") + def evaluate_url(self) -> Optional[str]: + return pulumi.get(self, "evaluate_url") + + @property + @pulumi.getter(name="keysUrl") + def keys_url(self) -> Optional[str]: + return pulumi.get(self, "keys_url") + + @pulumi.output_type class AccessPolicyExcludeGithub(dict): @staticmethod @@ -2196,6 +2402,8 @@ def __key_warning(key: str): suggest = "device_postures" elif key == "emailDomains": suggest = "email_domains" + elif key == "externalEvaluation": + suggest = "external_evaluation" elif key == "loginMethods": suggest = "login_methods" elif key == "serviceTokens": @@ -2222,6 +2430,7 @@ def __init__(__self__, *, email_domains: Optional[Sequence[str]] = None, emails: Optional[Sequence[str]] = None, everyone: Optional[bool] = None, + external_evaluation: Optional['outputs.AccessPolicyIncludeExternalEvaluation'] = None, geos: Optional[Sequence[str]] = None, githubs: Optional[Sequence['outputs.AccessPolicyIncludeGithub']] = None, groups: Optional[Sequence[str]] = None, @@ -2249,6 +2458,8 @@ def __init__(__self__, *, pulumi.set(__self__, "emails", emails) if everyone is not None: pulumi.set(__self__, "everyone", everyone) + if external_evaluation is not None: + pulumi.set(__self__, "external_evaluation", external_evaluation) if geos is not None: pulumi.set(__self__, "geos", geos) if githubs is not None: @@ -2313,6 +2524,11 @@ def emails(self) -> Optional[Sequence[str]]: def everyone(self) -> Optional[bool]: return pulumi.get(self, "everyone") + @property + @pulumi.getter(name="externalEvaluation") + def external_evaluation(self) -> Optional['outputs.AccessPolicyIncludeExternalEvaluation']: + return pulumi.get(self, "external_evaluation") + @property @pulumi.getter def geos(self) -> Optional[Sequence[str]]: @@ -2397,6 +2613,46 @@ def ids(self) -> Optional[Sequence[str]]: return pulumi.get(self, "ids") +@pulumi.output_type +class AccessPolicyIncludeExternalEvaluation(dict): + @staticmethod + def __key_warning(key: str): + suggest = None + if key == "evaluateUrl": + suggest = "evaluate_url" + elif key == "keysUrl": + suggest = "keys_url" + + if suggest: + pulumi.log.warn(f"Key '{key}' not found in AccessPolicyIncludeExternalEvaluation. Access the value via the '{suggest}' property getter instead.") + + def __getitem__(self, key: str) -> Any: + AccessPolicyIncludeExternalEvaluation.__key_warning(key) + return super().__getitem__(key) + + def get(self, key: str, default = None) -> Any: + AccessPolicyIncludeExternalEvaluation.__key_warning(key) + return super().get(key, default) + + def __init__(__self__, *, + evaluate_url: Optional[str] = None, + keys_url: Optional[str] = None): + if evaluate_url is not None: + pulumi.set(__self__, "evaluate_url", evaluate_url) + if keys_url is not None: + pulumi.set(__self__, "keys_url", keys_url) + + @property + @pulumi.getter(name="evaluateUrl") + def evaluate_url(self) -> Optional[str]: + return pulumi.get(self, "evaluate_url") + + @property + @pulumi.getter(name="keysUrl") + def keys_url(self) -> Optional[str]: + return pulumi.get(self, "keys_url") + + @pulumi.output_type class AccessPolicyIncludeGithub(dict): @staticmethod @@ -2596,6 +2852,8 @@ def __key_warning(key: str): suggest = "device_postures" elif key == "emailDomains": suggest = "email_domains" + elif key == "externalEvaluation": + suggest = "external_evaluation" elif key == "loginMethods": suggest = "login_methods" elif key == "serviceTokens": @@ -2622,6 +2880,7 @@ def __init__(__self__, *, email_domains: Optional[Sequence[str]] = None, emails: Optional[Sequence[str]] = None, everyone: Optional[bool] = None, + external_evaluation: Optional['outputs.AccessPolicyRequireExternalEvaluation'] = None, geos: Optional[Sequence[str]] = None, githubs: Optional[Sequence['outputs.AccessPolicyRequireGithub']] = None, groups: Optional[Sequence[str]] = None, @@ -2649,6 +2908,8 @@ def __init__(__self__, *, pulumi.set(__self__, "emails", emails) if everyone is not None: pulumi.set(__self__, "everyone", everyone) + if external_evaluation is not None: + pulumi.set(__self__, "external_evaluation", external_evaluation) if geos is not None: pulumi.set(__self__, "geos", geos) if githubs is not None: @@ -2713,6 +2974,11 @@ def emails(self) -> Optional[Sequence[str]]: def everyone(self) -> Optional[bool]: return pulumi.get(self, "everyone") + @property + @pulumi.getter(name="externalEvaluation") + def external_evaluation(self) -> Optional['outputs.AccessPolicyRequireExternalEvaluation']: + return pulumi.get(self, "external_evaluation") + @property @pulumi.getter def geos(self) -> Optional[Sequence[str]]: @@ -2797,6 +3063,46 @@ def ids(self) -> Optional[Sequence[str]]: return pulumi.get(self, "ids") +@pulumi.output_type +class AccessPolicyRequireExternalEvaluation(dict): + @staticmethod + def __key_warning(key: str): + suggest = None + if key == "evaluateUrl": + suggest = "evaluate_url" + elif key == "keysUrl": + suggest = "keys_url" + + if suggest: + pulumi.log.warn(f"Key '{key}' not found in AccessPolicyRequireExternalEvaluation. Access the value via the '{suggest}' property getter instead.") + + def __getitem__(self, key: str) -> Any: + AccessPolicyRequireExternalEvaluation.__key_warning(key) + return super().__getitem__(key) + + def get(self, key: str, default = None) -> Any: + AccessPolicyRequireExternalEvaluation.__key_warning(key) + return super().get(key, default) + + def __init__(__self__, *, + evaluate_url: Optional[str] = None, + keys_url: Optional[str] = None): + if evaluate_url is not None: + pulumi.set(__self__, "evaluate_url", evaluate_url) + if keys_url is not None: + pulumi.set(__self__, "keys_url", keys_url) + + @property + @pulumi.getter(name="evaluateUrl") + def evaluate_url(self) -> Optional[str]: + return pulumi.get(self, "evaluate_url") + + @property + @pulumi.getter(name="keysUrl") + def keys_url(self) -> Optional[str]: + return pulumi.get(self, "keys_url") + + @pulumi.output_type class AccessPolicyRequireGithub(dict): @staticmethod @@ -6796,10 +7102,16 @@ class RulesetRuleActionParameters(dict): @staticmethod def __key_warning(key: str): suggest = None - if key == "hostHeader": + if key == "cookieFields": + suggest = "cookie_fields" + elif key == "hostHeader": suggest = "host_header" elif key == "matchedData": suggest = "matched_data" + elif key == "requestFields": + suggest = "request_fields" + elif key == "responseFields": + suggest = "response_fields" if suggest: pulumi.log.warn(f"Key '{key}' not found in RulesetRuleActionParameters. Access the value via the '{suggest}' property getter instead.") @@ -6813,6 +7125,7 @@ def get(self, key: str, default = None) -> Any: return super().get(key, default) def __init__(__self__, *, + cookie_fields: Optional[Sequence[str]] = None, headers: Optional[Sequence['outputs.RulesetRuleActionParametersHeader']] = None, host_header: Optional[str] = None, id: Optional[str] = None, @@ -6822,6 +7135,8 @@ def __init__(__self__, *, overrides: Optional['outputs.RulesetRuleActionParametersOverrides'] = None, phases: Optional[Sequence[str]] = None, products: Optional[Sequence[str]] = None, + request_fields: Optional[Sequence[str]] = None, + response_fields: Optional[Sequence[str]] = None, responses: Optional[Sequence['outputs.RulesetRuleActionParametersResponse']] = None, rules: Optional[Mapping[str, str]] = None, ruleset: Optional[str] = None, @@ -6829,6 +7144,7 @@ def __init__(__self__, *, uri: Optional['outputs.RulesetRuleActionParametersUri'] = None, version: Optional[str] = None): """ + :param Sequence[str] cookie_fields: List of cookie values to include as part of custom fields logging. :param Sequence['RulesetRuleActionParametersHeaderArgs'] headers: List of HTTP header modifications to perform in the ruleset rule (refer to the nested schema). :param str host_header: Host Header that request origin receives. :param str id: Rule ID to apply the override to. @@ -6836,12 +7152,16 @@ def __init__(__self__, *, :param 'RulesetRuleActionParametersOriginArgs' origin: List of properties to change request origin (refer to the nested schema). :param 'RulesetRuleActionParametersOverridesArgs' overrides: List of override configurations to apply to the ruleset (refer to the nested schema). :param Sequence[str] products: Products to target with the actions. Valid values are `"bic"`, `"hot"`, `"ratelimit"`, `"securityLevel"`, `"uablock"`, `"waf"` or `"zonelockdown"`. + :param Sequence[str] request_fields: List of request headers to include as part of custom fields logging, in lowercase. + :param Sequence[str] response_fields: List of response headers to include as part of custom fields logging, in lowercase. :param Sequence['RulesetRuleActionParametersResponseArgs'] responses: List of parameters that configure the response given to end users (refer to the nested schema). :param Mapping[str, str] rules: List of rule-based overrides (refer to the nested schema). :param str ruleset: Which ruleset ID to target. :param Sequence[str] rulesets: List of managed WAF rule IDs to target. Only valid when the "action" is set to skip. :param 'RulesetRuleActionParametersUriArgs' uri: List of URI properties to configure for the ruleset rule when performing URL rewrite transformations (refer to the nested schema). """ + if cookie_fields is not None: + pulumi.set(__self__, "cookie_fields", cookie_fields) if headers is not None: pulumi.set(__self__, "headers", headers) if host_header is not None: @@ -6860,6 +7180,10 @@ def __init__(__self__, *, pulumi.set(__self__, "phases", phases) if products is not None: pulumi.set(__self__, "products", products) + if request_fields is not None: + pulumi.set(__self__, "request_fields", request_fields) + if response_fields is not None: + pulumi.set(__self__, "response_fields", response_fields) if responses is not None: pulumi.set(__self__, "responses", responses) if rules is not None: @@ -6873,6 +7197,14 @@ def __init__(__self__, *, if version is not None: pulumi.set(__self__, "version", version) + @property + @pulumi.getter(name="cookieFields") + def cookie_fields(self) -> Optional[Sequence[str]]: + """ + List of cookie values to include as part of custom fields logging. + """ + return pulumi.get(self, "cookie_fields") + @property @pulumi.getter def headers(self) -> Optional[Sequence['outputs.RulesetRuleActionParametersHeader']]: @@ -6939,6 +7271,22 @@ def products(self) -> Optional[Sequence[str]]: """ return pulumi.get(self, "products") + @property + @pulumi.getter(name="requestFields") + def request_fields(self) -> Optional[Sequence[str]]: + """ + List of request headers to include as part of custom fields logging, in lowercase. + """ + return pulumi.get(self, "request_fields") + + @property + @pulumi.getter(name="responseFields") + def response_fields(self) -> Optional[Sequence[str]]: + """ + List of response headers to include as part of custom fields logging, in lowercase. + """ + return pulumi.get(self, "response_fields") + @property @pulumi.getter def responses(self) -> Optional[Sequence['outputs.RulesetRuleActionParametersResponse']]: diff --git a/sdk/python/pulumi_cloudflare/ruleset.py b/sdk/python/pulumi_cloudflare/ruleset.py index 705ea2e4..6ff2a7f5 100644 --- a/sdk/python/pulumi_cloudflare/ruleset.py +++ b/sdk/python/pulumi_cloudflare/ruleset.py @@ -473,6 +473,36 @@ def __init__(__self__, expression="(http.request.uri.path matches \"^/api/\")", )], zone_id="cb029e245cfdd66dc8d2e570d5dd3322") + # custom fields logging + custom_fields_logging_example = cloudflare.Ruleset("customFieldsLoggingExample", + description="add custom fields to logging", + kind="zone", + name="log custom fields", + phase="http_log_custom_fields", + rules=[cloudflare.RulesetRuleArgs( + action="log_custom_field", + action_parameters=cloudflare.RulesetRuleActionParametersArgs( + cookie_fields=[ + "__ga", + "accountNumber", + "__cfruid", + ], + request_fields=[ + "content-type", + "x-forwarded-for", + "host", + ], + response_fields=[ + "server", + "content-type", + "allow", + ], + ), + description="log custom fields rule", + enabled=True, + expression="true", + )], + zone_id="cb029e245cfdd66dc8d2e570d5dd3322") ``` ## Import @@ -674,6 +704,36 @@ def __init__(__self__, expression="(http.request.uri.path matches \"^/api/\")", )], zone_id="cb029e245cfdd66dc8d2e570d5dd3322") + # custom fields logging + custom_fields_logging_example = cloudflare.Ruleset("customFieldsLoggingExample", + description="add custom fields to logging", + kind="zone", + name="log custom fields", + phase="http_log_custom_fields", + rules=[cloudflare.RulesetRuleArgs( + action="log_custom_field", + action_parameters=cloudflare.RulesetRuleActionParametersArgs( + cookie_fields=[ + "__ga", + "accountNumber", + "__cfruid", + ], + request_fields=[ + "content-type", + "x-forwarded-for", + "host", + ], + response_fields=[ + "server", + "content-type", + "allow", + ], + ), + description="log custom fields rule", + enabled=True, + expression="true", + )], + zone_id="cb029e245cfdd66dc8d2e570d5dd3322") ``` ## Import diff --git a/sdk/python/pulumi_cloudflare/tunnel_route.py b/sdk/python/pulumi_cloudflare/tunnel_route.py index 99de7823..95b75082 100644 --- a/sdk/python/pulumi_cloudflare/tunnel_route.py +++ b/sdk/python/pulumi_cloudflare/tunnel_route.py @@ -16,19 +16,23 @@ def __init__(__self__, *, account_id: pulumi.Input[str], network: pulumi.Input[str], tunnel_id: pulumi.Input[str], - comment: Optional[pulumi.Input[str]] = None): + comment: Optional[pulumi.Input[str]] = None, + virtual_network_id: Optional[pulumi.Input[str]] = None): """ The set of arguments for constructing a TunnelRoute resource. :param pulumi.Input[str] account_id: The ID of the account where the tunnel route is being created. :param pulumi.Input[str] network: The IPv4 or IPv6 network that should use this tunnel route, in CIDR notation. :param pulumi.Input[str] tunnel_id: The ID of the tunnel that will service the tunnel route. :param pulumi.Input[str] comment: Description of the tunnel route. + :param pulumi.Input[str] virtual_network_id: The ID of the virtual network for which this route is being added; uses the default virtual network of the account if none is provided. """ pulumi.set(__self__, "account_id", account_id) pulumi.set(__self__, "network", network) pulumi.set(__self__, "tunnel_id", tunnel_id) if comment is not None: pulumi.set(__self__, "comment", comment) + if virtual_network_id is not None: + pulumi.set(__self__, "virtual_network_id", virtual_network_id) @property @pulumi.getter(name="accountId") @@ -78,6 +82,18 @@ def comment(self) -> Optional[pulumi.Input[str]]: def comment(self, value: Optional[pulumi.Input[str]]): pulumi.set(self, "comment", value) + @property + @pulumi.getter(name="virtualNetworkId") + def virtual_network_id(self) -> Optional[pulumi.Input[str]]: + """ + The ID of the virtual network for which this route is being added; uses the default virtual network of the account if none is provided. + """ + return pulumi.get(self, "virtual_network_id") + + @virtual_network_id.setter + def virtual_network_id(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "virtual_network_id", value) + @pulumi.input_type class _TunnelRouteState: @@ -85,13 +101,15 @@ def __init__(__self__, *, account_id: Optional[pulumi.Input[str]] = None, comment: Optional[pulumi.Input[str]] = None, network: Optional[pulumi.Input[str]] = None, - tunnel_id: Optional[pulumi.Input[str]] = None): + tunnel_id: Optional[pulumi.Input[str]] = None, + virtual_network_id: Optional[pulumi.Input[str]] = None): """ Input properties used for looking up and filtering TunnelRoute resources. :param pulumi.Input[str] account_id: The ID of the account where the tunnel route is being created. :param pulumi.Input[str] comment: Description of the tunnel route. :param pulumi.Input[str] network: The IPv4 or IPv6 network that should use this tunnel route, in CIDR notation. :param pulumi.Input[str] tunnel_id: The ID of the tunnel that will service the tunnel route. + :param pulumi.Input[str] virtual_network_id: The ID of the virtual network for which this route is being added; uses the default virtual network of the account if none is provided. """ if account_id is not None: pulumi.set(__self__, "account_id", account_id) @@ -101,6 +119,8 @@ def __init__(__self__, *, pulumi.set(__self__, "network", network) if tunnel_id is not None: pulumi.set(__self__, "tunnel_id", tunnel_id) + if virtual_network_id is not None: + pulumi.set(__self__, "virtual_network_id", virtual_network_id) @property @pulumi.getter(name="accountId") @@ -150,6 +170,18 @@ def tunnel_id(self) -> Optional[pulumi.Input[str]]: def tunnel_id(self, value: Optional[pulumi.Input[str]]): pulumi.set(self, "tunnel_id", value) + @property + @pulumi.getter(name="virtualNetworkId") + def virtual_network_id(self) -> Optional[pulumi.Input[str]]: + """ + The ID of the virtual network for which this route is being added; uses the default virtual network of the account if none is provided. + """ + return pulumi.get(self, "virtual_network_id") + + @virtual_network_id.setter + def virtual_network_id(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "virtual_network_id", value) + class TunnelRoute(pulumi.CustomResource): @overload @@ -160,6 +192,7 @@ def __init__(__self__, comment: Optional[pulumi.Input[str]] = None, network: Optional[pulumi.Input[str]] = None, tunnel_id: Optional[pulumi.Input[str]] = None, + virtual_network_id: Optional[pulumi.Input[str]] = None, __props__=None): """ Provides a resource, that manages Cloudflare tunnel routes for Zero Trust. Tunnel @@ -175,7 +208,8 @@ def __init__(__self__, account_id="c4a7362d577a6c3019a474fd6f485821", comment="New tunnel route for documentation", network="192.0.2.24/32", - tunnel_id="f70ff985-a4ef-4643-bbbc-4a0ed4fc8415") + tunnel_id="f70ff985-a4ef-4643-bbbc-4a0ed4fc8415", + virtual_network_id="bdc39a3c-3104-4c23-8ac0-9f455dda691a") ``` ```python @@ -190,23 +224,31 @@ def __init__(__self__, account_id="c4a7362d577a6c3019a474fd6f485821", tunnel_id=tunnel.id, network="192.0.2.24/32", - comment="New tunnel route for documentation") + comment="New tunnel route for documentation", + virtual_network_id="bdc39a3c-3104-4c23-8ac0-9f455dda691a") ``` ## Import - An existing tunnel route can be imported using the account ID and network CIDR. + An existing tunnel route can be imported using the account ID and network CIDR ```sh $ pulumi import cloudflare:index/tunnelRoute:TunnelRoute cloudflare_tunnel_route c4a7362d577a6c3019a474fd6f485821/192.0.2.24/32 ``` + or using account ID, network CIDR and virtual network ID. + + ```sh + $ pulumi import cloudflare:index/tunnelRoute:TunnelRoute cloudflare_tunnel_route c4a7362d577a6c3019a474fd6f485821/192.0.2.24/32/bdc39a3c-3104-4c23-8ac0-9f455dda691a + ``` + :param str resource_name: The name of the resource. :param pulumi.ResourceOptions opts: Options for the resource. :param pulumi.Input[str] account_id: The ID of the account where the tunnel route is being created. :param pulumi.Input[str] comment: Description of the tunnel route. :param pulumi.Input[str] network: The IPv4 or IPv6 network that should use this tunnel route, in CIDR notation. :param pulumi.Input[str] tunnel_id: The ID of the tunnel that will service the tunnel route. + :param pulumi.Input[str] virtual_network_id: The ID of the virtual network for which this route is being added; uses the default virtual network of the account if none is provided. """ ... @overload @@ -228,7 +270,8 @@ def __init__(__self__, account_id="c4a7362d577a6c3019a474fd6f485821", comment="New tunnel route for documentation", network="192.0.2.24/32", - tunnel_id="f70ff985-a4ef-4643-bbbc-4a0ed4fc8415") + tunnel_id="f70ff985-a4ef-4643-bbbc-4a0ed4fc8415", + virtual_network_id="bdc39a3c-3104-4c23-8ac0-9f455dda691a") ``` ```python @@ -243,17 +286,24 @@ def __init__(__self__, account_id="c4a7362d577a6c3019a474fd6f485821", tunnel_id=tunnel.id, network="192.0.2.24/32", - comment="New tunnel route for documentation") + comment="New tunnel route for documentation", + virtual_network_id="bdc39a3c-3104-4c23-8ac0-9f455dda691a") ``` ## Import - An existing tunnel route can be imported using the account ID and network CIDR. + An existing tunnel route can be imported using the account ID and network CIDR ```sh $ pulumi import cloudflare:index/tunnelRoute:TunnelRoute cloudflare_tunnel_route c4a7362d577a6c3019a474fd6f485821/192.0.2.24/32 ``` + or using account ID, network CIDR and virtual network ID. + + ```sh + $ pulumi import cloudflare:index/tunnelRoute:TunnelRoute cloudflare_tunnel_route c4a7362d577a6c3019a474fd6f485821/192.0.2.24/32/bdc39a3c-3104-4c23-8ac0-9f455dda691a + ``` + :param str resource_name: The name of the resource. :param TunnelRouteArgs args: The arguments to use to populate this resource's properties. :param pulumi.ResourceOptions opts: Options for the resource. @@ -273,6 +323,7 @@ def _internal_init(__self__, comment: Optional[pulumi.Input[str]] = None, network: Optional[pulumi.Input[str]] = None, tunnel_id: Optional[pulumi.Input[str]] = None, + virtual_network_id: Optional[pulumi.Input[str]] = None, __props__=None): if opts is None: opts = pulumi.ResourceOptions() @@ -295,6 +346,7 @@ def _internal_init(__self__, if tunnel_id is None and not opts.urn: raise TypeError("Missing required property 'tunnel_id'") __props__.__dict__["tunnel_id"] = tunnel_id + __props__.__dict__["virtual_network_id"] = virtual_network_id super(TunnelRoute, __self__).__init__( 'cloudflare:index/tunnelRoute:TunnelRoute', resource_name, @@ -308,7 +360,8 @@ def get(resource_name: str, account_id: Optional[pulumi.Input[str]] = None, comment: Optional[pulumi.Input[str]] = None, network: Optional[pulumi.Input[str]] = None, - tunnel_id: Optional[pulumi.Input[str]] = None) -> 'TunnelRoute': + tunnel_id: Optional[pulumi.Input[str]] = None, + virtual_network_id: Optional[pulumi.Input[str]] = None) -> 'TunnelRoute': """ Get an existing TunnelRoute resource's state with the given name, id, and optional extra properties used to qualify the lookup. @@ -320,6 +373,7 @@ def get(resource_name: str, :param pulumi.Input[str] comment: Description of the tunnel route. :param pulumi.Input[str] network: The IPv4 or IPv6 network that should use this tunnel route, in CIDR notation. :param pulumi.Input[str] tunnel_id: The ID of the tunnel that will service the tunnel route. + :param pulumi.Input[str] virtual_network_id: The ID of the virtual network for which this route is being added; uses the default virtual network of the account if none is provided. """ opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id)) @@ -329,6 +383,7 @@ def get(resource_name: str, __props__.__dict__["comment"] = comment __props__.__dict__["network"] = network __props__.__dict__["tunnel_id"] = tunnel_id + __props__.__dict__["virtual_network_id"] = virtual_network_id return TunnelRoute(resource_name, opts=opts, __props__=__props__) @property @@ -363,3 +418,11 @@ def tunnel_id(self) -> pulumi.Output[str]: """ return pulumi.get(self, "tunnel_id") + @property + @pulumi.getter(name="virtualNetworkId") + def virtual_network_id(self) -> pulumi.Output[Optional[str]]: + """ + The ID of the virtual network for which this route is being added; uses the default virtual network of the account if none is provided. + """ + return pulumi.get(self, "virtual_network_id") + diff --git a/sdk/python/pulumi_cloudflare/tunnel_virtual_network.py b/sdk/python/pulumi_cloudflare/tunnel_virtual_network.py new file mode 100644 index 00000000..581b92cd --- /dev/null +++ b/sdk/python/pulumi_cloudflare/tunnel_virtual_network.py @@ -0,0 +1,334 @@ +# coding=utf-8 +# *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. *** +# *** Do not edit by hand unless you're certain you know what you are doing! *** + +import warnings +import pulumi +import pulumi.runtime +from typing import Any, Mapping, Optional, Sequence, Union, overload +from . import _utilities + +__all__ = ['TunnelVirtualNetworkArgs', 'TunnelVirtualNetwork'] + +@pulumi.input_type +class TunnelVirtualNetworkArgs: + def __init__(__self__, *, + account_id: pulumi.Input[str], + name: pulumi.Input[str], + comment: Optional[pulumi.Input[str]] = None, + is_default_network: Optional[pulumi.Input[bool]] = None): + """ + The set of arguments for constructing a TunnelVirtualNetwork resource. + :param pulumi.Input[str] account_id: The ID of the account where the tunnel virtual network is being created. + :param pulumi.Input[str] name: A user-friendly name chosen when the virtual network is created. + :param pulumi.Input[str] comment: Description of the tunnel virtual network. + :param pulumi.Input[bool] is_default_network: Whether this virtual network is the default one for the account. This means IP Routes belong to this virtual network and Teams Clients in the account route through this virtual network, unless specified otherwise for each case. + """ + pulumi.set(__self__, "account_id", account_id) + pulumi.set(__self__, "name", name) + if comment is not None: + pulumi.set(__self__, "comment", comment) + if is_default_network is not None: + pulumi.set(__self__, "is_default_network", is_default_network) + + @property + @pulumi.getter(name="accountId") + def account_id(self) -> pulumi.Input[str]: + """ + The ID of the account where the tunnel virtual network is being created. + """ + return pulumi.get(self, "account_id") + + @account_id.setter + def account_id(self, value: pulumi.Input[str]): + pulumi.set(self, "account_id", value) + + @property + @pulumi.getter + def name(self) -> pulumi.Input[str]: + """ + A user-friendly name chosen when the virtual network is created. + """ + return pulumi.get(self, "name") + + @name.setter + def name(self, value: pulumi.Input[str]): + pulumi.set(self, "name", value) + + @property + @pulumi.getter + def comment(self) -> Optional[pulumi.Input[str]]: + """ + Description of the tunnel virtual network. + """ + return pulumi.get(self, "comment") + + @comment.setter + def comment(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "comment", value) + + @property + @pulumi.getter(name="isDefaultNetwork") + def is_default_network(self) -> Optional[pulumi.Input[bool]]: + """ + Whether this virtual network is the default one for the account. This means IP Routes belong to this virtual network and Teams Clients in the account route through this virtual network, unless specified otherwise for each case. + """ + return pulumi.get(self, "is_default_network") + + @is_default_network.setter + def is_default_network(self, value: Optional[pulumi.Input[bool]]): + pulumi.set(self, "is_default_network", value) + + +@pulumi.input_type +class _TunnelVirtualNetworkState: + def __init__(__self__, *, + account_id: Optional[pulumi.Input[str]] = None, + comment: Optional[pulumi.Input[str]] = None, + is_default_network: Optional[pulumi.Input[bool]] = None, + name: Optional[pulumi.Input[str]] = None): + """ + Input properties used for looking up and filtering TunnelVirtualNetwork resources. + :param pulumi.Input[str] account_id: The ID of the account where the tunnel virtual network is being created. + :param pulumi.Input[str] comment: Description of the tunnel virtual network. + :param pulumi.Input[bool] is_default_network: Whether this virtual network is the default one for the account. This means IP Routes belong to this virtual network and Teams Clients in the account route through this virtual network, unless specified otherwise for each case. + :param pulumi.Input[str] name: A user-friendly name chosen when the virtual network is created. + """ + if account_id is not None: + pulumi.set(__self__, "account_id", account_id) + if comment is not None: + pulumi.set(__self__, "comment", comment) + if is_default_network is not None: + pulumi.set(__self__, "is_default_network", is_default_network) + if name is not None: + pulumi.set(__self__, "name", name) + + @property + @pulumi.getter(name="accountId") + def account_id(self) -> Optional[pulumi.Input[str]]: + """ + The ID of the account where the tunnel virtual network is being created. + """ + return pulumi.get(self, "account_id") + + @account_id.setter + def account_id(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "account_id", value) + + @property + @pulumi.getter + def comment(self) -> Optional[pulumi.Input[str]]: + """ + Description of the tunnel virtual network. + """ + return pulumi.get(self, "comment") + + @comment.setter + def comment(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "comment", value) + + @property + @pulumi.getter(name="isDefaultNetwork") + def is_default_network(self) -> Optional[pulumi.Input[bool]]: + """ + Whether this virtual network is the default one for the account. This means IP Routes belong to this virtual network and Teams Clients in the account route through this virtual network, unless specified otherwise for each case. + """ + return pulumi.get(self, "is_default_network") + + @is_default_network.setter + def is_default_network(self, value: Optional[pulumi.Input[bool]]): + pulumi.set(self, "is_default_network", value) + + @property + @pulumi.getter + def name(self) -> Optional[pulumi.Input[str]]: + """ + A user-friendly name chosen when the virtual network is created. + """ + return pulumi.get(self, "name") + + @name.setter + def name(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "name", value) + + +class TunnelVirtualNetwork(pulumi.CustomResource): + @overload + def __init__(__self__, + resource_name: str, + opts: Optional[pulumi.ResourceOptions] = None, + account_id: Optional[pulumi.Input[str]] = None, + comment: Optional[pulumi.Input[str]] = None, + is_default_network: Optional[pulumi.Input[bool]] = None, + name: Optional[pulumi.Input[str]] = None, + __props__=None): + """ + Provides a resource, that manages Cloudflare tunnel virtual networks for Zero Trust. Tunnel + virtual networks are used for segregation of Tunnel IP Routes via Virtualized Networks to + handle overlapping private IPs in your origins.. + + ## Example Usage + + ```python + import pulumi + import pulumi_cloudflare as cloudflare + + example = cloudflare.TunnelVirtualNetwork("example", + account_id="c4a7362d577a6c3019a474fd6f485821", + comment="New tunnel virtual network for documentation", + name="vnet-for-documentation") + ``` + + ## Import + + An existing tunnel virtual networks can be imported using the account ID and virtual network ID. + + ```sh + $ pulumi import cloudflare:index/tunnelVirtualNetwork:TunnelVirtualNetwork cloudflare_tunnel_virtual_network c4a7362d577a6c3019a474fd6f485821/3c8ff8af-b487-45bd-89e3-4c85a1532600 + ``` + + :param str resource_name: The name of the resource. + :param pulumi.ResourceOptions opts: Options for the resource. + :param pulumi.Input[str] account_id: The ID of the account where the tunnel virtual network is being created. + :param pulumi.Input[str] comment: Description of the tunnel virtual network. + :param pulumi.Input[bool] is_default_network: Whether this virtual network is the default one for the account. This means IP Routes belong to this virtual network and Teams Clients in the account route through this virtual network, unless specified otherwise for each case. + :param pulumi.Input[str] name: A user-friendly name chosen when the virtual network is created. + """ + ... + @overload + def __init__(__self__, + resource_name: str, + args: TunnelVirtualNetworkArgs, + opts: Optional[pulumi.ResourceOptions] = None): + """ + Provides a resource, that manages Cloudflare tunnel virtual networks for Zero Trust. Tunnel + virtual networks are used for segregation of Tunnel IP Routes via Virtualized Networks to + handle overlapping private IPs in your origins.. + + ## Example Usage + + ```python + import pulumi + import pulumi_cloudflare as cloudflare + + example = cloudflare.TunnelVirtualNetwork("example", + account_id="c4a7362d577a6c3019a474fd6f485821", + comment="New tunnel virtual network for documentation", + name="vnet-for-documentation") + ``` + + ## Import + + An existing tunnel virtual networks can be imported using the account ID and virtual network ID. + + ```sh + $ pulumi import cloudflare:index/tunnelVirtualNetwork:TunnelVirtualNetwork cloudflare_tunnel_virtual_network c4a7362d577a6c3019a474fd6f485821/3c8ff8af-b487-45bd-89e3-4c85a1532600 + ``` + + :param str resource_name: The name of the resource. + :param TunnelVirtualNetworkArgs args: The arguments to use to populate this resource's properties. + :param pulumi.ResourceOptions opts: Options for the resource. + """ + ... + def __init__(__self__, resource_name: str, *args, **kwargs): + resource_args, opts = _utilities.get_resource_args_opts(TunnelVirtualNetworkArgs, pulumi.ResourceOptions, *args, **kwargs) + if resource_args is not None: + __self__._internal_init(resource_name, opts, **resource_args.__dict__) + else: + __self__._internal_init(resource_name, *args, **kwargs) + + def _internal_init(__self__, + resource_name: str, + opts: Optional[pulumi.ResourceOptions] = None, + account_id: Optional[pulumi.Input[str]] = None, + comment: Optional[pulumi.Input[str]] = None, + is_default_network: Optional[pulumi.Input[bool]] = None, + name: Optional[pulumi.Input[str]] = None, + __props__=None): + if opts is None: + opts = pulumi.ResourceOptions() + if not isinstance(opts, pulumi.ResourceOptions): + raise TypeError('Expected resource options to be a ResourceOptions instance') + if opts.version is None: + opts.version = _utilities.get_version() + if opts.id is None: + if __props__ is not None: + raise TypeError('__props__ is only valid when passed in combination with a valid opts.id to get an existing resource') + __props__ = TunnelVirtualNetworkArgs.__new__(TunnelVirtualNetworkArgs) + + if account_id is None and not opts.urn: + raise TypeError("Missing required property 'account_id'") + __props__.__dict__["account_id"] = account_id + __props__.__dict__["comment"] = comment + __props__.__dict__["is_default_network"] = is_default_network + if name is None and not opts.urn: + raise TypeError("Missing required property 'name'") + __props__.__dict__["name"] = name + super(TunnelVirtualNetwork, __self__).__init__( + 'cloudflare:index/tunnelVirtualNetwork:TunnelVirtualNetwork', + resource_name, + __props__, + opts) + + @staticmethod + def get(resource_name: str, + id: pulumi.Input[str], + opts: Optional[pulumi.ResourceOptions] = None, + account_id: Optional[pulumi.Input[str]] = None, + comment: Optional[pulumi.Input[str]] = None, + is_default_network: Optional[pulumi.Input[bool]] = None, + name: Optional[pulumi.Input[str]] = None) -> 'TunnelVirtualNetwork': + """ + Get an existing TunnelVirtualNetwork resource's state with the given name, id, and optional extra + properties used to qualify the lookup. + + :param str resource_name: The unique name of the resulting resource. + :param pulumi.Input[str] id: The unique provider ID of the resource to lookup. + :param pulumi.ResourceOptions opts: Options for the resource. + :param pulumi.Input[str] account_id: The ID of the account where the tunnel virtual network is being created. + :param pulumi.Input[str] comment: Description of the tunnel virtual network. + :param pulumi.Input[bool] is_default_network: Whether this virtual network is the default one for the account. This means IP Routes belong to this virtual network and Teams Clients in the account route through this virtual network, unless specified otherwise for each case. + :param pulumi.Input[str] name: A user-friendly name chosen when the virtual network is created. + """ + opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id)) + + __props__ = _TunnelVirtualNetworkState.__new__(_TunnelVirtualNetworkState) + + __props__.__dict__["account_id"] = account_id + __props__.__dict__["comment"] = comment + __props__.__dict__["is_default_network"] = is_default_network + __props__.__dict__["name"] = name + return TunnelVirtualNetwork(resource_name, opts=opts, __props__=__props__) + + @property + @pulumi.getter(name="accountId") + def account_id(self) -> pulumi.Output[str]: + """ + The ID of the account where the tunnel virtual network is being created. + """ + return pulumi.get(self, "account_id") + + @property + @pulumi.getter + def comment(self) -> pulumi.Output[Optional[str]]: + """ + Description of the tunnel virtual network. + """ + return pulumi.get(self, "comment") + + @property + @pulumi.getter(name="isDefaultNetwork") + def is_default_network(self) -> pulumi.Output[Optional[bool]]: + """ + Whether this virtual network is the default one for the account. This means IP Routes belong to this virtual network and Teams Clients in the account route through this virtual network, unless specified otherwise for each case. + """ + return pulumi.get(self, "is_default_network") + + @property + @pulumi.getter + def name(self) -> pulumi.Output[str]: + """ + A user-friendly name chosen when the virtual network is created. + """ + return pulumi.get(self, "name") + diff --git a/sdk/python/pulumi_cloudflare/waiting_room.py b/sdk/python/pulumi_cloudflare/waiting_room.py index 07f434ed..168dbb1a 100644 --- a/sdk/python/pulumi_cloudflare/waiting_room.py +++ b/sdk/python/pulumi_cloudflare/waiting_room.py @@ -19,6 +19,7 @@ def __init__(__self__, *, total_active_users: pulumi.Input[int], zone_id: pulumi.Input[str], custom_page_html: Optional[pulumi.Input[str]] = None, + default_template_language: Optional[pulumi.Input[str]] = None, description: Optional[pulumi.Input[str]] = None, disable_session_renewal: Optional[pulumi.Input[bool]] = None, json_response_enabled: Optional[pulumi.Input[bool]] = None, @@ -34,6 +35,7 @@ def __init__(__self__, *, :param pulumi.Input[int] total_active_users: The total number of active user sessions on the route at a point in time. :param pulumi.Input[str] zone_id: The DNS zone ID to apply to. :param pulumi.Input[str] custom_page_html: This a templated html file that will be rendered at the edge. + :param pulumi.Input[str] default_template_language: The language to use for the default waiting room page (refer to the nested schema). :param pulumi.Input[str] description: A description to let users add more details about the waiting room. :param pulumi.Input[bool] disable_session_renewal: Disables automatic renewal of session cookies. Default: false. :param pulumi.Input[bool] json_response_enabled: If true, requests to the waiting room with the header Accept: application/json will receive a JSON response object. @@ -49,6 +51,8 @@ def __init__(__self__, *, pulumi.set(__self__, "zone_id", zone_id) if custom_page_html is not None: pulumi.set(__self__, "custom_page_html", custom_page_html) + if default_template_language is not None: + pulumi.set(__self__, "default_template_language", default_template_language) if description is not None: pulumi.set(__self__, "description", description) if disable_session_renewal is not None: @@ -136,6 +140,18 @@ def custom_page_html(self) -> Optional[pulumi.Input[str]]: def custom_page_html(self, value: Optional[pulumi.Input[str]]): pulumi.set(self, "custom_page_html", value) + @property + @pulumi.getter(name="defaultTemplateLanguage") + def default_template_language(self) -> Optional[pulumi.Input[str]]: + """ + The language to use for the default waiting room page (refer to the nested schema). + """ + return pulumi.get(self, "default_template_language") + + @default_template_language.setter + def default_template_language(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "default_template_language", value) + @property @pulumi.getter def description(self) -> Optional[pulumi.Input[str]]: @@ -225,6 +241,7 @@ def suspended(self, value: Optional[pulumi.Input[bool]]): class _WaitingRoomState: def __init__(__self__, *, custom_page_html: Optional[pulumi.Input[str]] = None, + default_template_language: Optional[pulumi.Input[str]] = None, description: Optional[pulumi.Input[str]] = None, disable_session_renewal: Optional[pulumi.Input[bool]] = None, host: Optional[pulumi.Input[str]] = None, @@ -240,6 +257,7 @@ def __init__(__self__, *, """ Input properties used for looking up and filtering WaitingRoom resources. :param pulumi.Input[str] custom_page_html: This a templated html file that will be rendered at the edge. + :param pulumi.Input[str] default_template_language: The language to use for the default waiting room page (refer to the nested schema). :param pulumi.Input[str] description: A description to let users add more details about the waiting room. :param pulumi.Input[bool] disable_session_renewal: Disables automatic renewal of session cookies. Default: false. :param pulumi.Input[str] host: Host name for which the waiting room will be applied (no wildcards). @@ -255,6 +273,8 @@ def __init__(__self__, *, """ if custom_page_html is not None: pulumi.set(__self__, "custom_page_html", custom_page_html) + if default_template_language is not None: + pulumi.set(__self__, "default_template_language", default_template_language) if description is not None: pulumi.set(__self__, "description", description) if disable_session_renewal is not None: @@ -292,6 +312,18 @@ def custom_page_html(self) -> Optional[pulumi.Input[str]]: def custom_page_html(self, value: Optional[pulumi.Input[str]]): pulumi.set(self, "custom_page_html", value) + @property + @pulumi.getter(name="defaultTemplateLanguage") + def default_template_language(self) -> Optional[pulumi.Input[str]]: + """ + The language to use for the default waiting room page (refer to the nested schema). + """ + return pulumi.get(self, "default_template_language") + + @default_template_language.setter + def default_template_language(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "default_template_language", value) + @property @pulumi.getter def description(self) -> Optional[pulumi.Input[str]]: @@ -443,6 +475,7 @@ def __init__(__self__, resource_name: str, opts: Optional[pulumi.ResourceOptions] = None, custom_page_html: Optional[pulumi.Input[str]] = None, + default_template_language: Optional[pulumi.Input[str]] = None, description: Optional[pulumi.Input[str]] = None, disable_session_renewal: Optional[pulumi.Input[bool]] = None, host: Optional[pulumi.Input[str]] = None, @@ -487,6 +520,7 @@ def __init__(__self__, :param str resource_name: The name of the resource. :param pulumi.ResourceOptions opts: Options for the resource. :param pulumi.Input[str] custom_page_html: This a templated html file that will be rendered at the edge. + :param pulumi.Input[str] default_template_language: The language to use for the default waiting room page (refer to the nested schema). :param pulumi.Input[str] description: A description to let users add more details about the waiting room. :param pulumi.Input[bool] disable_session_renewal: Disables automatic renewal of session cookies. Default: false. :param pulumi.Input[str] host: Host name for which the waiting room will be applied (no wildcards). @@ -550,6 +584,7 @@ def _internal_init(__self__, resource_name: str, opts: Optional[pulumi.ResourceOptions] = None, custom_page_html: Optional[pulumi.Input[str]] = None, + default_template_language: Optional[pulumi.Input[str]] = None, description: Optional[pulumi.Input[str]] = None, disable_session_renewal: Optional[pulumi.Input[bool]] = None, host: Optional[pulumi.Input[str]] = None, @@ -575,6 +610,7 @@ def _internal_init(__self__, __props__ = WaitingRoomArgs.__new__(WaitingRoomArgs) __props__.__dict__["custom_page_html"] = custom_page_html + __props__.__dict__["default_template_language"] = default_template_language __props__.__dict__["description"] = description __props__.__dict__["disable_session_renewal"] = disable_session_renewal if host is None and not opts.urn: @@ -608,6 +644,7 @@ def get(resource_name: str, id: pulumi.Input[str], opts: Optional[pulumi.ResourceOptions] = None, custom_page_html: Optional[pulumi.Input[str]] = None, + default_template_language: Optional[pulumi.Input[str]] = None, description: Optional[pulumi.Input[str]] = None, disable_session_renewal: Optional[pulumi.Input[bool]] = None, host: Optional[pulumi.Input[str]] = None, @@ -628,6 +665,7 @@ def get(resource_name: str, :param pulumi.Input[str] id: The unique provider ID of the resource to lookup. :param pulumi.ResourceOptions opts: Options for the resource. :param pulumi.Input[str] custom_page_html: This a templated html file that will be rendered at the edge. + :param pulumi.Input[str] default_template_language: The language to use for the default waiting room page (refer to the nested schema). :param pulumi.Input[str] description: A description to let users add more details about the waiting room. :param pulumi.Input[bool] disable_session_renewal: Disables automatic renewal of session cookies. Default: false. :param pulumi.Input[str] host: Host name for which the waiting room will be applied (no wildcards). @@ -646,6 +684,7 @@ def get(resource_name: str, __props__ = _WaitingRoomState.__new__(_WaitingRoomState) __props__.__dict__["custom_page_html"] = custom_page_html + __props__.__dict__["default_template_language"] = default_template_language __props__.__dict__["description"] = description __props__.__dict__["disable_session_renewal"] = disable_session_renewal __props__.__dict__["host"] = host @@ -668,6 +707,14 @@ def custom_page_html(self) -> pulumi.Output[Optional[str]]: """ return pulumi.get(self, "custom_page_html") + @property + @pulumi.getter(name="defaultTemplateLanguage") + def default_template_language(self) -> pulumi.Output[Optional[str]]: + """ + The language to use for the default waiting room page (refer to the nested schema). + """ + return pulumi.get(self, "default_template_language") + @property @pulumi.getter def description(self) -> pulumi.Output[Optional[str]]: diff --git a/sdk/python/pulumi_cloudflare/waiting_room_event.py b/sdk/python/pulumi_cloudflare/waiting_room_event.py index 9b576f55..ea57f4f1 100644 --- a/sdk/python/pulumi_cloudflare/waiting_room_event.py +++ b/sdk/python/pulumi_cloudflare/waiting_room_event.py @@ -549,6 +549,20 @@ def __init__(__self__, """ Provides a Cloudflare Waiting Room Event resource. + ## Example Usage + + ```python + import pulumi + import pulumi_cloudflare as cloudflare + + example = cloudflare.WaitingRoomEvent("example", + event_end_time="2006-01-02T20:04:05Z", + event_start_time="2006-01-02T15:04:05Z", + name="foo", + waiting_room_id="d41d8cd98f00b204e9800998ecf8427e", + zone_id="ae36f999674d196762efcc5abb06b345") + ``` + ## Import Waiting room events can be imported using a composite ID formed of zone ID, waiting room ID, and waiting room event ID, e.g. @@ -586,6 +600,20 @@ def __init__(__self__, """ Provides a Cloudflare Waiting Room Event resource. + ## Example Usage + + ```python + import pulumi + import pulumi_cloudflare as cloudflare + + example = cloudflare.WaitingRoomEvent("example", + event_end_time="2006-01-02T20:04:05Z", + event_start_time="2006-01-02T15:04:05Z", + name="foo", + waiting_room_id="d41d8cd98f00b204e9800998ecf8427e", + zone_id="ae36f999674d196762efcc5abb06b345") + ``` + ## Import Waiting room events can be imported using a composite ID formed of zone ID, waiting room ID, and waiting room event ID, e.g.