diff --git a/api/overlay.yaml b/api/overlay.yaml index b028333bd..9418cccd2 100644 --- a/api/overlay.yaml +++ b/api/overlay.yaml @@ -32,6 +32,9 @@ actions: - target: $.components.schemas.*.properties.connectionString description: Removes deprecated field that conflicts with naming convention remove: true +- target: $.components.schemas.*.properties.region_selection.discriminator + description: Replaces discriminated union with concrete type + remove: true - target: $.components.schemas.*.properties.private_jwk.discriminator description: Replaces discriminated union with concrete type remove: true diff --git a/cmd/projects.go b/cmd/projects.go index 1a60b6170..fcf539af2 100644 --- a/cmd/projects.go +++ b/cmd/projects.go @@ -14,6 +14,7 @@ import ( "github.com/supabase/cli/internal/utils" "github.com/supabase/cli/internal/utils/flags" "github.com/supabase/cli/pkg/api" + "github.com/supabase/cli/pkg/cast" "golang.org/x/term" ) @@ -78,7 +79,7 @@ var ( Name: projectName, OrganizationId: orgId, DbPass: dbPassword, - Region: api.V1CreateProjectBodyRegion(region.Value), + Region: cast.Ptr(api.V1CreateProjectBodyRegion(region.Value)), } if cmd.Flags().Changed("size") { body.DesiredInstanceSize = (*api.V1CreateProjectBodyDesiredInstanceSize)(&size.Value) diff --git a/internal/projects/create/create.go b/internal/projects/create/create.go index 0463aa610..6be3fc8ab 100644 --- a/internal/projects/create/create.go +++ b/internal/projects/create/create.go @@ -74,11 +74,13 @@ func promptMissingParams(ctx context.Context, body *api.V1CreateProjectBody) err } fmt.Fprintln(os.Stderr, printKeyValue("Selected org-id", body.OrganizationId)) } - if len(body.Region) == 0 { - if body.Region, err = promptProjectRegion(ctx); err != nil { + if body.Region == nil || len(*body.Region) == 0 { + region, err := promptProjectRegion(ctx) + if err != nil { return err } - fmt.Fprintln(os.Stderr, printKeyValue("Selected region", string(body.Region))) + body.Region = ®ion + fmt.Fprintln(os.Stderr, printKeyValue("Selected region", string(region))) } if len(body.DbPass) == 0 { body.DbPass = flags.PromptPassword(os.Stdin) diff --git a/internal/projects/create/create_test.go b/internal/projects/create/create_test.go index c67c7a35e..5e5363ded 100644 --- a/internal/projects/create/create_test.go +++ b/internal/projects/create/create_test.go @@ -11,6 +11,7 @@ import ( "github.com/supabase/cli/internal/testing/apitest" "github.com/supabase/cli/internal/utils" "github.com/supabase/cli/pkg/api" + "github.com/supabase/cli/pkg/cast" ) func TestProjectCreateCommand(t *testing.T) { @@ -18,7 +19,7 @@ func TestProjectCreateCommand(t *testing.T) { Name: "Test Project", OrganizationId: "combined-fuchsia-lion", DbPass: "redacted", - Region: api.V1CreateProjectBodyRegionUsWest1, + Region: cast.Ptr(api.V1CreateProjectBodyRegionUsWest1), } t.Run("creates a new project", func(t *testing.T) { @@ -38,7 +39,7 @@ func TestProjectCreateCommand(t *testing.T) { Id: apitest.RandomProjectRef(), OrganizationId: params.OrganizationId, Name: params.Name, - Region: string(params.Region), + Region: string(*params.Region), CreatedAt: "2022-04-25T02:14:55.906498Z", }) // Run test diff --git a/pkg/api/client.gen.go b/pkg/api/client.gen.go index e3513b91a..ac1f7d1c1 100644 --- a/pkg/api/client.gen.go +++ b/pkg/api/client.gen.go @@ -163,6 +163,9 @@ type ClientInterface interface { V1CreateAProject(ctx context.Context, body V1CreateAProjectJSONRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) + // V1GetAvailableRegions request + V1GetAvailableRegions(ctx context.Context, params *V1GetAvailableRegionsParams, reqEditors ...RequestEditorFn) (*http.Response, error) + // V1DeleteAProject request V1DeleteAProject(ctx context.Context, ref string, reqEditors ...RequestEditorFn) (*http.Response, error) @@ -933,6 +936,18 @@ func (c *Client) V1CreateAProject(ctx context.Context, body V1CreateAProjectJSON return c.Client.Do(req) } +func (c *Client) V1GetAvailableRegions(ctx context.Context, params *V1GetAvailableRegionsParams, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewV1GetAvailableRegionsRequest(c.Server, params) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if err := c.applyEditors(ctx, req, reqEditors); err != nil { + return nil, err + } + return c.Client.Do(req) +} + func (c *Client) V1DeleteAProject(ctx context.Context, ref string, reqEditors ...RequestEditorFn) (*http.Response, error) { req, err := NewV1DeleteAProjectRequest(c.Server, ref) if err != nil { @@ -3869,6 +3884,67 @@ func NewV1CreateAProjectRequestWithBody(server string, contentType string, body return req, nil } +// NewV1GetAvailableRegionsRequest generates requests for V1GetAvailableRegions +func NewV1GetAvailableRegionsRequest(server string, params *V1GetAvailableRegionsParams) (*http.Request, error) { + var err error + + serverURL, err := url.Parse(server) + if err != nil { + return nil, err + } + + operationPath := fmt.Sprintf("/v1/projects/available-regions") + if operationPath[0] == '/' { + operationPath = "." + operationPath + } + + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err + } + + if params != nil { + queryValues := queryURL.Query() + + if queryFrag, err := runtime.StyleParamWithLocation("form", true, "organization_slug", runtime.ParamLocationQuery, params.OrganizationSlug); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } + } + + if params.Continent != nil { + + if queryFrag, err := runtime.StyleParamWithLocation("form", true, "continent", runtime.ParamLocationQuery, *params.Continent); err != nil { + return nil, err + } else if parsed, err := url.ParseQuery(queryFrag); err != nil { + return nil, err + } else { + for k, v := range parsed { + for _, v2 := range v { + queryValues.Add(k, v2) + } + } + } + + } + + queryURL.RawQuery = queryValues.Encode() + } + + req, err := http.NewRequest("GET", queryURL.String(), nil) + if err != nil { + return nil, err + } + + return req, nil +} + // NewV1DeleteAProjectRequest generates requests for V1DeleteAProject func NewV1DeleteAProjectRequest(server string, ref string) (*http.Request, error) { var err error @@ -9579,6 +9655,9 @@ type ClientWithResponsesInterface interface { V1CreateAProjectWithResponse(ctx context.Context, body V1CreateAProjectJSONRequestBody, reqEditors ...RequestEditorFn) (*V1CreateAProjectResponse, error) + // V1GetAvailableRegionsWithResponse request + V1GetAvailableRegionsWithResponse(ctx context.Context, params *V1GetAvailableRegionsParams, reqEditors ...RequestEditorFn) (*V1GetAvailableRegionsResponse, error) + // V1DeleteAProjectWithResponse request V1DeleteAProjectWithResponse(ctx context.Context, ref string, reqEditors ...RequestEditorFn) (*V1DeleteAProjectResponse, error) @@ -10438,6 +10517,28 @@ func (r V1CreateAProjectResponse) StatusCode() int { return 0 } +type V1GetAvailableRegionsResponse struct { + Body []byte + HTTPResponse *http.Response + JSON200 *RegionsInfo +} + +// Status returns HTTPResponse.Status +func (r V1GetAvailableRegionsResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r V1GetAvailableRegionsResponse) StatusCode() int { + if r.HTTPResponse != nil { + return r.HTTPResponse.StatusCode + } + return 0 +} + type V1DeleteAProjectResponse struct { Body []byte HTTPResponse *http.Response @@ -13309,6 +13410,15 @@ func (c *ClientWithResponses) V1CreateAProjectWithResponse(ctx context.Context, return ParseV1CreateAProjectResponse(rsp) } +// V1GetAvailableRegionsWithResponse request returning *V1GetAvailableRegionsResponse +func (c *ClientWithResponses) V1GetAvailableRegionsWithResponse(ctx context.Context, params *V1GetAvailableRegionsParams, reqEditors ...RequestEditorFn) (*V1GetAvailableRegionsResponse, error) { + rsp, err := c.V1GetAvailableRegions(ctx, params, reqEditors...) + if err != nil { + return nil, err + } + return ParseV1GetAvailableRegionsResponse(rsp) +} + // V1DeleteAProjectWithResponse request returning *V1DeleteAProjectResponse func (c *ClientWithResponses) V1DeleteAProjectWithResponse(ctx context.Context, ref string, reqEditors ...RequestEditorFn) (*V1DeleteAProjectResponse, error) { rsp, err := c.V1DeleteAProject(ctx, ref, reqEditors...) @@ -15164,6 +15274,32 @@ func ParseV1CreateAProjectResponse(rsp *http.Response) (*V1CreateAProjectRespons return response, nil } +// ParseV1GetAvailableRegionsResponse parses an HTTP response from a V1GetAvailableRegionsWithResponse call +func ParseV1GetAvailableRegionsResponse(rsp *http.Response) (*V1GetAvailableRegionsResponse, error) { + bodyBytes, err := io.ReadAll(rsp.Body) + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err + } + + response := &V1GetAvailableRegionsResponse{ + Body: bodyBytes, + HTTPResponse: rsp, + } + + switch { + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: + var dest RegionsInfo + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON200 = &dest + + } + + return response, nil +} + // ParseV1DeleteAProjectResponse parses an HTTP response from a V1DeleteAProjectWithResponse call func ParseV1DeleteAProjectResponse(rsp *http.Response) (*V1DeleteAProjectResponse, error) { bodyBytes, err := io.ReadAll(rsp.Body) diff --git a/pkg/api/types.gen.go b/pkg/api/types.gen.go index 2cdd4d0ec..2b7ee8870 100644 --- a/pkg/api/types.gen.go +++ b/pkg/api/types.gen.go @@ -697,11 +697,11 @@ const ( // Defines values for ProjectUpgradeEligibilityResponseTargetUpgradeVersionsPostgresVersion. const ( - N13 ProjectUpgradeEligibilityResponseTargetUpgradeVersionsPostgresVersion = "13" - N14 ProjectUpgradeEligibilityResponseTargetUpgradeVersionsPostgresVersion = "14" - N15 ProjectUpgradeEligibilityResponseTargetUpgradeVersionsPostgresVersion = "15" - N17 ProjectUpgradeEligibilityResponseTargetUpgradeVersionsPostgresVersion = "17" - N17Oriole ProjectUpgradeEligibilityResponseTargetUpgradeVersionsPostgresVersion = "17-oriole" + ProjectUpgradeEligibilityResponseTargetUpgradeVersionsPostgresVersionN13 ProjectUpgradeEligibilityResponseTargetUpgradeVersionsPostgresVersion = "13" + ProjectUpgradeEligibilityResponseTargetUpgradeVersionsPostgresVersionN14 ProjectUpgradeEligibilityResponseTargetUpgradeVersionsPostgresVersion = "14" + ProjectUpgradeEligibilityResponseTargetUpgradeVersionsPostgresVersionN15 ProjectUpgradeEligibilityResponseTargetUpgradeVersionsPostgresVersion = "15" + ProjectUpgradeEligibilityResponseTargetUpgradeVersionsPostgresVersionN17 ProjectUpgradeEligibilityResponseTargetUpgradeVersionsPostgresVersion = "17" + ProjectUpgradeEligibilityResponseTargetUpgradeVersionsPostgresVersionN17Oriole ProjectUpgradeEligibilityResponseTargetUpgradeVersionsPostgresVersion = "17-oriole" ) // Defines values for ProjectUpgradeEligibilityResponseTargetUpgradeVersionsReleaseChannel. @@ -714,6 +714,68 @@ const ( ProjectUpgradeEligibilityResponseTargetUpgradeVersionsReleaseChannelWithdrawn ProjectUpgradeEligibilityResponseTargetUpgradeVersionsReleaseChannel = "withdrawn" ) +// Defines values for RegionsInfoAllSmartGroupCode. +const ( + RegionsInfoAllSmartGroupCodeAmericas RegionsInfoAllSmartGroupCode = "americas" + RegionsInfoAllSmartGroupCodeApac RegionsInfoAllSmartGroupCode = "apac" + RegionsInfoAllSmartGroupCodeEmea RegionsInfoAllSmartGroupCode = "emea" +) + +// Defines values for RegionsInfoAllSmartGroupType. +const ( + RegionsInfoAllSmartGroupTypeSmartGroup RegionsInfoAllSmartGroupType = "smartGroup" +) + +// Defines values for RegionsInfoAllSpecificProvider. +const ( + RegionsInfoAllSpecificProviderAWS RegionsInfoAllSpecificProvider = "AWS" + RegionsInfoAllSpecificProviderAWSK8S RegionsInfoAllSpecificProvider = "AWS_K8S" + RegionsInfoAllSpecificProviderAWSNIMBUS RegionsInfoAllSpecificProvider = "AWS_NIMBUS" + RegionsInfoAllSpecificProviderFLY RegionsInfoAllSpecificProvider = "FLY" +) + +// Defines values for RegionsInfoAllSpecificStatus. +const ( + RegionsInfoAllSpecificStatusCapacity RegionsInfoAllSpecificStatus = "capacity" + RegionsInfoAllSpecificStatusOther RegionsInfoAllSpecificStatus = "other" +) + +// Defines values for RegionsInfoAllSpecificType. +const ( + RegionsInfoAllSpecificTypeSpecific RegionsInfoAllSpecificType = "specific" +) + +// Defines values for RegionsInfoRecommendationsSmartGroupCode. +const ( + RegionsInfoRecommendationsSmartGroupCodeAmericas RegionsInfoRecommendationsSmartGroupCode = "americas" + RegionsInfoRecommendationsSmartGroupCodeApac RegionsInfoRecommendationsSmartGroupCode = "apac" + RegionsInfoRecommendationsSmartGroupCodeEmea RegionsInfoRecommendationsSmartGroupCode = "emea" +) + +// Defines values for RegionsInfoRecommendationsSmartGroupType. +const ( + RegionsInfoRecommendationsSmartGroupTypeSmartGroup RegionsInfoRecommendationsSmartGroupType = "smartGroup" +) + +// Defines values for RegionsInfoRecommendationsSpecificProvider. +const ( + RegionsInfoRecommendationsSpecificProviderAWS RegionsInfoRecommendationsSpecificProvider = "AWS" + RegionsInfoRecommendationsSpecificProviderAWSK8S RegionsInfoRecommendationsSpecificProvider = "AWS_K8S" + RegionsInfoRecommendationsSpecificProviderAWSNIMBUS RegionsInfoRecommendationsSpecificProvider = "AWS_NIMBUS" + RegionsInfoRecommendationsSpecificProviderFLY RegionsInfoRecommendationsSpecificProvider = "FLY" +) + +// Defines values for RegionsInfoRecommendationsSpecificStatus. +const ( + RegionsInfoRecommendationsSpecificStatusCapacity RegionsInfoRecommendationsSpecificStatus = "capacity" + RegionsInfoRecommendationsSpecificStatusOther RegionsInfoRecommendationsSpecificStatus = "other" +) + +// Defines values for RegionsInfoRecommendationsSpecificType. +const ( + RegionsInfoRecommendationsSpecificTypeSpecific RegionsInfoRecommendationsSpecificType = "specific" +) + // Defines values for SetUpReadReplicaBodyReadReplicaRegion. const ( SetUpReadReplicaBodyReadReplicaRegionApEast1 SetUpReadReplicaBodyReadReplicaRegion = "ap-east-1" @@ -1021,6 +1083,13 @@ const ( V1CreateProjectBodyPlanPro V1CreateProjectBodyPlan = "pro" ) +// Defines values for V1CreateProjectBodyPostgresEngine. +const ( + V1CreateProjectBodyPostgresEngineN15 V1CreateProjectBodyPostgresEngine = "15" + V1CreateProjectBodyPostgresEngineN17 V1CreateProjectBodyPostgresEngine = "17" + V1CreateProjectBodyPostgresEngineN17Oriole V1CreateProjectBodyPostgresEngine = "17-oriole" +) + // Defines values for V1CreateProjectBodyRegion. const ( V1CreateProjectBodyRegionApEast1 V1CreateProjectBodyRegion = "ap-east-1" @@ -1043,14 +1112,63 @@ const ( V1CreateProjectBodyRegionUsWest2 V1CreateProjectBodyRegion = "us-west-2" ) +// Defines values for V1CreateProjectBodyRegionSelection0Code. +const ( + ApEast1 V1CreateProjectBodyRegionSelection0Code = "ap-east-1" + ApNortheast1 V1CreateProjectBodyRegionSelection0Code = "ap-northeast-1" + ApNortheast2 V1CreateProjectBodyRegionSelection0Code = "ap-northeast-2" + ApSouth1 V1CreateProjectBodyRegionSelection0Code = "ap-south-1" + ApSoutheast1 V1CreateProjectBodyRegionSelection0Code = "ap-southeast-1" + ApSoutheast2 V1CreateProjectBodyRegionSelection0Code = "ap-southeast-2" + CaCentral1 V1CreateProjectBodyRegionSelection0Code = "ca-central-1" + EuCentral1 V1CreateProjectBodyRegionSelection0Code = "eu-central-1" + EuCentral2 V1CreateProjectBodyRegionSelection0Code = "eu-central-2" + EuNorth1 V1CreateProjectBodyRegionSelection0Code = "eu-north-1" + EuWest1 V1CreateProjectBodyRegionSelection0Code = "eu-west-1" + EuWest2 V1CreateProjectBodyRegionSelection0Code = "eu-west-2" + EuWest3 V1CreateProjectBodyRegionSelection0Code = "eu-west-3" + SaEast1 V1CreateProjectBodyRegionSelection0Code = "sa-east-1" + UsEast1 V1CreateProjectBodyRegionSelection0Code = "us-east-1" + UsEast2 V1CreateProjectBodyRegionSelection0Code = "us-east-2" + UsWest1 V1CreateProjectBodyRegionSelection0Code = "us-west-1" + UsWest2 V1CreateProjectBodyRegionSelection0Code = "us-west-2" +) + +// Defines values for V1CreateProjectBodyRegionSelection0Type. +const ( + Specific V1CreateProjectBodyRegionSelection0Type = "specific" +) + +// Defines values for V1CreateProjectBodyRegionSelection1Code. +const ( + Americas V1CreateProjectBodyRegionSelection1Code = "americas" + Apac V1CreateProjectBodyRegionSelection1Code = "apac" + Emea V1CreateProjectBodyRegionSelection1Code = "emea" +) + +// Defines values for V1CreateProjectBodyRegionSelection1Type. +const ( + SmartGroup V1CreateProjectBodyRegionSelection1Type = "smartGroup" +) + +// Defines values for V1CreateProjectBodyReleaseChannel. +const ( + V1CreateProjectBodyReleaseChannelAlpha V1CreateProjectBodyReleaseChannel = "alpha" + V1CreateProjectBodyReleaseChannelBeta V1CreateProjectBodyReleaseChannel = "beta" + V1CreateProjectBodyReleaseChannelGa V1CreateProjectBodyReleaseChannel = "ga" + V1CreateProjectBodyReleaseChannelInternal V1CreateProjectBodyReleaseChannel = "internal" + V1CreateProjectBodyReleaseChannelPreview V1CreateProjectBodyReleaseChannel = "preview" + V1CreateProjectBodyReleaseChannelWithdrawn V1CreateProjectBodyReleaseChannel = "withdrawn" +) + // Defines values for V1OrganizationSlugResponseAllowedReleaseChannels. const ( - V1OrganizationSlugResponseAllowedReleaseChannelsAlpha V1OrganizationSlugResponseAllowedReleaseChannels = "alpha" - V1OrganizationSlugResponseAllowedReleaseChannelsBeta V1OrganizationSlugResponseAllowedReleaseChannels = "beta" - V1OrganizationSlugResponseAllowedReleaseChannelsGa V1OrganizationSlugResponseAllowedReleaseChannels = "ga" - V1OrganizationSlugResponseAllowedReleaseChannelsInternal V1OrganizationSlugResponseAllowedReleaseChannels = "internal" - V1OrganizationSlugResponseAllowedReleaseChannelsPreview V1OrganizationSlugResponseAllowedReleaseChannels = "preview" - V1OrganizationSlugResponseAllowedReleaseChannelsWithdrawn V1OrganizationSlugResponseAllowedReleaseChannels = "withdrawn" + Alpha V1OrganizationSlugResponseAllowedReleaseChannels = "alpha" + Beta V1OrganizationSlugResponseAllowedReleaseChannels = "beta" + Ga V1OrganizationSlugResponseAllowedReleaseChannels = "ga" + Internal V1OrganizationSlugResponseAllowedReleaseChannels = "internal" + Preview V1OrganizationSlugResponseAllowedReleaseChannels = "preview" + Withdrawn V1OrganizationSlugResponseAllowedReleaseChannels = "withdrawn" ) // Defines values for V1OrganizationSlugResponseOptInTags. @@ -1240,6 +1358,17 @@ const ( V1OauthAuthorizeProjectClaimParamsCodeChallengeMethodSha256 V1OauthAuthorizeProjectClaimParamsCodeChallengeMethod = "sha256" ) +// Defines values for V1GetAvailableRegionsParamsContinent. +const ( + AF V1GetAvailableRegionsParamsContinent = "AF" + AN V1GetAvailableRegionsParamsContinent = "AN" + AS V1GetAvailableRegionsParamsContinent = "AS" + EU V1GetAvailableRegionsParamsContinent = "EU" + NA V1GetAvailableRegionsParamsContinent = "NA" + OC V1GetAvailableRegionsParamsContinent = "OC" + SA V1GetAvailableRegionsParamsContinent = "SA" +) + // Defines values for V1GetSecurityAdvisorsParamsLintType. const ( Sql V1GetSecurityAdvisorsParamsLintType = "sql" @@ -2712,6 +2841,68 @@ type ReadOnlyStatusResponse struct { OverrideEnabled bool `json:"override_enabled"` } +// RegionsInfo defines model for RegionsInfo. +type RegionsInfo struct { + All struct { + SmartGroup []struct { + Code RegionsInfoAllSmartGroupCode `json:"code"` + Name string `json:"name"` + Type RegionsInfoAllSmartGroupType `json:"type"` + } `json:"smartGroup"` + Specific []struct { + Code string `json:"code"` + Name string `json:"name"` + Provider RegionsInfoAllSpecificProvider `json:"provider"` + Status *RegionsInfoAllSpecificStatus `json:"status,omitempty"` + Type RegionsInfoAllSpecificType `json:"type"` + } `json:"specific"` + } `json:"all"` + Recommendations struct { + SmartGroup struct { + Code RegionsInfoRecommendationsSmartGroupCode `json:"code"` + Name string `json:"name"` + Type RegionsInfoRecommendationsSmartGroupType `json:"type"` + } `json:"smartGroup"` + Specific []struct { + Code string `json:"code"` + Name string `json:"name"` + Provider RegionsInfoRecommendationsSpecificProvider `json:"provider"` + Status *RegionsInfoRecommendationsSpecificStatus `json:"status,omitempty"` + Type RegionsInfoRecommendationsSpecificType `json:"type"` + } `json:"specific"` + } `json:"recommendations"` +} + +// RegionsInfoAllSmartGroupCode defines model for RegionsInfo.All.SmartGroup.Code. +type RegionsInfoAllSmartGroupCode string + +// RegionsInfoAllSmartGroupType defines model for RegionsInfo.All.SmartGroup.Type. +type RegionsInfoAllSmartGroupType string + +// RegionsInfoAllSpecificProvider defines model for RegionsInfo.All.Specific.Provider. +type RegionsInfoAllSpecificProvider string + +// RegionsInfoAllSpecificStatus defines model for RegionsInfo.All.Specific.Status. +type RegionsInfoAllSpecificStatus string + +// RegionsInfoAllSpecificType defines model for RegionsInfo.All.Specific.Type. +type RegionsInfoAllSpecificType string + +// RegionsInfoRecommendationsSmartGroupCode defines model for RegionsInfo.Recommendations.SmartGroup.Code. +type RegionsInfoRecommendationsSmartGroupCode string + +// RegionsInfoRecommendationsSmartGroupType defines model for RegionsInfo.Recommendations.SmartGroup.Type. +type RegionsInfoRecommendationsSmartGroupType string + +// RegionsInfoRecommendationsSpecificProvider defines model for RegionsInfo.Recommendations.Specific.Provider. +type RegionsInfoRecommendationsSpecificProvider string + +// RegionsInfoRecommendationsSpecificStatus defines model for RegionsInfo.Recommendations.Specific.Status. +type RegionsInfoRecommendationsSpecificStatus string + +// RegionsInfoRecommendationsSpecificType defines model for RegionsInfo.Recommendations.Specific.Type. +type RegionsInfoRecommendationsSpecificType string + // RemoveNetworkBanRequest defines model for RemoveNetworkBanRequest. type RemoveNetworkBanRequest struct { Identifier *string `json:"identifier,omitempty"` @@ -3482,8 +3673,20 @@ type V1CreateProjectBody struct { // Deprecated: Plan *V1CreateProjectBodyPlan `json:"plan,omitempty"` - // Region Region you want your server to reside in - Region V1CreateProjectBodyRegion `json:"region"` + // PostgresEngine Postgres engine version. If not provided, the latest version will be used. + // Deprecated: + PostgresEngine *V1CreateProjectBodyPostgresEngine `json:"postgres_engine,omitempty"` + + // Region Region you want your server to reside in. Use region_selection instead. + // Deprecated: + Region *V1CreateProjectBodyRegion `json:"region,omitempty"` + + // RegionSelection Region selection. Only one of region or region_selection can be specified. + RegionSelection *V1CreateProjectBody_RegionSelection `json:"region_selection,omitempty"` + + // ReleaseChannel Release channel. If not provided, GA will be used. + // Deprecated: + ReleaseChannel *V1CreateProjectBodyReleaseChannel `json:"release_channel,omitempty"` // TemplateUrl Template URL used to create the project from the CLI. TemplateUrl *string `json:"template_url,omitempty"` @@ -3495,9 +3698,46 @@ type V1CreateProjectBodyDesiredInstanceSize string // V1CreateProjectBodyPlan Subscription Plan is now set on organization level and is ignored in this request type V1CreateProjectBodyPlan string -// V1CreateProjectBodyRegion Region you want your server to reside in +// V1CreateProjectBodyPostgresEngine Postgres engine version. If not provided, the latest version will be used. +type V1CreateProjectBodyPostgresEngine string + +// V1CreateProjectBodyRegion Region you want your server to reside in. Use region_selection instead. type V1CreateProjectBodyRegion string +// V1CreateProjectBodyRegionSelection0 defines model for . +type V1CreateProjectBodyRegionSelection0 struct { + // Code Specific region code. The codes supported are not a stable API, and should be retrieved from the /available-regions endpoint. + Code V1CreateProjectBodyRegionSelection0Code `json:"code"` + Type V1CreateProjectBodyRegionSelection0Type `json:"type"` +} + +// V1CreateProjectBodyRegionSelection0Code Specific region code. The codes supported are not a stable API, and should be retrieved from the /available-regions endpoint. +type V1CreateProjectBodyRegionSelection0Code string + +// V1CreateProjectBodyRegionSelection0Type defines model for V1CreateProjectBody.RegionSelection.0.Type. +type V1CreateProjectBodyRegionSelection0Type string + +// V1CreateProjectBodyRegionSelection1 defines model for . +type V1CreateProjectBodyRegionSelection1 struct { + // Code The Smart Region Group's code. The codes supported are not a stable API, and should be retrieved from the /available-regions endpoint. + Code V1CreateProjectBodyRegionSelection1Code `json:"code"` + Type V1CreateProjectBodyRegionSelection1Type `json:"type"` +} + +// V1CreateProjectBodyRegionSelection1Code The Smart Region Group's code. The codes supported are not a stable API, and should be retrieved from the /available-regions endpoint. +type V1CreateProjectBodyRegionSelection1Code string + +// V1CreateProjectBodyRegionSelection1Type defines model for V1CreateProjectBody.RegionSelection.1.Type. +type V1CreateProjectBodyRegionSelection1Type string + +// V1CreateProjectBody_RegionSelection Region selection. Only one of region or region_selection can be specified. +type V1CreateProjectBody_RegionSelection struct { + union json.RawMessage +} + +// V1CreateProjectBodyReleaseChannel Release channel. If not provided, GA will be used. +type V1CreateProjectBodyReleaseChannel string + // V1GetUsageApiCountResponse defines model for V1GetUsageApiCountResponse. type V1GetUsageApiCountResponse struct { Error *V1GetUsageApiCountResponse_Error `json:"error,omitempty"` @@ -3883,6 +4123,18 @@ type V1OauthAuthorizeProjectClaimParamsResponseType string // V1OauthAuthorizeProjectClaimParamsCodeChallengeMethod defines parameters for V1OauthAuthorizeProjectClaim. type V1OauthAuthorizeProjectClaimParamsCodeChallengeMethod string +// V1GetAvailableRegionsParams defines parameters for V1GetAvailableRegions. +type V1GetAvailableRegionsParams struct { + // OrganizationSlug Slug of your organization + OrganizationSlug string `form:"organization_slug" json:"organization_slug"` + + // Continent Continent code to determine regional recommendations + Continent *V1GetAvailableRegionsParamsContinent `form:"continent,omitempty" json:"continent,omitempty"` +} + +// V1GetAvailableRegionsParamsContinent defines parameters for V1GetAvailableRegions. +type V1GetAvailableRegionsParamsContinent string + // V1ListActionRunsParams defines parameters for V1ListActionRuns. type V1ListActionRunsParams struct { Offset *float32 `form:"offset,omitempty" json:"offset,omitempty"` @@ -5032,6 +5284,68 @@ func (t *ListProjectAddonsResponse_SelectedAddons_Variant_Id) UnmarshalJSON(b [] return err } +// AsV1CreateProjectBodyRegionSelection0 returns the union data inside the V1CreateProjectBody_RegionSelection as a V1CreateProjectBodyRegionSelection0 +func (t V1CreateProjectBody_RegionSelection) AsV1CreateProjectBodyRegionSelection0() (V1CreateProjectBodyRegionSelection0, error) { + var body V1CreateProjectBodyRegionSelection0 + err := json.Unmarshal(t.union, &body) + return body, err +} + +// FromV1CreateProjectBodyRegionSelection0 overwrites any union data inside the V1CreateProjectBody_RegionSelection as the provided V1CreateProjectBodyRegionSelection0 +func (t *V1CreateProjectBody_RegionSelection) FromV1CreateProjectBodyRegionSelection0(v V1CreateProjectBodyRegionSelection0) error { + b, err := json.Marshal(v) + t.union = b + return err +} + +// MergeV1CreateProjectBodyRegionSelection0 performs a merge with any union data inside the V1CreateProjectBody_RegionSelection, using the provided V1CreateProjectBodyRegionSelection0 +func (t *V1CreateProjectBody_RegionSelection) MergeV1CreateProjectBodyRegionSelection0(v V1CreateProjectBodyRegionSelection0) error { + b, err := json.Marshal(v) + if err != nil { + return err + } + + merged, err := runtime.JSONMerge(t.union, b) + t.union = merged + return err +} + +// AsV1CreateProjectBodyRegionSelection1 returns the union data inside the V1CreateProjectBody_RegionSelection as a V1CreateProjectBodyRegionSelection1 +func (t V1CreateProjectBody_RegionSelection) AsV1CreateProjectBodyRegionSelection1() (V1CreateProjectBodyRegionSelection1, error) { + var body V1CreateProjectBodyRegionSelection1 + err := json.Unmarshal(t.union, &body) + return body, err +} + +// FromV1CreateProjectBodyRegionSelection1 overwrites any union data inside the V1CreateProjectBody_RegionSelection as the provided V1CreateProjectBodyRegionSelection1 +func (t *V1CreateProjectBody_RegionSelection) FromV1CreateProjectBodyRegionSelection1(v V1CreateProjectBodyRegionSelection1) error { + b, err := json.Marshal(v) + t.union = b + return err +} + +// MergeV1CreateProjectBodyRegionSelection1 performs a merge with any union data inside the V1CreateProjectBody_RegionSelection, using the provided V1CreateProjectBodyRegionSelection1 +func (t *V1CreateProjectBody_RegionSelection) MergeV1CreateProjectBodyRegionSelection1(v V1CreateProjectBodyRegionSelection1) error { + b, err := json.Marshal(v) + if err != nil { + return err + } + + merged, err := runtime.JSONMerge(t.union, b) + t.union = merged + return err +} + +func (t V1CreateProjectBody_RegionSelection) MarshalJSON() ([]byte, error) { + b, err := t.union.MarshalJSON() + return b, err +} + +func (t *V1CreateProjectBody_RegionSelection) UnmarshalJSON(b []byte) error { + err := t.union.UnmarshalJSON(b) + return err +} + // AsV1GetUsageApiCountResponseError0 returns the union data inside the V1GetUsageApiCountResponse_Error as a V1GetUsageApiCountResponseError0 func (t V1GetUsageApiCountResponse_Error) AsV1GetUsageApiCountResponseError0() (V1GetUsageApiCountResponseError0, error) { var body V1GetUsageApiCountResponseError0