# Environments ## List zone environments `client.Zones.Environments.List(ctx, query) (*EnvironmentListResponse, error)` **get** `/zones/{zone_id}/environments` List zone environments ### Parameters - `query EnvironmentListParams` - `ZoneID param.Field[string]` Identifier of the zone. ### Returns - `type EnvironmentListResponse struct{…}` - `Environments []EnvironmentListResponseEnvironment` - `Expression string` - `LockedOnDeployment bool` - `Name string` - `Position ListCursor` - `After string` - `Before string` - `Ref string` - `Version int64` - `HTTPApplicationID string` ### Example ```go package main import ( "context" "fmt" "github.com/cloudflare/cloudflare-go" "github.com/cloudflare/cloudflare-go/option" "github.com/cloudflare/cloudflare-go/zones" ) func main() { client := cloudflare.NewClient( option.WithAPIToken("Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY"), ) environments, err := client.Zones.Environments.List(context.TODO(), zones.EnvironmentListParams{ ZoneID: cloudflare.F("zone_id"), }) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", environments.Environments) } ``` #### Response ```json { "errors": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "messages": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "result": { "environments": [ { "expression": "expression", "locked_on_deployment": true, "name": "name", "position": { "after": "yyy", "before": "xxx" }, "ref": "ref", "version": 0, "http_application_id": "http_application_id" } ] }, "success": true } ``` ## Create zone environments `client.Zones.Environments.New(ctx, params) (*EnvironmentNewResponse, error)` **post** `/zones/{zone_id}/environments` Create zone environments ### Parameters - `params EnvironmentNewParams` - `ZoneID param.Field[string]` Path param: Identifier of the zone. - `Environments param.Field[[]EnvironmentNewParamsEnvironment]` Body param - `Expression string` - `LockedOnDeployment bool` - `Name string` - `Position ListCursor` - `After string` - `Before string` - `Ref string` - `Version int64` - `HTTPApplicationID string` ### Returns - `type EnvironmentNewResponse struct{…}` - `Environments []EnvironmentNewResponseEnvironment` - `Expression string` - `LockedOnDeployment bool` - `Name string` - `Position ListCursor` - `After string` - `Before string` - `Ref string` - `Version int64` - `HTTPApplicationID string` ### Example ```go package main import ( "context" "fmt" "github.com/cloudflare/cloudflare-go" "github.com/cloudflare/cloudflare-go/option" "github.com/cloudflare/cloudflare-go/rules" "github.com/cloudflare/cloudflare-go/zones" ) func main() { client := cloudflare.NewClient( option.WithAPIToken("Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY"), ) environment, err := client.Zones.Environments.New(context.TODO(), zones.EnvironmentNewParams{ ZoneID: cloudflare.F("zone_id"), Environments: cloudflare.F([]zones.EnvironmentNewParamsEnvironment{zones.EnvironmentNewParamsEnvironment{ Expression: cloudflare.F("expression"), LockedOnDeployment: cloudflare.F(true), Name: cloudflare.F("name"), Position: cloudflare.F(rules.ListCursorParam{ }), Ref: cloudflare.F("ref"), Version: cloudflare.F(int64(0)), }}), }) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", environment.Environments) } ``` #### Response ```json { "errors": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "messages": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "result": { "environments": [ { "expression": "expression", "locked_on_deployment": true, "name": "name", "position": { "after": "yyy", "before": "xxx" }, "ref": "ref", "version": 0, "http_application_id": "http_application_id" } ] }, "success": true } ``` ## Upsert zone environments `client.Zones.Environments.Update(ctx, params) (*EnvironmentUpdateResponse, error)` **put** `/zones/{zone_id}/environments` Upsert zone environments ### Parameters - `params EnvironmentUpdateParams` - `ZoneID param.Field[string]` Path param: Identifier of the zone. - `Environments param.Field[[]EnvironmentUpdateParamsEnvironment]` Body param - `Expression string` - `LockedOnDeployment bool` - `Name string` - `Position ListCursor` - `After string` - `Before string` - `Ref string` - `Version int64` - `HTTPApplicationID string` ### Returns - `type EnvironmentUpdateResponse struct{…}` - `Environments []EnvironmentUpdateResponseEnvironment` - `Expression string` - `LockedOnDeployment bool` - `Name string` - `Position ListCursor` - `After string` - `Before string` - `Ref string` - `Version int64` - `HTTPApplicationID string` ### Example ```go package main import ( "context" "fmt" "github.com/cloudflare/cloudflare-go" "github.com/cloudflare/cloudflare-go/option" "github.com/cloudflare/cloudflare-go/rules" "github.com/cloudflare/cloudflare-go/zones" ) func main() { client := cloudflare.NewClient( option.WithAPIToken("Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY"), ) environment, err := client.Zones.Environments.Update(context.TODO(), zones.EnvironmentUpdateParams{ ZoneID: cloudflare.F("zone_id"), Environments: cloudflare.F([]zones.EnvironmentUpdateParamsEnvironment{zones.EnvironmentUpdateParamsEnvironment{ Expression: cloudflare.F("expression"), LockedOnDeployment: cloudflare.F(true), Name: cloudflare.F("name"), Position: cloudflare.F(rules.ListCursorParam{ }), Ref: cloudflare.F("ref"), Version: cloudflare.F(int64(0)), }}), }) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", environment.Environments) } ``` #### Response ```json { "errors": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "messages": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "result": { "environments": [ { "expression": "expression", "locked_on_deployment": true, "name": "name", "position": { "after": "yyy", "before": "xxx" }, "ref": "ref", "version": 0, "http_application_id": "http_application_id" } ] }, "success": true } ``` ## Partially update zone environments `client.Zones.Environments.Edit(ctx, params) (*EnvironmentEditResponse, error)` **patch** `/zones/{zone_id}/environments` Partially update zone environments ### Parameters - `params EnvironmentEditParams` - `ZoneID param.Field[string]` Path param: Identifier of the zone. - `Environments param.Field[[]EnvironmentEditParamsEnvironment]` Body param - `Expression string` - `LockedOnDeployment bool` - `Name string` - `Position ListCursor` - `After string` - `Before string` - `Ref string` - `Version int64` - `HTTPApplicationID string` ### Returns - `type EnvironmentEditResponse struct{…}` - `Environments []EnvironmentEditResponseEnvironment` - `Expression string` - `LockedOnDeployment bool` - `Name string` - `Position ListCursor` - `After string` - `Before string` - `Ref string` - `Version int64` - `HTTPApplicationID string` ### Example ```go package main import ( "context" "fmt" "github.com/cloudflare/cloudflare-go" "github.com/cloudflare/cloudflare-go/option" "github.com/cloudflare/cloudflare-go/rules" "github.com/cloudflare/cloudflare-go/zones" ) func main() { client := cloudflare.NewClient( option.WithAPIToken("Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY"), ) response, err := client.Zones.Environments.Edit(context.TODO(), zones.EnvironmentEditParams{ ZoneID: cloudflare.F("zone_id"), Environments: cloudflare.F([]zones.EnvironmentEditParamsEnvironment{zones.EnvironmentEditParamsEnvironment{ Expression: cloudflare.F("expression"), LockedOnDeployment: cloudflare.F(true), Name: cloudflare.F("name"), Position: cloudflare.F(rules.ListCursorParam{ }), Ref: cloudflare.F("ref"), Version: cloudflare.F(int64(0)), }}), }) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", response.Environments) } ``` #### Response ```json { "errors": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "messages": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "result": { "environments": [ { "expression": "expression", "locked_on_deployment": true, "name": "name", "position": { "after": "yyy", "before": "xxx" }, "ref": "ref", "version": 0, "http_application_id": "http_application_id" } ] }, "success": true } ``` ## Delete zone environment `client.Zones.Environments.Delete(ctx, environmentID, body) (*EnvironmentDeleteResponse, error)` **delete** `/zones/{zone_id}/environments/{environment_id}` Delete zone environment ### Parameters - `environmentID string` - `body EnvironmentDeleteParams` - `ZoneID param.Field[string]` Identifier of the zone. ### Returns - `type EnvironmentDeleteResponse struct{…}` - `Environments []EnvironmentDeleteResponseEnvironment` - `Expression string` - `LockedOnDeployment bool` - `Name string` - `Position ListCursor` - `After string` - `Before string` - `Ref string` - `Version int64` - `HTTPApplicationID string` ### Example ```go package main import ( "context" "fmt" "github.com/cloudflare/cloudflare-go" "github.com/cloudflare/cloudflare-go/option" "github.com/cloudflare/cloudflare-go/zones" ) func main() { client := cloudflare.NewClient( option.WithAPIToken("Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY"), ) environment, err := client.Zones.Environments.Delete( context.TODO(), "environment_id", zones.EnvironmentDeleteParams{ ZoneID: cloudflare.F("zone_id"), }, ) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", environment.Environments) } ``` #### Response ```json { "errors": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "messages": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "result": { "environments": [ { "expression": "expression", "locked_on_deployment": true, "name": "name", "position": { "after": "yyy", "before": "xxx" }, "ref": "ref", "version": 0, "http_application_id": "http_application_id" } ] }, "success": true } ``` ## Roll back zone environment `client.Zones.Environments.Rollback(ctx, environmentID, body) (*EnvironmentRollbackResponse, error)` **post** `/zones/{zone_id}/environments/{environment_id}/rollback` Roll back zone environment ### Parameters - `environmentID string` - `body EnvironmentRollbackParams` - `ZoneID param.Field[string]` Identifier of the zone. ### Returns - `type EnvironmentRollbackResponse struct{…}` - `Environments []EnvironmentRollbackResponseEnvironment` - `Expression string` - `LockedOnDeployment bool` - `Name string` - `Position ListCursor` - `After string` - `Before string` - `Ref string` - `Version int64` - `HTTPApplicationID string` ### Example ```go package main import ( "context" "fmt" "github.com/cloudflare/cloudflare-go" "github.com/cloudflare/cloudflare-go/option" "github.com/cloudflare/cloudflare-go/zones" ) func main() { client := cloudflare.NewClient( option.WithAPIToken("Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY"), ) response, err := client.Zones.Environments.Rollback( context.TODO(), "environment_id", zones.EnvironmentRollbackParams{ ZoneID: cloudflare.F("zone_id"), }, ) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", response.Environments) } ``` #### Response ```json { "errors": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "messages": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "result": { "environments": [ { "expression": "expression", "locked_on_deployment": true, "name": "name", "position": { "after": "yyy", "before": "xxx" }, "ref": "ref", "version": 0, "http_application_id": "http_application_id" } ] }, "success": true } ```