diff --git a/internal/api/client_test.go b/internal/api/client_test.go index e6f4cc5..354c751 100644 --- a/internal/api/client_test.go +++ b/internal/api/client_test.go @@ -290,6 +290,7 @@ func TestFunctionMethodsUseGeneratedRoutes(t *testing.T) { var batchFilenames []string var updateBody map[string]bool var invokeBody map[string]any + var logSearchBody map[string]any var schedulerCreateBody map[string]any var schedulerUpdateBody map[string]any server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { @@ -358,13 +359,12 @@ func TestFunctionMethodsUseGeneratedRoutes(t *testing.T) { "limit": 10, "total": 1, }) - case r.Method == http.MethodGet && r.URL.Path == "/projects/"+projectIDText+"/functions/"+functionIDText+"/logs": - assert.Equal(t, "50", r.URL.Query().Get("limit")) - assert.Equal(t, "fn-next", r.URL.Query().Get("next_token")) + case r.Method == http.MethodPost && r.URL.Path == "/projects/"+projectIDText+"/logs/search": + require.NoError(t, json.NewDecoder(r.Body).Decode(&logSearchBody)) writeAPIJSON(t, w, http.StatusOK, logsResponse("function runtime")) case r.Method == http.MethodGet && r.URL.Path == "/projects/"+projectIDText+"/functions/"+functionIDText+"/deployments/"+deploymentIDText+"/logs": assert.Equal(t, "75", r.URL.Query().Get("limit")) - assert.Equal(t, "dep-next", r.URL.Query().Get("next_token")) + assert.Equal(t, "dep-next", r.URL.Query().Get("cursor")) writeAPIJSON(t, w, http.StatusOK, logsResponse("deployment build")) case r.Method == http.MethodGet && r.URL.Path == "/projects/"+projectIDText+"/functions/"+functionIDText+"/schedulers": writeAPIJSON(t, w, http.StatusOK, map[string]any{ @@ -463,6 +463,10 @@ func TestFunctionMethodsUseGeneratedRoutes(t *testing.T) { runtimeLogs, err := client.GetFunctionLogs(context.Background(), projectID, functionID, 50, "fn-next") require.NoError(t, err) assert.Equal(t, "function runtime", runtimeLogs.Data[0].Message) + assert.Equal(t, "function", logSearchBody["resource_type"]) + assert.Equal(t, []any{functionIDText}, logSearchBody["resource_ids"]) + assert.InEpsilon(t, 50, logSearchBody["limit"], 0) + assert.Equal(t, "fn-next", logSearchBody["cursor"]) deploymentLogs, err := client.GetFunctionDeploymentLogs(context.Background(), projectID, functionID, deploymentID, 75, "dep-next") require.NoError(t, err) @@ -513,8 +517,8 @@ func TestFunctionMethodsUseGeneratedRoutes(t *testing.T) { "POST /functions/" + functionIDText + "/invoke", "GET /functions/runtimes", "GET /projects/" + projectIDText + "/functions/" + functionIDText + "/deployments?page=3&limit=10", - "GET /projects/" + projectIDText + "/functions/" + functionIDText + "/logs?limit=50&next_token=fn-next", - "GET /projects/" + projectIDText + "/functions/" + functionIDText + "/deployments/" + deploymentIDText + "/logs?limit=75&next_token=dep-next", + "POST /projects/" + projectIDText + "/logs/search", + "GET /projects/" + projectIDText + "/functions/" + functionIDText + "/deployments/" + deploymentIDText + "/logs?limit=75&cursor=dep-next", "GET /projects/" + projectIDText + "/functions/" + functionIDText + "/schedulers", "POST /projects/" + projectIDText + "/functions/" + functionIDText + "/schedulers", "PATCH /projects/" + projectIDText + "/functions/" + functionIDText + "/schedulers/" + schedulerIDText, diff --git a/internal/api/frontends.go b/internal/api/frontends.go index 0b69160..c2e3c17 100644 --- a/internal/api/frontends.go +++ b/internal/api/frontends.go @@ -118,13 +118,13 @@ func (c *Client) ListFrontendDeployments(ctx context.Context, projectID, fronten } // GetFrontendLogs returns one runtime log page for a frontend. -func (c *Client) GetFrontendLogs(ctx context.Context, projectID, frontendID uuid.UUID, limit int, nextToken string) (*apiclient.GetLogsResponse, error) { +func (c *Client) GetFrontendLogs(ctx context.Context, projectID, frontendID uuid.UUID, limit int, cursor string) (*apiclient.ListLogsResponse, error) { params := &apiclient.GetFrontendLogsParams{} if limit > 0 { params.Limit = &limit } - if nextToken = strings.TrimSpace(nextToken); nextToken != "" { - params.NextToken = &nextToken + if cursor = strings.TrimSpace(cursor); cursor != "" { + params.Cursor = &cursor } resp, err := c.client.GetFrontendLogsWithResponse(ctx, projectID, frontendID, params) @@ -135,13 +135,13 @@ func (c *Client) GetFrontendLogs(ctx context.Context, projectID, frontendID uuid } // GetFrontendDeploymentLogs returns one build log page for a frontend deployment. -func (c *Client) GetFrontendDeploymentLogs(ctx context.Context, projectID, frontendID, deploymentID uuid.UUID, limit int, nextToken string) (*apiclient.GetLogsResponse, error) { +func (c *Client) GetFrontendDeploymentLogs(ctx context.Context, projectID, frontendID, deploymentID uuid.UUID, limit int, cursor string) (*apiclient.ListLogsResponse, error) { params := &apiclient.GetFrontendDeploymentLogsParams{} if limit > 0 { params.Limit = &limit } - if nextToken = strings.TrimSpace(nextToken); nextToken != "" { - params.NextToken = &nextToken + if cursor = strings.TrimSpace(cursor); cursor != "" { + params.Cursor = &cursor } resp, err := c.client.GetFrontendDeploymentLogsWithResponse(ctx, projectID, frontendID, deploymentID, params) diff --git a/internal/api/frontends_test.go b/internal/api/frontends_test.go index c2f7ed8..a42b36c 100644 --- a/internal/api/frontends_test.go +++ b/internal/api/frontends_test.go @@ -93,11 +93,11 @@ func TestFrontendDomainAndLogsMethodsUseGeneratedRoutes(t *testing.T) { }) case r.Method == http.MethodGet && r.URL.Path == "/projects/"+projectIDText+"/frontends/"+frontendIDText+"/logs": assert.Equal(t, "50", r.URL.Query().Get("limit")) - assert.Equal(t, "fe-next", r.URL.Query().Get("next_token")) + assert.Equal(t, "fe-next", r.URL.Query().Get("cursor")) writeAPIJSON(t, w, http.StatusOK, logsResponse("frontend runtime")) case r.Method == http.MethodGet && r.URL.Path == "/projects/"+projectIDText+"/frontends/"+frontendIDText+"/deployments/"+deploymentIDText+"/logs": assert.Equal(t, "75", r.URL.Query().Get("limit")) - assert.Equal(t, "dep-next", r.URL.Query().Get("next_token")) + assert.Equal(t, "dep-next", r.URL.Query().Get("cursor")) writeAPIJSON(t, w, http.StatusOK, logsResponse("frontend build")) case r.Method == http.MethodPost && r.URL.Path == "/projects/"+projectIDText+"/frontends/"+frontendIDText+"/domain": require.NoError(t, json.NewDecoder(r.Body).Decode(&createBody)) @@ -151,8 +151,8 @@ func TestFrontendDomainAndLogsMethodsUseGeneratedRoutes(t *testing.T) { require.NoError(t, client.DeleteFrontendCustomDomain(context.Background(), projectID, frontendID)) assert.Equal(t, []string{ "GET /projects/" + projectIDText + "/frontends/" + frontendIDText + "/deployments?page=3&limit=10", - "GET /projects/" + projectIDText + "/frontends/" + frontendIDText + "/logs?limit=50&next_token=fe-next", - "GET /projects/" + projectIDText + "/frontends/" + frontendIDText + "/deployments/" + deploymentIDText + "/logs?limit=75&next_token=dep-next", + "GET /projects/" + projectIDText + "/frontends/" + frontendIDText + "/logs?limit=50&cursor=fe-next", + "GET /projects/" + projectIDText + "/frontends/" + frontendIDText + "/deployments/" + deploymentIDText + "/logs?limit=75&cursor=dep-next", "POST /projects/" + projectIDText + "/frontends/" + frontendIDText + "/domain", "GET /projects/" + projectIDText + "/frontends/" + frontendIDText + "/domain", "DELETE /projects/" + projectIDText + "/frontends/" + frontendIDText + "/domain", diff --git a/internal/api/functions.go b/internal/api/functions.go index 6cdb3e1..57ae2bd 100644 --- a/internal/api/functions.go +++ b/internal/api/functions.go @@ -11,6 +11,7 @@ import ( "github.com/google/uuid" "github.com/Kong/volcano-cli/internal/apiclient" + apicommon "github.com/Kong/volcano-cli/internal/apiclient/common" "github.com/Kong/volcano-cli/internal/archive" ) @@ -155,17 +156,21 @@ func (c *Client) ListFunctionDeployments(ctx context.Context, projectID, functio return apiResult(resp.StatusCode(), resp.Body, resp.JSON200, resp.JSON404) } -// GetFunctionLogs returns one runtime log page for a function. -func (c *Client) GetFunctionLogs(ctx context.Context, projectID, functionID uuid.UUID, limit int, nextToken string) (*apiclient.GetLogsResponse, error) { - params := &apiclient.GetFunctionLogsParams{} +// GetFunctionLogs returns one runtime log search page for a function. +func (c *Client) GetFunctionLogs(ctx context.Context, projectID, functionID uuid.UUID, limit int, cursor string) (*apiclient.LogSearchResponse, error) { + resourceID := functionID.String() + body := apiclient.SearchProjectLogsJSONRequestBody{ + ResourceType: apicommon.LogSearchRequestResourceTypeFunction, + ResourceIds: &[]string{resourceID}, + } if limit > 0 { - params.Limit = &limit + body.Limit = &limit } - if nextToken = strings.TrimSpace(nextToken); nextToken != "" { - params.NextToken = &nextToken + if cursor = strings.TrimSpace(cursor); cursor != "" { + body.Cursor = &cursor } - resp, err := c.client.GetFunctionLogsWithResponse(ctx, projectID, functionID, params) + resp, err := c.client.SearchProjectLogsWithResponse(ctx, projectID, body) if err != nil { return nil, err } @@ -301,13 +306,13 @@ func (c *Client) DeleteFunctionScheduler(ctx context.Context, projectID, functio } // GetFunctionDeploymentLogs returns one build log page for a function deployment. -func (c *Client) GetFunctionDeploymentLogs(ctx context.Context, projectID, functionID, deploymentID uuid.UUID, limit int, nextToken string) (*apiclient.GetLogsResponse, error) { +func (c *Client) GetFunctionDeploymentLogs(ctx context.Context, projectID, functionID, deploymentID uuid.UUID, limit int, cursor string) (*apiclient.ListLogsResponse, error) { params := &apiclient.GetFunctionDeploymentLogsParams{} if limit > 0 { params.Limit = &limit } - if nextToken = strings.TrimSpace(nextToken); nextToken != "" { - params.NextToken = &nextToken + if cursor = strings.TrimSpace(cursor); cursor != "" { + params.Cursor = &cursor } resp, err := c.client.GetFunctionDeploymentLogsWithResponse(ctx, projectID, functionID, deploymentID, params) diff --git a/internal/apiclient/client.gen.go b/internal/apiclient/client.gen.go index b3853fc..a952679 100644 --- a/internal/apiclient/client.gen.go +++ b/internal/apiclient/client.gen.go @@ -26,6 +26,39 @@ const ( UserTokenScopes userTokenContextKey = "UserToken.Scopes" ) +// Defines values for DeploymentStage. +const ( + DeploymentStageCompile DeploymentStage = "compile" + DeploymentStagePublish DeploymentStage = "publish" +) + +// Valid indicates whether the value is a known member of the DeploymentStage enum. +func (e DeploymentStage) Valid() bool { + switch e { + case DeploymentStageCompile: + return true + case DeploymentStagePublish: + return true + default: + return false + } +} + +// Defines values for LogResourceType. +const ( + LogResourceTypeFunction LogResourceType = "function" +) + +// Valid indicates whether the value is a known member of the LogResourceType enum. +func (e LogResourceType) Valid() bool { + switch e { + case LogResourceTypeFunction: + return true + default: + return false + } +} + // Defines values for AuthConfirmEmail200JSONResponseBodyMessage. const ( EmailAlreadyConfirmed AuthConfirmEmail200JSONResponseBodyMessage = "Email already confirmed" @@ -400,6 +433,7 @@ const ( GetDefaultEmailTemplateParamsTypeConfirmation GetDefaultEmailTemplateParamsType = "confirmation" GetDefaultEmailTemplateParamsTypePasswordChanged GetDefaultEmailTemplateParamsType = "password_changed" GetDefaultEmailTemplateParamsTypePasswordReset GetDefaultEmailTemplateParamsType = "password_reset" + GetDefaultEmailTemplateParamsTypeWelcome GetDefaultEmailTemplateParamsType = "welcome" ) // Valid indicates whether the value is a known member of the GetDefaultEmailTemplateParamsType enum. @@ -411,6 +445,8 @@ func (e GetDefaultEmailTemplateParamsType) Valid() bool { return true case GetDefaultEmailTemplateParamsTypePasswordReset: return true + case GetDefaultEmailTemplateParamsTypeWelcome: + return true default: return false } @@ -523,6 +559,7 @@ const ( DeleteEmailTemplateParamsTypeConfirmation DeleteEmailTemplateParamsType = "confirmation" DeleteEmailTemplateParamsTypePasswordChanged DeleteEmailTemplateParamsType = "password_changed" DeleteEmailTemplateParamsTypePasswordReset DeleteEmailTemplateParamsType = "password_reset" + DeleteEmailTemplateParamsTypeWelcome DeleteEmailTemplateParamsType = "welcome" ) // Valid indicates whether the value is a known member of the DeleteEmailTemplateParamsType enum. @@ -534,6 +571,8 @@ func (e DeleteEmailTemplateParamsType) Valid() bool { return true case DeleteEmailTemplateParamsTypePasswordReset: return true + case DeleteEmailTemplateParamsTypeWelcome: + return true default: return false } @@ -544,6 +583,7 @@ const ( GetEmailTemplateParamsTypeConfirmation GetEmailTemplateParamsType = "confirmation" GetEmailTemplateParamsTypePasswordChanged GetEmailTemplateParamsType = "password_changed" GetEmailTemplateParamsTypePasswordReset GetEmailTemplateParamsType = "password_reset" + GetEmailTemplateParamsTypeWelcome GetEmailTemplateParamsType = "welcome" ) // Valid indicates whether the value is a known member of the GetEmailTemplateParamsType enum. @@ -555,6 +595,8 @@ func (e GetEmailTemplateParamsType) Valid() bool { return true case GetEmailTemplateParamsTypePasswordReset: return true + case GetEmailTemplateParamsTypeWelcome: + return true default: return false } @@ -565,6 +607,7 @@ const ( UpdateEmailTemplateParamsTypeConfirmation UpdateEmailTemplateParamsType = "confirmation" UpdateEmailTemplateParamsTypePasswordChanged UpdateEmailTemplateParamsType = "password_changed" UpdateEmailTemplateParamsTypePasswordReset UpdateEmailTemplateParamsType = "password_reset" + UpdateEmailTemplateParamsTypeWelcome UpdateEmailTemplateParamsType = "welcome" ) // Valid indicates whether the value is a known member of the UpdateEmailTemplateParamsType enum. @@ -576,6 +619,8 @@ func (e UpdateEmailTemplateParamsType) Valid() bool { return true case UpdateEmailTemplateParamsTypePasswordReset: return true + case UpdateEmailTemplateParamsTypeWelcome: + return true default: return false } @@ -596,26 +641,59 @@ func (e CreateFrontendMultipartBodyFramework) Valid() bool { } } +// Defines values for ListProjectFrontendDeploymentLogsParamsStage. +const ( + ListProjectFrontendDeploymentLogsParamsStageCompile ListProjectFrontendDeploymentLogsParamsStage = "compile" + ListProjectFrontendDeploymentLogsParamsStagePublish ListProjectFrontendDeploymentLogsParamsStage = "publish" +) + +// Valid indicates whether the value is a known member of the ListProjectFrontendDeploymentLogsParamsStage enum. +func (e ListProjectFrontendDeploymentLogsParamsStage) Valid() bool { + switch e { + case ListProjectFrontendDeploymentLogsParamsStageCompile: + return true + case ListProjectFrontendDeploymentLogsParamsStagePublish: + return true + default: + return false + } +} + +// Defines values for GetFrontendDeploymentLogsParamsStage. +const ( + GetFrontendDeploymentLogsParamsStageCompile GetFrontendDeploymentLogsParamsStage = "compile" + GetFrontendDeploymentLogsParamsStagePublish GetFrontendDeploymentLogsParamsStage = "publish" +) + +// Valid indicates whether the value is a known member of the GetFrontendDeploymentLogsParamsStage enum. +func (e GetFrontendDeploymentLogsParamsStage) Valid() bool { + switch e { + case GetFrontendDeploymentLogsParamsStageCompile: + return true + case GetFrontendDeploymentLogsParamsStagePublish: + return true + default: + return false + } +} + // Defines values for CreateFunctionMultipartBodyRuntime. const ( - Nodejs20X CreateFunctionMultipartBodyRuntime = "nodejs20.x" Nodejs22X CreateFunctionMultipartBodyRuntime = "nodejs22.x" Nodejs24X CreateFunctionMultipartBodyRuntime = "nodejs24.x" Python310 CreateFunctionMultipartBodyRuntime = "python3.10" Python311 CreateFunctionMultipartBodyRuntime = "python3.11" Python312 CreateFunctionMultipartBodyRuntime = "python3.12" Python313 CreateFunctionMultipartBodyRuntime = "python3.13" - Python39 CreateFunctionMultipartBodyRuntime = "python3.9" - Ruby32 CreateFunctionMultipartBodyRuntime = "ruby3.2" + Python314 CreateFunctionMultipartBodyRuntime = "python3.14" Ruby33 CreateFunctionMultipartBodyRuntime = "ruby3.3" Ruby34 CreateFunctionMultipartBodyRuntime = "ruby3.4" + Ruby40 CreateFunctionMultipartBodyRuntime = "ruby4.0" ) // Valid indicates whether the value is a known member of the CreateFunctionMultipartBodyRuntime enum. func (e CreateFunctionMultipartBodyRuntime) Valid() bool { switch e { - case Nodejs20X: - return true case Nodejs22X: return true case Nodejs24X: @@ -628,14 +706,32 @@ func (e CreateFunctionMultipartBodyRuntime) Valid() bool { return true case Python313: return true - case Python39: - return true - case Ruby32: + case Python314: return true case Ruby33: return true case Ruby34: return true + case Ruby40: + return true + default: + return false + } +} + +// Defines values for GetFunctionDeploymentLogsParamsStage. +const ( + GetFunctionDeploymentLogsParamsStageCompile GetFunctionDeploymentLogsParamsStage = "compile" + GetFunctionDeploymentLogsParamsStagePublish GetFunctionDeploymentLogsParamsStage = "publish" +) + +// Valid indicates whether the value is a known member of the GetFunctionDeploymentLogsParamsStage enum. +func (e GetFunctionDeploymentLogsParamsStage) Valid() bool { + switch e { + case GetFunctionDeploymentLogsParamsStageCompile: + return true + case GetFunctionDeploymentLogsParamsStagePublish: + return true default: return false } @@ -840,9 +936,15 @@ type FrontendDomainRoutingRecord = externalRef0.FrontendDomainRoutingRecord // FrontendDomainVerificationRecord defines model for FrontendDomainVerificationRecord. type FrontendDomainVerificationRecord = externalRef0.FrontendDomainVerificationRecord +// FrontendUsageDailyEntry One day of request and error counts for a single frontend. +type FrontendUsageDailyEntry = externalRef0.FrontendUsageDailyEntry + // FrontendUsageData Monthly frontend request totals grouped by frontend. type FrontendUsageData = externalRef0.FrontendUsageData +// FrontendUsageHistoryResponse Zero-filled daily series of request + error counts for a single frontend, oldest first. +type FrontendUsageHistoryResponse = externalRef0.FrontendUsageHistoryResponse + // Function defines model for Function. type Function = externalRef0.Function @@ -855,6 +957,9 @@ type FunctionInvocationRequest = externalRef0.FunctionInvocationRequest // FunctionInvocationResponse Raw function response body returned by the invoked function. type FunctionInvocationResponse = externalRef0.FunctionInvocationResponse +// FunctionRegion defines model for FunctionRegion. +type FunctionRegion = externalRef0.FunctionRegion + // FunctionRuntimeOption defines model for FunctionRuntimeOption. type FunctionRuntimeOption = externalRef0.FunctionRuntimeOption @@ -867,9 +972,6 @@ type FunctionScheduler = externalRef0.FunctionScheduler // FunctionSchedulerListResponse defines model for FunctionSchedulerListResponse. type FunctionSchedulerListResponse = externalRef0.FunctionSchedulerListResponse -// GetLogsResponse defines model for GetLogsResponse. -type GetLogsResponse = externalRef0.GetLogsResponse - // HostedAuthPageType defines model for HostedAuthPageType. type HostedAuthPageType = externalRef0.HostedAuthPageType @@ -885,9 +987,48 @@ type HostedLoginOptionsResponse = externalRef0.HostedLoginOptionsResponse // HostedRenderablePageType defines model for HostedRenderablePageType. type HostedRenderablePageType = externalRef0.HostedRenderablePageType -// LogEvent defines model for LogEvent. +// ListLogsResponse Paginated logs response using opaque cursor pagination. +type ListLogsResponse = externalRef0.ListLogsResponse + +// LiveLogBackfillCompleteEvent SSE payload emitted as `event: backfill_complete` after initial bounded history. +type LiveLogBackfillCompleteEvent = externalRef0.LiveLogBackfillCompleteEvent + +// LiveLogEvent Structured function runtime log event emitted as SSE `event: log`. +type LiveLogEvent = externalRef0.LiveLogEvent + +// LiveLogHeartbeatEvent SSE payload emitted as `event: heartbeat` every 15 seconds while idle. +type LiveLogHeartbeatEvent = externalRef0.LiveLogHeartbeatEvent + +// LiveLogLevel Normalized function runtime log level. +type LiveLogLevel = externalRef0.LiveLogLevel + +// LiveLogSource Runtime environment source that produced the function log event. +type LiveLogSource = externalRef0.LiveLogSource + +// LiveLogWarningEvent SSE payload emitted as `event: warning` for recoverable live log stream issues. +type LiveLogWarningEvent = externalRef0.LiveLogWarningEvent + +// LogActivityBucket Log-event counts for one activity time bucket. +type LogActivityBucket = externalRef0.LogActivityBucket + +// LogActivityRequest Activity request for bucketed runtime log counts. +type LogActivityRequest = externalRef0.LogActivityRequest + +// LogActivityResponse Bucketed runtime log activity. +type LogActivityResponse = externalRef0.LogActivityResponse + +// LogEvent Normalized historical log event returned by paginated log APIs. type LogEvent = externalRef0.LogEvent +// LogSearchEvent defines model for LogSearchEvent. +type LogSearchEvent = externalRef0.LogSearchEvent + +// LogSearchRequest Search request for runtime logs. +type LogSearchRequest = externalRef0.LogSearchRequest + +// LogSearchResponse Paginated project runtime log search response. +type LogSearchResponse = externalRef0.LogSearchResponse + // MetricUsageData Usage data for one metric across totals, daily, and hourly windows. type MetricUsageData = externalRef0.MetricUsageData @@ -915,6 +1056,12 @@ type PaginatedFunctionDeployments = externalRef0.PaginatedFunctionDeployments // PaginatedFunctions defines model for PaginatedFunctions. type PaginatedFunctions = externalRef0.PaginatedFunctions +// PaginatedProjectCustomDomains defines model for PaginatedProjectCustomDomains. +type PaginatedProjectCustomDomains = externalRef0.PaginatedProjectCustomDomains + +// PaginatedProjectDeployments defines model for PaginatedProjectDeployments. +type PaginatedProjectDeployments = externalRef0.PaginatedProjectDeployments + // PaginatedProjects defines model for PaginatedProjects. type PaginatedProjects = externalRef0.PaginatedProjects @@ -930,6 +1077,12 @@ type PlatformExchangeResponse = externalRef0.PlatformExchangeResponse // Project defines model for Project. type Project = externalRef0.Project +// ProjectFrontendCustomDomain defines model for ProjectFrontendCustomDomain. +type ProjectFrontendCustomDomain = externalRef0.ProjectFrontendCustomDomain + +// ProjectFrontendDeployment defines model for ProjectFrontendDeployment. +type ProjectFrontendDeployment = externalRef0.ProjectFrontendDeployment + // ProjectUsageResponse Aggregated usage metrics for a project. type ProjectUsageResponse = externalRef0.ProjectUsageResponse @@ -981,6 +1134,19 @@ type StorageStats = externalRef0.StorageStats // StorageVisibilityRequest defines model for StorageVisibilityRequest. type StorageVisibilityRequest = externalRef0.StorageVisibilityRequest +// TestEmailRequest When `html_body` or `text_body` is provided the backend renders +// those (plus optional `subject`) through html/text templates +// against the standard `EmailData` (ProjectName, Name, SiteURL) +// and sends the result — used by the template-editor "Send Test" +// affordance to preview an unsaved template. When both bodies are +// omitted a hardcoded diagnostic message is sent to verify SMTP +// credentials and `subject` is ignored. Sending `subject` alone +// (without a body) is rejected with 400. +type TestEmailRequest = externalRef0.TestEmailRequest + +// TestEmailResponse defines model for TestEmailResponse. +type TestEmailResponse = externalRef0.TestEmailResponse + // UnbanUserResponse Response when unbanning a user type UnbanUserResponse = externalRef0.UnbanUserResponse @@ -1039,6 +1205,12 @@ type DatabaseName = string // DeploymentId defines model for DeploymentId. type DeploymentId = openapi_types.UUID +// DeploymentIdQuery defines model for DeploymentIdQuery. +type DeploymentIdQuery = openapi_types.UUID + +// DeploymentStage defines model for DeploymentStage. +type DeploymentStage string + // FrontendId defines model for FrontendId. type FrontendId = openapi_types.UUID @@ -1048,6 +1220,33 @@ type FunctionId = openapi_types.UUID // Limit defines model for Limit. type Limit = int +// LogCursor defines model for LogCursor. +type LogCursor = string + +// LogEndTime defines model for LogEndTime. +type LogEndTime = int64 + +// LogLevel Normalized function runtime log level. +type LogLevel = LiveLogLevel + +// LogLimit defines model for LogLimit. +type LogLimit = int + +// LogQuery defines model for LogQuery. +type LogQuery = string + +// LogRegion defines model for LogRegion. +type LogRegion = string + +// LogResourceId defines model for LogResourceId. +type LogResourceId = string + +// LogResourceType defines model for LogResourceType. +type LogResourceType string + +// LogStartTime defines model for LogStartTime. +type LogStartTime = int64 + // Page defines model for Page. type Page = int @@ -1509,6 +1708,24 @@ type GetDatabaseStatsParams struct { // GetDatabaseStatsParamsGranularity defines parameters for GetDatabaseStats. type GetDatabaseStatsParamsGranularity string +// ListProjectDeploymentsParams defines parameters for ListProjectDeployments. +type ListProjectDeploymentsParams struct { + // Page Page number (1-indexed) + Page *Page `form:"page,omitempty" json:"page,omitempty"` + + // Limit Number of items per page (max 100) + Limit *Limit `form:"limit,omitempty" json:"limit,omitempty"` +} + +// ListProjectCustomDomainsParams defines parameters for ListProjectCustomDomains. +type ListProjectCustomDomainsParams struct { + // Page Page number (1-indexed) + Page *Page `form:"page,omitempty" json:"page,omitempty"` + + // Limit Number of items per page (max 100) + Limit *Limit `form:"limit,omitempty" json:"limit,omitempty"` +} + // DeleteEmailTemplateParamsType defines parameters for DeleteEmailTemplate. type DeleteEmailTemplateParamsType string @@ -1545,6 +1762,63 @@ type CreateFrontendMultipartBody struct { // CreateFrontendMultipartBodyFramework defines parameters for CreateFrontend. type CreateFrontendMultipartBodyFramework string +// ListProjectFrontendDeploymentLogsParams defines parameters for ListProjectFrontendDeploymentLogs. +type ListProjectFrontendDeploymentLogsParams struct { + // Limit Maximum number of records to return. + Limit *LogLimit `form:"limit,omitempty" json:"limit,omitempty"` + + // Cursor Opaque pagination cursor from the previous response's `next_cursor`. + Cursor *LogCursor `form:"cursor,omitempty" json:"cursor,omitempty"` + + // StartTime Start time in milliseconds since epoch. + StartTime *LogStartTime `form:"start_time,omitempty" json:"start_time,omitempty"` + + // EndTime End time in milliseconds since epoch. + EndTime *LogEndTime `form:"end_time,omitempty" json:"end_time,omitempty"` + + // Q Free-text search query for log messages and indexed metadata. + Q *LogQuery `form:"q,omitempty" json:"q,omitempty"` + + // Level Normalized log level to filter by. + Level *LogLevel `form:"level,omitempty" json:"level,omitempty"` + + // Region Region to filter by, for example `us-east-1`. + Region *LogRegion `form:"region,omitempty" json:"region,omitempty"` + + // DeploymentId Deployment ID to filter aggregate deployment logs by. + DeploymentId *DeploymentIdQuery `form:"deployment_id,omitempty" json:"deployment_id,omitempty"` + + // Stage Deployment log stage to filter by. + Stage *ListProjectFrontendDeploymentLogsParamsStage `form:"stage,omitempty" json:"stage,omitempty"` +} + +// ListProjectFrontendDeploymentLogsParamsStage defines parameters for ListProjectFrontendDeploymentLogs. +type ListProjectFrontendDeploymentLogsParamsStage string + +// ListProjectFrontendLogsParams defines parameters for ListProjectFrontendLogs. +type ListProjectFrontendLogsParams struct { + // Limit Maximum number of records to return. + Limit *LogLimit `form:"limit,omitempty" json:"limit,omitempty"` + + // Cursor Opaque pagination cursor from the previous response's `next_cursor`. + Cursor *LogCursor `form:"cursor,omitempty" json:"cursor,omitempty"` + + // StartTime Start time in milliseconds since epoch. + StartTime *LogStartTime `form:"start_time,omitempty" json:"start_time,omitempty"` + + // EndTime End time in milliseconds since epoch. + EndTime *LogEndTime `form:"end_time,omitempty" json:"end_time,omitempty"` + + // Q Free-text search query for log messages and indexed metadata. + Q *LogQuery `form:"q,omitempty" json:"q,omitempty"` + + // Level Normalized log level to filter by. + Level *LogLevel `form:"level,omitempty" json:"level,omitempty"` + + // Region Region to filter by, for example `us-east-1`. + Region *LogRegion `form:"region,omitempty" json:"region,omitempty"` +} + // ListFrontendDeploymentsParams defines parameters for ListFrontendDeployments. type ListFrontendDeploymentsParams struct { // Page Page number (1-indexed) @@ -1556,29 +1830,62 @@ type ListFrontendDeploymentsParams struct { // GetFrontendDeploymentLogsParams defines parameters for GetFrontendDeploymentLogs. type GetFrontendDeploymentLogsParams struct { - Limit *int `form:"limit,omitempty" json:"limit,omitempty"` - StartTime *int64 `form:"start_time,omitempty" json:"start_time,omitempty"` - EndTime *int64 `form:"end_time,omitempty" json:"end_time,omitempty"` - FilterPattern *string `form:"filter_pattern,omitempty" json:"filter_pattern,omitempty"` - NextToken *string `form:"next_token,omitempty" json:"next_token,omitempty"` + // Limit Maximum number of records to return. + Limit *LogLimit `form:"limit,omitempty" json:"limit,omitempty"` + + // Cursor Opaque pagination cursor from the previous response's `next_cursor`. + Cursor *LogCursor `form:"cursor,omitempty" json:"cursor,omitempty"` + + // StartTime Start time in milliseconds since epoch. + StartTime *LogStartTime `form:"start_time,omitempty" json:"start_time,omitempty"` + + // EndTime End time in milliseconds since epoch. + EndTime *LogEndTime `form:"end_time,omitempty" json:"end_time,omitempty"` + + // Q Free-text search query for log messages and indexed metadata. + Q *LogQuery `form:"q,omitempty" json:"q,omitempty"` + + // Level Normalized log level to filter by. + Level *LogLevel `form:"level,omitempty" json:"level,omitempty"` + + // Region Region to filter by, for example `us-east-1`. + Region *LogRegion `form:"region,omitempty" json:"region,omitempty"` + + // Stage Deployment log stage to filter by. + Stage *GetFrontendDeploymentLogsParamsStage `form:"stage,omitempty" json:"stage,omitempty"` } +// GetFrontendDeploymentLogsParamsStage defines parameters for GetFrontendDeploymentLogs. +type GetFrontendDeploymentLogsParamsStage string + // GetFrontendLogsParams defines parameters for GetFrontendLogs. type GetFrontendLogsParams struct { - // Limit Maximum number of log events to return - Limit *int `form:"limit,omitempty" json:"limit,omitempty"` + // Limit Maximum number of records to return. + Limit *LogLimit `form:"limit,omitempty" json:"limit,omitempty"` - // StartTime Start time in milliseconds since epoch (Unix timestamp) - StartTime *int64 `form:"start_time,omitempty" json:"start_time,omitempty"` + // Cursor Opaque pagination cursor from the previous response's `next_cursor`. + Cursor *LogCursor `form:"cursor,omitempty" json:"cursor,omitempty"` + + // StartTime Start time in milliseconds since epoch. + StartTime *LogStartTime `form:"start_time,omitempty" json:"start_time,omitempty"` + + // EndTime End time in milliseconds since epoch. + EndTime *LogEndTime `form:"end_time,omitempty" json:"end_time,omitempty"` - // EndTime End time in milliseconds since epoch (Unix timestamp) - EndTime *int64 `form:"end_time,omitempty" json:"end_time,omitempty"` + // Q Free-text search query for log messages and indexed metadata. + Q *LogQuery `form:"q,omitempty" json:"q,omitempty"` - // FilterPattern CloudWatch Logs filter pattern to search/filter log messages - FilterPattern *string `form:"filter_pattern,omitempty" json:"filter_pattern,omitempty"` + // Level Normalized log level to filter by. + Level *LogLevel `form:"level,omitempty" json:"level,omitempty"` - // NextToken Pagination token from previous response to get next page of results - NextToken *string `form:"next_token,omitempty" json:"next_token,omitempty"` + // Region Region to filter by, for example `us-east-1`. + Region *LogRegion `form:"region,omitempty" json:"region,omitempty"` +} + +// GetFrontendUsageHistoryParams defines parameters for GetFrontendUsageHistory. +type GetFrontendUsageHistoryParams struct { + // Days Number of trailing days to return (1–90, default 30). + Days *int `form:"days,omitempty" json:"days,omitempty"` } // ListFunctionsParams defines parameters for ListFunctions. @@ -1606,9 +1913,9 @@ type CreateFunctionMultipartBody struct { Name string `json:"name"` // Runtime Runtime environment. Required. - // - Node.js: nodejs20.x, nodejs22.x, nodejs24.x - // - Python: python3.9, python3.10, python3.11, python3.12, python3.13 - // - Ruby: ruby3.2, ruby3.3, ruby3.4 + // - Node.js: nodejs22.x, nodejs24.x + // - Python: python3.10, python3.11, python3.12, python3.13, python3.14 + // - Ruby: ruby3.3, ruby3.4, ruby4.0 Runtime CreateFunctionMultipartBodyRuntime `json:"runtime"` } @@ -1624,6 +1931,21 @@ type CreateFunctionsBatchMultipartBody struct { Functions string `json:"functions"` } +// StreamProjectFunctionLogsParams defines parameters for StreamProjectFunctionLogs. +type StreamProjectFunctionLogsParams struct { + // BackfillLimit Maximum number of historical events to emit before live tail. Use 0 for live-only. + BackfillLimit *int `form:"backfill_limit,omitempty" json:"backfill_limit,omitempty"` + + // StartTime Optional lower bound for initial backfill, in milliseconds since epoch. + StartTime *int64 `form:"start_time,omitempty" json:"start_time,omitempty"` + + // Q Free-text search query for the initial backfill. + Q *string `form:"q,omitempty" json:"q,omitempty"` + + // LastEventID SSE resume cursor. Must be the last processed `log` event id. + LastEventID *string `json:"Last-Event-ID,omitempty"` +} + // ListFunctionDeploymentsParams defines parameters for ListFunctionDeployments. type ListFunctionDeploymentsParams struct { // Page Page number (1-indexed) @@ -1635,27 +1957,47 @@ type ListFunctionDeploymentsParams struct { // GetFunctionDeploymentLogsParams defines parameters for GetFunctionDeploymentLogs. type GetFunctionDeploymentLogsParams struct { - Limit *int `form:"limit,omitempty" json:"limit,omitempty"` - NextToken *string `form:"next_token,omitempty" json:"next_token,omitempty"` + // Limit Maximum number of records to return. + Limit *LogLimit `form:"limit,omitempty" json:"limit,omitempty"` + + // Cursor Opaque pagination cursor from the previous response's `next_cursor`. + Cursor *LogCursor `form:"cursor,omitempty" json:"cursor,omitempty"` + + // StartTime Start time in milliseconds since epoch. + StartTime *LogStartTime `form:"start_time,omitempty" json:"start_time,omitempty"` + + // EndTime End time in milliseconds since epoch. + EndTime *LogEndTime `form:"end_time,omitempty" json:"end_time,omitempty"` + + // Q Free-text search query for log messages and indexed metadata. + Q *LogQuery `form:"q,omitempty" json:"q,omitempty"` + + // Level Normalized log level to filter by. + Level *LogLevel `form:"level,omitempty" json:"level,omitempty"` + + // Region Region to filter by, for example `us-east-1`. + Region *LogRegion `form:"region,omitempty" json:"region,omitempty"` + + // Stage Deployment log stage to filter by. + Stage *GetFunctionDeploymentLogsParamsStage `form:"stage,omitempty" json:"stage,omitempty"` } -// GetFunctionLogsParams defines parameters for GetFunctionLogs. -type GetFunctionLogsParams struct { - // Limit Maximum number of log events to return - Limit *int `form:"limit,omitempty" json:"limit,omitempty"` +// GetFunctionDeploymentLogsParamsStage defines parameters for GetFunctionDeploymentLogs. +type GetFunctionDeploymentLogsParamsStage string - // StartTime Start time in milliseconds since epoch (Unix timestamp) - StartTime *int64 `form:"start_time,omitempty" json:"start_time,omitempty"` +// StreamFunctionLogsParams defines parameters for StreamFunctionLogs. +type StreamFunctionLogsParams struct { + // BackfillLimit Maximum number of historical events to emit before live tail. Use 0 for live-only. + BackfillLimit *int `form:"backfill_limit,omitempty" json:"backfill_limit,omitempty"` - // EndTime End time in milliseconds since epoch (Unix timestamp) - EndTime *int64 `form:"end_time,omitempty" json:"end_time,omitempty"` + // StartTime Optional lower bound for initial backfill, in milliseconds since epoch. + StartTime *int64 `form:"start_time,omitempty" json:"start_time,omitempty"` - // FilterPattern CloudWatch Logs filter pattern to search/filter log messages. - // Supports literal text, JSON field matching, and regular expressions. - FilterPattern *string `form:"filter_pattern,omitempty" json:"filter_pattern,omitempty"` + // Q Free-text search query for the initial backfill. + Q *string `form:"q,omitempty" json:"q,omitempty"` - // NextToken Pagination token from previous response to get next page of results - NextToken *string `form:"next_token,omitempty" json:"next_token,omitempty"` + // LastEventID SSE resume cursor. Must be the last processed `log` event id. + LastEventID *string `json:"Last-Event-ID,omitempty"` } // DeleteOAuthConfigParams defines parameters for DeleteOAuthConfig. @@ -1685,6 +2027,15 @@ type UpdateOAuthConfigParams struct { // UpdateOAuthConfigParamsProvider defines parameters for UpdateOAuthConfig. type UpdateOAuthConfigParamsProvider string +// ListProjectSchedulersParams defines parameters for ListProjectSchedulers. +type ListProjectSchedulersParams struct { + // Page Page number (1-indexed) + Page *Page `form:"page,omitempty" json:"page,omitempty"` + + // Limit Number of items per page (max 100) + Limit *Limit `form:"limit,omitempty" json:"limit,omitempty"` +} + // ListServiceKeysParams defines parameters for ListServiceKeys. type ListServiceKeysParams struct { // Page Page number (1-indexed) @@ -1864,6 +2215,9 @@ type CreateAnonKeyJSONRequestBody CreateAnonKeyJSONBody // UpdateAuthConfigJSONRequestBody defines body for UpdateAuthConfig for application/json ContentType. type UpdateAuthConfigJSONRequestBody = UpdateAuthConfigRequest +// TestEmailConfigJSONRequestBody defines body for TestEmailConfig for application/json ContentType. +type TestEmailConfigJSONRequestBody = TestEmailRequest + // UpdateAuthHostedPageJSONRequestBody defines body for UpdateAuthHostedPage for application/json ContentType. type UpdateAuthHostedPageJSONRequestBody = UpdateAuthHostedPageRequest @@ -1909,6 +2263,12 @@ type CreateFunctionSchedulerJSONRequestBody = CreateFunctionSchedulerRequest // UpdateFunctionSchedulerJSONRequestBody defines body for UpdateFunctionScheduler for application/json ContentType. type UpdateFunctionSchedulerJSONRequestBody = UpdateFunctionSchedulerRequest +// GetProjectLogActivityJSONRequestBody defines body for GetProjectLogActivity for application/json ContentType. +type GetProjectLogActivityJSONRequestBody = LogActivityRequest + +// SearchProjectLogsJSONRequestBody defines body for SearchProjectLogs for application/json ContentType. +type SearchProjectLogsJSONRequestBody = LogSearchRequest + // CreateOAuthConfigJSONRequestBody defines body for CreateOAuthConfig for application/json ContentType. type CreateOAuthConfigJSONRequestBody = CreateOAuthConfigRequest @@ -2622,6 +2982,9 @@ type ClientInterface interface { // GetDefaultEmailTemplate request GetDefaultEmailTemplate(ctx context.Context, pType GetDefaultEmailTemplateParamsType, reqEditors ...RequestEditorFn) (*http.Response, error) + // ListFunctionRegions request + ListFunctionRegions(ctx context.Context, reqEditors ...RequestEditorFn) (*http.Response, error) + // ResolveFunctionForInvocation request ResolveFunctionForInvocation(ctx context.Context, params *ResolveFunctionForInvocationParams, reqEditors ...RequestEditorFn) (*http.Response, error) @@ -2672,6 +3035,9 @@ type ClientInterface interface { // RegenerateAnonKey request RegenerateAnonKey(ctx context.Context, id ProjectId, keyId openapi_types.UUID, reqEditors ...RequestEditorFn) (*http.Response, error) + // SetDefaultAnonKey request + SetDefaultAnonKey(ctx context.Context, id ProjectId, keyId openapi_types.UUID, reqEditors ...RequestEditorFn) (*http.Response, error) + // GetAuthConfig request GetAuthConfig(ctx context.Context, id ProjectId, reqEditors ...RequestEditorFn) (*http.Response, error) @@ -2680,6 +3046,11 @@ type ClientInterface interface { UpdateAuthConfig(ctx context.Context, id ProjectId, body UpdateAuthConfigJSONRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) + // TestEmailConfigWithBody request with any body + TestEmailConfigWithBody(ctx context.Context, id ProjectId, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) + + TestEmailConfig(ctx context.Context, id ProjectId, body TestEmailConfigJSONRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) + // RenderDefaultManagedAuthPage request RenderDefaultManagedAuthPage(ctx context.Context, id ProjectId, params *RenderDefaultManagedAuthPageParams, reqEditors ...RequestEditorFn) (*http.Response, error) @@ -2761,6 +3132,12 @@ type ClientInterface interface { UpdateDatabaseType(ctx context.Context, id ProjectId, databaseName DatabaseName, body UpdateDatabaseTypeJSONRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) + // ListProjectDeployments request + ListProjectDeployments(ctx context.Context, id ProjectId, params *ListProjectDeploymentsParams, reqEditors ...RequestEditorFn) (*http.Response, error) + + // ListProjectCustomDomains request + ListProjectCustomDomains(ctx context.Context, id ProjectId, params *ListProjectCustomDomainsParams, reqEditors ...RequestEditorFn) (*http.Response, error) + // ListEmailTemplates request ListEmailTemplates(ctx context.Context, id ProjectId, reqEditors ...RequestEditorFn) (*http.Response, error) @@ -2786,6 +3163,12 @@ type ClientInterface interface { // CreateFrontendWithBody request with any body CreateFrontendWithBody(ctx context.Context, id ProjectId, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) + // ListProjectFrontendDeploymentLogs request + ListProjectFrontendDeploymentLogs(ctx context.Context, id ProjectId, params *ListProjectFrontendDeploymentLogsParams, reqEditors ...RequestEditorFn) (*http.Response, error) + + // ListProjectFrontendLogs request + ListProjectFrontendLogs(ctx context.Context, id ProjectId, params *ListProjectFrontendLogsParams, reqEditors ...RequestEditorFn) (*http.Response, error) + // DeleteFrontend request DeleteFrontend(ctx context.Context, id ProjectId, frontendId FrontendId, reqEditors ...RequestEditorFn) (*http.Response, error) @@ -2815,6 +3198,9 @@ type ClientInterface interface { // RedeployFrontend request RedeployFrontend(ctx context.Context, id ProjectId, frontendId FrontendId, reqEditors ...RequestEditorFn) (*http.Response, error) + // GetFrontendUsageHistory request + GetFrontendUsageHistory(ctx context.Context, id ProjectId, frontendId FrontendId, params *GetFrontendUsageHistoryParams, reqEditors ...RequestEditorFn) (*http.Response, error) + // ListFunctions request ListFunctions(ctx context.Context, id ProjectId, params *ListFunctionsParams, reqEditors ...RequestEditorFn) (*http.Response, error) @@ -2824,6 +3210,9 @@ type ClientInterface interface { // CreateFunctionsBatchWithBody request with any body CreateFunctionsBatchWithBody(ctx context.Context, id ProjectId, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) + // StreamProjectFunctionLogs request + StreamProjectFunctionLogs(ctx context.Context, id ProjectId, params *StreamProjectFunctionLogsParams, reqEditors ...RequestEditorFn) (*http.Response, error) + // DeleteFunction request DeleteFunction(ctx context.Context, id ProjectId, functionId FunctionId, reqEditors ...RequestEditorFn) (*http.Response, error) @@ -2841,8 +3230,8 @@ type ClientInterface interface { // GetFunctionDeploymentLogs request GetFunctionDeploymentLogs(ctx context.Context, id ProjectId, functionId FunctionId, deploymentId DeploymentId, params *GetFunctionDeploymentLogsParams, reqEditors ...RequestEditorFn) (*http.Response, error) - // GetFunctionLogs request - GetFunctionLogs(ctx context.Context, id ProjectId, functionId FunctionId, params *GetFunctionLogsParams, reqEditors ...RequestEditorFn) (*http.Response, error) + // StreamFunctionLogs request + StreamFunctionLogs(ctx context.Context, id ProjectId, functionId FunctionId, params *StreamFunctionLogsParams, reqEditors ...RequestEditorFn) (*http.Response, error) // ListFunctionSchedulers request ListFunctionSchedulers(ctx context.Context, id ProjectId, functionId FunctionId, reqEditors ...RequestEditorFn) (*http.Response, error) @@ -2863,6 +3252,16 @@ type ClientInterface interface { UpdateFunctionScheduler(ctx context.Context, id ProjectId, functionId FunctionId, schedulerId SchedulerId, body UpdateFunctionSchedulerJSONRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) + // GetProjectLogActivityWithBody request with any body + GetProjectLogActivityWithBody(ctx context.Context, id ProjectId, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) + + GetProjectLogActivity(ctx context.Context, id ProjectId, body GetProjectLogActivityJSONRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) + + // SearchProjectLogsWithBody request with any body + SearchProjectLogsWithBody(ctx context.Context, id ProjectId, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) + + SearchProjectLogs(ctx context.Context, id ProjectId, body SearchProjectLogsJSONRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) + // ListOAuthConfigs request ListOAuthConfigs(ctx context.Context, id ProjectId, reqEditors ...RequestEditorFn) (*http.Response, error) @@ -2896,6 +3295,9 @@ type ClientInterface interface { // GetRealtimeStats request GetRealtimeStats(ctx context.Context, id ProjectId, reqEditors ...RequestEditorFn) (*http.Response, error) + // ListProjectSchedulers request + ListProjectSchedulers(ctx context.Context, id ProjectId, params *ListProjectSchedulersParams, reqEditors ...RequestEditorFn) (*http.Response, error) + // ListServiceKeys request ListServiceKeys(ctx context.Context, id ProjectId, params *ListServiceKeysParams, reqEditors ...RequestEditorFn) (*http.Response, error) @@ -3727,6 +4129,18 @@ func (c *Client) GetDefaultEmailTemplate(ctx context.Context, pType GetDefaultEm return c.Client.Do(req) } +func (c *Client) ListFunctionRegions(ctx context.Context, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewListFunctionRegionsRequest(c.Server) + 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) ResolveFunctionForInvocation(ctx context.Context, params *ResolveFunctionForInvocationParams, reqEditors ...RequestEditorFn) (*http.Response, error) { req, err := NewResolveFunctionForInvocationRequest(c.Server, params) if err != nil { @@ -3943,6 +4357,18 @@ func (c *Client) RegenerateAnonKey(ctx context.Context, id ProjectId, keyId open return c.Client.Do(req) } +func (c *Client) SetDefaultAnonKey(ctx context.Context, id ProjectId, keyId openapi_types.UUID, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewSetDefaultAnonKeyRequest(c.Server, id, keyId) + 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) GetAuthConfig(ctx context.Context, id ProjectId, reqEditors ...RequestEditorFn) (*http.Response, error) { req, err := NewGetAuthConfigRequest(c.Server, id) if err != nil { @@ -3979,6 +4405,30 @@ func (c *Client) UpdateAuthConfig(ctx context.Context, id ProjectId, body Update return c.Client.Do(req) } +func (c *Client) TestEmailConfigWithBody(ctx context.Context, id ProjectId, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewTestEmailConfigRequestWithBody(c.Server, id, contentType, body) + 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) TestEmailConfig(ctx context.Context, id ProjectId, body TestEmailConfigJSONRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewTestEmailConfigRequest(c.Server, id, body) + 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) RenderDefaultManagedAuthPage(ctx context.Context, id ProjectId, params *RenderDefaultManagedAuthPageParams, reqEditors ...RequestEditorFn) (*http.Response, error) { req, err := NewRenderDefaultManagedAuthPageRequest(c.Server, id, params) if err != nil { @@ -4327,6 +4777,30 @@ func (c *Client) UpdateDatabaseType(ctx context.Context, id ProjectId, databaseN return c.Client.Do(req) } +func (c *Client) ListProjectDeployments(ctx context.Context, id ProjectId, params *ListProjectDeploymentsParams, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewListProjectDeploymentsRequest(c.Server, id, 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) ListProjectCustomDomains(ctx context.Context, id ProjectId, params *ListProjectCustomDomainsParams, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewListProjectCustomDomainsRequest(c.Server, id, 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) ListEmailTemplates(ctx context.Context, id ProjectId, reqEditors ...RequestEditorFn) (*http.Response, error) { req, err := NewListEmailTemplatesRequest(c.Server, id) if err != nil { @@ -4435,8 +4909,8 @@ func (c *Client) CreateFrontendWithBody(ctx context.Context, id ProjectId, conte return c.Client.Do(req) } -func (c *Client) DeleteFrontend(ctx context.Context, id ProjectId, frontendId FrontendId, reqEditors ...RequestEditorFn) (*http.Response, error) { - req, err := NewDeleteFrontendRequest(c.Server, id, frontendId) +func (c *Client) ListProjectFrontendDeploymentLogs(ctx context.Context, id ProjectId, params *ListProjectFrontendDeploymentLogsParams, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewListProjectFrontendDeploymentLogsRequest(c.Server, id, params) if err != nil { return nil, err } @@ -4447,8 +4921,8 @@ func (c *Client) DeleteFrontend(ctx context.Context, id ProjectId, frontendId Fr return c.Client.Do(req) } -func (c *Client) GetFrontend(ctx context.Context, id ProjectId, frontendId FrontendId, reqEditors ...RequestEditorFn) (*http.Response, error) { - req, err := NewGetFrontendRequest(c.Server, id, frontendId) +func (c *Client) ListProjectFrontendLogs(ctx context.Context, id ProjectId, params *ListProjectFrontendLogsParams, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewListProjectFrontendLogsRequest(c.Server, id, params) if err != nil { return nil, err } @@ -4459,8 +4933,8 @@ func (c *Client) GetFrontend(ctx context.Context, id ProjectId, frontendId Front return c.Client.Do(req) } -func (c *Client) ListFrontendDeployments(ctx context.Context, id ProjectId, frontendId FrontendId, params *ListFrontendDeploymentsParams, reqEditors ...RequestEditorFn) (*http.Response, error) { - req, err := NewListFrontendDeploymentsRequest(c.Server, id, frontendId, params) +func (c *Client) DeleteFrontend(ctx context.Context, id ProjectId, frontendId FrontendId, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewDeleteFrontendRequest(c.Server, id, frontendId) if err != nil { return nil, err } @@ -4471,8 +4945,8 @@ func (c *Client) ListFrontendDeployments(ctx context.Context, id ProjectId, fron return c.Client.Do(req) } -func (c *Client) GetFrontendDeploymentLogs(ctx context.Context, id ProjectId, frontendId FrontendId, deploymentId DeploymentId, params *GetFrontendDeploymentLogsParams, reqEditors ...RequestEditorFn) (*http.Response, error) { - req, err := NewGetFrontendDeploymentLogsRequest(c.Server, id, frontendId, deploymentId, params) +func (c *Client) GetFrontend(ctx context.Context, id ProjectId, frontendId FrontendId, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewGetFrontendRequest(c.Server, id, frontendId) if err != nil { return nil, err } @@ -4483,7 +4957,31 @@ func (c *Client) GetFrontendDeploymentLogs(ctx context.Context, id ProjectId, fr return c.Client.Do(req) } -func (c *Client) DeleteFrontendCustomDomain(ctx context.Context, id ProjectId, frontendId FrontendId, reqEditors ...RequestEditorFn) (*http.Response, error) { +func (c *Client) ListFrontendDeployments(ctx context.Context, id ProjectId, frontendId FrontendId, params *ListFrontendDeploymentsParams, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewListFrontendDeploymentsRequest(c.Server, id, frontendId, 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) GetFrontendDeploymentLogs(ctx context.Context, id ProjectId, frontendId FrontendId, deploymentId DeploymentId, params *GetFrontendDeploymentLogsParams, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewGetFrontendDeploymentLogsRequest(c.Server, id, frontendId, deploymentId, 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) DeleteFrontendCustomDomain(ctx context.Context, id ProjectId, frontendId FrontendId, reqEditors ...RequestEditorFn) (*http.Response, error) { req, err := NewDeleteFrontendCustomDomainRequest(c.Server, id, frontendId) if err != nil { return nil, err @@ -4555,6 +5053,18 @@ func (c *Client) RedeployFrontend(ctx context.Context, id ProjectId, frontendId return c.Client.Do(req) } +func (c *Client) GetFrontendUsageHistory(ctx context.Context, id ProjectId, frontendId FrontendId, params *GetFrontendUsageHistoryParams, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewGetFrontendUsageHistoryRequest(c.Server, id, frontendId, 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) ListFunctions(ctx context.Context, id ProjectId, params *ListFunctionsParams, reqEditors ...RequestEditorFn) (*http.Response, error) { req, err := NewListFunctionsRequest(c.Server, id, params) if err != nil { @@ -4591,6 +5101,18 @@ func (c *Client) CreateFunctionsBatchWithBody(ctx context.Context, id ProjectId, return c.Client.Do(req) } +func (c *Client) StreamProjectFunctionLogs(ctx context.Context, id ProjectId, params *StreamProjectFunctionLogsParams, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewStreamProjectFunctionLogsRequest(c.Server, id, 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) DeleteFunction(ctx context.Context, id ProjectId, functionId FunctionId, reqEditors ...RequestEditorFn) (*http.Response, error) { req, err := NewDeleteFunctionRequest(c.Server, id, functionId) if err != nil { @@ -4663,8 +5185,8 @@ func (c *Client) GetFunctionDeploymentLogs(ctx context.Context, id ProjectId, fu return c.Client.Do(req) } -func (c *Client) GetFunctionLogs(ctx context.Context, id ProjectId, functionId FunctionId, params *GetFunctionLogsParams, reqEditors ...RequestEditorFn) (*http.Response, error) { - req, err := NewGetFunctionLogsRequest(c.Server, id, functionId, params) +func (c *Client) StreamFunctionLogs(ctx context.Context, id ProjectId, functionId FunctionId, params *StreamFunctionLogsParams, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewStreamFunctionLogsRequest(c.Server, id, functionId, params) if err != nil { return nil, err } @@ -4759,6 +5281,54 @@ func (c *Client) UpdateFunctionScheduler(ctx context.Context, id ProjectId, func return c.Client.Do(req) } +func (c *Client) GetProjectLogActivityWithBody(ctx context.Context, id ProjectId, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewGetProjectLogActivityRequestWithBody(c.Server, id, contentType, body) + 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) GetProjectLogActivity(ctx context.Context, id ProjectId, body GetProjectLogActivityJSONRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewGetProjectLogActivityRequest(c.Server, id, body) + 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) SearchProjectLogsWithBody(ctx context.Context, id ProjectId, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewSearchProjectLogsRequestWithBody(c.Server, id, contentType, body) + 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) SearchProjectLogs(ctx context.Context, id ProjectId, body SearchProjectLogsJSONRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewSearchProjectLogsRequest(c.Server, id, body) + 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) ListOAuthConfigs(ctx context.Context, id ProjectId, reqEditors ...RequestEditorFn) (*http.Response, error) { req, err := NewListOAuthConfigsRequest(c.Server, id) if err != nil { @@ -4903,6 +5473,18 @@ func (c *Client) GetRealtimeStats(ctx context.Context, id ProjectId, reqEditors return c.Client.Do(req) } +func (c *Client) ListProjectSchedulers(ctx context.Context, id ProjectId, params *ListProjectSchedulersParams, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewListProjectSchedulersRequest(c.Server, id, 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) ListServiceKeys(ctx context.Context, id ProjectId, params *ListServiceKeysParams, reqEditors ...RequestEditorFn) (*http.Response, error) { req, err := NewListServiceKeysRequest(c.Server, id, params) if err != nil { @@ -6903,6 +7485,33 @@ func NewGetDefaultEmailTemplateRequest(server string, pType GetDefaultEmailTempl return req, nil } +// NewListFunctionRegionsRequest generates requests for ListFunctionRegions +func NewListFunctionRegionsRequest(server string) (*http.Request, error) { + var err error + + serverURL, err := url.Parse(server) + if err != nil { + return nil, err + } + + operationPath := fmt.Sprintf("/functions/regions") + if operationPath[0] == '/' { + operationPath = "." + operationPath + } + + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err + } + + req, err := http.NewRequest(http.MethodGet, queryURL.String(), nil) + if err != nil { + return nil, err + } + + return req, nil +} + // NewResolveFunctionForInvocationRequest generates requests for ResolveFunctionForInvocation func NewResolveFunctionForInvocationRequest(server string, params *ResolveFunctionForInvocationParams) (*http.Request, error) { var err error @@ -7479,6 +8088,47 @@ func NewRegenerateAnonKeyRequest(server string, id ProjectId, keyId openapi_type return req, nil } +// NewSetDefaultAnonKeyRequest generates requests for SetDefaultAnonKey +func NewSetDefaultAnonKeyRequest(server string, id ProjectId, keyId openapi_types.UUID) (*http.Request, error) { + var err error + + var pathParam0 string + + pathParam0, err = runtime.StyleParamWithOptions("simple", false, "id", id, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationPath, Type: "string", Format: "uuid"}) + if err != nil { + return nil, err + } + + var pathParam1 string + + pathParam1, err = runtime.StyleParamWithOptions("simple", false, "keyId", keyId, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationPath, Type: "string", Format: "uuid"}) + if err != nil { + return nil, err + } + + serverURL, err := url.Parse(server) + if err != nil { + return nil, err + } + + operationPath := fmt.Sprintf("/projects/%s/anon-keys/%s/set-default", pathParam0, pathParam1) + if operationPath[0] == '/' { + operationPath = "." + operationPath + } + + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err + } + + req, err := http.NewRequest(http.MethodPost, queryURL.String(), nil) + if err != nil { + return nil, err + } + + return req, nil +} + // NewGetAuthConfigRequest generates requests for GetAuthConfig func NewGetAuthConfigRequest(server string, id ProjectId) (*http.Request, error) { var err error @@ -7560,6 +8210,53 @@ func NewUpdateAuthConfigRequestWithBody(server string, id ProjectId, contentType return req, nil } +// NewTestEmailConfigRequest calls the generic TestEmailConfig builder with application/json body +func NewTestEmailConfigRequest(server string, id ProjectId, body TestEmailConfigJSONRequestBody) (*http.Request, error) { + var bodyReader io.Reader + buf, err := json.Marshal(body) + if err != nil { + return nil, err + } + bodyReader = bytes.NewReader(buf) + return NewTestEmailConfigRequestWithBody(server, id, "application/json", bodyReader) +} + +// NewTestEmailConfigRequestWithBody generates requests for TestEmailConfig with any type of body +func NewTestEmailConfigRequestWithBody(server string, id ProjectId, contentType string, body io.Reader) (*http.Request, error) { + var err error + + var pathParam0 string + + pathParam0, err = runtime.StyleParamWithOptions("simple", false, "id", id, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationPath, Type: "string", Format: "uuid"}) + if err != nil { + return nil, err + } + + serverURL, err := url.Parse(server) + if err != nil { + return nil, err + } + + operationPath := fmt.Sprintf("/projects/%s/auth/config/test-email", pathParam0) + if operationPath[0] == '/' { + operationPath = "." + operationPath + } + + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err + } + + req, err := http.NewRequest(http.MethodPost, queryURL.String(), body) + if err != nil { + return nil, err + } + + req.Header.Add("Content-Type", contentType) + + return req, nil +} + // NewRenderDefaultManagedAuthPageRequest generates requests for RenderDefaultManagedAuthPage func NewRenderDefaultManagedAuthPageRequest(server string, id ProjectId, params *RenderDefaultManagedAuthPageParams) (*http.Request, error) { var err error @@ -8787,8 +9484,8 @@ func NewUpdateDatabaseTypeRequestWithBody(server string, id ProjectId, databaseN return req, nil } -// NewListEmailTemplatesRequest generates requests for ListEmailTemplates -func NewListEmailTemplatesRequest(server string, id ProjectId) (*http.Request, error) { +// NewListProjectDeploymentsRequest generates requests for ListProjectDeployments +func NewListProjectDeploymentsRequest(server string, id ProjectId, params *ListProjectDeploymentsParams) (*http.Request, error) { var err error var pathParam0 string @@ -8803,7 +9500,7 @@ func NewListEmailTemplatesRequest(server string, id ProjectId) (*http.Request, e return nil, err } - operationPath := fmt.Sprintf("/projects/%s/email-templates", pathParam0) + operationPath := fmt.Sprintf("/projects/%s/deployments", pathParam0) if operationPath[0] == '/' { operationPath = "." + operationPath } @@ -8813,6 +9510,45 @@ func NewListEmailTemplatesRequest(server string, id ProjectId) (*http.Request, e return nil, err } + if params != nil { + // queryValues collects non-styled parameters (passthrough, JSON) + // that are safe to round-trip through url.Values.Encode(). + queryValues := queryURL.Query() + // rawQueryFragments collects pre-encoded query fragments from + // styled parameters, preserving literal commas as delimiters + // per the OpenAPI spec (e.g. "color=blue,black,brown"). + var rawQueryFragments []string + + if params.Page != nil { + + if queryFrag, err := runtime.StyleParamWithOptions("form", true, "page", *params.Page, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "integer", Format: ""}); err != nil { + return nil, err + } else { + for _, qp := range strings.Split(queryFrag, "&") { + rawQueryFragments = append(rawQueryFragments, qp) + } + } + + } + + if params.Limit != nil { + + if queryFrag, err := runtime.StyleParamWithOptions("form", true, "limit", *params.Limit, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "integer", Format: ""}); err != nil { + return nil, err + } else { + for _, qp := range strings.Split(queryFrag, "&") { + rawQueryFragments = append(rawQueryFragments, qp) + } + } + + } + + if encoded := queryValues.Encode(); encoded != "" { + rawQueryFragments = append(rawQueryFragments, encoded) + } + queryURL.RawQuery = strings.Join(rawQueryFragments, "&") + } + req, err := http.NewRequest(http.MethodGet, queryURL.String(), nil) if err != nil { return nil, err @@ -8821,19 +9557,8 @@ func NewListEmailTemplatesRequest(server string, id ProjectId) (*http.Request, e return req, nil } -// NewCreateEmailTemplateRequest calls the generic CreateEmailTemplate builder with application/json body -func NewCreateEmailTemplateRequest(server string, id ProjectId, body CreateEmailTemplateJSONRequestBody) (*http.Request, error) { - var bodyReader io.Reader - buf, err := json.Marshal(body) - if err != nil { - return nil, err - } - bodyReader = bytes.NewReader(buf) - return NewCreateEmailTemplateRequestWithBody(server, id, "application/json", bodyReader) -} - -// NewCreateEmailTemplateRequestWithBody generates requests for CreateEmailTemplate with any type of body -func NewCreateEmailTemplateRequestWithBody(server string, id ProjectId, contentType string, body io.Reader) (*http.Request, error) { +// NewListProjectCustomDomainsRequest generates requests for ListProjectCustomDomains +func NewListProjectCustomDomainsRequest(server string, id ProjectId, params *ListProjectCustomDomainsParams) (*http.Request, error) { var err error var pathParam0 string @@ -8848,7 +9573,7 @@ func NewCreateEmailTemplateRequestWithBody(server string, id ProjectId, contentT return nil, err } - operationPath := fmt.Sprintf("/projects/%s/email-templates", pathParam0) + operationPath := fmt.Sprintf("/projects/%s/domains", pathParam0) if operationPath[0] == '/' { operationPath = "." + operationPath } @@ -8858,8 +9583,126 @@ func NewCreateEmailTemplateRequestWithBody(server string, id ProjectId, contentT return nil, err } - req, err := http.NewRequest(http.MethodPost, queryURL.String(), body) - if err != nil { + if params != nil { + // queryValues collects non-styled parameters (passthrough, JSON) + // that are safe to round-trip through url.Values.Encode(). + queryValues := queryURL.Query() + // rawQueryFragments collects pre-encoded query fragments from + // styled parameters, preserving literal commas as delimiters + // per the OpenAPI spec (e.g. "color=blue,black,brown"). + var rawQueryFragments []string + + if params.Page != nil { + + if queryFrag, err := runtime.StyleParamWithOptions("form", true, "page", *params.Page, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "integer", Format: ""}); err != nil { + return nil, err + } else { + for _, qp := range strings.Split(queryFrag, "&") { + rawQueryFragments = append(rawQueryFragments, qp) + } + } + + } + + if params.Limit != nil { + + if queryFrag, err := runtime.StyleParamWithOptions("form", true, "limit", *params.Limit, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "integer", Format: ""}); err != nil { + return nil, err + } else { + for _, qp := range strings.Split(queryFrag, "&") { + rawQueryFragments = append(rawQueryFragments, qp) + } + } + + } + + if encoded := queryValues.Encode(); encoded != "" { + rawQueryFragments = append(rawQueryFragments, encoded) + } + queryURL.RawQuery = strings.Join(rawQueryFragments, "&") + } + + req, err := http.NewRequest(http.MethodGet, queryURL.String(), nil) + if err != nil { + return nil, err + } + + return req, nil +} + +// NewListEmailTemplatesRequest generates requests for ListEmailTemplates +func NewListEmailTemplatesRequest(server string, id ProjectId) (*http.Request, error) { + var err error + + var pathParam0 string + + pathParam0, err = runtime.StyleParamWithOptions("simple", false, "id", id, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationPath, Type: "string", Format: "uuid"}) + if err != nil { + return nil, err + } + + serverURL, err := url.Parse(server) + if err != nil { + return nil, err + } + + operationPath := fmt.Sprintf("/projects/%s/email-templates", pathParam0) + if operationPath[0] == '/' { + operationPath = "." + operationPath + } + + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err + } + + req, err := http.NewRequest(http.MethodGet, queryURL.String(), nil) + if err != nil { + return nil, err + } + + return req, nil +} + +// NewCreateEmailTemplateRequest calls the generic CreateEmailTemplate builder with application/json body +func NewCreateEmailTemplateRequest(server string, id ProjectId, body CreateEmailTemplateJSONRequestBody) (*http.Request, error) { + var bodyReader io.Reader + buf, err := json.Marshal(body) + if err != nil { + return nil, err + } + bodyReader = bytes.NewReader(buf) + return NewCreateEmailTemplateRequestWithBody(server, id, "application/json", bodyReader) +} + +// NewCreateEmailTemplateRequestWithBody generates requests for CreateEmailTemplate with any type of body +func NewCreateEmailTemplateRequestWithBody(server string, id ProjectId, contentType string, body io.Reader) (*http.Request, error) { + var err error + + var pathParam0 string + + pathParam0, err = runtime.StyleParamWithOptions("simple", false, "id", id, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationPath, Type: "string", Format: "uuid"}) + if err != nil { + return nil, err + } + + serverURL, err := url.Parse(server) + if err != nil { + return nil, err + } + + operationPath := fmt.Sprintf("/projects/%s/email-templates", pathParam0) + if operationPath[0] == '/' { + operationPath = "." + operationPath + } + + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err + } + + req, err := http.NewRequest(http.MethodPost, queryURL.String(), body) + if err != nil { return nil, err } @@ -9030,18 +9873,344 @@ func NewListFrontendsRequest(server string, id ProjectId, params *ListFrontendsP return nil, err } - if params != nil { - // queryValues collects non-styled parameters (passthrough, JSON) - // that are safe to round-trip through url.Values.Encode(). - queryValues := queryURL.Query() - // rawQueryFragments collects pre-encoded query fragments from - // styled parameters, preserving literal commas as delimiters - // per the OpenAPI spec (e.g. "color=blue,black,brown"). - var rawQueryFragments []string + if params != nil { + // queryValues collects non-styled parameters (passthrough, JSON) + // that are safe to round-trip through url.Values.Encode(). + queryValues := queryURL.Query() + // rawQueryFragments collects pre-encoded query fragments from + // styled parameters, preserving literal commas as delimiters + // per the OpenAPI spec (e.g. "color=blue,black,brown"). + var rawQueryFragments []string + + if params.Page != nil { + + if queryFrag, err := runtime.StyleParamWithOptions("form", true, "page", *params.Page, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "integer", Format: ""}); err != nil { + return nil, err + } else { + for _, qp := range strings.Split(queryFrag, "&") { + rawQueryFragments = append(rawQueryFragments, qp) + } + } + + } + + if params.Limit != nil { + + if queryFrag, err := runtime.StyleParamWithOptions("form", true, "limit", *params.Limit, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "integer", Format: ""}); err != nil { + return nil, err + } else { + for _, qp := range strings.Split(queryFrag, "&") { + rawQueryFragments = append(rawQueryFragments, qp) + } + } + + } + + if encoded := queryValues.Encode(); encoded != "" { + rawQueryFragments = append(rawQueryFragments, encoded) + } + queryURL.RawQuery = strings.Join(rawQueryFragments, "&") + } + + req, err := http.NewRequest(http.MethodGet, queryURL.String(), nil) + if err != nil { + return nil, err + } + + return req, nil +} + +// NewCreateFrontendRequestWithBody generates requests for CreateFrontend with any type of body +func NewCreateFrontendRequestWithBody(server string, id ProjectId, contentType string, body io.Reader) (*http.Request, error) { + var err error + + var pathParam0 string + + pathParam0, err = runtime.StyleParamWithOptions("simple", false, "id", id, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationPath, Type: "string", Format: "uuid"}) + if err != nil { + return nil, err + } + + serverURL, err := url.Parse(server) + if err != nil { + return nil, err + } + + operationPath := fmt.Sprintf("/projects/%s/frontends", pathParam0) + if operationPath[0] == '/' { + operationPath = "." + operationPath + } + + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err + } + + req, err := http.NewRequest(http.MethodPost, queryURL.String(), body) + if err != nil { + return nil, err + } + + req.Header.Add("Content-Type", contentType) + + return req, nil +} + +// NewListProjectFrontendDeploymentLogsRequest generates requests for ListProjectFrontendDeploymentLogs +func NewListProjectFrontendDeploymentLogsRequest(server string, id ProjectId, params *ListProjectFrontendDeploymentLogsParams) (*http.Request, error) { + var err error + + var pathParam0 string + + pathParam0, err = runtime.StyleParamWithOptions("simple", false, "id", id, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationPath, Type: "string", Format: "uuid"}) + if err != nil { + return nil, err + } + + serverURL, err := url.Parse(server) + if err != nil { + return nil, err + } + + operationPath := fmt.Sprintf("/projects/%s/frontends/deployments/logs", pathParam0) + if operationPath[0] == '/' { + operationPath = "." + operationPath + } + + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err + } + + if params != nil { + // queryValues collects non-styled parameters (passthrough, JSON) + // that are safe to round-trip through url.Values.Encode(). + queryValues := queryURL.Query() + // rawQueryFragments collects pre-encoded query fragments from + // styled parameters, preserving literal commas as delimiters + // per the OpenAPI spec (e.g. "color=blue,black,brown"). + var rawQueryFragments []string + + if params.Limit != nil { + + if queryFrag, err := runtime.StyleParamWithOptions("form", true, "limit", *params.Limit, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "integer", Format: ""}); err != nil { + return nil, err + } else { + for _, qp := range strings.Split(queryFrag, "&") { + rawQueryFragments = append(rawQueryFragments, qp) + } + } + + } + + if params.Cursor != nil { + + if queryFrag, err := runtime.StyleParamWithOptions("form", true, "cursor", *params.Cursor, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "string", Format: ""}); err != nil { + return nil, err + } else { + for _, qp := range strings.Split(queryFrag, "&") { + rawQueryFragments = append(rawQueryFragments, qp) + } + } + + } + + if params.StartTime != nil { + + if queryFrag, err := runtime.StyleParamWithOptions("form", true, "start_time", *params.StartTime, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "integer", Format: "int64"}); err != nil { + return nil, err + } else { + for _, qp := range strings.Split(queryFrag, "&") { + rawQueryFragments = append(rawQueryFragments, qp) + } + } + + } + + if params.EndTime != nil { + + if queryFrag, err := runtime.StyleParamWithOptions("form", true, "end_time", *params.EndTime, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "integer", Format: "int64"}); err != nil { + return nil, err + } else { + for _, qp := range strings.Split(queryFrag, "&") { + rawQueryFragments = append(rawQueryFragments, qp) + } + } + + } + + if params.Q != nil { + + if queryFrag, err := runtime.StyleParamWithOptions("form", true, "q", *params.Q, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "string", Format: ""}); err != nil { + return nil, err + } else { + for _, qp := range strings.Split(queryFrag, "&") { + rawQueryFragments = append(rawQueryFragments, qp) + } + } + + } + + if params.Level != nil { + + if queryFrag, err := runtime.StyleParamWithOptions("form", true, "level", *params.Level, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "string", Format: ""}); err != nil { + return nil, err + } else { + for _, qp := range strings.Split(queryFrag, "&") { + rawQueryFragments = append(rawQueryFragments, qp) + } + } + + } + + if params.Region != nil { + + if queryFrag, err := runtime.StyleParamWithOptions("form", true, "region", *params.Region, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "string", Format: ""}); err != nil { + return nil, err + } else { + for _, qp := range strings.Split(queryFrag, "&") { + rawQueryFragments = append(rawQueryFragments, qp) + } + } + + } + + if params.DeploymentId != nil { + + if queryFrag, err := runtime.StyleParamWithOptions("form", true, "deployment_id", *params.DeploymentId, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "string", Format: "uuid"}); err != nil { + return nil, err + } else { + for _, qp := range strings.Split(queryFrag, "&") { + rawQueryFragments = append(rawQueryFragments, qp) + } + } + + } + + if params.Stage != nil { + + if queryFrag, err := runtime.StyleParamWithOptions("form", true, "stage", *params.Stage, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "string", Format: ""}); err != nil { + return nil, err + } else { + for _, qp := range strings.Split(queryFrag, "&") { + rawQueryFragments = append(rawQueryFragments, qp) + } + } + + } + + if encoded := queryValues.Encode(); encoded != "" { + rawQueryFragments = append(rawQueryFragments, encoded) + } + queryURL.RawQuery = strings.Join(rawQueryFragments, "&") + } + + req, err := http.NewRequest(http.MethodGet, queryURL.String(), nil) + if err != nil { + return nil, err + } + + return req, nil +} + +// NewListProjectFrontendLogsRequest generates requests for ListProjectFrontendLogs +func NewListProjectFrontendLogsRequest(server string, id ProjectId, params *ListProjectFrontendLogsParams) (*http.Request, error) { + var err error + + var pathParam0 string + + pathParam0, err = runtime.StyleParamWithOptions("simple", false, "id", id, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationPath, Type: "string", Format: "uuid"}) + if err != nil { + return nil, err + } + + serverURL, err := url.Parse(server) + if err != nil { + return nil, err + } + + operationPath := fmt.Sprintf("/projects/%s/frontends/logs", pathParam0) + if operationPath[0] == '/' { + operationPath = "." + operationPath + } + + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err + } + + if params != nil { + // queryValues collects non-styled parameters (passthrough, JSON) + // that are safe to round-trip through url.Values.Encode(). + queryValues := queryURL.Query() + // rawQueryFragments collects pre-encoded query fragments from + // styled parameters, preserving literal commas as delimiters + // per the OpenAPI spec (e.g. "color=blue,black,brown"). + var rawQueryFragments []string + + if params.Limit != nil { + + if queryFrag, err := runtime.StyleParamWithOptions("form", true, "limit", *params.Limit, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "integer", Format: ""}); err != nil { + return nil, err + } else { + for _, qp := range strings.Split(queryFrag, "&") { + rawQueryFragments = append(rawQueryFragments, qp) + } + } + + } + + if params.Cursor != nil { + + if queryFrag, err := runtime.StyleParamWithOptions("form", true, "cursor", *params.Cursor, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "string", Format: ""}); err != nil { + return nil, err + } else { + for _, qp := range strings.Split(queryFrag, "&") { + rawQueryFragments = append(rawQueryFragments, qp) + } + } + + } + + if params.StartTime != nil { + + if queryFrag, err := runtime.StyleParamWithOptions("form", true, "start_time", *params.StartTime, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "integer", Format: "int64"}); err != nil { + return nil, err + } else { + for _, qp := range strings.Split(queryFrag, "&") { + rawQueryFragments = append(rawQueryFragments, qp) + } + } + + } + + if params.EndTime != nil { + + if queryFrag, err := runtime.StyleParamWithOptions("form", true, "end_time", *params.EndTime, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "integer", Format: "int64"}); err != nil { + return nil, err + } else { + for _, qp := range strings.Split(queryFrag, "&") { + rawQueryFragments = append(rawQueryFragments, qp) + } + } + + } + + if params.Q != nil { + + if queryFrag, err := runtime.StyleParamWithOptions("form", true, "q", *params.Q, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "string", Format: ""}); err != nil { + return nil, err + } else { + for _, qp := range strings.Split(queryFrag, "&") { + rawQueryFragments = append(rawQueryFragments, qp) + } + } + + } - if params.Page != nil { + if params.Level != nil { - if queryFrag, err := runtime.StyleParamWithOptions("form", true, "page", *params.Page, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "integer", Format: ""}); err != nil { + if queryFrag, err := runtime.StyleParamWithOptions("form", true, "level", *params.Level, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "string", Format: ""}); err != nil { return nil, err } else { for _, qp := range strings.Split(queryFrag, "&") { @@ -9051,9 +10220,9 @@ func NewListFrontendsRequest(server string, id ProjectId, params *ListFrontendsP } - if params.Limit != nil { + if params.Region != nil { - if queryFrag, err := runtime.StyleParamWithOptions("form", true, "limit", *params.Limit, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "integer", Format: ""}); err != nil { + if queryFrag, err := runtime.StyleParamWithOptions("form", true, "region", *params.Region, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "string", Format: ""}); err != nil { return nil, err } else { for _, qp := range strings.Split(queryFrag, "&") { @@ -9077,42 +10246,6 @@ func NewListFrontendsRequest(server string, id ProjectId, params *ListFrontendsP return req, nil } -// NewCreateFrontendRequestWithBody generates requests for CreateFrontend with any type of body -func NewCreateFrontendRequestWithBody(server string, id ProjectId, contentType string, body io.Reader) (*http.Request, error) { - var err error - - var pathParam0 string - - pathParam0, err = runtime.StyleParamWithOptions("simple", false, "id", id, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationPath, Type: "string", Format: "uuid"}) - if err != nil { - return nil, err - } - - serverURL, err := url.Parse(server) - if err != nil { - return nil, err - } - - operationPath := fmt.Sprintf("/projects/%s/frontends", pathParam0) - if operationPath[0] == '/' { - operationPath = "." + operationPath - } - - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } - - req, err := http.NewRequest(http.MethodPost, queryURL.String(), body) - if err != nil { - return nil, err - } - - req.Header.Add("Content-Type", contentType) - - return req, nil -} - // NewDeleteFrontendRequest generates requests for DeleteFrontend func NewDeleteFrontendRequest(server string, id ProjectId, frontendId FrontendId) (*http.Request, error) { var err error @@ -9336,6 +10469,18 @@ func NewGetFrontendDeploymentLogsRequest(server string, id ProjectId, frontendId } + if params.Cursor != nil { + + if queryFrag, err := runtime.StyleParamWithOptions("form", true, "cursor", *params.Cursor, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "string", Format: ""}); err != nil { + return nil, err + } else { + for _, qp := range strings.Split(queryFrag, "&") { + rawQueryFragments = append(rawQueryFragments, qp) + } + } + + } + if params.StartTime != nil { if queryFrag, err := runtime.StyleParamWithOptions("form", true, "start_time", *params.StartTime, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "integer", Format: "int64"}); err != nil { @@ -9360,9 +10505,33 @@ func NewGetFrontendDeploymentLogsRequest(server string, id ProjectId, frontendId } - if params.FilterPattern != nil { + if params.Q != nil { + + if queryFrag, err := runtime.StyleParamWithOptions("form", true, "q", *params.Q, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "string", Format: ""}); err != nil { + return nil, err + } else { + for _, qp := range strings.Split(queryFrag, "&") { + rawQueryFragments = append(rawQueryFragments, qp) + } + } + + } + + if params.Level != nil { + + if queryFrag, err := runtime.StyleParamWithOptions("form", true, "level", *params.Level, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "string", Format: ""}); err != nil { + return nil, err + } else { + for _, qp := range strings.Split(queryFrag, "&") { + rawQueryFragments = append(rawQueryFragments, qp) + } + } + + } + + if params.Region != nil { - if queryFrag, err := runtime.StyleParamWithOptions("form", true, "filter_pattern", *params.FilterPattern, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "string", Format: ""}); err != nil { + if queryFrag, err := runtime.StyleParamWithOptions("form", true, "region", *params.Region, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "string", Format: ""}); err != nil { return nil, err } else { for _, qp := range strings.Split(queryFrag, "&") { @@ -9372,9 +10541,9 @@ func NewGetFrontendDeploymentLogsRequest(server string, id ProjectId, frontendId } - if params.NextToken != nil { + if params.Stage != nil { - if queryFrag, err := runtime.StyleParamWithOptions("form", true, "next_token", *params.NextToken, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "string", Format: ""}); err != nil { + if queryFrag, err := runtime.StyleParamWithOptions("form", true, "stage", *params.Stage, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "string", Format: ""}); err != nil { return nil, err } else { for _, qp := range strings.Split(queryFrag, "&") { @@ -9588,6 +10757,18 @@ func NewGetFrontendLogsRequest(server string, id ProjectId, frontendId FrontendI } + if params.Cursor != nil { + + if queryFrag, err := runtime.StyleParamWithOptions("form", true, "cursor", *params.Cursor, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "string", Format: ""}); err != nil { + return nil, err + } else { + for _, qp := range strings.Split(queryFrag, "&") { + rawQueryFragments = append(rawQueryFragments, qp) + } + } + + } + if params.StartTime != nil { if queryFrag, err := runtime.StyleParamWithOptions("form", true, "start_time", *params.StartTime, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "integer", Format: "int64"}); err != nil { @@ -9612,9 +10793,21 @@ func NewGetFrontendLogsRequest(server string, id ProjectId, frontendId FrontendI } - if params.FilterPattern != nil { + if params.Q != nil { + + if queryFrag, err := runtime.StyleParamWithOptions("form", true, "q", *params.Q, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "string", Format: ""}); err != nil { + return nil, err + } else { + for _, qp := range strings.Split(queryFrag, "&") { + rawQueryFragments = append(rawQueryFragments, qp) + } + } + + } + + if params.Level != nil { - if queryFrag, err := runtime.StyleParamWithOptions("form", true, "filter_pattern", *params.FilterPattern, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "string", Format: ""}); err != nil { + if queryFrag, err := runtime.StyleParamWithOptions("form", true, "level", *params.Level, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "string", Format: ""}); err != nil { return nil, err } else { for _, qp := range strings.Split(queryFrag, "&") { @@ -9624,9 +10817,9 @@ func NewGetFrontendLogsRequest(server string, id ProjectId, frontendId FrontendI } - if params.NextToken != nil { + if params.Region != nil { - if queryFrag, err := runtime.StyleParamWithOptions("form", true, "next_token", *params.NextToken, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "string", Format: ""}); err != nil { + if queryFrag, err := runtime.StyleParamWithOptions("form", true, "region", *params.Region, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "string", Format: ""}); err != nil { return nil, err } else { for _, qp := range strings.Split(queryFrag, "&") { @@ -9691,6 +10884,74 @@ func NewRedeployFrontendRequest(server string, id ProjectId, frontendId Frontend return req, nil } +// NewGetFrontendUsageHistoryRequest generates requests for GetFrontendUsageHistory +func NewGetFrontendUsageHistoryRequest(server string, id ProjectId, frontendId FrontendId, params *GetFrontendUsageHistoryParams) (*http.Request, error) { + var err error + + var pathParam0 string + + pathParam0, err = runtime.StyleParamWithOptions("simple", false, "id", id, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationPath, Type: "string", Format: "uuid"}) + if err != nil { + return nil, err + } + + var pathParam1 string + + pathParam1, err = runtime.StyleParamWithOptions("simple", false, "frontendId", frontendId, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationPath, Type: "string", Format: "uuid"}) + if err != nil { + return nil, err + } + + serverURL, err := url.Parse(server) + if err != nil { + return nil, err + } + + operationPath := fmt.Sprintf("/projects/%s/frontends/%s/usage", pathParam0, pathParam1) + if operationPath[0] == '/' { + operationPath = "." + operationPath + } + + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err + } + + if params != nil { + // queryValues collects non-styled parameters (passthrough, JSON) + // that are safe to round-trip through url.Values.Encode(). + queryValues := queryURL.Query() + // rawQueryFragments collects pre-encoded query fragments from + // styled parameters, preserving literal commas as delimiters + // per the OpenAPI spec (e.g. "color=blue,black,brown"). + var rawQueryFragments []string + + if params.Days != nil { + + if queryFrag, err := runtime.StyleParamWithOptions("form", true, "days", *params.Days, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "integer", Format: ""}); err != nil { + return nil, err + } else { + for _, qp := range strings.Split(queryFrag, "&") { + rawQueryFragments = append(rawQueryFragments, qp) + } + } + + } + + if encoded := queryValues.Encode(); encoded != "" { + rawQueryFragments = append(rawQueryFragments, encoded) + } + queryURL.RawQuery = strings.Join(rawQueryFragments, "&") + } + + req, err := http.NewRequest(http.MethodGet, queryURL.String(), nil) + if err != nil { + return nil, err + } + + return req, nil +} + // NewListFunctionsRequest generates requests for ListFunctions func NewListFunctionsRequest(server string, id ProjectId, params *ListFunctionsParams) (*http.Request, error) { var err error @@ -9795,43 +11056,143 @@ func NewCreateFunctionRequestWithBody(server string, id ProjectId, contentType s return nil, err } - req.Header.Add("Content-Type", contentType) + req.Header.Add("Content-Type", contentType) + + return req, nil +} + +// NewCreateFunctionsBatchRequestWithBody generates requests for CreateFunctionsBatch with any type of body +func NewCreateFunctionsBatchRequestWithBody(server string, id ProjectId, contentType string, body io.Reader) (*http.Request, error) { + var err error + + var pathParam0 string + + pathParam0, err = runtime.StyleParamWithOptions("simple", false, "id", id, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationPath, Type: "string", Format: "uuid"}) + if err != nil { + return nil, err + } + + serverURL, err := url.Parse(server) + if err != nil { + return nil, err + } + + operationPath := fmt.Sprintf("/projects/%s/functions/batch", pathParam0) + if operationPath[0] == '/' { + operationPath = "." + operationPath + } + + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err + } + + req, err := http.NewRequest(http.MethodPost, queryURL.String(), body) + if err != nil { + return nil, err + } + + req.Header.Add("Content-Type", contentType) + + return req, nil +} + +// NewStreamProjectFunctionLogsRequest generates requests for StreamProjectFunctionLogs +func NewStreamProjectFunctionLogsRequest(server string, id ProjectId, params *StreamProjectFunctionLogsParams) (*http.Request, error) { + var err error + + var pathParam0 string + + pathParam0, err = runtime.StyleParamWithOptions("simple", false, "id", id, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationPath, Type: "string", Format: "uuid"}) + if err != nil { + return nil, err + } + + serverURL, err := url.Parse(server) + if err != nil { + return nil, err + } + + operationPath := fmt.Sprintf("/projects/%s/functions/logs/stream", pathParam0) + if operationPath[0] == '/' { + operationPath = "." + operationPath + } + + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err + } + + if params != nil { + // queryValues collects non-styled parameters (passthrough, JSON) + // that are safe to round-trip through url.Values.Encode(). + queryValues := queryURL.Query() + // rawQueryFragments collects pre-encoded query fragments from + // styled parameters, preserving literal commas as delimiters + // per the OpenAPI spec (e.g. "color=blue,black,brown"). + var rawQueryFragments []string + + if params.BackfillLimit != nil { + + if queryFrag, err := runtime.StyleParamWithOptions("form", true, "backfill_limit", *params.BackfillLimit, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "integer", Format: ""}); err != nil { + return nil, err + } else { + for _, qp := range strings.Split(queryFrag, "&") { + rawQueryFragments = append(rawQueryFragments, qp) + } + } + + } + + if params.StartTime != nil { + + if queryFrag, err := runtime.StyleParamWithOptions("form", true, "start_time", *params.StartTime, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "integer", Format: "int64"}); err != nil { + return nil, err + } else { + for _, qp := range strings.Split(queryFrag, "&") { + rawQueryFragments = append(rawQueryFragments, qp) + } + } - return req, nil -} + } -// NewCreateFunctionsBatchRequestWithBody generates requests for CreateFunctionsBatch with any type of body -func NewCreateFunctionsBatchRequestWithBody(server string, id ProjectId, contentType string, body io.Reader) (*http.Request, error) { - var err error + if params.Q != nil { - var pathParam0 string + if queryFrag, err := runtime.StyleParamWithOptions("form", true, "q", *params.Q, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "string", Format: ""}); err != nil { + return nil, err + } else { + for _, qp := range strings.Split(queryFrag, "&") { + rawQueryFragments = append(rawQueryFragments, qp) + } + } - pathParam0, err = runtime.StyleParamWithOptions("simple", false, "id", id, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationPath, Type: "string", Format: "uuid"}) - if err != nil { - return nil, err + } + + if encoded := queryValues.Encode(); encoded != "" { + rawQueryFragments = append(rawQueryFragments, encoded) + } + queryURL.RawQuery = strings.Join(rawQueryFragments, "&") } - serverURL, err := url.Parse(server) + req, err := http.NewRequest(http.MethodGet, queryURL.String(), nil) if err != nil { return nil, err } - operationPath := fmt.Sprintf("/projects/%s/functions/batch", pathParam0) - if operationPath[0] == '/' { - operationPath = "." + operationPath - } + if params != nil { - queryURL, err := serverURL.Parse(operationPath) - if err != nil { - return nil, err - } + if params.LastEventID != nil { + var headerParam0 string - req, err := http.NewRequest(http.MethodPost, queryURL.String(), body) - if err != nil { - return nil, err - } + headerParam0, err = runtime.StyleParamWithOptions("simple", false, "Last-Event-ID", *params.LastEventID, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationHeader, Type: "string", Format: ""}) + if err != nil { + return nil, err + } - req.Header.Add("Content-Type", contentType) + req.Header.Set("Last-Event-ID", headerParam0) + } + + } return req, nil } @@ -10113,9 +11474,81 @@ func NewGetFunctionDeploymentLogsRequest(server string, id ProjectId, functionId } - if params.NextToken != nil { + if params.Cursor != nil { + + if queryFrag, err := runtime.StyleParamWithOptions("form", true, "cursor", *params.Cursor, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "string", Format: ""}); err != nil { + return nil, err + } else { + for _, qp := range strings.Split(queryFrag, "&") { + rawQueryFragments = append(rawQueryFragments, qp) + } + } + + } + + if params.StartTime != nil { + + if queryFrag, err := runtime.StyleParamWithOptions("form", true, "start_time", *params.StartTime, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "integer", Format: "int64"}); err != nil { + return nil, err + } else { + for _, qp := range strings.Split(queryFrag, "&") { + rawQueryFragments = append(rawQueryFragments, qp) + } + } + + } + + if params.EndTime != nil { + + if queryFrag, err := runtime.StyleParamWithOptions("form", true, "end_time", *params.EndTime, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "integer", Format: "int64"}); err != nil { + return nil, err + } else { + for _, qp := range strings.Split(queryFrag, "&") { + rawQueryFragments = append(rawQueryFragments, qp) + } + } + + } + + if params.Q != nil { + + if queryFrag, err := runtime.StyleParamWithOptions("form", true, "q", *params.Q, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "string", Format: ""}); err != nil { + return nil, err + } else { + for _, qp := range strings.Split(queryFrag, "&") { + rawQueryFragments = append(rawQueryFragments, qp) + } + } + + } + + if params.Level != nil { + + if queryFrag, err := runtime.StyleParamWithOptions("form", true, "level", *params.Level, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "string", Format: ""}); err != nil { + return nil, err + } else { + for _, qp := range strings.Split(queryFrag, "&") { + rawQueryFragments = append(rawQueryFragments, qp) + } + } + + } + + if params.Region != nil { + + if queryFrag, err := runtime.StyleParamWithOptions("form", true, "region", *params.Region, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "string", Format: ""}); err != nil { + return nil, err + } else { + for _, qp := range strings.Split(queryFrag, "&") { + rawQueryFragments = append(rawQueryFragments, qp) + } + } + + } + + if params.Stage != nil { - if queryFrag, err := runtime.StyleParamWithOptions("form", true, "next_token", *params.NextToken, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "string", Format: ""}); err != nil { + if queryFrag, err := runtime.StyleParamWithOptions("form", true, "stage", *params.Stage, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "string", Format: ""}); err != nil { return nil, err } else { for _, qp := range strings.Split(queryFrag, "&") { @@ -10139,8 +11572,8 @@ func NewGetFunctionDeploymentLogsRequest(server string, id ProjectId, functionId return req, nil } -// NewGetFunctionLogsRequest generates requests for GetFunctionLogs -func NewGetFunctionLogsRequest(server string, id ProjectId, functionId FunctionId, params *GetFunctionLogsParams) (*http.Request, error) { +// NewStreamFunctionLogsRequest generates requests for StreamFunctionLogs +func NewStreamFunctionLogsRequest(server string, id ProjectId, functionId FunctionId, params *StreamFunctionLogsParams) (*http.Request, error) { var err error var pathParam0 string @@ -10162,7 +11595,7 @@ func NewGetFunctionLogsRequest(server string, id ProjectId, functionId FunctionI return nil, err } - operationPath := fmt.Sprintf("/projects/%s/functions/%s/logs", pathParam0, pathParam1) + operationPath := fmt.Sprintf("/projects/%s/functions/%s/logs/stream", pathParam0, pathParam1) if operationPath[0] == '/' { operationPath = "." + operationPath } @@ -10181,9 +11614,9 @@ func NewGetFunctionLogsRequest(server string, id ProjectId, functionId FunctionI // per the OpenAPI spec (e.g. "color=blue,black,brown"). var rawQueryFragments []string - if params.Limit != nil { + if params.BackfillLimit != nil { - if queryFrag, err := runtime.StyleParamWithOptions("form", true, "limit", *params.Limit, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "integer", Format: ""}); err != nil { + if queryFrag, err := runtime.StyleParamWithOptions("form", true, "backfill_limit", *params.BackfillLimit, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "integer", Format: ""}); err != nil { return nil, err } else { for _, qp := range strings.Split(queryFrag, "&") { @@ -10205,33 +11638,9 @@ func NewGetFunctionLogsRequest(server string, id ProjectId, functionId FunctionI } - if params.EndTime != nil { - - if queryFrag, err := runtime.StyleParamWithOptions("form", true, "end_time", *params.EndTime, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "integer", Format: "int64"}); err != nil { - return nil, err - } else { - for _, qp := range strings.Split(queryFrag, "&") { - rawQueryFragments = append(rawQueryFragments, qp) - } - } - - } - - if params.FilterPattern != nil { - - if queryFrag, err := runtime.StyleParamWithOptions("form", true, "filter_pattern", *params.FilterPattern, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "string", Format: ""}); err != nil { - return nil, err - } else { - for _, qp := range strings.Split(queryFrag, "&") { - rawQueryFragments = append(rawQueryFragments, qp) - } - } - - } - - if params.NextToken != nil { + if params.Q != nil { - if queryFrag, err := runtime.StyleParamWithOptions("form", true, "next_token", *params.NextToken, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "string", Format: ""}); err != nil { + if queryFrag, err := runtime.StyleParamWithOptions("form", true, "q", *params.Q, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "string", Format: ""}); err != nil { return nil, err } else { for _, qp := range strings.Split(queryFrag, "&") { @@ -10252,6 +11661,21 @@ func NewGetFunctionLogsRequest(server string, id ProjectId, functionId FunctionI return nil, err } + if params != nil { + + if params.LastEventID != nil { + var headerParam0 string + + headerParam0, err = runtime.StyleParamWithOptions("simple", false, "Last-Event-ID", *params.LastEventID, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationHeader, Type: "string", Format: ""}) + if err != nil { + return nil, err + } + + req.Header.Set("Last-Event-ID", headerParam0) + } + + } + return req, nil } @@ -10428,7 +11852,113 @@ func NewGetFunctionSchedulerRequest(server string, id ProjectId, functionId Func return nil, err } - operationPath := fmt.Sprintf("/projects/%s/functions/%s/schedulers/%s", pathParam0, pathParam1, pathParam2) + operationPath := fmt.Sprintf("/projects/%s/functions/%s/schedulers/%s", pathParam0, pathParam1, pathParam2) + if operationPath[0] == '/' { + operationPath = "." + operationPath + } + + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err + } + + req, err := http.NewRequest(http.MethodGet, queryURL.String(), nil) + if err != nil { + return nil, err + } + + return req, nil +} + +// NewUpdateFunctionSchedulerRequest calls the generic UpdateFunctionScheduler builder with application/json body +func NewUpdateFunctionSchedulerRequest(server string, id ProjectId, functionId FunctionId, schedulerId SchedulerId, body UpdateFunctionSchedulerJSONRequestBody) (*http.Request, error) { + var bodyReader io.Reader + buf, err := json.Marshal(body) + if err != nil { + return nil, err + } + bodyReader = bytes.NewReader(buf) + return NewUpdateFunctionSchedulerRequestWithBody(server, id, functionId, schedulerId, "application/json", bodyReader) +} + +// NewUpdateFunctionSchedulerRequestWithBody generates requests for UpdateFunctionScheduler with any type of body +func NewUpdateFunctionSchedulerRequestWithBody(server string, id ProjectId, functionId FunctionId, schedulerId SchedulerId, contentType string, body io.Reader) (*http.Request, error) { + var err error + + var pathParam0 string + + pathParam0, err = runtime.StyleParamWithOptions("simple", false, "id", id, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationPath, Type: "string", Format: "uuid"}) + if err != nil { + return nil, err + } + + var pathParam1 string + + pathParam1, err = runtime.StyleParamWithOptions("simple", false, "functionId", functionId, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationPath, Type: "string", Format: "uuid"}) + if err != nil { + return nil, err + } + + var pathParam2 string + + pathParam2, err = runtime.StyleParamWithOptions("simple", false, "schedulerId", schedulerId, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationPath, Type: "string", Format: "uuid"}) + if err != nil { + return nil, err + } + + serverURL, err := url.Parse(server) + if err != nil { + return nil, err + } + + operationPath := fmt.Sprintf("/projects/%s/functions/%s/schedulers/%s", pathParam0, pathParam1, pathParam2) + if operationPath[0] == '/' { + operationPath = "." + operationPath + } + + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err + } + + req, err := http.NewRequest(http.MethodPatch, queryURL.String(), body) + if err != nil { + return nil, err + } + + req.Header.Add("Content-Type", contentType) + + return req, nil +} + +// NewGetProjectLogActivityRequest calls the generic GetProjectLogActivity builder with application/json body +func NewGetProjectLogActivityRequest(server string, id ProjectId, body GetProjectLogActivityJSONRequestBody) (*http.Request, error) { + var bodyReader io.Reader + buf, err := json.Marshal(body) + if err != nil { + return nil, err + } + bodyReader = bytes.NewReader(buf) + return NewGetProjectLogActivityRequestWithBody(server, id, "application/json", bodyReader) +} + +// NewGetProjectLogActivityRequestWithBody generates requests for GetProjectLogActivity with any type of body +func NewGetProjectLogActivityRequestWithBody(server string, id ProjectId, contentType string, body io.Reader) (*http.Request, error) { + var err error + + var pathParam0 string + + pathParam0, err = runtime.StyleParamWithOptions("simple", false, "id", id, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationPath, Type: "string", Format: "uuid"}) + if err != nil { + return nil, err + } + + serverURL, err := url.Parse(server) + if err != nil { + return nil, err + } + + operationPath := fmt.Sprintf("/projects/%s/logs/activity", pathParam0) if operationPath[0] == '/' { operationPath = "." + operationPath } @@ -10438,27 +11968,29 @@ func NewGetFunctionSchedulerRequest(server string, id ProjectId, functionId Func return nil, err } - req, err := http.NewRequest(http.MethodGet, queryURL.String(), nil) + req, err := http.NewRequest(http.MethodPost, queryURL.String(), body) if err != nil { return nil, err } + req.Header.Add("Content-Type", contentType) + return req, nil } -// NewUpdateFunctionSchedulerRequest calls the generic UpdateFunctionScheduler builder with application/json body -func NewUpdateFunctionSchedulerRequest(server string, id ProjectId, functionId FunctionId, schedulerId SchedulerId, body UpdateFunctionSchedulerJSONRequestBody) (*http.Request, error) { +// NewSearchProjectLogsRequest calls the generic SearchProjectLogs builder with application/json body +func NewSearchProjectLogsRequest(server string, id ProjectId, body SearchProjectLogsJSONRequestBody) (*http.Request, error) { var bodyReader io.Reader buf, err := json.Marshal(body) if err != nil { return nil, err } bodyReader = bytes.NewReader(buf) - return NewUpdateFunctionSchedulerRequestWithBody(server, id, functionId, schedulerId, "application/json", bodyReader) + return NewSearchProjectLogsRequestWithBody(server, id, "application/json", bodyReader) } -// NewUpdateFunctionSchedulerRequestWithBody generates requests for UpdateFunctionScheduler with any type of body -func NewUpdateFunctionSchedulerRequestWithBody(server string, id ProjectId, functionId FunctionId, schedulerId SchedulerId, contentType string, body io.Reader) (*http.Request, error) { +// NewSearchProjectLogsRequestWithBody generates requests for SearchProjectLogs with any type of body +func NewSearchProjectLogsRequestWithBody(server string, id ProjectId, contentType string, body io.Reader) (*http.Request, error) { var err error var pathParam0 string @@ -10468,26 +12000,12 @@ func NewUpdateFunctionSchedulerRequestWithBody(server string, id ProjectId, func return nil, err } - var pathParam1 string - - pathParam1, err = runtime.StyleParamWithOptions("simple", false, "functionId", functionId, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationPath, Type: "string", Format: "uuid"}) - if err != nil { - return nil, err - } - - var pathParam2 string - - pathParam2, err = runtime.StyleParamWithOptions("simple", false, "schedulerId", schedulerId, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationPath, Type: "string", Format: "uuid"}) - if err != nil { - return nil, err - } - serverURL, err := url.Parse(server) if err != nil { return nil, err } - operationPath := fmt.Sprintf("/projects/%s/functions/%s/schedulers/%s", pathParam0, pathParam1, pathParam2) + operationPath := fmt.Sprintf("/projects/%s/logs/search", pathParam0) if operationPath[0] == '/' { operationPath = "." + operationPath } @@ -10497,7 +12015,7 @@ func NewUpdateFunctionSchedulerRequestWithBody(server string, id ProjectId, func return nil, err } - req, err := http.NewRequest(http.MethodPatch, queryURL.String(), body) + req, err := http.NewRequest(http.MethodPost, queryURL.String(), body) if err != nil { return nil, err } @@ -10954,6 +12472,79 @@ func NewGetRealtimeStatsRequest(server string, id ProjectId) (*http.Request, err return req, nil } +// NewListProjectSchedulersRequest generates requests for ListProjectSchedulers +func NewListProjectSchedulersRequest(server string, id ProjectId, params *ListProjectSchedulersParams) (*http.Request, error) { + var err error + + var pathParam0 string + + pathParam0, err = runtime.StyleParamWithOptions("simple", false, "id", id, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationPath, Type: "string", Format: "uuid"}) + if err != nil { + return nil, err + } + + serverURL, err := url.Parse(server) + if err != nil { + return nil, err + } + + operationPath := fmt.Sprintf("/projects/%s/schedulers", pathParam0) + if operationPath[0] == '/' { + operationPath = "." + operationPath + } + + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err + } + + if params != nil { + // queryValues collects non-styled parameters (passthrough, JSON) + // that are safe to round-trip through url.Values.Encode(). + queryValues := queryURL.Query() + // rawQueryFragments collects pre-encoded query fragments from + // styled parameters, preserving literal commas as delimiters + // per the OpenAPI spec (e.g. "color=blue,black,brown"). + var rawQueryFragments []string + + if params.Page != nil { + + if queryFrag, err := runtime.StyleParamWithOptions("form", true, "page", *params.Page, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "integer", Format: ""}); err != nil { + return nil, err + } else { + for _, qp := range strings.Split(queryFrag, "&") { + rawQueryFragments = append(rawQueryFragments, qp) + } + } + + } + + if params.Limit != nil { + + if queryFrag, err := runtime.StyleParamWithOptions("form", true, "limit", *params.Limit, runtime.StyleParamOptions{ParamLocation: runtime.ParamLocationQuery, Type: "integer", Format: ""}); err != nil { + return nil, err + } else { + for _, qp := range strings.Split(queryFrag, "&") { + rawQueryFragments = append(rawQueryFragments, qp) + } + } + + } + + if encoded := queryValues.Encode(); encoded != "" { + rawQueryFragments = append(rawQueryFragments, encoded) + } + queryURL.RawQuery = strings.Join(rawQueryFragments, "&") + } + + req, err := http.NewRequest(http.MethodGet, queryURL.String(), nil) + if err != nil { + return nil, err + } + + return req, nil +} + // NewListServiceKeysRequest generates requests for ListServiceKeys func NewListServiceKeysRequest(server string, id ProjectId, params *ListServiceKeysParams) (*http.Request, error) { var err error @@ -12716,6 +14307,9 @@ type ClientWithResponsesInterface interface { // GetDefaultEmailTemplateWithResponse request GetDefaultEmailTemplateWithResponse(ctx context.Context, pType GetDefaultEmailTemplateParamsType, reqEditors ...RequestEditorFn) (*GetDefaultEmailTemplateClientResponse, error) + // ListFunctionRegionsWithResponse request + ListFunctionRegionsWithResponse(ctx context.Context, reqEditors ...RequestEditorFn) (*ListFunctionRegionsClientResponse, error) + // ResolveFunctionForInvocationWithResponse request ResolveFunctionForInvocationWithResponse(ctx context.Context, params *ResolveFunctionForInvocationParams, reqEditors ...RequestEditorFn) (*ResolveFunctionForInvocationClientResponse, error) @@ -12766,6 +14360,9 @@ type ClientWithResponsesInterface interface { // RegenerateAnonKeyWithResponse request RegenerateAnonKeyWithResponse(ctx context.Context, id ProjectId, keyId openapi_types.UUID, reqEditors ...RequestEditorFn) (*RegenerateAnonKeyClientResponse, error) + // SetDefaultAnonKeyWithResponse request + SetDefaultAnonKeyWithResponse(ctx context.Context, id ProjectId, keyId openapi_types.UUID, reqEditors ...RequestEditorFn) (*SetDefaultAnonKeyClientResponse, error) + // GetAuthConfigWithResponse request GetAuthConfigWithResponse(ctx context.Context, id ProjectId, reqEditors ...RequestEditorFn) (*GetAuthConfigClientResponse, error) @@ -12774,6 +14371,11 @@ type ClientWithResponsesInterface interface { UpdateAuthConfigWithResponse(ctx context.Context, id ProjectId, body UpdateAuthConfigJSONRequestBody, reqEditors ...RequestEditorFn) (*UpdateAuthConfigClientResponse, error) + // TestEmailConfigWithBodyWithResponse request with any body + TestEmailConfigWithBodyWithResponse(ctx context.Context, id ProjectId, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*TestEmailConfigClientResponse, error) + + TestEmailConfigWithResponse(ctx context.Context, id ProjectId, body TestEmailConfigJSONRequestBody, reqEditors ...RequestEditorFn) (*TestEmailConfigClientResponse, error) + // RenderDefaultManagedAuthPageWithResponse request RenderDefaultManagedAuthPageWithResponse(ctx context.Context, id ProjectId, params *RenderDefaultManagedAuthPageParams, reqEditors ...RequestEditorFn) (*RenderDefaultManagedAuthPageClientResponse, error) @@ -12855,6 +14457,12 @@ type ClientWithResponsesInterface interface { UpdateDatabaseTypeWithResponse(ctx context.Context, id ProjectId, databaseName DatabaseName, body UpdateDatabaseTypeJSONRequestBody, reqEditors ...RequestEditorFn) (*UpdateDatabaseTypeClientResponse, error) + // ListProjectDeploymentsWithResponse request + ListProjectDeploymentsWithResponse(ctx context.Context, id ProjectId, params *ListProjectDeploymentsParams, reqEditors ...RequestEditorFn) (*ListProjectDeploymentsClientResponse, error) + + // ListProjectCustomDomainsWithResponse request + ListProjectCustomDomainsWithResponse(ctx context.Context, id ProjectId, params *ListProjectCustomDomainsParams, reqEditors ...RequestEditorFn) (*ListProjectCustomDomainsClientResponse, error) + // ListEmailTemplatesWithResponse request ListEmailTemplatesWithResponse(ctx context.Context, id ProjectId, reqEditors ...RequestEditorFn) (*ListEmailTemplatesClientResponse, error) @@ -12880,6 +14488,12 @@ type ClientWithResponsesInterface interface { // CreateFrontendWithBodyWithResponse request with any body CreateFrontendWithBodyWithResponse(ctx context.Context, id ProjectId, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*CreateFrontendClientResponse, error) + // ListProjectFrontendDeploymentLogsWithResponse request + ListProjectFrontendDeploymentLogsWithResponse(ctx context.Context, id ProjectId, params *ListProjectFrontendDeploymentLogsParams, reqEditors ...RequestEditorFn) (*ListProjectFrontendDeploymentLogsClientResponse, error) + + // ListProjectFrontendLogsWithResponse request + ListProjectFrontendLogsWithResponse(ctx context.Context, id ProjectId, params *ListProjectFrontendLogsParams, reqEditors ...RequestEditorFn) (*ListProjectFrontendLogsClientResponse, error) + // DeleteFrontendWithResponse request DeleteFrontendWithResponse(ctx context.Context, id ProjectId, frontendId FrontendId, reqEditors ...RequestEditorFn) (*DeleteFrontendClientResponse, error) @@ -12909,6 +14523,9 @@ type ClientWithResponsesInterface interface { // RedeployFrontendWithResponse request RedeployFrontendWithResponse(ctx context.Context, id ProjectId, frontendId FrontendId, reqEditors ...RequestEditorFn) (*RedeployFrontendClientResponse, error) + // GetFrontendUsageHistoryWithResponse request + GetFrontendUsageHistoryWithResponse(ctx context.Context, id ProjectId, frontendId FrontendId, params *GetFrontendUsageHistoryParams, reqEditors ...RequestEditorFn) (*GetFrontendUsageHistoryClientResponse, error) + // ListFunctionsWithResponse request ListFunctionsWithResponse(ctx context.Context, id ProjectId, params *ListFunctionsParams, reqEditors ...RequestEditorFn) (*ListFunctionsClientResponse, error) @@ -12918,6 +14535,9 @@ type ClientWithResponsesInterface interface { // CreateFunctionsBatchWithBodyWithResponse request with any body CreateFunctionsBatchWithBodyWithResponse(ctx context.Context, id ProjectId, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*CreateFunctionsBatchClientResponse, error) + // StreamProjectFunctionLogsWithResponse request + StreamProjectFunctionLogsWithResponse(ctx context.Context, id ProjectId, params *StreamProjectFunctionLogsParams, reqEditors ...RequestEditorFn) (*StreamProjectFunctionLogsClientResponse, error) + // DeleteFunctionWithResponse request DeleteFunctionWithResponse(ctx context.Context, id ProjectId, functionId FunctionId, reqEditors ...RequestEditorFn) (*DeleteFunctionClientResponse, error) @@ -12935,8 +14555,8 @@ type ClientWithResponsesInterface interface { // GetFunctionDeploymentLogsWithResponse request GetFunctionDeploymentLogsWithResponse(ctx context.Context, id ProjectId, functionId FunctionId, deploymentId DeploymentId, params *GetFunctionDeploymentLogsParams, reqEditors ...RequestEditorFn) (*GetFunctionDeploymentLogsClientResponse, error) - // GetFunctionLogsWithResponse request - GetFunctionLogsWithResponse(ctx context.Context, id ProjectId, functionId FunctionId, params *GetFunctionLogsParams, reqEditors ...RequestEditorFn) (*GetFunctionLogsClientResponse, error) + // StreamFunctionLogsWithResponse request + StreamFunctionLogsWithResponse(ctx context.Context, id ProjectId, functionId FunctionId, params *StreamFunctionLogsParams, reqEditors ...RequestEditorFn) (*StreamFunctionLogsClientResponse, error) // ListFunctionSchedulersWithResponse request ListFunctionSchedulersWithResponse(ctx context.Context, id ProjectId, functionId FunctionId, reqEditors ...RequestEditorFn) (*ListFunctionSchedulersClientResponse, error) @@ -12957,6 +14577,16 @@ type ClientWithResponsesInterface interface { UpdateFunctionSchedulerWithResponse(ctx context.Context, id ProjectId, functionId FunctionId, schedulerId SchedulerId, body UpdateFunctionSchedulerJSONRequestBody, reqEditors ...RequestEditorFn) (*UpdateFunctionSchedulerClientResponse, error) + // GetProjectLogActivityWithBodyWithResponse request with any body + GetProjectLogActivityWithBodyWithResponse(ctx context.Context, id ProjectId, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*GetProjectLogActivityClientResponse, error) + + GetProjectLogActivityWithResponse(ctx context.Context, id ProjectId, body GetProjectLogActivityJSONRequestBody, reqEditors ...RequestEditorFn) (*GetProjectLogActivityClientResponse, error) + + // SearchProjectLogsWithBodyWithResponse request with any body + SearchProjectLogsWithBodyWithResponse(ctx context.Context, id ProjectId, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*SearchProjectLogsClientResponse, error) + + SearchProjectLogsWithResponse(ctx context.Context, id ProjectId, body SearchProjectLogsJSONRequestBody, reqEditors ...RequestEditorFn) (*SearchProjectLogsClientResponse, error) + // ListOAuthConfigsWithResponse request ListOAuthConfigsWithResponse(ctx context.Context, id ProjectId, reqEditors ...RequestEditorFn) (*ListOAuthConfigsClientResponse, error) @@ -12990,6 +14620,9 @@ type ClientWithResponsesInterface interface { // GetRealtimeStatsWithResponse request GetRealtimeStatsWithResponse(ctx context.Context, id ProjectId, reqEditors ...RequestEditorFn) (*GetRealtimeStatsClientResponse, error) + // ListProjectSchedulersWithResponse request + ListProjectSchedulersWithResponse(ctx context.Context, id ProjectId, params *ListProjectSchedulersParams, reqEditors ...RequestEditorFn) (*ListProjectSchedulersClientResponse, error) + // ListServiceKeysWithResponse request ListServiceKeysWithResponse(ctx context.Context, id ProjectId, params *ListServiceKeysParams, reqEditors ...RequestEditorFn) (*ListServiceKeysClientResponse, error) @@ -14387,6 +16020,36 @@ func (r GetDefaultEmailTemplateClientResponse) ContentType() string { return "" } +type ListFunctionRegionsClientResponse struct { + Body []byte + HTTPResponse *http.Response + JSON200 *[]FunctionRegion +} + +// Status returns HTTPResponse.Status +func (r ListFunctionRegionsClientResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r ListFunctionRegionsClientResponse) StatusCode() int { + if r.HTTPResponse != nil { + return r.HTTPResponse.StatusCode + } + return 0 +} + +// ContentType is a convenience method to retrieve the Content-Type value from the HTTP response headers +func (r ListFunctionRegionsClientResponse) ContentType() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Header.Get("Content-Type") + } + return "" +} + type ResolveFunctionForInvocationClientResponse struct { Body []byte HTTPResponse *http.Response @@ -14739,6 +16402,8 @@ func (r CreateAnonKeyClientResponse) ContentType() string { type RevokeAnonKeyClientResponse struct { Body []byte HTTPResponse *http.Response + JSON409 *Error + JSON500 *Error } // Status returns HTTPResponse.Status @@ -14825,6 +16490,37 @@ func (r RegenerateAnonKeyClientResponse) ContentType() string { return "" } +type SetDefaultAnonKeyClientResponse struct { + Body []byte + HTTPResponse *http.Response + JSON200 *AnonKey + JSON500 *Error +} + +// Status returns HTTPResponse.Status +func (r SetDefaultAnonKeyClientResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r SetDefaultAnonKeyClientResponse) StatusCode() int { + if r.HTTPResponse != nil { + return r.HTTPResponse.StatusCode + } + return 0 +} + +// ContentType is a convenience method to retrieve the Content-Type value from the HTTP response headers +func (r SetDefaultAnonKeyClientResponse) ContentType() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Header.Get("Content-Type") + } + return "" +} + type GetAuthConfigClientResponse struct { Body []byte HTTPResponse *http.Response @@ -14885,6 +16581,36 @@ func (r UpdateAuthConfigClientResponse) ContentType() string { return "" } +type TestEmailConfigClientResponse struct { + Body []byte + HTTPResponse *http.Response + JSON200 *TestEmailResponse +} + +// Status returns HTTPResponse.Status +func (r TestEmailConfigClientResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r TestEmailConfigClientResponse) StatusCode() int { + if r.HTTPResponse != nil { + return r.HTTPResponse.StatusCode + } + return 0 +} + +// ContentType is a convenience method to retrieve the Content-Type value from the HTTP response headers +func (r TestEmailConfigClientResponse) ContentType() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Header.Get("Content-Type") + } + return "" +} + type RenderDefaultManagedAuthPageClientResponse struct { Body []byte HTTPResponse *http.Response @@ -15487,11 +17213,84 @@ func (r DeleteDatabaseClientResponse) ContentType() string { type GetDatabaseClientResponse struct { Body []byte HTTPResponse *http.Response - JSON200 *Database + JSON200 *Database +} + +// Status returns HTTPResponse.Status +func (r GetDatabaseClientResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r GetDatabaseClientResponse) StatusCode() int { + if r.HTTPResponse != nil { + return r.HTTPResponse.StatusCode + } + return 0 +} + +// ContentType is a convenience method to retrieve the Content-Type value from the HTTP response headers +func (r GetDatabaseClientResponse) ContentType() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Header.Get("Content-Type") + } + return "" +} + +type ResetDatabasePasswordClientResponse struct { + Body []byte + HTTPResponse *http.Response + JSON200 *struct { + // ConnectionString Updated pgproxy connection string using Volcano-managed credentials. + ConnectionString *string `json:"connection_string,omitempty"` + Message *string `json:"message,omitempty"` + + // NewPassword New Volcano-managed client password. Always starts with `vpg_`. + NewPassword *string `json:"new_password,omitempty"` + + // RoleName Volcano-managed client database role name + RoleName *string `json:"role_name,omitempty"` + } +} + +// Status returns HTTPResponse.Status +func (r ResetDatabasePasswordClientResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r ResetDatabasePasswordClientResponse) StatusCode() int { + if r.HTTPResponse != nil { + return r.HTTPResponse.StatusCode + } + return 0 +} + +// ContentType is a convenience method to retrieve the Content-Type value from the HTTP response headers +func (r ResetDatabasePasswordClientResponse) ContentType() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Header.Get("Content-Type") + } + return "" +} + +type GetDatabaseStatsClientResponse struct { + Body []byte + HTTPResponse *http.Response + JSON200 *DatabaseStats + JSON400 *Error + JSON404 *Error + JSON503 *Error } // Status returns HTTPResponse.Status -func (r GetDatabaseClientResponse) Status() string { +func (r GetDatabaseStatsClientResponse) Status() string { if r.HTTPResponse != nil { return r.HTTPResponse.Status } @@ -15499,7 +17298,7 @@ func (r GetDatabaseClientResponse) Status() string { } // StatusCode returns HTTPResponse.StatusCode -func (r GetDatabaseClientResponse) StatusCode() int { +func (r GetDatabaseStatsClientResponse) StatusCode() int { if r.HTTPResponse != nil { return r.HTTPResponse.StatusCode } @@ -15507,26 +17306,21 @@ func (r GetDatabaseClientResponse) StatusCode() int { } // ContentType is a convenience method to retrieve the Content-Type value from the HTTP response headers -func (r GetDatabaseClientResponse) ContentType() string { +func (r GetDatabaseStatsClientResponse) ContentType() string { if r.HTTPResponse != nil { return r.HTTPResponse.Header.Get("Content-Type") } return "" } -type ResetDatabasePasswordClientResponse struct { +type UpdateDatabaseTypeClientResponse struct { Body []byte HTTPResponse *http.Response - JSON200 *struct { - ConnectionString *string `json:"connection_string,omitempty"` - Message *string `json:"message,omitempty"` - NewPassword *string `json:"new_password,omitempty"` - RoleName *string `json:"role_name,omitempty"` - } + JSON200 *Database } // Status returns HTTPResponse.Status -func (r ResetDatabasePasswordClientResponse) Status() string { +func (r UpdateDatabaseTypeClientResponse) Status() string { if r.HTTPResponse != nil { return r.HTTPResponse.Status } @@ -15534,7 +17328,7 @@ func (r ResetDatabasePasswordClientResponse) Status() string { } // StatusCode returns HTTPResponse.StatusCode -func (r ResetDatabasePasswordClientResponse) StatusCode() int { +func (r UpdateDatabaseTypeClientResponse) StatusCode() int { if r.HTTPResponse != nil { return r.HTTPResponse.StatusCode } @@ -15542,24 +17336,25 @@ func (r ResetDatabasePasswordClientResponse) StatusCode() int { } // ContentType is a convenience method to retrieve the Content-Type value from the HTTP response headers -func (r ResetDatabasePasswordClientResponse) ContentType() string { +func (r UpdateDatabaseTypeClientResponse) ContentType() string { if r.HTTPResponse != nil { return r.HTTPResponse.Header.Get("Content-Type") } return "" } -type GetDatabaseStatsClientResponse struct { +type ListProjectDeploymentsClientResponse struct { Body []byte HTTPResponse *http.Response - JSON200 *DatabaseStats + JSON200 *PaginatedProjectDeployments JSON400 *Error - JSON404 *Error - JSON503 *Error + JSON401 *Error + JSON403 *Error + JSON500 *Error } // Status returns HTTPResponse.Status -func (r GetDatabaseStatsClientResponse) Status() string { +func (r ListProjectDeploymentsClientResponse) Status() string { if r.HTTPResponse != nil { return r.HTTPResponse.Status } @@ -15567,7 +17362,7 @@ func (r GetDatabaseStatsClientResponse) Status() string { } // StatusCode returns HTTPResponse.StatusCode -func (r GetDatabaseStatsClientResponse) StatusCode() int { +func (r ListProjectDeploymentsClientResponse) StatusCode() int { if r.HTTPResponse != nil { return r.HTTPResponse.StatusCode } @@ -15575,21 +17370,25 @@ func (r GetDatabaseStatsClientResponse) StatusCode() int { } // ContentType is a convenience method to retrieve the Content-Type value from the HTTP response headers -func (r GetDatabaseStatsClientResponse) ContentType() string { +func (r ListProjectDeploymentsClientResponse) ContentType() string { if r.HTTPResponse != nil { return r.HTTPResponse.Header.Get("Content-Type") } return "" } -type UpdateDatabaseTypeClientResponse struct { +type ListProjectCustomDomainsClientResponse struct { Body []byte HTTPResponse *http.Response - JSON200 *Database + JSON200 *PaginatedProjectCustomDomains + JSON400 *Error + JSON401 *Error + JSON403 *Error + JSON500 *Error } // Status returns HTTPResponse.Status -func (r UpdateDatabaseTypeClientResponse) Status() string { +func (r ListProjectCustomDomainsClientResponse) Status() string { if r.HTTPResponse != nil { return r.HTTPResponse.Status } @@ -15597,7 +17396,7 @@ func (r UpdateDatabaseTypeClientResponse) Status() string { } // StatusCode returns HTTPResponse.StatusCode -func (r UpdateDatabaseTypeClientResponse) StatusCode() int { +func (r ListProjectCustomDomainsClientResponse) StatusCode() int { if r.HTTPResponse != nil { return r.HTTPResponse.StatusCode } @@ -15605,7 +17404,7 @@ func (r UpdateDatabaseTypeClientResponse) StatusCode() int { } // ContentType is a convenience method to retrieve the Content-Type value from the HTTP response headers -func (r UpdateDatabaseTypeClientResponse) ContentType() string { +func (r ListProjectCustomDomainsClientResponse) ContentType() string { if r.HTTPResponse != nil { return r.HTTPResponse.Header.Get("Content-Type") } @@ -15837,6 +17636,76 @@ func (r CreateFrontendClientResponse) ContentType() string { return "" } +type ListProjectFrontendDeploymentLogsClientResponse struct { + Body []byte + HTTPResponse *http.Response + JSON200 *ListLogsResponse + JSON400 *Error + JSON401 *Error + JSON403 *Error + JSON404 *Error + JSON503 *Error +} + +// Status returns HTTPResponse.Status +func (r ListProjectFrontendDeploymentLogsClientResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r ListProjectFrontendDeploymentLogsClientResponse) StatusCode() int { + if r.HTTPResponse != nil { + return r.HTTPResponse.StatusCode + } + return 0 +} + +// ContentType is a convenience method to retrieve the Content-Type value from the HTTP response headers +func (r ListProjectFrontendDeploymentLogsClientResponse) ContentType() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Header.Get("Content-Type") + } + return "" +} + +type ListProjectFrontendLogsClientResponse struct { + Body []byte + HTTPResponse *http.Response + JSON200 *ListLogsResponse + JSON400 *Error + JSON401 *Error + JSON403 *Error + JSON404 *Error + JSON503 *Error +} + +// Status returns HTTPResponse.Status +func (r ListProjectFrontendLogsClientResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r ListProjectFrontendLogsClientResponse) StatusCode() int { + if r.HTTPResponse != nil { + return r.HTTPResponse.StatusCode + } + return 0 +} + +// ContentType is a convenience method to retrieve the Content-Type value from the HTTP response headers +func (r ListProjectFrontendLogsClientResponse) ContentType() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Header.Get("Content-Type") + } + return "" +} + type DeleteFrontendClientResponse struct { Body []byte HTTPResponse *http.Response @@ -15945,7 +17814,7 @@ func (r ListFrontendDeploymentsClientResponse) ContentType() string { type GetFrontendDeploymentLogsClientResponse struct { Body []byte HTTPResponse *http.Response - JSON200 *GetLogsResponse + JSON200 *ListLogsResponse JSON400 *Error JSON401 *Error JSON403 *Error @@ -16088,7 +17957,7 @@ func (r CreateFrontendCustomDomainClientResponse) ContentType() string { type GetFrontendLogsClientResponse struct { Body []byte HTTPResponse *http.Response - JSON200 *GetLogsResponse + JSON200 *ListLogsResponse JSON400 *Error JSON401 *Error JSON403 *Error @@ -16158,6 +18027,41 @@ func (r RedeployFrontendClientResponse) ContentType() string { return "" } +type GetFrontendUsageHistoryClientResponse struct { + Body []byte + HTTPResponse *http.Response + JSON200 *FrontendUsageHistoryResponse + JSON400 *Error + JSON401 *Error + JSON403 *Error + JSON404 *Error + JSON500 *Error +} + +// Status returns HTTPResponse.Status +func (r GetFrontendUsageHistoryClientResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r GetFrontendUsageHistoryClientResponse) StatusCode() int { + if r.HTTPResponse != nil { + return r.HTTPResponse.StatusCode + } + return 0 +} + +// ContentType is a convenience method to retrieve the Content-Type value from the HTTP response headers +func (r GetFrontendUsageHistoryClientResponse) ContentType() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Header.Get("Content-Type") + } + return "" +} + type ListFunctionsClientResponse struct { Body []byte HTTPResponse *http.Response @@ -16255,6 +18159,39 @@ func (r CreateFunctionsBatchClientResponse) ContentType() string { return "" } +type StreamProjectFunctionLogsClientResponse struct { + Body []byte + HTTPResponse *http.Response + JSON400 *Error + JSON401 *Error + JSON403 *Error + JSON503 *Error +} + +// Status returns HTTPResponse.Status +func (r StreamProjectFunctionLogsClientResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r StreamProjectFunctionLogsClientResponse) StatusCode() int { + if r.HTTPResponse != nil { + return r.HTTPResponse.StatusCode + } + return 0 +} + +// ContentType is a convenience method to retrieve the Content-Type value from the HTTP response headers +func (r StreamProjectFunctionLogsClientResponse) ContentType() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Header.Get("Content-Type") + } + return "" +} + type DeleteFunctionClientResponse struct { Body []byte HTTPResponse *http.Response @@ -16382,10 +18319,12 @@ func (r ListFunctionDeploymentsClientResponse) ContentType() string { type GetFunctionDeploymentLogsClientResponse struct { Body []byte HTTPResponse *http.Response - JSON200 *GetLogsResponse + JSON200 *ListLogsResponse + JSON400 *Error JSON401 *Error JSON403 *Error JSON404 *Error + JSON503 *Error } // Status returns HTTPResponse.Status @@ -16412,17 +18351,18 @@ func (r GetFunctionDeploymentLogsClientResponse) ContentType() string { return "" } -type GetFunctionLogsClientResponse struct { +type StreamFunctionLogsClientResponse struct { Body []byte HTTPResponse *http.Response - JSON200 *GetLogsResponse + JSON400 *Error JSON401 *Error JSON403 *Error JSON404 *Error + JSON503 *Error } // Status returns HTTPResponse.Status -func (r GetFunctionLogsClientResponse) Status() string { +func (r StreamFunctionLogsClientResponse) Status() string { if r.HTTPResponse != nil { return r.HTTPResponse.Status } @@ -16430,7 +18370,7 @@ func (r GetFunctionLogsClientResponse) Status() string { } // StatusCode returns HTTPResponse.StatusCode -func (r GetFunctionLogsClientResponse) StatusCode() int { +func (r StreamFunctionLogsClientResponse) StatusCode() int { if r.HTTPResponse != nil { return r.HTTPResponse.StatusCode } @@ -16438,7 +18378,7 @@ func (r GetFunctionLogsClientResponse) StatusCode() int { } // ContentType is a convenience method to retrieve the Content-Type value from the HTTP response headers -func (r GetFunctionLogsClientResponse) ContentType() string { +func (r StreamFunctionLogsClientResponse) ContentType() string { if r.HTTPResponse != nil { return r.HTTPResponse.Header.Get("Content-Type") } @@ -16595,6 +18535,76 @@ func (r UpdateFunctionSchedulerClientResponse) ContentType() string { return "" } +type GetProjectLogActivityClientResponse struct { + Body []byte + HTTPResponse *http.Response + JSON200 *LogActivityResponse + JSON400 *Error + JSON401 *Error + JSON403 *Error + JSON404 *Error + JSON503 *Error +} + +// Status returns HTTPResponse.Status +func (r GetProjectLogActivityClientResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r GetProjectLogActivityClientResponse) StatusCode() int { + if r.HTTPResponse != nil { + return r.HTTPResponse.StatusCode + } + return 0 +} + +// ContentType is a convenience method to retrieve the Content-Type value from the HTTP response headers +func (r GetProjectLogActivityClientResponse) ContentType() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Header.Get("Content-Type") + } + return "" +} + +type SearchProjectLogsClientResponse struct { + Body []byte + HTTPResponse *http.Response + JSON200 *LogSearchResponse + JSON400 *Error + JSON401 *Error + JSON403 *Error + JSON404 *Error + JSON503 *Error +} + +// Status returns HTTPResponse.Status +func (r SearchProjectLogsClientResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r SearchProjectLogsClientResponse) StatusCode() int { + if r.HTTPResponse != nil { + return r.HTTPResponse.StatusCode + } + return 0 +} + +// ContentType is a convenience method to retrieve the Content-Type value from the HTTP response headers +func (r SearchProjectLogsClientResponse) ContentType() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Header.Get("Content-Type") + } + return "" +} + type ListOAuthConfigsClientResponse struct { Body []byte HTTPResponse *http.Response @@ -16823,7 +18833,38 @@ type UpdateRealtimeConfigClientResponse struct { } // Status returns HTTPResponse.Status -func (r UpdateRealtimeConfigClientResponse) Status() string { +func (r UpdateRealtimeConfigClientResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r UpdateRealtimeConfigClientResponse) StatusCode() int { + if r.HTTPResponse != nil { + return r.HTTPResponse.StatusCode + } + return 0 +} + +// ContentType is a convenience method to retrieve the Content-Type value from the HTTP response headers +func (r UpdateRealtimeConfigClientResponse) ContentType() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Header.Get("Content-Type") + } + return "" +} + +type GetRealtimeStatsClientResponse struct { + Body []byte + HTTPResponse *http.Response + JSON200 *RealtimeStats + JSON401 *Error +} + +// Status returns HTTPResponse.Status +func (r GetRealtimeStatsClientResponse) Status() string { if r.HTTPResponse != nil { return r.HTTPResponse.Status } @@ -16831,7 +18872,7 @@ func (r UpdateRealtimeConfigClientResponse) Status() string { } // StatusCode returns HTTPResponse.StatusCode -func (r UpdateRealtimeConfigClientResponse) StatusCode() int { +func (r GetRealtimeStatsClientResponse) StatusCode() int { if r.HTTPResponse != nil { return r.HTTPResponse.StatusCode } @@ -16839,22 +18880,21 @@ func (r UpdateRealtimeConfigClientResponse) StatusCode() int { } // ContentType is a convenience method to retrieve the Content-Type value from the HTTP response headers -func (r UpdateRealtimeConfigClientResponse) ContentType() string { +func (r GetRealtimeStatsClientResponse) ContentType() string { if r.HTTPResponse != nil { return r.HTTPResponse.Header.Get("Content-Type") } return "" } -type GetRealtimeStatsClientResponse struct { +type ListProjectSchedulersClientResponse struct { Body []byte HTTPResponse *http.Response - JSON200 *RealtimeStats - JSON401 *Error + JSON200 *FunctionSchedulerListResponse } // Status returns HTTPResponse.Status -func (r GetRealtimeStatsClientResponse) Status() string { +func (r ListProjectSchedulersClientResponse) Status() string { if r.HTTPResponse != nil { return r.HTTPResponse.Status } @@ -16862,7 +18902,7 @@ func (r GetRealtimeStatsClientResponse) Status() string { } // StatusCode returns HTTPResponse.StatusCode -func (r GetRealtimeStatsClientResponse) StatusCode() int { +func (r ListProjectSchedulersClientResponse) StatusCode() int { if r.HTTPResponse != nil { return r.HTTPResponse.StatusCode } @@ -16870,7 +18910,7 @@ func (r GetRealtimeStatsClientResponse) StatusCode() int { } // ContentType is a convenience method to retrieve the Content-Type value from the HTTP response headers -func (r GetRealtimeStatsClientResponse) ContentType() string { +func (r ListProjectSchedulersClientResponse) ContentType() string { if r.HTTPResponse != nil { return r.HTTPResponse.Header.Get("Content-Type") } @@ -18303,6 +20343,15 @@ func (c *ClientWithResponses) GetDefaultEmailTemplateWithResponse(ctx context.Co return ParseGetDefaultEmailTemplateClientResponse(rsp) } +// ListFunctionRegionsWithResponse request returning *ListFunctionRegionsClientResponse +func (c *ClientWithResponses) ListFunctionRegionsWithResponse(ctx context.Context, reqEditors ...RequestEditorFn) (*ListFunctionRegionsClientResponse, error) { + rsp, err := c.ListFunctionRegions(ctx, reqEditors...) + if err != nil { + return nil, err + } + return ParseListFunctionRegionsClientResponse(rsp) +} + // ResolveFunctionForInvocationWithResponse request returning *ResolveFunctionForInvocationClientResponse func (c *ClientWithResponses) ResolveFunctionForInvocationWithResponse(ctx context.Context, params *ResolveFunctionForInvocationParams, reqEditors ...RequestEditorFn) (*ResolveFunctionForInvocationClientResponse, error) { rsp, err := c.ResolveFunctionForInvocation(ctx, params, reqEditors...) @@ -18461,6 +20510,15 @@ func (c *ClientWithResponses) RegenerateAnonKeyWithResponse(ctx context.Context, return ParseRegenerateAnonKeyClientResponse(rsp) } +// SetDefaultAnonKeyWithResponse request returning *SetDefaultAnonKeyClientResponse +func (c *ClientWithResponses) SetDefaultAnonKeyWithResponse(ctx context.Context, id ProjectId, keyId openapi_types.UUID, reqEditors ...RequestEditorFn) (*SetDefaultAnonKeyClientResponse, error) { + rsp, err := c.SetDefaultAnonKey(ctx, id, keyId, reqEditors...) + if err != nil { + return nil, err + } + return ParseSetDefaultAnonKeyClientResponse(rsp) +} + // GetAuthConfigWithResponse request returning *GetAuthConfigClientResponse func (c *ClientWithResponses) GetAuthConfigWithResponse(ctx context.Context, id ProjectId, reqEditors ...RequestEditorFn) (*GetAuthConfigClientResponse, error) { rsp, err := c.GetAuthConfig(ctx, id, reqEditors...) @@ -18487,6 +20545,23 @@ func (c *ClientWithResponses) UpdateAuthConfigWithResponse(ctx context.Context, return ParseUpdateAuthConfigClientResponse(rsp) } +// TestEmailConfigWithBodyWithResponse request with arbitrary body returning *TestEmailConfigClientResponse +func (c *ClientWithResponses) TestEmailConfigWithBodyWithResponse(ctx context.Context, id ProjectId, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*TestEmailConfigClientResponse, error) { + rsp, err := c.TestEmailConfigWithBody(ctx, id, contentType, body, reqEditors...) + if err != nil { + return nil, err + } + return ParseTestEmailConfigClientResponse(rsp) +} + +func (c *ClientWithResponses) TestEmailConfigWithResponse(ctx context.Context, id ProjectId, body TestEmailConfigJSONRequestBody, reqEditors ...RequestEditorFn) (*TestEmailConfigClientResponse, error) { + rsp, err := c.TestEmailConfig(ctx, id, body, reqEditors...) + if err != nil { + return nil, err + } + return ParseTestEmailConfigClientResponse(rsp) +} + // RenderDefaultManagedAuthPageWithResponse request returning *RenderDefaultManagedAuthPageClientResponse func (c *ClientWithResponses) RenderDefaultManagedAuthPageWithResponse(ctx context.Context, id ProjectId, params *RenderDefaultManagedAuthPageParams, reqEditors ...RequestEditorFn) (*RenderDefaultManagedAuthPageClientResponse, error) { rsp, err := c.RenderDefaultManagedAuthPage(ctx, id, params, reqEditors...) @@ -18742,6 +20817,24 @@ func (c *ClientWithResponses) UpdateDatabaseTypeWithResponse(ctx context.Context return ParseUpdateDatabaseTypeClientResponse(rsp) } +// ListProjectDeploymentsWithResponse request returning *ListProjectDeploymentsClientResponse +func (c *ClientWithResponses) ListProjectDeploymentsWithResponse(ctx context.Context, id ProjectId, params *ListProjectDeploymentsParams, reqEditors ...RequestEditorFn) (*ListProjectDeploymentsClientResponse, error) { + rsp, err := c.ListProjectDeployments(ctx, id, params, reqEditors...) + if err != nil { + return nil, err + } + return ParseListProjectDeploymentsClientResponse(rsp) +} + +// ListProjectCustomDomainsWithResponse request returning *ListProjectCustomDomainsClientResponse +func (c *ClientWithResponses) ListProjectCustomDomainsWithResponse(ctx context.Context, id ProjectId, params *ListProjectCustomDomainsParams, reqEditors ...RequestEditorFn) (*ListProjectCustomDomainsClientResponse, error) { + rsp, err := c.ListProjectCustomDomains(ctx, id, params, reqEditors...) + if err != nil { + return nil, err + } + return ParseListProjectCustomDomainsClientResponse(rsp) +} + // ListEmailTemplatesWithResponse request returning *ListEmailTemplatesClientResponse func (c *ClientWithResponses) ListEmailTemplatesWithResponse(ctx context.Context, id ProjectId, reqEditors ...RequestEditorFn) (*ListEmailTemplatesClientResponse, error) { rsp, err := c.ListEmailTemplates(ctx, id, reqEditors...) @@ -18821,6 +20914,24 @@ func (c *ClientWithResponses) CreateFrontendWithBodyWithResponse(ctx context.Con return ParseCreateFrontendClientResponse(rsp) } +// ListProjectFrontendDeploymentLogsWithResponse request returning *ListProjectFrontendDeploymentLogsClientResponse +func (c *ClientWithResponses) ListProjectFrontendDeploymentLogsWithResponse(ctx context.Context, id ProjectId, params *ListProjectFrontendDeploymentLogsParams, reqEditors ...RequestEditorFn) (*ListProjectFrontendDeploymentLogsClientResponse, error) { + rsp, err := c.ListProjectFrontendDeploymentLogs(ctx, id, params, reqEditors...) + if err != nil { + return nil, err + } + return ParseListProjectFrontendDeploymentLogsClientResponse(rsp) +} + +// ListProjectFrontendLogsWithResponse request returning *ListProjectFrontendLogsClientResponse +func (c *ClientWithResponses) ListProjectFrontendLogsWithResponse(ctx context.Context, id ProjectId, params *ListProjectFrontendLogsParams, reqEditors ...RequestEditorFn) (*ListProjectFrontendLogsClientResponse, error) { + rsp, err := c.ListProjectFrontendLogs(ctx, id, params, reqEditors...) + if err != nil { + return nil, err + } + return ParseListProjectFrontendLogsClientResponse(rsp) +} + // DeleteFrontendWithResponse request returning *DeleteFrontendClientResponse func (c *ClientWithResponses) DeleteFrontendWithResponse(ctx context.Context, id ProjectId, frontendId FrontendId, reqEditors ...RequestEditorFn) (*DeleteFrontendClientResponse, error) { rsp, err := c.DeleteFrontend(ctx, id, frontendId, reqEditors...) @@ -18910,6 +21021,15 @@ func (c *ClientWithResponses) RedeployFrontendWithResponse(ctx context.Context, return ParseRedeployFrontendClientResponse(rsp) } +// GetFrontendUsageHistoryWithResponse request returning *GetFrontendUsageHistoryClientResponse +func (c *ClientWithResponses) GetFrontendUsageHistoryWithResponse(ctx context.Context, id ProjectId, frontendId FrontendId, params *GetFrontendUsageHistoryParams, reqEditors ...RequestEditorFn) (*GetFrontendUsageHistoryClientResponse, error) { + rsp, err := c.GetFrontendUsageHistory(ctx, id, frontendId, params, reqEditors...) + if err != nil { + return nil, err + } + return ParseGetFrontendUsageHistoryClientResponse(rsp) +} + // ListFunctionsWithResponse request returning *ListFunctionsClientResponse func (c *ClientWithResponses) ListFunctionsWithResponse(ctx context.Context, id ProjectId, params *ListFunctionsParams, reqEditors ...RequestEditorFn) (*ListFunctionsClientResponse, error) { rsp, err := c.ListFunctions(ctx, id, params, reqEditors...) @@ -18937,6 +21057,15 @@ func (c *ClientWithResponses) CreateFunctionsBatchWithBodyWithResponse(ctx conte return ParseCreateFunctionsBatchClientResponse(rsp) } +// StreamProjectFunctionLogsWithResponse request returning *StreamProjectFunctionLogsClientResponse +func (c *ClientWithResponses) StreamProjectFunctionLogsWithResponse(ctx context.Context, id ProjectId, params *StreamProjectFunctionLogsParams, reqEditors ...RequestEditorFn) (*StreamProjectFunctionLogsClientResponse, error) { + rsp, err := c.StreamProjectFunctionLogs(ctx, id, params, reqEditors...) + if err != nil { + return nil, err + } + return ParseStreamProjectFunctionLogsClientResponse(rsp) +} + // DeleteFunctionWithResponse request returning *DeleteFunctionClientResponse func (c *ClientWithResponses) DeleteFunctionWithResponse(ctx context.Context, id ProjectId, functionId FunctionId, reqEditors ...RequestEditorFn) (*DeleteFunctionClientResponse, error) { rsp, err := c.DeleteFunction(ctx, id, functionId, reqEditors...) @@ -18990,13 +21119,13 @@ func (c *ClientWithResponses) GetFunctionDeploymentLogsWithResponse(ctx context. return ParseGetFunctionDeploymentLogsClientResponse(rsp) } -// GetFunctionLogsWithResponse request returning *GetFunctionLogsClientResponse -func (c *ClientWithResponses) GetFunctionLogsWithResponse(ctx context.Context, id ProjectId, functionId FunctionId, params *GetFunctionLogsParams, reqEditors ...RequestEditorFn) (*GetFunctionLogsClientResponse, error) { - rsp, err := c.GetFunctionLogs(ctx, id, functionId, params, reqEditors...) +// StreamFunctionLogsWithResponse request returning *StreamFunctionLogsClientResponse +func (c *ClientWithResponses) StreamFunctionLogsWithResponse(ctx context.Context, id ProjectId, functionId FunctionId, params *StreamFunctionLogsParams, reqEditors ...RequestEditorFn) (*StreamFunctionLogsClientResponse, error) { + rsp, err := c.StreamFunctionLogs(ctx, id, functionId, params, reqEditors...) if err != nil { return nil, err } - return ParseGetFunctionLogsClientResponse(rsp) + return ParseStreamFunctionLogsClientResponse(rsp) } // ListFunctionSchedulersWithResponse request returning *ListFunctionSchedulersClientResponse @@ -19060,6 +21189,40 @@ func (c *ClientWithResponses) UpdateFunctionSchedulerWithResponse(ctx context.Co return ParseUpdateFunctionSchedulerClientResponse(rsp) } +// GetProjectLogActivityWithBodyWithResponse request with arbitrary body returning *GetProjectLogActivityClientResponse +func (c *ClientWithResponses) GetProjectLogActivityWithBodyWithResponse(ctx context.Context, id ProjectId, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*GetProjectLogActivityClientResponse, error) { + rsp, err := c.GetProjectLogActivityWithBody(ctx, id, contentType, body, reqEditors...) + if err != nil { + return nil, err + } + return ParseGetProjectLogActivityClientResponse(rsp) +} + +func (c *ClientWithResponses) GetProjectLogActivityWithResponse(ctx context.Context, id ProjectId, body GetProjectLogActivityJSONRequestBody, reqEditors ...RequestEditorFn) (*GetProjectLogActivityClientResponse, error) { + rsp, err := c.GetProjectLogActivity(ctx, id, body, reqEditors...) + if err != nil { + return nil, err + } + return ParseGetProjectLogActivityClientResponse(rsp) +} + +// SearchProjectLogsWithBodyWithResponse request with arbitrary body returning *SearchProjectLogsClientResponse +func (c *ClientWithResponses) SearchProjectLogsWithBodyWithResponse(ctx context.Context, id ProjectId, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*SearchProjectLogsClientResponse, error) { + rsp, err := c.SearchProjectLogsWithBody(ctx, id, contentType, body, reqEditors...) + if err != nil { + return nil, err + } + return ParseSearchProjectLogsClientResponse(rsp) +} + +func (c *ClientWithResponses) SearchProjectLogsWithResponse(ctx context.Context, id ProjectId, body SearchProjectLogsJSONRequestBody, reqEditors ...RequestEditorFn) (*SearchProjectLogsClientResponse, error) { + rsp, err := c.SearchProjectLogs(ctx, id, body, reqEditors...) + if err != nil { + return nil, err + } + return ParseSearchProjectLogsClientResponse(rsp) +} + // ListOAuthConfigsWithResponse request returning *ListOAuthConfigsClientResponse func (c *ClientWithResponses) ListOAuthConfigsWithResponse(ctx context.Context, id ProjectId, reqEditors ...RequestEditorFn) (*ListOAuthConfigsClientResponse, error) { rsp, err := c.ListOAuthConfigs(ctx, id, reqEditors...) @@ -19165,6 +21328,15 @@ func (c *ClientWithResponses) GetRealtimeStatsWithResponse(ctx context.Context, return ParseGetRealtimeStatsClientResponse(rsp) } +// ListProjectSchedulersWithResponse request returning *ListProjectSchedulersClientResponse +func (c *ClientWithResponses) ListProjectSchedulersWithResponse(ctx context.Context, id ProjectId, params *ListProjectSchedulersParams, reqEditors ...RequestEditorFn) (*ListProjectSchedulersClientResponse, error) { + rsp, err := c.ListProjectSchedulers(ctx, id, params, reqEditors...) + if err != nil { + return nil, err + } + return ParseListProjectSchedulersClientResponse(rsp) +} + // ListServiceKeysWithResponse request returning *ListServiceKeysClientResponse func (c *ClientWithResponses) ListServiceKeysWithResponse(ctx context.Context, id ProjectId, params *ListServiceKeysParams, reqEditors ...RequestEditorFn) (*ListServiceKeysClientResponse, error) { rsp, err := c.ListServiceKeys(ctx, id, params, reqEditors...) @@ -20949,6 +23121,32 @@ func ParseGetDefaultEmailTemplateClientResponse(rsp *http.Response) (*GetDefault return response, nil } +// ParseListFunctionRegionsClientResponse parses an HTTP response from a ListFunctionRegionsWithResponse call +func ParseListFunctionRegionsClientResponse(rsp *http.Response) (*ListFunctionRegionsClientResponse, error) { + bodyBytes, err := io.ReadAll(rsp.Body) + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err + } + + response := &ListFunctionRegionsClientResponse{ + Body: bodyBytes, + HTTPResponse: rsp, + } + + switch { + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: + var dest []FunctionRegion + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON200 = &dest + + } + + return response, nil +} + // ParseResolveFunctionForInvocationClientResponse parses an HTTP response from a ResolveFunctionForInvocationWithResponse call func ParseResolveFunctionForInvocationClientResponse(rsp *http.Response) (*ResolveFunctionForInvocationClientResponse, error) { bodyBytes, err := io.ReadAll(rsp.Body) @@ -21366,6 +23564,23 @@ func ParseRevokeAnonKeyClientResponse(rsp *http.Response) (*RevokeAnonKeyClientR HTTPResponse: rsp, } + switch { + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 409: + var dest Error + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON409 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 500: + var dest Error + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON500 = &dest + + } + return response, nil } @@ -21421,6 +23636,39 @@ func ParseRegenerateAnonKeyClientResponse(rsp *http.Response) (*RegenerateAnonKe return response, nil } +// ParseSetDefaultAnonKeyClientResponse parses an HTTP response from a SetDefaultAnonKeyWithResponse call +func ParseSetDefaultAnonKeyClientResponse(rsp *http.Response) (*SetDefaultAnonKeyClientResponse, error) { + bodyBytes, err := io.ReadAll(rsp.Body) + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err + } + + response := &SetDefaultAnonKeyClientResponse{ + Body: bodyBytes, + HTTPResponse: rsp, + } + + switch { + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: + var dest AnonKey + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON200 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 500: + var dest Error + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON500 = &dest + + } + + return response, nil +} + // ParseGetAuthConfigClientResponse parses an HTTP response from a GetAuthConfigWithResponse call func ParseGetAuthConfigClientResponse(rsp *http.Response) (*GetAuthConfigClientResponse, error) { bodyBytes, err := io.ReadAll(rsp.Body) @@ -21473,6 +23721,32 @@ func ParseUpdateAuthConfigClientResponse(rsp *http.Response) (*UpdateAuthConfigC return response, nil } +// ParseTestEmailConfigClientResponse parses an HTTP response from a TestEmailConfigWithResponse call +func ParseTestEmailConfigClientResponse(rsp *http.Response) (*TestEmailConfigClientResponse, error) { + bodyBytes, err := io.ReadAll(rsp.Body) + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err + } + + response := &TestEmailConfigClientResponse{ + Body: bodyBytes, + HTTPResponse: rsp, + } + + switch { + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: + var dest TestEmailResponse + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON200 = &dest + + } + + return response, nil +} + // ParseRenderDefaultManagedAuthPageClientResponse parses an HTTP response from a RenderDefaultManagedAuthPageWithResponse call func ParseRenderDefaultManagedAuthPageClientResponse(rsp *http.Response) (*RenderDefaultManagedAuthPageClientResponse, error) { bodyBytes, err := io.ReadAll(rsp.Body) @@ -21985,19 +24259,97 @@ func ParseResetDatabasePasswordClientResponse(rsp *http.Response) (*ResetDatabas return nil, err } - response := &ResetDatabasePasswordClientResponse{ + response := &ResetDatabasePasswordClientResponse{ + Body: bodyBytes, + HTTPResponse: rsp, + } + + switch { + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: + var dest struct { + // ConnectionString Updated pgproxy connection string using Volcano-managed credentials. + ConnectionString *string `json:"connection_string,omitempty"` + Message *string `json:"message,omitempty"` + + // NewPassword New Volcano-managed client password. Always starts with `vpg_`. + NewPassword *string `json:"new_password,omitempty"` + + // RoleName Volcano-managed client database role name + RoleName *string `json:"role_name,omitempty"` + } + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON200 = &dest + + } + + return response, nil +} + +// ParseGetDatabaseStatsClientResponse parses an HTTP response from a GetDatabaseStatsWithResponse call +func ParseGetDatabaseStatsClientResponse(rsp *http.Response) (*GetDatabaseStatsClientResponse, error) { + bodyBytes, err := io.ReadAll(rsp.Body) + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err + } + + response := &GetDatabaseStatsClientResponse{ + Body: bodyBytes, + HTTPResponse: rsp, + } + + switch { + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: + var dest DatabaseStats + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON200 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 400: + var dest Error + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON400 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 404: + var dest Error + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON404 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 503: + var dest Error + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON503 = &dest + + } + + return response, nil +} + +// ParseUpdateDatabaseTypeClientResponse parses an HTTP response from a UpdateDatabaseTypeWithResponse call +func ParseUpdateDatabaseTypeClientResponse(rsp *http.Response) (*UpdateDatabaseTypeClientResponse, error) { + bodyBytes, err := io.ReadAll(rsp.Body) + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err + } + + response := &UpdateDatabaseTypeClientResponse{ Body: bodyBytes, HTTPResponse: rsp, } switch { case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest struct { - ConnectionString *string `json:"connection_string,omitempty"` - Message *string `json:"message,omitempty"` - NewPassword *string `json:"new_password,omitempty"` - RoleName *string `json:"role_name,omitempty"` - } + var dest Database if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } @@ -22008,22 +24360,22 @@ func ParseResetDatabasePasswordClientResponse(rsp *http.Response) (*ResetDatabas return response, nil } -// ParseGetDatabaseStatsClientResponse parses an HTTP response from a GetDatabaseStatsWithResponse call -func ParseGetDatabaseStatsClientResponse(rsp *http.Response) (*GetDatabaseStatsClientResponse, error) { +// ParseListProjectDeploymentsClientResponse parses an HTTP response from a ListProjectDeploymentsWithResponse call +func ParseListProjectDeploymentsClientResponse(rsp *http.Response) (*ListProjectDeploymentsClientResponse, error) { bodyBytes, err := io.ReadAll(rsp.Body) defer func() { _ = rsp.Body.Close() }() if err != nil { return nil, err } - response := &GetDatabaseStatsClientResponse{ + response := &ListProjectDeploymentsClientResponse{ Body: bodyBytes, HTTPResponse: rsp, } switch { case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest DatabaseStats + var dest PaginatedProjectDeployments if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } @@ -22036,46 +24388,81 @@ func ParseGetDatabaseStatsClientResponse(rsp *http.Response) (*GetDatabaseStatsC } response.JSON400 = &dest - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 404: + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 401: var dest Error if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } - response.JSON404 = &dest + response.JSON401 = &dest - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 503: + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 403: var dest Error if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } - response.JSON503 = &dest + response.JSON403 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 500: + var dest Error + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON500 = &dest } return response, nil } -// ParseUpdateDatabaseTypeClientResponse parses an HTTP response from a UpdateDatabaseTypeWithResponse call -func ParseUpdateDatabaseTypeClientResponse(rsp *http.Response) (*UpdateDatabaseTypeClientResponse, error) { +// ParseListProjectCustomDomainsClientResponse parses an HTTP response from a ListProjectCustomDomainsWithResponse call +func ParseListProjectCustomDomainsClientResponse(rsp *http.Response) (*ListProjectCustomDomainsClientResponse, error) { bodyBytes, err := io.ReadAll(rsp.Body) defer func() { _ = rsp.Body.Close() }() if err != nil { return nil, err } - response := &UpdateDatabaseTypeClientResponse{ + response := &ListProjectCustomDomainsClientResponse{ Body: bodyBytes, HTTPResponse: rsp, } switch { case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest Database + var dest PaginatedProjectCustomDomains if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } response.JSON200 = &dest + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 400: + var dest Error + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON400 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 401: + var dest Error + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON401 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 403: + var dest Error + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON403 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 500: + var dest Error + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON500 = &dest + } return response, nil @@ -22353,6 +24740,128 @@ func ParseCreateFrontendClientResponse(rsp *http.Response) (*CreateFrontendClien return response, nil } +// ParseListProjectFrontendDeploymentLogsClientResponse parses an HTTP response from a ListProjectFrontendDeploymentLogsWithResponse call +func ParseListProjectFrontendDeploymentLogsClientResponse(rsp *http.Response) (*ListProjectFrontendDeploymentLogsClientResponse, error) { + bodyBytes, err := io.ReadAll(rsp.Body) + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err + } + + response := &ListProjectFrontendDeploymentLogsClientResponse{ + Body: bodyBytes, + HTTPResponse: rsp, + } + + switch { + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: + var dest ListLogsResponse + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON200 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 400: + var dest Error + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON400 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 401: + var dest Error + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON401 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 403: + var dest Error + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON403 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 404: + var dest Error + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON404 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 503: + var dest Error + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON503 = &dest + + } + + return response, nil +} + +// ParseListProjectFrontendLogsClientResponse parses an HTTP response from a ListProjectFrontendLogsWithResponse call +func ParseListProjectFrontendLogsClientResponse(rsp *http.Response) (*ListProjectFrontendLogsClientResponse, error) { + bodyBytes, err := io.ReadAll(rsp.Body) + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err + } + + response := &ListProjectFrontendLogsClientResponse{ + Body: bodyBytes, + HTTPResponse: rsp, + } + + switch { + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: + var dest ListLogsResponse + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON200 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 400: + var dest Error + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON400 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 401: + var dest Error + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON401 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 403: + var dest Error + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON403 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 404: + var dest Error + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON404 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 503: + var dest Error + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON503 = &dest + + } + + return response, nil +} + // ParseDeleteFrontendClientResponse parses an HTTP response from a DeleteFrontendWithResponse call func ParseDeleteFrontendClientResponse(rsp *http.Response) (*DeleteFrontendClientResponse, error) { bodyBytes, err := io.ReadAll(rsp.Body) @@ -22551,7 +25060,7 @@ func ParseGetFrontendDeploymentLogsClientResponse(rsp *http.Response) (*GetFront switch { case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest GetLogsResponse + var dest ListLogsResponse if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } @@ -22727,26 +25236,101 @@ func ParseCreateFrontendCustomDomainClientResponse(rsp *http.Response) (*CreateF return nil, err } - response := &CreateFrontendCustomDomainClientResponse{ + response := &CreateFrontendCustomDomainClientResponse{ + Body: bodyBytes, + HTTPResponse: rsp, + } + + switch { + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: + var dest FrontendCustomDomainResponse + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON200 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 201: + var dest FrontendCustomDomainResponse + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON201 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 400: + var dest Error + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON400 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 401: + var dest Error + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON401 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 403: + var dest Error + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON403 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 404: + var dest Error + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON404 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 409: + var dest Error + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON409 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 500: + var dest Error + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON500 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 503: + var dest Error + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON503 = &dest + + } + + return response, nil +} + +// ParseGetFrontendLogsClientResponse parses an HTTP response from a GetFrontendLogsWithResponse call +func ParseGetFrontendLogsClientResponse(rsp *http.Response) (*GetFrontendLogsClientResponse, error) { + bodyBytes, err := io.ReadAll(rsp.Body) + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err + } + + response := &GetFrontendLogsClientResponse{ Body: bodyBytes, HTTPResponse: rsp, } switch { case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest FrontendCustomDomainResponse + var dest ListLogsResponse if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } response.JSON200 = &dest - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 201: - var dest FrontendCustomDomainResponse - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON201 = &dest - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 400: var dest Error if err := json.Unmarshal(bodyBytes, &dest); err != nil { @@ -22775,13 +25359,6 @@ func ParseCreateFrontendCustomDomainClientResponse(rsp *http.Response) (*CreateF } response.JSON404 = &dest - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 409: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON409 = &dest - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 500: var dest Error if err := json.Unmarshal(bodyBytes, &dest); err != nil { @@ -22801,22 +25378,22 @@ func ParseCreateFrontendCustomDomainClientResponse(rsp *http.Response) (*CreateF return response, nil } -// ParseGetFrontendLogsClientResponse parses an HTTP response from a GetFrontendLogsWithResponse call -func ParseGetFrontendLogsClientResponse(rsp *http.Response) (*GetFrontendLogsClientResponse, error) { +// ParseRedeployFrontendClientResponse parses an HTTP response from a RedeployFrontendWithResponse call +func ParseRedeployFrontendClientResponse(rsp *http.Response) (*RedeployFrontendClientResponse, error) { bodyBytes, err := io.ReadAll(rsp.Body) defer func() { _ = rsp.Body.Close() }() if err != nil { return nil, err } - response := &GetFrontendLogsClientResponse{ + response := &RedeployFrontendClientResponse{ Body: bodyBytes, HTTPResponse: rsp, } switch { case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest GetLogsResponse + var dest Frontend if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } @@ -22850,6 +25427,13 @@ func ParseGetFrontendLogsClientResponse(rsp *http.Response) (*GetFrontendLogsCli } response.JSON404 = &dest + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 409: + var dest Error + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON409 = &dest + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 500: var dest Error if err := json.Unmarshal(bodyBytes, &dest); err != nil { @@ -22869,22 +25453,22 @@ func ParseGetFrontendLogsClientResponse(rsp *http.Response) (*GetFrontendLogsCli return response, nil } -// ParseRedeployFrontendClientResponse parses an HTTP response from a RedeployFrontendWithResponse call -func ParseRedeployFrontendClientResponse(rsp *http.Response) (*RedeployFrontendClientResponse, error) { +// ParseGetFrontendUsageHistoryClientResponse parses an HTTP response from a GetFrontendUsageHistoryWithResponse call +func ParseGetFrontendUsageHistoryClientResponse(rsp *http.Response) (*GetFrontendUsageHistoryClientResponse, error) { bodyBytes, err := io.ReadAll(rsp.Body) defer func() { _ = rsp.Body.Close() }() if err != nil { return nil, err } - response := &RedeployFrontendClientResponse{ + response := &GetFrontendUsageHistoryClientResponse{ Body: bodyBytes, HTTPResponse: rsp, } switch { case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest Frontend + var dest FrontendUsageHistoryResponse if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } @@ -22918,13 +25502,6 @@ func ParseRedeployFrontendClientResponse(rsp *http.Response) (*RedeployFrontendC } response.JSON404 = &dest - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 409: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON409 = &dest - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 500: var dest Error if err := json.Unmarshal(bodyBytes, &dest); err != nil { @@ -22932,13 +25509,6 @@ func ParseRedeployFrontendClientResponse(rsp *http.Response) (*RedeployFrontendC } response.JSON500 = &dest - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 503: - var dest Error - if err := json.Unmarshal(bodyBytes, &dest); err != nil { - return nil, err - } - response.JSON503 = &dest - } return response, nil @@ -23071,6 +25641,53 @@ func ParseCreateFunctionsBatchClientResponse(rsp *http.Response) (*CreateFunctio return response, nil } +// ParseStreamProjectFunctionLogsClientResponse parses an HTTP response from a StreamProjectFunctionLogsWithResponse call +func ParseStreamProjectFunctionLogsClientResponse(rsp *http.Response) (*StreamProjectFunctionLogsClientResponse, error) { + bodyBytes, err := io.ReadAll(rsp.Body) + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err + } + + response := &StreamProjectFunctionLogsClientResponse{ + Body: bodyBytes, + HTTPResponse: rsp, + } + + switch { + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 400: + var dest Error + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON400 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 401: + var dest Error + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON401 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 403: + var dest Error + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON403 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 503: + var dest Error + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON503 = &dest + + } + + return response, nil +} + // ParseDeleteFunctionClientResponse parses an HTTP response from a DeleteFunctionWithResponse call func ParseDeleteFunctionClientResponse(rsp *http.Response) (*DeleteFunctionClientResponse, error) { bodyBytes, err := io.ReadAll(rsp.Body) @@ -23218,12 +25835,19 @@ func ParseGetFunctionDeploymentLogsClientResponse(rsp *http.Response) (*GetFunct switch { case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest GetLogsResponse + var dest ListLogsResponse if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } response.JSON200 = &dest + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 400: + var dest Error + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON400 = &dest + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 401: var dest Error if err := json.Unmarshal(bodyBytes, &dest); err != nil { @@ -23245,31 +25869,38 @@ func ParseGetFunctionDeploymentLogsClientResponse(rsp *http.Response) (*GetFunct } response.JSON404 = &dest + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 503: + var dest Error + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON503 = &dest + } return response, nil } -// ParseGetFunctionLogsClientResponse parses an HTTP response from a GetFunctionLogsWithResponse call -func ParseGetFunctionLogsClientResponse(rsp *http.Response) (*GetFunctionLogsClientResponse, error) { +// ParseStreamFunctionLogsClientResponse parses an HTTP response from a StreamFunctionLogsWithResponse call +func ParseStreamFunctionLogsClientResponse(rsp *http.Response) (*StreamFunctionLogsClientResponse, error) { bodyBytes, err := io.ReadAll(rsp.Body) defer func() { _ = rsp.Body.Close() }() if err != nil { return nil, err } - response := &GetFunctionLogsClientResponse{ + response := &StreamFunctionLogsClientResponse{ Body: bodyBytes, HTTPResponse: rsp, } switch { - case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: - var dest GetLogsResponse + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 400: + var dest Error if err := json.Unmarshal(bodyBytes, &dest); err != nil { return nil, err } - response.JSON200 = &dest + response.JSON400 = &dest case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 401: var dest Error @@ -23292,6 +25923,13 @@ func ParseGetFunctionLogsClientResponse(rsp *http.Response) (*GetFunctionLogsCli } response.JSON404 = &dest + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 503: + var dest Error + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON503 = &dest + } return response, nil @@ -23424,6 +26062,128 @@ func ParseUpdateFunctionSchedulerClientResponse(rsp *http.Response) (*UpdateFunc return response, nil } +// ParseGetProjectLogActivityClientResponse parses an HTTP response from a GetProjectLogActivityWithResponse call +func ParseGetProjectLogActivityClientResponse(rsp *http.Response) (*GetProjectLogActivityClientResponse, error) { + bodyBytes, err := io.ReadAll(rsp.Body) + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err + } + + response := &GetProjectLogActivityClientResponse{ + Body: bodyBytes, + HTTPResponse: rsp, + } + + switch { + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: + var dest LogActivityResponse + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON200 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 400: + var dest Error + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON400 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 401: + var dest Error + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON401 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 403: + var dest Error + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON403 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 404: + var dest Error + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON404 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 503: + var dest Error + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON503 = &dest + + } + + return response, nil +} + +// ParseSearchProjectLogsClientResponse parses an HTTP response from a SearchProjectLogsWithResponse call +func ParseSearchProjectLogsClientResponse(rsp *http.Response) (*SearchProjectLogsClientResponse, error) { + bodyBytes, err := io.ReadAll(rsp.Body) + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err + } + + response := &SearchProjectLogsClientResponse{ + Body: bodyBytes, + HTTPResponse: rsp, + } + + switch { + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: + var dest LogSearchResponse + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON200 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 400: + var dest Error + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON400 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 401: + var dest Error + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON401 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 403: + var dest Error + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON403 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 404: + var dest Error + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON404 = &dest + + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 503: + var dest Error + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON503 = &dest + + } + + return response, nil +} + // ParseListOAuthConfigsClientResponse parses an HTTP response from a ListOAuthConfigsWithResponse call func ParseListOAuthConfigsClientResponse(rsp *http.Response) (*ListOAuthConfigsClientResponse, error) { bodyBytes, err := io.ReadAll(rsp.Body) @@ -23691,6 +26451,32 @@ func ParseGetRealtimeStatsClientResponse(rsp *http.Response) (*GetRealtimeStatsC return response, nil } +// ParseListProjectSchedulersClientResponse parses an HTTP response from a ListProjectSchedulersWithResponse call +func ParseListProjectSchedulersClientResponse(rsp *http.Response) (*ListProjectSchedulersClientResponse, error) { + bodyBytes, err := io.ReadAll(rsp.Body) + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err + } + + response := &ListProjectSchedulersClientResponse{ + Body: bodyBytes, + HTTPResponse: rsp, + } + + switch { + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: + var dest FunctionSchedulerListResponse + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON200 = &dest + + } + + return response, nil +} + // ParseListServiceKeysClientResponse parses an HTTP response from a ListServiceKeysWithResponse call func ParseListServiceKeysClientResponse(rsp *http.Response) (*ListServiceKeysClientResponse, error) { bodyBytes, err := io.ReadAll(rsp.Body) diff --git a/internal/apiclient/client_test.go b/internal/apiclient/client_test.go new file mode 100644 index 0000000..5cce31b --- /dev/null +++ b/internal/apiclient/client_test.go @@ -0,0 +1,48 @@ +package apiclient + +import ( + "encoding/json" + "testing" + + "github.com/google/uuid" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + + apicommon "github.com/Kong/volcano-cli/internal/apiclient/common" +) + +func TestGetProjectLogActivityUsesPostBody(t *testing.T) { + projectID := ProjectId(uuid.MustParse("11111111-1111-4111-8111-111111111111")) + resourceIDs := []string{"22222222-2222-4222-8222-222222222222"} + levels := []apicommon.LiveLogLevel{apicommon.LiveLogLevelWarn} + regions := []string{"us-east-1"} + startTime := int64(1_700_000_000_000) + endTime := int64(1_700_000_300_000) + bucketCount := 24 + + req, err := NewGetProjectLogActivityRequest("https://api.example.test", projectID, GetProjectLogActivityJSONRequestBody{ + ResourceType: apicommon.LogActivityRequestResourceTypeFunction, + ResourceIds: &resourceIDs, + Levels: &levels, + Regions: ®ions, + StartTime: &startTime, + EndTime: &endTime, + BucketCount: &bucketCount, + }) + require.NoError(t, err) + + assert.Equal(t, "POST", req.Method) + assert.Equal(t, "/projects/11111111-1111-4111-8111-111111111111/logs/activity", req.URL.Path) + assert.Empty(t, req.URL.RawQuery) + assert.Equal(t, "application/json", req.Header.Get("Content-Type")) + + var body map[string]any + require.NoError(t, json.NewDecoder(req.Body).Decode(&body)) + assert.Equal(t, "function", body["resource_type"]) + assert.Equal(t, []any{"22222222-2222-4222-8222-222222222222"}, body["resource_ids"]) + assert.Equal(t, []any{"warn"}, body["levels"]) + assert.Equal(t, []any{"us-east-1"}, body["regions"]) + assert.InEpsilon(t, startTime, body["start_time"], 0) + assert.InEpsilon(t, endTime, body["end_time"], 0) + assert.InEpsilon(t, bucketCount, body["bucket_count"], 0) +} diff --git a/internal/apiclient/common/common.gen.go b/internal/apiclient/common/common.gen.go index 3facb02..98c399d 100644 --- a/internal/apiclient/common/common.gen.go +++ b/internal/apiclient/common/common.gen.go @@ -182,6 +182,7 @@ const ( CreateEmailTemplateRequestTemplateTypeConfirmation CreateEmailTemplateRequestTemplateType = "confirmation" CreateEmailTemplateRequestTemplateTypePasswordChanged CreateEmailTemplateRequestTemplateType = "password_changed" CreateEmailTemplateRequestTemplateTypePasswordReset CreateEmailTemplateRequestTemplateType = "password_reset" + CreateEmailTemplateRequestTemplateTypeWelcome CreateEmailTemplateRequestTemplateType = "welcome" ) // Valid indicates whether the value is a known member of the CreateEmailTemplateRequestTemplateType enum. @@ -193,6 +194,8 @@ func (e CreateEmailTemplateRequestTemplateType) Valid() bool { return true case CreateEmailTemplateRequestTemplateTypePasswordReset: return true + case CreateEmailTemplateRequestTemplateTypeWelcome: + return true default: return false } @@ -326,6 +329,7 @@ const ( EmailTemplateTemplateTypeConfirmation EmailTemplateTemplateType = "confirmation" EmailTemplateTemplateTypePasswordChanged EmailTemplateTemplateType = "password_changed" EmailTemplateTemplateTypePasswordReset EmailTemplateTemplateType = "password_reset" + EmailTemplateTemplateTypeWelcome EmailTemplateTemplateType = "welcome" ) // Valid indicates whether the value is a known member of the EmailTemplateTemplateType enum. @@ -337,6 +341,8 @@ func (e EmailTemplateTemplateType) Valid() bool { return true case EmailTemplateTemplateTypePasswordReset: return true + case EmailTemplateTemplateTypeWelcome: + return true default: return false } @@ -581,19 +587,19 @@ func (e FunctionStatus) Valid() bool { // Defines values for FunctionDeploymentOperation. const ( - Delete FunctionDeploymentOperation = "delete" - Deploy FunctionDeploymentOperation = "deploy" - Update FunctionDeploymentOperation = "update" + FunctionDeploymentOperationDelete FunctionDeploymentOperation = "delete" + FunctionDeploymentOperationDeploy FunctionDeploymentOperation = "deploy" + FunctionDeploymentOperationUpdate FunctionDeploymentOperation = "update" ) // Valid indicates whether the value is a known member of the FunctionDeploymentOperation enum. func (e FunctionDeploymentOperation) Valid() bool { switch e { - case Delete: + case FunctionDeploymentOperationDelete: return true - case Deploy: + case FunctionDeploymentOperationDeploy: return true - case Update: + case FunctionDeploymentOperationUpdate: return true default: return false @@ -675,6 +681,147 @@ func (e HostedRenderablePageType) Valid() bool { } } +// Defines values for LiveLogLevel. +const ( + LiveLogLevelDebug LiveLogLevel = "debug" + LiveLogLevelError LiveLogLevel = "error" + LiveLogLevelFatal LiveLogLevel = "fatal" + LiveLogLevelInfo LiveLogLevel = "info" + LiveLogLevelTrace LiveLogLevel = "trace" + LiveLogLevelWarn LiveLogLevel = "warn" +) + +// Valid indicates whether the value is a known member of the LiveLogLevel enum. +func (e LiveLogLevel) Valid() bool { + switch e { + case LiveLogLevelDebug: + return true + case LiveLogLevelError: + return true + case LiveLogLevelFatal: + return true + case LiveLogLevelInfo: + return true + case LiveLogLevelTrace: + return true + case LiveLogLevelWarn: + return true + default: + return false + } +} + +// Defines values for LiveLogSource. +const ( + Cloud LiveLogSource = "cloud" + Local LiveLogSource = "local" +) + +// Valid indicates whether the value is a known member of the LiveLogSource enum. +func (e LiveLogSource) Valid() bool { + switch e { + case Cloud: + return true + case Local: + return true + default: + return false + } +} + +// Defines values for LogActivityRequestResourceType. +const ( + LogActivityRequestResourceTypeFunction LogActivityRequestResourceType = "function" +) + +// Valid indicates whether the value is a known member of the LogActivityRequestResourceType enum. +func (e LogActivityRequestResourceType) Valid() bool { + switch e { + case LogActivityRequestResourceTypeFunction: + return true + default: + return false + } +} + +// Defines values for LiveLogWarningEventCode. +const ( + CursorReset LiveLogWarningEventCode = "cursor_reset" + DroppedEvents LiveLogWarningEventCode = "dropped_events" + MalformedLogLine LiveLogWarningEventCode = "malformed_log_line" + SourceGap LiveLogWarningEventCode = "source_gap" + TransientSourceError LiveLogWarningEventCode = "transient_source_error" +) + +// Valid indicates whether the value is a known member of the LiveLogWarningEventCode enum. +func (e LiveLogWarningEventCode) Valid() bool { + switch e { + case CursorReset: + return true + case DroppedEvents: + return true + case MalformedLogLine: + return true + case SourceGap: + return true + case TransientSourceError: + return true + default: + return false + } +} + +// Defines values for LogDeploymentStage. +const ( + Compile LogDeploymentStage = "compile" + Publish LogDeploymentStage = "publish" +) + +// Valid indicates whether the value is a known member of the LogDeploymentStage enum. +func (e LogDeploymentStage) Valid() bool { + switch e { + case Compile: + return true + case Publish: + return true + default: + return false + } +} + +// Defines values for LogResourceType. +const ( + LogResourceTypeFrontend LogResourceType = "frontend" + LogResourceTypeFunction LogResourceType = "function" +) + +// Valid indicates whether the value is a known member of the LogResourceType enum. +func (e LogResourceType) Valid() bool { + switch e { + case LogResourceTypeFrontend: + return true + case LogResourceTypeFunction: + return true + default: + return false + } +} + +// Defines values for LogSearchRequestResourceType. +const ( + LogSearchRequestResourceTypeFunction LogSearchRequestResourceType = "function" +) + +// Valid indicates whether the value is a known member of the LogSearchRequestResourceType enum. +func (e LogSearchRequestResourceType) Valid() bool { + switch e { + case LogSearchRequestResourceTypeFunction: + return true + default: + return false + } +} + // Defines values for OAuthConfigProvider. const ( Apple OAuthConfigProvider = "apple" @@ -762,6 +909,120 @@ func (e ProjectStatus) Valid() bool { } } +// Defines values for ProjectFrontendCustomDomainDomainStatus. +const ( + ProjectFrontendCustomDomainDomainStatusActive ProjectFrontendCustomDomainDomainStatus = "active" + ProjectFrontendCustomDomainDomainStatusDeleted ProjectFrontendCustomDomainDomainStatus = "deleted" + ProjectFrontendCustomDomainDomainStatusDetaching ProjectFrontendCustomDomainDomainStatus = "detaching" + ProjectFrontendCustomDomainDomainStatusFailed ProjectFrontendCustomDomainDomainStatus = "failed" + ProjectFrontendCustomDomainDomainStatusPendingVerification ProjectFrontendCustomDomainDomainStatus = "pending_verification" + ProjectFrontendCustomDomainDomainStatusProvisioning ProjectFrontendCustomDomainDomainStatus = "provisioning" +) + +// Valid indicates whether the value is a known member of the ProjectFrontendCustomDomainDomainStatus enum. +func (e ProjectFrontendCustomDomainDomainStatus) Valid() bool { + switch e { + case ProjectFrontendCustomDomainDomainStatusActive: + return true + case ProjectFrontendCustomDomainDomainStatusDeleted: + return true + case ProjectFrontendCustomDomainDomainStatusDetaching: + return true + case ProjectFrontendCustomDomainDomainStatusFailed: + return true + case ProjectFrontendCustomDomainDomainStatusPendingVerification: + return true + case ProjectFrontendCustomDomainDomainStatusProvisioning: + return true + default: + return false + } +} + +// Defines values for ProjectFrontendCustomDomainTlsMode. +const ( + Byoc ProjectFrontendCustomDomainTlsMode = "byoc" + Managed ProjectFrontendCustomDomainTlsMode = "managed" +) + +// Valid indicates whether the value is a known member of the ProjectFrontendCustomDomainTlsMode enum. +func (e ProjectFrontendCustomDomainTlsMode) Valid() bool { + switch e { + case Byoc: + return true + case Managed: + return true + default: + return false + } +} + +// Defines values for ProjectFrontendCustomDomainVerificationStatus. +const ( + ProjectFrontendCustomDomainVerificationStatusPending ProjectFrontendCustomDomainVerificationStatus = "pending" + ProjectFrontendCustomDomainVerificationStatusVerified ProjectFrontendCustomDomainVerificationStatus = "verified" +) + +// Valid indicates whether the value is a known member of the ProjectFrontendCustomDomainVerificationStatus enum. +func (e ProjectFrontendCustomDomainVerificationStatus) Valid() bool { + switch e { + case ProjectFrontendCustomDomainVerificationStatusPending: + return true + case ProjectFrontendCustomDomainVerificationStatusVerified: + return true + default: + return false + } +} + +// Defines values for ProjectFrontendDeploymentOperation. +const ( + ProjectFrontendDeploymentOperationDelete ProjectFrontendDeploymentOperation = "delete" + ProjectFrontendDeploymentOperationDeploy ProjectFrontendDeploymentOperation = "deploy" + ProjectFrontendDeploymentOperationRedeploy ProjectFrontendDeploymentOperation = "redeploy" +) + +// Valid indicates whether the value is a known member of the ProjectFrontendDeploymentOperation enum. +func (e ProjectFrontendDeploymentOperation) Valid() bool { + switch e { + case ProjectFrontendDeploymentOperationDelete: + return true + case ProjectFrontendDeploymentOperationDeploy: + return true + case ProjectFrontendDeploymentOperationRedeploy: + return true + default: + return false + } +} + +// Defines values for ProjectFrontendDeploymentStatus. +const ( + ProjectFrontendDeploymentStatusActive ProjectFrontendDeploymentStatus = "active" + ProjectFrontendDeploymentStatusDeleted ProjectFrontendDeploymentStatus = "deleted" + ProjectFrontendDeploymentStatusDeleting ProjectFrontendDeploymentStatus = "deleting" + ProjectFrontendDeploymentStatusFailed ProjectFrontendDeploymentStatus = "failed" + ProjectFrontendDeploymentStatusProvisioning ProjectFrontendDeploymentStatus = "provisioning" +) + +// Valid indicates whether the value is a known member of the ProjectFrontendDeploymentStatus enum. +func (e ProjectFrontendDeploymentStatus) Valid() bool { + switch e { + case ProjectFrontendDeploymentStatusActive: + return true + case ProjectFrontendDeploymentStatusDeleted: + return true + case ProjectFrontendDeploymentStatusDeleting: + return true + case ProjectFrontendDeploymentStatusFailed: + return true + case ProjectFrontendDeploymentStatusProvisioning: + return true + default: + return false + } +} + // Defines values for ScheduleRequestKind. const ( ScheduleRequestKindCron ScheduleRequestKind = "cron" @@ -848,25 +1109,25 @@ func (e UpdateDatabaseTypeRequestDatabaseType) Valid() bool { // Defines values for UploadSessionStatusResponseStatus. const ( - UploadSessionStatusResponseStatusAborted UploadSessionStatusResponseStatus = "aborted" - UploadSessionStatusResponseStatusCompleted UploadSessionStatusResponseStatus = "completed" - UploadSessionStatusResponseStatusCompleting UploadSessionStatusResponseStatus = "completing" - UploadSessionStatusResponseStatusPending UploadSessionStatusResponseStatus = "pending" - UploadSessionStatusResponseStatusUploading UploadSessionStatusResponseStatus = "uploading" + Aborted UploadSessionStatusResponseStatus = "aborted" + Completed UploadSessionStatusResponseStatus = "completed" + Completing UploadSessionStatusResponseStatus = "completing" + Pending UploadSessionStatusResponseStatus = "pending" + Uploading UploadSessionStatusResponseStatus = "uploading" ) // Valid indicates whether the value is a known member of the UploadSessionStatusResponseStatus enum. func (e UploadSessionStatusResponseStatus) Valid() bool { switch e { - case UploadSessionStatusResponseStatusAborted: + case Aborted: return true - case UploadSessionStatusResponseStatusCompleted: + case Completed: return true - case UploadSessionStatusResponseStatusCompleting: + case Completing: return true - case UploadSessionStatusResponseStatusPending: + case Pending: return true - case UploadSessionStatusResponseStatusUploading: + case Uploading: return true default: return false @@ -899,6 +1160,9 @@ type AnonKey struct { CreatedAt *time.Time `json:"created_at,omitempty"` Id openapi_types.UUID `json:"id"` + // IsDefault Whether this is the project's configured default anon key. Only one key per project can be default. + IsDefault *bool `json:"is_default,omitempty"` + // KeyValue JWT token - use this in frontend Authorization header KeyValue string `json:"key_value"` Name string `json:"name"` @@ -990,10 +1254,12 @@ type AuthConfig struct { RequireSpecialChars *bool `json:"require_special_chars,omitempty"` RequireUppercase *bool `json:"require_uppercase,omitempty"` SmtpHost *string `json:"smtp_host,omitempty"` - SmtpPassword *string `json:"smtp_password,omitempty"` - SmtpPort *int `json:"smtp_port,omitempty"` - SmtpUseTls *bool `json:"smtp_use_tls,omitempty"` - SmtpUsername *string `json:"smtp_username,omitempty"` + + // SmtpPassword SMTP password. Stored encrypted at rest (AES-256-GCM); returned decrypted only to the authenticated project owner. + SmtpPassword *string `json:"smtp_password,omitempty"` + SmtpPort *int `json:"smtp_port,omitempty"` + SmtpUseTls *bool `json:"smtp_use_tls,omitempty"` + SmtpUsername *string `json:"smtp_username,omitempty"` } // AuthHostedPage defines model for AuthHostedPage. @@ -1491,21 +1757,28 @@ type FrontendCustomDomainTLSConfigMode string // FrontendDeployment defines model for FrontendDeployment. type FrontendDeployment struct { - ArtifactBucket *string `json:"artifact_bucket,omitempty"` - ArtifactKey *string `json:"artifact_key,omitempty"` - ArtifactVersion *string `json:"artifact_version,omitempty"` - CloudformationStackId *string `json:"cloudformation_stack_id,omitempty"` - CloudformationStackUrl *string `json:"cloudformation_stack_url,omitempty"` - CloudwatchLogGroup *string `json:"cloudwatch_log_group,omitempty"` - CreatedAt time.Time `json:"created_at"` - ErrorMessage *string `json:"error_message,omitempty"` - FrontendId openapi_types.UUID `json:"frontend_id"` - Id openapi_types.UUID `json:"id"` - Operation FrontendDeploymentOperation `json:"operation"` - ProjectId openapi_types.UUID `json:"project_id"` - SiteUrl *string `json:"site_url,omitempty"` - Status FrontendDeploymentStatus `json:"status"` - UpdatedAt time.Time `json:"updated_at"` + ArtifactBucket *string `json:"artifact_bucket,omitempty"` + ArtifactKey *string `json:"artifact_key,omitempty"` + ArtifactVersion *string `json:"artifact_version,omitempty"` + CloudformationStackId *string `json:"cloudformation_stack_id,omitempty"` + CloudformationStackUrl *string `json:"cloudformation_stack_url,omitempty"` + CloudwatchLogGroup *string `json:"cloudwatch_log_group,omitempty"` + + // CodebuildBuildCount Number of completed CodeBuild builds included in codebuild_duration_seconds. + CodebuildBuildCount *int `json:"codebuild_build_count,omitempty"` + CodebuildDurationRecordedAt *time.Time `json:"codebuild_duration_recorded_at,omitempty"` + + // CodebuildDurationSeconds Total CodeBuild build duration recorded for this deployment, in seconds. + CodebuildDurationSeconds *int64 `json:"codebuild_duration_seconds,omitempty"` + CreatedAt time.Time `json:"created_at"` + ErrorMessage *string `json:"error_message,omitempty"` + FrontendId openapi_types.UUID `json:"frontend_id"` + Id openapi_types.UUID `json:"id"` + Operation FrontendDeploymentOperation `json:"operation"` + ProjectId openapi_types.UUID `json:"project_id"` + SiteUrl *string `json:"site_url,omitempty"` + Status FrontendDeploymentStatus `json:"status"` + UpdatedAt time.Time `json:"updated_at"` } // FrontendDeploymentOperation defines model for FrontendDeployment.Operation. @@ -1531,6 +1804,21 @@ type FrontendDomainVerificationRecord struct { Value string `json:"value"` } +// FrontendUsageDailyEntry One day of request and error counts for a single frontend. +type FrontendUsageDailyEntry struct { + // Day UTC date (YYYY-MM-DD) the counts cover. + Day openapi_types.Date `json:"day"` + + // Errors 5xx responses served on this day. + Errors int64 `json:"errors"` + + // PageViews Navigable-document responses served on this day (text/html or Sec-Fetch-Dest=document) — strict subset of `requests`. + PageViews int64 `json:"page_views"` + + // Requests Total requests served on this day. + Requests int64 `json:"requests"` +} + // FrontendUsageData Monthly frontend request totals grouped by frontend. type FrontendUsageData struct { // FrontendId Frontend ID @@ -1543,6 +1831,18 @@ type FrontendUsageData struct { Requests int64 `json:"requests"` } +// FrontendUsageHistoryResponse Zero-filled daily series of request + error counts for a single frontend, oldest first. +type FrontendUsageHistoryResponse struct { + Daily []FrontendUsageDailyEntry `json:"daily"` + + // Days Number of daily entries returned (always equal to the `days` query param after clamping). + Days int `json:"days"` + FrontendId openapi_types.UUID `json:"frontend_id"` + TotalErrors int64 `json:"total_errors"` + TotalPageViews int64 `json:"total_page_views"` + TotalRequests int64 `json:"total_requests"` +} + // Function defines model for Function. type Function struct { AwsFunctionArn *string `json:"aws_function_arn,omitempty"` @@ -1581,23 +1881,30 @@ type FunctionStatus string // FunctionDeployment defines model for FunctionDeployment. type FunctionDeployment struct { - ArtifactBucket *string `json:"artifact_bucket,omitempty"` - ArtifactKey *string `json:"artifact_key,omitempty"` - ArtifactVersion *string `json:"artifact_version,omitempty"` - BatchId *openapi_types.UUID `json:"batch_id,omitempty"` - CompileLogGroup *string `json:"compile_log_group,omitempty"` - CompileLogStream *string `json:"compile_log_stream,omitempty"` - CompletedAt *time.Time `json:"completed_at,omitempty"` - CreatedAt time.Time `json:"created_at"` - ErrorMessage *string `json:"error_message,omitempty"` - FunctionId openapi_types.UUID `json:"function_id"` - Id openapi_types.UUID `json:"id"` - Operation FunctionDeploymentOperation `json:"operation"` - ProjectId openapi_types.UUID `json:"project_id"` - PublishLogGroup *string `json:"publish_log_group,omitempty"` - PublishLogStream *string `json:"publish_log_stream,omitempty"` - Status FunctionDeploymentStatus `json:"status"` - UpdatedAt time.Time `json:"updated_at"` + ArtifactBucket *string `json:"artifact_bucket,omitempty"` + ArtifactKey *string `json:"artifact_key,omitempty"` + ArtifactVersion *string `json:"artifact_version,omitempty"` + BatchId *openapi_types.UUID `json:"batch_id,omitempty"` + + // CodebuildBuildCount Number of completed CodeBuild builds included in codebuild_duration_seconds. + CodebuildBuildCount *int `json:"codebuild_build_count,omitempty"` + CodebuildDurationRecordedAt *time.Time `json:"codebuild_duration_recorded_at,omitempty"` + + // CodebuildDurationSeconds Total CodeBuild build duration recorded for this deployment, in seconds. + CodebuildDurationSeconds *int64 `json:"codebuild_duration_seconds,omitempty"` + CompileLogGroup *string `json:"compile_log_group,omitempty"` + CompileLogStream *string `json:"compile_log_stream,omitempty"` + CompletedAt *time.Time `json:"completed_at,omitempty"` + CreatedAt time.Time `json:"created_at"` + ErrorMessage *string `json:"error_message,omitempty"` + FunctionId openapi_types.UUID `json:"function_id"` + Id openapi_types.UUID `json:"id"` + Operation FunctionDeploymentOperation `json:"operation"` + ProjectId openapi_types.UUID `json:"project_id"` + PublishLogGroup *string `json:"publish_log_group,omitempty"` + PublishLogStream *string `json:"publish_log_stream,omitempty"` + Status FunctionDeploymentStatus `json:"status"` + UpdatedAt time.Time `json:"updated_at"` } // FunctionDeploymentOperation defines model for FunctionDeployment.Operation. @@ -1628,6 +1935,18 @@ type FunctionInvocationRequest struct { // FunctionInvocationResponse Raw function response body returned by the invoked function. type FunctionInvocationResponse map[string]interface{} +// FunctionRegion defines model for FunctionRegion. +type FunctionRegion struct { + // Code AWS region identifier accepted by function APIs. + Code string `json:"code"` + + // Flag Country flag emoji associated with the region's geography. + Flag string `json:"flag"` + + // Label Human-readable region label suitable for display in pickers. + Label string `json:"label"` +} + // FunctionRuntimeDeployment defines model for FunctionRuntimeDeployment. type FunctionRuntimeDeployment struct { // DependencyManifests Dependency manifest files the CLI should include for hosted builds. @@ -1693,27 +2012,6 @@ type FunctionSchedulerListResponse struct { Total int `json:"total"` } -// GetLogsResponse defines model for GetLogsResponse. -type GetLogsResponse struct { - // Data Array of log events sorted by timestamp (newest first) - Data []LogEvent `json:"data"` - - // HasMore Whether there are more log events available - HasMore bool `json:"has_more"` - - // Limit Number of items requested per page - Limit int `json:"limit"` - - // Next URL path to next page with all current filters (only present if has_more is true) - Next *string `json:"next,omitempty"` - - // Partial True when one or more regions could not be queried successfully - Partial *bool `json:"partial,omitempty"` - - // RegionErrors Per-region query errors when `partial=true` - RegionErrors *map[string]string `json:"region_errors,omitempty"` -} - // HostedAuthPageType defines model for HostedAuthPageType. type HostedAuthPageType string @@ -1739,18 +2037,293 @@ type HostedLoginOptionsResponse struct { // HostedRenderablePageType defines model for HostedRenderablePageType. type HostedRenderablePageType string -// LogEvent defines model for LogEvent. +// ListLogsResponse Paginated logs response using opaque cursor pagination. +type ListLogsResponse struct { + // Data Array of log events sorted by timestamp, newest first. + Data []LogEvent `json:"data"` + + // HasMore Whether there are more log events available. + HasMore bool `json:"has_more"` + + // Limit Number of items requested per page. + Limit int `json:"limit"` + + // NextCursor Opaque cursor for the next page. Send this value as `cursor` on the next request. + NextCursor *string `json:"next_cursor,omitempty"` +} + +// LiveLogBackfillCompleteEvent SSE payload emitted as `event: backfill_complete` after initial bounded history. +type LiveLogBackfillCompleteEvent struct { + // BackfillCount Number of historical log events emitted before this control event. + BackfillCount int `json:"backfill_count"` +} + +// LiveLogEvent Structured function runtime log event emitted as SSE `event: log`. +type LiveLogEvent struct { + // FunctionId Function ID that emitted the log. + FunctionId openapi_types.UUID `json:"function_id"` + + // FunctionName Function name at stream time. + FunctionName string `json:"function_name"` + + // Id Opaque stable log event id. Also used as the SSE event id for resume and deduplication. + Id string `json:"id"` + + // Level Normalized function runtime log level. + Level LiveLogLevel `json:"level"` + + // Message Display message. For parsed JSON logs, this should prefer the parsed `message` field when available. + Message string `json:"message"` + + // Metadata Parsed JSON object fields when `raw_message` is JSON; otherwise null. + Metadata *map[string]interface{} `json:"metadata,omitempty"` + + // RawMessage Original log line/message after platform sanitization. + RawMessage string `json:"raw_message"` + + // Region Region where this log event originated. + Region *string `json:"region,omitempty"` + + // Source Runtime environment source that produced the function log event. + Source LiveLogSource `json:"source"` + + // Timestamp Unix timestamp in milliseconds. + Timestamp int64 `json:"timestamp"` +} + +// LiveLogHeartbeatEvent SSE payload emitted as `event: heartbeat` every 15 seconds while idle. +type LiveLogHeartbeatEvent struct { + // Timestamp Unix timestamp in milliseconds when the heartbeat was emitted. + Timestamp int64 `json:"timestamp"` +} + +// LiveLogLevel Normalized function runtime log level. +type LiveLogLevel string + +// LiveLogSource Runtime environment source that produced the function log event. +type LiveLogSource string + +// LiveLogWarningEvent SSE payload emitted as `event: warning` for recoverable live log stream issues. +type LiveLogWarningEvent struct { + // Code Stable warning code clients can branch on. + Code LiveLogWarningEventCode `json:"code"` + + // LastEventId Resume cursor from the request when the warning is cursor-related. + LastEventId *string `json:"last_event_id,omitempty"` + + // Message Human-readable warning message. + Message string `json:"message"` + + // Metadata Source-specific diagnostic details safe to expose to the project owner. + Metadata *map[string]interface{} `json:"metadata,omitempty"` + + // Region Region affected by the warning, when region-specific. + Region *string `json:"region,omitempty"` +} + +// LiveLogWarningEventCode Stable warning code clients can branch on. +type LiveLogWarningEventCode string + +// LogActivityBucket Log-event counts for one activity time bucket. +type LogActivityBucket struct { + // Counts Counts grouped by activity dimension. + Counts struct { + // Levels Counts by normalized log level. + Levels map[string]int `json:"levels"` + + // Regions Counts by event region. + Regions map[string]int `json:"regions"` + + // ResourceIds Counts by resource ID. + ResourceIds map[string]int `json:"resource_ids"` + } `json:"counts"` + + // EndTime Bucket end time in milliseconds since epoch. + EndTime int64 `json:"end_time"` + + // StartTime Bucket start time in milliseconds since epoch. + StartTime int64 `json:"start_time"` + + // Total Total events in this bucket. + Total int `json:"total"` +} + +// LogActivityResponse Bucketed runtime log activity. +type LogActivityResponse struct { + Data []LogActivityBucket `json:"data"` + + // Total Total events counted across all buckets. + Total int `json:"total"` +} + +// LogActivityRequest Activity request for bucketed runtime log counts. +type LogActivityRequest struct { + // BucketCount Number of activity buckets to return. + BucketCount *int `json:"bucket_count,omitempty"` + + // EndTime End time in milliseconds since epoch. + EndTime *int64 `json:"end_time,omitempty"` + + // Levels Normalized log levels to filter by. If omitted, empty, or all levels are selected, no level filter is applied. + Levels *[]LiveLogLevel `json:"levels,omitempty"` + + // Regions Regions to filter by, for example `["us-east-1", "eu-west-1"]`. If omitted or empty, aggregate all deployed regions. + Regions *[]string `json:"regions,omitempty"` + + // ResourceIds Optional resource identifiers within the selected resource type. For `function`, these are function IDs. Omit or send an empty array to aggregate all functions. + ResourceIds *[]string `json:"resource_ids,omitempty"` + + // ResourceType Resource type to read activity for. Currently only `function` is supported. + ResourceType LogActivityRequestResourceType `json:"resource_type"` + + // StartTime Start time in milliseconds since epoch. + StartTime *int64 `json:"start_time,omitempty"` +} + +// LogActivityRequestResourceType Resource type to read activity for. Currently only `function` is supported. +type LogActivityRequestResourceType string + +// LogDeployment Deployment context associated with a historical deployment log event. +type LogDeployment struct { + // Id Deployment ID associated with the log event. + Id openapi_types.UUID `json:"id"` + + // Stage Deployment stage that produced the log event, when available. + Stage *LogDeploymentStage `json:"stage,omitempty"` +} + +// LogDeploymentStage Deployment stage that produced the log event, when available. +type LogDeploymentStage string + +// LogEvent Normalized historical log event returned by paginated log APIs. type LogEvent struct { - // Message Log message content + // Deployment Deployment context associated with a historical deployment log event. + Deployment *LogDeployment `json:"deployment,omitempty"` + + // Id Opaque stable log event ID for pagination, deduplication, and display. + Id *string `json:"id,omitempty"` + + // InvocationId Function invocation ID associated with this log event, when available. + InvocationId *string `json:"invocation_id,omitempty"` + + // Level Normalized function runtime log level. + Level *LiveLogLevel `json:"level,omitempty"` + + // Message Display log message. + Message string `json:"message"` + + // Metadata Parsed JSON fields and other indexed metadata, when available. + Metadata *map[string]interface{} `json:"metadata,omitempty"` + + // RawMessage Original log line/message after platform sanitization. + RawMessage *string `json:"raw_message,omitempty"` + + // Region Region where this log event originated. + Region *string `json:"region,omitempty"` + + // Resource Resource that owns a historical log event. + Resource *LogResource `json:"resource,omitempty"` + + // Timestamp Unix timestamp in milliseconds. + Timestamp int64 `json:"timestamp"` +} + +// LogResource Resource that owns a historical log event. +type LogResource struct { + // Id Function or frontend ID that owns the log event. + Id openapi_types.UUID `json:"id"` + + // Name Resource name associated with the log event, when available. + Name *string `json:"name,omitempty"` + + // Type Resource type that owns the log event. + Type LogResourceType `json:"type"` +} + +// LogResourceType Resource type that owns the log event. +type LogResourceType string + +// LogSearchEvent defines model for LogSearchEvent. +type LogSearchEvent struct { + // Deployment Deployment context associated with a historical deployment log event. + Deployment *LogDeployment `json:"deployment,omitempty"` + + // Id Opaque stable log event ID for pagination, deduplication, and display. + Id string `json:"id"` + + // InvocationId Function invocation ID associated with this log event, when available. + InvocationId *string `json:"invocation_id,omitempty"` + + // Level Normalized function runtime log level. + Level *LiveLogLevel `json:"level,omitempty"` + + // Message Display log message. Message string `json:"message"` - // Region Region where this log event originated (multi-region logs) + // Metadata Parsed JSON fields and other indexed metadata, when available. + Metadata *map[string]interface{} `json:"metadata,omitempty"` + + // RawMessage Original log line/message after platform sanitization. + RawMessage *string `json:"raw_message,omitempty"` + + // Region Region where this log event originated. Region *string `json:"region,omitempty"` - // Timestamp Unix timestamp in milliseconds + // Resource Resource that owns a historical log event. + Resource LogResource `json:"resource"` + + // Timestamp Unix timestamp in milliseconds. Timestamp int64 `json:"timestamp"` } +// LogSearchRequest Search request for runtime logs. +type LogSearchRequest struct { + // Cursor Opaque pagination cursor from the previous response's `next_cursor`. + Cursor *string `json:"cursor,omitempty"` + + // EndTime End time in milliseconds since epoch. + EndTime *int64 `json:"end_time,omitempty"` + + // Levels Normalized log levels to filter by. If omitted, empty, or all levels are selected, no level filter is applied. + Levels *[]LiveLogLevel `json:"levels,omitempty"` + + // Limit Maximum number of records to return. + Limit *int `json:"limit,omitempty"` + + // Q Optional free-text search query for log messages. When omitted or blank, stored logs are returned using structured filters only. + Q *string `json:"q,omitempty"` + + // Regions Regions to filter by, for example `["us-east-1", "eu-west-1"]`. If omitted or empty, search all deployed regions. + Regions *[]string `json:"regions,omitempty"` + + // ResourceIds Optional resource identifiers within the selected resource type. For `function`, these are function IDs. Omit or send an empty array to search all functions. + ResourceIds *[]string `json:"resource_ids,omitempty"` + + // ResourceType Resource type to search. Currently only `function` is supported. + ResourceType LogSearchRequestResourceType `json:"resource_type"` + + // StartTime Start time in milliseconds since epoch. + StartTime *int64 `json:"start_time,omitempty"` +} + +// LogSearchRequestResourceType Resource type to search. Currently only `function` is supported. +type LogSearchRequestResourceType string + +// LogSearchResponse Paginated project runtime log search response. +type LogSearchResponse struct { + // Data Array of log events sorted by timestamp, newest first. + Data []LogSearchEvent `json:"data"` + + // HasMore Whether there are more log events available. + HasMore bool `json:"has_more"` + + // Limit Number of items requested per page. + Limit int `json:"limit"` + + // NextCursor Opaque cursor for the next page. Send this value as `cursor` on the next request. + NextCursor *string `json:"next_cursor,omitempty"` +} + // MetricUsageData Usage data for one metric across totals, daily, and hourly windows. type MetricUsageData struct { // Daily Last 30 days of daily usage points @@ -1759,7 +2332,10 @@ type MetricUsageData struct { // Hourly Last 24 hours of hourly usage points Hourly []UsageDataPoint `json:"hourly"` - // Metric Metric name (for example, "Function Invocations" or "Frontend Requests") + // Metric Metric name (for example, "Function Invocations", "Frontend Requests", + // "CodeBuild Build Seconds", "Bandwidth Ingress (Bytes)", "Bandwidth Egress (Bytes)", + // or "Bandwidth Total (Bytes)"). Bandwidth metrics are reported in bytes; + // "Bandwidth Total (Bytes)" is derived (ingress + egress) and is not billed separately. Metric string `json:"metric"` // Total Total usage for the current billing month @@ -1910,6 +2486,46 @@ type PaginatedFunctions struct { Total int `json:"total"` } +// PaginatedProjectCustomDomains defines model for PaginatedProjectCustomDomains. +type PaginatedProjectCustomDomains struct { + Data []ProjectFrontendCustomDomain `json:"data"` + + // HasMore Whether there are more pages available + HasMore bool `json:"has_more"` + + // Limit Number of items per page + Limit int `json:"limit"` + + // Next URL path to next page (only present if has_more is true) + Next *string `json:"next,omitempty"` + + // Page Current page number (1-indexed) + Page int `json:"page"` + + // Total Total number of items across all pages + Total int `json:"total"` +} + +// PaginatedProjectDeployments defines model for PaginatedProjectDeployments. +type PaginatedProjectDeployments struct { + Data []ProjectFrontendDeployment `json:"data"` + + // HasMore Whether there are more pages available + HasMore bool `json:"has_more"` + + // Limit Number of items per page + Limit int `json:"limit"` + + // Next URL path to next page (only present if has_more is true) + Next *string `json:"next,omitempty"` + + // Page Current page number (1-indexed) + Page int `json:"page"` + + // Total Total number of items across all pages + Total int `json:"total"` +} + // PaginatedProjects defines model for PaginatedProjects. type PaginatedProjects struct { // CurrentSyncId Identifier of the latest variable propagation sync. @@ -2018,6 +2634,74 @@ type ProjectPlan string // ProjectStatus defines model for Project.Status. type ProjectStatus string +// ProjectFrontendCustomDomain defines model for ProjectFrontendCustomDomain. +type ProjectFrontendCustomDomain struct { + CreatedAt time.Time `json:"created_at"` + Domain string `json:"domain"` + DomainStatus ProjectFrontendCustomDomainDomainStatus `json:"domain_status"` + EffectiveUrls []string `json:"effective_urls"` + + // Frontend The frontend this custom domain is attached to. Inlined to + // avoid a second fetch from the project-scoped feed. + Frontend struct { + Id openapi_types.UUID `json:"id"` + Name string `json:"name"` + } `json:"frontend"` + RequiredRoutingRecord *FrontendDomainRoutingRecord `json:"required_routing_record,omitempty"` + TlsMode ProjectFrontendCustomDomainTlsMode `json:"tls_mode"` + UpdatedAt time.Time `json:"updated_at"` + VerificationRecords *[]FrontendDomainVerificationRecord `json:"verification_records,omitempty"` + VerificationStatus ProjectFrontendCustomDomainVerificationStatus `json:"verification_status"` +} + +// ProjectFrontendCustomDomainDomainStatus defines model for ProjectFrontendCustomDomain.DomainStatus. +type ProjectFrontendCustomDomainDomainStatus string + +// ProjectFrontendCustomDomainTlsMode defines model for ProjectFrontendCustomDomain.TlsMode. +type ProjectFrontendCustomDomainTlsMode string + +// ProjectFrontendCustomDomainVerificationStatus defines model for ProjectFrontendCustomDomain.VerificationStatus. +type ProjectFrontendCustomDomainVerificationStatus string + +// ProjectFrontendDeployment defines model for ProjectFrontendDeployment. +type ProjectFrontendDeployment struct { + ArtifactBucket *string `json:"artifact_bucket,omitempty"` + ArtifactKey *string `json:"artifact_key,omitempty"` + ArtifactVersion *string `json:"artifact_version,omitempty"` + CloudformationStackId *string `json:"cloudformation_stack_id,omitempty"` + CloudformationStackUrl *string `json:"cloudformation_stack_url,omitempty"` + CloudwatchLogGroup *string `json:"cloudwatch_log_group,omitempty"` + + // CodebuildBuildCount Number of completed CodeBuild builds included in codebuild_duration_seconds. + CodebuildBuildCount *int `json:"codebuild_build_count,omitempty"` + CodebuildDurationRecordedAt *time.Time `json:"codebuild_duration_recorded_at,omitempty"` + + // CodebuildDurationSeconds Total CodeBuild build duration recorded for this deployment, in seconds. + CodebuildDurationSeconds *int64 `json:"codebuild_duration_seconds,omitempty"` + CreatedAt time.Time `json:"created_at"` + ErrorMessage *string `json:"error_message,omitempty"` + + // Frontend The frontend this deployment belongs to. Inlined to avoid a + // second fetch from the project-scoped feed. + Frontend struct { + Id openapi_types.UUID `json:"id"` + Name string `json:"name"` + } `json:"frontend"` + FrontendId openapi_types.UUID `json:"frontend_id"` + Id openapi_types.UUID `json:"id"` + Operation ProjectFrontendDeploymentOperation `json:"operation"` + ProjectId openapi_types.UUID `json:"project_id"` + SiteUrl *string `json:"site_url,omitempty"` + Status ProjectFrontendDeploymentStatus `json:"status"` + UpdatedAt time.Time `json:"updated_at"` +} + +// ProjectFrontendDeploymentOperation defines model for ProjectFrontendDeployment.Operation. +type ProjectFrontendDeploymentOperation string + +// ProjectFrontendDeploymentStatus defines model for ProjectFrontendDeployment.Status. +type ProjectFrontendDeploymentStatus string + // ProjectUsageResponse Aggregated usage metrics for a project. type ProjectUsageResponse struct { // Frontends Per-frontend request totals for the current billing month @@ -2288,6 +2972,36 @@ type StorageVisibilityRequest struct { IsPublic bool `json:"is_public"` } +// TestEmailRequest When `html_body` or `text_body` is provided the backend renders +// those (plus optional `subject`) through html/text templates +// against the standard `EmailData` (ProjectName, Name, SiteURL) +// and sends the result — used by the template-editor "Send Test" +// affordance to preview an unsaved template. When both bodies are +// omitted a hardcoded diagnostic message is sent to verify SMTP +// credentials and `subject` is ignored. Sending `subject` alone +// (without a body) is rejected with 400. +type TestEmailRequest struct { + // HtmlBody Optional HTML body override. Rendered as an html/template. Max 256 KiB. + HtmlBody *string `json:"html_body,omitempty"` + + // Subject Optional subject override, rendered as a text/template. Only + // applied on the override path — requires `html_body` or + // `text_body` to also be set, otherwise the request is + // rejected with 400. + Subject *string `json:"subject,omitempty"` + + // TextBody Optional plain-text body override. Rendered as a text/template. Max 256 KiB. + TextBody *string `json:"text_body,omitempty"` + + // ToEmail Recipient address for the diagnostic email. + ToEmail openapi_types.Email `json:"to_email"` +} + +// TestEmailResponse defines model for TestEmailResponse. +type TestEmailResponse struct { + Success bool `json:"success"` +} + // UnbanUserResponse Response when unbanning a user type UnbanUserResponse struct { Email openapi_types.Email `json:"email"` @@ -2352,10 +3066,12 @@ type UpdateAuthConfigRequest struct { RequireSpecialChars *bool `json:"require_special_chars,omitempty"` RequireUppercase *bool `json:"require_uppercase,omitempty"` SmtpHost *string `json:"smtp_host,omitempty"` - SmtpPassword *string `json:"smtp_password,omitempty"` - SmtpPort *int `json:"smtp_port,omitempty"` - SmtpUseTls *bool `json:"smtp_use_tls,omitempty"` - SmtpUsername *string `json:"smtp_username,omitempty"` + + // SmtpPassword SMTP password (sensitive). Encrypted at rest (AES-256-GCM) when stored. + SmtpPassword *string `json:"smtp_password,omitempty"` + SmtpPort *int `json:"smtp_port,omitempty"` + SmtpUseTls *bool `json:"smtp_use_tls,omitempty"` + SmtpUsername *string `json:"smtp_username,omitempty"` } // UpdateAuthHostedPageRequest defines model for UpdateAuthHostedPageRequest. diff --git a/internal/cmd/frontends/logs.go b/internal/cmd/frontends/logs.go index c66ff83..978a416 100644 --- a/internal/cmd/frontends/logs.go +++ b/internal/cmd/frontends/logs.go @@ -78,8 +78,8 @@ func runLogs(ctx context.Context, opts frontendLogsOptions) error { if logsType == frontendLogsTypeRuntime { fmt.Fprintf(opts.out, "Fetching runtime logs for frontend %s\n\n", frontend.Name) - return output.PrintLogs(opts.out, func(nextToken string) (*apiclient.GetLogsResponse, error) { - return service.RuntimeLogs(ctx, frontend.Id, opts.limit, nextToken) + return output.PrintLogs(opts.out, func(cursor string) (*apiclient.ListLogsResponse, error) { + return service.RuntimeLogs(ctx, frontend.Id, opts.limit, cursor) }) } @@ -110,8 +110,8 @@ func runLogs(ctx context.Context, opts frontendLogsOptions) error { } fmt.Fprintf(opts.out, "Fetching build logs for frontend %s deployment %s\n\n", frontend.Name, deploymentID.String()) - return output.PrintLogs(opts.out, func(nextToken string) (*apiclient.GetLogsResponse, error) { - return service.DeploymentLogs(ctx, frontend.Id, *deploymentID, opts.limit, nextToken) + return output.PrintLogs(opts.out, func(cursor string) (*apiclient.ListLogsResponse, error) { + return service.DeploymentLogs(ctx, frontend.Id, *deploymentID, opts.limit, cursor) }) } diff --git a/internal/cmd/frontends/logs_test.go b/internal/cmd/frontends/logs_test.go index 6a1de3c..4063102 100644 --- a/internal/cmd/frontends/logs_test.go +++ b/internal/cmd/frontends/logs_test.go @@ -3,7 +3,6 @@ package frontends import ( "net/http" "net/http/httptest" - "strings" "testing" "github.com/stretchr/testify/assert" @@ -31,11 +30,11 @@ func TestFrontendsLogs(t *testing.T) { }) case r.Method == http.MethodGet && r.URL.Path == "/projects/"+frontendProjectID+"/frontends/"+frontendID+"/logs": logQueries = append(logQueries, r.URL.RawQuery) - if r.URL.Query().Get("next_token") == "" { - writeFrontendCommandJSON(t, w, http.StatusOK, frontendLogCommandResponse("first runtime", true, "/projects/"+frontendProjectID+"/frontends/"+frontendID+"/logs?limit=2&next_token=next%20token")) + if r.URL.Query().Get("cursor") == "" { + writeFrontendCommandJSON(t, w, http.StatusOK, frontendLogCommandResponse("first runtime", true, "next token")) return } - assert.Equal(t, "next token", r.URL.Query().Get("next_token")) + assert.Equal(t, "next token", r.URL.Query().Get("cursor")) writeFrontendCommandJSON(t, w, http.StatusOK, frontendLogCommandResponse("second runtime", false, "")) default: http.NotFound(w, r) @@ -45,50 +44,12 @@ func TestFrontendsLogs(t *testing.T) { out, err := executeFrontendsCommand(t, New(cliruntime.Deps{HTTPClient: server.Client(), APIBaseURL: server.URL}), "logs", "web", "--type", "runtime", "--limit", "2") require.NoError(t, err) - assert.Equal(t, []string{"limit=2", "limit=2&next_token=next+token"}, logQueries) + assert.Equal(t, []string{"limit=2", "limit=2&cursor=next+token"}, logQueries) assert.Contains(t, out, "Fetching runtime logs for frontend web") assert.Contains(t, out, "first runtime") assert.Contains(t, out, "second runtime") }) - t.Run("runtime warns when response is partial", func(t *testing.T) { - setFrontendCommandTestHome(t) - saveFrontendCommandTestConfig(t) - server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - switch { - case r.Method == http.MethodGet && r.URL.Path == "/projects/"+frontendProjectID+"/frontends": - writeFrontendCommandJSON(t, w, http.StatusOK, map[string]any{ - "data": []any{frontendCommandPayload(frontendID, "web")}, - "has_more": false, - "page": 1, - "limit": 100, - "total": 1, - }) - case r.Method == http.MethodGet && r.URL.Path == "/projects/"+frontendProjectID+"/frontends/"+frontendID+"/logs": - response := frontendLogCommandResponse("partial runtime", false, "") - response["partial"] = true - response["region_errors"] = map[string]string{ - "aws-us-west-2": "query timed out", - "aws-us-east-1": "access denied", - } - writeFrontendCommandJSON(t, w, http.StatusOK, response) - default: - http.NotFound(w, r) - } - })) - defer server.Close() - - out, err := executeFrontendsCommand(t, New(cliruntime.Deps{HTTPClient: server.Client(), APIBaseURL: server.URL}), "logs", "web", "--type", "runtime") - require.NoError(t, err) - assert.Contains(t, out, "partial runtime") - assert.Contains(t, out, "Warning: log response is partial; some regions could not be queried:") - eastIndex := strings.Index(out, " aws-us-east-1: access denied") - westIndex := strings.Index(out, " aws-us-west-2: query timed out") - require.NotEqual(t, -1, eastIndex) - require.NotEqual(t, -1, westIndex) - assert.Less(t, eastIndex, westIndex) - }) - t.Run("build defaults current deployment", func(t *testing.T) { setFrontendCommandTestHome(t) saveFrontendCommandTestConfig(t) @@ -186,7 +147,7 @@ func frontendLogCommandResponse(message string, hasMore bool, next string) map[s "total": 1, } if next != "" { - response["next"] = next + response["next_cursor"] = next } return response } diff --git a/internal/cmd/functions/logs.go b/internal/cmd/functions/logs.go index a4ff389..85d4312 100644 --- a/internal/cmd/functions/logs.go +++ b/internal/cmd/functions/logs.go @@ -78,8 +78,8 @@ func runLogs(ctx context.Context, opts logsOptions) error { if logsType == logsTypeRuntime { fmt.Fprintf(opts.out, "Fetching runtime logs for function %s\n\n", function.Name) - return output.PrintLogs(opts.out, func(nextToken string) (*apiclient.GetLogsResponse, error) { - return service.RuntimeLogs(ctx, function.Id, opts.limit, nextToken) + return output.PrintSearchLogs(opts.out, func(cursor string) (*apiclient.LogSearchResponse, error) { + return service.RuntimeLogs(ctx, function.Id, opts.limit, cursor) }) } @@ -101,8 +101,8 @@ func runLogs(ctx context.Context, opts logsOptions) error { } fmt.Fprintf(opts.out, "Fetching build logs for function %s deployment %s\n\n", function.Name, deploymentID.String()) - return output.PrintLogs(opts.out, func(nextToken string) (*apiclient.GetLogsResponse, error) { - return service.DeploymentLogs(ctx, function.Id, *deploymentID, opts.limit, nextToken) + return output.PrintLogs(opts.out, func(cursor string) (*apiclient.ListLogsResponse, error) { + return service.DeploymentLogs(ctx, function.Id, *deploymentID, opts.limit, cursor) }) } diff --git a/internal/cmd/functions/logs_test.go b/internal/cmd/functions/logs_test.go index 72d4253..ed74803 100644 --- a/internal/cmd/functions/logs_test.go +++ b/internal/cmd/functions/logs_test.go @@ -1,9 +1,9 @@ package functions import ( + "encoding/json" "net/http" "net/http/httptest" - "strings" "testing" "github.com/stretchr/testify/assert" @@ -21,7 +21,7 @@ func TestFunctionsLogs(t *testing.T) { t.Run("runtime pages with next token", func(t *testing.T) { setFunctionCommandTestHome(t) saveFunctionCommandTestConfig(t) - var logQueries []string + var logBodies []map[string]any server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { switch { case r.Method == http.MethodGet && r.URL.Path == "/projects/"+functionProjectID+"/functions": @@ -32,13 +32,15 @@ func TestFunctionsLogs(t *testing.T) { "limit": 100, "total": 1, }) - case r.Method == http.MethodGet && r.URL.Path == "/projects/"+functionProjectID+"/functions/"+functionID+"/logs": - logQueries = append(logQueries, r.URL.RawQuery) - if r.URL.Query().Get("next_token") == "" { - writeFunctionCommandJSON(t, w, http.StatusOK, logCommandResponse("first runtime", true, "/projects/"+functionProjectID+"/functions/"+functionID+"/logs?limit=2&next_token=next%20token")) + case r.Method == http.MethodPost && r.URL.Path == "/projects/"+functionProjectID+"/logs/search": + var body map[string]any + require.NoError(t, json.NewDecoder(r.Body).Decode(&body)) + logBodies = append(logBodies, body) + if body["cursor"] == nil { + writeFunctionCommandJSON(t, w, http.StatusOK, logCommandResponse("first runtime", true, "next token")) return } - assert.Equal(t, "next token", r.URL.Query().Get("next_token")) + assert.Equal(t, "next token", body["cursor"]) writeFunctionCommandJSON(t, w, http.StatusOK, logCommandResponse("second runtime", false, "")) default: http.NotFound(w, r) @@ -48,50 +50,17 @@ func TestFunctionsLogs(t *testing.T) { out, err := executeFunctionsCommand(t, New(cliruntime.Deps{HTTPClient: server.Client(), APIBaseURL: server.URL}), "logs", "hello", "--type", "runtime", "--limit", "2") require.NoError(t, err) - assert.Equal(t, []string{"limit=2", "limit=2&next_token=next+token"}, logQueries) + require.Len(t, logBodies, 2) + assert.Equal(t, "function", logBodies[0]["resource_type"]) + assert.Equal(t, []any{functionID}, logBodies[0]["resource_ids"]) + assert.InEpsilon(t, 2, logBodies[0]["limit"], 0) + assert.NotContains(t, logBodies[0], "cursor") + assert.Equal(t, "next token", logBodies[1]["cursor"]) assert.Contains(t, out, "Fetching runtime logs for function hello") assert.Contains(t, out, "first runtime") assert.Contains(t, out, "second runtime") }) - t.Run("runtime warns when response is partial", func(t *testing.T) { - setFunctionCommandTestHome(t) - saveFunctionCommandTestConfig(t) - server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - switch { - case r.Method == http.MethodGet && r.URL.Path == "/projects/"+functionProjectID+"/functions": - writeFunctionCommandJSON(t, w, http.StatusOK, map[string]any{ - "data": []any{functionCommandPayload(functionID, "hello")}, - "has_more": false, - "page": 1, - "limit": 100, - "total": 1, - }) - case r.Method == http.MethodGet && r.URL.Path == "/projects/"+functionProjectID+"/functions/"+functionID+"/logs": - response := logCommandResponse("partial runtime", false, "") - response["partial"] = true - response["region_errors"] = map[string]string{ - "aws-us-west-2": "query timed out", - "aws-us-east-1": "access denied", - } - writeFunctionCommandJSON(t, w, http.StatusOK, response) - default: - http.NotFound(w, r) - } - })) - defer server.Close() - - out, err := executeFunctionsCommand(t, New(cliruntime.Deps{HTTPClient: server.Client(), APIBaseURL: server.URL}), "logs", "hello", "--type", "runtime") - require.NoError(t, err) - assert.Contains(t, out, "partial runtime") - assert.Contains(t, out, "Warning: log response is partial; some regions could not be queried:") - eastIndex := strings.Index(out, " aws-us-east-1: access denied") - westIndex := strings.Index(out, " aws-us-west-2: query timed out") - require.NotEqual(t, -1, eastIndex) - require.NotEqual(t, -1, westIndex) - assert.Less(t, eastIndex, westIndex) - }) - t.Run("build defaults latest deployment", func(t *testing.T) { setFunctionCommandTestHome(t) saveFunctionCommandTestConfig(t) @@ -199,7 +168,7 @@ func logCommandResponse(message string, hasMore bool, next string) map[string]an "total": 1, } if next != "" { - response["next"] = next + response["next_cursor"] = next } return response } diff --git a/internal/frontend/frontend.go b/internal/frontend/frontend.go index fd09c19..3413da8 100644 --- a/internal/frontend/frontend.go +++ b/internal/frontend/frontend.go @@ -184,13 +184,13 @@ func (s Service) LatestDeployment(ctx context.Context, frontendID uuid.UUID) (*a } // RuntimeLogs returns one runtime log page for a frontend. -func (s Service) RuntimeLogs(ctx context.Context, frontendID uuid.UUID, limit int, nextToken string) (*apiclient.GetLogsResponse, error) { +func (s Service) RuntimeLogs(ctx context.Context, frontendID uuid.UUID, limit int, cursor string) (*apiclient.ListLogsResponse, error) { authenticated, err := s.sessions.CurrentProject() if err != nil { return nil, err } - logs, err := authenticated.API.GetFrontendLogs(ctx, authenticated.ProjectID, frontendID, limit, nextToken) + logs, err := authenticated.API.GetFrontendLogs(ctx, authenticated.ProjectID, frontendID, limit, cursor) if err != nil { return nil, fmt.Errorf("failed to fetch runtime logs: %w", err) } @@ -198,13 +198,13 @@ func (s Service) RuntimeLogs(ctx context.Context, frontendID uuid.UUID, limit in } // DeploymentLogs returns one build log page for a frontend deployment. -func (s Service) DeploymentLogs(ctx context.Context, frontendID, deploymentID uuid.UUID, limit int, nextToken string) (*apiclient.GetLogsResponse, error) { +func (s Service) DeploymentLogs(ctx context.Context, frontendID, deploymentID uuid.UUID, limit int, cursor string) (*apiclient.ListLogsResponse, error) { authenticated, err := s.sessions.CurrentProject() if err != nil { return nil, err } - logs, err := authenticated.API.GetFrontendDeploymentLogs(ctx, authenticated.ProjectID, frontendID, deploymentID, limit, nextToken) + logs, err := authenticated.API.GetFrontendDeploymentLogs(ctx, authenticated.ProjectID, frontendID, deploymentID, limit, cursor) if err != nil { return nil, fmt.Errorf("failed to fetch deployment logs: %w", err) } diff --git a/internal/function/function.go b/internal/function/function.go index 1215686..5b6e51b 100644 --- a/internal/function/function.go +++ b/internal/function/function.go @@ -430,14 +430,14 @@ func (s Service) ResolveDeployment(ctx context.Context, functionID uuid.UUID, de } } -// RuntimeLogs returns one runtime log page for a function. -func (s Service) RuntimeLogs(ctx context.Context, functionID uuid.UUID, limit int, nextToken string) (*apiclient.GetLogsResponse, error) { +// RuntimeLogs returns one runtime log search page for a function. +func (s Service) RuntimeLogs(ctx context.Context, functionID uuid.UUID, limit int, cursor string) (*apiclient.LogSearchResponse, error) { authenticated, err := s.sessions.CurrentProject() if err != nil { return nil, err } - logs, err := authenticated.API.GetFunctionLogs(ctx, authenticated.ProjectID, functionID, limit, nextToken) + logs, err := authenticated.API.GetFunctionLogs(ctx, authenticated.ProjectID, functionID, limit, cursor) if err != nil { return nil, fmt.Errorf("failed to fetch runtime logs: %w", err) } @@ -445,13 +445,13 @@ func (s Service) RuntimeLogs(ctx context.Context, functionID uuid.UUID, limit in } // DeploymentLogs returns one build log page for a function deployment. -func (s Service) DeploymentLogs(ctx context.Context, functionID, deploymentID uuid.UUID, limit int, nextToken string) (*apiclient.GetLogsResponse, error) { +func (s Service) DeploymentLogs(ctx context.Context, functionID, deploymentID uuid.UUID, limit int, cursor string) (*apiclient.ListLogsResponse, error) { authenticated, err := s.sessions.CurrentProject() if err != nil { return nil, err } - logs, err := authenticated.API.GetFunctionDeploymentLogs(ctx, authenticated.ProjectID, functionID, deploymentID, limit, nextToken) + logs, err := authenticated.API.GetFunctionDeploymentLogs(ctx, authenticated.ProjectID, functionID, deploymentID, limit, cursor) if err != nil { return nil, fmt.Errorf("failed to fetch deployment logs: %w", err) } diff --git a/internal/localmode/assets/docker-compose.template.yml b/internal/localmode/assets/docker-compose.template.yml index d105c28..d7f7a11 100644 --- a/internal/localmode/assets/docker-compose.template.yml +++ b/internal/localmode/assets/docker-compose.template.yml @@ -1,4 +1,4 @@ -# Generated by scripts/generate-volcano-cli-localmode-assets from cmd/volcano/commands/docker-compose.template.yml. Do not edit by hand. +# Generated by scripts/generate-volcano-cli-localmode-assets from infrastructure/local-mode/docker-compose.template.yml. Do not edit by hand. # Regenerate this file from the source local-mode Compose template. services: @@ -36,6 +36,32 @@ services: timeout: 5s retries: 5 + dynamodb: + image: ${VOLCANO_DYNAMODB_IMAGE:-amazon/dynamodb-local:latest} + container_name: volcano-dynamodb + user: root + command: ["-jar", "DynamoDBLocal.jar", "-sharedDb", "-dbPath", "/home/dynamodblocal/data"] + working_dir: /home/dynamodblocal + ports: + - "8003:8000" + volumes: + - volcano-dynamodb:/home/dynamodblocal/data + networks: + - volcano-internal + + # Local SMTP catch-all for testing auth emails. The seeded default project's + # auth_config points its smtp_host at "mailpit" so signup confirmations, + # password reset emails, etc. land in Mailpit's inbox at http://localhost:8025 + # instead of being discarded. + mailpit: + image: ${VOLCANO_MAILPIT_IMAGE:-axllent/mailpit:v1.30} + container_name: volcano-mailpit + ports: + - "1025:1025" # SMTP + - "8025:8025" # Web UI — view captured emails here + networks: + - volcano-internal + server: image: ${VOLCANO_IMAGE:-kong/volcano:local-nightly} container_name: volcano-server @@ -44,11 +70,18 @@ services: condition: service_healthy redis: condition: service_healthy + dynamodb: + condition: service_started environment: # Core settings LOCAL_MODE: "true" DATABASE_URL: postgres://volcano:volcano@postgres:5432/volcano?sslmode=disable REDIS_URL: redis://redis:6379 + DYNAMODB_ENDPOINT: http://dynamodb:8000 + LOG_EVENTS_HOT_PATH_TABLE_NAME: volcano-local-log-events + AWS_REGION: us-east-1 + AWS_ACCESS_KEY_ID: local + AWS_SECRET_ACCESS_KEY: local REDIS_TIMEOUT: "60" USAGE_SYNC_INTERVAL: "30" USAGE_SYNC_LOCK_TTL: "30" @@ -135,4 +168,5 @@ networks: volumes: volcano-db: volcano-redis: + volcano-dynamodb: volcano-storage: diff --git a/internal/output/functions.go b/internal/output/functions.go index ea745c4..eb0c55a 100644 --- a/internal/output/functions.go +++ b/internal/output/functions.go @@ -3,7 +3,6 @@ package output import ( "fmt" "io" - "sort" "strings" "time" @@ -98,49 +97,24 @@ func FunctionRuntimes(w io.Writer, runtimes []apiclient.FunctionRuntimeOption) { // LogEvents renders function log events. func LogEvents(w io.Writer, events []apiclient.LogEvent) { for _, event := range events { - message := strings.TrimSpace(event.Message) - if region := stringPtrValue(event.Region); region != "" { - fmt.Fprintf(w, "%s [%s] %s\n", time.UnixMilli(event.Timestamp).Format(time.RFC3339), region, message) - continue - } - fmt.Fprintf(w, "%s %s\n", time.UnixMilli(event.Timestamp).Format(time.RFC3339), message) + printLogEvent(w, event.Timestamp, event.Region, event.Message) } } -// LogPartialWarning renders a warning when log results are incomplete. -func LogPartialWarning(w io.Writer, resp *apiclient.GetLogsResponse) { - if resp == nil { - return - } - - partial := resp.Partial != nil && *resp.Partial - regionErrors := map[string]string{} - if resp.RegionErrors != nil { - regionErrors = *resp.RegionErrors - } - if !partial && len(regionErrors) == 0 { - return +// LogSearchEvents renders function log search events. +func LogSearchEvents(w io.Writer, events []apiclient.LogSearchEvent) { + for _, event := range events { + printLogEvent(w, event.Timestamp, event.Region, event.Message) } +} - if len(regionErrors) == 0 { - fmt.Fprintln(w, "Warning: log response is partial; some regions could not be queried.") +func printLogEvent(w io.Writer, timestamp int64, region *string, message string) { + message = strings.TrimSpace(message) + if region := stringPtrValue(region); region != "" { + fmt.Fprintf(w, "%s [%s] %s\n", time.UnixMilli(timestamp).Format(time.RFC3339), region, message) return } - - regions := make([]string, 0, len(regionErrors)) - for region := range regionErrors { - regions = append(regions, region) - } - sort.Strings(regions) - - fmt.Fprintln(w, "Warning: log response is partial; some regions could not be queried:") - for _, region := range regions { - message := strings.TrimSpace(regionErrors[region]) - if message == "" { - message = "unknown error" - } - fmt.Fprintf(w, " %s: %s\n", region, message) - } + fmt.Fprintf(w, "%s %s\n", time.UnixMilli(timestamp).Format(time.RFC3339), message) } func functionStatus(fn apiclient.Function) string { diff --git a/internal/output/logs.go b/internal/output/logs.go index f5c7b85..61f3814 100644 --- a/internal/output/logs.go +++ b/internal/output/logs.go @@ -2,20 +2,23 @@ package output import ( "io" - "net/url" + "strings" "github.com/Kong/volcano-cli/internal/apiclient" ) -// LogsFetcher fetches one page of log events. An empty nextToken requests the first page. -type LogsFetcher func(nextToken string) (*apiclient.GetLogsResponse, error) +// LogsFetcher fetches one page of log events. An empty cursor requests the first page. +type LogsFetcher func(cursor string) (*apiclient.ListLogsResponse, error) + +// SearchLogsFetcher fetches one page of searched log events. An empty cursor requests the first page. +type SearchLogsFetcher func(cursor string) (*apiclient.LogSearchResponse, error) // PrintLogs renders paginated log events from fetch until the response signals -// no more pages or the next-token cursor cannot be advanced. +// no more pages or the cursor cannot be advanced. func PrintLogs(w io.Writer, fetch LogsFetcher) error { - nextToken := "" + cursor := "" for { - resp, err := fetch(nextToken) + resp, err := fetch(cursor) if err != nil { return err } @@ -23,23 +26,35 @@ func PrintLogs(w io.Writer, fetch LogsFetcher) error { return nil } LogEvents(w, resp.Data) - LogPartialWarning(w, resp) - if !resp.HasMore || resp.Next == nil { + if !resp.HasMore || resp.NextCursor == nil { return nil } - nextToken = extractNextToken(*resp.Next) - if nextToken == "" { + cursor = strings.TrimSpace(*resp.NextCursor) + if cursor == "" { return nil } } } -func extractNextToken(nextURL string) string { - // url.Parse accepts any well-formed cursor URL the server emits, so the - // previous manual next_token= scan was unreachable in practice. - parsed, err := url.Parse(nextURL) - if err != nil { - return "" +// PrintSearchLogs renders paginated searched log events from fetch until the +// response signals no more pages or the cursor cannot be advanced. +func PrintSearchLogs(w io.Writer, fetch SearchLogsFetcher) error { + cursor := "" + for { + resp, err := fetch(cursor) + if err != nil { + return err + } + if resp == nil { + return nil + } + LogSearchEvents(w, resp.Data) + if !resp.HasMore || resp.NextCursor == nil { + return nil + } + cursor = strings.TrimSpace(*resp.NextCursor) + if cursor == "" { + return nil + } } - return parsed.Query().Get("next_token") }